{
  "version": 3,
  "sources": ["/cdn/shop/t/175/assets/utm-attribution.js?caf_v=20260904-shopify-consent-attribution-1"],
  "sourcesContent": ["/* CAF UTM attribution persistence:\n * - Captures first-touch + last-touch UTM/click IDs\n * - Persists to localStorage/cookie\n * - Syncs into Shopify cart attributes so attribution survives checkout\n */\n(function () {\n  'use strict';\n\n  if (window.__cafUtmAttributionInitialized) return;\n  window.__cafUtmAttributionInitialized = true;\n\n  var STORAGE_KEY = 'caf_utm_attribution_v1';\n  var COOKIE_KEY = 'caf_utm_attribution_v1';\n  var CART_SYNC_KEY = 'caf_utm_cart_sync_sig_v3';\n  var CART_NONEMPTY_KEYS_KEY = 'caf_utm_cart_nonempty_keys_v1';\n  var FIRST_TOUCH_DAYS = 90;\n  var LAST_TOUCH_DAYS = 30;\n  var COOKIE_DAYS = FIRST_TOUCH_DAYS;\n  var MAX_ATTR_LENGTH = 255;\n  // Checkout cards (BeOne checkout extension caf-free-shipping-addon, 2026-10-17): see captureCheckoutOffer().\n  var CHECKOUT_OFFER_KEY = 'caf_checkout_offer_v1';\n  var CHECKOUT_OFFER_ATTRIBUTE = 'caf_checkout_offer';\n  // `thankyou` (2026-10-18): the thank-you page's suggestions (\"Make one for someone else\"), caf_from=thankyou.\n  var CHECKOUT_OFFERS = ['fsadd', 'upsell-buy3', 'upsell-related', 'thankyou'];\n  var CHECKOUT_OFFER_MAX = 5;\n  var CHECKOUT_OFFER_TTL_MS = 24 * 60 * 60 * 1000;\n  var cartSyncPendingSignature = '';\n  var cartSyncQueued = false;\n  var klaviyoIdentifySent = false;\n  var privacyLoadInFlight = false;\n  var privacyLoadAttempts = 0;\n\n  var PARAMS = [\n    'utm_source',\n    'utm_medium',\n    'utm_campaign',\n    'utm_term',\n    'utm_content',\n    'utm_id',\n    'gclid',\n    'fbclid',\n    'msclkid',\n    'ttclid',\n    'twclid',\n    'li_fat_id',\n    'wbraid',\n    'gbraid',\n    'dclid',\n    'gad_source',\n    'gad_campaignid',\n    'srsltid',\n    'rdt_cid',\n    'scclid',\n    'epik',\n    'cto_bundle',\n    'cto_pld',\n    'ref'\n  ];\n\n  var PARAM_TO_KEY = {\n    utm_source: 'source',\n    utm_medium: 'medium',\n    utm_campaign: 'campaign',\n    utm_term: 'term',\n    utm_content: 'content',\n    utm_id: 'id',\n    gclid: 'gclid',\n    fbclid: 'fbclid',\n    msclkid: 'msclkid',\n    ttclid: 'ttclid',\n    twclid: 'twclid',\n    li_fat_id: 'li_fat_id',\n    wbraid: 'wbraid',\n    gbraid: 'gbraid',\n    dclid: 'dclid',\n    gad_source: 'gad_source',\n    gad_campaignid: 'gad_campaignid',\n    srsltid: 'srsltid',\n    rdt_cid: 'rdt_cid',\n    scclid: 'scclid',\n    epik: 'epik',\n    cto_bundle: 'cto_bundle',\n    cto_pld: 'cto_pld',\n    ref: 'ref'\n  };\n\n  var CLICK_ID_SOURCE_HINTS = [\n    { key: 'gclid', source: 'google', medium: 'cpc' },\n    { key: 'wbraid', source: 'google', medium: 'cpc' },\n    { key: 'gbraid', source: 'google', medium: 'cpc' },\n    { key: 'dclid', source: 'google', medium: 'cpc' },\n    { key: 'gad_source', source: 'google', medium: 'cpc' },\n    { key: 'gad_campaignid', source: 'google', medium: 'cpc' },\n    { key: 'msclkid', source: 'bing', medium: 'cpc' },\n    { key: 'fbclid', source: 'facebook', medium: 'social' },\n    { key: 'ttclid', source: 'tiktok', medium: 'social' },\n    { key: 'twclid', source: 'twitter', medium: 'social' },\n    { key: 'li_fat_id', source: 'linkedin', medium: 'social' },\n    { key: 'rdt_cid', source: 'reddit', medium: 'social' },\n    { key: 'scclid', source: 'snapchat', medium: 'social' },\n    { key: 'epik', source: 'pinterest', medium: 'social' },\n    { key: 'cto_bundle', source: 'criteo', medium: 'display' },\n    { key: 'cto_pld', source: 'criteo', medium: 'display' }\n  ];\n\n  function safeJsonParse(value) {\n    if (!value || typeof value !== 'string') return null;\n    try {\n      return JSON.parse(value);\n    } catch (error) {\n      return null;\n    }\n  }\n\n  function trimTo(value, maxLength) {\n    if (value == null) return '';\n    var text = String(value).trim();\n    if (text.length <= maxLength) return text;\n    return text.slice(0, maxLength);\n  }\n\n  function getCookie(name) {\n    var cookieName = name + '=';\n    // Guard: decodeURIComponent throws URIError on any malformed % sequence in the full\n    // cookie string. A single stray '%' in ANY first/third-party cookie must not kill\n    // attribution init (which would unbind cart UTM sync + hidden-input injection for the\n    // session). Fall back to the raw cookie string on decode failure.\n    var raw = document.cookie || '';\n    var decoded;\n    try {\n      decoded = decodeURIComponent(raw);\n    } catch (e) {\n      decoded = raw;\n    }\n    var parts = decoded.split(';');\n    for (var i = 0; i < parts.length; i += 1) {\n      var item = parts[i].trim();\n      if (item.indexOf(cookieName) === 0) {\n        return item.substring(cookieName.length);\n      }\n    }\n    return '';\n  }\n\n  function isPageAllowed() {\n    if (!window.CAFBotBlockerGate || typeof window.CAFBotBlockerGate.isPageAllowed !== 'function') return true;\n    return window.CAFBotBlockerGate.isPageAllowed();\n  }\n\n  function isTrackingAllowed() {\n    if (!window.CAFBotBlockerGate || typeof window.CAFBotBlockerGate.isTrackingAllowed !== 'function') return true;\n    return window.CAFBotBlockerGate.isTrackingAllowed();\n  }\n\n  function runWhenPageAllowed(callback) {\n    if (!window.CAFBotBlockerGate || typeof window.CAFBotBlockerGate.runWhenPageAllowed !== 'function') {\n      callback();\n      return;\n    }\n\n    window.CAFBotBlockerGate.runWhenPageAllowed(callback);\n  }\n\n  function runWhenTrackingAllowed(callback) {\n    if (!window.CAFBotBlockerGate || typeof window.CAFBotBlockerGate.runWhenTrackingAllowed !== 'function') {\n      callback();\n      return;\n    }\n\n    window.CAFBotBlockerGate.runWhenTrackingAllowed(callback);\n  }\n\n  function setCookie(name, value, days) {\n    var expires = '';\n    if (typeof days === 'number') {\n      var date = new Date();\n      date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n      expires = '; expires=' + date.toUTCString();\n    }\n    document.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/; SameSite=Lax';\n  }\n\n  function readStorage(key) {\n    try {\n      return window.localStorage.getItem(key);\n    } catch (error) {\n      return null;\n    }\n  }\n\n  function writeStorage(key, value) {\n    try {\n      window.localStorage.setItem(key, value);\n    } catch (error) {\n      // Ignore storage errors in private mode/quota limits.\n    }\n  }\n\n  function readCartNonEmptyKeys() {\n    var parsed = safeJsonParse(readStorage(CART_NONEMPTY_KEYS_KEY));\n    if (!Array.isArray(parsed)) return [];\n\n    var keys = [];\n    for (var i = 0; i < parsed.length; i += 1) {\n      if (typeof parsed[i] === 'string' && parsed[i]) keys.push(parsed[i]);\n    }\n    return keys;\n  }\n\n  function writeCartNonEmptyKeys(keys) {\n    try {\n      writeStorage(CART_NONEMPTY_KEYS_KEY, JSON.stringify(keys || []));\n    } catch (_error) {\n      // Ignore storage serialization errors.\n    }\n  }\n\n  function getNonEmptyAttributeKeys(attributes) {\n    var out = [];\n    if (!attributes) return out;\n\n    var keys = Object.keys(attributes);\n    for (var i = 0; i < keys.length; i += 1) {\n      var value = attributes[keys[i]];\n      if (value == null) continue;\n      if (String(value) !== '') out.push(keys[i]);\n    }\n    return out;\n  }\n\n  function keySet(keys) {\n    var set = Object.create(null);\n    for (var i = 0; i < keys.length; i += 1) {\n      set[keys[i]] = true;\n    }\n    return set;\n  }\n\n  function parseQueryParams() {\n    var result = {};\n    var search = window.location.search || '';\n    if (!search) return result;\n\n    var query = new URLSearchParams(search);\n    for (var i = 0; i < PARAMS.length; i += 1) {\n      var rawKey = PARAMS[i];\n      var value = query.get(rawKey);\n      if (!value) continue;\n      var normalizedKey = PARAM_TO_KEY[rawKey];\n      result[normalizedKey] = trimTo(value, 500);\n    }\n    return result;\n  }\n\n  function inferSourceFromClickIds(values) {\n    if (!values || typeof values !== 'object') return values;\n    if (values.source && values.medium) return values;\n\n    for (var i = 0; i < CLICK_ID_SOURCE_HINTS.length; i += 1) {\n      var hint = CLICK_ID_SOURCE_HINTS[i];\n      if (!values[hint.key]) continue;\n\n      var enriched = {};\n      var keys = Object.keys(values);\n      for (var k = 0; k < keys.length; k += 1) {\n        enriched[keys[k]] = values[keys[k]];\n      }\n\n      // Internal attribution only: do not rewrite the URL or send manual\n      // campaign params to GA. The raw click IDs remain the source of truth\n      // for ad platforms, while cart attributes stay readable in Shopify.\n      if (!enriched.source) enriched.source = hint.source;\n      if (!enriched.medium) enriched.medium = hint.medium;\n      return enriched;\n    }\n\n    return values;\n  }\n\n  function hasAttributionData(values) {\n    if (!values || typeof values !== 'object') return false;\n    var keys = Object.keys(values);\n    for (var i = 0; i < keys.length; i += 1) {\n      if (values[keys[i]]) return true;\n    }\n    return false;\n  }\n\n  function getReferrerHost() {\n    if (!document.referrer) return '';\n    try {\n      return new URL(document.referrer).hostname || '';\n    } catch (error) {\n      return '';\n    }\n  }\n\n  function createTouch(params) {\n    return {\n      params: params,\n      page_path: window.location.pathname || '/',\n      page_url: window.location.origin + window.location.pathname + window.location.search,\n      referrer_host: getReferrerHost(),\n      captured_at: new Date().toISOString()\n    };\n  }\n\n  function isTouchFresh(touch, days) {\n    if (!touch || !touch.captured_at) return false;\n    var capturedAt = Date.parse(touch.captured_at);\n    if (!isFinite(capturedAt)) return false;\n    return Date.now() - capturedAt <= days * 24 * 60 * 60 * 1000;\n  }\n\n  function normalizeAttributionPayload(payload) {\n    if (!payload || typeof payload !== 'object') return null;\n\n    if (!isTouchFresh(payload.first_touch, FIRST_TOUCH_DAYS)) {\n      delete payload.first_touch;\n    }\n    if (!isTouchFresh(payload.last_touch, LAST_TOUCH_DAYS)) {\n      delete payload.last_touch;\n    }\n\n    return payload.first_touch || payload.last_touch ? payload : null;\n  }\n\n  function readAttributionPayload() {\n    var localValue = readStorage(STORAGE_KEY);\n    var parsedLocal = safeJsonParse(localValue);\n    if (parsedLocal) return normalizeAttributionPayload(parsedLocal);\n\n    var cookieValue = getCookie(COOKIE_KEY);\n    return normalizeAttributionPayload(safeJsonParse(cookieValue));\n  }\n\n  function writeAttributionPayload(payload) {\n    if (!payload) return;\n    var serialized = JSON.stringify(payload);\n    writeStorage(STORAGE_KEY, serialized);\n    setCookie(COOKIE_KEY, serialized, COOKIE_DAYS);\n  }\n\n  var REFERRER_SOURCE_MAP = {\n    'google': { source: 'google', medium: 'organic' },\n    'facebook': { source: 'facebook', medium: 'organic' },\n    'bing': { source: 'bing', medium: 'organic' },\n    'instagram': { source: 'instagram', medium: 'organic' },\n    'pinterest': { source: 'pinterest', medium: 'organic' },\n    'youtube': { source: 'youtube', medium: 'organic' },\n    'tiktok': { source: 'tiktok', medium: 'organic' }\n  };\n\n  function inferSourceFromReferrer() {\n    var host = getReferrerHost();\n    if (!host) return null;\n    var lowerHost = host.toLowerCase();\n\n    var keys = Object.keys(REFERRER_SOURCE_MAP);\n    for (var i = 0; i < keys.length; i += 1) {\n      if (lowerHost.indexOf(keys[i]) !== -1) {\n        return { source: REFERRER_SOURCE_MAP[keys[i]].source, medium: REFERRER_SOURCE_MAP[keys[i]].medium };\n      }\n    }\n\n    // External referrer that doesn't match known sources.\n    // Normalize a leading 'www.' on both sides so apex<->www internal navigation\n    // (e.g. customizeaf.com -> www.customizeaf.com) is recognized as same-site and does\n    // not overwrite last_touch with a bogus self-referral.\n    var normReferrerHost = lowerHost.replace(/^www\\./, '');\n    var normCurrentHost = (window.location.hostname || '').toLowerCase().replace(/^www\\./, '');\n    if (normReferrerHost.indexOf(normCurrentHost) === -1) {\n      return { source: host, medium: 'referral' };\n    }\n\n    return null;\n  }\n\n  function updateAttributionFromUrl(currentPayload, queryParams) {\n    var payload = currentPayload && typeof currentPayload === 'object' ? currentPayload : {};\n    if (!payload.version) payload.version = 1;\n\n    var hasUtm = hasAttributionData(queryParams);\n    var paramsToUse = queryParams;\n\n    // When no UTM params, try to infer source from referrer\n    if (!hasUtm) {\n      var inferred = inferSourceFromReferrer();\n      if (inferred) {\n        paramsToUse = inferred;\n        hasUtm = true;\n      }\n    }\n\n    if (!hasUtm) {\n      if (payload.first_touch || payload.last_touch) return payload;\n      return null;\n    }\n\n    var touch = createTouch(inferSourceFromClickIds(paramsToUse));\n    payload.last_touch = touch;\n    payload.updated_at = touch.captured_at;\n\n    if (!payload.first_touch || !payload.first_touch.params || !hasAttributionData(payload.first_touch.params)) {\n      payload.first_touch = touch;\n    }\n\n    return payload;\n  }\n\n  function toCartAttributes(payload) {\n    if (!payload || typeof payload !== 'object') return {};\n\n    var firstTouch = payload.first_touch || {};\n    var lastTouch = payload.last_touch || {};\n    var firstParams = firstTouch.params || {};\n    var lastParams = lastTouch.params || {};\n\n    var attributes = {\n      utm_ft_source: firstParams.source || '',\n      utm_ft_medium: firstParams.medium || '',\n      utm_ft_campaign: firstParams.campaign || '',\n      utm_ft_term: firstParams.term || '',\n      utm_ft_content: firstParams.content || '',\n      utm_ft_id: firstParams.id || '',\n      utm_ft_gclid: firstParams.gclid || '',\n      utm_ft_fbclid: firstParams.fbclid || '',\n      utm_ft_msclkid: firstParams.msclkid || '',\n      utm_ft_ttclid: firstParams.ttclid || '',\n      utm_ft_twclid: firstParams.twclid || '',\n      utm_ft_li_fat_id: firstParams.li_fat_id || '',\n      utm_ft_wbraid: firstParams.wbraid || '',\n      utm_ft_gbraid: firstParams.gbraid || '',\n      utm_ft_dclid: firstParams.dclid || '',\n      utm_ft_gad_source: firstParams.gad_source || '',\n      utm_ft_gad_campaignid: firstParams.gad_campaignid || '',\n      utm_ft_srsltid: firstParams.srsltid || '',\n      utm_ft_rdt_cid: firstParams.rdt_cid || '',\n      utm_ft_scclid: firstParams.scclid || '',\n      utm_ft_epik: firstParams.epik || '',\n      utm_ft_cto_bundle: firstParams.cto_bundle || '',\n      utm_ft_cto_pld: firstParams.cto_pld || '',\n      utm_ft_ref: firstParams.ref || '',\n      utm_ft_referrer_host: firstTouch.referrer_host || '',\n      utm_ft_page: firstTouch.page_path || '',\n      utm_ft_at: firstTouch.captured_at || '',\n\n      utm_lt_source: lastParams.source || '',\n      utm_lt_medium: lastParams.medium || '',\n      utm_lt_campaign: lastParams.campaign || '',\n      utm_lt_term: lastParams.term || '',\n      utm_lt_content: lastParams.content || '',\n      utm_lt_id: lastParams.id || '',\n      utm_lt_gclid: lastParams.gclid || '',\n      utm_lt_fbclid: lastParams.fbclid || '',\n      utm_lt_msclkid: lastParams.msclkid || '',\n      utm_lt_ttclid: lastParams.ttclid || '',\n      utm_lt_twclid: lastParams.twclid || '',\n      utm_lt_li_fat_id: lastParams.li_fat_id || '',\n      utm_lt_wbraid: lastParams.wbraid || '',\n      utm_lt_gbraid: lastParams.gbraid || '',\n      utm_lt_dclid: lastParams.dclid || '',\n      utm_lt_gad_source: lastParams.gad_source || '',\n      utm_lt_gad_campaignid: lastParams.gad_campaignid || '',\n      utm_lt_srsltid: lastParams.srsltid || '',\n      utm_lt_rdt_cid: lastParams.rdt_cid || '',\n      utm_lt_scclid: lastParams.scclid || '',\n      utm_lt_epik: lastParams.epik || '',\n      utm_lt_cto_bundle: lastParams.cto_bundle || '',\n      utm_lt_cto_pld: lastParams.cto_pld || '',\n      utm_lt_ref: lastParams.ref || '',\n      utm_lt_referrer_host: lastTouch.referrer_host || '',\n      utm_lt_page: lastTouch.page_path || '',\n      utm_lt_at: lastTouch.captured_at || ''\n    };\n\n    var keys = Object.keys(attributes);\n    for (var i = 0; i < keys.length; i += 1) {\n      attributes[keys[i]] = trimTo(attributes[keys[i]], MAX_ATTR_LENGTH);\n    }\n\n    return attributes;\n  }\n\n  function getShopifySessionToken() {\n    return getCookie('_shopify_s') || '';\n  }\n\n  function canReadPlatformCookies() {\n    // Bot classification and shopper consent have separate owners. The retired\n    // bot-blocker:consent key must not override Shopify's current permission.\n    var gate = window.CAFBotBlockerGate;\n    if (!gate || typeof gate.isTrackingAllowed !== 'function' || !gate.isTrackingAllowed()) return false;\n    var privacy = window.Shopify && window.Shopify.customerPrivacy;\n    if (!privacy) return false;\n\n    try {\n      return (\n        typeof privacy.analyticsProcessingAllowed === 'function' &&\n        typeof privacy.marketingAllowed === 'function' &&\n        typeof privacy.saleOfDataAllowed === 'function' &&\n        privacy.analyticsProcessingAllowed() &&\n        privacy.marketingAllowed() &&\n        privacy.saleOfDataAllowed()\n      );\n    } catch (_error) {\n      return false;\n    }\n  }\n\n  function loadShopifyPrivacyApi() {\n    var shopify = window.Shopify;\n    if (shopify && shopify.customerPrivacy) return;\n    if (privacyLoadInFlight || privacyLoadAttempts >= 3 || !shopify || typeof shopify.loadFeatures !== 'function') return;\n    privacyLoadInFlight = true;\n    privacyLoadAttempts += 1;\n    try {\n      shopify.loadFeatures([{ name: 'consent-tracking-api', version: '0.1' }], function (error) {\n        privacyLoadInFlight = false;\n        if (error) return;\n        syncFreshCartAttributes();\n        pushKlaviyoIdentify(readAttributionPayload());\n      });\n    } catch (_error) {\n      privacyLoadInFlight = false;\n    }\n  }\n\n  function readPlatformCookieAttributes() {\n    // Capture vendor browser identifiers so server-side CAPI / Measurement\n    // Protocol can stitch events back to the browser session that created\n    // the cart. Names match the cookies set by Meta Pixel + Google tag.\n    //   _fbp  : Meta Pixel browser ID (set on init).\n    //   _fbc  : Meta Pixel click ID (set when fbclid is in URL).\n    //   _ga   : GA4 client ID cookie.\n    //   _gcl_au: Google Ads conversion linker.\n    // Criteo identifies via cto_bundle/cto_pld query params (already in\n    // PARAMS), no first-party pass-through cookie needed.\n    if (!canReadPlatformCookies()) {\n      return {\n        caf_fbp: '',\n        caf_fbc: '',\n        caf_ga: '',\n        caf_gcl_au: '',\n      };\n    }\n\n    return {\n      caf_fbp: trimTo(getCookie('_fbp'), MAX_ATTR_LENGTH),\n      caf_fbc: trimTo(getCookie('_fbc'), MAX_ATTR_LENGTH),\n      caf_ga: trimTo(getCookie('_ga'), MAX_ATTR_LENGTH),\n      caf_gcl_au: trimTo(getCookie('_gcl_au'), MAX_ATTR_LENGTH),\n    };\n  }\n\n  function readExperimentLabel() {\n    // Split-test arms of this browser, e.g. \"sheet.b|ship.a\" (snippets/caf-experiments.liquid;\n    // \"\" when no test is a split). null = the head script is missing \u2192 leave the cart alone.\n    try {\n      var experiments = window.CAFExperiments;\n      if (!experiments || typeof experiments.label !== 'function') return null;\n      return trimTo(experiments.label(), MAX_ATTR_LENGTH);\n    } catch (_error) {\n      return null;\n    }\n  }\n\n  // The checkout cards' \"Personalize it\" / \"See it\" open a product page with\n  // ?caf_from=checkout&caf_offer=<card> (fsadd, upsell-buy3, upsell-related). This page's product is\n  // remembered for a day as \"<card>:<productId>\" and sent as the cart attribute caf_checkout_offer, so\n  // BeOne can tag an order that holds that product exp-page-<card> (owner 2026-10-17: know who used\n  // the cards). Nothing is added to the line itself: that is TeeInBlue's.\n  function isCheckoutOffer(value) {\n    return CHECKOUT_OFFERS.indexOf(value) !== -1;\n  }\n\n  function isProductId(value) {\n    return /^[1-9][0-9]{0,19}$/.test(String(value));\n  }\n\n  function readPageProductId() {\n    var node = document.querySelector('script[data-caf-tracking-context]');\n    if (!node) return '';\n    var context = safeJsonParse(node.textContent || '');\n    var id = context && context.page === 'product' && context.product ? String(context.product.id) : '';\n    return isProductId(id) ? id : '';\n  }\n\n  function readCheckoutOffers() {\n    var parsed = safeJsonParse(readStorage(CHECKOUT_OFFER_KEY));\n    if (!Array.isArray(parsed)) return [];\n    var since = Date.now() - CHECKOUT_OFFER_TTL_MS;\n    var entries = [];\n    for (var i = 0; i < parsed.length; i += 1) {\n      var entry = parsed[i];\n      if (!entry || !isCheckoutOffer(entry.offer) || !isProductId(entry.product)) continue;\n      if (!(Number(entry.at) > since)) continue;\n      entries.push({ offer: entry.offer, product: String(entry.product), at: Number(entry.at) });\n    }\n    return entries.slice(-CHECKOUT_OFFER_MAX);\n  }\n\n  function captureCheckoutOffer() {\n    var query;\n    try {\n      query = new URLSearchParams(window.location.search || '');\n    } catch (_error) {\n      return;\n    }\n    var from = query.get('caf_from');\n    if (from !== 'checkout' && from !== 'thankyou') return;\n    var offer = query.get('caf_offer');\n    if (!isCheckoutOffer(offer)) return;\n    // The thank-you page sends only its own card; a checkout card never says `thankyou`.\n    if ((from === 'thankyou') !== (offer === 'thankyou')) return;\n    var product = readPageProductId();\n    if (!product) return;\n    var entries = readCheckoutOffers().filter(function (entry) {\n      return entry.product !== product;\n    });\n    entries.push({ offer: offer, product: product, at: Date.now() });\n    writeStorage(CHECKOUT_OFFER_KEY, JSON.stringify(entries.slice(-CHECKOUT_OFFER_MAX)));\n  }\n\n  function readCheckoutOfferAttribute() {\n    var entries = readCheckoutOffers();\n    var parts = [];\n    for (var i = 0; i < entries.length; i += 1) {\n      parts.push(entries[i].offer + ':' + entries[i].product);\n    }\n    return parts.join(',');\n  }\n\n  function buildAttributes() {\n    var stored = readAttributionPayload();\n    var attrs = toCartAttributes(stored);\n    var platform = readPlatformCookieAttributes();\n    var keys = Object.keys(platform);\n    for (var i = 0; i < keys.length; i += 1) {\n      attrs[keys[i]] = platform[keys[i]];\n    }\n    // `caf_exp` rides on the same cart write as the attribution keys: no request of its own, and\n    // the signature dedup below sends it again only when the label changes. An empty label is\n    // sent only to clear a label written earlier (same rule as every other key).\n    var experimentLabel = readExperimentLabel();\n    if (experimentLabel != null) attrs.caf_exp = experimentLabel;\n    // Sent once a checkout card opened a product page, and once more as \"\" to clear it a day later;\n    // carts that never saw a card get no such key (no extra write for them).\n    var checkoutOffer = readCheckoutOfferAttribute();\n    if (checkoutOffer || keySet(readCartNonEmptyKeys())[CHECKOUT_OFFER_ATTRIBUTE]) {\n      attrs[CHECKOUT_OFFER_ATTRIBUTE] = checkoutOffer;\n    }\n    return attrs;\n  }\n\n  function readKlaviyoIdentity() {\n    var node = document.querySelector('script[data-caf-klaviyo-identity]');\n    if (!node) return {};\n\n    try {\n      var identity = JSON.parse(node.textContent || '{}');\n      var email = identity && typeof identity.email === 'string' ? identity.email.trim() : '';\n      return email ? { email: email } : {};\n    } catch (_error) {\n      return {};\n    }\n  }\n\n  function canSendKlaviyoIdentify() {\n    var privacy = window.Shopify && window.Shopify.customerPrivacy;\n    if (!privacy) return false;\n\n    try {\n      var hasAnalyticsCheck = typeof privacy.analyticsProcessingAllowed === 'function';\n      var hasMarketingCheck = typeof privacy.marketingAllowed === 'function';\n\n      if (hasAnalyticsCheck && hasMarketingCheck) {\n        return privacy.analyticsProcessingAllowed() && privacy.marketingAllowed();\n      }\n      if (typeof privacy.userCanBeTracked === 'function') return privacy.userCanBeTracked();\n      if (hasAnalyticsCheck) return privacy.analyticsProcessingAllowed();\n      if (hasMarketingCheck) return privacy.marketingAllowed();\n    } catch (_error) {\n      return false;\n    }\n\n    return false;\n  }\n\n  function buildKlaviyoIdentifyProperties(payload) {\n    var props = readKlaviyoIdentity();\n    if (!payload) return props;\n\n    var firstTouch = payload.first_touch || {};\n    var lastTouch = payload.last_touch || {};\n    var ft = firstTouch.params || {};\n    var lt = lastTouch.params || {};\n\n    if (ft.source) props['CAF First Touch Source'] = ft.source;\n    if (ft.medium) props['CAF First Touch Medium'] = ft.medium;\n    if (ft.campaign) props['CAF First Touch Campaign'] = ft.campaign;\n    if (ft.term) props['CAF First Touch Term'] = ft.term;\n    if (ft.content) props['CAF First Touch Content'] = ft.content;\n    if (firstTouch.referrer_host) props['CAF First Touch Referrer'] = firstTouch.referrer_host;\n    if (firstTouch.captured_at) props['CAF First Touch Date'] = firstTouch.captured_at;\n\n    if (lt.source) props['CAF Last Touch Source'] = lt.source;\n    if (lt.medium) props['CAF Last Touch Medium'] = lt.medium;\n    if (lt.campaign) props['CAF Last Touch Campaign'] = lt.campaign;\n    if (lt.term) props['CAF Last Touch Term'] = lt.term;\n    if (lt.content) props['CAF Last Touch Content'] = lt.content;\n    if (lastTouch.referrer_host) props['CAF Last Touch Referrer'] = lastTouch.referrer_host;\n    if (lastTouch.captured_at) props['CAF Last Touch Date'] = lastTouch.captured_at;\n\n    return props;\n  }\n\n  function pushKlaviyoIdentify(payload) {\n    if (klaviyoIdentifySent) return true;\n\n    var props = buildKlaviyoIdentifyProperties(payload);\n    if (!Object.keys(props).length) return true;\n    if (!isTrackingAllowed()) return false;\n    if (!canSendKlaviyoIdentify()) return false;\n\n    var queue = null;\n    var legacyQueue = false;\n    if (window.klaviyo && typeof window.klaviyo.push === 'function') {\n      queue = window.klaviyo;\n    } else if (window._learnq && typeof window._learnq.push === 'function') {\n      queue = window._learnq;\n      legacyQueue = true;\n    }\n    if (!queue) return false;\n\n    try {\n      if (legacyQueue && props.email) {\n        props.$email = props.email;\n        delete props.email;\n      }\n      queue.push(['identify', props]);\n      klaviyoIdentifySent = true;\n      return true;\n    } catch (_error) {\n      // Ignore Klaviyo queue errors.\n      return false;\n    }\n  }\n\n  function scheduleKlaviyoIdentify(payload) {\n    if (pushKlaviyoIdentify(payload)) return;\n\n    var loaderTimer = null;\n    var finalTimer = null;\n    var cleanup = function () {\n      document.removeEventListener('visitorConsentCollected', retry);\n      document.removeEventListener('klaviyoOnsiteAdded', retry);\n      window.removeEventListener('bot-blocker:decision', retry);\n      if (loaderTimer) window.clearTimeout(loaderTimer);\n      if (finalTimer) window.clearTimeout(finalTimer);\n    };\n    var retry = function () {\n      if (!pushKlaviyoIdentify(payload)) return;\n      cleanup();\n    };\n\n    document.addEventListener('visitorConsentCollected', retry);\n    document.addEventListener('klaviyoOnsiteAdded', retry);\n    window.addEventListener('bot-blocker:decision', retry);\n    loaderTimer = window.setTimeout(retry, 1500);\n    finalTimer = window.setTimeout(retry, 5000);\n  }\n\n  function makeSignature(attributes) {\n    try {\n      return JSON.stringify({\n        attributes: attributes,\n        shopify_session: getShopifySessionToken()\n      });\n    } catch (error) {\n      return '';\n    }\n  }\n\n  function syncCartAttributes(attributes, options) {\n    if (!attributes || !Object.keys(attributes).length) return;\n    // Require an explicit page allow decision before writing attribution to the\n    // cart. A suppress-only decision still allows first-party attribution, but\n    // pending/block decisions do not write cart attributes.\n    if (!isPageAllowed()) return;\n\n    var signature = makeSignature(attributes);\n    if (!signature) return;\n\n    var shouldForce = Boolean(options && options.force);\n    var previousSignature = readStorage(CART_SYNC_KEY);\n    if (cartSyncPendingSignature === signature) return;\n    // Consent/decision changes can arrive while a prior cart write is in flight.\n    // Coalesce them and rebuild after settlement so the freshest state wins.\n    if (cartSyncPendingSignature) {\n      cartSyncQueued = true;\n      return;\n    }\n    if (!shouldForce && previousSignature === signature) return;\n\n    var payload = new URLSearchParams();\n    var keys = Object.keys(attributes);\n    var currentNonEmptyKeys = getNonEmptyAttributeKeys(attributes);\n    var previousNonEmptySet = keySet(readCartNonEmptyKeys());\n    for (var i = 0; i < keys.length; i += 1) {\n      var key = keys[i];\n      var value = attributes[key];\n      if (value == null) continue;\n      if (String(value) === '' && !previousNonEmptySet[key]) continue;\n      payload.append('attributes[' + key + ']', String(value));\n    }\n\n    if (!payload.toString()) return;\n\n    cartSyncPendingSignature = signature;\n    // A failed response can still follow an applied cart write. Keep attempted\n    // keys until success so a later consent withdrawal can clear them too.\n    for (var p = 0; p < currentNonEmptyKeys.length; p += 1) {\n      previousNonEmptySet[currentNonEmptyKeys[p]] = true;\n    }\n    writeCartNonEmptyKeys(Object.keys(previousNonEmptySet));\n\n    fetch('/cart/update.js', {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n        Accept: 'application/json'\n      },\n      credentials: 'same-origin',\n      body: payload.toString(),\n      keepalive: true\n    })\n      .then(function (response) {\n        if (!response.ok) throw new Error('Failed to sync cart attributes');\n        writeStorage(CART_SYNC_KEY, signature);\n        writeCartNonEmptyKeys(currentNonEmptyKeys);\n        if (cartSyncPendingSignature === signature) cartSyncPendingSignature = '';\n      })\n      .catch(function () {\n        if (cartSyncPendingSignature === signature) cartSyncPendingSignature = '';\n        writeStorage(CART_SYNC_KEY, '');\n        // Ignore network failures; hidden-input fallback still applies on form submit.\n      })\n      .then(function () {\n        if (!cartSyncQueued) return;\n        cartSyncQueued = false;\n        syncFreshCartAttributes();\n      });\n  }\n\n  function syncFreshCartAttributes(options) {\n    if (!isPageAllowed()) return;\n    syncCartAttributes(buildAttributes(), options);\n  }\n\n  function upsertHiddenInput(form, name, value) {\n    if (value == null) return;\n    var selector = 'input[name=\"' + name.replace(/\"/g, '\\\\\"') + '\"]';\n    var input = form.querySelector(selector);\n    if (!input) {\n      input = document.createElement('input');\n      input.type = 'hidden';\n      input.name = name;\n      form.appendChild(input);\n    }\n    input.value = value;\n  }\n\n  function injectAttributesIntoForm(form, attributes) {\n    if (!form || !attributes) return;\n    var keys = Object.keys(attributes);\n    var previousNonEmptySet = keySet(readCartNonEmptyKeys());\n    for (var i = 0; i < keys.length; i += 1) {\n      var key = keys[i];\n      var value = attributes[key];\n      if (value == null) continue;\n      if (String(value) === '' && !previousNonEmptySet[key] && !form.querySelector('input[name=\"attributes[' + key + ']\"]')) continue;\n      upsertHiddenInput(form, 'attributes[' + key + ']', value);\n    }\n  }\n\n  function bindCartLifecycleSync() {\n    // Belt-and-suspenders re-sync at moments where an allowed session is about to\n    // commit / navigate. Each call is cheap because syncCartAttributes\n    // signature-dedups: when nothing changed it short-circuits before\n    // hitting the network. Where it does fire, it catches the cases the\n    // init+deferred path can miss:\n    //   - User adds to cart after Bot Blocker has allowed the session \u2192\n    //     caf:add_to_cart re-sync attaches fresh platform cookies.\n    //   - Tee Buy Now redirects to /checkout via the SDK without form\n    //     submit \u2192 teeinblue-event-after-cart-added capture-phase sync\n    //     ensures UTM is on the cart before the SDK navigates away.\n    //   - User closes tab / iOS Safari pagehide where beforeunload doesn't\n    //     fire \u2192 pagehide + keepalive fetch gives one last sync attempt.\n\n    // Bridge dispatches caf:add_to_cart after every successful /cart/add.js\n    // (XHR + fetch patcher). Re-sync to refresh platform cookies that may\n    // have been set by Meta Pixel / Google tag in the seconds since init.\n    document.addEventListener('caf:add_to_cart', function () {\n      syncFreshCartAttributes();\n    });\n\n    // TeeInBlue cart-added (regular path \u2192 mini-cart drawer, Buy Now path \u2192\n    // /checkout). Capture phase so we run before any bubble-phase Tee handler\n    // opens UI or lets the SDK navigate the page.\n    document.addEventListener(\n      'teeinblue-event-after-cart-added',\n      function () {\n        syncFreshCartAttributes({ force: true });\n      },\n      true\n    );\n\n    // Final attempt on tab close / navigation away. keepalive: true on the\n    // syncCartAttributes fetch lets the request complete after the page is\n    // gone. pagehide is more reliable than beforeunload on mobile Safari.\n    window.addEventListener('pagehide', function () {\n      syncFreshCartAttributes();\n    });\n  }\n\n  function bindAttributionStateSync() {\n    // A decision may arrive after the initial five-second gate wait. Rebuild\n    // from current state; signature dedup keeps ordinary rechecks write-free.\n    window.addEventListener('bot-blocker:decision', function () {\n      syncFreshCartAttributes();\n    });\n    document.addEventListener('visitorConsentCollected', function () {\n      syncFreshCartAttributes();\n    });\n    window.addEventListener('storage', function (event) {\n      if (!event || (event.key !== 'bot-blocker:decision' && event.key !== 'bot-blocker:visitor' && event.key !== null)) return;\n      syncFreshCartAttributes();\n    });\n  }\n\n  function attachSubmitInjection() {\n    document.addEventListener(\n      'submit',\n      function (event) {\n        var form = event.target;\n        if (!form || !form.getAttribute) return;\n        if (!isPageAllowed()) return;\n        var action = form.getAttribute('action') || '';\n        if (action.indexOf('/cart') === -1 && action.indexOf('/checkout') === -1) return;\n        // Rebuild at submit time so platform cookies (_fbp set late by Meta\n        // Pixel, _ga, _gcl_au) reflect the freshest values right before\n        // checkout handoff.\n        var freshAttrs = buildAttributes();\n        injectAttributesIntoForm(form, freshAttrs);\n        if (form.querySelector('[data-cart-checkout-button], [name=\"checkout\"]')) {\n          syncCartAttributes(freshAttrs, { force: true });\n        }\n      },\n      true\n    );\n  }\n\n  function publishShopifyCustomerEvent(payload) {\n    if (!payload) return;\n    if (!window.Shopify || !window.Shopify.analytics || typeof window.Shopify.analytics.publish !== 'function') return;\n\n    try {\n      window.Shopify.analytics.publish('caf_attribution_ready', {\n        caf_attribution: payload\n      });\n    } catch (error) {\n      // Ignore analytics publish errors; cart attributes remain the checkout handoff.\n    }\n  }\n\n  function pushAttributionToDataLayer(payload) {\n    if (!payload) return;\n    window.cafAttribution = payload;\n    if (!isTrackingAllowed()) return;\n    if (window.dataLayer && Array.isArray(window.dataLayer)) {\n      window.dataLayer.push({\n        event: 'caf_attribution_ready',\n        caf_attribution: payload\n      });\n    }\n    publishShopifyCustomerEvent(payload);\n  }\n\n  captureCheckoutOffer();\n  var queryParams = parseQueryParams();\n  var storedPayload = readAttributionPayload();\n  var updatedPayload = updateAttributionFromUrl(storedPayload, queryParams);\n  if (updatedPayload) {\n    writeAttributionPayload(updatedPayload);\n  }\n\n  runWhenPageAllowed(function () {\n    syncFreshCartAttributes();\n  });\n\n  runWhenTrackingAllowed(function () {\n    pushAttributionToDataLayer(updatedPayload);\n  });\n  scheduleKlaviyoIdentify(updatedPayload);\n\n  // Meta Pixel sets _fbp/_fbc and Google tag sets _ga/_gcl_au asynchronously\n  // \u2014 usually within the first 1\u20132s. Re-sync once the tags have had time to\n  // run so the cart carries the freshest browser identifiers. Signature\n  // dedup short-circuits the fetch when nothing new is captured.\n  window.setTimeout(function () {\n    loadShopifyPrivacyApi();\n    syncFreshCartAttributes();\n  }, 3000);\n  window.setTimeout(loadShopifyPrivacyApi, 5000);\n\n  attachSubmitInjection();\n  bindAttributionStateSync();\n  bindCartLifecycleSync();\n  loadShopifyPrivacyApi();\n})();\n"],
  "mappings": "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",
  "names": ["queryParams"]
}
