{
  "version": 3,
  "sources": ["/cdn/shop/t/10/assets/fotlum-native-tt-cart-attribution.js?shop=c5m6py-vf.myshopify.com"],
  "sourcesContent": ["\uFEFF/**\n * tt-cart-attribution.js v3.0\n * \u7531 Shopify \u4E3B\u9898 App Embed \u6216 ScriptTag API \u6CE8\u5165\u5230\u5E97\u94FA\u9875\u9762\u3002\n * \u6838\u5FC3\u539F\u7406\uFF1A\u5C06\u5F52\u56E0\u53C2\u6570\u5199\u5165 cart attributes\uFF0CShopify \u81EA\u52A8\u5C06 cart attributes \u590D\u5236\u5230 order.note_attributes\u3002\n *\n *  Buy it now \u89E3\u51B3\u65B9\u6848\uFF08v3.0 \u2014\u2014 \u5F7B\u5E95\u91CD\u6784\uFF09\uFF1A\n *   \u539F\u751F Shopify Buy it now\uFF08accelerated checkout\uFF09\u521B\u5EFA\u72EC\u7ACB cart\uFF0C\n *   \u5BFC\u81F4 session cart \u7684 attributes \u65E0\u6CD5\u4F20\u9012\u5230\u8BA2\u5355\u3002\n *\n *   v3.0 \u65B9\u6848\uFF1A\u7EDF\u4E00\u8BC6\u522B Buy it now \u6309\u94AE\uFF0C\u8D70 cart permalink\uFF1A\n *     1. \u539F\u6309\u94AE\u4FDD\u6301\u53EF\u89C1\uFF0C\u7528\u6237\u770B\u5230\u7684\u4ECD\u662F\u4E3B\u9898\u539F\u59CB\u6309\u94AE\n *     2. \u539F\u751F Shopify payment button \u7528\u900F\u660E\u8986\u76D6\u5C42\uFF0C\u4E3B\u9898\u6309\u94AE\u7528 capture \u70B9\u51FB\u62E6\u622A\n *     3. \u4FDD\u5B58\u5F53\u524D\u8D2D\u7269\u8F66\u5230 sessionStorage\uFF08\u653E\u5F03\u7ED3\u8D26\u540E\u81EA\u52A8\u6062\u590D\uFF09\n *     4. \u4F7F\u7528 Cart Permalink /cart/{id}:{qty}?attributes[...]=...\n *        \u2192 \u53EA\u5BF9\u5F53\u524D\u5546\u54C1\u521B\u5EFA\u7ED3\u8D26\uFF0C\u4E0D\u6E05\u7A7A\u539F\u8D2D\u7269\u8F66\n *     5. _tt_* \u5F52\u56E0\u53C2\u6570\u901A\u8FC7 URL query \u76F4\u63A5\u9644\u52A0\u5230 cart permalink\n *     6. Shopify \u81EA\u52A8\u5C06 cart attributes \u2192 order.note_attributes\n *\n *   \u5176\u4ED6\u9632\u7EBF\u4FDD\u7559\uFF1A\n *   - \u9875\u9762\u52A0\u8F7D\u7ACB\u5373\u5199\u5165 cart attributes\n *   - fetch/XHR \u62E6\u622A /cart/add.js\uFF08\u666E\u901A Add to Cart \u6D41\u7A0B\uFF09\n *   - location.href/assign/replace \u62E6\u622A\u8DF3 checkout\n *   - \u8868\u5355\u63D0\u4EA4\u62E6\u622A\n *   - pagehide sendBeacon \u515C\u5E95\n */\n(function () {\n  'use strict';\n\n  var SCRIPT_RUNTIME_KEY = '__omniAttributionScriptInitialized';\n  if (window[SCRIPT_RUNTIME_KEY]) return;\n  window[SCRIPT_RUNTIME_KEY] = true;\n\n  var LS_PREFIX = '_tt_';\n  var PARAM_KEYS_STORAGE = '_tt_url_param_keys';\n  var memoryStorage = Object.create(null);\n  var volatileStorageKeys = Object.create(null);\n  var storageFailureReported = false;\n  var lastCapturedLocation = '';\n  var metaPixelConsentSubscribed = false;\n  var metaPixelInitializationStarted = false;\n  var resolveMetaPixelReady = null;\n  var metaPixelReadyPromise = new Promise(function (resolve) { resolveMetaPixelReady = resolve; });\n  var activeMetaPixelId = '';\n  var metaPixelLoadId = Date.now() + '_' + Math.floor(Math.random() * 1000000);\n  var tiktokPixelConsentSubscribed = false;\n  var tiktokPixelInitializationStarted = false;\n  var tiktokPageTracked = false;\n  var FACEBOOK_CHECKOUT_INTENT_STORAGE_KEY = 'omni_facebook_checkout_intent';\n  var FACEBOOK_VISITOR_STORAGE_KEY = 'omni_facebook_visitor_id';\n  var BUY_NOW_CHECKOUT_SOURCE_ATTRIBUTE = '_tt_checkout_source';\n  var BUY_NOW_CHECKOUT_AT_ATTRIBUTE = '_tt_checkout_intent_at';\n  var THEME_ATTRIBUTE_KEYS = ['theme_id', 'theme_name'];\n  var THEME_CAPTURE_RETRY_DELAYS_MILLISECONDS = [\n    100, 250, 500, 1000, 2000, 3000, 3000, 3000, 3000,\n  ];\n  var activeCheckoutIntent = null;\n  var activeCheckoutIntentPromise = null;\n  var activeCartWritePromise = null;\n  var lastReportedCartSignature = '';\n  var CART_WRITE_TIMEOUT_MILLISECONDS = 1500;\n  var CHECKOUT_PREPARATION_TIMEOUT_MILLISECONDS = 2500;\n  var CART_WRITE_MAXIMUM_ATTEMPTS = 3;\n  var KEYS = [\n    'ttclid',\n    'fbclid',\n    'fbc',\n    'fbc_source',\n    'fbc_is_fallback',\n    'biz_account_id',\n    'account_id',\n    'pixel_id',\n    'biz_landing_id',\n    'fb_account_id',\n    'fb_campaign_id',\n    'campaign_id',\n    'fb_adset_id',\n    'adset_id',\n    'ad_set_id',\n    'fb_ad_id',\n    'ad_id',\n    'fb_campaign_name',\n    'fb_adset_name',\n    'fb_ad_name',\n    'source',\n    'visit_id',\n    'utm_source',\n    'utm_campaign',\n    'utm_medium',\n    'utm_content',\n    'utm_id',\n    'utm_term',\n    'tt_campaignid',\n  ];\n\n  /** @param {DOMException} error @param {string} operation */\n  function handleStorageFailure(error, operation) {\n    if (['SecurityError', 'QuotaExceededError', 'NS_ERROR_DOM_QUOTA_REACHED'].indexOf(error.name) === -1) {\n      throw error;\n    }\n    if (storageFailureReported) return;\n    storageFailureReported = true;\n    reportMetaPixelPhase(scriptConfiguration(), 'attribution_storage_unavailable', {\n      failureReason: operation + ':' + error.name,\n    }, 'ERROR');\n  }\n\n  /** @param {string} key @returns {string | null} */\n  function readStoredValue(key) {\n    if (!volatileStorageKeys[key]) {\n      try {\n        var value = window.localStorage.getItem(key);\n        memoryStorage[key] = value;\n        return value;\n      } catch (error) {\n        handleStorageFailure(error, 'read');\n      }\n    }\n    return Object.prototype.hasOwnProperty.call(memoryStorage, key) ? memoryStorage[key] : null;\n  }\n\n  /** @param {string} key @param {string} value */\n  function writeStoredValue(key, value) {\n    memoryStorage[key] = String(value);\n    try {\n      window.localStorage.setItem(key, String(value));\n      delete volatileStorageKeys[key];\n    } catch (error) {\n      volatileStorageKeys[key] = true;\n      handleStorageFailure(error, 'write');\n    }\n  }\n\n  /** @param {string} key */\n  function removeStoredValue(key) {\n    memoryStorage[key] = null;\n    try {\n      window.localStorage.removeItem(key);\n      delete volatileStorageKeys[key];\n    } catch (error) {\n      volatileStorageKeys[key] = true;\n      handleStorageFailure(error, 'remove');\n    }\n  }\n\n  function readUrlParamKeys() {\n    try {\n      var raw = readStoredValue(PARAM_KEYS_STORAGE);\n      var parsed = raw ? JSON.parse(raw) : [];\n      return Array.isArray(parsed) ? parsed.filter(function (k) { return typeof k === 'string' && k; }) : [];\n    } catch (e) {\n      if (!(e instanceof SyntaxError)) throw e;\n      return [];\n    }\n  }\n\n  function saveUrlParamKeys(keys) {\n    var unique = [];\n    keys.forEach(function (k) {\n      if (k && unique.indexOf(k) === -1) unique.push(k);\n    });\n    writeStoredValue(PARAM_KEYS_STORAGE, JSON.stringify(unique));\n  }\n\n  function allAttribKeys() {\n    var keys = KEYS.concat(\n      THEME_ATTRIBUTE_KEYS,\n      readUrlParamKeys(),\n      ['landing_url', 'last_url', 'captured_at', 'source', 'visit_id']\n    );\n    var unique = [];\n    keys.forEach(function (k) {\n      if (k && unique.indexOf(k) === -1) unique.push(k);\n    });\n    return unique;\n  }\n\n  function captureStorefrontTheme(attempt) {\n    var theme = window.Shopify && window.Shopify.theme;\n    var themeId = theme && String(theme.id == null ? '' : theme.id).trim();\n    var themeName = theme && String(theme.name == null ? '' : theme.name).trim();\n    if (!themeId || !themeName) {\n      if (attempt < THEME_CAPTURE_RETRY_DELAYS_MILLISECONDS.length) {\n        setTimeout(function () {\n          captureStorefrontTheme(attempt + 1);\n        }, THEME_CAPTURE_RETRY_DELAYS_MILLISECONDS[attempt]);\n        return;\n      }\n      writeStoredValue(LS_PREFIX + 'theme_id', '');\n      writeStoredValue(LS_PREFIX + 'theme_name', '');\n      storefrontThemeContext = { themeId: '', themeName: '' };\n      reportMetaPixelPhase(scriptConfiguration(), 'theme_context_missing', {\n        failureReason: !themeId && !themeName\n          ? 'theme_id_and_name_missing'\n          : !themeId ? 'theme_id_missing' : 'theme_name_missing',\n      }, 'ERROR');\n      return;\n    }\n    if (!/^[1-9]\\d*$/.test(themeId) || themeId.length > 255) {\n      throw new Error('Invalid Shopify storefront theme id');\n    }\n    if (themeName.length > 255 || themeName.indexOf('\\0') !== -1) {\n      throw new Error('Invalid Shopify storefront theme name');\n    }\n    writeStoredValue(LS_PREFIX + 'theme_id', themeId);\n    writeStoredValue(LS_PREFIX + 'theme_name', themeName);\n    storefrontThemeContext = { themeId: themeId, themeName: themeName };\n  }\n\n  function hasPaidClickInCurrentUrl() {\n    var params = resolveCapturedUrlAttribution().params;\n    return !!(params.get('fbclid') || params.get('ttclid'));\n  }\n\n  function resolveCurrentAttributionLocation() {\n    try {\n      var url = new URL(window.location.href);\n      if (!url.search && window.location.search) url.search = window.location.search;\n      return { href: url.href, params: url.searchParams };\n    } catch (error) {\n      if (error.name !== 'TypeError') throw error;\n      return { href: '', params: new URLSearchParams(window.location.search || '') };\n    }\n  }\n\n  function hasCapturedClick(params) {\n    return !!(params.get('fbclid') || params.get('ttclid'));\n  }\n\n  function matchesCapturedClick(params, selected) {\n    return hasCapturedClick(params) && ['fbclid', 'ttclid'].every(function (key) {\n      return !params.get(key) || params.get(key) === selected.get(key);\n    });\n  }\n\n  function resolveCapturedUrlAttribution() {\n    var location = resolveCurrentAttributionLocation();\n    var direct = new URLSearchParams();\n    var carried = new URLSearchParams();\n    location.params.forEach(function (value, key) {\n      var attribute = key.match(/^attributes\\[(?:_tt_)?([^\\]]+)\\]$/);\n      if (attribute) {\n        var name = attribute[1];\n        carried.set(name, location.params.get('attributes[_tt_' + name + ']')\n          || location.params.get('attributes[' + name + ']') || '');\n      } else if (key.indexOf('attributes[') !== 0 && !direct.has(key)) {\n        direct.set(key, value);\n      }\n    });\n    var sources = [{ kind: 'direct', params: direct }, { kind: 'carried', params: carried }];\n    ['landing_url', 'last_url'].forEach(function (key) {\n      var href = carried.get(key);\n      if (!href) return;\n      try {\n        sources.push({ kind: key, href: href, params: new URL(href).searchParams });\n      } catch (error) {\n        if (error.name !== 'TypeError') throw error;\n      }\n    });\n    var selected = sources.find(function (source) { return hasCapturedClick(source.params); });\n    var eligible = sources.filter(function (source) {\n      return source.kind === 'direct'\n        || (source.kind === 'carried' && !hasCapturedClick(source.params))\n        || (selected && matchesCapturedClick(source.params, selected.params));\n    });\n    var params = new URLSearchParams();\n    eligible.forEach(function (source) {\n      var normalized = new URLSearchParams(source.params);\n      [['fb_campaign_id', 'campaign_id'], ['fb_adset_id', 'adset_id', 'ad_set_id'], ['fb_ad_id', 'ad_id']]\n        .forEach(function (keys) {\n          var key = keys.find(function (candidate) { return source.params.get(candidate); });\n          if (key) normalized.set(keys[0], source.params.get(key));\n        });\n      normalized.forEach(function (value, key) {\n        if (value && key.indexOf('attributes[') !== 0 && !params.get(key)) params.set(key, value);\n      });\n    });\n    var landing = eligible.find(function (source) { return source.kind === 'landing_url'; });\n    var last = eligible.find(function (source) { return source.kind === 'last_url'; });\n    return {\n      params: params,\n      href: location.href,\n      landingUrl: landing ? landing.href : selected && selected.kind === 'last_url' ? selected.href : location.href,\n      lastUrl: last ? last.href : location.href,\n      directPaidClick: hasCapturedClick(direct),\n    };\n  }\n\n  function cleanPixelId(value) {\n    var raw = String(value || '').trim();\n    if (!raw) return '';\n    var match = raw.match(/^(\\d+)/);\n    return match ? match[1] : raw;\n  }\n\n  function extractJoinedAccountId(value) {\n    var raw = String(value || '');\n    if (!raw) return '';\n    var decoded = raw;\n    try { decoded = decodeURIComponent(raw); } catch (_) {}\n    var match = decoded.match(/account_id\\s*=\\s*([^&\\s]+)/);\n    return match ? match[1] : '';\n  }\n\n  function normalizeCapturedAttributionParams(params) {\n    var pixelId = params.get('pixel_id') || '';\n    var accountId = params.get('account_id') || '';\n    if (!accountId) accountId = extractJoinedAccountId(pixelId);\n\n    return {\n      pixel_id: cleanPixelId(pixelId),\n      account_id: accountId,\n    };\n  }\n\n  function getCookieValue(name) {\n    try {\n      var prefix = name + '=';\n      var cookies = document.cookie ? document.cookie.split('; ') : [];\n      for (var i = 0; i < cookies.length; i++) {\n        if (cookies[i].indexOf(prefix) !== 0) continue;\n        try { return decodeURIComponent(cookies[i].slice(prefix.length)); } catch (_) { return cookies[i].slice(prefix.length); }\n      }\n    } catch (_) {}\n    return '';\n  }\n\n  function parseFacebookClickCookie(value) {\n    var parts = String(value || '').split('.');\n    var fbclid = parts.slice(3).join('.');\n    var timestamp = Number(parts[2]);\n    if (parts.length < 4 || parts[0] !== 'fb' || !/^\\d+$/.test(parts[1]) || !fbclid || !Number.isSafeInteger(timestamp) || timestamp <= 9999999999) return null;\n    return { value: value, fbclid: fbclid };\n  }\n\n  function currentFacebookClickId() {\n    try {\n      return resolveCapturedUrlAttribution().params.get('fbclid')\n        || readStoredValue(LS_PREFIX + 'fbclid')\n        || '';\n    } catch (_) {\n      return '';\n    }\n  }\n\n  function buildManualFacebookClickCookie(fbclidValue, capturedAtValue) {\n    try {\n      var fbclid = fbclidValue || currentFacebookClickId();\n      var capturedAt = capturedAtValue || readStoredValue(LS_PREFIX + 'captured_at') || '';\n      var capturedAtMilliseconds = Date.parse(capturedAt);\n      if (!fbclid || !Number.isSafeInteger(capturedAtMilliseconds) || capturedAtMilliseconds <= 0) return '';\n      return 'fb.1.' + capturedAtMilliseconds + '.' + fbclid;\n    } catch (_) {\n      return '';\n    }\n  }\n\n  function syncFacebookClickCookie(pixelId, expectedFbclid, logMismatch) {\n    var fbc = getCookieValue('_fbc');\n    var parsedFbc = parseFacebookClickCookie(fbc);\n    if (!parsedFbc) return '';\n    if (expectedFbclid && parsedFbc.fbclid !== expectedFbclid) {\n      if (logMismatch) {\n        console.warn(\n          '[TT] Meta _fbc Cookie \u7684 Click ID \u4E0E\u5F53\u524D URL \u4E0D\u4E00\u81F4\uFF0C\u7B49\u5F85 Meta \u66F4\u65B0:'\n          + ' pixel_id=' + pixelId + ', url_fbclid=' + expectedFbclid + ', cookie_fbc=' + fbc\n        );\n      }\n      return '';\n    }\n    try {\n      writeStoredValue(LS_PREFIX + 'fbc', fbc);\n      writeStoredValue(LS_PREFIX + 'fbc_source', 'cookie');\n      writeStoredValue(LS_PREFIX + 'fbc_is_fallback', '0');\n    } catch (_) {}\n    if (pixelId) {\n      console.log('[TT] Meta fbq init/PageView \u540E\u8BFB\u53D6\u5230 _fbc Cookie: pixel_id=' + pixelId + ', fbc=' + fbc);\n    }\n    return fbc;\n  }\n\n  function scriptConfiguration() {\n    try {\n      var script = document.currentScript;\n      if (!script || !script.src) {\n        script = document.querySelector('script[src*=\"tt-cart-attribution.js\"]');\n      }\n      if (!script || !script.src) return null;\n      var url = new URL(script.src);\n      var shop = url.searchParams.get('shop') || '';\n      // This template-scoped compatibility copy keeps the original analytics destination.\n      return shop ? { origin: 'https://ad.yinyuan.pro', shop: shop } : null;\n    } catch (_) {\n      return null;\n    }\n  }\n\n  function canLoadMetaPixel() {\n    try {\n      var privacy = window.Shopify && window.Shopify.customerPrivacy;\n      if (!privacy) return true;\n      var marketingAllowed = typeof privacy.marketingAllowed === 'function'\n        ? privacy.marketingAllowed()\n        : true;\n      var userCanBeTracked = typeof privacy.userCanBeTracked === 'function'\n        ? privacy.userCanBeTracked()\n        : true;\n      return marketingAllowed === true && userCanBeTracked === true;\n    } catch (_) {\n      return false;\n    }\n  }\n\n  function reportMetaPixelPhase(config, phase, details, level) {\n    var fetchMethod = window._ttOrigFetch || window.fetch;\n    if (!config || typeof fetchMethod !== 'function') return;\n    var payload = Object.assign({\n      shop: config.shop,\n      phase: phase,\n      level: level || 'INFO',\n      loadId: metaPixelLoadId,\n      pageUrl: window.location.href,\n      hasFbclid: currentFacebookClickId() ? '1' : '0',\n    }, details || {});\n    fetchMethod.call(window, config.origin + '/api/meta-pixel-client-log', {\n      method: 'POST',\n      headers: { 'Content-Type': 'text/plain;charset=UTF-8' },\n      body: JSON.stringify(payload),\n      keepalive: true,\n    }).catch(function () {});\n  }\n\n  function selectedMetaPixelId(pixelIds) {\n    var requested = '';\n    try { requested = resolveCapturedUrlAttribution().params.get('pixel_id') || ''; } catch (_) {}\n    if (!requested) {\n      try { requested = readStoredValue(LS_PREFIX + 'pixel_id') || ''; } catch (_) {}\n    }\n    requested = cleanPixelId(requested);\n    return requested && pixelIds.indexOf(requested) !== -1 ? requested : '';\n  }\n\n  function resolveMetaPixelContext(config, pixelId) {\n    activeMetaPixelId = pixelId;\n    if (resolveMetaPixelReady) {\n      resolveMetaPixelReady({ config: config, pixelId: pixelId });\n      resolveMetaPixelReady = null;\n    }\n  }\n\n  function isMetaPixelInitialized(pixelId) {\n    try {\n      if (window.fbq && typeof window.fbq.getState === 'function') {\n        var state = window.fbq.getState();\n        var pixels = state && Array.isArray(state.pixels) ? state.pixels : [];\n        if (pixels.some(function (pixel) { return String(pixel.id || '') === pixelId; })) return true;\n      }\n      var queue = window.fbq && Array.isArray(window.fbq.queue) ? window.fbq.queue : [];\n      return queue.some(function (command) {\n        return command && command[0] === 'init' && String(command[1] || '') === pixelId;\n      });\n    } catch (_) {\n      return false;\n    }\n  }\n\n  function initializeAndTrackMetaPixel(pixelId, config, startedAt) {\n    var phaseStartedAt = Date.now();\n    var alreadyInitialized = isMetaPixelInitialized(pixelId);\n    if (!alreadyInitialized) {\n      window.fbq('init', pixelId);\n      window.fbq('trackSingle', pixelId, 'PageView');\n    }\n    console.log(\n      '[TT] Meta PageView ' + (alreadyInitialized ? '\u5DF2\u7531\u73B0\u6709 Pixel \u63A5\u7BA1' : '\u5DF2\u53D1\u9001') + ': pixel_id=' + pixelId\n      + ', already_initialized=' + (alreadyInitialized ? '1' : '0')\n    );\n    reportMetaPixelPhase(config, 'pixel_initialized', {\n      pixelId: pixelId,\n      elapsedMilliseconds: Date.now() - startedAt,\n      phaseDurationMilliseconds: Date.now() - phaseStartedAt,\n      alreadyInitialized: alreadyInitialized ? '1' : '0',\n    });\n  }\n\n  function ensureMetaPixelSdk(config, startedAt) {\n    if (window.fbq && typeof window.fbq.callMethod === 'function') {\n      reportMetaPixelPhase(config, 'sdk_load_completed', {\n        elapsedMilliseconds: Date.now() - startedAt,\n        phaseDurationMilliseconds: 0,\n        sdkSource: 'existing',\n      });\n      return Promise.resolve();\n    }\n    if (window.__omniMetaPixelSdkPromise) return window.__omniMetaPixelSdkPromise;\n\n    var phaseStartedAt = Date.now();\n    reportMetaPixelPhase(config, 'sdk_load_started', {\n      elapsedMilliseconds: phaseStartedAt - startedAt,\n      sdkSource: 'official_cdn',\n    });\n    if (!window.fbq) {\n      var fbq = window.fbq = function () {\n        fbq.callMethod ? fbq.callMethod.apply(fbq, arguments) : fbq.queue.push(arguments);\n      };\n      fbq.push = fbq;\n      fbq.loaded = true;\n      fbq.version = '2.0';\n      fbq.queue = [];\n    }\n\n    window.__omniMetaPixelSdkPromise = new Promise(function (resolve, reject) {\n      var script = document.querySelector('script[src=\"https://connect.facebook.net/en_US/fbevents.js\"]');\n      var sdkSource = script ? 'existing_script' : 'official_cdn';\n      if (!script) {\n        script = document.createElement('script');\n        script.async = true;\n        script.src = 'https://connect.facebook.net/en_US/fbevents.js';\n      }\n      script.addEventListener('load', function () {\n        console.log('[TT] Meta fbevents.js \u52A0\u8F7D\u6210\u529F');\n        reportMetaPixelPhase(config, 'sdk_load_completed', {\n          elapsedMilliseconds: Date.now() - startedAt,\n          phaseDurationMilliseconds: Date.now() - phaseStartedAt,\n          sdkSource: sdkSource,\n        });\n        resolve();\n      }, { once: true });\n      script.addEventListener('error', function () {\n        console.warn('[TT] Meta fbevents.js \u52A0\u8F7D\u5931\u8D25\uFF0C\u65E0\u6CD5\u751F\u6210 Meta Cookie');\n        reportMetaPixelPhase(config, 'sdk_load_failed', {\n          elapsedMilliseconds: Date.now() - startedAt,\n          phaseDurationMilliseconds: Date.now() - phaseStartedAt,\n          sdkSource: sdkSource,\n        }, 'ERROR');\n        reject(new Error('meta_sdk_load_failed'));\n      }, { once: true });\n      if (sdkSource === 'official_cdn') {\n        var firstScript = document.getElementsByTagName('script')[0];\n        if (firstScript && firstScript.parentNode) firstScript.parentNode.insertBefore(script, firstScript);\n        else document.head.appendChild(script);\n      }\n    });\n    return window.__omniMetaPixelSdkPromise;\n  }\n\n  function syncMetaCookiesToCart(attempt, pixelId, config, startedAt, fbcWritten) {\n    var expectedFbclid = currentFacebookClickId();\n    var fbc = syncFacebookClickCookie(pixelId, expectedFbclid, attempt === 0);\n    var fbp = getCookieValue('_fbp');\n    if (fbc && !fbcWritten) {\n      writeCartAttribsAsync('meta-fbc-cookie');\n      fbcWritten = true;\n    }\n    if (fbp && (!expectedFbclid || fbc)) {\n      reportMetaPixelPhase(config, 'cookie_read_completed', {\n        pixelId: pixelId,\n        elapsedMilliseconds: Date.now() - startedAt,\n        cookieAttempt: attempt,\n        fbcStatus: fbc ? 'success' : 'not_applicable',\n        fbpStatus: 'success',\n      });\n      return;\n    }\n    var retryDelays = [250, 750, 1500];\n    if (attempt < retryDelays.length) {\n      setTimeout(function () {\n        syncMetaCookiesToCart(attempt + 1, pixelId, config, startedAt, fbcWritten);\n      }, retryDelays[attempt]);\n      return;\n    }\n    var fallbackFbc = expectedFbclid && !fbc ? buildManualFacebookClickCookie() : '';\n    if (fallbackFbc) {\n      try {\n        writeStoredValue(LS_PREFIX + 'fbc', fallbackFbc);\n        writeStoredValue(LS_PREFIX + 'fbc_source', 'manual_fallback');\n        writeStoredValue(LS_PREFIX + 'fbc_is_fallback', '1');\n      } catch (_) {}\n      console.warn(\n        '[TT] Meta fbq init/trackSingle \u540E\u672A\u83B7\u5F97\u5339\u914D\u5F53\u524D Click ID \u7684 _fbc\uFF0C\u5DF2\u751F\u6210\u624B\u52A8 fbc \u515C\u5E95:'\n        + ' pixel_id=' + pixelId + ', fbc=' + fallbackFbc\n      );\n      writeCartAttribsAsync('manual-fbc-fallback');\n      fbc = fallbackFbc;\n    }\n    if (expectedFbclid && !fbc) {\n      console.warn('[TT] Meta fbq init/trackSingle \u540E\u4ECD\u672A\u8BFB\u53D6\u5230\u6709\u6548 _fbc Cookie: pixel_id=' + pixelId + '\uFF0C\u4E14\u65E0\u6CD5\u751F\u6210\u624B\u52A8 fbc \u515C\u5E95');\n    }\n    reportMetaPixelPhase(config, 'cookie_read_completed', {\n      pixelId: pixelId,\n      elapsedMilliseconds: Date.now() - startedAt,\n      cookieAttempt: attempt,\n      fbcStatus: fbc ? (fallbackFbc ? 'manual_fallback' : 'success') : (expectedFbclid ? 'missing' : 'not_applicable'),\n      fbpStatus: fbp ? 'success' : 'missing',\n    }, fbp || !expectedFbclid ? 'INFO' : 'WARN');\n  }\n\n  function requestMetaPixelConfig(config, startedAt) {\n    var phaseStartedAt = Date.now();\n    reportMetaPixelPhase(config, 'config_request_started', {\n      elapsedMilliseconds: phaseStartedAt - startedAt,\n    });\n    return window._ttOrigFetch.call(\n      window,\n      config.origin + '/api/meta-pixel-client-config?shop=' + encodeURIComponent(config.shop)\n    ).then(function (response) {\n      if (!response.ok) throw new Error('meta_config_http_' + response.status);\n      return response.json();\n    }).then(function (data) {\n      var pixelIds = Array.isArray(data.pixelIds) ? data.pixelIds : [];\n      reportMetaPixelPhase(config, 'config_request_completed', {\n        elapsedMilliseconds: Date.now() - startedAt,\n        phaseDurationMilliseconds: Date.now() - phaseStartedAt,\n        pixelCount: pixelIds.length,\n      });\n      return pixelIds;\n    }).catch(function (error) {\n      reportMetaPixelPhase(config, 'config_request_failed', {\n        elapsedMilliseconds: Date.now() - startedAt,\n        phaseDurationMilliseconds: Date.now() - phaseStartedAt,\n        failureReason: error instanceof Error ? error.message : String(error),\n      }, 'ERROR');\n      throw error;\n    });\n  }\n\n  function initializeMetaPixel() {\n    var config = scriptConfiguration();\n    if (!config) return;\n    if (!canLoadMetaPixel()) {\n      reportMetaPixelPhase(config, 'consent_waiting', { elapsedMilliseconds: 0 });\n      try {\n        var privacy = window.Shopify && window.Shopify.customerPrivacy;\n        if (!metaPixelConsentSubscribed && privacy && typeof privacy.subscribe === 'function') {\n          metaPixelConsentSubscribed = true;\n          privacy.subscribe('visitorConsentCollected', initializeMetaPixel);\n        }\n      } catch (_) {}\n      return;\n    }\n    if (metaPixelInitializationStarted) return;\n    metaPixelInitializationStarted = true;\n    var startedAt = Date.now();\n    reportMetaPixelPhase(config, 'initialization_started', { elapsedMilliseconds: 0 });\n    requestMetaPixelConfig(config, startedAt)\n      .then(function (pixelIds) {\n        var pixelId = selectedMetaPixelId(pixelIds);\n        if (!pixelId) {\n          resolveMetaPixelContext(config, '');\n          throw new Error('meta_pixel_id_missing');\n        }\n        return ensureMetaPixelSdk(config, startedAt).then(function () {\n          initializeAndTrackMetaPixel(pixelId, config, startedAt);\n          resolveMetaPixelContext(config, pixelId);\n          syncMetaCookiesToCart(0, pixelId, config, startedAt, false);\n        });\n      })\n      .catch(function (error) {\n        reportMetaPixelPhase(config, 'initialization_failed', {\n          elapsedMilliseconds: Date.now() - startedAt,\n          failureReason: error instanceof Error ? error.message : String(error),\n        }, 'ERROR');\n      });\n  }\n\n  function hasTikTokClickId() {\n    try {\n      return !!(\n        new URLSearchParams(window.location.search).get('ttclid')\n        || readStoredValue(LS_PREFIX + 'ttclid')\n      );\n    } catch (_) {\n      return /[?&]ttclid=/.test(window.location.search || '');\n    }\n  }\n\n  function requestTikTokPixelConfig(config) {\n    return window._ttOrigFetch.call(\n      window,\n      config.origin + '/api/tiktok-pixel-client-config?shop=' + encodeURIComponent(config.shop)\n    ).then(function (response) {\n      if (!response.ok) throw new Error('tiktok_config_http_' + response.status);\n      return response.json();\n    }).then(function (data) {\n      var pixelCode = String(data.pixelCode || '').trim();\n      if (!pixelCode) throw new Error('tiktok_pixel_code_missing');\n      return pixelCode;\n    });\n  }\n\n  function installTikTokQueue() {\n    window.TiktokAnalyticsObject = 'ttq';\n    var ttq = window.ttq = window.ttq || [];\n    if (typeof ttq.load === 'function') return ttq;\n    ttq.methods = [\n      'page', 'track', 'identify', 'instances', 'debug', 'on', 'off', 'once',\n      'ready', 'alias', 'group', 'enableCookie', 'disableCookie', 'holdConsent',\n      'revokeConsent', 'grantConsent',\n    ];\n    ttq.setAndDefer = function (target, method) {\n      target[method] = function () {\n        target.push([method].concat(Array.prototype.slice.call(arguments, 0)));\n      };\n    };\n    for (var index = 0; index < ttq.methods.length; index++) {\n      ttq.setAndDefer(ttq, ttq.methods[index]);\n    }\n    ttq._i = ttq._i || {};\n    ttq.instance = function (pixelCode) {\n      var instance = ttq._i[pixelCode] || [];\n      for (var methodIndex = 0; methodIndex < ttq.methods.length; methodIndex++) {\n        ttq.setAndDefer(instance, ttq.methods[methodIndex]);\n      }\n      return instance;\n    };\n    ttq.load = function (pixelCode, options) {\n      var sdkUrl = 'https://analytics.tiktok.com/i18n/pixel/events.js';\n      ttq._i = ttq._i || {};\n      ttq._i[pixelCode] = [];\n      ttq._i[pixelCode]._u = sdkUrl;\n      ttq._t = ttq._t || {};\n      ttq._t[pixelCode] = Number(new Date());\n      ttq._o = ttq._o || {};\n      ttq._o[pixelCode] = options || {};\n      var script = document.createElement('script');\n      script.type = 'text/javascript';\n      script.async = true;\n      script.src = sdkUrl + '?sdkid=' + encodeURIComponent(pixelCode) + '&lib=ttq';\n      var firstScript = document.getElementsByTagName('script')[0];\n      if (firstScript && firstScript.parentNode) firstScript.parentNode.insertBefore(script, firstScript);\n      else document.head.appendChild(script);\n    };\n    return ttq;\n  }\n\n  function initializeTikTokPixel() {\n    if (!hasTikTokClickId()) return;\n    var config = scriptConfiguration();\n    if (!config) return;\n    if (!canLoadMetaPixel()) {\n      try {\n        var privacy = window.Shopify && window.Shopify.customerPrivacy;\n        if (!tiktokPixelConsentSubscribed && privacy && typeof privacy.subscribe === 'function') {\n          tiktokPixelConsentSubscribed = true;\n          privacy.subscribe('visitorConsentCollected', initializeTikTokPixel);\n        }\n      } catch (_) {}\n      return;\n    }\n    if (tiktokPixelInitializationStarted) return;\n    tiktokPixelInitializationStarted = true;\n    requestTikTokPixelConfig(config).then(function (pixelCode) {\n      var ttq = installTikTokQueue();\n      ttq.load(pixelCode);\n      if (!tiktokPageTracked) {\n        tiktokPageTracked = true;\n        ttq.page();\n      }\n      console.log('[TT] TikTok Pixel \u5DF2\u52A0\u8F7D\u5E76\u53D1\u9001 PageView: pixel_code=' + pixelCode);\n    }).catch(function (error) {\n      console.warn('[TT] TikTok Pixel \u521D\u59CB\u5316\u5931\u8D25:', error);\n    });\n  }\n\n  //  \u6700\u9AD8\u4F18\u5148\u7EA7\uFF1A\u7ACB\u5373\u8986\u76D6 fetch \u548C XHR \n  var _origFetch = window.fetch;\n  window._ttOrigFetch = _origFetch;\n\n  window.fetch = function (input, init) {\n    var url = typeof input === 'string' ? input\n            : (input && typeof input.url === 'string' ? input.url : String(input || ''));\n\n    if (url.indexOf('/cart/add') !== -1) {\n      var attribs = buildAttribs();\n      if (Object.keys(attribs).length > 0) {\n        try {\n          init = init ? Object.assign({}, init) : {};\n          if (typeof init.body === 'string') {\n            try {\n              var parsed = JSON.parse(init.body);\n              if (!parsed.attributes) parsed.attributes = {};\n              Object.keys(attribs).forEach(function (k) { parsed.attributes[k] = attribs[k]; });\n              init.body = JSON.stringify(parsed);\n            } catch (_) {}\n          } else if (typeof FormData !== 'undefined' && init.body instanceof FormData) {\n            Object.keys(attribs).forEach(function (k) { init.body.set('attributes[' + k + ']', attribs[k]); });\n          } else if (typeof URLSearchParams !== 'undefined' && init.body instanceof URLSearchParams) {\n            Object.keys(attribs).forEach(function (k) { init.body.set('attributes[' + k + ']', attribs[k]); });\n          }\n        } catch (_) {}\n\n        var result = _origFetch.call(window, input, init);\n        return result.then(function (r) {\n          if (!r || !r.ok) return r;\n          return writeCartAttribsAsync('fetch-cart-add').then(function () { return r; }).catch(function () { return r; });\n        });\n      }\n    }\n    return _origFetch.call(window, input, init);\n  };\n\n  try {\n    var _origXHROpen = XMLHttpRequest.prototype.open;\n    var _origXHRSend = XMLHttpRequest.prototype.send;\n    XMLHttpRequest.prototype.open = function (method, url) {\n      this._ttUrl = url || '';\n      return _origXHROpen.apply(this, arguments);\n    };\n    XMLHttpRequest.prototype.send = function (body) {\n      if (this._ttUrl && this._ttUrl.indexOf('/cart/add') !== -1) {\n        var attribs = buildAttribs();\n        if (Object.keys(attribs).length > 0) {\n          this.addEventListener('load', function () {\n            if (this.status >= 200 && this.status < 300) {\n              writeCartAttribsAsync('xhr-cart-add').catch(function () {});\n            }\n          });\n        }\n      }\n      return _origXHRSend.call(this, body);\n    };\n  } catch (_) {}\n\n  // ---------- 1. \u6355\u83B7\u5F53\u524D URL\uFF1B\u5B58\u50A8\u4E0D\u53EF\u7528\u65F6\u4FDD\u7559\u5728\u5F53\u524D\u9875\u9762\u5185\u5B58 ----------\n  function captureCurrentUrlAttribution() {\n    var locationSignature = window.location.href + '\\n' + window.location.search;\n    if (locationSignature === lastCapturedLocation) return;\n    var capturedUrl = resolveCapturedUrlAttribution();\n    var params = capturedUrl.params;\n    var normalizedParams = normalizeCapturedAttributionParams(params);\n    var currentFbclid = params.get('fbclid') || '';\n    var currentTtclid = params.get('ttclid') || '';\n    var previousFbclid = readStoredValue(LS_PREFIX + 'fbclid') || '';\n    var previousTtclid = readStoredValue(LS_PREFIX + 'ttclid') || '';\n    var previousCapturedAt = readStoredValue(LS_PREFIX + 'captured_at') || '';\n    var previousVisitId = readStoredValue(LS_PREFIX + 'visit_id') || '';\n    var previousLandingUrl = readStoredValue(LS_PREFIX + 'landing_url') || '';\n    var hasPaidClick = currentFbclid || currentTtclid;\n    var capturedParamKeys = readUrlParamKeys();\n    var isSamePaidClick = hasPaidClick\n      && currentFbclid === previousFbclid && currentTtclid === previousTtclid;\n\n    if (hasPaidClick && !isSamePaidClick) {\n      allAttribKeys().forEach(function (key) {\n        if (THEME_ATTRIBUTE_KEYS.indexOf(key) === -1) writeStoredValue(LS_PREFIX + key, '');\n      });\n    }\n    if (hasPaidClick && !isSamePaidClick && !normalizedParams.pixel_id) {\n      writeStoredValue(LS_PREFIX + 'pixel_id', '');\n    }\n\n    params.forEach(function (v, k) {\n      if (!k || !v) return;\n      if (!hasPaidClick && (previousFbclid || previousTtclid) && KEYS.indexOf(k) !== -1) return;\n      writeStoredValue(LS_PREFIX + k, v);\n      if (capturedParamKeys.indexOf(k) === -1) capturedParamKeys.push(k);\n    });\n    if (normalizedParams.pixel_id && (hasPaidClick || !(previousFbclid || previousTtclid))) {\n      writeStoredValue(LS_PREFIX + 'pixel_id', normalizedParams.pixel_id);\n      if (capturedParamKeys.indexOf('pixel_id') === -1) capturedParamKeys.push('pixel_id');\n    }\n    if (normalizedParams.account_id && (hasPaidClick || !(previousFbclid || previousTtclid))) {\n      writeStoredValue(LS_PREFIX + 'account_id', normalizedParams.account_id);\n      writeStoredValue(LS_PREFIX + 'biz_account_id', params.get('biz_account_id') || normalizedParams.account_id);\n      if (capturedParamKeys.indexOf('account_id') === -1) capturedParamKeys.push('account_id');\n      if (capturedParamKeys.indexOf('biz_account_id') === -1) capturedParamKeys.push('biz_account_id');\n    }\n    saveUrlParamKeys(capturedParamKeys);\n\n    if (hasPaidClick) {\n      var now = Date.now();\n      var previousCapturedAtMilliseconds = Date.parse(previousCapturedAt);\n      var hasValidPreviousCapturedAt = isSamePaidClick\n        && !isNaN(previousCapturedAtMilliseconds)\n        && previousCapturedAtMilliseconds > 0\n        && previousCapturedAtMilliseconds <= now;\n\n      var matchingPreviousLanding = false;\n      if (isSamePaidClick && previousLandingUrl) {\n        try {\n          matchingPreviousLanding = matchesCapturedClick(new URL(previousLandingUrl).searchParams, params);\n        } catch (error) { if (error.name !== 'TypeError') throw error; }\n      }\n      writeStoredValue(LS_PREFIX + 'landing_url', matchingPreviousLanding ? previousLandingUrl : capturedUrl.landingUrl);\n      var capturedAt = params.get('captured_at') || '';\n      var capturedAtMilliseconds = Date.parse(capturedAt);\n      if (hasValidPreviousCapturedAt) capturedAt = previousCapturedAt;\n      else if (!Number.isFinite(capturedAtMilliseconds) || capturedAtMilliseconds <= 0 || capturedAtMilliseconds > now) {\n        capturedAt = capturedUrl.directPaidClick ? new Date(now).toISOString() : '';\n      }\n      writeStoredValue(LS_PREFIX + 'captured_at', capturedAt);\n      writeStoredValue(LS_PREFIX + 'source', currentFbclid && currentTtclid ? 'error' : currentFbclid ? 'facebook' : 'tiktok');\n      if (!isSamePaidClick || !previousVisitId) {\n        writeStoredValue(LS_PREFIX + 'visit_id', params.get('visit_id') || now + '_' + Math.floor(Math.random() * 1000000));\n      }\n    }\n\n    writeStoredValue(LS_PREFIX + 'last_url', capturedUrl.lastUrl);\n    lastCapturedLocation = locationSignature;\n  }\n  captureCurrentUrlAttribution();\n\n  var storefrontThemeContext = { themeId: '', themeName: '' };\n  captureStorefrontTheme(0);\n\n  function initializeStorefrontPixels() {\n    initializeMetaPixel();\n    initializeTikTokPixel();\n  }\n  // head \u5165\u53E3\u5148\u5B89\u88C5\u5F52\u56E0\u9632\u7EBF\uFF1BPixel \u7B49\u9875\u9762\u811A\u672C\u5B8C\u6210\u89E3\u6790\u540E\u518D\u8BFB\u53D6 Shopify \u9690\u79C1\u72B6\u6001\u3002\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initializeStorefrontPixels, { once: true });\n  } else {\n    initializeStorefrontPixels();\n  }\n\n  // ---------- 2. \u8BFB\u53D6\u5F52\u56E0\u5B58\u50A8\u6784\u5EFA\u5F52\u56E0\u5BF9\u8C61 ----------\n  function buildAttribs() {\n    captureCurrentUrlAttribution();\n    var attribs = {};\n    allAttribKeys().forEach(function (k) {\n      var v = readStoredValue(LS_PREFIX + k);\n      if (v !== null) attribs[LS_PREFIX + k] = v;\n    });\n    return attribs;\n  }\n\n  function buildMetaAdParams(pixelId) {\n    captureCurrentUrlAttribution();\n    var adParams = {};\n    allAttribKeys().forEach(function (key) {\n      var value = readStoredValue(LS_PREFIX + key);\n      if (value) adParams[key] = value;\n    });\n    adParams.pixel_id = pixelId;\n    adParams.checkout_source = 'storefront_intent';\n    return adParams;\n  }\n\n  function getOrCreateFacebookVisitorId() {\n    var existing = '';\n    try { existing = readStoredValue(FACEBOOK_VISITOR_STORAGE_KEY) || ''; } catch (_) {}\n    if (existing) return existing;\n    var visitorId = '';\n    try {\n      visitorId = window.crypto && typeof window.crypto.randomUUID === 'function'\n        ? window.crypto.randomUUID()\n        : Date.now() + '_' + Math.floor(Math.random() * 1000000);\n      writeStoredValue(FACEBOOK_VISITOR_STORAGE_KEY, visitorId);\n    } catch (_) {}\n    return visitorId;\n  }\n\n  function checkoutIntentJourneyKey(visitId) {\n    var attributedPixelId = '';\n    var capturedAt = '';\n    var variantId = '';\n    try {\n      attributedPixelId = readStoredValue(LS_PREFIX + 'pixel_id') || '';\n      capturedAt = readStoredValue(LS_PREFIX + 'captured_at') || '';\n      variantId = new URLSearchParams(window.location.search).get('variant') || '';\n    } catch (_) {}\n    return [\n      attributedPixelId,\n      visitId || capturedAt || metaPixelLoadId,\n      window.location.origin + window.location.pathname,\n      variantId,\n    ].join('|');\n  }\n\n  function readStoredCheckoutIntent(journeyKey) {\n    try {\n      var raw = readStoredValue(FACEBOOK_CHECKOUT_INTENT_STORAGE_KEY);\n      var stored = raw ? JSON.parse(raw) : null;\n      return stored && stored.eventId && stored.journeyKey === journeyKey ? stored : null;\n    } catch (_) {\n      return null;\n    }\n  }\n\n  function saveCheckoutIntent(intent) {\n    try {\n      writeStoredValue(FACEBOOK_CHECKOUT_INTENT_STORAGE_KEY, JSON.stringify(intent));\n    } catch (_) {}\n  }\n\n  function checkoutIntentEventId(journeyKey) {\n    var firstHash = 2166136261;\n    var secondHash = 2166136261 ^ 2654435769;\n    for (var index = 0; index < journeyKey.length; index++) {\n      var characterCode = journeyKey.charCodeAt(index);\n      firstHash = Math.imul(firstHash ^ characterCode, 16777619);\n      secondHash = Math.imul(secondHash ^ characterCode, 2246822519);\n    }\n    return 'fb_checkout_intent_' +\n      (firstHash >>> 0).toString(16).padStart(8, '0') +\n      (secondHash >>> 0).toString(16).padStart(8, '0');\n  }\n\n  function createCheckoutIntent(source) {\n    if (activeCheckoutIntent) return activeCheckoutIntent;\n    var now = Date.now();\n    var visitId = '';\n    try { visitId = readStoredValue(LS_PREFIX + 'visit_id') || ''; } catch (_) {}\n    var journeyKey = checkoutIntentJourneyKey(visitId);\n    var storedIntent = readStoredCheckoutIntent(journeyKey);\n    if (storedIntent) {\n      activeCheckoutIntent = storedIntent;\n      return activeCheckoutIntent;\n    }\n    activeCheckoutIntent = {\n      eventId: checkoutIntentEventId(journeyKey),\n      createdAt: now,\n      source: source,\n      visitId: visitId,\n      journeyKey: journeyKey,\n      pixelId: activeMetaPixelId,\n      fbqSent: false,\n      stored: false,\n    };\n    saveCheckoutIntent(activeCheckoutIntent);\n    return activeCheckoutIntent;\n  }\n\n  function readMetaCookie(name) {\n    try {\n      var prefix = name + '=';\n      var cookies = document.cookie ? document.cookie.split(';') : [];\n      for (var index = 0; index < cookies.length; index++) {\n        var cookie = cookies[index].trim();\n        if (cookie.indexOf(prefix) === 0) return cookie.slice(prefix.length);\n      }\n    } catch (_) {}\n    return '';\n  }\n\n  function storeCheckoutIntent(context, intent, adParams, params) {\n    var cookieFbc = readMetaCookie('_fbc');\n    var expectedFbclid = adParams.fbclid || '';\n    var parsedCookieFbc = parseFacebookClickCookie(cookieFbc);\n    var matchingCookieFbc = parsedCookieFbc\n      && (!expectedFbclid || parsedCookieFbc.fbclid === expectedFbclid) ? cookieFbc : '';\n    var parsedStoredFbc = parseFacebookClickCookie(adParams.fbc);\n    var matchingStoredFbc = parsedStoredFbc\n      && (!expectedFbclid || parsedStoredFbc.fbclid === expectedFbclid) ? adParams.fbc : '';\n    var fallbackFbc = expectedFbclid && !matchingCookieFbc && !matchingStoredFbc\n      ? buildManualFacebookClickCookie(expectedFbclid, adParams.captured_at) : '';\n    var fbc = matchingCookieFbc || matchingStoredFbc || fallbackFbc;\n    if (fbc) {\n      adParams.fbc = fbc;\n      adParams.fbc_source = matchingCookieFbc\n        ? 'cookie'\n        : matchingStoredFbc ? adParams.fbc_source || 'stored' : 'manual_fallback';\n      adParams.fbc_is_fallback = matchingCookieFbc ? '0' : fallbackFbc ? '1' : adParams.fbc_is_fallback || '0';\n    } else {\n      delete adParams.fbc;\n      delete adParams.fbc_source;\n      delete adParams.fbc_is_fallback;\n    }\n    var fbp = readMetaCookie('_fbp') || '';\n    var normalizedFbc = parseFacebookClickCookie(fbc);\n    var eventPayload = {\n      schemaVersion: 2,\n      media_platform: 'meta',\n      click_id: expectedFbclid || (normalizedFbc ? normalizedFbc.fbclid : ''),\n      pixelId: context.pixelId,\n      shopDomain: context.config.shop,\n      sourceEventName: 'checkout_intent',\n      event: {\n        event_name: 'InitiateCheckout',\n        event_id: intent.eventId,\n        event_time: Math.floor(intent.createdAt / 1000),\n        event_source_url: window.location.href,\n        action_source: 'website',\n        user_data: { fbc: fbc || undefined, fbp: fbp || undefined },\n        custom_data: params,\n      },\n      adParams: adParams,\n      cookieDiagnostics: {\n        apiAvailable: true,\n        fbc: {\n          status: matchingCookieFbc ? 'success' : cookieFbc ? 'invalid' : 'missing',\n          value: cookieFbc || undefined,\n          errorCode: cookieFbc && !matchingCookieFbc ? 'fbc_fbclid_mismatch_or_invalid' : undefined,\n        },\n        fbp: { status: fbp ? 'success' : 'missing', value: fbp || undefined },\n      },\n      browserContext: {\n        pageUrl: window.location.href,\n        referrerUrl: document.referrer || '',\n        pageTitle: document.title || '',\n        pageType: 'checkout_intent',\n        visitorId: getOrCreateFacebookVisitorId(),\n        themeId: storefrontThemeContext.themeId,\n        themeName: storefrontThemeContext.themeName,\n      },\n    };\n    return _origFetch.call(window, context.config.origin + '/api/browser-event-store', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify(eventPayload),\n      keepalive: true,\n    }).then(function (response) {\n      if (!response.ok) throw new Error('checkout_intent_store_http_' + response.status);\n      return response.json().then(function (result) {\n        if (!result || (result.status !== 'queued'\n          && result.status !== 'duplicate_pending'\n          && result.status !== 'duplicate_synced')) {\n          throw new Error('checkout_intent_store_status_missing');\n        }\n        var queued = result.status === 'queued';\n        reportMetaPixelPhase(context.config, 'checkout_intent_stored', {\n          pixelId: context.pixelId,\n          eventId: intent.eventId,\n          checkoutSource: intent.source,\n          failureReason: queued ? '' : 'duplicate_checkout_journey',\n        });\n        return queued ? 'inserted' : 'duplicate';\n      });\n    });\n  }\n\n  function recordCheckoutIntent(source) {\n    captureCurrentUrlAttribution();\n    if (!canLoadMetaPixel()) return Promise.resolve();\n    var intent = createCheckoutIntent(source);\n    if (activeCheckoutIntentPromise) return activeCheckoutIntentPromise;\n    activeCheckoutIntentPromise = metaPixelReadyPromise.then(function (context) {\n      if (!context) throw new Error('meta_pixel_not_ready');\n      intent.pixelId = context.pixelId;\n      saveCheckoutIntent(intent);\n      var adParams = buildMetaAdParams(context.pixelId);\n      var params = {};\n      var storePromise = intent.stored\n        ? Promise.resolve('known')\n        : storeCheckoutIntent(context, intent, adParams, params);\n      return storePromise.then(function (storeStatus) {\n        intent.stored = true;\n        saveCheckoutIntent(intent);\n        if (storeStatus !== 'inserted') {\n          reportMetaPixelPhase(context.config, 'checkout_intent_fbq_skipped', {\n            pixelId: context.pixelId,\n            eventId: intent.eventId,\n            checkoutSource: intent.source,\n            failureReason: 'duplicate_checkout_journey',\n          });\n          return;\n        }\n        if (!context.pixelId) {\n          reportMetaPixelPhase(context.config, 'checkout_intent_fbq_skipped', {\n            eventId: intent.eventId,\n            checkoutSource: intent.source,\n            failureReason: 'pixel_id_missing_attribution',\n          });\n          return;\n        }\n        if (!window.fbq) throw new Error('meta_pixel_not_ready');\n        if (intent.fbqSent) {\n          reportMetaPixelPhase(context.config, 'checkout_intent_fbq_skipped', {\n            pixelId: context.pixelId,\n            eventId: intent.eventId,\n            checkoutSource: intent.source,\n            failureReason: 'duplicate_checkout_journey',\n          });\n          return;\n        }\n        intent.fbqSent = true;\n        saveCheckoutIntent(intent);\n        window.fbq('trackSingle', activeMetaPixelId, 'InitiateCheckout', params, { eventID: intent.eventId });\n        reportMetaPixelPhase(context.config, 'checkout_intent_fbq_sent', {\n          pixelId: context.pixelId,\n          eventId: intent.eventId,\n          checkoutSource: intent.source,\n        });\n      });\n    }).catch(function (error) {\n      var config = scriptConfiguration();\n      if (config) {\n        reportMetaPixelPhase(config, 'checkout_intent_failed', {\n          pixelId: intent.pixelId || activeMetaPixelId,\n          eventId: intent.eventId,\n          checkoutSource: intent.source,\n          failureReason: error instanceof Error ? error.message : String(error),\n        }, 'ERROR');\n      }\n    }).finally(function () {\n      activeCheckoutIntentPromise = null;\n    });\n    return activeCheckoutIntentPromise;\n  }\n\n  function waitForCheckoutPreparation(promise, source) {\n    var timer;\n    var deadline = new Promise(function (resolve) {\n      timer = setTimeout(function () {\n        reportCartWritePhase('checkout_prepare_timeout', source, buildAttribs(), 0,\n          'checkout_preparation_timeout', 'WARN');\n        resolve(false);\n      }, CHECKOUT_PREPARATION_TIMEOUT_MILLISECONDS);\n    });\n    return Promise.race([promise, deadline]).finally(function () { clearTimeout(timer); });\n  }\n\n  function prepareCheckoutIntent(source) {\n    var confirmed = false;\n    var cartWrite = writeCartAttribsAsync(source).then(function (saved) {\n      confirmed = saved;\n      return saved;\n    });\n    return waitForCheckoutPreparation(Promise.all([\n      recordCheckoutIntent(source),\n      cartWrite,\n    ]).then(function () { return confirmed; }), source)\n      .then(function (saved) {\n        return (saved === true || confirmed) && lastReportedCartSignature === JSON.stringify(buildAttribs());\n      });\n  }\n\n  function isCartPermalink(url) {\n    return /\\/cart\\/\\d+:\\d+/.test(url);\n  }\n\n  function appendAttribsToUrl(url, attribs) {\n    var keys = Object.keys(attribs);\n    if (!keys.length) return url;\n    var destination = new URL(url, window.location.href);\n    // Cart permalinks already enter checkout; a scalar checkout conflicts with Shopify's checkout hash.\n    destination.searchParams.delete('checkout');\n    keys.forEach(function (key) {\n      destination.searchParams.set('attributes[' + key + ']', attribs[key]);\n    });\n    return destination.href;\n  }\n\n  // ---------- 3. \u5199\u5165\u8D2D\u7269\u8F66 attributes\uFF08\u8FD4\u56DE Promise\uFF09----------\n  function reportCartWritePhase(phase, source, attribs, attempt, reason, level) {\n    reportMetaPixelPhase(scriptConfiguration(), phase, {\n      pageUrl: window.location.origin + window.location.pathname,\n      hasFbclid: attribs._tt_fbclid ? '1' : '0',\n      hasLandingUrl: attribs._tt_landing_url ? '1' : '0',\n      checkoutSource: source,\n      attempt: attempt,\n      failureReason: reason,\n    }, level);\n  }\n\n  function requestCartAttributes(attribs) {\n    var controller = typeof AbortController === 'function' ? new AbortController() : null;\n    var timer;\n    var deadline = new Promise(function (resolve) {\n      timer = setTimeout(function () {\n        resolve({ saved: false, retryable: true, reason: 'cart_update_timeout' });\n        if (controller) controller.abort();\n      }, CART_WRITE_TIMEOUT_MILLISECONDS);\n    });\n    var request = _origFetch.call(window, '/cart/update.js', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify({ attributes: attribs }),\n      signal: controller ? controller.signal : undefined,\n    }).then(function (response) {\n      if (!response.ok) return {\n        saved: false,\n        retryable: response.status === 429 || response.status >= 500,\n        reason: 'cart_update_http_' + response.status,\n      };\n      return response.json().then(function (cart) {\n        var missingKeys = Object.keys(attribs).filter(function (key) {\n          if (!cart || !cart.attributes) return true;\n          return attribs[key] === '' ? Boolean(cart.attributes[key]) : cart.attributes[key] !== attribs[key];\n        });\n        return {\n          saved: missingKeys.length === 0,\n          retryable: true,\n          reason: missingKeys.length ? 'cart_attributes_not_saved:' + missingKeys.join(',') : '',\n        };\n      });\n    }).catch(function (error) {\n      if (error.name !== 'TypeError' && error.name !== 'SyntaxError' && error.name !== 'AbortError') throw error;\n      return { saved: false, retryable: true, reason: 'cart_update_' + error.name };\n    });\n    return Promise.race([request, deadline]).finally(function () { clearTimeout(timer); });\n  }\n\n  function writeCartAttempt(source, attempt) {\n    // Rebuild every attempt: retries must never replay a previous click's snapshot.\n    var attribs = buildAttribs();\n    if (!Object.keys(attribs).length) return Promise.resolve(false);\n    var signature = JSON.stringify(attribs);\n    return requestCartAttributes(attribs).then(function (result) {\n      var changedDuringWrite = signature !== JSON.stringify(buildAttribs());\n      if ((!result.saved || changedDuringWrite) && result.retryable && attempt < CART_WRITE_MAXIMUM_ATTEMPTS) {\n        return new Promise(function (resolve) { setTimeout(resolve, 200); })\n          .then(function () { return writeCartAttempt(source, attempt + 1); });\n      }\n      if (!result.saved || changedDuringWrite) {\n        reportCartWritePhase('cart_attributes_write_failed', source, attribs, attempt,\n          changedDuringWrite ? 'cart_attribution_changed_during_write' : result.reason, 'ERROR');\n        return false;\n      }\n      if (signature !== lastReportedCartSignature) {\n        lastReportedCartSignature = signature;\n        reportCartWritePhase('cart_attributes_write_succeeded', source, attribs, attempt, '', 'INFO');\n      }\n      return true;\n    });\n  }\n\n  function writeCartAttribsAsync(source) {\n    if (activeCartWritePromise) return activeCartWritePromise;\n    activeCartWritePromise = writeCartAttempt(source, 1).finally(function () {\n      activeCartWritePromise = null;\n    });\n    return activeCartWritePromise;\n  }\n\n  //  \u9875\u9762\u52A0\u8F7D\u7ACB\u5373\u5199\u5165\uFF08\u65E0\u9632\u6296\uFF0C\u7ACB\u523B\u6267\u884C\uFF09\n  writeCartAttribsAsync('page-load-immediate');\n\n  // ---------- 3.5 \u6062\u590D Buy it now \u4E4B\u524D\u4FDD\u5B58\u7684\u8D2D\u7269\u8F66 ----------\n  // Cart permalink \u4F1A\u66FF\u6362 session cart\uFF0C\u65E0\u8BBA\u7ED3\u7B97\u5B8C\u6210\u8FD8\u662F\u653E\u5F03\uFF0C\n  // \u56DE\u5230\u5E97\u94FA\u540E\u90FD\u8981\u6062\u590D\u539F\u6765\u7684\u8D2D\u7269\u8F66\u5185\u5BB9\n  //\n  // \u91CD\u8981\uFF1A\u8DF3\u8FC7 cart permalink \u9875\u9762\u548C checkout \u9875\u9762\uFF0C\u907F\u514D\u8FC7\u65E9\u6062\u590D\u88AB\u91CD\u5B9A\u5411\u6253\u65AD\n  try {\n    var _curPath = window.location.pathname;\n    var _isCartPermalink = /^\\/cart\\/\\d+:\\d+/.test(_curPath);\n    var _isCheckout = _curPath.indexOf('/checkout') !== -1 || _curPath.indexOf('/checkouts') !== -1;\n\n    if (hasPaidClickInCurrentUrl()) {\n      console.log('[TT] \u23ED\uFE0F \u8DF3\u8FC7\u8D2D\u7269\u8F66\u6062\u590D\uFF08\u5F53\u524D\u662F\u5E7F\u544A\u843D\u5730\u9875\uFF0C\u907F\u514D\u5E72\u6270\u5F52\u56E0\u4E0B\u5355\uFF09');\n    } else if (!_isCartPermalink && !_isCheckout) {\n      var savedCart = readStoredValue('_tt_saved_cart');\n      var savedTime = parseInt(readStoredValue('_tt_saved_cart_time') || '0', 10);\n      // 24 \u5C0F\u65F6\u5185\u6709\u6548\uFF0C\u8D85\u65F6\u4E22\u5F03\n      var isValid = savedCart && (Date.now() - savedTime < 24 * 60 * 60 * 1000);\n\n      if (isValid) {\n        removeStoredValue('_tt_saved_cart');\n        removeStoredValue('_tt_saved_cart_time');\n        var savedItems = JSON.parse(savedCart);\n        if (savedItems && savedItems.length > 0) {\n          // \u5148\u6E05\u7A7A\u8D2D\u7269\u8F66\uFF08\u6E05\u9664 cart permalink \u6B8B\u7559\u7684\u5546\u54C1\uFF09\n          _origFetch.call(window, '/cart/clear.js', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application/json' },\n          })\n          .then(function () {\n            // \u518D\u628A\u539F\u6765\u7684\u5546\u54C1\u5168\u90E8\u52A0\u56DE\u53BB\n            return _origFetch.call(window, '/cart/add.js', {\n              method: 'POST',\n              headers: { 'Content-Type': 'application/json' },\n              body: JSON.stringify({ items: savedItems }),\n            });\n          })\n          .then(function () {\n            console.log('[TT] \u2705 \u8D2D\u7269\u8F66\u5DF2\u6062\u590D\uFF08' + savedItems.length + ' \u4EF6\u5546\u54C1\uFF09');\n            // \u6062\u590D\u540E\u4E5F\u8981\u5199\u5165\u5F52\u56E0 attributes\n            return writeCartAttribsAsync('cart-restore');\n          })\n          .catch(function (e) {\n            console.warn('[TT] \u26A0\uFE0F \u6062\u590D\u8D2D\u7269\u8F66\u5931\u8D25:', e);\n          });\n        }\n      }\n    } else {\n      console.log('[TT] \u23ED\uFE0F \u8DF3\u8FC7\u8D2D\u7269\u8F66\u6062\u590D\uFF08\u5F53\u524D\u5728 cart permalink / checkout \u9875\uFF09');\n    }\n  } catch (_) {}\n\n  // DOMContentLoaded \u518D\u5199\u4E00\u6B21\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', function () {\n      writeCartAttribsAsync('DOMContentLoaded');\n    });\n  }\n\n  // ---------- 4. \u4EA7\u54C1\u3001\u8D2D\u7269\u8F66\u53CA\u666E\u901A\u7ED3\u8D26\u8868\u5355\u968F\u63D0\u4EA4\u643A\u5E26 attributes ----------\n  /** @param {HTMLFormElement | null} form */\n  function isAttributionForm(form) {\n    if (!form || !form.action) return false;\n    var action = new URL(form.action, window.location.href);\n    return action.origin === window.location.origin && (\n      /\\/cart(?:\\/add)?(?:\\.js)?\\/?$/.test(action.pathname)\n      || /^\\/(?:[a-z]{2}(?:-[a-z]{2})?\\/)?checkout\\/?$/i.test(action.pathname)\n    );\n  }\n\n  /** @param {HTMLFormElement} form */\n  function injectFormAttribution(form) {\n    var attribs = buildAttribs();\n    var desiredFields = Object.create(null);\n    var existingFields = Object.create(null);\n    Object.keys(attribs).forEach(function (key) {\n      desiredFields['attributes[' + key + ']'] = attribs[key];\n    });\n    form.querySelectorAll('input[data-tt-attr]').forEach(function (input) {\n      if (!Object.prototype.hasOwnProperty.call(desiredFields, input.name) || existingFields[input.name]) {\n        input.parentNode && input.parentNode.removeChild(input);\n        return;\n      }\n      existingFields[input.name] = input;\n      if (input.value !== desiredFields[input.name]) input.value = desiredFields[input.name];\n    });\n    Object.keys(desiredFields).forEach(function (name) {\n      if (existingFields[name]) return;\n      var input = document.createElement('input');\n      input.type = 'hidden';\n      input.name = name;\n      input.value = desiredFields[name];\n      input.setAttribute('data-tt-attr', '1');\n      form.appendChild(input);\n    });\n  }\n\n  function injectFormFields() {\n    document.querySelectorAll('form[action*=\"/cart\"], form[action*=\"/checkout\"]').forEach(function (form) {\n      if (isAttributionForm(form)) injectFormAttribution(form);\n    });\n  }\n\n  function interceptAttributionFormSubmissions() {\n    document.addEventListener('submit', function (event) {\n      if (isAttributionForm(event.target)) injectFormAttribution(event.target);\n    }, true);\n    // \u4E3B\u9898\u7684 prototype.submit() \u4E0D\u89E6\u53D1 submit \u4E8B\u4EF6\uFF0C\u5FC5\u987B\u5728\u771F\u6B63\u63D0\u4EA4\u524D\u540C\u6B65\u6CE8\u5165\u3002\n    var originalSubmit = HTMLFormElement.prototype.submit;\n    HTMLFormElement.prototype.submit = function () {\n      if (isAttributionForm(this)) injectFormAttribution(this);\n      return originalSubmit.apply(this, arguments);\n    };\n  }\n\n  // ---------- 5. \u76D1\u542C DOM \u53D8\u5316\uFF0C\u91CD\u65B0\u6CE8\u5165 ----------\n  function watchForForms() {\n    if (typeof MutationObserver === 'undefined') return;\n    var timer;\n    var observer = new MutationObserver(function () {\n      clearTimeout(timer);\n      timer = setTimeout(injectFormFields, 200);\n    });\n    observer.observe(document.body, { childList: true, subtree: true });\n  }\n\n  // ---------- 6.  Buy it now \u91CD\u6784\uFF1A\u7EDF\u4E00\u8BC6\u522B/\u6807\u8BB0 \u2192 \u8D70 cart permalink ----------\n  // \u6838\u5FC3\u539F\u7406\uFF1A\u539F\u751F Buy it now \u521B\u5EFA\u72EC\u7ACB cart\uFF08cart attributes \u4E22\u5931\uFF09\uFF0C\n  //           \u8986\u76D6\u5C42\u62E6\u622A\u540E\u8D70 session cart\uFF08\u5DF2\u6709 _tt_* attributes\uFF09\u2192 note_attributes \u5B8C\u6574\u4FDD\u7559\n  // \u4E4B\u524D\u8986\u76D6\u5C42\u65B9\u6848\u5931\u8D25\u662F\u56E0\u4E3A\u9700\u8981\u628A\u70B9\u51FB\u4F20\u56DE\u539F\u6309\u94AE\uFF08closed shadow DOM \u963B\u6B62\u4E86\uFF09\uFF0C\n  // \u4F46\u73B0\u5728\u6211\u4EEC\u5B8C\u5168\u4E0D\u9700\u8981\u539F\u6309\u94AE\u7684\u529F\u80FD\u2014\u2014\u81EA\u5DF1\u5904\u7406 cart/add + checkout\n  // \u539F\u6309\u94AE\u4FDD\u6301\u53EF\u89C1\uFF08\u6837\u5F0F\u96F6\u6539\u52A8\uFF09\uFF0C\u53EA\u662F\u70B9\u51FB\u88AB\u8986\u76D6\u5C42\u622A\u83B7\n  var _pendingWritePromise = null;\n\n  function interceptAcceleratedCheckout() {\n    // Fotlum lunch template: do not overlay or replace Shopify's native wallets.\n    // All other attribution, pixel, cart, and checkout tracking remains unchanged.\n    return;\n    function findProductForm(el) {\n      if (el && el.getAttribute) {\n        var formId = el.getAttribute('form');\n        var referencedForm = formId ? document.getElementById(formId) : null;\n        if (referencedForm && referencedForm.tagName === 'FORM' && referencedForm.action && referencedForm.action.indexOf('/cart/add') !== -1) {\n          return referencedForm;\n        }\n      }\n      // \u5411\u4E0A\u67E5\u627E\u6700\u8FD1\u7684 product form\n      var node = el;\n      while (node && node !== document.body) {\n        if (node.tagName === 'FORM' && node.action && node.action.indexOf('/cart/add') !== -1) return node;\n        var parentForm = node.closest ? node.closest('form[action*=\"/cart/add\"]') : null;\n        if (parentForm) return parentForm;\n        node = node.parentElement;\n      }\n      // \u56DE\u9000\uFF1A\u5728\u540C\u7EA7\u5BB9\u5668\u4E2D\u67E5\u627E\n      node = el.parentElement;\n      while (node && node !== document.body) {\n        var form = node.querySelector('form[action*=\"/cart/add\"]');\n        if (form) return form;\n        node = node.parentElement;\n      }\n      return null;\n    }\n\n    function findFormLinkedControl(form, name) {\n      if (!form || !form.id) return null;\n      try {\n        var controls = document.querySelectorAll('input[name=\"' + name + '\"][form], select[name=\"' + name + '\"][form]');\n        for (var i = 0; i < controls.length; i++) {\n          if (controls[i].getAttribute('form') === form.id) return controls[i];\n        }\n      } catch (_) {}\n      return null;\n    }\n\n    function findDataVariantContainer(el) {\n      var depth = 0;\n      while (el && el.tagName !== 'HTML' && depth < 8) {\n        if (el.getAttribute && el.getAttribute('data-variant-id')) return el;\n        el = el.parentElement;\n        depth++;\n      }\n      return null;\n    }\n\n    function findGloveioBuyNowButton(el) {\n      var depth = 0;\n      while (el && el.tagName !== 'HTML' && depth < 8) {\n        if (el.getAttribute && el.hasAttribute && el.hasAttribute('data-gloveio-buy-now')) return el;\n        el = el.parentElement;\n        depth++;\n      }\n      return null;\n    }\n\n    function isGloveioBuyNowButton(el) {\n      return !!(findGloveioBuyNowButton(el) && findDataVariantContainer(el));\n    }\n\n    function getVariantId(form, el) {\n      if (form) {\n        var idInput = form.querySelector('input[name=\"id\"]') ||\n          form.querySelector('select[name=\"id\"]') ||\n          findFormLinkedControl(form, 'id');\n        if (idInput && idInput.value) return idInput.value;\n      }\n      var dataVariantContainer = findDataVariantContainer(el);\n      if (dataVariantContainer) {\n        var dataVariantId = dataVariantContainer.getAttribute('data-variant-id');\n        if (dataVariantId) return dataVariantId;\n      }\n      try {\n        var vp = new URLSearchParams(window.location.search).get('variant');\n        if (vp) return vp;\n      } catch (_) {}\n      try {\n        if (window.ShopifyAnalytics && window.ShopifyAnalytics.meta) {\n          var meta = window.ShopifyAnalytics.meta;\n          if (meta.selectedVariantId) return String(meta.selectedVariantId);\n          if (meta.product && meta.product.variants && meta.product.variants.length === 1) {\n            return String(meta.product.variants[0].id);\n          }\n        }\n      } catch (_) {}\n      return null;\n    }\n\n    function getQuantity(form, el) {\n      var qtyInput = form && (\n        form.querySelector('input[name=\"quantity\"]') ||\n        form.querySelector('select[name=\"quantity\"]') ||\n        findFormLinkedControl(form, 'quantity')\n      );\n      var dataVariantContainer = findDataVariantContainer(el);\n      if (!qtyInput && dataVariantContainer) {\n        qtyInput = dataVariantContainer.querySelector('[data-gloveio-quantity-input]');\n      }\n      if (qtyInput) {\n        var v = parseInt(qtyInput.value, 10);\n        return v > 0 ? v : 1;\n      }\n      return 1;\n    }\n\n    function getSellingPlan(form) {\n      if (!form) return null;\n      var sp = form.querySelector('input[name=\"selling_plan\"]') ||\n        form.querySelector('select[name=\"selling_plan\"]') ||\n        findFormLinkedControl(form, 'selling_plan');\n      return (sp && sp.value) ? sp.value : null;\n    }\n\n    function startBuyNowPermalink(el, source) {\n      var form = findProductForm(el);\n\n      if (el._ttProcessingBuyNow) return;\n\n      var variantId = getVariantId(form, el);\n      if (!variantId) {\n        console.warn('[TT] \u26A0\uFE0F \u65E0\u6CD5\u83B7\u53D6 variant ID\uFF0C\u76F4\u63A5\u8DF3\u8F6C /checkout');\n        prepareCheckoutIntent('buy-now-fallback').then(function () {\n          window.location.href = '/checkout';\n        }).catch(function () { window.location.href = '/checkout'; });\n        return;\n      }\n\n      el._ttProcessingBuyNow = true;\n      el.style.opacity = '0.6';\n      el.style.pointerEvents = 'none';\n\n      var qty = getQuantity(form, el);\n      var sellingPlan = getSellingPlan(form);\n      var attribs = buildAttribs();\n      attribs[BUY_NOW_CHECKOUT_SOURCE_ATTRIBUTE] = 'buy_now';\n      attribs[BUY_NOW_CHECKOUT_AT_ATTRIBUTE] = String(Date.now());\n      var checkoutIntentPromise = recordCheckoutIntent(source || 'buy-now-permalink');\n\n      var permalink = '/cart/' + variantId + ':' + qty;\n      if (sellingPlan) permalink += '?selling_plan=' + encodeURIComponent(sellingPlan);\n      permalink = appendAttribsToUrl(permalink, attribs);\n\n      console.log('[TT] \uD83D\uDED2 Buy it now (cart permalink):', permalink, source ? '[' + source + ']' : '');\n\n      // \u5148\u4FDD\u5B58\u5F53\u524D\u8D2D\u7269\u8F66\u5230 localStorage\uFF0C\u7ED3\u7B97\u5B8C\u6210\u6216\u653E\u5F03\u540E\u56DE\u5230\u5E97\u94FA\u81EA\u52A8\u6062\u590D\n      // \u7528 localStorage \u800C\u975E sessionStorage \u2014\u2014 \u6301\u4E45\u5316\u3001\u8DE8\u6807\u7B7E\u9875\n      var cartBackupPromise = _origFetch.call(window, '/cart.js')\n        .then(function (r) { return r.json(); })\n        .then(function (cart) {\n          if (cart && cart.items && cart.items.length > 0) {\n            try {\n              writeStoredValue('_tt_saved_cart', JSON.stringify(\n                cart.items.map(function (item) {\n                  return { id: item.variant_id, quantity: item.quantity, selling_plan: item.selling_plan || null };\n                })\n              ));\n              writeStoredValue('_tt_saved_cart_time', String(Date.now()));\n              console.log('[TT] \uD83D\uDCBE \u5DF2\u4FDD\u5B58\u5F53\u524D\u8D2D\u7269\u8F66\uFF08' + cart.items.length + ' \u4EF6\u5546\u54C1\uFF09');\n            } catch (_) {}\n          }\n        })\n        .catch(function () {})\n        .then(function () { return checkoutIntentPromise; });\n      waitForCheckoutPreparation(cartBackupPromise, source || 'buy-now-permalink')\n        .then(function () {\n          console.log('[TT] \uD83D\uDE80 \u8DF3\u8F6C cart permalink\uFF08attributes \u968F checkout \u521B\u5EFA\uFF09');\n          window.location.href = permalink;\n        })\n        .catch(function (e) {\n          console.warn('[TT] Buy it now cart permalink \u5F02\u5E38\uFF0C\u56DE\u9000 /checkout:', e);\n          prepareCheckoutIntent('buy-now-fallback').then(function () {\n            window.location.href = '/checkout';\n          }).catch(function () { window.location.href = '/checkout'; });\n        });\n    }\n\n    function normalizedButtonText(el) {\n      try {\n        var text = el.textContent || el.getAttribute('aria-label') || el.getAttribute('value') || '';\n        return text.replace(/\\s+/g, ' ').trim().toLowerCase();\n      } catch (_) {\n        return '';\n      }\n    }\n\n    function isBuyNowText(text) {\n      return text === 'buy it now' ||\n        text === 'buy now' ||\n        text.indexOf('buy it now') === 0 ||\n        text.indexOf('buy now') === 0 ||\n        text.indexOf('checkout now') === 0 ||\n        text.indexOf('express checkout') === 0 ||\n        text === '\u7ACB\u5373\u8D2D\u4E70' ||\n        text === '\u76F4\u63A5\u8D2D\u4E70' ||\n        text === '\u9A6C\u4E0A\u8D2D\u4E70' ||\n        text.indexOf('\u7ACB\u5373\u8D2D\u4E70') === 0;\n    }\n\n    function isAddToCartText(text) {\n      return text === 'add to cart' ||\n        text === 'add to bag' ||\n        text.indexOf('add to cart') === 0 ||\n        text.indexOf('add to bag') === 0 ||\n        text === '\u52A0\u5165\u8D2D\u7269\u8F66' ||\n        text.indexOf('\u52A0\u5165\u8D2D\u7269\u8F66') === 0;\n    }\n\n    function elementMatches(el, selector) {\n      try {\n        return !!(el && el.matches && el.matches(selector));\n      } catch (_) {\n        return false;\n      }\n    }\n\n    function isShopifyNativeBuyNow(el) {\n      if (!el || !el.tagName) return false;\n      var tag = el.tagName.toLowerCase();\n      if (['link', 'style', 'script', 'meta', 'head'].indexOf(tag) !== -1) return false;\n      if (tag === 'a' && normalizedButtonText(el).indexOf('more payment options') !== -1) return false;\n\n      return elementMatches(el, [\n        'shopify-accelerated-checkout',\n        'shopify-pay-button',\n        '[data-shopify=\"payment-button\"]',\n        '.shopify-payment-button',\n        '.shopify-payment-button__button',\n        '[data-shopify=\"dynamic-checkout-button\"]',\n        '[id*=\"shopify-accelerated-checkout\"]',\n      ].join(','));\n    }\n\n    function hasProductContext(el) {\n      return !!findProductForm(el);\n    }\n\n    function isThemeManagedBuyNowButton(el) {\n      return !!(\n        el &&\n        el.getAttribute &&\n        el.getAttribute('data-skip-cart-button') === 'true' &&\n        hasProductContext(el)\n      );\n    }\n\n    function findThemeManagedBuyNowButton(el) {\n      var depth = 0;\n      while (el && el.tagName !== 'HTML' && depth < 8) {\n        if (isThemeManagedBuyNowButton(el)) return el;\n        el = el.parentElement;\n        depth++;\n      }\n      return null;\n    }\n\n    function isThemeBuyNowButton(el) {\n      if (!el || !el.tagName) return false;\n      var tag = el.tagName.toLowerCase();\n      if (tag !== 'button' && tag !== 'a' && tag !== 'input' && el.getAttribute('role') !== 'button') return false;\n      // \u8FD9\u7C7B\u6309\u94AE\u7531\u4E3B\u9898\u4EA7\u54C1\u8868\u5355\u5904\u7406\uFF0C\u62E6\u622A\u540E\u4F1A\u8DF3\u8FC7\u4E3B\u9898\u7684 cart/add \u6D41\u7A0B\u3002\n      if (isThemeManagedBuyNowButton(el)) return false;\n\n      var text = normalizedButtonText(el);\n      if (isAddToCartText(text)) return false;\n      if (!hasProductContext(el)) return false;\n\n      var action = (el.getAttribute('data-action') || '').toLowerCase();\n      var testId = (el.getAttribute('data-testid') || '').toLowerCase();\n      var testIdAlt = (el.getAttribute('data-test-id') || '').toLowerCase();\n      var buttonType = (el.getAttribute('data-button-type') || '').toLowerCase();\n      var formAction = (el.getAttribute('formaction') || '').toLowerCase();\n      var cls = (typeof el.className === 'string' ? el.className : '').toLowerCase();\n\n      return isBuyNowText(text) ||\n        action.indexOf('buy') !== -1 ||\n        action.indexOf('dynamic') !== -1 ||\n        testId.indexOf('payment') !== -1 ||\n        testId.indexOf('buy') !== -1 ||\n        testIdAlt.indexOf('payment') !== -1 ||\n        testIdAlt.indexOf('buy') !== -1 ||\n        buttonType.indexOf('buy') !== -1 ||\n        buttonType.indexOf('dynamic') !== -1 ||\n        formAction.indexOf('/cart/add') !== -1 && formAction.indexOf('return_to') !== -1 ||\n        cls.indexOf('buy-now') !== -1 ||\n        cls.indexOf('buy_it_now') !== -1 ||\n        cls.indexOf('dynamic-checkout') !== -1 ||\n        cls.indexOf('payment-button') !== -1;\n    }\n\n    function isBuyNowCandidate(el) {\n      return isGloveioBuyNowButton(el) || isShopifyNativeBuyNow(el) || isThemeBuyNowButton(el);\n    }\n\n    function markBuyNowElement(el) {\n      if (!isBuyNowCandidate(el)) return false;\n      try {\n        el.setAttribute('data-tt-buy-now', '1');\n        if (el.classList) el.classList.add('tt-buy-now-button');\n      } catch (_) {}\n      return true;\n    }\n\n    function findMarkedBuyNowFromClickTarget(el) {\n      var gloveioBuyNowButton = findGloveioBuyNowButton(el);\n      if (gloveioBuyNowButton && isGloveioBuyNowButton(gloveioBuyNowButton)) {\n        markBuyNowElement(gloveioBuyNowButton);\n        return gloveioBuyNowButton;\n      }\n      var depth = 0;\n      while (el && el.tagName !== 'HTML' && depth < 8) {\n        if (el.getAttribute && el.getAttribute('data-tt-buy-now') === '1') return el;\n        if (isShopifyNativeBuyNow(el) || isThemeBuyNowButton(el)) {\n          markBuyNowElement(el);\n          return el;\n        }\n        el = el.parentElement;\n        depth++;\n      }\n      return null;\n    }\n\n    function overlayElement(el) {\n      if (!isOverlayCandidate(el)) return;\n      if (el._ttOverlaid) return;\n      el._ttOverlaid = true;\n\n      // \u8BA9\u539F\u59CB\u5BB9\u5668 position:relative\uFF0C\u4FBF\u4E8E\u5B9A\u4F4D\u8986\u76D6\u5C42\n      var origPosition = window.getComputedStyle(el).position;\n      if (origPosition === 'static') {\n        el.style.position = 'relative';\n      }\n\n      // \u521B\u5EFA\u900F\u660E\u8986\u76D6\u5C42\uFF0C\u5B8C\u5168\u8986\u76D6\u539F\u6309\u94AE\n      var overlay = document.createElement('div');\n      overlay.setAttribute('data-tt-overlay', '1');\n      overlay.style.cssText = [\n        'position:absolute',\n        'top:0',\n        'left:0',\n        'width:100%',\n        'height:100%',\n        'z-index:999999',\n        'cursor:pointer',\n        'background:transparent',\n        // \u4E0D\u8BBE\u7F6E pointer-events:none\uFF0C\u6211\u4EEC\u8981\u62E6\u622A\u70B9\u51FB\n      ].join(';');\n\n      overlay.addEventListener('click', function (e) {\n        e.preventDefault();\n        e.stopPropagation();\n        e.stopImmediatePropagation();\n        startBuyNowPermalink(el, 'accelerated-checkout-overlay');\n      }, true);\n\n      // \u628A\u8986\u76D6\u5C42\u653E\u8FDB\u539F\u59CB\u5143\u7D20\u5185\u90E8\uFF08\u8986\u76D6\u5728 shadow DOM \u4E4B\u4E0A\uFF09\n      el.appendChild(overlay);\n      console.log('[TT] \u2705 \u900F\u660E\u8986\u76D6\u5C42\u5DF2\u5B89\u88C5\u5728', el.tagName, '\uFF08\u539F\u6309\u94AE\u6837\u5F0F\u4E0D\u53D8\uFF09');\n    }\n\n    function isOverlayCandidate(el) {\n      try {\n        if (!el || !el.tagName) return false;\n        if (['LINK', 'STYLE', 'SCRIPT', 'META', 'HEAD'].indexOf(el.tagName) !== -1) return false;\n        var rect = el.getBoundingClientRect ? el.getBoundingClientRect() : null;\n        if (!rect || rect.width < 20 || rect.height < 20) return false;\n        var style = window.getComputedStyle(el);\n        if (!style || style.display === 'none' || style.visibility === 'hidden') return false;\n        return true;\n      } catch (_) {\n        return false;\n      }\n    }\n\n    function scanAndMarkBuyNow() {\n      document.querySelectorAll([\n        '[data-gloveio-buy-now]',\n        'shopify-accelerated-checkout',\n        'shopify-pay-button',\n        '[data-shopify=\"payment-button\"]',\n        '[data-shopify=\"dynamic-checkout-button\"]',\n        '.shopify-payment-button',\n        '.shopify-payment-button__button',\n        '[id*=\"shopify-accelerated-checkout\"]',\n        '[data-testid*=\"payment\"]',\n        '[data-testid*=\"buy\"]',\n        '[data-test-id*=\"payment\"]',\n        '[data-test-id*=\"buy\"]',\n        '[data-button-type*=\"buy\"]',\n        '[class*=\"buy-now\"]',\n        '[class*=\"buy_it_now\"]',\n        '[class*=\"dynamic-checkout\"]',\n        'button',\n        'a[role=\"button\"]',\n        '[role=\"button\"]',\n        'input[type=\"button\"]',\n        'input[type=\"submit\"]',\n      ].join(',')).forEach(function (el) {\n        if (!markBuyNowElement(el)) return;\n        if (isShopifyNativeBuyNow(el)) overlayElement(el);\n      });\n    }\n\n    // \u4E3B\u9898\u81EA\u5DF1\u7684 Buy It Now \u4ECD\u8D70\u539F\u751F product form\uFF1B\u5728\u5176\u5904\u7406\u70B9\u51FB\u524D\u540C\u6B65\u8865\u9F50 attributes\u3002\n    document.addEventListener('click', function (e) {\n      try {\n        var themeManagedBuyNow = findThemeManagedBuyNowButton(e.target);\n        if (!themeManagedBuyNow) return;\n        injectFormFields();\n        _pendingWritePromise = prepareCheckoutIntent('theme-buy-now-intent');\n      } catch (_) {}\n    }, true);\n\n    document.addEventListener('click', function (e) {\n      try {\n        var buyNow = findMarkedBuyNowFromClickTarget(e.target);\n        if (!buyNow) return;\n        e.preventDefault();\n        e.stopPropagation();\n        e.stopImmediatePropagation();\n        startBuyNowPermalink(buyNow, 'marked-buy-now');\n      } catch (_) {}\n    }, true);\n\n    document.addEventListener('submit', function (e) {\n      try {\n        var form = e.target;\n        if (!form || !form.action || form.action.indexOf('/cart/add') === -1) return;\n\n        var submitter = e.submitter || document.activeElement;\n        var buyNow = submitter && findMarkedBuyNowFromClickTarget(submitter);\n        var action = form.action.toLowerCase();\n        var returnTo = '';\n        var returnToInput = form.querySelector('input[name=\"return_to\"]');\n        if (returnToInput && returnToInput.value) returnTo = returnToInput.value.toLowerCase();\n\n        if (!buyNow && !(action.indexOf('checkout') !== -1 || action.indexOf('return_to') !== -1 || returnTo.indexOf('checkout') !== -1)) return;\n\n        e.preventDefault();\n        e.stopPropagation();\n        e.stopImmediatePropagation();\n        startBuyNowPermalink(buyNow || form, 'buy-now-form-submit');\n      } catch (_) {}\n    }, true);\n\n    // \u591A\u8F6E\u626B\u63CF\uFF0C\u786E\u4FDD\u52A8\u6001\u52A0\u8F7D\u7684\u6309\u94AE\u4E5F\u88AB\u8986\u76D6\n    [100, 500, 1000, 2000, 3000].forEach(function (ms) {\n      setTimeout(function () {\n        if (document.body) scanAndMarkBuyNow();\n      }, ms);\n    });\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', function () {\n        scanAndMarkBuyNow();\n        observeBuyNowElements();\n        [100, 500, 1000].forEach(function (ms) {\n          setTimeout(scanAndMarkBuyNow, ms);\n        });\n      });\n    } else {\n      scanAndMarkBuyNow();\n      observeBuyNowElements();\n    }\n    // MutationObserver \u76D1\u542C\u52A8\u6001\u63D2\u5165\n    function observeBuyNowElements() {\n      if (typeof MutationObserver !== 'undefined' && document.body) {\n        new MutationObserver(function () {\n          setTimeout(scanAndMarkBuyNow, 100);\n        }).observe(document.body, { childList: true, subtree: true });\n      }\n    }\n  }\n\n  function checkoutCartDestination(value) {\n    var url = new URL(value, window.location.href);\n    if (url.origin !== window.location.origin || url.search || url.hash) return '';\n    var match = url.pathname.match(/^\\/([a-z]{2}(?:-[a-z]{2})?\\/)?checkout\\/?$/i);\n    return match ? url.origin + '/' + (match[1] || '') + 'cart' : '';\n  }\n\n  function usesCurrentWindow(element, event, submitter) {\n    var base = document.querySelector('base[target]');\n    var target = submitter && submitter.getAttribute('formtarget')\n      || element.getAttribute('target') || base && base.getAttribute('target') || '';\n    return (!target || target.toLowerCase() === '_self')\n      && !(event && (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button > 0));\n  }\n\n  function checkoutFormSubmitter(form, event) {\n    var control = event.submitter || document.activeElement;\n    if (!control || ['BUTTON', 'INPUT'].indexOf(control.tagName) === -1\n      || control.form && control.form !== form) return null;\n    var type = String(control.type || (control.tagName === 'BUTTON' ? 'submit' : '')).toLowerCase();\n    return type === 'submit' || type === 'image' ? control : null;\n  }\n\n  function addCheckoutControl(form, name, value) {\n    var control = document.createElement('input');\n    control.type = 'hidden';\n    control.name = name;\n    control.value = value;\n    form.appendChild(control);\n    return control;\n  }\n\n  function submitPreparedCheckoutForm(form, submitter, cartDestination) {\n    if (submitter && submitter.hasAttribute('formtarget')) {\n      form.target = submitter.getAttribute('formtarget');\n    }\n    if (cartDestination) {\n      form.action = cartDestination;\n      form.method = 'post';\n      injectFormAttribution(form);\n    }\n    if (submitter && submitter.name && !submitter.disabled) {\n      addCheckoutControl(form, submitter.name, submitter.value || '');\n    }\n    if (cartDestination && !hasSuccessfulCheckoutControl(form)) addCheckoutControl(form, 'checkout', 'Checkout');\n    HTMLFormElement.prototype.submit.call(form);\n  }\n\n  function hasSuccessfulCheckoutControl(form) {\n    return Array.prototype.some.call(form.elements, function (control) {\n      if (control.name !== 'checkout' || control.disabled) return false;\n      var type = String(control.type || '').toLowerCase();\n      if (['button', 'submit', 'reset', 'image'].indexOf(type) !== -1) return false;\n      return ['checkbox', 'radio'].indexOf(type) === -1 || control.checked;\n    });\n  }\n\n  function submitCartCheckoutLink(cartDestination) {\n    var form = document.createElement('form');\n    form.action = cartDestination;\n    form.method = 'post';\n    form.style.display = 'none';\n    document.body.appendChild(form);\n    submitPreparedCheckoutForm(form, null, cartDestination);\n  }\n\n  // ---------- 7. \u62E6\u622A <a> \u94FE\u63A5 ----------\n  function interceptCheckoutLinks() {\n    document.addEventListener('click', function (e) {\n      try {\n        var el = e.target;\n        while (el && el.tagName !== 'HTML') {\n          if (el.tagName === 'A' && el.href) {\n            var href = el.href || '';\n            var attribs = buildAttribs();\n            if (isCartPermalink(href) && Object.keys(attribs).length > 0) {\n              e.preventDefault();\n              e.stopImmediatePropagation();\n              window.location.href = appendAttribsToUrl(href, attribs);\n            } else if (/\\/checkout|checkouts\\/|return_to.*checkout/.test(href) && Object.keys(attribs).length > 0) {\n              if (!usesCurrentWindow(el, e) || el.hasAttribute('download')) return;\n              e.preventDefault();\n              e.stopImmediatePropagation();\n              var dest = href;\n              var cartDestination = checkoutCartDestination(href);\n              function navigate(saved) {\n                if (!saved && cartDestination && document.body) submitCartCheckoutLink(cartDestination);\n                else window.location.href = dest;\n              }\n              prepareCheckoutIntent('checkout-link').then(navigate, function () { navigate(false); });\n            }\n            break;\n          }\n          el = el.parentElement;\n        }\n      } catch (e) {}\n    }, true);\n  }\n\n  // ---------- 8. \u62E6\u622A\u8868\u5355\u63D0\u4EA4\u5230 /checkout ----------\n  function interceptCheckoutForms() {\n    document.addEventListener('submit', function (e) {\n      try {\n        var form = e.target;\n        if (form && form.action && /\\/checkout/.test(form.action)) {\n          var submitter = checkoutFormSubmitter(form, e);\n          if (!usesCurrentWindow(form, null, submitter)\n            || submitter && (submitter.hasAttribute('formaction') || submitter.hasAttribute('formmethod')\n              || submitter.hasAttribute('formenctype') || submitter.type === 'image')) return;\n          var attribs = buildAttribs();\n          if (Object.keys(attribs).length > 0) {\n            e.preventDefault();\n            var f = form;\n            var method = submitter && submitter.getAttribute('formmethod') || form.getAttribute('method') || form.method || 'get';\n            var cartDestination = String(method).toLowerCase() === 'post' ? checkoutCartDestination(form.action) : '';\n            function submit(saved) { submitPreparedCheckoutForm(f, submitter, saved ? '' : cartDestination); }\n            prepareCheckoutIntent('checkout-form').then(submit, function () { submit(false); });\n          }\n        }\n      } catch (e) {}\n    }, true);\n  }\n\n  // ---------- 9. \u8986\u76D6 location.href setter + assign/replace ----------\n  function interceptLocationMethods() {\n    function handleUrl(url, doNav) {\n      var s = String(url || '');\n      var attribs = buildAttribs();\n      if (!Object.keys(attribs).length) { doNav(s); return; }\n\n      if (isCartPermalink(s)) {\n        doNav(appendAttribsToUrl(s, attribs));\n      } else if (/\\/checkout|checkouts\\/|\\/?pay\\.shopify/.test(s)) {\n        var navigated = false;\n        var dest = s;\n        function go() { if (!navigated) { navigated = true; doNav(dest); } }\n        var t = setTimeout(go, 2500);\n        var writeP = _pendingWritePromise || prepareCheckoutIntent('location-nav');\n        _pendingWritePromise = null;\n        writeP.then(function () { clearTimeout(t); go(); }).catch(function () { clearTimeout(t); go(); });\n      } else {\n        doNav(s);\n      }\n    }\n\n    try {\n      var locDesc = Object.getOwnPropertyDescriptor(Location.prototype, 'href');\n      if (locDesc && locDesc.set && locDesc.configurable) {\n        Object.defineProperty(Location.prototype, 'href', {\n          get: locDesc.get,\n          set: function (url) {\n            var self = this;\n            handleUrl(url, function (u) { locDesc.set.call(self, u); });\n          },\n          configurable: true, enumerable: true,\n        });\n        console.log('[TT]  Location.prototype.href setter \u5DF2\u8986\u76D6');\n      }\n    } catch (e) {}\n\n    try {\n      var origAssign = window.location.assign.bind(window.location);\n      window.location.assign = function (url) { handleUrl(url, origAssign); };\n    } catch (e) {}\n\n    try {\n      var origReplace = window.location.replace.bind(window.location);\n      window.location.replace = function (url) { handleUrl(url, origReplace); };\n    } catch (e) {}\n\n    try {\n      var origPush = history.pushState.bind(history);\n      history.pushState = function (state, title, url) {\n        if (url) { var s = String(url); var a = buildAttribs(); if (Object.keys(a).length && isCartPermalink(s)) url = appendAttribsToUrl(s, a); }\n        return origPush(state, title, url);\n      };\n    } catch (e) {}\n\n    try {\n      var origRepl = history.replaceState.bind(history);\n      history.replaceState = function (state, title, url) {\n        if (url) { var s = String(url); var a = buildAttribs(); if (Object.keys(a).length && isCartPermalink(s)) url = appendAttribsToUrl(s, a); }\n        return origRepl(state, title, url);\n      };\n    } catch (e) {}\n  }\n\n  // ---------- 10. mousedown / touchstart \u901A\u7528\u9884\u5199\u5165 ----------\n  function preWriteOnCheckoutIntent() {\n    function checkAndWrite(el, shouldRecordEvent) {\n      var depth = 0;\n      while (el && el.tagName !== 'HTML' && depth < 8) {\n        depth++;\n        var name   = (el.getAttribute('name')        || '').toLowerCase();\n        var action = (el.getAttribute('data-action') || '').toLowerCase();\n        var cls    = (typeof el.className === 'string' ? el.className : '').toLowerCase();\n        var aria   = (el.getAttribute('aria-label')  || '').toLowerCase();\n        var text   = (el.textContent || '').trim().slice(0, 80).toLowerCase();\n        if (name === 'checkout' || action.indexOf('checkout') !== -1 ||\n            cls.indexOf('checkout') !== -1 || cls.indexOf('payment') !== -1 ||\n            aria.indexOf('checkout') !== -1 ||\n            text === 'buy it now' || text === '\u7ACB\u5373\u8D2D\u4E70' || text === '\u76F4\u63A5\u8D2D\u4E70' ||\n            text.indexOf('buy it now') === 0 || text.indexOf('\u7ACB\u5373\u8D2D\u4E70') === 0) {\n          _pendingWritePromise = shouldRecordEvent\n            ? prepareCheckoutIntent('checkout-click')\n            : writeCartAttribsAsync('mousedown-intent');\n          break;\n        }\n        el = el.parentElement;\n      }\n    }\n    document.addEventListener('mousedown', function (e) { try { checkAndWrite(e.target, false); } catch (_) {} }, true);\n    document.addEventListener('click', function (e) { try { checkAndWrite(e.target, true); } catch (_) {} }, true);\n    document.addEventListener('touchstart', function (e) {\n      try {\n        var t = e.touches && e.touches[0];\n        var el = t ? document.elementFromPoint(t.clientX, t.clientY) : null;\n        if (el) checkAndWrite(el, false);\n      } catch (_) {}\n    }, { passive: true, capture: true });\n  }\n\n  // ---------- 11. pagehide sendBeacon \u7EC8\u6781\u515C\u5E95 ----------\n  function writeOnPageLeave() {\n    window.addEventListener('pagehide', function () {\n      var attribs = buildAttribs();\n      if (!Object.keys(attribs).length) return;\n      try {\n        var blob = new Blob([JSON.stringify({ attributes: attribs })], { type: 'application/json' });\n        if (navigator.sendBeacon) navigator.sendBeacon('/cart/update.js', blob);\n      } catch (_) {}\n    });\n  }\n\n  // \u63D0\u4EA4\u76D1\u542C\u5148\u5B89\u88C5\uFF0C\u907F\u514D\u7B49\u5F85 DOMContentLoaded \u65F6\u9057\u6F0F\u4E3B\u9898\u7684\u76F4\u63A5\u63D0\u4EA4\u3002\n  interceptAttributionFormSubmissions();\n  interceptAcceleratedCheckout();\n  interceptCheckoutLinks();\n  interceptCheckoutForms();\n  interceptLocationMethods();\n  preWriteOnCheckoutIntent();\n  writeOnPageLeave();\n\n  // ---------- \u521D\u59CB\u5316 ----------\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', function () {\n      injectFormFields();\n      watchForForms();\n    });\n  } else {\n    injectFormFields();\n    watchForForms();\n  }\n})();\n"],
  "mappings": "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",
  "names": ["e"]
}
