{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/search-page.js?rev=6"],
  "sourcesContent": ["/* search-page.js \u2014 the results page only (sections/main-search.liquid).\n   - remembers a search that found something, for \"Recent searches\";\n   - recent-search chips under the box when there are no results to show;\n   - counts on the format / sale chips (from the ?view=count template), and\n     hides a chip that would lead to an empty page;\n   - typos: when the exact words find nothing, asks Shopify's typo-tolerant\n     suggestions for a correction and goes straight to its results, with\n     \"Showing results for caesar (you searched \u201Cceasar\u201D)\";\n   - the broad net: Shopify's own wide search for the same words, loaded\n     under the precise results (templates/search.broad.liquid), minus what\n     is already listed. */\n(function () {\n  'use strict';\n  var theme = window.theme || {};\n  var params = new URLSearchParams(window.location.search);\n\n  function str(key, fallback) { return (theme.strings && theme.strings[key]) || fallback; }\n  // Quotes too: the output also goes into href attributes.\n  function esc(s) {\n    return String(s == null ? '' : s).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;').replace(/'/g, '&#39;');\n  }\n  function scope() { return (window.theme || {}).searchScope; }\n  function route() { return (theme.routes && theme.routes.search) || '/search'; }\n  function resultsUrl(term) {\n    var sc = scope();\n    return sc ? sc.url(term) : route() + '?q=' + encodeURIComponent(term) + '&type=product&scope=all';\n  }\n  function page() { return document.querySelector('[data-search-page]'); }\n\n  function remember() {\n    var p = page();\n    var sc = scope();\n    if (!p || !sc) return;\n    var terms = p.getAttribute('data-terms');\n    if (terms && parseInt(p.getAttribute('data-count'), 10) > 0) sc.recent.add(terms);\n  }\n\n  function recentChips() {\n    var box = document.querySelector('[data-search-recent]');\n    var sc = scope();\n    if (!box || !sc) return;\n    var p = page();\n    var current = p ? (p.getAttribute('data-terms') || '').toLowerCase() : '';\n    var list = sc.recent.get().filter(function (t) { return t.toLowerCase() !== current; });\n    if (!list.length) { box.hidden = true; box.innerHTML = ''; return; }\n    box.innerHTML = '<span class=\"search-hero__trending-label\">' + esc(str('recentSearches', 'Recent searches')) + ':</span>' +\n      list.map(function (t) { return '<a class=\"search-chip\" href=\"' + esc(resultsUrl(t)) + '\">' + esc(t) + '</a>'; }).join('') +\n      '<button type=\"button\" class=\"search-chip__clear\" data-recent-clear>' + esc(str('clear', 'Clear')) + '</button>';\n    box.hidden = false;\n  }\n\n  document.addEventListener('click', function (e) {\n    if (!e.target.closest('[data-recent-clear]')) return;\n    var sc = scope();\n    if (sc) sc.recent.clear();\n    recentChips();\n  });\n\n  /* ---- chip counts ---- */\n  // Shared with the correction lookup in search-scope.js (one request per query).\n  function count(q) {\n    var sc = scope();\n    return sc ? sc.count(q) : Promise.resolve(null);\n  }\n\n  function fillCounts() {\n    // The row is re-rendered at scroll 0 after every tap; on a phone the\n    // chip just chosen could sit off the right edge.\n    var active = document.querySelector('.search-format.is-active');\n    if (active && active.parentNode.scrollWidth > active.parentNode.clientWidth) {\n      active.parentNode.scrollLeft = Math.max(0, active.offsetLeft - active.parentNode.offsetLeft - 20);\n    }\n    document.querySelectorAll('[data-count-q]').forEach(function (chip) {\n      var out = chip.querySelector('[data-count]');\n      if (!out || out.textContent.trim()) return; // the active chip comes filled in\n      count(chip.getAttribute('data-count-q')).then(function (n) {\n        if (n === null) return;\n        out.textContent = n;\n        if (n === 0 && !chip.classList.contains('is-active')) chip.hidden = true;\n      });\n    });\n  }\n\n  /* ---- typos: straight to the corrected results ----\n     A search box normally corrects before submitting (search-scope.js);\n     this covers links, and an Enter faster than the suggestions. */\n\n  /* Capped at 2.5s, like the submit-time correction in search-scope.js: on a\n     slow network \"Looking for close matches\u2026\" held the related pieces back\n     for as long as /search/suggest took. After the cap the page settles\n     (related pieces load) and a late correction is ignored rather than\n     yanking the shopper to another page. settle() runs once. */\n  var CORRECT_CAP = 2500;\n\n  function autocorrect() {\n    var empty = document.querySelector('[data-search-empty].is-pending');\n    if (!empty) return;\n    var raw = (empty.getAttribute('data-raw') || '').trim();\n    var done = false, timer = null;\n    function settle() {\n      if (done) return;\n      done = true;\n      clearTimeout(timer);\n      // facets.js may have replaced this block meanwhile; the new one runs its own check.\n      if (!empty.isConnected) return;\n      empty.classList.remove('is-pending');\n      broad();\n    }\n    // Never twice in a row, and never against \"search as typed\".\n    if (raw.length < 2 || params.has('corrected_from') || params.has('nocorrect')) { settle(); return; }\n    var sc = scope();\n    if (!sc) { settle(); return; }\n    timer = setTimeout(settle, CORRECT_CAP);\n    sc.correct(raw).then(function (fix) {\n      if (done) return;\n      if (!fix || !empty.isConnected) { settle(); return; }\n      done = true;\n      clearTimeout(timer);\n      window.location.replace(resultsUrl(fix) + '&corrected_from=' + encodeURIComponent(raw));\n    }).catch(settle);\n  }\n\n  function correctedNote() {\n    var from = (params.get('corrected_from') || '').trim();\n    var box = document.querySelector('[data-search-corrected]');\n    var p = page();\n    if (!from || !box || !p) return;\n    var to = p.getAttribute('data-terms') || '';\n    var asTyped = resultsUrl(from) + '&nocorrect=1';\n    // corrected_from is free text in the URL: shown short (a search is at\n    // most six words), always escaped, and %s filled with split/join, as\n    // replace() reads \"$&\" and \"$'\" in the text as patterns.\n    var shown = from.length > 60 ? from.slice(0, 59) + '\u2026' : from;\n    box.innerHTML = esc(str('showingFor', 'Showing results for')) + ' <strong>' + esc(to) + '</strong> (' +\n      esc(str('youSearched', 'you searched')) + ' \u201C' + esc(shown) + '\u201D). ' +\n      '<a href=\"' + esc(asTyped) + '\">' + esc(str('searchInstead', 'Search for \u201C%s\u201D instead').split('%s').join(shown)) + '</a>';\n    box.hidden = false;\n  }\n\n  /* ---- the broad net under the precise results ---- */\n  function path(href) {\n    try { return new URL(href, window.location.origin).pathname; } catch (e) { return href; }\n  }\n\n  function broad() {\n    var box = document.querySelector('[data-search-broad]');\n    if (!box || box.getAttribute('data-init')) return;\n    var empty = document.querySelector('[data-search-empty]');\n    // The no-results page waits for the spelling check: it may redirect.\n    if (empty && empty.classList.contains('is-pending')) return;\n    box.setAttribute('data-init', '1');\n\n    var grid = box.querySelector('[data-broad-grid]');\n    var more = box.querySelector('[data-broad-more]');\n    var format = box.getAttribute('data-format') || '';\n    var saleOnly = box.getAttribute('data-sale') === '1';\n    var next = route() + '?view=broad&type=product&q=' + encodeURIComponent(box.getAttribute('data-q') || '');\n    var shown = 0, busy = false, started = false;\n    // Merchant, 2026-10-20: at most 48 related pieces. The wide set runs to\n    // most of the catalogue for a common word, and its tail is noise.\n    var CAP = 48;\n\n    // Same rule as the chips' product_type clause: a whole word of the type,\n    // so \"framed\" is not \"Unframed Poster\".\n    function fits(item) {\n      if (saleOnly && item.getAttribute('data-sale') !== '1') return false;\n      if (!format) return true;\n      var sc = scope();\n      return !!sc && sc.tokens(item.getAttribute('data-type')).indexOf(format) !== -1;\n    }\n\n    function listed() {\n      var seen = {};\n      document.querySelectorAll('[data-product-grid] .card__media-link, [data-broad-grid] .card__media-link').forEach(function (a) {\n        seen[path(a.getAttribute('href'))] = true;\n      });\n      return seen;\n    }\n\n    function finish() {\n      busy = false;\n      more.classList.remove('is-loading');\n      more.hidden = !next;\n      if (shown > 0) {\n        box.classList.add('is-loaded');\n        if (empty) {\n          empty.classList.add('has-broad');\n          var p = page();\n          if (p) p.classList.add('search-page--has-broad');\n        }\n      } else if (!next) {\n        box.remove();\n      }\n    }\n\n    // Fetch 24 at a time until `want` new pieces are on screen: the first\n    // wide page is mostly the precise pieces again.\n    function load(want) {\n      if (busy || !next) return;\n      busy = true;\n      more.classList.add('is-loading');\n      var added = 0, fetches = 0;\n      (function step() {\n        if (gone()) { busy = false; return; }\n        fetch(next).then(function (r) { return r.text(); }).then(function (html) {\n          // Replaced by a chip tap while this page was on its way: drop it.\n          if (gone()) { busy = false; return; }\n          var doc = new DOMParser().parseFromString(html, 'text/html');\n          var pg = doc.querySelector('[data-broad-page]');\n          next = (pg && pg.getAttribute('data-next')) || null;\n          var seen = listed();\n          if (pg) {\n            pg.querySelectorAll('[data-broad-item]').forEach(function (item) {\n              var key = item.getAttribute('data-url');\n              if (!key || seen[key] || !fits(item) || shown >= CAP) return;\n              seen[key] = true;\n              var card = item.firstElementChild;\n              if (card) { grid.appendChild(card); added++; shown++; }\n            });\n          }\n          if (shown >= CAP) next = null;\n          fetches++;\n          if (added < want && next && fetches < 4) return step();\n          finish();\n        }).catch(function () { next = null; finish(); });\n      })();\n    }\n\n    more.addEventListener('click', function () { load(12); });\n\n    function preciseDone() { return !document.querySelector('[data-load-more]'); }\n    function closeToView() { return box.getBoundingClientRect().top < window.innerHeight + 700; }\n\n    var io = null;\n    function onScroll() {\n      if (started) { window.removeEventListener('scroll', onScroll); return; }\n      maybeStart();\n    }\n    /* A chip tap or sort re-renders the block (facets.js): this box is then\n       gone for good. Drop its listeners and stop its fetches; every tap used\n       to add one more facets:page listener and leave the old box loading\n       pages into nothing. run() calls gone() on the previous box. */\n    function stop() {\n      started = true;\n      next = null;\n      document.removeEventListener('facets:page', maybeStart);\n      window.removeEventListener('scroll', onScroll);\n      if (io) io.disconnect();\n    }\n    function gone() {\n      if (box.isConnected) return false;\n      stop();\n      return true;\n    }\n    function maybeStart() {\n      if (gone() || started || !preciseDone() || !closeToView()) return;\n      started = true;\n      document.removeEventListener('facets:page', maybeStart);\n      load(12);\n    }\n    previousBroad = gone;\n\n    if (box.hasAttribute('data-eager')) { started = true; load(12); return; }\n    if ('IntersectionObserver' in window) {\n      io = new IntersectionObserver(function (entries) {\n        if (entries.some(function (e) { return e.isIntersecting; })) maybeStart();\n        if (started) io.disconnect();\n      }, { rootMargin: '700px 0px' });\n      io.observe(box);\n    }\n    // The last precise page arriving (facets.js) or a plain scroll can be\n    // what makes it time to start.\n    document.addEventListener('facets:page', maybeStart);\n    window.addEventListener('scroll', onScroll, { passive: true });\n    maybeStart();\n  }\n\n  // gone() of the related block set up last (null before the first).\n  var previousBroad = null;\n\n  function run() {\n    if (previousBroad) previousBroad();\n    recentChips();\n    fillCounts();\n    autocorrect();\n    broad();\n  }\n\n  function init() {\n    remember();\n    correctedNote();\n    run();\n    // facets.js re-renders the results block on sort, chip and Back.\n    document.addEventListener('facets:updated', run);\n  }\n\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); }\n  else { init(); }\n})();\n"],
  "mappings": "CAWC,UAAY,CACX,aACA,IAAI,MAAQ,OAAO,OAAS,CAAC,EACzB,OAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAEvD,SAAS,IAAI,IAAK,SAAU,CAAE,OAAQ,MAAM,SAAW,MAAM,QAAQ,GAAG,GAAM,QAAU,CAExF,SAAS,IAAI,EAAG,CACd,OAAO,OAAO,GAAK,KAAO,GAAK,CAAC,EAAE,QAAQ,KAAM,OAAO,EAAE,QAAQ,KAAM,MAAM,EAAE,QAAQ,KAAM,MAAM,EAChG,QAAQ,KAAM,QAAQ,EAAE,QAAQ,KAAM,OAAO,CAClD,CACA,SAAS,OAAQ,CAAE,OAAQ,OAAO,OAAS,CAAC,GAAG,WAAa,CAC5D,SAAS,OAAQ,CAAE,OAAQ,MAAM,QAAU,MAAM,OAAO,QAAW,SAAW,CAC9E,SAAS,WAAW,KAAM,CACxB,IAAI,GAAK,MAAM,EACf,OAAO,GAAK,GAAG,IAAI,IAAI,EAAI,MAAM,EAAI,MAAQ,mBAAmB,IAAI,EAAI,yBAC1E,CACA,SAAS,MAAO,CAAE,OAAO,SAAS,cAAc,oBAAoB,CAAG,CAEvE,SAAS,UAAW,CAClB,IAAI,EAAI,KAAK,EACT,GAAK,MAAM,EACf,GAAI,GAAC,GAAK,CAAC,IACX,KAAI,MAAQ,EAAE,aAAa,YAAY,EACnC,OAAS,SAAS,EAAE,aAAa,YAAY,EAAG,EAAE,EAAI,GAAG,GAAG,OAAO,IAAI,KAAK,EAClF,CAEA,SAAS,aAAc,CACrB,IAAI,IAAM,SAAS,cAAc,sBAAsB,EACnD,GAAK,MAAM,EACf,GAAI,GAAC,KAAO,CAAC,IACb,KAAI,EAAI,KAAK,EACT,QAAU,GAAK,EAAE,aAAa,YAAY,GAAK,IAAI,YAAY,EAAI,GACnE,KAAO,GAAG,OAAO,IAAI,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,YAAY,IAAM,OAAS,CAAC,EACtF,GAAI,CAAC,KAAK,OAAQ,CAAE,IAAI,OAAS,GAAM,IAAI,UAAY,GAAI,MAAQ,CACnE,IAAI,UAAY,6CAA+C,IAAI,IAAI,iBAAkB,iBAAiB,CAAC,EAAI,WAC7G,KAAK,IAAI,SAAU,EAAG,CAAE,MAAO,gCAAkC,IAAI,WAAW,CAAC,CAAC,EAAI,KAAO,IAAI,CAAC,EAAI,MAAQ,CAAC,EAAE,KAAK,EAAE,EACxH,sEAAwE,IAAI,IAAI,QAAS,OAAO,CAAC,EAAI,YACvG,IAAI,OAAS,GACf,CAEA,SAAS,iBAAiB,QAAS,SAAU,EAAG,CAC9C,GAAK,EAAE,OAAO,QAAQ,qBAAqB,EAC3C,KAAI,GAAK,MAAM,EACX,IAAI,GAAG,OAAO,MAAM,EACxB,YAAY,EACd,CAAC,EAID,SAAS,MAAM,EAAG,CAChB,IAAI,GAAK,MAAM,EACf,OAAO,GAAK,GAAG,MAAM,CAAC,EAAI,QAAQ,QAAQ,IAAI,CAChD,CAEA,SAAS,YAAa,CAGpB,IAAI,OAAS,SAAS,cAAc,0BAA0B,EAC1D,QAAU,OAAO,WAAW,YAAc,OAAO,WAAW,cAC9D,OAAO,WAAW,WAAa,KAAK,IAAI,EAAG,OAAO,WAAa,OAAO,WAAW,WAAa,EAAE,GAElG,SAAS,iBAAiB,gBAAgB,EAAE,QAAQ,SAAU,KAAM,CAClE,IAAI,IAAM,KAAK,cAAc,cAAc,EACvC,CAAC,KAAO,IAAI,YAAY,KAAK,GACjC,MAAM,KAAK,aAAa,cAAc,CAAC,EAAE,KAAK,SAAU,EAAG,CACrD,IAAM,OACV,IAAI,YAAc,EACd,IAAM,GAAK,CAAC,KAAK,UAAU,SAAS,WAAW,IAAG,KAAK,OAAS,IACtE,CAAC,CACH,CAAC,CACH,CAWA,IAAI,YAAc,KAElB,SAAS,aAAc,CACrB,IAAI,MAAQ,SAAS,cAAc,gCAAgC,EACnE,GAAI,CAAC,MAAO,OACZ,IAAI,KAAO,MAAM,aAAa,UAAU,GAAK,IAAI,KAAK,EAClD,KAAO,GAAO,MAAQ,KAC1B,SAAS,QAAS,CACZ,OACJ,KAAO,GACP,aAAa,KAAK,EAEb,MAAM,cACX,MAAM,UAAU,OAAO,YAAY,EACnC,MAAM,GACR,CAEA,GAAI,IAAI,OAAS,GAAK,OAAO,IAAI,gBAAgB,GAAK,OAAO,IAAI,WAAW,EAAG,CAAE,OAAO,EAAG,MAAQ,CACnG,IAAI,GAAK,MAAM,EACf,GAAI,CAAC,GAAI,CAAE,OAAO,EAAG,MAAQ,CAC7B,MAAQ,WAAW,OAAQ,WAAW,EACtC,GAAG,QAAQ,GAAG,EAAE,KAAK,SAAU,IAAK,CAClC,GAAI,MACJ,IAAI,CAAC,KAAO,CAAC,MAAM,YAAa,CAAE,OAAO,EAAG,MAAQ,CACpD,KAAO,GACP,aAAa,KAAK,EAClB,OAAO,SAAS,QAAQ,WAAW,GAAG,EAAI,mBAAqB,mBAAmB,GAAG,CAAC,EACxF,CAAC,EAAE,MAAM,MAAM,CACjB,CAEA,SAAS,eAAgB,CACvB,IAAI,MAAQ,OAAO,IAAI,gBAAgB,GAAK,IAAI,KAAK,EACjD,IAAM,SAAS,cAAc,yBAAyB,EACtD,EAAI,KAAK,EACb,GAAI,GAAC,MAAQ,CAAC,KAAO,CAAC,GACtB,KAAI,GAAK,EAAE,aAAa,YAAY,GAAK,GACrC,QAAU,WAAW,IAAI,EAAI,eAI7B,MAAQ,KAAK,OAAS,GAAK,KAAK,MAAM,EAAG,EAAE,EAAI,SAAM,KACzD,IAAI,UAAY,IAAI,IAAI,aAAc,qBAAqB,CAAC,EAAI,YAAc,IAAI,EAAE,EAAI,cACtF,IAAI,IAAI,cAAe,cAAc,CAAC,EAAI,UAAO,IAAI,KAAK,EAAI,qBAChD,IAAI,OAAO,EAAI,KAAO,IAAI,IAAI,gBAAiB,mCAAyB,EAAE,MAAM,IAAI,EAAE,KAAK,KAAK,CAAC,EAAI,OACrH,IAAI,OAAS,GACf,CAGA,SAAS,KAAK,KAAM,CAClB,GAAI,CAAE,OAAO,IAAI,IAAI,KAAM,OAAO,SAAS,MAAM,EAAE,QAAU,OAAS,EAAG,CAAE,OAAO,IAAM,CAC1F,CAEA,SAAS,OAAQ,CACf,IAAI,IAAM,SAAS,cAAc,qBAAqB,EACtD,GAAI,CAAC,KAAO,IAAI,aAAa,WAAW,EAAG,OAC3C,IAAI,MAAQ,SAAS,cAAc,qBAAqB,EAExD,GAAI,OAAS,MAAM,UAAU,SAAS,YAAY,EAAG,OACrD,IAAI,aAAa,YAAa,GAAG,EAEjC,IAAI,KAAO,IAAI,cAAc,mBAAmB,EAC5C,KAAO,IAAI,cAAc,mBAAmB,EAC5C,OAAS,IAAI,aAAa,aAAa,GAAK,GAC5C,SAAW,IAAI,aAAa,WAAW,IAAM,IAC7C,KAAO,MAAM,EAAI,8BAAgC,mBAAmB,IAAI,aAAa,QAAQ,GAAK,EAAE,EACpG,MAAQ,EAAG,KAAO,GAAO,QAAU,GAGnC,IAAM,GAIV,SAAS,KAAK,KAAM,CAClB,GAAI,UAAY,KAAK,aAAa,WAAW,IAAM,IAAK,MAAO,GAC/D,GAAI,CAAC,OAAQ,MAAO,GACpB,IAAI,GAAK,MAAM,EACf,MAAO,CAAC,CAAC,IAAM,GAAG,OAAO,KAAK,aAAa,WAAW,CAAC,EAAE,QAAQ,MAAM,IAAM,EAC/E,CAEA,SAAS,QAAS,CAChB,IAAI,KAAO,CAAC,EACZ,gBAAS,iBAAiB,4EAA4E,EAAE,QAAQ,SAAU,EAAG,CAC3H,KAAK,KAAK,EAAE,aAAa,MAAM,CAAC,CAAC,EAAI,EACvC,CAAC,EACM,IACT,CAEA,SAAS,QAAS,CAIhB,GAHA,KAAO,GACP,KAAK,UAAU,OAAO,YAAY,EAClC,KAAK,OAAS,CAAC,KACX,MAAQ,GAEV,GADA,IAAI,UAAU,IAAI,WAAW,EACzB,MAAO,CACT,MAAM,UAAU,IAAI,WAAW,EAC/B,IAAI,EAAI,KAAK,EACT,GAAG,EAAE,UAAU,IAAI,wBAAwB,CACjD,OACU,MACV,IAAI,OAAO,CAEf,CAIA,SAAS,KAAK,KAAM,CAClB,GAAI,QAAQ,CAAC,MACb,MAAO,GACP,KAAK,UAAU,IAAI,YAAY,EAC/B,IAAI,MAAQ,EAAG,QAAU,GACxB,SAAS,MAAO,CACf,GAAI,KAAK,EAAG,CAAE,KAAO,GAAO,MAAQ,CACpC,MAAM,IAAI,EAAE,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,KAAK,CAAG,CAAC,EAAE,KAAK,SAAU,KAAM,CAEvE,GAAI,KAAK,EAAG,CAAE,KAAO,GAAO,MAAQ,CACpC,IAAI,IAAM,IAAI,UAAU,EAAE,gBAAgB,KAAM,WAAW,EACvD,GAAK,IAAI,cAAc,mBAAmB,EAC9C,KAAQ,IAAM,GAAG,aAAa,WAAW,GAAM,KAC/C,IAAI,KAAO,OAAO,EAYlB,GAXI,IACF,GAAG,iBAAiB,mBAAmB,EAAE,QAAQ,SAAU,KAAM,CAC/D,IAAI,IAAM,KAAK,aAAa,UAAU,EACtC,GAAI,GAAC,KAAO,KAAK,GAAG,GAAK,CAAC,KAAK,IAAI,GAAK,OAAS,KACjD,MAAK,GAAG,EAAI,GACZ,IAAI,KAAO,KAAK,kBACZ,OAAQ,KAAK,YAAY,IAAI,EAAG,QAAS,SAC/C,CAAC,EAEC,OAAS,MAAK,KAAO,MACzB,UACI,MAAQ,MAAQ,MAAQ,QAAU,EAAG,OAAO,KAAK,EACrD,OAAO,CACT,CAAC,EAAE,MAAM,UAAY,CAAE,KAAO,KAAM,OAAO,CAAG,CAAC,CACjD,GAAG,EACL,CAEA,KAAK,iBAAiB,QAAS,UAAY,CAAE,KAAK,EAAE,CAAG,CAAC,EAExD,SAAS,aAAc,CAAE,MAAO,CAAC,SAAS,cAAc,kBAAkB,CAAG,CAC7E,SAAS,aAAc,CAAE,OAAO,IAAI,sBAAsB,EAAE,IAAM,OAAO,YAAc,GAAK,CAE5F,IAAI,GAAK,KACT,SAAS,UAAW,CAClB,GAAI,QAAS,CAAE,OAAO,oBAAoB,SAAU,QAAQ,EAAG,MAAQ,CACvE,WAAW,CACb,CAKA,SAAS,MAAO,CACd,QAAU,GACV,KAAO,KACP,SAAS,oBAAoB,cAAe,UAAU,EACtD,OAAO,oBAAoB,SAAU,QAAQ,EACzC,IAAI,GAAG,WAAW,CACxB,CACA,SAAS,MAAO,CACd,OAAI,IAAI,YAAoB,IAC5B,KAAK,EACE,GACT,CACA,SAAS,YAAa,CAChB,KAAK,GAAK,SAAW,CAAC,YAAY,GAAK,CAAC,YAAY,IACxD,QAAU,GACV,SAAS,oBAAoB,cAAe,UAAU,EACtD,KAAK,EAAE,EACT,CAGA,GAFA,cAAgB,KAEZ,IAAI,aAAa,YAAY,EAAG,CAAE,QAAU,GAAM,KAAK,EAAE,EAAG,MAAQ,CACpE,yBAA0B,SAC5B,GAAK,IAAI,qBAAqB,SAAU,QAAS,CAC3C,QAAQ,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,cAAgB,CAAC,GAAG,WAAW,EACpE,SAAS,GAAG,WAAW,CAC7B,EAAG,CAAE,WAAY,WAAY,CAAC,EAC9B,GAAG,QAAQ,GAAG,GAIhB,SAAS,iBAAiB,cAAe,UAAU,EACnD,OAAO,iBAAiB,SAAU,SAAU,CAAE,QAAS,EAAK,CAAC,EAC7D,WAAW,CACb,CAGA,IAAI,cAAgB,KAEpB,SAAS,KAAM,CACT,eAAe,cAAc,EACjC,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,MAAM,CACR,CAEA,SAAS,MAAO,CACd,SAAS,EACT,cAAc,EACd,IAAI,EAEJ,SAAS,iBAAiB,iBAAkB,GAAG,CACjD,CAEI,SAAS,aAAe,UAAa,SAAS,iBAAiB,mBAAoB,IAAI,EACpF,KAAK,CACd,GAAG",
  "names": []
}
