{
  "version": 3,
  "sources": ["/cdn/shop/t/99/assets/nw-wardrobe.js?z=1792346763393"],
  "sourcesContent": ["/* Northwoofs wardrobe: designs saved in the personalizers (on this phone), the hanger in the header, the Wardrobe\n   drawer (shelves per kind, pick what to try, delete) and the fitting room overlay (nw-fitting worker in an iframe).\n   Personalizers talk to window.NWWardrobe; the fitting room talks through postMessage.\n   Storage: the list in localStorage, the preview pictures (PNG blobs) in IndexedDB. */\n(function () {\n  /* Shopify's language root (/de/ on German pages): cart and product data then come back in the shop language */\n  var ROOT = (window.Shopify && Shopify.routes && Shopify.routes.root) || '/';\n  /* a shop path (\"/products/x\") in the page's language: \"/de/products/x\" on German pages; already localized paths stay */\n  function loc(u) { return u && u.charAt(0) === '/' && ROOT !== '/' && u.indexOf(ROOT) !== 0 ? ROOT + u.slice(1) : u; }\n  if (window.NWWardrobe) return;\n  var FIT = 'https://fitting.northwoofs.com';\n  var LS = 'nw-wardrobe', MAX = 24;\n  var DE = /^de/i.test(document.documentElement.lang || '');\n  /* the wardrobe's words come from the language files (locales: nw.wardrobe, put on the page by snippets/nw-t);\n     with a mouse its hints say \"click\" instead of \"tap\" */\n  var WT = window.NWT.wardrobe, tf = window.NWT.fmt;\n  var CLICK = !!(window.matchMedia && matchMedia('(hover:hover) and (pointer:fine)').matches);\n  var T = {\n    title: WT.title, pieces: function (n) { return tf(n === 1 ? WT.pieces_one : WT.pieces_other, { count: n }); }, edit: WT.edit, done: WT.done,\n    pick: WT.pick, tryN: function (n) { return tf(WT.try_n, { count: n }); },\n    collars: WT.collars, tags: WT.tags, leashes: WT.leashes, deleted: WT.deleted, undo: WT.undo, frFail: WT.fitting_failed, again: WT.again,\n    ih: WT.intro_title, ip: WT.intro_text, s1: WT.step1, s1p: WT.step1_text, s2: CLICK ? WT.step2_click : WT.step2_tap, s2p: WT.step2_text, s3: WT.step3, s3p: WT.step3_text,\n    e1: CLICK ? WT.save_click : WT.save_tap,\n    inCartH: WT.in_cart_title, tryCart: WT.try_cart, popular: WT.popular, saved: WT.saved, close: WT.close, hanger: WT.title, addCart: WT.add_to_cart,\n    tryOne: WT.try_on, editD: WT.edit_design, delW: WT.delete_from_wardrobe, selAll: WT.select_all, delN: function (n) { return tf(WT.delete_n, { count: n }); }, nDel: function (n) { return tf(n === 1 ? WT.n_deleted_one : WT.n_deleted_other, { count: n }); }, inCartB: WT.in_cart, delQ: function (t) { return tf(WT.delete_title, { title: t }); }, onlyW: WT.only_wardrobe, staysC: WT.stays_in_cart, bothW: WT.both, goneB: WT.gone_both, tryIt: WT.try_it,\n    hintP: CLICK ? WT.hint_picked_click : WT.hint_picked_tap, hint: function (f) { return f ? (CLICK ? WT.hint_newest_click : WT.hint_newest_tap) : (CLICK ? WT.hint_last_click : WT.hint_last_tap); },\n    dGone: function (n) { return tf(n === 1 ? WT.dogs_removed_one : WT.dogs_removed_other, { count: n }); }, mixDel: function (n) { return tf(WT.mixed_deleted, { count: n }); },\n    who: WT.who, addDog: WT.add_dog, addYour: WT.add_your_dog, addYourS: WT.add_your_dog_text, pvNote: WT.privacy_note, pvLink: WT.privacy, tipT: WT.tips_title, tipSit: WT.sitting, tipStand: WT.standing, tipLie: WT.lying, tipGo: WT.choose_photo, dogN: function (n) { return tf(WT.dog_n, { number: n }); },\n    tryLast: WT.try_last, tryNew: WT.try_newest, tryOneN: function (t) { return tf(WT.try_one, { title: t }); }, tryThese: function (n) { return tf(WT.try_these, { count: n }); },\n    clear: WT.clear_picks, noTry: WT.cant_try, unpick: WT.unpick, more: function (n) { return tf(WT.more_n, { count: n }); }, fold: WT.fold, pileA: function (n) { return tf(WT.show_pile, { count: n }); }, added: WT.added, addFail: WT.add_failed, removed: WT.removed, rmCart: WT.remove_from_cart,\n    delAskT: function (n) { return tf(n === 1 ? WT.delete_ask_one : WT.delete_ask_other, { count: n }); }, delAskS: function (c, n) { return n === 1 ? WT.ask_it_in_cart : (c === 1 ? WT.ask_one_in_cart : tf(WT.ask_n_in_cart, { count: c })); },\n    keepC: WT.keep_them, keepC1: WT.keep_it, keepCs: WT.only_gone, bothC: WT.remove_them, bothC1: WT.remove_it, cancel: WT.cancel,\n    max: WT.max_at_once, fitting: WT.fitting_room\n  };\n  var POPULAR = ['the-tide-limited-quickslip-collar', 'northern-lights-silent-dog-id-tag', 'multi-quicklead'];\n  var IC = {\n    pen: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 20h4L19 9l-4-4L4 16v4Z\"/><path d=\"m14 6 4 4\"/></svg>',\n    cartx: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"20\" r=\"1.3\"/><circle cx=\"18\" cy=\"20\" r=\"1.3\"/><path d=\"M2.5 3h2.2l2.5 11.6a1.6 1.6 0 0 0 1.6 1.3h8.6a1.6 1.6 0 0 0 1.6-1.2L21 7H5.6\"/><path d=\"m11 6.5 4 4M15 6.5l-4 4\"/></svg>',\n    hang: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><g transform=\"translate(0 2.5)\"><path d=\"M12 8.2V7.1a2.3 2.3 0 1 0-2.3-2.3\"/><path d=\"M12 8.2 3.9 14.4c-1.1.9-.5 2.6.9 2.6h14.4c1.4 0 2-1.7.9-2.6z\"/></g></svg>',\n    trash: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 7h14M10 7V5h4v2M7 7l1 13h8l1-13\"/></svg>',\n    x: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6 6 18\"/></svg>',\n    ok: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m5 12.5 4.5 4.5L19 7.5\"/></svg>',\n    plus: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M12 6v12M6 12h12\"/></svg>',\n    fold: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M15 6l-6 6 6 6\"/></svg>',\n    cart: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"20\" r=\"1.3\"/><circle cx=\"18\" cy=\"20\" r=\"1.3\"/><path d=\"M2.5 3h2.2l2.5 11.6a1.6 1.6 0 0 0 1.6 1.3h8.6a1.6 1.6 0 0 0 1.6-1.2L21 7H5.6\"/></svg>'\n  };\n\n  /* ---------- storage ---------- */\n  /* the fitting room keeps this visitor's dogs on its server under a long random key, made here once and kept on\n     northwoofs.com (no name, no account): the server only ever stores a fingerprint of it */\n  function policyUrl() { return location.origin + ((window.Shopify && Shopify.routes && Shopify.routes.root) || '/') + 'policies/privacy-policy'; }\n  function visitorKey() {\n    var k = ''; try { k = localStorage.getItem('nw-fr-vk') || ''; } catch (e) { }\n    if (!/^[A-Za-z0-9_-]{32,64}$/.test(k)) {\n      var a = new Uint8Array(24); crypto.getRandomValues(a);\n      k = btoa(String.fromCharCode.apply(null, a)).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n      try { localStorage.setItem('nw-fr-vk', k); } catch (e) { }\n    }\n    return k;\n  }\n  /* the adapter (DoubleTrouble) and the leash tab (HandleMe) stay out of the wardrobe: the fitting room can't put them on the dog */\n  var OFF = ['doubletrouble', 'handleme'];\n  function offRack(props) { var c = null; try { c = JSON.parse((props || {})._collar || 'null'); } catch (e) { } return !!(c && OFF.indexOf(c.c) >= 0); }\n  function read() {\n    try { var j = JSON.parse(localStorage.getItem(LS) || 'null'); if (!j || !j.items) return { v: 1, items: [] }; j.items = j.items.filter(function (x) { return !offRack(x.props); }); return j; }\n    catch (e) { return { v: 1, items: [] }; }\n  }\n  function write(d) { try { localStorage.setItem(LS, JSON.stringify(d)); } catch (e) { } }\n  var DB = null;\n  function db() {\n    if (DB) return DB;\n    DB = new Promise(function (ok, no) {\n      try { var r = indexedDB.open('nw-wardrobe', 1); r.onupgradeneeded = function () { r.result.createObjectStore('p'); }; r.onsuccess = function () { ok(r.result); }; r.onerror = function () { no(r.error); }; }\n      catch (e) { no(e); }\n    });\n    return DB;\n  }\n  function idb(mode, fn) { return db().then(function (d) { return new Promise(function (ok, no) { var t = d.transaction('p', mode), s = t.objectStore('p'), r = fn(s); t.oncomplete = function () { ok(r && r.result); }; t.onerror = function () { no(t.error); }; }); }); }\n  /* Pictures are stored as their bytes, not as Blobs: Safari in a private window refuses to store a Blob in IndexedDB\n     (and said nothing), so saved tags had no picture there. If storing fails anyway, the picture is kept for this\n     visit (MEM). Pictures stored earlier as Blobs still read. */\n  var MEM = {};\n  function putPic(id, blob) {\n    if (!blob) return Promise.resolve();\n    MEM[id] = blob;\n    if (typeof Blob === 'undefined' || !(blob instanceof Blob)) return idb('readwrite', function (s) { return s.put(blob, id); }).catch(function () { });   /* not a picture (the fitting room's dog: an object) */\n    var bytes = blob.arrayBuffer ? blob.arrayBuffer() : new Promise(function (ok, no) { var r = new FileReader(); r.onload = function () { ok(r.result); }; r.onerror = no; r.readAsArrayBuffer(blob); });\n    return bytes.then(function (buf) { return idb('readwrite', function (s) { return s.put({ t: blob.type || 'image/png', b: buf }, id); }); }).catch(function () { });\n  }\n  function getPic(id) {\n    return idb('readonly', function (s) { return s.get(id); }).then(function (v) {\n      if (!v) return MEM[id] || null;\n      if (typeof Blob !== 'undefined' && v instanceof Blob) return v;\n      if (!(v.b instanceof ArrayBuffer)) return v;\n      return v.b ? new Blob([v.b], { type: v.t || 'image/png' }) : (MEM[id] || null);\n    }).catch(function () { return MEM[id] || null; });\n  }\n  function delPic(id) { delete MEM[id]; return idb('readwrite', function (s) { return s.delete(id); }).catch(function () { }); }\n  var ABASE = ((document.currentScript && document.currentScript.src) || '').replace(/[^\\/]*$/, '');\n  /* the step pictures carry Shopify's version (?v=), so a new picture shows at once instead of the CDN's old copy */\n  function stepPic(k, f) { var m = window.NWWR_STEPS || {}; return m[k] || ABASE + f; }\n  var URLS = {};\n  /* a saved design without a picture of its own (none are drawn in the browser any more): the server's drawing,\n     tag-look's for a tag (_Preview), nw-collar's for a collar or leash (from _collar) */\n  var LOOKH = 'https://look.northwoofs.com', COLH = 'https://collar.northwoofs.com', LOOKH_OLD = 'https://nw-tag-look.weathered-sea-bb20.workers.dev';   /* LOOKH_OLD: designs saved before still carry it */\n  function serverPic(it) {\n    var p = (it && it.props) || {};\n    if (typeof p._Preview === 'string' && (p._Preview.indexOf(LOOKH) === 0 || p._Preview.indexOf(LOOKH_OLD) === 0)) return flatLook(p._Preview);\n    if (p._collar) { try { return COLH + '/p/' + btoa(unescape(encodeURIComponent(p._collar))).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '') + '.png?w=400&bg=none'; } catch (e) { } }\n    return '';\n  }\n  function picUrl(id) {\n    if (isCartOnly(id)) { var ci = cartOnly().filter(function (x) { return x.id === id; })[0]; if (!ci) return Promise.resolve('');\n      var pp = ci.props, cdn = [pp['_Preview Front'], pp.Preview, pp._Preview].filter(function (v) { return typeof v === 'string' && /^https:\\/\\/cdn\\.shopify\\.com\\//.test(v); })[0];\n      return Promise.resolve(serverPic(ci) || cdn || ci.image); }\n    if (URLS[id]) return Promise.resolve(URLS[id]); return getPic(id).then(function (b) { if (!b) { var it = read().items.filter(function (x) { return x.sig === id; })[0]; return it ? serverPic(it) : ''; } URLS[id] = URL.createObjectURL(b); return URLS[id]; }); }\n\n  /* a collar's design (_collar, JSON) in one spelling: the builder writes its colours in the order they were picked, so\n     the same design came out as different text (an unchanged Done counted as a new design and \"updated\" the cart) */\n  function sameCollar(a, b) { return canonCollar(a) === canonCollar(b); }\n  function canonCollar(v) {\n    var o; try { o = JSON.parse(v); } catch (x) { return v; }\n    var srt = function (x) { if (!x || typeof x !== 'object' || Array.isArray(x)) return x; var r = {}; Object.keys(x).sort().forEach(function (k) { r[k] = srt(x[k]); }); return r; };\n    return JSON.stringify(srt(o));\n  }\n  function sigOf(e) {\n    var p = e.props || {}, keys = Object.keys(p).sort(), s = String(e.variant_id || '') + '|';\n    keys.forEach(function (k) { s += k + '=' + (k === '_collar' ? canonCollar(p[k]) : p[k]) + ';'; });\n    var h = 0; for (var i = 0; i < s.length; i++) h = (h * 31 + s.charCodeAt(i)) | 0;\n    return 'w' + (h >>> 0).toString(36);\n  }\n  var subs = [];\n  function emit() { var l = list(); subs.forEach(function (f) { try { f(l); } catch (e) { } }); headerBtn(); }\n  function list() { return read().items; }\n  function has(sig) { return read().items.some(function (x) { return x.sig === sig; }); }\n  function save(e, blob) {\n    if (offRack(e.props)) return Promise.resolve(null);\n    var d = read(), sig = e.sig || sigOf(e);\n    if (d.items.some(function (x) { return x.sig === sig; })) return Promise.resolve(sig);\n    var it = { id: sig, sig: sig, kind: e.kind, title: e.title, handle: e.handle, url: e.url, variant_id: e.variant_id, variant_title: e.variant_title || '',\n      price: e.price, product_type: e.product_type || '', props: e.props || {}, editUrl: e.editUrl || e.url, saved_at: Date.now() };\n    d.items.unshift(it);\n    while (d.items.length > MAX) { var old = d.items.pop(); delPic(old.id); delPic(old.id + '~b'); }\n    write(d); pendingSwing = true;\n    /* blob: one picture, or {front, back} for tags (the back is kept as <sig>~b and goes to the cart as _Preview Back) */\n    var pair = blob && typeof Blob !== 'undefined' && !(blob instanceof Blob) && 'front' in blob, front = pair ? blob.front : blob, back = pair ? blob.back : null;\n    return Promise.all([front ? putPic(sig, front) : null, back ? putPic(sig + '~b', back) : null]).then(function () { emit(); return sig; });\n  }\n  function remove(sig) { var d = read(), it = null; d.items = d.items.filter(function (x) { if (x.sig === sig) { it = x; return false; } return true; }); write(d); emit(); return it; }\n  function restore(it, idx) { var d = read(); d.items.splice(Math.min(idx, d.items.length), 0, it); write(d); emit(); }\n  function hardDelete(sig) { delPic(sig); delPic(sig + '~b'); if (URLS[sig]) { URL.revokeObjectURL(URLS[sig]); delete URLS[sig]; } }\n\n  /* ---------- cart ---------- */\n  var CART = null;\n  function loadCart() { return fetch(ROOT + 'cart.js', { headers: { Accept: 'application/json' } }).then(function (r) { return r.json(); }).then(function (c) { CART = c; return c; }).catch(function () { return CART || { items: [] }; }); }\n  /* the open fitting room hears about every cart change at once (a piece taken out of the cart leaves it too) */\n  var FRCT = null;\n  function frCart() { var fw = FR && FR.classList.contains('open') && frWin(); if (!fw || !CART) return; var cps = {}; list().forEach(function (i) { var l = lineOf(i); if (l) cps[i.sig] = lineCp(l); });\n    fw.postMessage(Object.assign({ nwFitting: 'incart', sigs: Object.keys(cps), cps: cps, keys: CART.items.map(function (c) { return c.key; }) }, priceMsg()), FIT); }\n  document.addEventListener('nw:cart', function (e) { CART = e.detail; clearTimeout(FRCT); FRCT = setTimeout(frCart, 300); PICKED = PICKED.filter(function (s) { return !isCartOnly(s) || cartLine(s.slice(2)); }); if (DRW && DRW.classList.contains('open')) renderDrawer(); });\n  function kindOfType(t, props) {\n    t = String(t || '').toLowerCase(); var c = null; try { c = JSON.parse((props || {})._collar || 'null'); } catch (e) { }\n    if (c && c.c === 'quicklead') return 'leash'; if (offRack(props)) return null;\n    if (/tag/.test(t)) return 'tag'; if (/collar/.test(t)) return 'collar'; if (/leash|lead/.test(t)) return 'leash'; return null;\n  }\n  function inCart(it) { return !!lineOf(it); }\n  /* The cart's tags, collars and leashes show in the wardrobe too, with the cart badge, in their own kind's row.\n     Not stored: they follow the cart, so they leave when they leave it. A saved piece that is also in the cart shows\n     once (the saved one). Their id is \"c~\" + the cart line's key. */\n  function cartOnly() {\n    if (!CART) return [];\n    var mine = list().map(lineOf).filter(Boolean).map(function (c) { return c.key; });\n    return CART.items.filter(function (c) { return kindOfType(c.product_type, c.properties) && mine.indexOf(c.key) < 0; }).map(function (c) {\n      return { id: 'c~' + c.key, sig: 'c~' + c.key, _cart: c.key, kind: kindOfType(c.product_type, c.properties), title: c.product_title, handle: c.handle,\n        url: '/products/' + c.handle, variant_id: c.variant_id, variant_title: c.variant_title || '', price: c.final_price, product_type: c.product_type || '',\n        props: Object.assign({}, c.properties || {}), image: c.image || '' };\n    });\n  }\n  var LS_HIDE = 'nw-wr-hide';\n  function hidden() { try { var a = JSON.parse(localStorage.getItem(LS_HIDE) || '[]'); return Array.isArray(a) ? a : []; } catch (e) { return []; } }\n  function hideKey(k, on) { var a = hidden().filter(function (x) { return x !== k && (!CART || CART.items.some(function (c) { return c.key === x; })); }); if (on !== false) a.push(k); try { localStorage.setItem(LS_HIDE, JSON.stringify(a.slice(-60))); } catch (e) { } }\n  function view() { var h = hidden(); return list().concat(cartOnly().filter(function (c) { return h.indexOf(c._cart) < 0; })); }\n  function isCartOnly(s) { return String(s || '').indexOf('c~') === 0; }\n  function cartLine(key) { return CART && CART.items.filter(function (c) { return c.key === key; })[0]; }\n  function lineOf(it) {\n    if (!CART) return null;\n    return CART.items.filter(function (c) {\n      if (c.variant_id !== it.variant_id) return false;\n      var p = c.properties || {};\n      if (it.props._collar) return sameCollar(p._collar, it.props._collar);\n      return Object.keys(it.props).every(function (k) { return k.charAt(0) === '_' || String(p[k] || '') === String(it.props[k] || ''); });\n    })[0] || null;\n  }\n  /* ---------- prices: every piece shows what the cart shows for it ----------\n     LIVE: variant id -> {p: price, c: compare-at}, read from the product's .js (cached for the page view), so a sale that\n     started or ended after the piece was saved shows correctly. Cart lines: the price after the order's discount code\n     (the 10% welcome code), the same number the cart drawer shows. */\n  var LIVE = {}, LIVEQ = {};\n  function live(handles) {\n    return Promise.all(handles.filter(function (h, i) { return h && handles.indexOf(h) === i; }).map(function (h) {\n      if (!LIVEQ[h]) LIVEQ[h] = fetch(ROOT + 'products/' + h + '.js').then(function (r) { return r.ok ? r.json() : null; }).then(function (pr) {\n        (pr && pr.variants || []).forEach(function (v) { LIVE[v.id] = { p: v.price, c: v.compare_at_price || 0 }; });\n      }).catch(function () { });\n      return LIVEQ[h];\n    }));\n  }\n  function lineCp(c) { return c ? Math.round((c.final_line_price - Math.max(0, (c.total_discount || 0) - (c.line_level_total_discount || 0))) / Math.max(1, c.quantity)) : null; }\n  function codeInfo() {\n    if (!CART) return null;\n    var a = (CART.cart_level_discount_applications || []).filter(function (x) { return x.type === 'discount_code' && x.value_type === 'percentage'; })[0];\n    if (a) return { pct: Math.round(+a.value) };\n    if ((CART.discount_codes || []).some(function (d) { return d.applicable !== false && /^(NW10-|NWHELLO)/i.test(d.code); })) return { pct: 10 };\n    return null;\n  }\n  /* now / was for a saved piece: the live price, with a compare-at (a sale set on the product) crossed out. A discount\n     code belongs to the cart, so it shows only in the cart, never here (same as the fitting room) */\n  function priceOf(i) {\n    var L = LIVE[i.variant_id] || {}, now = L.p != null ? L.p : i.price, was = L.c > now ? L.c : 0;\n    return { now: now, was: was };\n  }\n  function priceHTML(i) { var q = priceOf(i); return q.was > q.now ? '<em>' + money(q.now) + '</em><s>' + money(q.was) + '</s>' : money(q.now); }\n  /* what the fitting room needs to show the same prices */\n  function decorate(it) {\n    var L = LIVE[it.variant_id] || {}, ln = it._c ? (CART && CART.items.filter(function (c) { return c.key === it._c; })[0]) : (it._w ? lineOf(list().filter(function (x) { return x.sig === it._w; })[0] || { variant_id: -1, props: {} }) : null);\n    if (it._w && L.p != null) it.final_price = L.p;\n    it.compare_at = L.c || 0; it.code_price = lineCp(ln); it.inCart = !!ln;\n    return it;\n  }\n  function priceMsg() { return { code: codeInfo(), total: CART ? CART.total_price : null, count: CART ? CART.item_count : null }; }\n  /* quiet: the fitting room decides itself whether to show the cart (not when the customer has moved on meanwhile).\n     Shopify's OK alone is not trusted: the line has to be in the cart afterwards. If it is not, it is sent once more;\n     a refusal (sold out, too many) is not repeated. Taking a piece out of the cart waits for its add (PEND). */\n  var PEND = {};\n  function addToCart(it, quiet, qty) {\n    var p = addOnce(it, quiet, qty).then(function (r) { return r.ok || r.final ? r : addOnce(it, quiet, qty); }).then(function (r) {\n      if (!r.ok) throw new Error(r.why || 'cart');\n      if (window.NWCart && window.NWCart.refresh) window.NWCart.refresh(); return true; });\n    PEND[it.sig] = p; var clear = function () { if (PEND[it.sig] === p) delete PEND[it.sig]; }; p.then(clear, clear);\n    return p;\n  }\n  /* one try: { ok } when the line is in the cart afterwards; { ok: false, why } when Shopify refused it (no second try then) */\n  function addOnce(it, quiet, qty) {\n    var key = null, refused = null;\n    return Promise.all([getPic(it.id), it.kind === 'tag' ? getPic(it.id + '~b') : null]).then(function (bb) {\n      var blob = bb[0], back = bb[1], fd = new FormData(); fd.append('id', it.variant_id); fd.append('quantity', String(qty || 1));\n      Object.keys(it.props).forEach(function (k) { fd.append('properties[' + k + ']', it.props[k]); });\n      /* a design with a picture link (tag-look's tag, the collar's /p/ page) needs no upload */\n      var lk = /^https?:\\/\\//.test(it.props._Preview || it.props.Preview || '');\n      if (!lk && it.props._collar) { fd.append('properties[_Preview]', COLH + '/p/' + btoa(unescape(encodeURIComponent(it.props._collar))).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '')); lk = true; }\n      if (lk) { blob = null; back = null; }\n      if (blob) fd.append('properties[' + (it.kind === 'tag' ? '_Preview Front' : 'Preview') + ']', new File([blob], 'preview' + (blob.type === 'image/webp' ? '.webp' : '.png'), { type: blob.type || 'image/png' }));\n      if (back) fd.append('properties[_Preview Back]', new File([back], 'preview-back' + (back.type === 'image/webp' ? '.webp' : '.png'), { type: back.type || 'image/png' }));\n      var hd = { Accept: 'application/json' }; if (quiet) hd['X-NW-Quiet'] = '1';\n      return fetch(ROOT + 'cart/add.js', { method: 'POST', body: fd, headers: hd });\n    }).then(function (r) {\n      return r.json().catch(function () { return {}; }).then(function (j) { if (r.ok) key = j && (j.key || (j.items && j.items[0] && j.items[0].key)) || null; else if (r.status >= 400 && r.status < 500) refused = j && (j.description || j.message) || 'cart'; });\n    }, function () { /* no answer: whether it landed is read from the cart below */ })\n      .then(loadCart).then(function () {\n        var inC = (key && CART && CART.items.some(function (c) { return c.key === key; })) || !!lineOf(it);\n        return refused && !inC ? { ok: false, why: refused, final: true } : { ok: inC };\n      });\n  }\n  function money(c) { if (c == null) return ''; return (c / 100).toFixed(2).replace('.', ',') + '\\u00a0\u20AC'; }   /* as the shop writes prices: 29,90 \u20AC */\n\n  /* ---------- styles ---------- */\n  var css = document.createElement('style');\n  css.textContent = [\n    '.nw-wr-btn{position:relative;flex:none;width:40px;height:44px;display:flex;align-items:center;justify-content:center;padding:0}.nw-wr-btn[hidden],.nw-wr-btn .nw-wr-n[hidden]{display:none!important}.nw-wr-btn svg{width:24px;height:24px;display:block;flex:none}',\n    '.nw-wr-btn .nw-wr-n{position:absolute;right:-3px;top:2px;min-width:17px;height:17px;box-shadow:0 0 0 2px var(--color-background,#f4f3f1);line-height:1;border-radius:99px;background:#aa4513;color:#fff;font-size:11px;font-weight:800;display:grid;place-items:center;padding:0 4px;box-sizing:border-box;font-family:inherit}',\n    '@keyframes nwSwing{0%,100%{transform:rotate(0)}20%{transform:rotate(-16deg)}45%{transform:rotate(12deg)}70%{transform:rotate(-6deg)}}.nw-wr-btn.swing svg{animation:nwSwing .9s ease;transform-origin:50% 10%}',\n    /* the card each time something is saved (savedCard): last pieces stacked, the whole card opens the wardrobe */\n    '.nw-sc{position:fixed;z-index:2147483646;background:#fff;color:#2e2e2e;border-radius:16px;box-shadow:0 10px 26px rgba(0,0,0,.14),0 0 0 1px rgba(0,0,0,.04);display:flex;align-items:center;gap:12px;padding:10px 6px 13px 10px;overflow:hidden;cursor:pointer;font-family:inherit;box-sizing:border-box;animation:nwscIn .35s cubic-bezier(.2,1.3,.4,1) both;-webkit-tap-highlight-color:transparent;transition:opacity .2s,transform .2s}',\n    '.nw-sc.out{opacity:0;transform:translateY(6px)}.nw-sc:active{transform:scale(.985)}',\n    '@keyframes nwscIn{from{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:none}}',\n    '.nw-sc__st{position:relative;height:52px;flex:none}.nw-sc__p{position:absolute;top:0;width:46px;height:52px;border-radius:12px;background:#f5f4f2;box-shadow:0 0 0 2px #fff;display:grid;place-items:center;overflow:hidden}',\n    '.nw-sc__p img{max-width:88%;max-height:88%;object-fit:contain;display:block}',\n    '.nw-sc__t{flex:1;min-width:0;font-weight:800;font-size:15px;line-height:1.25}.nw-sc__t small{display:block;font-weight:700;font-size:13px;color:#8a8680;margin-top:2px}',\n    '.nw-sc__ar{flex:none;width:34px;height:34px;border-radius:50%;background:#f4f3f0;display:grid;place-items:center}.nw-sc__ar svg,.nw-sc__x svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}',\n    '.nw-sc__sep{width:1px;align-self:stretch;background:#eeebe6;margin:4px 0;flex:none}',\n    '.nw-sc__x{flex:none;width:32px;height:32px;border-radius:50%;border:0;background:none;color:#8a8680;padding:0;display:grid;place-items:center;cursor:pointer}.nw-sc__x svg{width:16px;height:16px}',\n    '.nw-sc__tm{position:absolute;left:0;right:0;bottom:0;height:3px;background:#f1eee9}.nw-sc__tm i{display:block;height:100%;background:#cfc8bf;transform-origin:left;animation:nwscT 5s linear both}',\n    '@keyframes nwscT{from{transform:scaleX(1)}to{transform:scaleX(0)}}@media (prefers-reduced-motion:reduce){.nw-sc{animation:none}}',\n    '.nw-wr-scrim{position:fixed;inset:0;background:rgba(30,28,26,.4);z-index:2147482000;opacity:0;transition:opacity .25s}.nw-wr-scrim.open{opacity:1}',\n    '.nw-wr{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);background:#f5f4f2;z-index:2147482001;transform:translateX(102%);transition:transform .28s ease;display:flex;flex-direction:column;font-family:inherit;color:#2e2e2e;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}',\n    '.nw-wr.open{transform:none}',\n    '.nw-wr__hd{flex:none;height:72px;display:flex;align-items:center;gap:8px;padding:0 16px 0 20px;border-bottom:1px solid #e8e4dd}',\n    '.nw-wr__hd b{font-size:22px;font-weight:900;white-space:nowrap}.nw-wr__hd small{font-size:15px;color:#6f6a64;margin-top:4px;white-space:nowrap}',\n    '.nw-wr__ed{margin-left:auto;background:none;border:0;font:inherit;font-weight:900;font-size:16px;color:#aa4513;padding:8px;cursor:pointer}',\n    '.nw-wr__x{width:44px;height:44px;border-radius:50%;background:#fff;border:0;display:grid;place-items:center;box-shadow:0 2px 8px rgba(0,0,0,.08);cursor:pointer;color:#2e2e2e;flex:none}.nw-wr__x svg{width:20px;height:20px}',\n    '.nw-wr__hd .nw-wr__x:first-of-type{margin-left:auto}.nw-wr__ed+.nw-wr__x{margin-left:0}',\n    '.nw-wr__body{flex:1;overflow-y:auto;padding-bottom:110px}',\n    '.nw-wr__hint{padding:12px 20px 0;font-size:15px;color:#6f6a64;font-weight:700}',\n    '.nw-wr__rc{margin:14px 20px 8px;width:calc(100% - 40px);background:#fff;border:0;border-radius:16px;box-shadow:0 2px 10px rgba(0,0,0,.06);display:flex;gap:12px;padding:8px 12px 8px 8px;align-items:center;cursor:pointer;font:inherit;color:#2e2e2e;text-align:left}',\n    '.nw-wr__rc img{width:52px;height:60px;object-fit:cover;border-radius:8px;background:#f5f4f2;flex:none;box-shadow:inset 0 0 0 1px #eee}',\n    '.nw-wr__rc b{display:block;font-size:16px;font-weight:900;line-height:1.25}.nw-wr__rc small{display:block;margin-top:4px;color:#6f6a64;font-weight:700;font-size:15px}',\n    '.nw-wr__rc i{margin-left:auto;display:grid;place-items:center;flex:none}.nw-wr__rc i svg{width:18px;height:18px;fill:none;stroke:#9a948c;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}',\n    '.nw-wr__lb{font-size:15px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:#6f6a64;padding:14px 20px 8px;display:flex;align-items:center;gap:.45em}.nw-wr__lb span{letter-spacing:0}.nw-wr__lb span::before{content:\"\\\\2022\";margin-right:.45em}',\n    '.nw-wr__rail{display:flex;gap:10px;padding:8px 20px 4px;overflow-x:auto;scrollbar-width:none}.nw-wr__rail::-webkit-scrollbar{display:none}',\n    '.nw-wr__pc{width:128px;flex:none;background:#fff;border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:4px;position:relative;cursor:pointer;transition:box-shadow .15s,opacity .2s}',\n    '.nw-wr__pc.on{box-shadow:inset 0 0 0 2.5px #2e2e2e}.nw-wr__pc.ghost{opacity:.25}',\n    '.nw-wr__pc.lock .im,.nw-wr__pc.lock b,.nw-wr__pc.lock .pr{opacity:.5}.nw-wr__inc{position:absolute;left:50%;top:-9px;transform:translateX(-50%);z-index:2;display:flex;align-items:center;gap:4px;background:#fff;border:1.5px solid #e2ded8;border-radius:99px;padding:3px 10px;font-size:13px;font-weight:800;color:#2e2e2e;white-space:nowrap}.nw-wr__inc svg{width:14px;height:14px}',\n    '.nw-wr__lk{display:flex;gap:12px;align-items:center;background:#fff;border-radius:14px;padding:12px 14px;margin:16px 20px 2px;font-size:16px;font-weight:400;color:#2e2e2e;line-height:1.4;box-shadow:0 1px 3px rgba(0,0,0,.05)}.nw-wr__lk .dot{flex:none;width:34px;height:34px;border-radius:50%;background:#f1efeb;display:grid;place-items:center}.nw-wr__lk svg{width:18px;height:18px;color:#2e2e2e}',\n    '.nw-wr__pc .im{height:78px;display:grid;place-items:center}.nw-wr__pc .im img{max-height:72px;max-width:100%;object-fit:contain;pointer-events:none}',\n    '.nw-wr__pc b{font-size:15px;font-weight:900;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nw-wr__pc span.pr{font-size:15px;font-weight:800;display:flex;gap:5px;align-items:baseline;flex-wrap:wrap}.nw-wr__pc span.pr s{font-size:13px;font-weight:400;color:#8a847c}.nw-wr__pc span.pr em{font-style:normal;color:#aa4513}',\n    '.nw-wr__pc .ic{position:absolute;right:-6px;top:-6px;width:22px;height:22px;border-radius:50%;background:#aa4513;box-shadow:0 0 0 2px #f5f4f2;color:#fff;display:grid;place-items:center}.nw-wr__pc .ic svg{width:13px;height:13px}',\n    '.nw-wr__sel{display:none!important;position:absolute;right:8px;top:8px;width:26px;height:26px;border-radius:50%;box-shadow:inset 0 0 0 2px #cfc9bf;background:#fff}',\n    \".nw-wr__sel.on{background:#aa4513 url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4 8-9'/%3E%3C/svg%3E\\\") center/14px no-repeat;box-shadow:0 0 0 2px #fff}\",\n    '.nw-wr__xb{position:absolute;right:-6px;top:-6px;width:30px;height:30px;border-radius:50%;background:#2e2e2e;color:#fff;border:0;display:grid;place-items:center;box-shadow:0 0 0 2px #fff;cursor:pointer;z-index:2}.nw-wr__xb svg{width:15px;height:15px}',\n    '@keyframes nwWg{0%,100%{transform:rotate(-1.3deg)}50%{transform:rotate(1.3deg)}}.nw-wr.editing .nw-wr__pc{animation:nwWg .32s ease-in-out infinite}.nw-wr.editing .nw-wr__pc:nth-child(2n){animation-delay:-.16s}',\n    /* the limit and a missing collar are shown on the pieces, never by rewriting the button: at 10 the rest fade back, a blocked tap wiggles */\n    '.nw-wr.full:not(.editing) .nw-wr__pc[data-s]:not(.on){opacity:.38;filter:grayscale(.5)}',\n    '@keyframes nwNo{0%,100%{transform:translateX(0) rotate(0)}20%{transform:translateX(-5px) rotate(-2deg)}40%{transform:translateX(5px) rotate(2deg)}60%{transform:translateX(-3px)}80%{transform:translateX(3px)}}.nw-wr .no{animation:nwNo .45s}',\n    '@keyframes nwPl{0%,100%{box-shadow:inset 0 0 0 2.5px #2e2e2e}50%{box-shadow:inset 0 0 0 2.5px #2e2e2e,0 0 0 5px rgba(46,46,46,.18)}}.nw-wr.pls .nw-wr__pc.on{animation:nwPl .6s}',\n        '.nw-wr__pill{position:absolute;left:50%;bottom:calc(100% + 12px);transform:translate(-50%,8px);background:#2e2e2e;color:#fff;font-size:15px;font-weight:800;padding:10px 18px;border-radius:99px;white-space:nowrap;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;box-shadow:0 6px 18px rgba(0,0,0,.18)}.nw-wr__pill.in{opacity:1;transform:translate(-50%,0)}',\n    '@media (prefers-reduced-motion:reduce){.nw-wr .no,.nw-wr.pls .nw-wr__pc.on{animation:none}}',\n    '.nw-wr__ft{position:absolute;left:0;right:0;bottom:0;background:#fff;padding:14px 20px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -6px 16px rgba(0,0,0,.05);transition:transform .2s}.nw-wr__ft.hid{transform:translateY(110%)}',\n    '.nw-wr__ft{z-index:7}',\n    /* picking a set: the hint, the dogs, a picked card (ring and tick, the rest of its row fades), the name in the row title */\n    '.nw-wr__body{padding-bottom:150px}',\n    '.nw-wr__hint{margin:14px 20px 0;padding:0;background:none;font-size:15px;line-height:22px;font-weight:400;color:#6f6a64}.nw-wr__hint b{color:#2e2e2e;font-weight:800}.nw-wr__hint{display:grid}.nw-wr__hint>span{grid-area:1/1}.nw-wr__hint>span.off{visibility:hidden}.nw-wr__lb::after{content:\"\";flex:none;width:0;height:26px;margin-left:-.45em}',\n    '.nw-wr__dg .nw-wr__sel{right:-3px;top:-3px;width:24px;height:24px}',\n    '.nw-wr__dogs{display:flex;gap:14px;align-items:flex-start;padding:6px 20px 8px;overflow-x:auto;scrollbar-width:none}.nw-wr__dogs::-webkit-scrollbar{display:none}',\n    '.nw-wr__dw{display:flex;flex-direction:column;align-items:center;gap:6px;flex:none}.nw-wr__dn{font-size:15px;font-weight:800;line-height:1.2;color:#2e2e2e;max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}',\n    '.nw-wr__dg{position:relative;width:64px;height:64px;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.1);padding:0;background:#efebe5;cursor:pointer;flex:none;box-sizing:content-box}.nw-wr__dg::after{content:\"\";position:absolute;inset:-4px}',\n    '.nw-wr__dg img{width:100%;height:100%;object-fit:cover;display:block;border-radius:50%}.nw-wr__dg.on{box-shadow:0 0 0 2px #2e2e2e,0 2px 8px rgba(0,0,0,.1)}',\n    '.nw-wr__dg.add{background:#fff;display:grid;place-items:center;font:inherit;font-weight:900;font-size:28px;line-height:1;color:#2e2e2e}',\n    '.nw-wr__dg.sil{background:#efebe5}.nw-wr__dg.sil svg{width:42px;height:42px}.nw-wr__dg.sil i{position:absolute;right:-3px;bottom:-3px;width:24px;height:24px;border-radius:50%;background:#2e2e2e;color:#fff;font-style:normal;font-size:17px;line-height:1;display:grid;place-items:center;border:2px solid #fff}',\n    '.nw-wr__first{flex:1;min-width:0;font-size:15px;line-height:22px;font-weight:400;color:#6f6a64}.nw-wr__first b{display:block;color:#2e2e2e;font-size:16px;line-height:22px;font-weight:800}',\n    /* no dog yet: one white card, like the pieces below it, the whole card opens the photo picker */\n    '.nw-tips{position:fixed;inset:0;z-index:2147483000;background:rgba(46,46,46,.28);opacity:0;transition:opacity .22s;font-family:inherit;color:#2e2e2e}.nw-tips.on{opacity:1}',\n    '.nw-tips__sh{position:absolute;left:0;right:0;bottom:0;max-width:560px;margin:0 auto;background:#fff;border-radius:22px 22px 0 0;box-shadow:0 -10px 30px rgba(0,0,0,.16);padding:10px 20px calc(22px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px;transform:translateY(105%);transition:transform .25s ease}.nw-tips.on .nw-tips__sh{transform:none}',\n    '.nw-tips__gr{width:40px;height:5px;border-radius:99px;background:#e2ddd6;margin:0 auto}.nw-tips__t{margin:0;font-size:20px;line-height:25px;font-weight:900}',\n    '.nw-tips__g{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.nw-tips__i{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:15px;line-height:19px;font-weight:700;text-align:center}',\n    '.nw-tips__p{width:100%;aspect-ratio:1;border-radius:12px;background:#f5f4f2;display:grid;place-items:center;position:relative}.nw-tips__p svg{width:78%;height:78%;color:var(--nw-sil,#6f6a64)}',\n    '.nw-tips__m{position:absolute;right:6px;top:6px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;color:#fff}.nw-tips__m svg{width:12px;height:12px;fill:none;stroke:#fff;stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}.nw-tips__m.ok{background:#3f6b4f}.nw-tips__m.no{background:#b3261e}',\n    '.nw-tips__go{height:52px;border:0;border-radius:10px;background:#aa4513;color:#fff;font:inherit;font-weight:900;font-size:16px;letter-spacing:.04em;text-transform:uppercase;display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer}.nw-tips__go svg{width:20px;height:20px;fill:none;stroke:#fff;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}',\n    '.nw-tips__pv{margin:0;font-size:15px;line-height:22px;font-weight:400;color:#6f6a64}.nw-tips__pv a{color:#2e2e2e;font-weight:700;text-decoration:underline;text-underline-offset:3px}',\n    '.nw-wr__addc{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:12px;background:#fff;border:0;border-radius:14px;padding:20px 18px 22px;font:inherit;text-align:center;cursor:pointer;color:inherit}',\n    '.nw-wr__addc .nw-wr__dg.sil{width:80px;height:80px}.nw-wr__addc .nw-wr__dg.sil svg{width:52px;height:52px}.nw-wr__addc .nw-wr__dg.sil i{width:28px;height:28px;font-size:19px;right:-4px;bottom:-4px}',\n    '.nw-wr__dg svg.nw-wr__smp,.nw-wr__addc .nw-wr__dg.sil svg.nw-wr__smp{width:100%;height:100%;display:block}.nw-wr__addc .nw-wr__first{flex:none}.nw-wr__addc .nw-wr__first b{font-size:18px;line-height:24px;margin-bottom:2px}',\n    '.nw-wr__addc .nw-wr__dg{box-shadow:none;border-color:#efebe5;cursor:inherit}.nw-wr__addc .nw-wr__dg::after{display:none}',\n    '.nw-wr__pk{margin-left:auto;letter-spacing:0;text-transform:none;font:inherit;font-size:14px;font-weight:900;color:#2e2e2e;background:#fff;border:0;border-radius:99px;padding:3px 4px 3px 11px;display:flex;align-items:center;gap:6px;cursor:pointer;max-width:58%;min-width:0}',\n    '.nw-wr__pk em{font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nw-wr__pk i{width:20px;height:20px;border-radius:50%;background:#efebe5;display:grid;place-items:center;flex:none}.nw-wr__pk i svg{width:11px;height:11px}',\n    '.nw-wr__pc{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.nw-wr__pc.dim,.nw-wr__dw.dim{opacity:.8}',\n    /* the cart on a card: white with + to add, rust with a tick when it is in the cart */\n    '.nw-wr__cb{position:absolute;right:-7px;top:-7px;width:32px;height:32px;border-radius:50%;background:#fff;border:1.5px solid #d8d2c9;color:#2e2e2e;display:grid;place-items:center;padding:0;cursor:pointer;z-index:2;box-shadow:0 1px 4px rgba(0,0,0,.12);box-sizing:border-box}.nw-wr__cb::after{content:\"\";position:absolute;inset:-6px}',\n    '.nw-wr__cb>svg{width:16px;height:16px}.nw-wr__cb i{position:absolute;right:-4px;top:-4px;width:16px;height:16px;border-radius:50%;background:#2e2e2e;color:#fff;display:grid;place-items:center;border:1.5px solid #fff;box-sizing:border-box}.nw-wr__cb i svg{width:9px;height:9px}',\n    '.nw-wr__cb.in{background:#aa4513;border-color:#aa4513;color:#fff}.nw-wr__cb.in i{background:#fff;color:#aa4513}.nw-wr__cb.busy{opacity:.55;pointer-events:none}.nw-wr__cb.gone{transform:scale(0);opacity:0;transition:transform .18s ease-in,opacity .18s;pointer-events:none}.nw-wr__cb.pop{animation:nwCbIn .36s ease-out}.nw-wr__pc.nw-wr__wait{animation:nwWait .3s ease-out both}@keyframes nwWait{to{transform:translateY(-5px);box-shadow:0 10px 18px rgba(0,0,0,.12)}}@media (prefers-reduced-motion:reduce){.nw-wr__cb.gone,.nw-wr__cb{transition:none}.nw-wr__cb.pop,.nw-wr__pc.nw-wr__wait{animation:none}}@keyframes nwCbIn{0%{transform:scale(0)}60%{transform:scale(1.2)}100%{transform:none}}',\n    /* cart pieces folded into a pile at the end of a row: the top card with the edges of the others behind it */\n    '.nw-wr__pile{margin-right:28px;box-shadow:13px 0 0 -6px #fff,13px 0 8px -5px rgba(0,0,0,.18),26px 0 0 -12px #fff,26px 0 8px -11px rgba(0,0,0,.15)}.nw-wr__pile .nw-wr__cb{pointer-events:none}.nw-wr__pile.on{box-shadow:inset 0 0 0 2.5px #2e2e2e,13px 0 0 -6px #fff,13px 0 8px -5px rgba(0,0,0,.18),26px 0 0 -12px #fff,26px 0 8px -11px rgba(0,0,0,.15)}.nw-wr__more{font-size:15px;font-weight:800;color:#6f6a64}',\n    '.nw-wr__hdl{flex:none;width:36px;align-self:stretch;border:0;border-radius:12px;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.08);display:grid;place-items:center;padding:0;cursor:pointer;color:#2e2e2e}.nw-wr__hdl svg{width:22px;height:22px;transform:rotate(180deg)}.nw-wr__hdl.turn svg{animation:nwHdl .45s cubic-bezier(.3,1.3,.5,1)}@keyframes nwHdl{from{transform:rotate(0)}to{transform:rotate(180deg)}}',\n    '.nw-wr__rail{padding-top:10px}',\n    /* the button: small pictures of exactly what goes on, then its words */\n    '.nw-wr__clr{display:block;margin:-4px auto 8px;border:0;background:none;font:inherit;font-size:15px;font-weight:800;color:#6f6a64;text-decoration:underline;cursor:pointer;padding:2px 6px}',\n    '.nw-wr__go{padding:0 12px;gap:10px}.nw-wr__go .stk{display:flex;flex:none}.nw-wr__go .stk>span{width:28px;height:28px;border-radius:6px;background:#fff;margin-left:-9px;box-shadow:0 1px 3px rgba(0,0,0,.25);display:grid;place-items:center;overflow:hidden}.nw-wr__go .stk>span:first-child{margin-left:0}',\n    '.nw-wr__go .stk img{max-width:24px;max-height:24px;object-fit:contain}.nw-wr__go .stk .dgm{border-radius:50%}.nw-wr__go .stk .dgm img{width:100%;height:100%;max-width:none;max-height:none;object-fit:cover}.nw-wr__go .lbl{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}',\n    '.nw-wr__asks{font-size:15px;color:#6f6a64;margin-top:-6px}',\n    '.nw-wr__toast.solo{padding:6px 18px}',\n    '.nw-wr__go{width:100%;height:52px;border-radius:4px;border:0;background:#aa4513;color:#fff;font:inherit;font-weight:800;font-size:16px;letter-spacing:.05em;text-transform:uppercase;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}',\n    '.nw-wr__go svg{width:20px;height:20px}.nw-wr__go:disabled{background:#d9d4cc;cursor:default}',\n    /* edit: select, then delete */\n    '.nw-wr__sel{display:block!important}.nw-wr.editing .nw-wr__pc{animation:none}.nw-wr.editing .nw-wr__pc.lock{opacity:.55}',\n    \".nw-wr__sel.on{background:#2e2e2e url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4 8-9'/%3E%3C/svg%3E\\\") center/14px no-repeat;box-shadow:0 0 0 2px #fff}\",\n    '.nw-wr__ft2{display:flex;gap:10px}.nw-wr__sa{flex:none;width:130px;height:52px;border-radius:4px;border:0;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.07),0 6px 16px rgba(0,0,0,.05);font:inherit;font-weight:800;font-size:15px;color:#2e2e2e;cursor:pointer}',\n    '.nw-wr__dl{flex:1;height:52px;border-radius:4px;border:0;background:#2e2e2e;color:#fff;font:inherit;font-weight:800;font-size:15px;letter-spacing:.05em;text-transform:uppercase;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}.nw-wr__dl svg{width:19px;height:19px}.nw-wr__dl:disabled{background:#d9d4cc;cursor:default}',\n    '.nw-wr__toast span{white-space:normal;line-height:1.3;min-width:0}.nw-wr__toast button{flex:none;white-space:nowrap}',\n    '.nw-wr__toast.long{top:76px;bottom:auto!important;height:auto;width:calc(100% - 32px);max-width:420px;border-radius:18px;padding:12px 10px 12px 18px;white-space:normal}.nw-wr__toast.long span{white-space:normal;line-height:1.35}.nw-wr__toast.long button{flex:none}',\n    /* the piece sheet */\n    '.nw-wr__psbg{position:absolute;inset:0;z-index:8;background:rgba(30,28,26,.38);opacity:0;transition:opacity .22s}.nw-wr__psbg.in{opacity:1}',\n    '.nw-wr__ps{position:absolute;left:0;right:0;bottom:0;z-index:9;background:#f5f4f2;border-radius:20px 20px 0 0;box-shadow:0 -8px 30px rgba(0,0,0,.15);padding:8px 20px calc(18px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;transform:translateY(105%);transition:transform .3s cubic-bezier(.3,.7,.2,1)}.nw-wr__ps.in{transform:none}',\n    '.nw-wr__grab{width:40px;height:5px;border-radius:3px;background:#d6d1ca;margin:0 auto 4px}',\n    '.nw-wr__psim{height:170px;background:#fff;border-radius:14px;display:grid;place-items:center;overflow:hidden}.nw-wr__psim img{max-width:86%;max-height:146px;object-fit:contain}',\n    '.nw-wr__psn{display:grid;gap:2px}.nw-wr__psn b{font-size:20px;font-weight:900;line-height:1.2}.nw-wr__psn span{font-size:15px;color:#6f6a64}',\n    '.nw-wr__psb{height:52px;border-radius:4px;border:0;background:#aa4513;color:#fff;font:inherit;font-weight:800;font-size:15px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 2px 6px rgba(120,45,10,.25)}.nw-wr__psb:disabled{opacity:.6}',\n    '.nw-wr__psb.in{background:#fff;color:#2e2e2e;box-shadow:0 1px 3px rgba(0,0,0,.07),0 6px 16px rgba(0,0,0,.05)}.nw-wr__psb svg{width:19px;height:19px}.nw-wr__psb.in svg{color:#aa4513}',\n    '.nw-wr__ps2{display:flex;gap:10px}.nw-wr__ps2 button{flex:1;height:50px;border-radius:4px;border:0;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.07),0 6px 16px rgba(0,0,0,.05);display:flex;align-items:center;justify-content:center;gap:8px;font:inherit;font-weight:800;font-size:15px;color:#2e2e2e;cursor:pointer}.nw-wr__ps2 svg{width:19px;height:19px}',\n    '.nw-wr__psd{border:0;background:none;font:inherit;font-weight:800;font-size:15px;color:#aa4513;padding:6px;cursor:pointer}',\n    '.nw-wr__psh{display:flex;align-items:center;justify-content:space-between;padding:2px 0 2px}.nw-wr__psh b{font-size:20px;font-weight:900}.nw-wr__x.sm{width:38px;height:38px}',\n    '.nw-wr__opt{border:0;background:#fff;border-radius:14px;display:flex;align-items:center;gap:14px;padding:14px 14px 14px 12px;font:inherit;color:#2e2e2e;cursor:pointer;text-align:left}.nw-wr__opt:active{box-shadow:0 0 0 2.5px #2e2e2e}',\n    '.nw-wr__opt .oi{width:44px;height:44px;border-radius:50%;background:#f5f4f2;display:grid;place-items:center;flex:none}.nw-wr__opt .oi svg{width:22px;height:22px}.nw-wr__opt .ot{display:grid;gap:1px}.nw-wr__opt b{font-size:15px;font-weight:800}.nw-wr__opt i{font-style:normal;font-size:15px;color:#6f6a64}',\n    '.nw-wr__toast{position:absolute;left:50%;bottom:calc(var(--ft, 84px) + 12px);transform:translateX(-50%);width:max-content;max-width:calc(100% - 24px);box-sizing:border-box;min-height:46px;border-radius:23px;background:#2e2e2e;color:#fff;display:flex;align-items:center;gap:14px;padding:6px 8px 6px 18px;font-weight:800;font-size:15px;box-shadow:0 8px 20px rgba(0,0,0,.2);z-index:5;transition:opacity .2s}',\n    '.nw-wr__toast button{background:#fff;color:#2e2e2e;border:0;border-radius:99px;padding:7px 14px;font:inherit;font-weight:900;cursor:pointer}.nw-wr__toast.hid{opacity:0;pointer-events:none}',\n    '.nw-wr__bin{position:absolute;left:50%;top:84px;width:64px;height:64px;margin-left:-32px;border-radius:50%;background:#aa4513;color:#fff;display:grid;place-items:center;box-shadow:0 8px 20px rgba(170,69,19,.35);transform:scale(0);transition:transform .18s;z-index:7}',\n    '.nw-wr__bin.on{transform:scale(1)}.nw-wr__bin.hot{transform:scale(1.25);background:#8f3810}.nw-wr__bin svg{width:30px;height:30px}',\n    '.nw-wr__drag{position:absolute;z-index:6;pointer-events:none;transform:rotate(-3deg) scale(1.05);box-shadow:0 18px 34px rgba(0,0,0,.22);opacity:.95;animation:none!important}',\n    '.nw-wr__empty{margin:16px 20px 0;background:#fff;border-radius:18px;padding:20px 18px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}',\n    '.nw-wr__empty b{font-size:19px;font-weight:900}.nw-wr__empty p{margin:0;font-size:16px;color:#6f6a64;line-height:1.4;max-width:300px}',\n    '.nw-wr__eg{display:flex;align-items:center;gap:10px}.nw-wr__eg i{height:44px;border-radius:10px;background:#2e2e2e;color:#fff;font-style:normal;font-weight:800;font-size:15px;display:grid;place-items:center;padding:0 16px;opacity:.35}',\n    '@keyframes nwPl{0%{box-shadow:0 0 0 2.5px #aa4513,0 0 0 0 rgba(170,69,19,.4)}100%{box-shadow:0 0 0 2.5px #aa4513,0 0 0 14px rgba(170,69,19,0)}}',\n    '.nw-wr__eg span{width:48px;height:46px;border-radius:10px;background:#fff;color:#aa4513;display:grid;place-items:center;animation:nwPl 1.6s ease-out infinite}.nw-wr__eg span svg{width:26px;height:26px}',\n    '.nw-wr__ib{margin:18px 24px 0}.nw-wr__ib b{display:block;font-size:20px;font-weight:900;line-height:1.2}.nw-wr__ib p{margin:4px 0 0;font-size:16px;color:#6f6a64;line-height:1.4}',\n    '.nw-wr__steps{margin:14px 20px 0;background:#fff;border-radius:18px;padding:4px 16px;box-shadow:0 1px 3px rgba(0,0,0,.04)}',\n    '.nw-wr__st{display:flex;gap:16px;align-items:center;padding:14px 0}.nw-wr__st+.nw-wr__st{border-top:1px solid #f0ede8}',\n    '.nw-wr__sv{position:relative;flex:none;width:104px;height:104px;border-radius:14px;background:#f5f4f2;display:grid;place-items:center;overflow:hidden}',\n    '.nw-wr__sv img{width:100%;height:100%;object-fit:cover;display:block}.nw-wr__sv img.pad{object-fit:contain;padding:6px;box-sizing:border-box}',\n    '.nw-wr__sn{position:absolute;left:6px;top:6px;width:22px;height:22px;border-radius:50%;background:#2e2e2e;color:#fff;font-size:12px;font-weight:900;display:grid;place-items:center}',\n    '.nw-wr__st b{display:block;font-size:17px;font-weight:900;line-height:1.25}.nw-wr__st p{margin:3px 0 0;font-size:15px;color:#6f6a64;line-height:1.35}',\n    '.nw-wr__sh{display:flex;gap:6px;align-items:center}.nw-wr__sh i{width:36px;height:34px;border-radius:9px;background:#fff;color:#aa4513;display:grid;place-items:center;box-shadow:0 0 0 2px #aa4513}.nw-wr__sh i svg{width:20px;height:20px}.nw-wr__sh em{width:40px;height:34px;border-radius:9px;background:#2e2e2e;opacity:.22}',\n    '.nw-wr__pics{display:flex;gap:6px}.nw-wr__pics img{width:54px;height:54px;border-radius:12px;background:#f5f4f2;object-fit:contain;padding:4px;box-sizing:border-box;opacity:.55}',\n    '.nw-wr__box{margin:0 20px;background:#fff;border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:10px}',\n    '.nw-wr__row{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none}.nw-wr__row img{width:50px;height:50px;border-radius:8px;background:#f5f4f2;object-fit:contain;flex:none}',\n    '.nw-wr__row b{font-size:15px;font-weight:900;display:block;line-height:1.2}.nw-wr__row span{font-size:15px;color:#6f6a64}',\n    '.nw-wr-fly{position:fixed;left:0;top:0;z-index:2147483300;pointer-events:none;transform-origin:50% 50%;will-change:transform}.nw-wr-fly img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.nw-wr-fly img.b{opacity:0}' +\n    '.nw-wr-now .nw-wr,.nw-wr-now .nw-wr-scrim{transition:none!important}.nw-wr-ret .nw-wr__go .stk{opacity:0}' +\n    /* the room's frame stops above the phone's gesture bar (the page draws edge to edge, but a frame is not told the inset); the strip below shows the room's grey */\n    '.nw-fr{position:fixed;inset:0;z-index:2147483200;background:#f5f4f2;opacity:0;transition:opacity .25s;overflow:hidden}.nw-fr.open{opacity:1}.nw-fr iframe{border:0;width:100%;height:calc(100% - env(safe-area-inset-bottom,0px));display:block;position:absolute;left:0;top:0}',\n    'html.nw-wr-lock,html.nw-wr-lock body{overflow:hidden}',\n    /* the cart slides in over the fitting room after an add there, and closing it goes back to the fitting room */\n    'html.nw-fr-on .nw-cart-scrim{z-index:2147483300}html.nw-fr-on .nw-cart{z-index:2147483301}html.nw-fr-on .nw-cart [data-fit-chip]{display:none!important}',\n    '.nw-fitchip{width:100%;min-height:62px;box-sizing:border-box;background:#fff;border:0;border-radius:10px;box-shadow:0 0 0 1.5px #aa4513;display:flex;align-items:center;gap:10px;padding:8px 12px 8px 10px;font:inherit;color:#2e2e2e;cursor:pointer;text-align:left}',\n    '.nw-fitchip__c{display:flex;flex:none}.nw-fitchip__c i{width:35px;height:35px;border-radius:50%;background:#f5f4f2;box-shadow:0 0 0 2px #fff;display:grid;place-items:center;margin-right:-12px;position:relative;font-style:normal}',\n    '.nw-fitchip__c img{max-width:28px;max-height:28px;object-fit:contain}.nw-fitchip__c em{position:absolute;right:-4px;top:-5px;min-width:19px;height:19px;border-radius:99px;background:#aa4513;color:#fff;font-style:normal;font-weight:900;font-size:12px;display:grid;place-items:center;box-shadow:0 0 0 2px #fff;z-index:2}',\n    '.nw-fitchip b{flex:1;margin-left:14px;font-size:16px;font-weight:900;line-height:1.2}.nw-fitchip svg{width:20px;height:20px;color:#aa4513;flex:none}',\n    /* a computer: a wider drawer, every piece in a grid (no sideways scrolling), bigger pictures and words */\n    '@media (min-width:1024px) and (min-height:600px){.nw-wr{width:640px}.nw-wr__rail{flex-wrap:wrap;overflow:visible;gap:14px;padding:10px 24px 6px}.nw-wr__pc{width:calc((100% - 28px) / 3);padding:12px}.nw-wr__pile{margin-right:0}.nw-wr__pc .im{height:120px}.nw-wr__pc .im img{max-height:112px}.nw-wr__pc b{font-size:17px}.nw-wr__pc span.pr{font-size:16px}.nw-wr__hint{font-size:16px;padding:14px 24px 0}.nw-wr__lb{padding:16px 24px 8px}.nw-wr__dogs{padding:6px 24px 8px}.nw-wr__ft{padding:16px 24px 24px}}'\n  ].join('\\n');\n  document.head.appendChild(css);\n\n  /* ---------- header hanger (F5) ---------- */\n  var pendingSwing = false;\n  function headerBtn() {\n    var n = list().length;\n    var triggers = document.querySelectorAll('[data-testid=\"cart-drawer-trigger\"], .header-actions__action.action__cart');\n    [].forEach.call(triggers, function (t) {\n      var b = t.previousElementSibling;\n      if (!b || !b.classList.contains('nw-wr-btn')) {\n        b = document.createElement('button'); b.type = 'button';\n        b.className = t.className.replace(/action__cart/, '') + ' nw-wr-btn';\n        b.setAttribute('aria-label', T.hanger);\n        b.innerHTML = IC.hang + '<span class=\"nw-wr-n\"></span>';\n        t.parentNode.insertBefore(b, t);\n      }\n      /* the header snippet already has the hanger in its HTML: only the tap and the count are added here */\n      if (!b._nw) { b._nw = 1; b.addEventListener('click', function (e) { e.preventDefault(); openDrawer(); }); }\n      /* always shown: the wardrobe has its own empty state and also lists cart pieces; the badge only counts saved designs and hides at 0 */\n      b.hidden = false; var bn = b.querySelector('.nw-wr-n'); bn.textContent = n; bn.hidden = !n;\n    });\n    if (pendingSwing && n) trySwing();\n  }\n  function swing() { pendingSwing = false; [].forEach.call(document.querySelectorAll('.nw-wr-btn'), function (b) { b.classList.remove('swing'); void b.offsetWidth; b.classList.add('swing'); }); }\n  /* after every save: swing the header hanger the moment it is really in view again (the personalizer or a sheet closed) */\n  function seen(b) {\n    if (document.documentElement.classList.contains('nw-fs-lock') || document.hidden) return false;\n    var r = b.getBoundingClientRect(); if (!r.width || r.bottom < 0 || r.top > innerHeight) return false;\n    var t = document.elementFromPoint(r.left + r.width / 2, r.top + r.height / 2); return !!t && (t === b || b.contains(t));\n  }\n  function trySwing() {\n    clearTimeout(trySwing.t); if (!pendingSwing) return;\n    var b = [].filter.call(document.querySelectorAll('.nw-wr-btn'), function (x) { return !x.hidden; })[0];\n    if (b && seen(b)) { setTimeout(swing, 300); return; }\n    trySwing.t = setTimeout(trySwing, 400);\n  }\n\n  /* ---------- drawer (H3 + picking, delete with Edit or hold-and-drag) ---------- */\n  var DRW = null, SCR = null, PICKED = [], EDIT = false, LAST = null, LASTT = 0, PRESS = null, JUST = false, SELD = [], PS = null;\n  function el(h) { var d = document.createElement('div'); d.innerHTML = h; return d.firstElementChild; }\n  var TRYNEXT = null;\n  function openDrawer() { MAXSAID = false;\n    if (TRYNEXT) { var tn = TRYNEXT; TRYNEXT = null; if (has(tn)) { try { sessionStorage.removeItem('nw-fr-shop'); } catch (x) { } loadCart().then(function () { tryNewest(tn); }); return; } }\n    if (!DRW) {\n      SCR = el('<div class=\"nw-wr-scrim\" hidden></div>'); document.body.appendChild(SCR); SCR.addEventListener('click', function () { closeDrawer(); });\n      DRW = el('<aside class=\"nw-wr\" role=\"dialog\" aria-modal=\"true\" aria-label=\"' + T.title + '\"></aside>'); document.body.appendChild(DRW);\n      DRW.addEventListener('click', onClick); DRW.addEventListener('contextmenu', function (e) { e.preventDefault(); });\n      DRW.addEventListener('pointerdown', lpDown); DRW.addEventListener('pointermove', lpMove); ['pointerup', 'pointercancel', 'pointerleave'].forEach(function (t) { DRW.addEventListener(t, lpEnd); });\n      swipeClose(DRW);\n    }\n    EDIT = false; SELD = []; SELDOG = []; PS = null; STAY = {}; OPENK = {}; FIRST = {}; PEND = []; clearTimeout(PT); PICKED = PICKED.filter(function (s) { return has(s) || isCartOnly(s); }); if (!DRW.classList.contains('open')) DRW.innerHTML = '';\n    SCR.hidden = false; WROPEN = true; document.documentElement.classList.add('nw-wr-lock');\n    EDIT = false; DELASK = false; renderDrawer(); loadDogs().then(renderDrawer); Promise.all([loadCart(), live(list().map(function (i) { return i.handle; }))]).then(renderDrawer);\n    requestAnimationFrame(function () { SCR.classList.add('open'); DRW.classList.add('open'); }); toLayer('wr');\n  }\n  /* back gesture / back button: the wardrobe and the fitting room each sit on their own history entry, so going back\n     closes them instead of leaving (and reloading) the page */\n  /* the entry is added a moment after opening: a personalizer that just closed itself with history.back() would\n     otherwise pop our fresh entry and close the fitting room again right away */\n  var LAYER = '', HSKIP = false, PUSHED = false, PT = null;\n  function toLayer(n) {\n    try {\n      if (n) {\n        if (PUSHED) history.replaceState({ nwl: n }, '');\n        else if (!PT) PT = setTimeout(function () { PT = null; if (LAYER && !PUSHED) { history.pushState({ nwl: LAYER }, ''); PUSHED = true; } }, 400);\n      } else {\n        clearTimeout(PT); PT = null;\n        if (PUSHED && history.state && history.state.nwl) { HSKIP = true; history.back(); }\n        PUSHED = false;\n      }\n    } catch (e) { }\n    LAYER = n;\n  }\n  window.addEventListener('popstate', function () {\n    if (HSKIP) { HSKIP = false; return; }\n    if (!LAYER || !PUSHED) return;\n    if (history.state && history.state.nwl === LAYER) return; var l = LAYER; LAYER = ''; PUSHED = false;\n    if (l === 'fr') { if (BACKTO !== 'cart' && !WROPEN) frAsk(); else { closeFitting(true); stepBack(); } } else if (l === 'wr') closeDrawer(true);\n  });\n  /* swipe the wardrobe to the right to close it (not while editing, and never from inside a row of pieces: rows only scroll) */\n  function swipeClose(d) {\n    var x0 = 0, y0 = 0, dx = 0, on = null, t0 = 0;\n    d.addEventListener('touchstart', function (e) {\n      on = null; dx = 0; if (EDIT || e.touches.length > 1) { on = false; return; }\n      if (e.target.closest && e.target.closest('.nw-wr__rail')) { on = false; return; }\n      x0 = e.touches[0].clientX; y0 = e.touches[0].clientY; t0 = Date.now();\n    }, { passive: true });\n    /* while a piece is held and dragged to the bin, nothing else moves: no swipe-to-close, no scrolling */\n    d.addEventListener('touchmove', function (e) { if (PRESS && PRESS.on && e.cancelable) e.preventDefault(); }, { passive: false });\n    d.addEventListener('touchmove', function (e) {\n      if (PRESS && PRESS.on) { if (on) { on = false; dx = 0; d.style.transition = ''; d.style.transform = ''; if (SCR) SCR.style.opacity = ''; } else on = false; return; }\n      if (on === false) return; var mx = e.touches[0].clientX - x0, my = e.touches[0].clientY - y0;\n      if (on === null) { if (Math.abs(mx) < 10 && Math.abs(my) < 10) return; on = mx > 0 && Math.abs(mx) > Math.abs(my) * 1.3; if (!on) return; d.style.transition = 'none'; }\n      dx = Math.max(0, mx); d.style.transform = 'translateX(' + dx + 'px)'; if (SCR) SCR.style.opacity = String(Math.max(0, 1 - dx / d.offsetWidth));\n    }, { passive: true });\n    var end = function () {\n      if (!on) return; on = null; d.style.transition = ''; if (SCR) SCR.style.opacity = '';\n      var fast = dx > 40 && dx / Math.max(1, Date.now() - t0) > .5;\n      d.style.transform = ''; if (dx > d.offsetWidth * .3 || fast) closeDrawer();\n    };\n    d.addEventListener('touchend', end); d.addEventListener('touchcancel', end);\n  }\n  /* \"Saved to wardrobe\", each time a personalizer saves a design: shown just above the row of the button that saved it\n     (o.anchor), at that row's width, so it stays on screen. The last three pieces stacked, newest in front. A tap on\n     the card opens the wardrobe (o.onOpen first closes the personalizer, which would otherwise sit on top of it);\n     the x closes it; otherwise it goes after 5 s, shown by the line along the bottom, held while a finger is on it. */\n  var SC = null;\n  function hideCard(now) {\n    var c = SC; if (!c) return; SC = null; clearInterval(c._w);\n    if (now) { c.remove(); return; }\n    c.classList.add('out'); setTimeout(function () { c.remove(); }, 220);\n  }\n  function savedCard(o) {\n    o = o || {}; var a = o.anchor; if (!a || !a.getBoundingClientRect) return;\n    hideCard(true);\n    var r = a.getBoundingClientRect(), W = window.innerWidth, H = window.innerHeight, all = list(), its = all.slice(0, 3);\n    var c = el('<div class=\"nw-sc\" role=\"status\"><span class=\"nw-sc__st\"></span><span class=\"nw-sc__t\"></span>' +\n      '<span class=\"nw-sc__ar\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\"><path d=\"m9 18 6-6-6-6\"/></svg></span><span class=\"nw-sc__sep\"></span>' +\n      '<button type=\"button\" class=\"nw-sc__x\" aria-label=\"' + T.close + '\"><svg viewBox=\"0 0 24 24\"><path d=\"M6 6l12 12M18 6L6 18\"/></svg></button><span class=\"nw-sc__tm\"><i></i></span></div>');\n    /* the row's content edges (inside its padding), which line up with the boxes above it */\n    var cs = getComputedStyle(a), pl = parseFloat(cs.paddingLeft) || 0, pr = parseFloat(cs.paddingRight) || 0;\n    var left = Math.max(8, r.left + pl), width = Math.min(r.width - pl - pr, W - left - 8);\n    c.style.left = left + 'px'; c.style.width = width + 'px'; c.style.bottom = Math.max(8, H - r.top + 10) + 'px';\n    var fromRoom = false; try { fromRoom = Date.now() - (+sessionStorage.getItem('nw-fr-shop') || 0) < 72e5; } catch (x) { }\n    var t = c.querySelector('.nw-sc__t'); t.textContent = T.saved; var sm = document.createElement('small'); sm.textContent = fromRoom ? T.tryIt : T.pieces(all.length); t.appendChild(sm);\n    var st = c.querySelector('.nw-sc__st'); st.style.width = (46 + 14 * Math.max(0, its.length - 1)) + 'px';\n    its.forEach(function (it, i) {\n      var p = document.createElement('span'); p.className = 'nw-sc__p'; p.style.left = (14 * i) + 'px'; p.style.zIndex = String(3 - i);\n      if (i) p.style.opacity = i === 1 ? '.8' : '.55';\n      st.appendChild(p);\n      picUrl(it.id).then(function (u) { if (!u) return; var im = new Image(); im.alt = ''; im.decoding = 'async'; im.src = u; p.appendChild(im); });\n    });\n    var bar = c.querySelector('.nw-sc__tm i'), hold = function (on) { bar.style.animationPlayState = on ? 'paused' : 'running'; };\n    c.addEventListener('pointerdown', function () { hold(true); }); c.addEventListener('pointerup', function () { hold(false); });\n    c.addEventListener('pointerleave', function () { hold(false); }); c.addEventListener('mouseenter', function () { hold(true); });\n    bar.addEventListener('animationend', function () { if (SC === c) hideCard(); });\n    c.querySelector('.nw-sc__x').addEventListener('click', function (e) { e.stopPropagation(); hideCard(); });\n    c.addEventListener('click', function () { hideCard(true); if (fromRoom && all[0]) TRYNEXT = all[0].sig; if (typeof o.onOpen === 'function') o.onOpen(); else openDrawer(); });\n    c._w = setInterval(function () { if (!a.isConnected) hideCard(); }, 400);   // the personalizer closed: the card goes with it\n    document.body.appendChild(c); SC = c;\n  }\n  function closeDrawer(noHist) {\n    if (!DRW) return; WROPEN = false; LAND = {}; if (!noHist) toLayer(''); DRW.classList.remove('open'); SCR.classList.remove('open'); document.documentElement.classList.remove('nw-wr-lock');\n    setTimeout(function () { if (!DRW.classList.contains('open')) SCR.hidden = true; }, 300);\n  }\n  var KINDS = [['collar', 'collars'], ['tag', 'tags'], ['leash', 'leashes']];\n  var PICS = {};   /* card picture per piece, once known: a redraw shows it at once */\n  function renderDrawer() {\n    if (!DRW) return;\n    /* a move still running when the list is drawn again (the cart reports back a moment after a change) carries on from\n       where it is instead of jumping to its end */\n    if (CART) Object.keys(PK).forEach(function (k) { if (!byS(PK[k])) delete PK[k]; }); pkSave();\n    var fl = FLIP, now = Date.now(), go = fl || (FLIPRUN && FLIPRUN.end > now ? FLIPRUN.sigs : null), fr = go ? flipFirst() : null, gh = fl ? ghosts(fl) : null; FLIP = null;\n    /* a list: tap pieces to pick what goes on the dog (one of each kind), the cart button on a card adds or takes it out;\n       Edit (or holding a card) selects pieces to delete, cart pieces too (a question first: keep them in the cart or not) */\n    var items = view(), n = items.length;\n    SELD = SELD.filter(function (s0) { return items.some(function (i) { return i.sig === s0; }); });\n    Object.keys(PK).forEach(function (k) { if (!items.some(function (i) { return i.sig === PK[k] && i.kind === k; })) delete PK[k]; });\n    var np = Object.keys(PK).length, DL = DOGL && DOGL.dogs || [], nd = DL.length;\n    SELDOG = SELDOG.filter(function (id) { return DL.some(function (d) { return d.id === id; }); });\n    var h = '<div class=\"nw-wr__hd\"><b>' + T.title + '</b>' +\n      (n || nd ? '<button class=\"nw-wr__ed\" data-a=\"edit\">' + (EDIT ? T.done : T.edit) + '</button>' : '') +\n      (EDIT ? '' : '<button class=\"nw-wr__x\" data-a=\"close\" aria-label=\"' + T.close + '\">' + IC.x + '</button>') + '</div><div class=\"nw-wr__body\">';\n    /* Edit: the dogs can be selected and deleted like the pieces */\n    if (EDIT && nd) h += '<div class=\"nw-wr__lb nw-wr__lbd\">' + T.who + '</div><div class=\"nw-wr__dogs\">' + DL.map(function (d, i) { var on = SELDOG.indexOf(d.id) > -1; return '<span class=\"nw-wr__dw\"><button type=\"button\" class=\"nw-wr__dg\" data-dsel=\"' + esc(d.id) + '\" aria-pressed=\"' + on + '\" aria-label=\"' + esc(d.nm || T.dogN(i + 1)) + '\">' + (d.th ? '<img alt=\"\" src=\"' + d.th + '\">' : HEAD) + '<span class=\"nw-wr__sel' + (on ? ' on' : '') + '\"></span></button>' + (d.nm ? '<span class=\"nw-wr__dn\">' + esc(d.nm) + '</span>' : '') + '</span>'; }).join('') + '</div>';\n    if (!n) { if (!EDIT) h += emptyHTML(); }\n    else {\n      /* the hint stays when pieces are picked and only changes its words; both wordings share one spot (the hidden one keeps\n         its height), so picking never makes the list jump */\n      if (!EDIT) { h += '<p class=\"nw-wr__hint\"><span' + (np ? ' class=\"off\" aria-hidden=\"true\"' : '') + '>' + T.hint(!lastOk()) + '</span><span' + (np ? '' : ' class=\"off\" aria-hidden=\"true\"') + '>' + T.hintP + '</span></p>'; h += dogRowHTML(); }\n      KINDS.forEach(function (k) {\n        var its = items.filter(function (i) { return i.kind === k[0]; }); if (!its.length) return;\n        var pk = !EDIT && PK[k[0]], pi = pk && byS(LAND[pk] !== undefined ? OPK[k[0]] : pk);\n        h += '<div class=\"nw-wr__lb\" data-k=\"' + k[0] + '\">' + T[k[1]] + ' <span>' + its.length + '</span>' +\n          (pi ? '<button type=\"button\" class=\"nw-wr__pk\" data-a=\"unpick\" data-k=\"' + k[0] + '\" aria-label=\"' + esc(T.unpick + ': ' + shortT(pi.title)) + '\"><em>' + esc(shortT(pi.title)) + '</em><i>' + IC.x + '</i></button>' : '') + '</div><div class=\"nw-wr__rail\">';\n        /* undecided pieces first, then the cart's; two or more cart pieces fold into a pile at the end (laid out on a tap;\n           not while editing); a picked cart piece goes into the pile too; laid out, the newest added lead and picking never moves a piece */\n        var inC = function (i) { return (inCart(i) || isCartOnly(i.sig)) && !STAY[i.sig]; }, fs = FIRST[k[0]] || [], rk = function (i) { var j = fs.indexOf(i.sig); return j < 0 ? 1e9 : j; }, cs = its.filter(inC).sort(function (x, y) { return rk(x) - rk(y); }), pl = cs;\n        var fold = !EDIT && !OPENK[k[0]] && pl.length > 1, shown = its.filter(function (i) { return !inC(i); }).concat(fold ? [] : cs);\n        var hd = false;\n        shown.forEach(function (i) {\n          var ic = inCart(i) || isCartOnly(i.sig), ld = !EDIT && LAND[i.sig] !== undefined, on = EDIT ? SELD.indexOf(i.sig) > -1 : pk === i.sig && !ld, dim = !EDIT && pk && pk !== i.sig && !ld, lay = !fold && OPENK[k[0]] && inC(i);\n          /* a laid-out pile keeps a slim handle where it was: tapping the same spot folds it again */\n          if (lay && !hd && !EDIT && pl.length > 1) { hd = true; h += '<button type=\"button\" class=\"nw-wr__hdl' + (TURN === k[0] ? ' turn' : '') + '\" data-a=\"fold\" data-k=\"' + k[0] + '\" aria-label=\"' + esc(T.fold) + '\">' + IC.fold + '</button>'; }\n          var wt = !EDIT && (ADDG[i.sig] || STAY[i.sig]);   /* added and waiting to move: it lifts a little (where it got to, if drawn again) */\n          h += '<div class=\"nw-wr__pc' + (on ? ' on' : '') + (dim ? ' dim' : '') + (lay ? ' nw-wr__laid' : '') + (wt ? ' nw-wr__wait' : '') + '\"' + (wt ? ' style=\"animation-delay:-' + Math.min(300, Date.now() - (WAITT[i.sig] || Date.now())) + 'ms\"' : '') + ' data-s=\"' + i.sig + '\" role=\"button\" tabindex=\"0\" aria-pressed=\"' + on + '\">' +\n            (EDIT ? '<span class=\"nw-wr__sel' + (on ? ' on' : '') + '\"></span>' + (ic ? '<span class=\"ic\">' + IC.cart + '</span>' : '')\n              : '<button type=\"button\" class=\"nw-wr__cb' + (ic ? ' in' : '') + (ADDG[i.sig] || STAY[i.sig] ? ' gone' : CBUSY[i.sig] ? ' busy' : '') + '\" data-cart=\"' + i.sig + '\" aria-label=\"' + (ic ? T.rmCart : T.addCart) + '\">' + IC.cart + '<i>' + (ic ? IC.ok : IC.plus) + '</i></button>') +\n            '<div class=\"im\">' + (ld ? '<img alt=\"\"' + (LAND[i.sig] ? ' src=\"' + LAND[i.sig] + '\"' : ' style=\"opacity:0\"') + '>' : '<img alt=\"\" data-pic=\"' + i.sig + '\"' + (PICS[i.sig] ? ' src=\"' + PICS[i.sig] + '\"' : (i.image ? ' src=\"' + esc(i.image) + '\"' : '')) + '>') + '</div><b>' + esc(shortT(i.title)) + '</b><span class=\"pr\">' + priceHTML(i) + '</span></div>';\n        });\n        /* folded, the picked piece shows on top when it is in the pile (laid out, the order stays by when pieces were added) */\n        if (fold) { var tp = pl.filter(function (i) { return i.sig === pk; })[0] || pl[0];\n          var pin = pl.some(function (i) { return i.sig === pk; });   /* a pick outside the pile fades the pile too, like the other cards */\n          h += '<div class=\"nw-wr__pc nw-wr__pile' + (pin ? ' on' : pk ? ' dim' : '') + '\" data-a=\"pile\" data-k=\"' + k[0] + '\" data-top=\"' + tp.sig + '\" role=\"button\" tabindex=\"0\" aria-label=\"' + esc(T.pileA(pl.length)) + '\"><span class=\"nw-wr__cb in\">' + IC.cart + '<i>' + IC.ok + '</i></span>' +\n            '<div class=\"im\"><img alt=\"\" data-pic=\"' + tp.sig + '\"' + (PICS[tp.sig] ? ' src=\"' + PICS[tp.sig] + '\"' : (tp.image ? ' src=\"' + esc(tp.image) + '\"' : '')) + '></div><b>' + esc(shortT(tp.title)) + '</b><span class=\"nw-wr__more\">' + T.more(pl.length - 1) + '</span></div>'; }\n        h += '</div>';\n      });\n    }\n    h += '</div>';\n    var nsel = SELD.length + SELDOG.length;\n    if (EDIT ? n || nd : n) h += EDIT ? '<div class=\"nw-wr__ft nw-wr__ft2\"><button class=\"nw-wr__sa\" data-a=\"selall\">' + T.selAll + '</button><button class=\"nw-wr__dl\" data-a=\"delsel\"' + (nsel ? '' : ' disabled') + '>' + IC.trash + T.delN(nsel) + '</button></div>'\n      : '<div class=\"nw-wr__ft\">' + (np ? '<button type=\"button\" class=\"nw-wr__clr\" data-a=\"clear\">' + T.clear + '</button>' : '') + '<button class=\"nw-wr__go\" data-a=\"go\">' + goHTML() + '</button></div>';\n    if (CT) h += '<div class=\"nw-wr__toast' + (CT.undo ? '' : ' solo') + (CT.long ? ' long' : '') + '\"' + (n ? '' : ' style=\"bottom:24px\"') + '><span>' + CT.msg + '</span>' + (CT.undo ? '<button data-a=\"ctundo\">' + (CT.btn || T.undo) + '</button>' : '') + '</div>';\n    else h += '<div class=\"nw-wr__toast' + (LAST ? '' : ' hid') + '\"' + (n ? '' : ' style=\"bottom:24px\"') + '><span>' + (LAST ? delMsg(LAST.rec) : T.deleted) + '</span><button data-a=\"undo\">' + T.undo + '</button></div>';\n    if (DELASK) h += delAskHTML();\n    var keep = {}, bd0 = DRW.querySelector('.nw-wr__body'), top0 = bd0 ? bd0.scrollTop : 0;\n    [].forEach.call(DRW.querySelectorAll('.nw-wr__rail'), function (r, i) { var lb = r.previousElementSibling; keep[(lb ? lb.getAttribute('data-k') : '') + '|' + i] = r.scrollLeft; });\n    DRW.innerHTML = h;\n    /* the note above the footer: the footer's height changes (Clear picks, the phone's home bar), so the note sits on top of it */\n    var ftE = DRW.querySelector('.nw-wr__ft'); if (ftE) DRW.style.setProperty('--ft', ftE.offsetHeight + 'px');\n    DRW.classList.toggle('editing', EDIT); DRW.classList.toggle('full', false);\n    var bd1 = DRW.querySelector('.nw-wr__body'); if (bd1 && top0) bd1.scrollTop = top0;\n    [].forEach.call(DRW.querySelectorAll('.nw-wr__rail'), function (r, i) { var lb = r.previousElementSibling, v = keep[(lb ? lb.getAttribute('data-k') : '') + '|' + i]; if (v) r.scrollLeft = v; });\n    [].forEach.call(DRW.querySelectorAll('img[data-pic]'), function (im) { var s0 = im.dataset.pic; /* a cart line too: its own design (from its details), not the product's stock photo */ picUrl(s0).then(function (u) { if (u) { PICS[s0] = u; if (im.getAttribute('src') !== u) im.src = u; } }); });\n    if (!n && !EDIT) fillEmpty();\n    if (fr) { if (fl) { flipView(fl, fr); FLIPRUN = { sigs: fl, end: now + 620 }; } if (gh) tuck(gh); flipPlay(fr, go, FLIPRUN.end - now, !fl); }\n  }\n  /* ---------- picking a set, the dog that tries it on, and what the button opens ---------- */\n  /* STAY: a piece just added to the cart keeps its place for a moment (the tick shows), then slides into the cart pieces; OPENK: rows whose cart pile is laid out */\n  /* TURN: the row whose pile was just opened (its handle's arrow turns to point right: it can be folded again) */\n  /* FIRST: per row, the pieces added to the cart last, in the order they were tapped (they lead the cart pieces); FLIP: the pieces\n     the next drawing moves; PEND: pieces added and still showing their tick, PT: the wait before they move (each add restarts it) */\n  var STAY = {}, OPENK = {}, TURN = null, FIRST = {}, FLIP = null, FLIPRUN = null, PEND = [], PT = null;\n  /* back from the fitting room: OPK the picks when it opened, EDW per design edited there the one it replaced, LAND the cards a\n     piece is still flying to (not shown picked yet; an edited one keeps its old picture until it lands) */\n  var OPK = {}, EDW = {}, LAND = {}, FRT = 0, ADDG = {}, WAITT = {}, OLK = {}, FAQ = null, FRW = null, FRUP = false;   /* WAITT: when a piece's add began; OLK: the look the fitting room opened with (no picks); FAQ: waiting for the fitting room's pieces after the phone's own back */\n  /* Reduce Motion on the phone: moves become short fades, nothing flies */\n  function calm() { try { return window.matchMedia('(prefers-reduced-motion: reduce)').matches; } catch (e) { return false; } }\n  /* the picks are kept for the visit, so the wardrobe looks the same after a reload or another page */\n  function pkLoad() { try { var v = JSON.parse(sessionStorage.getItem('nw-wr-pk') || '{}'); return v && typeof v === 'object' && !Array.isArray(v) ? v : {}; } catch (e) { return {}; } }\n  function pkSave() { try { sessionStorage.setItem('nw-wr-pk', JSON.stringify(PK)); } catch (e) { } }   /* ADDG: pieces being added to the cart (their button steps aside until they land) */   /* FRT: counts the fitting room's openings */\n  var PK = pkLoad(), CT = null, CTT = 0, CBUSY = {}, DELASK = false, DOGL = null, DOGSEL = null, FI = null, LP = null, SELDOG = [], DOGRM = [];\n  /* the fitting room's outline dog (the sitting silhouette), head and shoulders: the empty dog circle */\n  var HEAD = '<svg class=\"nw-wr__smp\" viewBox=\"59.7 -22 230 230\" aria-hidden=\"true\"><defs><clipPath id=\"nw-wr-hc\"><circle cx=\"174.7\" cy=\"93\" r=\"115\"/></clipPath></defs><path clip-path=\"url(#nw-wr-hc)\" fill=\"#c9c1b6\" d=\"M145.6 6.2q0 .3.6.9c1 1 .5 1-2.3.1-6.6-2.1-12.2-.8-24.1 5.7-1.8 1-5.6 2.9-8.4 4.1-7 3.2-8.6 4.9-9.5 10q-.8 5.6 1.8 5.6c.8 0 4-1.1 5-1.8 5-3.1 5.7-3.2 8-.7 1.7 2 2.4 3.4 3.9 7.5 2.3 6.4 4 8.5 7.3 8.5q2.7 0 1.6 2.1c-1 1.8-1.7 6.5-1.1 6.5l1.7-1.4q1.6-1.5 1.8-1 .3.2-.4.8l-.4.5.7.1q.5-.2.3 2-.1 3 .8 1.6c.5-.6.7-.3 1 2 .3 2 .3 2 1.2 2 1 0 1 0 1 .6l-1.8 5.4-1 2.3q-.9 1.7-1 2.5l-1.7 3.1a9 9 0 0 0-1.2 2.6q.3.1 1.7-.3c1.9-.7 2-.5 1.2 1.2-1 1.9-1.9 4.6-1.9 5.6s0 1 1 0c1.7-1.4 3.3-1.8 2.6-.5-.6 1 .4 9 1.1 9q.3-.1 1-1.1 1.3-2.8 1.7 1c.3 2.6.9 4.8 1.2 5.2q.2.1.7-.7.9-2.2 1.8.5 3 8.1-2.3 16.2c-1.6 2.3-3 5.2-3.8 7.4-.7 1.8-.7 2.2-.1 2.2q.3 0 .4-.3 0-.2.3-.2c.3 0 0 1.5-.6 3l-.8 2.7-.5 1.8q0 .5.3.5.5 0 .5-.3c0-.3 1.3-1.2 1.5-1l-.1 1.6c-.2.8-.5 2.8-.6 4.5-.2 1.6-.6 4-1 5.2a84 84 0 0 1-4.5 10.4q-4.6 10-2.8 8.1 1.5-1.4.1 2.1c-1.5 3.8-2.6 9.2-1.8 9.2l1.2-1.5q2-2.7 1.8-.7c-.7 4.5-.8 6.3-.7 9.8.2 5.3 2 15.8 3.3 21.2q.7 2 1 1l.2-1.7q.4-2 .9-.8l1.8 3.9c1.9 4 1.9 4 0 6.6q-1.9 2.4-2.4 4.7c-.3.9-.3 5.3 0 6.1q.5 1.5-1.5.4c-3.4-1.7-7-2.4-7-1.4q0 .5.4.5c.7 0 1.9 1.3 1.8 2s-.4.8-2.1 1.3c-2.3.7-4.3 2.3-2.9 2.3.8 0 .7.7 0 1.2q-.7.4-.7.6-.1.4-1.1 1.9c-2.9 4.3-4 7.4-5 14.7q-.5 3.8-.2 4.4l.3 2.4c0 1.5.1 1.8.5 1.8q.5 0 .5-.6c0-1.2.5-.4.8 1.3l1.3 4.4c.5 1.5 1 3 1 3.4q0 .8.4 1.2.8.6 0 1l-1 .2a45 45 0 0 1-7.7-2.1c-10-4-18.6-11.8-23.7-21.7l-1.7-2.8q-.6 0-.6 2.5 0 1.2-.3 1.3c-.3 0-3-3.5-5-6.5l-1.6-2.3q-.6-.2-1.4 2.4c-2.8 8.7-2.8 18.4.1 24 1.2 2.4-.1 2-2-.6q-3.3-4.4-.1 4.3c1 3.1 4.6 8.2 6.8 10 1.7 1.3 0 1.2-2.2-.1q-2.3-1.5-.9.5c2 3 6.6 6.9 9.8 8.4q3 1.6 0 1.6-2-.2-.6.7a23 23 0 0 0 11.2 3.7l3 .4q.3.5-1.6 1-2.6.6-.2 1c3.6 1 12.3 1.1 17.4.4 2.6-.4 2.7-.3 1.5 1-3.8 4.3-4.3 10-.8 10q.9 0 1.5.5c1 .6 6.6.8 9.2.4l3.8-.5c4.8-.5 7-2.8 10.1-10.3 1-2.5 1.3-2.7 3.3-2.9l3.6-.3c2.3-.2 2.5 0 2.5 2.5 0 5-1.4 9.4-4 12.2-3 3.4-4.2 8.5-2.4 10.3.7.7 1 .9 2 .9q1 0 2.4.7a25 25 0 0 0 12.9.5c.6-.2 1.8-.4 2.6-.4 5.6 0 7.6-4.5 5.4-11.6-.8-2.4-.8-2.7-.5-3.4.7-1.3.5-3.8-.5-6.5-1.6-4.8-1.7-5.2-1.3-6.6.4-1.7.3-1.6 1.6-.9 1 .7 1 .7 11.4.7 11 0 11.6 0 13.2-1.5q1-.9 1-.2c.5 1-.1 4.7-1 7-1 2.7-1.6 6-1.1 7.6.3 1 .2 1.5-.4 3.4-2.3 7.3-.1 12 5.6 12q1.4 0 2 .3a26 26 0 0 0 15.1-1c4.5-.2 4.5-6.2 0-11.4a15 15 0 0 1-2.9-5.6c-1-3.2-.4-3.6 3-2.3 2.2.9 3 1.4 5.1 3.4 2.4 2.2 4.1 3 7 3.3l4.2.6c2.1.4 5.6.1 6.7-.5q.8-.3 1.8-.3 3 0 2-5.1c-1.2-5.5-3.2-7.4-11.4-10.8-1.7-.7-3.6-1.7-4.1-2.1-1-.8-1-.9-.9-2.3.3-2.2.5-3 2.4-5.6 8-11.1 11-17.8 11.5-25.2q.2-3.9 1-1.9.4.7.7.7c1 0 .4-7-1.1-12.3a24 24 0 0 0-5.8-9.6c0-.5.8-.6 1.3-.1q.3.2.5.1c.7-.7-4.1-3.2-7-3.7-1-.1-1-.2-.8-1.3.2-1.6-.2-1.6-3.5-.2l-2.7 1v-2c.7-6 .1-9.2-2.4-13-1.3-1.9-1.4-2.3-.6-3.3l1-1.6 1-1.5.7-1.3 1-1.7c5.6-8.8 6.7-24.7 2.8-38.4-.3-.7.6-.9 1.2-.2l.6.4c.7 0-.1-2.7-2-6.8l-.8-1.9-2-4.4a25 25 0 0 1-3-8.4c-.6-2.6-.8-4.4-.6-4.6l1 .7q.7.9 1 .7c.4-.4-1.6-6.6-3-9.1q-.6-1.3 1-.6l1 .4c1 0-2-5.3-4.7-8.8a22 22 0 0 1-5.5-11c-1-5-.4-8.1 2.1-13 1.1-2 1.6-2.3 2.4-1.3l.6 1q0 .3.5.2c.8 0 1.4-4 1-7q-.3-2-.2-2.3.2-.1 1.4.5t1.4.5c.2-.3-.4-2.1-1.5-4q-1.6-3 .5-2.4c1 .2 1 .2-.7-2.4l-1.5-2.6-.5-1c-1-1.1-2.8-6.8-2.5-7.6q.1-.4 1.7.2 2.6 1.1 1.3-.5-.5-.7-.7-1.5l-.4-.8c-.3 0-1-2-.8-2.1s2.3.8 2.7 1.4q1 1.2 1.2-1v-2.4q-.2-1.5.7-.5.4.4.6.4c.4 0 .3-2.2-.1-3.4q-.8-2 .8-1.2c1.6.6 3.3 0 2-.6q-2-1-1.1-1.7.4-.5 1.3-1c1.8-.7 3.8-2.9 7.3-7.8 5.1-7.3 5-7.2 7.7-3.7 3.3 4.2 6.6 7 8.1 7 2 0 2.9-7.3 1.4-11.3-1-2.7-2.2-3.9-5.7-6a57 57 0 0 1-9.3-7 35 35 0 0 0-12.4-7.7c-1.9-.5-1.9-.5-1.2-1 1.5-1.2-2.6-1.2-6.2 0q-2.7.9-2.6-.3 0-.7-.3-.7c-.6 0-4 2.2-4.9 3.2q-1.4 1.6-1.4.4.2-1.1-1.4.4a26 26 0 0 0-4.9 6.5c-2 3.8-2.6 4.1-6.2 3-8-2.7-17.7-3.1-25.3-1.2-2.3.6-3 .5-4-.4q-.7-.8-.6-1.3t-.4-1.1l-.6-1c0-.7-5-7.4-5.5-7.4q-.3.1-.1 1.1.3 2.1-1 .2c-2.1-3-7.5-7.6-7.5-6.4\"/></svg>';\n  /* what the fitting room can draw: a saved design, or a cart line with its design (a tag with its picture, a collar or leash from the builder) */\n  function canTry(i) { var p = i.props || {}; if (i.kind === 'tag') return !isCartOnly(i.sig) || !!(p['_Preview Front'] || p._Preview || p.Preview); return !!p._collar; }\n  function selDog() { var L = DOGL && DOGL.dogs || []; if (!L.length) return null; var ok = function (id) { return id && L.some(function (d) { return d.id === id; }); }; return ok(DOGSEL) ? DOGSEL : ok(DOGL.cur) ? DOGL.cur : L[0].id; }\n  function dogRowHTML() {\n    var L = DOGL && DOGL.dogs || [], h = '<div class=\"nw-wr__lb nw-wr__lbd\">' + T.who + '</div><div class=\"nw-wr__dogs\">';\n    if (L.length) {\n      var sel = selDog();\n      /* the dogs not chosen fade lightly, like the pieces not picked */\n      L.forEach(function (d, i) { var on = d.id === sel; h += '<span class=\"nw-wr__dw' + (sel && !on ? ' dim' : '') + '\"><button type=\"button\" class=\"nw-wr__dg' + (on ? ' on' : '') + '\" data-dog=\"' + esc(d.id) + '\" aria-pressed=\"' + on + '\" aria-label=\"' + esc(d.nm || T.dogN(i + 1)) + '\">' + (d.th ? '<img alt=\"\" src=\"' + d.th + '\">' : '') + '</button>' + (d.nm ? '<span class=\"nw-wr__dn\">' + esc(d.nm) + '</span>' : '') + '</span>'; });\n      h += '<span class=\"nw-wr__dw\"><button type=\"button\" class=\"nw-wr__dg add\" data-a=\"adddog\" aria-label=\"' + T.addDog + '\">+</button></span>';\n    } else h += '<button type=\"button\" class=\"nw-wr__addc\" data-a=\"adddog\"><span class=\"nw-wr__dg add sil\" aria-hidden=\"true\">' + HEAD + '<i>+</i></span><span class=\"nw-wr__first\"><b>' + T.addYour + '</b>' + T.addYourS + '</span></button>';\n    return h + '</div>';\n  }\n  /* the pieces of the last look, as wardrobe entries (its picks are wardrobe ids or cart line keys) */\n  function lookFind(V) { return function (v) { return V.filter(function (i) { return i.sig === v || i._cart === v || (function () { var l = !isCartOnly(i.sig) && lineOf(i); return l && l.key === v; })(); })[0]; }; }\n  /* the picks follow the fitting room: what the dog wore when it was closed is what \"Try on these\" opens next time */\n  function syncPicks(x) {\n    if (!x || !x.picks || !Object.keys(PK).length) return;\n    var find = lookFind(view()), n = {};\n    KINDS.forEach(function (k) { var v = x.picks[k[0]], it = v && find(v); if (it && canTry(it)) n[k[0]] = it.sig; });\n    if (Object.keys(n).length) PK = n;\n  }\n  function lookItems(x) {\n    var find = lookFind(view());\n    var r = []; if (x && x.picks) KINDS.forEach(function (k) { var it = find(x.picks[k[0]]); if (it && canTry(it)) r.push(it); });\n    if (!r.length && x) { var seen = {}; (x.sigs || []).forEach(function (s) { var it = find(s); if (it && canTry(it) && !seen[it.kind]) { seen[it.kind] = 1; r.push(it); } }); }\n    return r;\n  }\n  function newestItems() { var seen = {}, r = []; view().filter(canTry).forEach(function (i) { if (!seen[i.kind]) { seen[i.kind] = 1; r.push(i); } }); return KINDS.map(function (k) { return r.filter(function (i) { return i.kind === k[0]; })[0]; }).filter(Boolean); }\n  function goSet() {\n    var ks = KINDS.map(function (k) { return PK[k[0]]; }).filter(Boolean);\n    if (ks.length) { var its = ks.map(byS).filter(Boolean); return { lab: its.length === 1 ? T.tryOneN(shortT(its[0].title)) : T.tryThese(its.length), its: its }; }\n    var x = lastOk(); if (x) return { lab: T.tryLast, its: lookItems(x) };\n    return { lab: T.tryNew, its: newestItems() };\n  }\n  function goHTML() {\n    var g = goSet(), L = DOGL && DOGL.dogs || [], sd = selDog(), dg = L.filter(function (d) { return d.id === sd; })[0];\n    var st = (dg && dg.th ? '<span class=\"dgm\"><img alt=\"\" src=\"' + dg.th + '\"></span>' : '') + g.its.map(function (i) { var u = PICS[i.sig] || i.image || ''; return '<span>' + (u ? '<img alt=\"\" src=\"' + esc(u) + '\">' : '') + '</span>'; }).join('');\n    return (st ? '<span class=\"stk\" aria-hidden=\"true\">' + st + '</span>' : IC.hang) + '<span class=\"lbl\">' + esc(g.lab) + '</span>';\n  }\n  /* a new dog's photo: it pops into the \"Add your dog\" circle, then grows into the fitting room (the same flight as a tag\n     from the phone menu into the personalizer: the fitting room's colour opens out of the circle while the photo flies to\n     about where the fitting room will show it). The fitting room sends the exact spot (\"meet\"); the photo settles there\n     and this layer fades, so the page underneath is never seen in between. */\n  var FLY = null;\n  function flyDog(file, go) {\n    var c = DRW && (DRW.querySelector('.nw-wr__addc .nw-wr__dg') || DRW.querySelector('.nw-wr__dg.add[data-a=\"adddog\"]')), r = c && c.getBoundingClientRect(), rm = false;\n    try { rm = matchMedia('(prefers-reduced-motion: reduce)').matches; } catch (e) { }\n    if (!r || !r.width || rm || !window.URL || !document.body.animate) { go(false); return; }\n    var u = URL.createObjectURL(file), im = new Image();\n    im.onerror = function () { URL.revokeObjectURL(u); go(false); };\n    im.onload = function () {\n      var E = 'cubic-bezier(.3,.7,.1,1)', D = 460, W = innerWidth, H = innerHeight, ar = im.naturalHeight / im.naturalWidth;\n      /* in the circle first */\n      var pop = document.createElement('img'); pop.alt = ''; pop.src = u; pop.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 25%;border-radius:50%;z-index:2';\n      c.appendChild(pop); pop.animate([{ transform: 'scale(.4)', opacity: 0 }, { transform: 'none', opacity: 1 }], { duration: 360, easing: 'cubic-bezier(.2,1.3,.45,1)' });\n      setTimeout(function () {\n        r = c.getBoundingClientRect();\n        var L = document.createElement('div'); L.style.cssText = 'position:fixed;inset:0;z-index:2147483600;pointer-events:none';\n        var bg = document.createElement('div'); bg.style.cssText = 'position:absolute;left:0;top:0;width:' + W + 'px;height:' + H + 'px;transform-origin:0 0;background:#f5f4f2;will-change:transform,opacity';\n        var f = document.createElement('div'); f.style.cssText = 'position:absolute;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,.12)';\n        var fi = im.cloneNode(); fi.style.cssText = 'width:100%;height:100%;object-fit:cover;display:block'; f.appendChild(fi);\n        L.appendChild(bg); L.appendChild(f); document.body.appendChild(L); pop.style.visibility = 'hidden';\n        /* about where the fitting room shows the photo: under its header, above the photo's name card and the row of pieces */\n        var bh = Math.min(W * 1.25, H - 193), bt = 60 + Math.max(0, (H - 193 - bh) / 2), h = Math.min(bh - 104, W * .84 * ar), w = h / ar, to = { left: (W - w) / 2 + 'px', top: bt + 14 + (bh - 104 - h) / 2 + 'px', width: w + 'px', height: h + 'px', borderRadius: '14px' };\n        var from = { left: r.left + 'px', top: r.top + 'px', width: r.width + 'px', height: r.height + 'px', borderRadius: '50%' };\n        bg.animate([{ transform: 'translate(' + r.left + 'px,' + r.top + 'px) scale(' + r.width / W + ',' + r.height / H + ')', opacity: 0, borderRadius: '50%' }, { opacity: 1, offset: .35 }, { transform: 'none', opacity: 1, borderRadius: '0' }], { duration: D, easing: E, fill: 'forwards' });\n        fi.animate([{ objectPosition: '50% 25%' }, { objectPosition: '50% 50%' }], { duration: D, easing: E, fill: 'forwards' });\n        f.animate([from, to], { duration: D, easing: E, fill: 'forwards' }); var gone = false, at = null, done = false;\n        var out = function () { if (gone) return; gone = true; FLY = null; L.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 260, fill: 'forwards' }); setTimeout(function () { L.remove(); URL.revokeObjectURL(u); }, 300); };\n        var land = function () { if (!at || !done || gone) return; var q = at; at = null;\n          f.animate([to, { left: q.x + 'px', top: q.y + 'px', width: q.w + 'px', height: q.h + 'px', borderRadius: '14px' }], { duration: 220, easing: 'ease-out', fill: 'forwards' }); setTimeout(out, 340); };\n        /* (timers, not finish events: those only come with drawn frames) */\n        setTimeout(function () { done = true; land(); }, D + 20);\n        FLY = { land: function (q) { if (q && q.w > 20) { at = q; land(); } else out(); } };\n        setTimeout(function () { go(true); }, 200);\n        setTimeout(out, 12000);\n      }, 420);\n    };\n    im.src = u;\n  }\n  function launch(photo) {\n    if (photo && !photo._flown) { photo._flown = 1; flyDog(photo, function (f) { if (f) photo._fly = 1; launch(photo); }); return; }\n    var extra = { dogId: photo ? null : selDog(), photo: photo || null, fly: !!(photo && photo._fly) };\n    var ks = KINDS.map(function (k) { return PK[k[0]]; }).filter(Boolean), V = view();\n    if (ks.length) { PICKED = ks.slice(); openFitting(V.filter(function (i) { return ks.indexOf(i.sig) > -1; }).map(fitOf), V.filter(function (i) { return ks.indexOf(i.sig) < 0; }).map(fitOf), '', extra); return; }\n    if (lastOk()) { resumeLast(extra); return; }\n    tryNewest(null, extra);\n  }\n  function pickToggle(sig) { var i = byS(sig); if (!i) return; if (!canTry(i)) { ctoast(T.noTry, null); return; } if (PK[i.kind] === sig) delete PK[i.kind]; else PK[i.kind] = sig; renderDrawer(); }\n  /* btn: the button's label (Undo when left out); long: a message that wraps to two lines and stays a little longer */\n  function ctoast(msg, undo, btn, long) { CT = { msg: msg, undo: undo, btn: btn, long: long }; clearTimeout(CTT); CTT = setTimeout(function () { CT = null; var t = DRW && DRW.querySelector('.nw-wr__toast'); if (t) t.classList.add('hid'); }, long ? 9000 : 4500); renderDrawer(); }\n  /* a pile laid out: its row slides so the cart pieces sit in the middle of the view (or start at the left edge when\n     there are more than fit) */\n  function layCenter(k) {\n    var lb = DRW && DRW.querySelector('.nw-wr__lb[data-k=\"' + k + '\"]'), r = lb && lb.nextElementSibling; if (!r) return;\n    var cs = r.querySelectorAll('.nw-wr__hdl, .nw-wr__laid'); if (!cs.length) return;\n    var rr = r.getBoundingClientRect(), a = cs[0].getBoundingClientRect(), b = cs[cs.length - 1].getBoundingClientRect(), w = b.right - a.left;\n    var to = w > rr.width - 40 ? r.scrollLeft + a.left - rr.left - 20 : r.scrollLeft + (a.left + b.right) / 2 - (rr.left + rr.width / 2);\n    r.scrollTo({ left: Math.max(0, to), behavior: 'smooth' });\n  }\n  /* a piece just added to the cart: its tick shows, then it moves to lead the cart pieces: on top of the folded pile (it\n     stays folded), or first of them when laid out. Quick taps are gathered (0.6 s): each one restarts the wait, then all of them\n     move together. */\n  function toPile(sig) { PEND.push(sig); clearTimeout(PT); PT = setTimeout(pileGo, 600); }\n  function pileGo() {\n    var sigs = PEND.filter(function (s) { return STAY[s]; }), byK = {}; PEND = []; sigs.forEach(function (s) { delete STAY[s]; });\n    if (!sigs.length || !WROPEN) return;\n    sigs.forEach(function (s) { var it = byS(s); if (it) (byK[it.kind] = byK[it.kind] || []).push(s); });\n    Object.keys(byK).forEach(function (k) { var ss = byK[k];\n      FIRST[k] = ss.concat((FIRST[k] || []).filter(function (s) { return ss.indexOf(s) < 0; }));\n      });\n    FLIP = sigs; renderDrawer();\n    /* the cart button stepped aside when it was tapped; it comes back on the card (laid out) or on the pile once it has landed */\n    sigs.forEach(function (s) { var b = DRW.querySelector('.nw-wr__rail [data-s=\"' + s + '\"] .nw-wr__cb'); if (!b) return; b.classList.add('gone');\n      setTimeout(function () { b.classList.remove('gone'); b.classList.add('pop'); }, 560); });\n  }\n  /* moving cards between the undecided and the cart pieces (both ways): the moved card lifts where it is on screen and\n     the row slides underneath it until the card's new place arrives, then it settles; pieces that appear fade in.\n     Positions are taken before and after drawing. */\n  function flipKey(el) { var r = el.closest('.nw-wr__rail'), lb = r && r.previousElementSibling, k = lb ? lb.getAttribute('data-k') : ''; return el.dataset.s || (el.classList.contains('nw-wr__hdl') ? 'hdl|' + k : el.classList.contains('nw-wr__pile') ? 'pile|' + k : ''); }\n  function flipFirst() { var m = {}; [].forEach.call(DRW.querySelectorAll('.nw-wr__rail > *'), function (el) { var k = flipKey(el); if (k) m[k] = el.getBoundingClientRect(); }); return m; }\n  /* the row is scrolled so the (first) moved card sits where it was on screen; it is kept inside the row, with the fold\n     handle in front of it when it leads the cart pieces. The glide then shows the row moving, not the card. */\n  function flipView(sigs, first) {\n    var c = DRW.querySelector('.nw-wr__rail [data-s=\"' + sigs[0] + '\"], .nw-wr__rail [data-top=\"' + sigs[0] + '\"]') || pileOf(sigs[0]), r = c && c.closest('.nw-wr__rail'); if (!r) return;\n    var h = c.previousElementSibling && c.previousElementSibling.classList.contains('nw-wr__hdl') ? c.previousElementSibling : c;\n    var rr = r.getBoundingClientRect(), a = c.getBoundingClientRect(), f = first[sigs[0]], d = f ? a.left - f.left : 0;\n    /* into a folded pile: the row moves so the pile keeps its place on screen (it is the piece's fixed target); the cards\n       before the gap close it while the piece flies */\n    if (c.classList.contains('nw-wr__pile')) { var pf = first['pile|' + c.dataset.k]; d = pf ? a.left - pf.left : a.left < rr.left + 12 ? a.left - rr.left - 12 : a.right > rr.right - 12 ? a.right - rr.right + 12 : 0; if (d) r.scrollLeft += d; return; }\n    d = Math.min(Math.max(d, a.right - rr.right + 12), h.getBoundingClientRect().left - rr.left - 12);\n    if (d) r.scrollLeft += d;\n  }\n  /* positions are compared by their centres, so a card caught mid-lift (a little larger) carries on from its size too */\n  /* the folded pile of a piece's row (a piece that went into the pile under the picked one has no card of its own) */\n  function pileOf(sig) { var it = byS(sig), lb = it && DRW.querySelector('.nw-wr__lb[data-k=\"' + it.kind + '\"]'), r = lb && lb.nextElementSibling; return r && r.querySelector('.nw-wr__pile'); }\n  /* copies taken before drawing, of the moving cards and of their rows' folded piles: a card that goes into a folded pile\n     is not a card any more, so its copy makes the trip */\n  function ghosts(sigs) {\n    var o = { g: [], p: {} };\n    sigs.forEach(function (sg) { var el = DRW.querySelector('.nw-wr__rail [data-s=\"' + sg + '\"]'), it = byS(sg), pl = pileOf(sg);\n      if (el) o.g.push({ sig: sg, el: el.cloneNode(true), r: el.getBoundingClientRect() });\n      if (it && pl && !o.p[it.kind]) o.p[it.kind] = { el: pl.cloneNode(true), r: pl.getBoundingClientRect() }; });\n    return o;\n  }\n  /* on top: the piece lifts, travels to the pile and settles on it (the pile shows its old top until then); under the picked\n     piece on top: it slides in under the pile. Measured before the other moves start, so it goes to the pile's new place. */\n  /* the pile's badge was there all along: it only gives a small bump when a piece lands */\n  function bumpCb(p) { var b = p.querySelector('.nw-wr__cb'); if (b && b.animate) b.animate([{ transform: 'none' }, { transform: 'scale(1.2)' }, { transform: 'none' }], { duration: 320, easing: 'ease-out' }); }\n  function tuck(o) {\n    if (calm()) return;\n    var D = 620, ez = 'cubic-bezier(.65,0,.35,1)', fix = function (e, r, z) { e.style.cssText = 'position:fixed;left:' + r.left + 'px;top:' + r.top + 'px;width:' + r.width + 'px;height:' + r.height + 'px;margin:0;z-index:' + z + ';pointer-events:none;animation:none'; DRW.appendChild(e); return e; };\n    o.g.forEach(function (g) {\n      if (DRW.querySelector('.nw-wr__rail [data-s=\"' + g.sig + '\"]')) return;\n      var p = pileOf(g.sig); if (!p || !p.animate) return; var b = p.getBoundingClientRect(), dx = b.left - g.r.left, dy = b.top - g.r.top, it = byS(g.sig), op = it && o.p[it.kind], e = fix(g.el, g.r, 2);\n      if (p.dataset.top === g.sig) {\n        /* one motion: the piece lifts and lands on the pile (which shows its old top until then, and keeps its badge); a pile\n           that still has to move (the row could not scroll far enough) moves at the same time */\n        var u = op ? fix(op.el, op.r, 1) : null, end = function () { p.style.visibility = ''; e.remove(); if (u) u.remove(); bumpCb(p); };\n        p.style.visibility = 'hidden';\n        if (u) u.animate([{ transform: 'none' }, { transform: 'translate(' + (b.left - op.r.left) + 'px,' + (b.top - op.r.top) + 'px)' }], { duration: D, easing: ez, fill: 'forwards' });\n        e.animate([{ transform: 'none', boxShadow: '0 0 0 rgba(0,0,0,0)' }, { offset: .5, transform: 'translate(' + dx / 2 + 'px,' + (dy / 2 - 10) + 'px) scale(1.08)', boxShadow: '0 14px 24px rgba(0,0,0,.18)' },\n          { transform: 'translate(' + dx + 'px,' + dy + 'px)', boxShadow: '0 0 0 rgba(0,0,0,0)' }], { duration: D, easing: ez, fill: 'forwards' }).finished.then(end, end);\n        return;\n      }\n      e.style.zIndex = 1; p.style.zIndex = 4; p.style.position = 'relative';\n      e.animate([{ transform: 'none', opacity: 1 }, { offset: .7, opacity: 1 }, { transform: 'translate(' + (dx + 10) + 'px,' + dy + 'px) scale(.94)', opacity: 0 }], { duration: D, easing: ez, fill: 'forwards' })\n        .finished.then(function () { e.remove(); p.style.zIndex = ''; bumpCb(p); }, function () { e.remove(); });\n    });\n  }\n  function flipPlay(first, sigs, dur, cont) {\n    if (calm()) { sigs.forEach(function (sg) { var el = DRW.querySelector('.nw-wr__rail [data-s=\"' + sg + '\"], .nw-wr__rail [data-top=\"' + sg + '\"]'); if (el && el.animate) el.animate([{ opacity: 0 }, { opacity: 1 }], { duration: 200 }); }); return; }\n    var ez = cont ? 'cubic-bezier(.2,.6,.35,1)' : 'cubic-bezier(.65,0,.35,1)';\n    [].forEach.call(DRW.querySelectorAll('.nw-wr__rail > *'), function (el) { var k = flipKey(el); if (!k || !el.animate) return; var f = first[k], l = el.getBoundingClientRect();\n      if (!f) { el.animate([{ opacity: 0, transform: 'scale(.85)' }, { opacity: 1, transform: 'none' }], { duration: 300, easing: 'ease-out' }); return; }\n      var dx = f.left + f.width / 2 - l.left - l.width / 2, dy = f.top + f.height / 2 - l.top - l.height / 2, sc = l.width ? f.width / l.width : 1, mv = sigs.indexOf(k) > -1;\n      if (!mv && Math.abs(dx) < 1 && Math.abs(dy) < 1) return;\n      if (!mv) { el.animate([{ transform: 'translate(' + dx + 'px,' + dy + 'px)' }, { transform: 'none' }], { duration: dur, easing: ez }); return; }\n      var lift = Math.max(0, Math.min(1, (sc - 1) / .08)), from = { transform: 'translate(' + dx + 'px,' + dy + 'px) scale(' + sc + ')', boxShadow: '0 ' + 14 * lift + 'px ' + 24 * lift + 'px rgba(0,0,0,' + .18 * lift + ')' };\n      el.style.zIndex = 3;\n      el.animate(cont ? [from, { transform: 'none', boxShadow: '0 0 0 rgba(0,0,0,0)' }] : [from,\n        { offset: .5, transform: 'translate(' + (dx / 2) + 'px,' + (dy / 2 - 10) + 'px) scale(1.08)', boxShadow: '0 14px 24px rgba(0,0,0,.18)' },\n        { transform: 'none', boxShadow: '0 0 0 rgba(0,0,0,0)' }], { duration: dur, easing: ez }).onfinish = function () { el.style.zIndex = ''; };\n    });\n  }\n\n  function cartToggle(sig) {\n    var i = byS(sig); if (!i || CBUSY[sig]) return; var ln = isCartOnly(sig) ? cartLine(i._cart) : lineOf(i);\n    if (ln) { var keepL = ln; CBUSY[sig] = 1; renderDrawer(); cartOut(ln.key).then(function () { delete CBUSY[sig]; delete STAY[sig]; FLIP = [sig]; ctoast(T.removed, function () { cartBack(keepL).then(renderDrawer); }); }, function () { delete CBUSY[sig]; renderDrawer(); }); return; }\n    if (isCartOnly(sig)) return;\n    CBUSY[sig] = 1; ADDG[sig] = 1; WAITT[sig] = Date.now(); clearTimeout(PT); renderDrawer();\n    addToCart(i).then(function () { delete CBUSY[sig]; delete ADDG[sig]; STAY[sig] = 1; toPile(sig); ctoast(T.added, function () { var l = lineOf(i); if (l) cartOut(l.key).then(renderDrawer); }); }, function () { delete CBUSY[sig]; delete ADDG[sig]; renderDrawer(); if (PEND.length) PT = setTimeout(pileGo, 600); ctoast(T.addFail, null); });\n  }\n  function delAskHTML() {\n    var sel = SELD.map(byS).filter(Boolean), c = sel.filter(function (i) { return inCart(i) || isCartOnly(i.sig); }).length;\n    return '<div class=\"nw-wr__psbg in\" data-a=\"delcancel\"></div><div class=\"nw-wr__ps in\" role=\"dialog\" aria-label=\"' + esc(T.delAskT(sel.length)) + '\"><div class=\"nw-wr__grab\"></div>' +\n      '<div class=\"nw-wr__psh\"><b>' + esc(T.delAskT(sel.length)) + '</b></div><div class=\"nw-wr__asks\">' + esc(T.delAskS(c, sel.length)) + '</div>' +\n      '<button class=\"nw-wr__opt\" data-a=\"delkeep\"><span class=\"oi\">' + IC.trash + '</span><span class=\"ot\"><b>' + (c === 1 ? T.keepC1 : T.keepC) + '</b><i>' + T.keepCs + '</i></span></button>' +\n      '<button class=\"nw-wr__opt\" data-a=\"delboth\"><span class=\"oi\">' + IC.cartx + '</span><span class=\"ot\"><b>' + (c === 1 ? T.bothC1 : T.bothC) + '</b><i>' + T.goneB + '</i></span></button>' +\n      '<button class=\"nw-wr__psd\" data-a=\"delcancel\" style=\"color:#2e2e2e\">' + T.cancel + '</button></div>';\n  }\n  /* \"A good photo of your dog\": shown the first time a dog is added (here or in the fitting room), with the privacy note;\n     its button opens the photo picker straight from the tap. After that, \"Add your dog\" opens the picker at once. */\n  var SILS = { sit: 'M145.6 6.2q0 .3.6.9c1 1 .5 1-2.3.1-6.6-2.1-12.2-.8-24.1 5.7-1.8 1-5.6 2.9-8.4 4.1-7 3.2-8.6 4.9-9.5 10q-.8 5.6 1.8 5.6c.8 0 4-1.1 5-1.8 5-3.1 5.7-3.2 8-.7 1.7 2 2.4 3.4 3.9 7.5 2.3 6.4 4 8.5 7.3 8.5q2.7 0 1.6 2.1c-1 1.8-1.7 6.5-1.1 6.5l1.7-1.4q1.6-1.5 1.8-1 .3.2-.4.8l-.4.5.7.1q.5-.2.3 2-.1 3 .8 1.6c.5-.6.7-.3 1 2 .3 2 .3 2 1.2 2 1 0 1 0 1 .6l-1.8 5.4-1 2.3q-.9 1.7-1 2.5l-1.7 3.1a9 9 0 0 0-1.2 2.6q.3.1 1.7-.3c1.9-.7 2-.5 1.2 1.2-1 1.9-1.9 4.6-1.9 5.6s0 1 1 0c1.7-1.4 3.3-1.8 2.6-.5-.6 1 .4 9 1.1 9q.3-.1 1-1.1 1.3-2.8 1.7 1c.3 2.6.9 4.8 1.2 5.2q.2.1.7-.7.9-2.2 1.8.5 3 8.1-2.3 16.2c-1.6 2.3-3 5.2-3.8 7.4-.7 1.8-.7 2.2-.1 2.2q.3 0 .4-.3 0-.2.3-.2c.3 0 0 1.5-.6 3l-.8 2.7-.5 1.8q0 .5.3.5.5 0 .5-.3c0-.3 1.3-1.2 1.5-1l-.1 1.6c-.2.8-.5 2.8-.6 4.5-.2 1.6-.6 4-1 5.2a84 84 0 0 1-4.5 10.4q-4.6 10-2.8 8.1 1.5-1.4.1 2.1c-1.5 3.8-2.6 9.2-1.8 9.2l1.2-1.5q2-2.7 1.8-.7c-.7 4.5-.8 6.3-.7 9.8.2 5.3 2 15.8 3.3 21.2q.7 2 1 1l.2-1.7q.4-2 .9-.8l1.8 3.9c1.9 4 1.9 4 0 6.6q-1.9 2.4-2.4 4.7c-.3.9-.3 5.3 0 6.1q.5 1.5-1.5.4c-3.4-1.7-7-2.4-7-1.4q0 .5.4.5c.7 0 1.9 1.3 1.8 2s-.4.8-2.1 1.3c-2.3.7-4.3 2.3-2.9 2.3.8 0 .7.7 0 1.2q-.7.4-.7.6-.1.4-1.1 1.9c-2.9 4.3-4 7.4-5 14.7q-.5 3.8-.2 4.4l.3 2.4c0 1.5.1 1.8.5 1.8q.5 0 .5-.6c0-1.2.5-.4.8 1.3l1.3 4.4c.5 1.5 1 3 1 3.4q0 .8.4 1.2.8.6 0 1l-1 .2a45 45 0 0 1-7.7-2.1c-10-4-18.6-11.8-23.7-21.7l-1.7-2.8q-.6 0-.6 2.5 0 1.2-.3 1.3c-.3 0-3-3.5-5-6.5l-1.6-2.3q-.6-.2-1.4 2.4c-2.8 8.7-2.8 18.4.1 24 1.2 2.4-.1 2-2-.6q-3.3-4.4-.1 4.3c1 3.1 4.6 8.2 6.8 10 1.7 1.3 0 1.2-2.2-.1q-2.3-1.5-.9.5c2 3 6.6 6.9 9.8 8.4q3 1.6 0 1.6-2-.2-.6.7a23 23 0 0 0 11.2 3.7l3 .4q.3.5-1.6 1-2.6.6-.2 1c3.6 1 12.3 1.1 17.4.4 2.6-.4 2.7-.3 1.5 1-3.8 4.3-4.3 10-.8 10q.9 0 1.5.5c1 .6 6.6.8 9.2.4l3.8-.5c4.8-.5 7-2.8 10.1-10.3 1-2.5 1.3-2.7 3.3-2.9l3.6-.3c2.3-.2 2.5 0 2.5 2.5 0 5-1.4 9.4-4 12.2-3 3.4-4.2 8.5-2.4 10.3.7.7 1 .9 2 .9q1 0 2.4.7a25 25 0 0 0 12.9.5c.6-.2 1.8-.4 2.6-.4 5.6 0 7.6-4.5 5.4-11.6-.8-2.4-.8-2.7-.5-3.4.7-1.3.5-3.8-.5-6.5-1.6-4.8-1.7-5.2-1.3-6.6.4-1.7.3-1.6 1.6-.9 1 .7 1 .7 11.4.7 11 0 11.6 0 13.2-1.5q1-.9 1-.2c.5 1-.1 4.7-1 7-1 2.7-1.6 6-1.1 7.6.3 1 .2 1.5-.4 3.4-2.3 7.3-.1 12 5.6 12q1.4 0 2 .3a26 26 0 0 0 15.1-1c4.5-.2 4.5-6.2 0-11.4a15 15 0 0 1-2.9-5.6c-1-3.2-.4-3.6 3-2.3 2.2.9 3 1.4 5.1 3.4 2.4 2.2 4.1 3 7 3.3l4.2.6c2.1.4 5.6.1 6.7-.5q.8-.3 1.8-.3 3 0 2-5.1c-1.2-5.5-3.2-7.4-11.4-10.8-1.7-.7-3.6-1.7-4.1-2.1-1-.8-1-.9-.9-2.3.3-2.2.5-3 2.4-5.6 8-11.1 11-17.8 11.5-25.2q.2-3.9 1-1.9.4.7.7.7c1 0 .4-7-1.1-12.3a24 24 0 0 0-5.8-9.6c0-.5.8-.6 1.3-.1q.3.2.5.1c.7-.7-4.1-3.2-7-3.7-1-.1-1-.2-.8-1.3.2-1.6-.2-1.6-3.5-.2l-2.7 1v-2c.7-6 .1-9.2-2.4-13-1.3-1.9-1.4-2.3-.6-3.3l1-1.6 1-1.5.7-1.3 1-1.7c5.6-8.8 6.7-24.7 2.8-38.4-.3-.7.6-.9 1.2-.2l.6.4c.7 0-.1-2.7-2-6.8l-.8-1.9-2-4.4a25 25 0 0 1-3-8.4c-.6-2.6-.8-4.4-.6-4.6l1 .7q.7.9 1 .7c.4-.4-1.6-6.6-3-9.1q-.6-1.3 1-.6l1 .4c1 0-2-5.3-4.7-8.8a22 22 0 0 1-5.5-11c-1-5-.4-8.1 2.1-13 1.1-2 1.6-2.3 2.4-1.3l.6 1q0 .3.5.2c.8 0 1.4-4 1-7q-.3-2-.2-2.3.2-.1 1.4.5t1.4.5c.2-.3-.4-2.1-1.5-4q-1.6-3 .5-2.4c1 .2 1 .2-.7-2.4l-1.5-2.6-.5-1c-1-1.1-2.8-6.8-2.5-7.6q.1-.4 1.7.2 2.6 1.1 1.3-.5-.5-.7-.7-1.5l-.4-.8c-.3 0-1-2-.8-2.1s2.3.8 2.7 1.4q1 1.2 1.2-1v-2.4q-.2-1.5.7-.5.4.4.6.4c.4 0 .3-2.2-.1-3.4q-.8-2 .8-1.2c1.6.6 3.3 0 2-.6q-2-1-1.1-1.7.4-.5 1.3-1c1.8-.7 3.8-2.9 7.3-7.8 5.1-7.3 5-7.2 7.7-3.7 3.3 4.2 6.6 7 8.1 7 2 0 2.9-7.3 1.4-11.3-1-2.7-2.2-3.9-5.7-6a57 57 0 0 1-9.3-7 35 35 0 0 0-12.4-7.7c-1.9-.5-1.9-.5-1.2-1 1.5-1.2-2.6-1.2-6.2 0q-2.7.9-2.6-.3 0-.7-.3-.7c-.6 0-4 2.2-4.9 3.2q-1.4 1.6-1.4.4.2-1.1-1.4.4a26 26 0 0 0-4.9 6.5c-2 3.8-2.6 4.1-6.2 3-8-2.7-17.7-3.1-25.3-1.2-2.3.6-3 .5-4-.4q-.7-.8-.6-1.3t-.4-1.1l-.6-1c0-.7-5-7.4-5.5-7.4q-.3.1-.1 1.1.3 2.1-1 .2c-2.1-3-7.5-7.6-7.5-6.4', stand: 'M183.1 6.7c-4.2.8-7.1 2-12 5.1a74 74 0 0 1-10.5 5.6l-4 1.6c-4.8 2-7.2 5-8.2 10-.7 3.9-.5 7 .6 8 2.1 2.3 5 1 11.2-4.8q2.2-2 3-2c1.4 0 3.4 3 5.2 8 2 5.6 3.9 7.8 7.5 8.7l2 .5q.6 0 .4 1L178 50q0 .6-.6 1.5a13 13 0 0 0-1 5.1q.3.2 1.1-.6.8-.7 1.3-.6c.5.2.8 2 .5 3.5q-.3 1.8.8.4.6-1 .8 0l.5 1c.2.2.5 1.2.5 2.1.4 3.2.7 3.4 1.7 1.4s2.5-2.3 2.1-.4c-.6 3.7-2.2 7.3-5.3 11.7-2.2 3.1-2.3 3.6-.3 3 2-.8 2.2-.7 1.2 1.2a15 15 0 0 0-1.5 7.6q-.2 2.3 1.6-.5 1.1-1.5 1.8-1.5c.6 0 .6.1.7 2.8.2 2.4.3 3.1 1 4.8q1.4 3 1.7.7c.3-1.5 1.1-3.4 1.5-3.4s1 2 1 3q0 2.7-3.9 5.7c-1.6 1.3-1.7 1.5-.7 1.7q.6.2.7.7c0 .6-.4.8-6.6 3.8-3.3 1.6-5.2 3.1-4.6 3.7.6.5.4 2-.2 2.7q-1.7 1.5-22.6.5a40 40 0 0 0-25.6 7.7q-2.8 2-9.2 8.2-.9.7-1.8.9c-3 .5-8.5 4.4-10.2 7.3-1 1.7-.9 1.8 1.3 1 1.9-.6 3.5-.8 3.5-.4q-.2.4-2 1.6c-3.2 2-6.6 5.8-8.8 9.6l-2.8 4.5c-2.8 4.3-4.8 8.7-4 8.7q.4-.1 2-1.4 4.5-3.4 1.7.4A31 31 0 0 0 90 171q-.6 2.8.7 1.9 1.4-.8.5 1l-1.2 2.7c-.8 2.4-1.5 2.7-6.4 2.9-9.6.4-19.7-3.5-28.8-10.9a55 55 0 0 1-12.2-15q-.5-1-.8 3.1-.2 4.9-1.3 2-.4-1-.7-1.2s-.8-1-1.4-2.5l-1.6-3-2-4.5c-.6-2-.7-2-3.5 3-3.5 6.1-4.5 16-2.2 22.2.6 1.6 1.8 4.1 2.3 4.9q1 1.2.2 1c-.7 0-4-3.4-5.7-5.9-.5-.8-.2 2.5.5 4.7 1.6 5 4 8.8 8.2 12.8q6.4 5.9-.8 2.3-2.9-1.5-1.8.2c2 4 7.3 8 12.9 10 3.8 1.4 3.9 1.4 3.9 1.7s-1 .6-4 .8-3 .4-.8 1.6c2.8 1.5 8.2 3.2 11.5 3.5 2.9.3 4 .8 2.3 1-.7.2-3.3 1.3-3.3 1.6 0 1 8.2 1.2 12 .4 1.8-.4 4.8-1.3 6.6-2q.6-.3.6.2c0 .6-2.7 4.3-4 5.3q-1.7 1.6-.3 1.4l2.3-.4c2.2-.4 7.1-2.3 8.1-3 2-1.7 1.8-.6 0 1.8-1.7 2-1.8 2.2-.7 1.9a25 25 0 0 0 9.2-5.6q2.2-2.3.4 3.1c-2.2 6.5-3.4 12.2-2.5 12.2q.5 0 .5-.2l1.1-1.5q3-3.3.2 3.5c-1 2.5-1 2.5.3 2.3 1-.1 1-.1.9 1a20 20 0 0 1-5 10.1c-4.7 5-5.1 6.4-6 18.1a83 83 0 0 1-1.2 9.2c-.4 1.8-1 4-1 4.6-.5 2-2.2 7-4.3 12.2s-2.5 7.4-1.8 9.7c.5 1.7 2 3.5 3.6 4.2a40 40 0 0 0 20.3.7c2.8-.5 3.8-1.5 4.3-4.2a13 13 0 0 0-3.6-10q-1-.8-1.2-1.3l-.4-.8c-.5-.6-1-4.4-.5-5 .2-.2.3-1.3.3-2.4q0-2.1.5-2.9t.3-1.7q-.3-2 2.2-9.4l2.2-7.1a45 45 0 0 1 10.5-20.7l6-7.5a149 149 0 0 0 18.4-29c2.5-5 3.1-5.9 3.6-4.7.1.2 0 1.4-.4 2.6q-1.1 3.8 1.3 1.1c2.4-2.3 2.6-2.2 2.4 4v5.3h1.5c1.9 0 2 .3 2 5.8.1 8.6-2.9 15.8-10.3 25.3-3.7 4.6-3.8 7.4-.7 14.5.9 1.8 5.6 14.5 6.6 17.6 1 2.8 2 7 2.5 9.7 1.2 6.9 3.6 8.6 12.6 9.2 7.6.5 14.1-.1 16.1-1.4 2.2-1.4 1.9-5.7-.7-8.7-2.2-2.7-3.2-3.2-8.2-4.6-2.7-.7-4.3-2.6-6.4-7.6a37 37 0 0 1-3.3-14c-.3-6.7.5-8.7 6.1-14.4 7.8-8 12.4-15.2 15-23.2 2-6.4 2.4-10.4 1.2-14.6q-1.3-4.4-.3-4.2 1.5.2 2.2 2c.5 1.6 1.4 1.6 1.4 0q0-2.8 1.5 1.6c1.1 3 1.3 4.4.7 5.1q-.4.5-.3.8.1.5-1 2.5c-2.1 4-2.7 7.3-2.1 12.9q.3 2.8 1 1 .4-.7.7-.7c.4 0 .5.5 1.3 5.6.6 4.6 1 5.9 1.5 6.5.3.3.8 1.5 1 2.7.4 1.2.7 2.5 1 3 .3 1 .8 6.2.8 8.5 0 3.4.7 4.6 1.4 2.4q.6-2 1.3-1.3a102 102 0 0 1 3.7 22.4c.2 4.7.3 5.3 1.3 8.3 2.1 6.4 1.7 11.2-1.7 20-2.3 5.6-1.5 9.7 2.3 11.3 3 1.2 8.1 1.9 13.7 1.7a39 39 0 0 0 9-1q7.2-1 5.1-9.3a24 24 0 0 0-4.4-9.6c-1.5-1.7-2.7-8.1-2.7-14.5 0-4.2 0-4.2-1.6-8.8-.9-2.5-1.8-5.6-2-6.8a115 115 0 0 1-1-26.3c.8-5.3 1.7-10.6 2-11 .6-.7.5-10.6 0-11.7q-.6-.7-.6-1.2c0-.5 3.9-4.3 4.5-4.5q1 0 .2 1.4c-1.3 1.8-.7 1.8 3.2.1 2.2-1 2.2-1 2.8-.4s.6.6 1.7.1c.6-.2 1.6-.5 2.2-.5q1.4-.2 1 .7 0 .7-.5 1.3c-.6.6-.6 1-.6 4.3 0 2 0 3.7.2 3.8q.4 0 1.5-1.8 2.4-3.5 2.4-1l-.1 5c0 5.3.8 8.1 1.6 5.4q.8-2.6 1.2.3.1 2 2.2 9c.8 2.9 1.8 20.7 1.5 27.2a25 25 0 0 1-1.2 8.3c-.5.6-1 4.8-.8 6.2.1 1.6 1.4 4.8 2 5.5a6 6 0 0 1 1.5 3.4q.1 1.3.4 1.7c.1.2.3 2.4.4 5 .1 5.4.5 6.7 2.5 8.8 2.7 3 7.7 4 18 4s14-1.9 13.5-7q-.7-5.6-7-8.7c-3.5-1.7-4.6-3-6.8-7.3a23 23 0 0 1-2.3-7.8l-.8-6.4a104 104 0 0 1 3-36.6c3.3-13.6 3.5-20.2 1-27.4-.6-1.4-1-3-1.3-3.5-.5-1.4 0-2.7 2-6a40 40 0 0 0 5.5-13.7c.2-.2.7 1.3.7 1.8 0 1.2.8 0 1.7-2.5 2.4-6.8 2.6-18.9.3-24.7-1-2.7 2.5 1.2 3.7 4q1.1 3 1-1c0-2.7-1-6.4-2.5-9l-1-2q.2-.6 1.4.4 1 1 .5-.5c-.3-1.3-2.1-5.2-4-8.4-2.3-3.5-3.4-6.8-2.6-6.8.4 0 2.2 2.2 2.5 3 .6 1.8 1.1-1.6.7-5.3-.3-3.2-.7-4.5-2.3-7.8q-2.3-4.4 1-1.8l1.7 1c.3-.4-1-4-1.9-5.4-.4-.8-1.9-2.7-3.2-4.4-5.8-7.2-6.6-10.5-3.9-16.2 1.2-2.4 1.5-2.8 2-2.7q.6 0 1-.9.3-1 .8-1.2.5-.3.5-.7.2-1 1 .4.3.8.5.9c.6 0 1.2-3.3 1.3-6.4 0-3.6.3-4.2 1.3-3.3q1.3 1.4 1.1-.3c0-1-1-3.7-2-5q-1.2-1.5.7-1.7 1-.2 1-.4l-2.4-3a16 16 0 0 1-2.5-3.2c0-.8.9-1 1.5-.3q1 1.5 1.3-.4l1-3a7 7 0 0 0 .2-3.5c-.5-3.3-1.2-6-1.9-6.7-.9-1-.9-1.8 0-1.5 1.2.4 2.6.7 3.3.7.8 0 1-.8.2-1.5l-.4-.7q-.1-.5-1.5-1.7-2.2-2-.6-2.2c2.4 0 6.2-3.3 9.8-8.6 3.4-5 4.2-6 5.3-6 .9-.2.7-.4 4.1 3.8l3 3q7.9 6.8 8-3.9c0-7-1.6-9.8-7.8-13a63 63 0 0 1-9.6-6.5 31 31 0 0 0-12.9-7.2c-2.8-.7-6.8-1-9.1-.6q-2.6.6-.5-1.5.7-.8.7-1.1c-.4-.4-4.7 1.4-6.6 2.8l-1.5 1q-.6.2-1.5 1.4t-1.5 1.2c-.7-.1-4.4 5.8-4.4 7.1q-.1.3-1 1c-1 .8-1 .8-4 0a51 51 0 0 0-20.7-1c-5.1.7-5 .7-5.8-.8l-1.6-3.5a12 12 0 0 0-2.3-3.8q-1-1.8-1.1-.7t-1.3-.6c-1.2-2-4.7-5.2-5.3-4.6l.5 1.1q1.9 2.8-1.6.6-2.9-1.7-6.7-2l-2.8-.2c-.5 0-2 .1-3.3.4', lie: 'm220.5 103.4.4.7q1 1.1-1.1.6c-5.2-1.8-9.4-1-18.2 3.5l-8 4c-4.6 2-5.8 2.9-7 5.4-2.4 5.4-1.3 13.5 2 13.5 1 0 3.8-2.4 4.6-3.8s2.7-3.7 3.3-3.8c1-.3 1.3 0 2.8 2.8a14 14 0 0 0 5.2 6.1c1.7 1 2 1.5 1 2.3l-1.9 1.5c-1 .9-1.3 1-2 .9-1.1-.3-7 .3-9.1.9-5.9 1.5-10.9 4-10.7 5.2.2 1-5.2 1-8.2.2l-1.6-.4c-.5 0-.6 1.3-.1 2 .4.8.4.8-1 .6-3-.4-7.2-2.2-10.2-4.5q-2.5-2.2-1.3 1.6c.3 1.3-2 .4-14.3-5.4-13.4-6.5-18.4-8-27.3-8-8 0-15.1 2-23.8 6.7-2.2 1.3-2.4 1.6-1.1 1.7q1.6.2 1.4.8c0 .2-1.5 1-3 1.7a32 32 0 0 0-8.6 6.2 56 56 0 0 0-6.5 7.8q0 .3 1.3.1h1.3q-.2.4-2 2c-3 2.8-5.2 6.3-6 9.5q-1.2 3.3 1 1 1.6-1.5 2.2-1.1c.2.2-.2 1.5-.8 2l-.5.7q0 .3-.5.8t-.4.6c.5 1-2.3 3.6-5 4.8a32 32 0 0 1-15.6 1.3 39 39 0 0 1-12.4-5.3c-3.4-2.2-8-6.9-8.1-8.3q0-.5-.6-1a23 23 0 0 1-4-8.8q-.5-3.2-1.4-.4c-1.2 3-1.7 6.4-1.5 8.7.2 1.8 0 2-1.2 1.5-2.5-1-7.6-8-8.8-12q-.2-1.1-.6-1.2a30 30 0 0 0-4.4 16.3q.3.4.4 1.4a33 33 0 0 0 3.2 8.2c1.1 1.2 1.3 2 .4 1.4a36 36 0 0 1-5.9-4.5c-.3 0-.3 1 0 1.6a23 23 0 0 0 8.4 10.8q3.9 2.7-2.6.2l-2.5-.8c-.2.2 2 3.3 3.7 5.1a32 32 0 0 0 9 6.5q2.4 1.3 2.6 1.7c-.1.3-2 .4-4.2 0l-1.5-.1 1 .8a27 27 0 0 0 11.2 4.6c2.6.5 3.4.5 7 .4h4.2c.1.2-.4.7-2.7 2l-1.8.8-1.6.7c-.7.7 4.1 1.6 8.5 1.6 5 0 8.7-1 13-3.4 1.6-1 3-1.7 3.2-1.7q.4.2-.7 2.4c-1 1.7-1 1.6-.2 1.6 1.8 0 7.8-4 10.4-7 1.5-1.7 4.4-5.9 4.4-6.3q0-.2.4-.2c.3 0 .3.4.2 2.4-.2 2.7 0 5 .5 5l1-1.2q1.5-2.4.4 1.3-1.6 5 1.2 7.8c2 2.2 4.5 2.7 9.8 2.2 8.6-.8 16.5-.3 21.6 1.4 4.6 1.6 4.6 1.6 15 1.6 9.2 0 9.8 0 10.8-.5 1.7-.9 2.1-1.7 2-4.1a12 12 0 0 0-5.6-9.5c-2.5-1.4-1.7-2 .8-.5 1.8 1 4.4 3.5 5.1 5.1l.7 1.4a68 68 0 0 0 28 1.1q3.4-1.3 1.2 1c-1 1.4-1 1.5 1.2.9a9 9 0 0 0 5.2-4c1.4-2.1 1.9-.6.7 2l-.7 1.6c0 .4 2.3-.6 3.3-1.5q1.1-1.3 1 .7-.1 1.3.7 2.5 1.5 2.7 1.2 0c-.2-2 0-2 1.7-.3a11 11 0 0 0 5 3.2c2.5.9 2.7.7 1.6-.6q-2.2-2.8.4-1.3c6 3.3 10.3 3.5 41.6 1.9 3.1-.2 8.9-.3 12.7-.3 8-.1 9.4.1 13.1 1.8 7.2 3.2 7 3.1 17.9 3 10.9-.3 13-.9 14.7-4.2.6-1.4.6-1.4 2-1.2 4 .4 12.2.4 14.7 0q8.1-1.3 8-6.7-.1-7.2-10.5-8.6c-4-.4-9-1.5-11.8-2.5-9.4-3.2-16.5-5-24-6-2.8-.3-2.8-.3-1.9-1.9q1.3-1.8-.6-1.4-2.4.2-1-1.2l1-.5c.4 0 3.1-3.5 4-5.2.8-1.9 1-2 1.6-1.2q.4.6.7.4c.3-.2.8-1.8.8-2.9q-.2-1 1.2-.3.8.3 1.1-.2c.5-.8.4-5.4-.3-7q-1-2.5 1.8-1.5 1.2.5-1-2.7-3.7-5.3-3-5.8.1-.4 1.4.9 1 1 1.4 1c.2-.2.6-3.7.7-6.3q0-1.1.4-1.2l.5-.1c.3 0 .4-1.3.1-1.3l-.6.4q-.6.7-.8-.2l-.2-1.9c0-1.2 0-1.2.9-1l1.5.8q1.4.8.6-1l-.4-1-1.3-2-1.3-2c0-.2 1.8-.9 2.3-.9 1.6 0 5-2.7 6.8-5.4q2.5-3.7 3.7-3.9c1 0 2.2 1.7 4.4 6 1 2.1 2.7 4 3.6 4.3 2.2.5 5-4.9 5.3-10 .3-4.6-.8-6.4-5.8-9.6-1.7-1-4.3-2.8-5.8-4-6-4.7-7-5.4-9.4-6.5a19 19 0 0 0-9-2.1q-3.4.2-1.2-1.4 1-.6 0-.6a13 13 0 0 0-6.4 3q-1.5 1.4-1.5.2c0-1.4-3.6 2.7-5.2 6l-1.3 2.5-1.3-.4a48 48 0 0 0-18-2c-3 .3-3.6 0-4.2-1.4-.7-2-2-5-2.6-6.4q-.9-2-1.5 0-.1.2-.8-.5-2.1-2.8-4.3-4.3-2.3-1.5-2.5-1M125 189l-.5 1.5c-.4 1.2-.4 1.2.3 3 1.3 3.2 1 3.5-2 3.5l-4.7.3c-4.5.5-8 .6-8 .4s1.4-.9 3.1-1.6a37 37 0 0 0 11.1-7q.5-.5.7 0' };\n  function tipsSeen() { try { return localStorage.getItem('nw-fr-tips') === '1'; } catch (e) { return true; } }\n  function tipsDone() { try { localStorage.setItem('nw-fr-tips', '1'); } catch (e) { } }\n  function openTips() {\n    var o = document.createElement('div'), ok = '<span class=\"nw-tips__m ok\"><svg viewBox=\"0 0 24 24\"><path d=\"m5 12.5 4.5 4.5L19 7.5\"/></svg></span>', no = '<span class=\"nw-tips__m no\"><svg viewBox=\"0 0 24 24\"><path d=\"M7 7l10 10M17 7 7 17\"/></svg></span>',\n      tile = function (k, m, l) { return '<div class=\"nw-tips__i\"><span class=\"nw-tips__p\"><svg viewBox=\"0 0 320 320\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"' + SILS[k] + '\"/></svg>' + m + '</span>' + l + '</div>'; };\n    o.className = 'nw-tips'; o.setAttribute('role', 'dialog'); o.setAttribute('aria-modal', 'true'); o.setAttribute('aria-label', T.tipT);\n    o.innerHTML = '<div class=\"nw-tips__sh\"><div class=\"nw-tips__gr\"></div><h2 class=\"nw-tips__t\">' + T.tipT + '</h2><div class=\"nw-tips__g\">' + tile('sit', ok, T.tipSit) + tile('stand', ok, T.tipStand) + tile('lie', no, T.tipLie) + '</div>' +\n      '<button type=\"button\" class=\"nw-tips__go\"><svg viewBox=\"0 0 24 24\"><path d=\"M4 8.5A1.5 1.5 0 0 1 5.5 7h2l1.5-2h6l1.5 2h2A1.5 1.5 0 0 1 20 8.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 17.5z\"/><circle cx=\"12\" cy=\"13\" r=\"3.2\"/></svg>' + T.tipGo + '</button>' +\n      '<p class=\"nw-tips__pv\">' + T.pvNote + ' <a href=\"' + esc(policyUrl()) + '\" target=\"_blank\" rel=\"noopener\">' + T.pvLink + '</a></p></div>';\n    var close = function () { o.classList.remove('on'); setTimeout(function () { o.remove(); }, 260); };\n    o.addEventListener('click', function (e) { if (e.target === o) close(); });\n    o.querySelector('.nw-tips__go').addEventListener('click', function () { tipsDone(); close(); addDog(); });\n    document.body.appendChild(o); requestAnimationFrame(function () { o.classList.add('on'); });\n  }\n  function addDog() {\n    if (!tipsSeen()) { openTips(); return; }\n    if (!FI) { FI = document.createElement('input'); FI.type = 'file'; FI.accept = 'image/*'; FI.hidden = true; document.body.appendChild(FI);\n      FI.addEventListener('change', function () { var f = FI.files && FI.files[0]; FI.value = ''; if (f) launch(f); }); }\n    FI.click();\n  }\n  function loadDogs() {\n    return Promise.all([getPic('fr-dogs'), getPic('fr-rm')]).then(function (z) {\n      var o = z[0]; DOGRM = Array.isArray(z[1]) ? z[1] : [];\n      if (o && o.dogs) { o.dogs = o.dogs.filter(function (x) { return DOGRM.indexOf(x.id) < 0; }); DOGL = o; }\n    }).catch(function () { });\n  }\n  /* the dog row is read as soon as the page loads, so the wardrobe opens with the dogs already in place instead of\n     \"Add your dog\" first (the copy of the current dog the shop used to keep is let go) */\n  delPic('fr-dog'); loadDogs();\n  /* holding a card starts Edit with that card selected */\n  function lpDown(e) { if (EDIT || !e.isPrimary) return; var c = e.target.closest('.nw-wr__pc[data-s]'); if (!c || e.target.closest('[data-cart]')) return;\n    LP = { x: e.clientX, y: e.clientY, s: c.dataset.s, t: setTimeout(function () { if (!LP) return; var s = LP.s; LP = null; JUST = true; setTimeout(function () { JUST = false; }, 450); try { navigator.vibrate && navigator.vibrate(12); } catch (x) { } EDIT = true; SELD = [s]; renderDrawer(); }, 480) }; }\n  function lpMove(e) { if (LP && (Math.abs(e.clientX - LP.x) > 8 || Math.abs(e.clientY - LP.y) > 8)) { clearTimeout(LP.t); LP = null; } }\n  function lpEnd() { if (LP) { clearTimeout(LP.t); LP = null; } }\n  /* ---------- a piece's sheet (A1): big picture, Add to cart, Try on + Edit design, Delete ---------- */\n  function byS(sig) { return view().filter(function (i) { return i.sig === sig; })[0] || null; }\n  function psHTML(st) {\n    var i = byS(st.sig); if (!i) { PS = null; return ''; }\n    var ic = inCart(i) || isCartOnly(i.sig), q = priceOf(i), pic = PICS[i.sig] || i.image || '', h;\n    if (st.ask) {\n      h = '<div class=\"nw-wr__psh\"><b>' + esc(T.delQ(shortT(i.title))) + '</b><button class=\"nw-wr__x sm\" data-a=\"psback\" aria-label=\"' + T.close + '\">' + IC.x + '</button></div>' +\n        '<button class=\"nw-wr__opt\" data-a=\"delonly\"><span class=\"oi\">' + IC.trash + '</span><span class=\"ot\"><b>' + T.onlyW + '</b><i>' + T.staysC + '</i></span></button>' +\n        '<button class=\"nw-wr__opt\" data-a=\"delboth\"><span class=\"oi\">' + IC.cartx + '</span><span class=\"ot\"><b>' + T.bothW + '</b><i>' + T.goneB + '</i></span></button>';\n    } else {\n      h = '<div class=\"nw-wr__psim\"><img alt=\"\" data-pic2=\"' + i.sig + '\"' + (pic ? ' src=\"' + esc(pic) + '\"' : '') + '></div>' +\n        '<div class=\"nw-wr__psn\"><b>' + esc(i.title) + '</b>' + (i.variant_title ? '<span>' + esc(i.variant_title) + '</span>' : '') + '</div>' +\n        (ic ? '<button class=\"nw-wr__psb in\" data-a=\"viewcart\">' + IC.cart + T.inCartB + '</button>' : '<button class=\"nw-wr__psb\" data-a=\"add\"' + (st.busy ? ' disabled' : '') + '>' + T.addCart + ' \u00B7 ' + money(q.now) + '</button>') +\n        '<div class=\"nw-wr__ps2\"><button data-a=\"tryone\">' + IC.hang + T.tryOne + '</button><button data-a=\"editd\">' + IC.pen + T.editD + '</button></div>' +\n        '<button class=\"nw-wr__psd\" data-a=\"psdel\">' + T.delW + '</button>';\n    }\n    return '<div class=\"nw-wr__psbg\" data-a=\"psx\"></div><div class=\"nw-wr__ps\" role=\"dialog\" aria-label=\"' + esc(i.title) + '\"><div class=\"nw-wr__grab\"></div>' + h + '</div>';\n  }\n  function openPS(sig) { PS = { sig: sig }; renderDrawer(); var im = DRW.querySelector('img[data-pic2]'); if (im && !isCartOnly(sig)) picUrl(sig).then(function (u) { if (u) im.src = u; }); requestAnimationFrame(function () { var p = DRW.querySelector('.nw-wr__ps'); if (p) p.classList.add('in'); var b = DRW.querySelector('.nw-wr__psbg'); if (b) b.classList.add('in'); }); }\n  function closePS() { var p = DRW.querySelector('.nw-wr__ps'), b = DRW.querySelector('.nw-wr__psbg'); PS = null; if (!p) return; p.classList.remove('in'); if (b) b.classList.remove('in'); setTimeout(function () { if (!PS) { if (p.parentNode) p.remove(); if (b && b.parentNode) b.remove(); } }, 260); }\n  /* the room opens with the newest piece of each kind on the dog (or the given piece, with the newest of the other kinds) */\n  function tryNewest(first, extra) {\n    var V = view(), on = [], seen = {};\n    if (first) { var f = V.filter(function (i) { return i.sig === first; })[0]; if (f) { on.push(f); seen[f.kind] = 1; } }\n    V.forEach(function (i) { if (!seen[i.kind]) { seen[i.kind] = 1; on.push(i); } });\n    var sigs = on.map(function (i) { return i.sig; }); PICKED = sigs.slice();\n    openFitting(on.map(fitOf), V.filter(function (i) { return sigs.indexOf(i.sig) < 0; }).map(fitOf), '', extra || null);\n  }\n  function editPiece(i) {\n    if (isCartOnly(i.sig)) { var c = cartLine(i._cart); if (c && (editTagLine(c) || editCartLine(c))) return; location.href = loc('/products/' + i.handle); return; }\n    var url = i.kind === 'tag' && i.handle ? '/products/' + i.handle + '?nwwr=' + encodeURIComponent(i.sig) : (i.editUrl || i.url);\n    if (url) { closeDrawer(true); location.href = loc(url); }\n  }\n  /* a piece that is only in the cart, saved to the wardrobe as it is (with its pictures), so it can leave the cart and stay;\n     a cart line that already has its saved design gives that one */\n  function keepCartPiece(key) {\n    var c = cartOnly().filter(function (x) { return x._cart === key; })[0];\n    if (!c) { var tw = list().filter(function (i) { var l = lineOf(i); return l && l.key === key; })[0]; return Promise.resolve(tw ? tw.sig : null); }\n    var e = { kind: c.kind, title: c.title, handle: c.handle, url: c.url, variant_id: c.variant_id, variant_title: c.variant_title, price: c.price, product_type: c.product_type, props: c.props };\n    if (serverPic(e)) return save(e);\n    var p = c.props, cdn = function (v) { return typeof v === 'string' && /^https:\\/\\/cdn\\.shopify\\.com\\//.test(v) ? v : null; };\n    var pic = function (u) { return u ? fetch(u).then(function (r) { return r.ok ? r.blob() : null; }).catch(function () { return null; }) : null; };\n    return Promise.all([pic(cdn(p['_Preview Front']) || cdn(p.Preview) || cdn(p._Preview) || c.image), pic(cdn(p['_Preview Back']))])\n      .then(function (x) { return save(e, x[1] ? { front: x[0], back: x[1] } : x[0]); });\n  }\n  function cartOut(key) { return fetch(ROOT + 'cart/change.js', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ id: key, quantity: 0 }) }).then(function () { return loadCart(); }).then(function () { if (window.NWCart && window.NWCart.refresh) window.NWCart.refresh(); }); }\n  function cartBack(line) { var fd = new FormData(); fd.append('id', line.variant_id); fd.append('quantity', String(line.quantity || 1)); Object.keys(line.properties || {}).forEach(function (k) { fd.append('properties[' + k + ']', line.properties[k]); });\n    return fetch(ROOT + 'cart/add.js', { method: 'POST', body: fd, headers: { Accept: 'application/json' } }).then(function () { return loadCart(); }).then(function () { if (window.NWCart && window.NWCart.refresh) window.NWCart.refresh(); }); }\n  function esc(s) { return String(s || '').replace(/[&<>\"]/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' }[c]; }); }\n  function shortT(t) { return String(t || '').split(' - ')[0].replace(/^The /, ''); }\n  function emptyHTML() {\n    /* a first visit: three steps with real pictures (the pieces, the hanger next to Add to cart, the set on the dog) */\n    var st = function (n, vis, h, p) { return '<div class=\"nw-wr__st\"><div class=\"nw-wr__sv\">' + vis + '<span class=\"nw-wr__sn\">' + n + '</span></div><div><b>' + h + '</b><p>' + p + '</p></div></div>'; };\n    return '<div class=\"nw-wr__ib\"><b>' + T.ih + '</b><p>' + T.ip + '</p></div><div class=\"nw-wr__steps\">' +\n      st(1, '<img alt=\"\" src=\"' + stepPic('s1', 'nw-wr-step1.webp') + '\" class=\"pad\">', T.s1, T.s1p) +\n      st(2, '<span class=\"nw-wr__sh\"><i>' + IC.hang + '</i><em></em></span>', T.s2, T.s2p) +\n      st(3, '<img alt=\"\" src=\"' + stepPic('s3', 'nw-wr-step3.webp') + '\">', T.s3, T.s3p) + '</div><div data-rec></div>';\n  }\n  var POP = null;\n  /* the same picture the dev theme's cards show: tags from NW Studio's ready-made pictures (nw-tag-look), the rest the product photo */\n  function cardPic(p) { var f = (p.featured_image || '') + '&width=200'; return /-tag/.test(p.handle) ? LOOKH + '/ri/' + p.handle + '/0/im.webp?fb=' + encodeURIComponent(f) : f; }\n  function popular() { if (POP) return POP; POP = Promise.all(POPULAR.map(function (h) { return fetch(ROOT + 'products/' + h + '.js').then(function (r) { return r.ok ? r.json() : null; }).catch(function () { return null; }); })).then(function (a) { return a.filter(Boolean); }); return POP; }\n  function fillEmpty() {\n    var rec = DRW.querySelector('[data-rec]'), pics = DRW.querySelector('[data-pics]');\n    popular().then(function (ps) { if (pics) pics.innerHTML = ps.map(function (p) { return '<img alt=\"\" src=\"' + (p.featured_image || '') + '&width=120\">'; }).join(''); });\n    var cartGear = (CART && CART.items || []).filter(function (c) { return kindOfType(c.product_type, c.properties); });\n    if (cartGear.length) {\n      rec.innerHTML = '<div class=\"nw-wr__lb\">' + T.inCartH + ' <span>' + cartGear.length + '</span></div><div class=\"nw-wr__box\">' +\n        cartGear.slice(0, 4).map(function (c) { return '<div class=\"nw-wr__row\"><img alt=\"\" src=\"' + esc(c.image || '') + '\"><div><b>' + esc(shortT(c.product_title)) + '</b><span>' + esc(c.variant_title || '') + '</span></div></div>'; }).join('') +\n        '<button class=\"nw-wr__go\" data-a=\"trycart\">' + IC.hang + T.tryCart + '</button></div>';\n    } else {\n      popular().then(function (ps) {\n        if (!ps.length || !DRW.querySelector('[data-rec]')) return;\n        rec.innerHTML = '<div class=\"nw-wr__lb\">' + T.popular + '</div><div class=\"nw-wr__rail\">' + ps.map(function (p) {\n          return '<a class=\"nw-wr__pc\" href=\"' + loc('/products/' + p.handle) + '\" style=\"text-decoration:none;color:inherit\"><div class=\"im\"><img alt=\"\" src=\"' + esc(cardPic(p)) + '\"></div><b>' + esc(shortT(p.title)) + '</b><span class=\"pr\">' + (p.compare_at_price > p.price ? '<em>' + money(p.price) + '</em><s>' + money(p.compare_at_price) + '</s>' : money(p.price)) + '</span></a>';\n        }).join('') + '</div>';\n      });\n    }\n  }\n  /* LAST.rec: what one delete did, so Undo can put it all back: a saved piece (it, idx), a hidden cart line (hide), a cart line taken out (line) */\n  function finalize() { if (!LAST) return; LAST.rec.forEach(function (r) { if (r.it) hardDelete(r.it.sig); }); LAST = null; }\n  function delMsg(rec) { var d = rec.filter(function (r) { return r.dog; }).length; return !d ? T.nDel(rec.length) : d === rec.length ? T.dGone(d) : T.mixDel(rec.length); }\n  function saveDogs() { putPic('fr-dogs', DOGL); putPic('fr-rm', DOGRM.slice()); }\n  function delMany(sigs, both) {\n    finalize(); clearTimeout(LASTT); var rec = [], outs = [], dgs = SELDOG.slice(); SELDOG = [];\n    /* a dog: gone from here at once; its photo is deleted in the fitting room the next time it opens (rmDogs) */\n    if (dgs.length && DOGL) {\n      dgs.forEach(function (id) { var ix = DOGL.dogs.findIndex(function (d) { return d.id === id; }); if (ix < 0) return; rec.push({ dog: DOGL.dogs[ix], didx: ix }); DOGL.dogs.splice(ix, 1); if (DOGRM.indexOf(id) < 0) DOGRM.push(id); if (DOGSEL === id) DOGSEL = null; });\n      if (DOGRM.indexOf(DOGL.cur) > -1) DOGL.cur = DOGL.dogs[0] ? DOGL.dogs[0].id : null;\n      saveDogs();\n    }\n    sigs.forEach(function (s0) {\n      var i = byS(s0); if (!i) return; var r = {};\n      if (isCartOnly(s0)) { r.hide = i._cart; hideKey(i._cart); if (both) { r.line = cartLine(i._cart); outs.push(i._cart); } }\n      else { var idx = list().findIndex(function (x) { return x.sig === s0; }), ln = lineOf(i); r.it = remove(s0); r.idx = idx; if (ln) { r.hide = ln.key; hideKey(ln.key); if (both) { r.line = ln; outs.push(ln.key); } } }\n      rec.push(r);\n    });\n    PICKED = PICKED.filter(function (s0) { return sigs.indexOf(s0) < 0; }); SELD = [];\n    if (!view().length && !(DOGL && DOGL.dogs.length)) EDIT = false;\n    LAST = { rec: rec };\n    LASTT = setTimeout(function () { finalize(); renderDrawer(); }, 5000);\n    var p = Promise.resolve(); outs.forEach(function (k) { p = p.then(function () { return cartOut(k); }); });\n    p.then(renderDrawer); renderDrawer();\n  }\n  function undoDel() {\n    if (!LAST) return; clearTimeout(LASTT); var rec = LAST.rec; LAST = null; var p = Promise.resolve();\n    var dr = rec.filter(function (r) { return r.dog; });\n    if (dr.length && DOGL) { dr.slice().reverse().forEach(function (r) { DOGL.dogs.splice(Math.min(r.didx, DOGL.dogs.length), 0, r.dog); DOGRM = DOGRM.filter(function (id) { return id !== r.dog.id; }); }); saveDogs(); }\n    rec.slice().reverse().forEach(function (r) { if (r.it) restore(r.it, r.idx); if (r.line) p = p.then(function () { return cartBack(r.line); }).then(function () { if (r.hide) hideKey(r.hide, false); }); else if (r.hide) hideKey(r.hide, false); });\n    p.then(renderDrawer); renderDrawer();\n  }\n  function del(sig) { delMany([sig]); }\n  function onClick(e) {\n    if (JUST) { e.preventDefault(); return; }\n    var cb = e.target.closest('[data-cart]'); if (cb && !EDIT) { cartToggle(cb.getAttribute('data-cart')); return; }\n    var dsb = e.target.closest('[data-dsel]'); if (dsb) { var id = dsb.getAttribute('data-dsel'), j = SELDOG.indexOf(id); if (j > -1) SELDOG.splice(j, 1); else SELDOG.push(id); renderDrawer(); return; }\n    var dgb = e.target.closest('[data-dog]'); if (dgb) { DOGSEL = dgb.getAttribute('data-dog'); renderDrawer(); return; }\n    var a = e.target.closest('[data-a]');\n    if (a) {\n      var w = a.dataset.a;\n      if (w === 'close') closeDrawer();\n      else if (w === 'edit') { EDIT = !EDIT; SELD = []; SELDOG = []; DELASK = false; renderDrawer(); }\n      else if (w === 'undo') undoDel();\n      else if (w === 'ctundo') { var u = CT && CT.undo; CT = null; clearTimeout(CTT); renderDrawer(); if (u) u(); }\n      else if (w === 'go') launch(null);\n      else if (w === 'clear') { PK = {}; renderDrawer(); }\n      else if (w === 'unpick') { delete PK[a.dataset.k]; renderDrawer(); }\n      else if (w === 'pile') { OPENK[a.dataset.k] = 1; TURN = a.dataset.k; renderDrawer(); TURN = null; layCenter(a.dataset.k); }\n      else if (w === 'fold') { delete OPENK[a.dataset.k]; renderDrawer(); }\n      else if (w === 'adddog') addDog();\n      else if (w === 'selall') { var all = view().map(function (i) { return i.sig; }), alld = (DOGL && DOGL.dogs || []).map(function (d) { return d.id; }), full = SELD.length === all.length && SELDOG.length === alld.length; SELD = full ? [] : all; SELDOG = full ? [] : alld; renderDrawer(); }\n      else if (w === 'delsel' && (SELD.length || SELDOG.length)) { if (SELD.some(function (s0) { var i = byS(s0); return i && (inCart(i) || isCartOnly(s0)); })) { DELASK = true; renderDrawer(); } else delMany(SELD.slice()); }\n      else if (w === 'delkeep' || w === 'delboth') { DELASK = false; delMany(SELD.slice(), w === 'delboth'); }\n      else if (w === 'delcancel') { DELASK = false; renderDrawer(); }\n      else if (w === 'trycart') tryCart();\n      return;\n    }\n    var c = e.target.closest('.nw-wr__pc[data-s]');\n    if (!c) return;\n    if (EDIT) { var s = c.dataset.s, k = SELD.indexOf(s); if (k > -1) SELD.splice(k, 1); else SELD.push(s); renderDrawer(); return; }\n    pickToggle(c.dataset.s);\n  }\n  /* a piece tapped while only half in view slides fully into view: sideways in its row, and up or down in the list */\n  /* picking only flips the tick and the button; nothing is redrawn, so the rows never jump or flicker */\n  function pickUi() {\n    [].forEach.call(DRW.querySelectorAll('.nw-wr__pc[data-s]'), function (c) { var on = PICKED.indexOf(c.dataset.s) > -1; c.classList.toggle('on', on); var sl = c.querySelector('.nw-wr__sel'); if (sl) sl.classList.toggle('on', on); });\n    DRW.classList.toggle('full', PICKED.length >= 10);\n    var g = DRW.querySelector('.nw-wr__go'); if (g) { g.disabled = !PICKED.length; g.innerHTML = IC.hang + (PICKED.length ? T.tryN(PICKED.length) : T.pick); }\n  }\n  function reveal(sig) {\n    var c = DRW.querySelector('.nw-wr__pc[data-s=\"' + sig + '\"]'); if (!c) return;\n    var r = c.closest('.nw-wr__rail'), m = 12;\n    if (r) { var a = r.getBoundingClientRect(), b = c.getBoundingClientRect(), d = b.left < a.left + m ? b.left - a.left - m : b.right > a.right - m ? b.right - a.right + m : 0,\n      mx = r.scrollWidth - r.clientWidth, to = Math.max(0, Math.min(mx, r.scrollLeft + d)); if (to < 24) to = 0; else if (to > mx - 24) to = mx; if (Math.abs(to - r.scrollLeft) > 1) r.scrollTo({ left: to, behavior: 'smooth' }); }\n    var bd = DRW.querySelector('.nw-wr__body'); if (!bd) return;\n    var A = bd.getBoundingClientRect(), B = c.getBoundingClientRect(), ft = DRW.querySelector('.nw-wr__ft'), lo = ft && !ft.classList.contains('hid') ? Math.min(A.bottom, ft.getBoundingClientRect().top) : A.bottom,\n      v = B.top < A.top + 8 ? B.top - A.top - 8 : B.bottom > lo - 8 ? B.bottom - lo + 8 : 0;\n    var tv = Math.max(0, Math.min(bd.scrollHeight - bd.clientHeight, bd.scrollTop + v)); if (Math.abs(tv - bd.scrollTop) > 1) bd.scrollTo({ top: tv, behavior: 'smooth' });\n  }\n  function again(el, c) { if (!el) return; el.classList.remove(c); void el.offsetWidth; el.classList.add(c); }\n  /* an 11th piece: the tapped one wiggles, the picked frames pulse (unpick one of those), and the first time a short pill says why */\n  var MAXSAID = false, PILLT = 0;\n  function atMax(c) {\n    again(c, 'no'); again(DRW, 'pls');\n    if (MAXSAID) return; MAXSAID = true;\n    var ft = DRW.querySelector('.nw-wr__ft'); if (!ft) return; var pl = ft.querySelector('.nw-wr__pill');\n    if (!pl) { pl = document.createElement('div'); pl.className = 'nw-wr__pill'; pl.setAttribute('role', 'status'); ft.appendChild(pl); }\n    pl.textContent = T.max; void pl.offsetWidth; pl.classList.add('in');\n    clearTimeout(PILLT); PILLT = setTimeout(function () { pl.classList.remove('in'); }, 2200);\n  }\n  function onDown(e) {\n    var c = e.target.closest('.nw-wr__pc[data-s]'); if (!c || e.target.closest('[data-x]') || isCartOnly(c.dataset.s) || c.classList.contains('lock')) return;\n    var wi = list().filter(function (x) { return x.sig === c.dataset.s; })[0]; if (wi && inCart(wi)) return;   /* in the cart: removed only in the cart */\n    PRESS = { c: c, x: e.clientX, y: e.clientY, s: c.dataset.s, on: false };\n    PRESS.t = setTimeout(startDrag, 420);\n  }\n  function startDrag() {\n    if (!PRESS) return; PRESS.on = true; var c = PRESS.c, r = c.getBoundingClientRect(), dr = DRW.getBoundingClientRect();\n    var d = c.cloneNode(true); d.classList.add('nw-wr__drag'); d.classList.remove('on'); d.style.width = r.width + 'px'; d.style.left = (r.left - dr.left) + 'px'; d.style.top = (r.top - dr.top) + 'px';\n    PRESS.ox = PRESS.x - r.left; PRESS.oy = PRESS.y - r.top; PRESS.d = d; DRW.appendChild(d); c.classList.add('ghost');\n    DRW.querySelector('.nw-wr__bin').classList.add('on'); try { navigator.vibrate && navigator.vibrate(10); } catch (e) { }\n  }\n  window.addEventListener('pointermove', function (e) {\n    if (!PRESS) return;\n    if (!PRESS.on) { if (Math.abs(e.clientX - PRESS.x) > 8 || Math.abs(e.clientY - PRESS.y) > 8) { clearTimeout(PRESS.t); PRESS = null; } return; }\n    var dr = DRW.getBoundingClientRect(), px = e.clientX - dr.left, py = e.clientY - dr.top;\n    PRESS.d.style.left = (px - PRESS.ox) + 'px'; PRESS.d.style.top = (py - PRESS.oy) + 'px';\n    var hot = Math.hypot(px - dr.width / 2, py - 116) < 70; DRW.querySelector('.nw-wr__bin').classList.toggle('hot', hot); PRESS.hot = hot;\n  });\n  function endPress() {\n    if (!PRESS) return; clearTimeout(PRESS.t);\n    if (PRESS.on) {\n      JUST = true; setTimeout(function () { JUST = false; }, 60); var p = PRESS; PRESS = null;\n      if (p.hot) { p.d.remove(); del(p.s); } else { p.d.remove(); p.c.classList.remove('ghost'); var b = DRW.querySelector('.nw-wr__bin'); b.classList.remove('on', 'hot'); }\n    } else PRESS = null;\n  }\n  window.addEventListener('pointerup', endPress); window.addEventListener('pointercancel', endPress);\n  document.addEventListener('touchmove', function (e) { if (PRESS && PRESS.on) e.preventDefault(); }, { passive: false });\n\n  /* ---------- fitting room overlay ---------- */\n  var FR = null, FRQ = null, RESUME = null, FROM = '', BACKTO = 'wr', WROPEN = false, OPEN = { sigs: [] }, BLOBS = {};\n  /* the way back to the fitting room, a return ticket in sessionStorage:\n     - 'Edit design' opened a page with ?fr=1\n     - 'Find more' (find: the kind) went shopping: every page of the trip has the way back, until the new design is\n       taken back, something is added to the cart, or nothing happened for 30 minutes */\n  var FRRET = null, FRN = null;\n  try {\n    var tk = JSON.parse(sessionStorage.getItem('nw-fr-ret') || 'null');\n    if (tk && tk.find) { if (Date.now() - tk.t < 18e5) { FRRET = tk; frTouch(); } else sessionStorage.removeItem('nw-fr-ret'); }\n    else if (tk && /[?&]fr=1(&|$)/.test(location.search) && Date.now() - tk.t < 36e5) FRRET = tk;\n  } catch (e) { FRRET = null; }\n  function frTouch() { if (!FRRET || !FRRET.find) return; FRRET.t = Date.now(); try { sessionStorage.setItem('nw-fr-ret', JSON.stringify(FRRET)); } catch (x) { } }\n  function endTrip() { if (!FRRET || !FRRET.find) return; FRRET = null; try { sessionStorage.removeItem('nw-fr-ret'); } catch (x) { } }\n  /* the trip ends when something goes into the cart (the count of the cart grows) */\n  if (FRRET && FRRET.find) loadCart().then(function (c) { if (FRN == null) FRN = c.item_count; });\n  document.addEventListener('nw:cart', function (e) { var n = e.detail && e.detail.item_count; if (n == null) return; if (FRN != null && n > FRN) endTrip(); FRN = n; });\n  function b64u(t) { return btoa(unescape(encodeURIComponent(t))).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, ''); }\n  var RETT = 0, UNDO = {}, UNDOW = {}, RPL = {};\n  function backToFitting(entry, blob) {\n    /* opened in place above the fitting room: hand the design straight back, nothing reloads */\n    if (FRRET && FRRET.onBack) { var ob = FRRET.onBack; FRRET = null; RETT = Date.now(); try { ob(entry, blob); } catch (x) { } return Promise.resolve(); }\n    /* a second call right after an in-place return (a double tap that slipped through): the first one already did it */\n    if (Date.now() - RETT < 6000) return Promise.resolve();\n    var r = FRRET || { sigs: [] }; FRRET = null; try { sessionStorage.removeItem('nw-fr-ret'); } catch (e) { }\n    var p = Promise.resolve(null);\n    if (entry) { var sig = sigOf(entry); if (r.old && r.old !== sig && has(r.old)) { remove(r.old); hardDelete(r.old); } p = has(sig) ? Promise.resolve(sig) : save(Object.assign({}, entry, { sig: sig }), blob); }\n    return p.then(function (sig) {\n      /* come back to the same set: the pieces that were on stay on (the edited one in its own place), laid out as before */\n      var was = r.old || r.oldc, sw = function (k) { return k && k === was && sig ? sig : k; }, picks = null;\n      if (r.picks) { picks = {}; Object.keys(r.picks).forEach(function (sl) { picks[sl] = sw(r.picks[sl]); }); }\n      var res = { neck: r.neck, picks: picks, sigs: (r.sigs || []).map(sw) };\n      /* back from 'Find more': the new design goes on in place of the piece of its kind (its own kind: a leash found on a collar trip is a leash) (that one stays in the set, Undo puts it back on) */\n      if (r.find && sig) { var sl = kindOfType(entry.product_type, entry.props || {}) || r.find, prev = (r.picks || {})[sl]; res.picks = Object.assign({}, picks || {}); res.picks[sl] = sig; res.swapped = prev && prev !== sig ? { slot: sl, old: prev } : null; }\n      if (r.from === 'cart') { tryCart(res, r.oldc && sig ? { oldc: r.oldc, sig: sig } : null); return; }\n      var sigs = (r.sigs || []).map(function (s) { return s === r.old ? sig : s; }).filter(Boolean); if (sig && sigs.indexOf(sig) < 0) sigs.push(sig);\n      var V = view(), items = V.filter(function (i) { return sigs.indexOf(i.sig) > -1; }); PICKED = sigs.slice();\n      openFitting(items.map(fitOf), V.filter(function (i) { return sigs.indexOf(i.sig) < 0; }).map(fitOf), '', res);\n    });\n  }\n  function fitOf(i) { var c = i._cart && cartLine(i._cart); return c ? cItem(c) : wItem(i); }\n  function wItem(i) {\n    return { _w: i.sig, product_title: i.title, handle: i.handle, product_type: i.product_type, variant_id: i.variant_id, variant_title: i.variant_title,\n      final_price: i.price, inCart: inCart(i), properties: Object.assign({}, i.props) };\n  }\n  function cItem(c) { return { _c: c.key, product_title: c.product_title, handle: c.handle, product_type: c.product_type, variant_id: c.variant_id, variant_title: c.variant_title, final_price: c.final_price, inCart: true, properties: Object.assign({}, c.properties || {}) }; }\n  function withPics(arr) {\n    return Promise.all(arr.map(function (it) {\n      if (!it._w) return it;\n      return getPic(it._w).then(function (b) { if (b) it.properties[kindOfType(it.product_type, it.properties) === 'tag' ? '_Preview Front' : 'Preview'] = b; return it; });\n    }));\n  }\n  function openFitting(items, pool, from, resume) {\n    /* where the back arrow returns to: the wardrobe or the cart it was opened from (back from a personalizer: the cart for a cart look, else the wardrobe) */\n    var cr = document.querySelector('[data-nw-cart]'); BACKTO = WROPEN ? 'wr' : cr && cr.getAttribute('aria-hidden') === 'false' ? 'cart' : from === 'cart' ? 'cart' : 'wr';\n    RESUME = resume || null; FROM = from || ''; OPK = Object.assign({}, PK); EDW = {}; OLK = {}; if (!Object.keys(PK).length) lookItems(lastOk()).forEach(function (i) { OLK[i.kind] = i.sig; }); OPEN = { sigs: items.filter(function (i) { return i._w; }).map(function (i) { return i._w; }) }; closeDrawer(true); if (window.NWCart && window.NWCart.close) window.NWCart.close();\n    FRQ = Promise.all([loadCart(), live(items.concat(pool || []).map(function (i) { return i.handle; }))]).then(function () {\n      return Promise.all([withPics(items.map(decorate)), withPics((pool || []).map(decorate))]); });\n    if (!FR) {\n      FR = el('<div class=\"nw-fr\"><iframe title=\"' + esc(T.fitting) + '\" allow=\"clipboard-write; web-share\"></iframe></div>');\n      document.body.appendChild(FR);\n    }\n    /* nothing left over from the last way back (the shrink into the button) */\n    FRT++; if (FR.getAnimations) FR.getAnimations().forEach(function (a) { a.cancel(); }); FR.style.transformOrigin = '';\n    FR.hidden = false; document.documentElement.classList.add('nw-wr-lock', 'nw-fr-on'); watchCart();\n    var fu = FIT + '/collage?embed=1' + (DE ? '&lang=de' : ''); frNav(fu); frWatch(fu, function () { openFitting(items, pool, from, resume); });\n    /* the editors behind Change design: their files load quietly a moment after the fitting room opens, so Edit opens without a wait */\n    setTimeout(function () { var all = items.concat(pool || []), cats = {};\n      if (all.some(isTag)) p2Js().then(function () { if (window.NWP2 && window.NWP2.preload) window.NWP2.preload(); }).catch(function () { });\n      all.forEach(function (i) { try { var cj = JSON.parse((i.properties || {})._collar || 'null'); if (cj && cj.c) cats[cj.c] = 1; } catch (x) { } });\n      if (Object.keys(cats).length) collarJs().then(function () { Object.keys(cats).forEach(function (c) { if (window.NWCollar && window.NWCollar.preload) window.NWCollar.preload(c); }); }).catch(function () { });\n    }, 1500);\n    requestAnimationFrame(function () { FR.classList.add('open'); }); toLayer('fr');\n    /* get the collar builder ready in the background, so Edit opens quickly */\n    setTimeout(function () {\n      var cs = {}; items.concat(pool || []).forEach(function (it) { try { var c = JSON.parse((it.properties || {})._collar || 'null'); if (c && c.c) cs[c.c] = 1; } catch (x) { } });\n      if (Object.keys(cs).length) collarJs().then(function () { Object.keys(cs).forEach(function (c) { window.NWCollar.preload(c); }); }).catch(function () { });\n    }, 2500);\n  }\n  /* when the cart closes over the fitting room, tell the fitting room what is in the cart now (a piece may have been removed there) */\n  var CW = null;\n  function watchCart() {\n    var c = document.querySelector('.nw-cart'); if (CW || !c || !window.MutationObserver) return;\n    var was = c.classList.contains('open');\n    CW = new MutationObserver(function () {\n      var now = c.classList.contains('open'); if (was && !now && FR && !FR.hidden && FR.classList.contains('open')) loadCart().then(function () {\n        var win = frWin(); if (win) var cps = {}; list().forEach(function (i) { var l = lineOf(i); if (l) cps[i.sig] = lineCp(l); });\n        win.postMessage(Object.assign({ nwFitting: 'incart', sigs: Object.keys(cps), cps: cps, keys: CART.items.map(function (c) { return c.key; }) }, priceMsg()), FIT);\n      }); was = now;\n    }); CW.observe(c, { attributes: true, attributeFilter: ['class'] });\n  }\n  /* back to the wardrobe with the fitting room's back arrow: the wardrobe is there at once, the fitting room shrinks back into\n     the button it was opened with, and a piece that changed there (another one picked, or new colours) flies from the dog\n     to its card; the row slides to meet it and the card shows it picked (in its new colours) once it has landed */\n  function homeFly(fly) {\n    var find = lookFind(view()), go = [];\n    fly.forEach(function (f) {\n      if (!f || typeof f.k !== 'string' || typeof f.src !== 'string' || f.src.indexOf('data:image/png') !== 0 || !(f.w > 0 && f.h > 0)) return;\n      var it = find(f.k); if (!it) return;\n      /* an edited piece: back to the design the card showed when the fitting room opened (its stored picture, or its own picture link) */\n      var o = it.sig, uw = null; while (EDW[o]) { uw = UNDOW[o] || uw; o = EDW[o]; }\n      var picked = PK[it.kind] === it.sig && OPK[it.kind] !== it.sig;\n      /* nothing picked: a piece that changed in the look flies into the button that holds the look */\n      if (!picked && o === it.sig) { if (!Object.keys(OPK).length && OLK[it.kind] !== it.sig) go.push({ f: f, it: it, btn: true }); return; }\n      go.push({ f: f, it: it, old: uw ? (uw.f instanceof Blob ? URL.createObjectURL(uw.f) : serverPic(uw.it) || '') : '' });\n    });\n    var still = calm(); if (still) go = go.filter(function (g) { return !g.btn; });\n    var fw = frWin(); if (fw && go.length && !still) fw.postMessage({ nwFitting: 'flyhide', ks: go.map(function (g) { return g.f.k; }) }, FIT);\n    LAND = {}; if (!still) go.forEach(function (g) { if (!g.btn) LAND[g.it.sig] = g.old; });\n    var de = document.documentElement; de.classList.add('nw-wr-now'); openDrawer(); if (!DRW) { closeFitting(true); return; } DRW.classList.add('nw-wr-ret');\n    requestAnimationFrame(function () { requestAnimationFrame(function () {\n      de.classList.remove('nw-wr-now');\n      var ir = FR.querySelector('iframe').getBoundingClientRect(), gb = DRW.querySelector('.nw-wr__ft .nw-wr__go'), vy = homeView(go.filter(function (g) { return !g.btn; }), still);\n      go.forEach(function (g) {\n        if (g.btn) { var sk = gb && (gb.querySelector('.stk') || gb), kb = sk && sk.getBoundingClientRect(); if (!kb) return;\n          flyOne(g.f, ir, { left: kb.left + kb.width / 2 - 14, top: kb.top + kb.height / 2 - 14, width: 28, height: 28 }, PICS[g.it.sig] || g.it.image || '').then(function (d) { if (d) d.remove(); }); return; }\n        var c = DRW.querySelector('.nw-wr__rail [data-s=\"' + g.it.sig + '\"], .nw-wr__rail [data-top=\"' + g.it.sig + '\"]'), im = c && c.querySelector('.im'); if (!im) { delete LAND[g.it.sig]; return; }\n        var r = c.closest('.nw-wr__rail'), rr = r.getBoundingClientRect(), cr = c.getBoundingClientRect(), s0 = r.scrollLeft,\n          s1 = Math.max(0, Math.min(r.scrollWidth - r.clientWidth, s0 + cr.left + cr.width / 2 - rr.left - rr.width / 2)), b = im.getBoundingClientRect();\n        if (still) { r.scrollLeft = s1; return; }\n        slideRow(g.it.kind, s0, s1, 520);\n        flyOne(g.f, ir, { left: b.left - (s1 - s0), top: b.top - vy, width: b.width, height: b.height }, PICS[g.it.sig] || g.it.image || '').then(function (d) {\n          delete LAND[g.it.sig]; if (g.old && g.old.indexOf('blob:') === 0) URL.revokeObjectURL(g.old); renderDrawer(); settle(d, g.it.sig);\n          var c2 = DRW.querySelector('.nw-wr__rail [data-s=\"' + g.it.sig + '\"]'), pl = DRW.querySelector('.nw-wr__lb[data-k=\"' + g.it.kind + '\"] .nw-wr__pk');\n          if (c2 && c2.animate) c2.animate([{ transform: 'scale(1.06)' }, { transform: 'none' }], { duration: 280, easing: 'ease-out' });\n          if (pl && pl.animate) pl.animate([{ transform: 'translateY(40%)', opacity: 0 }, { transform: 'none', opacity: 1 }], { duration: 300, easing: 'ease-out' });\n        });\n      });\n      var b = gb && gb.getBoundingClientRect(), W = window.innerWidth, H = window.innerHeight;\n      FR.style.transformOrigin = '0 0';\n      var sa = still && FR.animate ? FR.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 220, fill: 'forwards' }) : b && b.width && FR.animate ? FR.animate([{ transform: 'none', borderRadius: '0px', opacity: 1 }, { offset: .8, opacity: 1 },\n        { transform: 'translate(' + b.left + 'px,' + b.top + 'px) scale(' + b.width / W + ',' + b.height / H + ')', borderRadius: '60px', opacity: 0 }],\n        { duration: 440, easing: 'cubic-bezier(.5,0,.2,1)', fill: 'forwards' }) : null, sh = sa ? sa.finished : Promise.resolve();\n      /* the end comes when the shrink is over, or a little later at the latest: a page put away mid-way holds its animations */\n      var tok = FRT, ended = false;\n      sh.catch(function () { }).then(fin); setTimeout(fin, 1000);\n      function fin() {\n        if (ended) return; ended = true; DRW.classList.remove('nw-wr-ret');\n        /* opened again meanwhile: this way back is over, the fitting room is in use */\n        if (tok !== FRT) return;\n        frSleep(); FR.classList.remove('open'); de.classList.remove('nw-fr-on'); FR.hidden = true;\n        FR.getAnimations().forEach(function (a) { a.cancel(); }); FR.style.transformOrigin = ''; frNav(null); setTimeout(redrawTags, 120); setTimeout(redrawTags, 700);\n        var st = DRW.querySelector('.nw-wr__go .stk');\n        if (st && st.animate) st.animate([{ transform: 'scale(.6)', opacity: 0 }, { offset: .6, transform: 'scale(1.12)', opacity: 1 }, { transform: 'none' }], { duration: 360, easing: 'ease-out' });\n      }\n    }); });\n  }\n  /* the piece stays on its card until the card's own picture is there (a design just edited is drawn by the server first) */\n  function settle(d, sig) {\n    if (!d) return; var t0 = Date.now();\n    (function chk() { var im = DRW && DRW.querySelector('.nw-wr__rail [data-s=\"' + sig + '\"] .im img');\n      if (!im || (im.getAttribute('src') && im.complete && im.naturalWidth) || Date.now() - t0 > 6000) {\n        var g = DRW && DRW.querySelector('.nw-wr__ft .nw-wr__go'); if (g && Date.now() - t0 > 100) g.innerHTML = goHTML();   /* its picture is in the button's look too */\n        if (d.animate && Date.now() - t0 > 100) d.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 200 }).finished.then(function () { d.remove(); }, function () { d.remove(); }); else d.remove(); return; }\n      setTimeout(chk, 150); })();\n  }\n  /* the wardrobe scrolls (along with the rows) so the cards the pieces fly to are clear of the button bar at the bottom:\n     a piece lands on its card in view, never on top of the bar */\n  function homeView(go, still) {\n    var bd = DRW.querySelector('.nw-wr__body'), ft = DRW.querySelector('.nw-wr__ft'); if (!bd || !go.length) return 0;\n    var br = bd.getBoundingClientRect(), lim = (ft ? ft.getBoundingClientRect().top : br.bottom) - 12, top = br.top + 8, lo = Infinity, hi = -Infinity;\n    go.forEach(function (g) { var c = DRW.querySelector('.nw-wr__rail [data-s=\"' + g.it.sig + '\"], .nw-wr__rail [data-top=\"' + g.it.sig + '\"]'); if (!c) return; var r = c.getBoundingClientRect(); lo = Math.min(lo, r.top); hi = Math.max(hi, r.bottom); });\n    if (hi === -Infinity) return 0;\n    var v = hi > lim ? Math.max(0, Math.min(hi - lim, lo - top)) : lo < top ? lo - top : 0, s0 = bd.scrollTop;\n    v = Math.max(-s0, Math.min(bd.scrollHeight - bd.clientHeight - s0, v)); if (Math.abs(v) < 1) return 0;\n    if (still) { bd.scrollTop = s0 + v; return v; }\n    var t0 = performance.now();\n    (function f() { var u = Math.min(1, (performance.now() - t0) / 520), e = u < .5 ? 4 * u * u * u : 1 - Math.pow(-2 * u + 2, 3) / 2, b = DRW && DRW.querySelector('.nw-wr__body');\n      if (b) b.scrollTop = s0 + v * e; if (u < 1) requestAnimationFrame(f); })();\n    return v;\n  }\n  /* the row is looked up every frame: the wardrobe may be drawn again meanwhile (the cart and the dogs arrive) */\n  function slideRow(k, s0, s1, ms) {\n    if (Math.abs(s1 - s0) < 2) return; var t0 = performance.now();\n    (function f() { var u = Math.min(1, (performance.now() - t0) / ms), e = u < .5 ? 4 * u * u * u : 1 - Math.pow(-2 * u + 2, 3) / 2, lb = DRW && DRW.querySelector('.nw-wr__lb[data-k=\"' + k + '\"]'), r = lb && lb.nextElementSibling;\n      if (r) r.scrollLeft = s0 + (s1 - s0) * e; if (u < 1) requestAnimationFrame(f); })();\n  }\n  /* one piece on its way home: it starts as drawn on the dog (its size and turn there) and becomes its card's picture on the way */\n  function flyOne(f, ir, e, u) {\n    var d = document.createElement('div'); d.className = 'nw-wr-fly'; d.style.width = e.width + 'px'; d.style.height = e.height + 'px';\n    d.innerHTML = '<img alt=\"\" src=\"' + f.src + '\"><img alt=\"\" class=\"b\"' + (u ? ' src=\"' + esc(u) + '\"' : '') + '>'; document.body.appendChild(d);\n    if (!d.animate) return Promise.resolve(d);\n    /* its box changes size (not a stretch), so neither picture is ever squashed on the way */\n    var x0 = ir.left + f.cx - f.w / 2, y0 = ir.top + f.cy - f.h / 2, mw = (f.w + e.width) / 2 * 1.1, mh = (f.h + e.height) / 2 * 1.1,\n      mx = (ir.left + f.cx + e.left + e.width / 2) / 2 - mw / 2, my = Math.min(y0, e.top) - 60, o = { duration: 760, easing: 'cubic-bezier(.45,0,.25,1)', fill: 'forwards' },\n      k = function (x, y, w, h, r) { return { transform: 'translate(' + x + 'px,' + y + 'px) rotate(' + r + 'deg)', width: w + 'px', height: h + 'px' }; },\n      k2 = k(x0, y0 - 10, f.w * 1.06, f.h * 1.06, f.r); k2.offset = .2; var k3 = k(mx, my, mw, mh, 0); k3.offset = .55;\n    var a = d.animate([k(x0, y0, f.w, f.h, f.r), k2, k3, k(e.left, e.top, e.width, e.height, 0)], o);\n    /* it turns into the card's picture on the way; a picture still loading takes over whenever it arrives */\n    var l1 = d.firstChild, l2 = d.lastChild;\n    if (l2.complete && l2.naturalWidth) { l1.animate([{ opacity: 1 }, { offset: .3, opacity: 1 }, { offset: .65, opacity: 0 }, { opacity: 0 }], o); l2.animate([{ opacity: 0 }, { offset: .3, opacity: 0 }, { offset: .65, opacity: 1 }, { opacity: 1 }], o); }\n    else l2.onload = function () { var q = { duration: 250, fill: 'forwards' }; l1.animate([{ opacity: 1 }, { opacity: 0 }], q); l2.animate([{ opacity: 0 }, { opacity: 1 }], q); };\n    return new Promise(function (ok) { a.finished.then(function () { ok(d); }, function () { ok(d); }); setTimeout(function () { ok(d); }, 1400); });\n  }\n  /* the phone's own back: the fitting room is asked for its pieces, so the way home is the same as with its back arrow\n     (a fitting room that does not answer quickly closes the old way) */\n  function frAsk() {\n    var w = frWin(); clearTimeout(FAQ); FAQ = null;\n    if (!w) { closeFitting(true); stepBack(); return; }\n    FAQ = setTimeout(function () { FAQ = null; closeFitting(true); stepBack(); }, 350); w.postMessage({ nwFitting: 'flyask' }, FIT);\n  }\n  function stepBack() { var c = BACKTO === 'cart'; setTimeout(function () { if (c) { if (window.NWCart) { if (window.NWCart.refresh) window.NWCart.refresh(); if (window.NWCart.open) window.NWCart.open(); } } else openDrawer(); }, 30); }\n  /* the fitting room's page is swapped in place (location.replace): setting the frame's src again added an entry to the\n     browser's history, so the phone's Back went \"back\" inside the frame (a blank fitting room) instead of closing it */\n  /* the fitting room's frame is the same one every visit (as it was this morning): it is pointed at the page when it\n     opens and at a blank page when it closes. (A new frame per visit, or moving it with location.replace, broke the\n     fitting room's own storage on iPhones: dogs lost their neck line and cleaned photo.) */\n  /* No entries in the browser's history from the fitting room: changing a frame's address adds one, and the phone's Back\n     (or swiping the wardrobe away from the screen edge) then went \"back\" inside the hidden frame and left a blank page.\n     Opening: a new frame that gets its address before it is in the page (a first load adds no entry); the old frame,\n     already a blank page, is taken away. Closing: the fitting room saves and turns itself blank with location.replace,\n     so its storage is let go the same way as before. */\n  function frNav(u) {\n    if (!FR) return; var old = FR.querySelector('iframe');\n    if (!u) { var w = old && old.contentWindow; if (w) { old.dataset.blank = '1'; try { w.postMessage({ nwFitting: 'blank' }, '*'); } catch (e) {} } return; }\n    if (old && !old.dataset.blank && old.getAttribute('src')) { old.src = 'about:blank'; }\n    var f = document.createElement('iframe'); f.title = T.fitting; f.setAttribute('allow', 'clipboard-write; web-share'); f.src = u;\n    setTimeout(function () { if (old && old.parentNode) old.remove(); }, old && !old.dataset.blank ? 600 : 0);\n    FR.appendChild(f);\n  }\n  function frWin() { var fs = FR && FR.querySelectorAll('iframe'), f = fs && fs[fs.length - 1]; return f && f.contentWindow || null; }\n  function frSleep() { try { var w = FR && frWin(); if (w) w.postMessage({ nwFitting: 'sleep' }, '*'); } catch (e) {} }\n  /* Safari on a phone can run short of image memory while the fitting room is alive, and then draws the layered tag\n     pictures (SVG) with only their dark base. Once the fitting room has let go, give those pictures a fresh draw. */\n  /* tag-look's drawing as a flat, see-through PNG (the same as the cart): a layered SVG could come out black on an iPhone */\n  function flatLook(v) { try { var u = new URL(v); if (!/\\.svg$/.test(u.pathname)) return v; u.pathname = u.pathname.replace(/\\.svg$/, '.png'); u.searchParams.set('bg', 'none'); u.searchParams.set('w', '480'); return u.toString(); } catch (e) { return v; } }\n  function redrawTags() { [].forEach.call(document.querySelectorAll('img[src*=\"/img/\"][src*=\".svg\"]'), function (im) { var n = im.cloneNode(true); if (im.parentNode) im.parentNode.replaceChild(n, im); }); }\n  /* a phone short of memory can stop loading the fitting room inside the tab: it stays an empty grey page, and reloading\n     doesn't bring it back. The fitting room says \"ready\" once it runs; without that it is loaded once more, and if it\n     still doesn't come, the wardrobe comes back with a note and Try again (again: the same opening) */\n  function frWatch(u, again) {\n    var tok = FRT, n = 0; FRUP = false; clearTimeout(FRW);\n    (function wait() { FRW = setTimeout(function () {\n      if (tok !== FRT || FRUP || !FR || FR.hidden) return;\n      if (!n++) { frNav(u); wait(); return; }\n      closeFitting(); openDrawer(); ctoast(T.frFail, again, T.again, true);\n    }, 8000); })();\n  }\n  function closeFitting(noHist) { if (!FR) return; if (!noHist) toLayer(''); frSleep(); FR.classList.remove('open'); document.documentElement.classList.remove('nw-wr-lock', 'nw-fr-on'); setTimeout(function () { FR.hidden = true; frNav(null); setTimeout(redrawTags, 120); setTimeout(redrawTags, 700); }, 260); }\n  /* swap: back from \"Edit design\" on a cart piece - the new design takes the old one's place on the dog (not in the\n     cart yet, so it offers Add to cart), and the cart version moves to the \"other pieces\" row */\n  function tryCart(resume, swap) {\n    loadCart().then(function (c) {\n      var gear = c.items.filter(function (x) { return kindOfType(x.product_type, x.properties); }).map(cItem);\n      /* a fresh opening from the cart goes straight on the dog; a tag or leash without a collar hangs on the grey stand-in collar */\n      var pool = list().filter(function (i) { return !inCart(i); }).map(wItem);\n      /* back to a look that started from the cart: the wardrobe pieces that were added to it come back too */\n      var back = resume && resume.sigs ? list().filter(function (i) { return resume.sigs.indexOf(i.sig) > -1 && !inCart(i); }).map(wItem) : [];\n      if (back.length) { gear = gear.concat(back); pool = pool.filter(function (q) { return !back.some(function (b) { return b._w === q._w; }); }); }\n      if (swap) {\n        var at = -1; gear.forEach(function (g, k) { if (g._c === swap.oldc) at = k; });\n        var ent = list().filter(function (i) { return i.sig === swap.sig; })[0];\n        if (at > -1 && ent) { var old = gear[at]; gear[at] = Object.assign(wItem(ent), { _replaces: swap.oldc }); pool = pool.filter(function (q) { return q._w !== swap.sig; }); pool.unshift(old); }\n      }\n      openFitting(gear, pool, 'cart', resume || null);\n    });\n  }\n  /* ---------- the last fitting room session: \"Continue where you left off\" ---------- */\n  var LS_LAST = 'nw-fr-last';\n  function lastGet() { try { var j = JSON.parse(localStorage.getItem(LS_LAST) || 'null'); return j && typeof j.snap === 'string' && /^data:image\\/\\w+;base64,.{200}/.test(j.snap) && Date.now() - j.t < 30 * 864e5 ? j : null; } catch (e) { return null; } }\n  function lastSet(x) { try {\n    /* a snapshot taken while the fitting room was hidden is empty: keep the last good picture instead of a broken one */\n    var good = function (v) { return typeof v === 'string' && /^data:image\\/\\w+;base64,.{200}/.test(v); };\n    if (!x) return; if (!good(x.snap)) { var o = lastGet(); if (!o || !good(o.snap)) return; x = Object.assign({}, x, { snap: o.snap }); }\n    localStorage.setItem(LS_LAST, JSON.stringify(Object.assign({ t: Date.now() }, x))); } catch (e) { } }\n  function lastOk() {\n    var x = lastGet(); if (!x) return null;\n    if (x.from === 'cart') return CART && CART.items.some(function (c) { return kindOfType(c.product_type, c.properties); }) ? x : null;\n    var have = view().map(function (i) { return i.sig; });\n    return (x.sigs || []).some(function (s) { return have.indexOf(s) > -1; }) ? x : null;\n  }\n  function resumeLast(extra) {\n    var x = lastOk(); if (!x) return; var res = Object.assign({ picks: x.picks, sigs: x.sigs || [] }, extra || {});\n    if (x.from === 'cart') { tryCart(res); return; }\n    var V = view(), sigs = x.sigs.filter(function (s) { return V.some(function (i) { return i.sig === s; }); }); PICKED = sigs.slice();\n    openFitting(V.filter(function (i) { return sigs.indexOf(i.sig) > -1; }).map(fitOf), V.filter(function (i) { return sigs.indexOf(i.sig) < 0; }).map(fitOf), '', res);\n  }\n  window.addEventListener('message', function (e) {\n    if (e.origin !== FIT || !e.data || !e.data.nwFitting) return;\n    var d = e.data, win = FR && frWin();\n    if (d.session) { lastSet(d.session); syncPicks(d.session); }\n    /* the visitor key goes at once, so the fitting room can read the dogs from the server while the pieces are prepared */\n    if (d.nwFitting === 'ready') { FRUP = true; clearTimeout(FRW); }\n    if (d.nwFitting === 'ready' && win) win.postMessage({ nwFitting: 'vk', vk: visitorKey() }, FIT);\n    if (d.nwFitting === 'ready' && FRQ && win) FRQ.then(function (a) { win.postMessage(Object.assign({ nwFitting: 'pieces', items: a[0], pool: a[1], from: FROM, neck: RESUME && RESUME.neck, picks: RESUME && RESUME.picks, rmDogs: DOGRM.slice(), vk: visitorKey(), pv: policyUrl(), tips: tipsSeen(), dogId: RESUME && RESUME.dogId || null, photo: RESUME && RESUME.photo || null, fly: !!(RESUME && RESUME.fly), swapped: RESUME && RESUME.swapped || null }, priceMsg()), FIT); RESUME = null; });\n    else if (d.nwFitting === 'dogs' && Array.isArray(d.dogs)) {\n      /* dogs deleted in the wardrobe stay hidden until the fitting room has let them go (then they drop off its list) */\n      var ids = d.dogs.map(function (x) { return x && String(x.id); }); DOGRM = DOGRM.filter(function (id) { return ids.indexOf(id) > -1; }); putPic('fr-rm', DOGRM.slice());\n      DOGL = { dogs: d.dogs.filter(function (x) { return x && x.id && DOGRM.indexOf(String(x.id)) < 0; }).map(function (x) { return { id: String(x.id), th: /^data:image\\//.test(x.th || '') ? x.th : '', nm: typeof x.nm === 'string' ? x.nm.slice(0, 20) : '' }; }), cur: DOGRM.indexOf(d.cur) > -1 ? null : d.cur || null, t: Date.now() }; DOGSEL = DOGL.cur; putPic('fr-dogs', DOGL); }\n    /* the back arrow goes one step back: to the cart or the wardrobe it was opened from (the wardrobe takes over the fitting room's history entry) */\n    else if (d.nwFitting === 'flyout') { if (FAQ) { clearTimeout(FAQ); FAQ = null; if (Array.isArray(d.fly) && FR && !FR.hidden && !WROPEN) homeFly(d.fly); else { closeFitting(true); stepBack(); } } }\n    else if (d.nwFitting === 'close') { if (BACKTO === 'cart') { closeFitting(); stepBack(); } else if (Array.isArray(d.fly) && FR && !FR.hidden && !WROPEN) homeFly(d.fly); else { closeFitting(true); stepBack(); } }\n    else if (d.nwFitting === 'tocart') { closeFitting(); setTimeout(function () { if (window.NWCart) { if (window.NWCart.refresh) window.NWCart.refresh(); window.NWCart.open(); } }, 280); }\n    else if (d.nwFitting === 'viewcart') { frSleep(); if (window.NWCart) window.NWCart.open(); setTimeout(redrawTags, 400); setTimeout(redrawTags, 1200); }\n    else if (d.nwFitting === 'replace' && d.item && d.oldc) {\n      /* \"Replace in cart\": the old cart line out, the edited design in; the cart then slides in over the fitting room */\n      var rit = d.item._w ? list().filter(function (x) { return x.sig === d.item._w; })[0] : null;\n      var rdone = function (ok) { if (!win) return; var cps = {}; list().forEach(function (i) { var l = lineOf(i); if (l) cps[i.sig] = lineCp(l); });\n        win.postMessage(Object.assign({ nwFitting: 'incart', sigs: Object.keys(cps), cps: cps, keys: (CART ? CART.items : []).map(function (c) { return c.key; }) }, priceMsg()), FIT);\n        win.postMessage(Object.assign({ nwFitting: 'added', id: d.id, ok: ok, code_price: rit ? lineCp(lineOf(rit)) : null }, priceMsg()), FIT); };\n      /* the old line is remembered so Undo can put it back exactly (its pictures are already stored by Shopify, as links) */\n      var oln = CART && CART.items.filter(function (c) { return c.key === d.oldc; })[0];\n      if (oln) UNDO[d.id] = { id: oln.variant_id, quantity: oln.quantity, properties: oln.properties || {} };\n      /* kept so a quick Undo waits for this to finish (else it finds no new line to take out and both end up in the cart) */\n      if (rit) RPL[d.id] = fetch(ROOT + 'cart/change.js', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ id: d.oldc, quantity: 0 }) })\n        .then(function () { return addToCart(rit, true, oln ? oln.quantity : 1); }).then(function () { rdone(true); }, function () { return loadCart().then(function () { rdone(false); }); });\n    }\n    else if (d.nwFitting === 'unreplace' && d.item && UNDO[d.id]) {\n      /* Undo on \"Updated in your cart\": the new line out, the old one back */\n      var u = UNDO[d.id], nit = d.item._w ? list().filter(function (x) { return x.sig === d.item._w; })[0] : null, rp = RPL[d.id]; delete UNDO[d.id]; delete RPL[d.id];\n      var J = { 'Content-Type': 'application/json', Accept: 'application/json', 'X-NW-Quiet': '1' };\n      Promise.resolve(rp).catch(function () { }).then(function () { var nl = nit ? lineOf(nit) : null; return nl ? fetch(ROOT + 'cart/change.js', { method: 'POST', headers: J, body: JSON.stringify({ id: nl.key, quantity: 0 }) }) : null; })\n        .then(function () { return fetch(ROOT + 'cart/add.js', { method: 'POST', headers: J, body: JSON.stringify({ items: [u] }) }); })\n        .then(loadCart, loadCart).then(function () {\n          if (window.NWCart && window.NWCart.refresh) window.NWCart.refresh();\n          if (!win) return; var cps = {}; list().forEach(function (i) { var l = lineOf(i); if (l) cps[i.sig] = lineCp(l); });\n          win.postMessage(Object.assign({ nwFitting: 'incart', sigs: Object.keys(cps), cps: cps, keys: (CART ? CART.items : []).map(function (c) { return c.key; }) }, priceMsg()), FIT);\n        });\n    }\n    else if (d.nwFitting === 'unswap' && d.sig && UNDOW[d.sig]) {\n      /* Undo on \"Updated\" in the fitting room: the edited design out, the one before it back in its place */\n      var uw = UNDOW[d.sig]; delete UNDOW[d.sig]; delete EDW[d.sig];\n      if (!uw.pre) { remove(d.sig); hardDelete(d.sig); } restore(uw.it, uw.idx);\n      Promise.all([uw.f ? putPic(uw.it.sig, uw.f) : null, uw.b ? putPic(uw.it.sig + '~b', uw.b) : null])\n        .then(function () { return Promise.all([live([uw.it.handle]), loadCart()]); })\n        .then(function () { return withPics([decorate(wItem(uw.it))]); })\n        .then(function (a) {\n          if (OPEN && OPEN.sigs) OPEN.sigs = OPEN.sigs.map(function (s) { return s === d.sig ? uw.it.sig : s; });\n          if (win) win.postMessage(Object.assign({ nwFitting: 'swap', old: d.sig, item: a[0], keep: !!uw.pre }, priceMsg()), FIT);\n        });\n    }\n    else if (d.nwFitting === 'wardrobe') { closeFitting(true); setTimeout(openDrawer, 280); }\n    /* the fitting room: a piece taken out of the cart from its label (it stays in the fitting room: a piece that was only in\n       the cart is saved to the wardrobe first and the fitting room learns its new id, so leaving the cart doesn't take it\n       off the dog), or deleted from its list (from the wardrobe only, or from both) */\n    else if (d.nwFitting === 'uncart' && d.item) { var ui = d.item; Promise.resolve(ui._w && PEND[ui._w]).catch(function () { }).then(function () {\n      if (ui._c) return keepCartPiece(ui._c).then(function (sig) { if (sig && win) win.postMessage({ nwFitting: 'kept', id: d.id, sig: sig }, FIT); return ui._c; });\n      var w0 = list().filter(function (x) { return x.sig === ui._w; })[0], l0 = w0 && lineOf(w0); return l0 ? l0.key : null;\n    }).then(function (uk) { if (uk) return cartOut(uk).then(frCart); }); }\n    else if (d.nwFitting === 'wdel' && d.item) { var ds = d.item._w || (d.item._c ? 'c~' + d.item._c : null); if (ds) { delMany([ds], !!d.both); if (d.both) setTimeout(frCart, 900); } }\n    else if (d.nwFitting === 'wundel') { undoDel(); setTimeout(frCart, 1200); }\n    else if (d.nwFitting === 'shop') {\n      var ss = d.session || {};\n      try {\n        sessionStorage.setItem('nw-fr-shop', String(Date.now()));\n        sessionStorage.setItem('nw-fr-ret', JSON.stringify({ find: d.kind, from: FROM, sigs: ss.sigs || OPEN.sigs, old: null, snap: d.snap || ss.snap || '', box: d.box || null, neck: d.neck || null, picks: ss.picks || null, t: Date.now() }));\n      } catch (x) { } var hc = { collar: 'collars', leash: 'leashes', tag: 'silicone-dog-id-tags' }[d.kind] || 'all'; closeFitting(true); location.href = ((window.Shopify && Shopify.routes && Shopify.routes.root) || '/') + 'collections/' + hc; }\n    else if (d.nwFitting === 'tips') tipsDone();\n    else if (d.nwFitting === 'meet') { if (FLY) FLY.land(d.r); }\n    else if (d.nwFitting === 'add' && d.item) {\n      var it = d.item._w ? list().filter(function (x) { return x.sig === d.item._w; })[0] : null;\n      var done = function (ok) { var ln = it ? lineOf(it) : null; if (win) win.postMessage(Object.assign({ nwFitting: 'added', id: d.id, ok: ok, key: ln ? ln.key : null, code_price: ln ? lineCp(ln) : null }, priceMsg()), FIT); };\n      if (it) addToCart(it, true).then(function () { done(true); }, function () { done(false); }); else done(false);\n    } else if (d.nwFitting === 'edit' && d.item) {\n      if (d.item.handle) live([d.item.handle]);   /* its prices are ready by the time Done is tapped */\n      var w = d.item._w ? list().filter(function (x) { return x.sig === d.item._w; })[0] : null;\n      if (collarEdit(d, w, win) || tagEdit(d, w)) return;\n      editByPage(d, w);\n    }\n  });\n\n  function editByPage(d, w) {\n      var url = w ? w.editUrl : (d.item.handle ? '/products/' + d.item.handle : null);\n      var pr = d.item.properties || {};\n      if (w && w.kind === 'tag' && w.handle) url = '/products/' + w.handle + '?nwwr=' + encodeURIComponent(w.sig);\n      if (!w && d.item._c && d.item.handle && kindOfType(d.item.product_type, pr) === 'tag') url = '/products/' + d.item.handle + '?nwedit=' + encodeURIComponent(d.item._c);\n      if (!w && pr._collar && d.item.handle) { try { var cj = JSON.parse(pr._collar); url = '/products/' + d.item.handle + '?variant=' + d.item.variant_id + '&collar=' + b64u(JSON.stringify({ s: cj.s })); } catch (x) { } }\n      if (url) { try { sessionStorage.setItem('nw-fr-ret', JSON.stringify({ from: FROM, sigs: OPEN.sigs, old: w ? w.sig : null, oldc: !w && d.item._c ? d.item._c : null, snap: d.snap || '', box: d.box || null, neck: d.neck || null, picks: d.session && d.session.picks || null, t: Date.now() })); } catch (x) { } url += (url.indexOf('?') > -1 ? '&' : '?') + 'fr=1'; }\n      if (url) { closeFitting(true); clearTimeout(PT); PT = null; try { if (PUSHED) history.replaceState(null, ''); } catch (x) { } LAYER = ''; PUSHED = false; location.href = loc(url); }\n  }\n  /* ---------- Edit design for collars and leashes: the builder opens right here, above the fitting room ---------- */\n  var COLLAR_JS = COLH + '/collar.js', CJP = null;\n  function collarJs() {\n    if (window.NWCollar && window.NWCollar.openWith) return Promise.resolve();\n    if (CJP) return CJP;\n    return CJP = new Promise(function (ok, no) { var sc = document.createElement('script'); sc.src = COLLAR_JS; sc.onload = function () { window.NWCollar && window.NWCollar.openWith ? ok() : no(); }; sc.onerror = function () { CJP = null; no(); }; document.head.appendChild(sc); });\n  }\n  function collarEdit(d, w, win) {\n    var pr = d.item.properties || {}, cj = null; try { cj = JSON.parse(pr._collar || 'null'); } catch (x) { }\n    if (!cj || !cj.c || !d.item.handle) return false;\n    Promise.all([collarJs(), fetch(ROOT + 'products/' + d.item.handle + '.js').then(function (r) { if (!r.ok) throw 0; return r.json(); })]).then(function (a) {\n      var p = a[1];\n      window.NWCollar.openWith({\n        catalog: cj.c, handle: p.handle, productTitle: p.title,\n        title: String(p.title).split(' - ').pop().replace('\u2122', '').replace('Limited ', ''),\n        variants: p.variants.map(function (v) { return { id: v.id, o: v.options || [], p: money(v.price), c: v.compare_at_price > v.price ? money(v.compare_at_price) : '', a: v.available }; }),\n        current: d.item.variant_id, design: cj.s || {},\n        fr: { snap: d.snap || '', box: d.box || null, inCart: d.inCart != null ? !!d.inCart : !!d.item.inCart, onBack: function (entry, blob) { collarBack(d, w, cj, entry, blob, win); } }\n      });\n    }).catch(function () { editByPage(d, w); });\n    return true;\n  }\n  /* ---------- tags: the personalizer (copy) opens right here too ---------- */\n  var P2_JS = 'https://personalizer.northwoofs.com/nw-p2.js', P2P = null;\n  function p2Js() {\n    if (window.NWP2) return Promise.resolve();\n    if (P2P) return P2P;\n    return P2P = new Promise(function (ok, no) {\n      window.__nwP2Host = 1; var n = 0, iv = setInterval(function () { if (window.NWP2) { clearInterval(iv); ok(); } else if (++n > 150) { clearInterval(iv); P2P = null; no(); } }, 100);\n      if (!document.querySelector('script[src=\"' + P2_JS + '\"]')) { var sc = document.createElement('script'); sc.type = 'module'; sc.src = P2_JS; document.head.appendChild(sc); }\n    });\n  }\n  function isTag(it) { return kindOfType(it.product_type, it.properties || {}) === 'tag'; }\n  function tagEdit(d, w) {\n    if (!isTag(d.item) || !d.item.handle || !d.item.variant_id) return false;\n    var ctx = { snap: d.snap || '', box: d.box || null, inCart: d.inCart != null ? !!d.inCart : !!d.item.inCart, onBack: function (entry, blob) { tagBack(d, w, entry, blob); } };\n    var before = null;\n    p2Js().then(function () {\n      before = FRRET; FRRET = ctx;\n      return window.NWP2.open({ variantId: d.item.variant_id, handle: d.item.handle, wrSig: w ? w.sig : null, editKey: !w && d.item._c ? d.item._c : null, z: 2147483400,\n        onClosed: function () { setTimeout(function () { if (FRRET === ctx) FRRET = null; }, 1500); } });\n    }).then(function (ok) { if (ok === false && FRRET === ctx) FRRET = before; /* already open (a double tap): keep the open one's ticket */ })\n      .catch(function () { if (FRRET === ctx) FRRET = null; editByPage(d, w); });\n    return true;\n  }\n  function tagBack(d, w, entry, blob) {\n    if (!entry) return;\n    if (w && sigOf(entry) === w.sig) return;\n    if (!w) { var a = entry.props || {}, b = d.item.properties || {}, same = Object.keys(a).every(function (k) { return /^_|^Preview/.test(k) || String(a[k] || '') === String(b[k] || ''); }); if (same && +entry.variant_id === +d.item.variant_id) return; }\n    swapToFitting(d, w, entry, blob);\n  }\n  /* the menu's tag picker: \"Design your tag\" opens the personalizer straight away, on the page you are on */\n  function openTag(handle, colour) {\n    if (!handle) return false;\n    Promise.all([p2Js(), fetch(ROOT + 'products/' + handle + '.js').then(function (r) { if (!r.ok) throw 0; return r.json(); })]).then(function (a) {\n      var p = a[1], lc = String(colour || '').toLowerCase(), vs = p.variants || [];\n      var v = (lc && vs.filter(function (x) { return (x.options || []).some(function (o) { return String(o).toLowerCase() === lc; }); })[0]) || vs.filter(function (x) { return x.available; })[0] || vs[0];\n      if (!v) throw 0;\n      return window.NWP2.open({ variantId: v.id, handle: p.handle, colour: colour || null, z: 2147483400 });\n    }).catch(function () { location.href = loc('/products/' + handle) + (colour ? '?colour=' + encodeURIComponent(colour) : '') + '#design'; });\n    return true;\n  }\n  /* the cart's Edit engraving on a tag: the personalizer opens above the cart, its Add to cart replaces the line */\n  function editTagLine(it) {\n    if (!isTag(it) || !it.handle) return false;\n    p2Js().then(function () { return window.NWP2.open({ variantId: it.variant_id, handle: it.handle, editKey: it.key, z: 2147483400 }); })\n      .catch(function () { location.href = loc(it.url) + (it.url.indexOf('?') < 0 ? '?' : '&') + 'nwedit=' + encodeURIComponent(it.key); });\n    return true;\n  }\n  /* the cart's Edit design: same builder, its Add to cart replaces this cart line */\n  function editCartLine(it) {\n    var cj = null; try { cj = JSON.parse((it.properties || {})._collar || 'null'); } catch (x) { }\n    if (!cj || !cj.c || !it.handle) return false;\n    Promise.all([collarJs(), fetch(ROOT + 'products/' + it.handle + '.js').then(function (r) { if (!r.ok) throw 0; return r.json(); })]).then(function (a) {\n      var p = a[1];\n      window.NWCollar.openWith({ catalog: cj.c, handle: p.handle, productTitle: p.title, title: String(p.title).split(' - ').pop().replace('\u2122', '').replace('Limited ', ''),\n        variants: p.variants.map(function (v) { return { id: v.id, o: v.options || [], p: money(v.price), c: v.compare_at_price > v.price ? money(v.compare_at_price) : '', a: v.available }; }),\n        current: it.variant_id, design: cj.s || {}, editKey: it.key, qty: it.quantity });\n    }).catch(function () { location.href = loc(it.url) + (it.url.indexOf('?') < 0 ? '?' : '&') + 'collar=' + b64u(JSON.stringify({ s: cj.s, e: it.key, q: it.quantity })); });\n    return true;\n  }\n  /* back from the builder: nothing changed - nothing happens; a new design - it is saved and swapped in, in place */\n  function collarBack(d, w, cj, entry, blob, win) {\n    if (!entry) return;\n    var ns = null; try { ns = JSON.parse(entry.props && entry.props._collar || 'null'); } catch (x) { }\n    if (ns && JSON.stringify(ns.s || {}) === JSON.stringify(cj.s || {}) && +entry.variant_id === +d.item.variant_id) return;\n    swapToFitting(d, w, entry, blob);\n  }\n  /* the new design is saved to the wardrobe (in place of the old one) and handed to the fitting room to swap in */\n  function swapToFitting(d, w, entry, blob) {\n    var oldLine = w ? lineOf(w) : null;   /* the old design already in the cart: the new one offers to take its place */\n    /* pre: the new design was already saved on its own before this change - Undo must not delete it then */\n    var sig = sigOf(entry), pre = has(sig), done = pre ? Promise.resolve(sig) : save(Object.assign({}, entry, { sig: sig }), blob);\n    done.then(function () {\n      /* the old design is kept in memory (record and pictures) so the fitting room can offer Undo */\n      if (!(w && w.sig !== sig && has(w.sig))) return;\n      /* the place of the old design, counted without the new one: the new design takes that place (an edit is the same piece\n         in new colours, so it keeps its card), and Undo puts the old one back there */\n      var idx = list().filter(function (x) { return pre || x.sig !== sig; }).map(function (x) { return x.sig; }).indexOf(w.sig);\n      return Promise.all([getPic(w.sig), getPic(w.sig + '~b')]).then(function (p) { UNDOW[sig] = { it: remove(w.sig), idx: idx, f: p[0], b: p[1], pre: pre }; EDW[sig] = w.sig; hardDelete(w.sig); if (!pre) restore(remove(sig), idx); });\n    }).then(function () {\n      var it = list().filter(function (i) { return i.sig === sig; })[0]; if (!it) return;\n      /* the server draws the new design's card picture now, so it is ready when the piece flies home to its card */\n      var sp = !blob && serverPic(it); if (sp) (new Image()).src = sp;\n      /* the cart is already known here (kept fresh by nw:cart): only read it when it isn't, so the swap isn't held up */\n      return Promise.all([live([it.handle]), CART ? null : loadCart()]).then(function () { return withPics([decorate(wItem(it))]); }).then(function (a) {\n        var item = a[0]; if (d.item._c) item._replaces = d.item._c; else if (oldLine && !item.inCart) item._replaces = oldLine.key;\n        if (OPEN && OPEN.sigs) OPEN.sigs = OPEN.sigs.map(function (s) { return s === (w && w.sig) ? sig : s; });\n        var fw = FR && frWin();\n        if (fw) fw.postMessage(Object.assign({ nwFitting: 'swap', old: d.item._w || d.item._c || null, pid: d.id || null, item: item, undo: !!UNDOW[sig] }, priceMsg()), FIT);\n      });\n    });\n  }\n\n  /* A cart line edited from the cart (or put back with its Undo) while the fitting room is open underneath: the\n     fitting room swaps that piece for the new line in place, so it shows the design that is really in the cart and\n     keeps it \"In cart\". cart:true - it only swaps a piece it has (an edit started in the fitting room swaps itself). */\n  var RPQ = Promise.resolve(), RPA = {};   // in order: an edit and its quick Undo arrive one after the other; RPA: line -> the line it replaced\n  /* the saved design that was this cart line before an edit in the cart now becomes the edited design, in its place\n     (one card, its own picture, picks follow); before, the old saved one stayed with the old colours and the edited\n     line showed up next to it */\n  function replaceTwin(tw, ln) {\n    var d = read(), idx = d.items.map(function (x) { return x.sig; }).indexOf(tw.sig); if (idx < 0) return tw.sig;\n    var props = Object.assign({}, ln.properties || {}), sig = sigOf({ variant_id: ln.variant_id, props: props });\n    if (sig === tw.sig) return sig;\n    if (d.items.some(function (x) { return x.sig === sig; })) d.items.splice(idx, 1);\n    else d.items[idx] = Object.assign({}, tw, { id: sig, sig: sig, title: ln.product_title || tw.title, variant_id: ln.variant_id, variant_title: ln.variant_title || '', price: ln.final_price, props: props, saved_at: Date.now() });\n    write(d); hardDelete(tw.sig);\n    Object.keys(PK).forEach(function (k) { if (PK[k] === tw.sig) PK[k] = sig; });\n    PICKED = PICKED.map(function (s) { return s === tw.sig ? sig : s; });\n    emit(); return sig;\n  }\n  document.addEventListener('nw:line-replaced', function (e) {\n    var d = e.detail || {}, fw = FR && document.documentElement.classList.contains('nw-fr-on') && frWin();\n    if (!d.from || !d.to) return;\n    RPA[d.to] = d.from;\n    var olds = []; for (var k = d.from, n = 0; k && n < 8; k = RPA[k], n++) olds.push(k);   // the fitting room may still show an earlier one\n    /* the saved version of that design (a wardrobe piece that was in the cart): matched by the old line's details */\n    var twins = d.was ? list().filter(function (i) {\n      if (+i.variant_id !== +d.was.variant_id) return false; var p = d.was.properties || {};\n      return i.props._collar ? sameCollar(p._collar, i.props._collar) : Object.keys(i.props).every(function (q) { return q.charAt(0) === '_' || String(p[q] || '') === String(i.props[q] || ''); });\n    }) : [];\n    twins.forEach(function (i) { olds.push(i.sig); });\n    RPQ = RPQ.then(function () { return loadCart(); }).then(function (c) {\n      var ln = c.items.filter(function (x) { return x.key === d.to; })[0]; if (!ln) return;\n      twins.forEach(function (tw) { replaceTwin(tw, ln); });\n      if (DRW && DRW.classList.contains('open')) renderDrawer();\n      if (!fw) return;\n      return withPics([decorate(cItem(ln))]).then(function (a) { fw.postMessage(Object.assign({ nwFitting: 'swap', old: d.from, olds: olds, item: a[0], cart: true }, priceMsg()), FIT); });\n    }).catch(function () { });\n  });\n\n  /* ---------- public API for the personalizers and the cart ---------- */\n  window.NWWardrobe = {\n    sigOf: sigOf, has: has, list: list, save: save, count: function () { return list().length; },\n    remove: function (sig) { var it = remove(sig); if (it) hardDelete(sig); return it; },\n    toggle: function (e, blobFn) { var s = e.sig || sigOf(e); if (has(s)) { this.remove(s); return Promise.resolve(false); } return Promise.resolve(blobFn ? blobFn() : null).then(function (b) { return save(Object.assign({}, e, { sig: s }), b); }).then(function () { return true; }); },\n    subscribe: function (f) { subs.push(f); }, open: openDrawer, savedCard: savedCard, tryCart: tryCart, kindOfType: kindOfType,\n    frReturn: function () { frTouch(); return FRRET; }, backToFitting: backToFitting,\n    frWarmItem: function (it) { var fw = FR && FR.classList.contains('open') && frWin(); if (fw && it && it.handle) fw.postMessage({ nwFitting: 'warm', item: it }, FIT); },\n    frWarm: function (u) { var fw = FR && FR.classList.contains('open') && frWin(); if (fw && /^https:\\/\\/(nw-collar\\.|collar\\.northwoofs\\.com\\/)/.test(u)) fw.postMessage({ nwFitting: 'warm', pv: u }, FIT); },\n    /* pictures added after the design was saved (the personalizer saves at once and draws them in the background) */\n    setPics: function (e, p) { var s = e && (e.sig || sigOf(e)); if (!s || !p || !has(s)) return Promise.resolve(); return Promise.all([p.front ? putPic(s, p.front) : null, p.back ? putPic(s + '~b', p.back) : null]).then(function () { emit(); }); },\n    addBack: function (e, b) { var s = e && (e.sig || sigOf(e)); return s && b && has(s) ? putPic(s + '~b', b) : Promise.resolve(); }, editCartLine: editCartLine, editTagLine: editTagLine, openTag: openTag, warmTag: function () { p2Js().catch(function () { }); },\n    firstTip: function () { try { if (localStorage.getItem('nw-wr-tip')) return false; localStorage.setItem('nw-wr-tip', '1'); return true; } catch (e) { return false; } }\n  };\n  window.addEventListener('storage', function (e) { if (e.key === LS) emit(); });\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', headerBtn); else headerBtn();\n  loadCart();\n})();\n"],
  "mappings": "CAIC,UAAY,CAEX,IAAI,KAAQ,OAAO,SAAW,QAAQ,QAAU,QAAQ,OAAO,MAAS,IAExE,SAAS,IAAI,EAAG,CAAE,OAAO,GAAK,EAAE,OAAO,CAAC,IAAM,KAAO,OAAS,KAAO,EAAE,QAAQ,IAAI,IAAM,EAAI,KAAO,EAAE,MAAM,CAAC,EAAI,CAAG,CACpH,GAAI,OAAO,WAAY,OACvB,IAAI,IAAM,iCACN,GAAK,cAAe,IAAM,GAC1B,GAAK,OAAO,KAAK,SAAS,gBAAgB,MAAQ,EAAE,EAGpD,GAAK,OAAO,IAAI,SAAU,GAAK,OAAO,IAAI,IAC1C,MAAQ,CAAC,EAAE,OAAO,YAAc,WAAW,kCAAkC,EAAE,SAC/E,EAAI,CACN,MAAO,GAAG,MAAO,OAAQ,SAAU,EAAG,CAAE,OAAO,GAAG,IAAM,EAAI,GAAG,WAAa,GAAG,aAAc,CAAE,MAAO,CAAE,CAAC,CAAG,EAAG,KAAM,GAAG,KAAM,KAAM,GAAG,KACvI,KAAM,GAAG,KAAM,KAAM,SAAU,EAAG,CAAE,OAAO,GAAG,GAAG,MAAO,CAAE,MAAO,CAAE,CAAC,CAAG,EACvE,QAAS,GAAG,QAAS,KAAM,GAAG,KAAM,QAAS,GAAG,QAAS,QAAS,GAAG,QAAS,KAAM,GAAG,KAAM,OAAQ,GAAG,eAAgB,MAAO,GAAG,MAClI,GAAI,GAAG,YAAa,GAAI,GAAG,WAAY,GAAI,GAAG,MAAO,IAAK,GAAG,WAAY,GAAI,MAAQ,GAAG,YAAc,GAAG,UAAW,IAAK,GAAG,WAAY,GAAI,GAAG,MAAO,IAAK,GAAG,WAC9J,GAAI,MAAQ,GAAG,WAAa,GAAG,SAC/B,QAAS,GAAG,cAAe,QAAS,GAAG,SAAU,QAAS,GAAG,QAAS,MAAO,GAAG,MAAO,MAAO,GAAG,MAAO,OAAQ,GAAG,MAAO,QAAS,GAAG,YACtI,OAAQ,GAAG,OAAQ,MAAO,GAAG,YAAa,KAAM,GAAG,qBAAsB,OAAQ,GAAG,WAAY,KAAM,SAAU,EAAG,CAAE,OAAO,GAAG,GAAG,SAAU,CAAE,MAAO,CAAE,CAAC,CAAG,EAAG,KAAM,SAAU,EAAG,CAAE,OAAO,GAAG,IAAM,EAAI,GAAG,cAAgB,GAAG,gBAAiB,CAAE,MAAO,CAAE,CAAC,CAAG,EAAG,QAAS,GAAG,QAAS,KAAM,SAAU,EAAG,CAAE,OAAO,GAAG,GAAG,aAAc,CAAE,MAAO,CAAE,CAAC,CAAG,EAAG,MAAO,GAAG,cAAe,OAAQ,GAAG,cAAe,MAAO,GAAG,KAAM,MAAO,GAAG,UAAW,MAAO,GAAG,OACzb,MAAO,MAAQ,GAAG,kBAAoB,GAAG,gBAAiB,KAAM,SAAU,EAAG,CAAE,OAAO,EAAK,MAAQ,GAAG,kBAAoB,GAAG,gBAAoB,MAAQ,GAAG,gBAAkB,GAAG,aAAgB,EACjM,MAAO,SAAU,EAAG,CAAE,OAAO,GAAG,IAAM,EAAI,GAAG,iBAAmB,GAAG,mBAAoB,CAAE,MAAO,CAAE,CAAC,CAAG,EAAG,OAAQ,SAAU,EAAG,CAAE,OAAO,GAAG,GAAG,cAAe,CAAE,MAAO,CAAE,CAAC,CAAG,EAC3K,IAAK,GAAG,IAAK,OAAQ,GAAG,QAAS,QAAS,GAAG,aAAc,SAAU,GAAG,kBAAmB,OAAQ,GAAG,aAAc,OAAQ,GAAG,QAAS,KAAM,GAAG,WAAY,OAAQ,GAAG,QAAS,SAAU,GAAG,SAAU,OAAQ,GAAG,MAAO,MAAO,GAAG,aAAc,KAAM,SAAU,EAAG,CAAE,OAAO,GAAG,GAAG,MAAO,CAAE,OAAQ,CAAE,CAAC,CAAG,EAC3S,QAAS,GAAG,SAAU,OAAQ,GAAG,WAAY,QAAS,SAAU,EAAG,CAAE,OAAO,GAAG,GAAG,QAAS,CAAE,MAAO,CAAE,CAAC,CAAG,EAAG,SAAU,SAAU,EAAG,CAAE,OAAO,GAAG,GAAG,UAAW,CAAE,MAAO,CAAE,CAAC,CAAG,EAC7K,MAAO,GAAG,YAAa,MAAO,GAAG,SAAU,OAAQ,GAAG,OAAQ,KAAM,SAAU,EAAG,CAAE,OAAO,GAAG,GAAG,OAAQ,CAAE,MAAO,CAAE,CAAC,CAAG,EAAG,KAAM,GAAG,KAAM,MAAO,SAAU,EAAG,CAAE,OAAO,GAAG,GAAG,UAAW,CAAE,MAAO,CAAE,CAAC,CAAG,EAAG,MAAO,GAAG,MAAO,QAAS,GAAG,WAAY,QAAS,GAAG,QAAS,OAAQ,GAAG,iBAClR,QAAS,SAAU,EAAG,CAAE,OAAO,GAAG,IAAM,EAAI,GAAG,eAAiB,GAAG,iBAAkB,CAAE,MAAO,CAAE,CAAC,CAAG,EAAG,QAAS,SAAU,EAAG,EAAG,CAAE,OAAO,IAAM,EAAI,GAAG,eAAkB,IAAM,EAAI,GAAG,gBAAkB,GAAG,GAAG,cAAe,CAAE,MAAO,CAAE,CAAC,CAAI,EAC5O,MAAO,GAAG,UAAW,OAAQ,GAAG,QAAS,OAAQ,GAAG,UAAW,MAAO,GAAG,YAAa,OAAQ,GAAG,UAAW,OAAQ,GAAG,OACvH,IAAK,GAAG,YAAa,QAAS,GAAG,YACnC,EACI,QAAU,CAAC,oCAAqC,oCAAqC,iBAAiB,EACtG,GAAK,CACP,IAAK,iNACL,MAAO,mVACP,KAAM,kTACN,MAAO,qMACP,EAAG,+JACH,GAAI,2LACJ,KAAM,6JACN,KAAM,iLACN,KAAM,+SACR,EAKA,SAAS,WAAY,CAAE,OAAO,SAAS,QAAW,OAAO,SAAW,QAAQ,QAAU,QAAQ,OAAO,MAAS,KAAO,yBAA2B,CAChJ,SAAS,YAAa,CACpB,IAAI,EAAI,GAAI,GAAI,CAAE,EAAI,aAAa,QAAQ,UAAU,GAAK,EAAI,OAAS,EAAG,CAAE,CAC5E,GAAI,CAAC,yBAAyB,KAAK,CAAC,EAAG,CACrC,IAAI,EAAI,IAAI,WAAW,EAAE,EAAG,OAAO,gBAAgB,CAAC,EACpD,EAAI,KAAK,OAAO,aAAa,MAAM,KAAM,CAAC,CAAC,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,EACtG,GAAI,CAAE,aAAa,QAAQ,WAAY,CAAC,CAAG,OAAS,EAAG,CAAE,CAC3D,CACA,OAAO,CACT,CAEA,IAAI,IAAM,CAAC,gBAAiB,UAAU,EACtC,SAAS,QAAQ,MAAO,CAAE,IAAI,EAAI,KAAM,GAAI,CAAE,EAAI,KAAK,OAAO,OAAS,CAAC,GAAG,SAAW,MAAM,CAAG,OAAS,EAAG,CAAE,CAAE,MAAO,CAAC,EAAE,GAAK,IAAI,QAAQ,EAAE,CAAC,GAAK,EAAI,CACtJ,SAAS,MAAO,CACd,GAAI,CAAE,IAAI,EAAI,KAAK,MAAM,aAAa,QAAQ,EAAE,GAAK,MAAM,EAAG,MAAI,CAAC,GAAK,CAAC,EAAE,MAAc,CAAE,EAAG,EAAG,MAAO,CAAC,CAAE,GAAG,EAAE,MAAQ,EAAE,MAAM,OAAO,SAAU,EAAG,CAAE,MAAO,CAAC,QAAQ,EAAE,KAAK,CAAG,CAAC,EAAU,EAAG,OACvL,EAAG,CAAE,MAAO,CAAE,EAAG,EAAG,MAAO,CAAC,CAAE,CAAG,CAC1C,CACA,SAAS,MAAM,EAAG,CAAE,GAAI,CAAE,aAAa,QAAQ,GAAI,KAAK,UAAU,CAAC,CAAC,CAAG,OAAS,EAAG,CAAE,CAAE,CACvF,IAAI,GAAK,KACT,SAAS,IAAK,CACZ,OAAI,KACJ,GAAK,IAAI,QAAQ,SAAU,GAAI,GAAI,CACjC,GAAI,CAAE,IAAI,EAAI,UAAU,KAAK,cAAe,CAAC,EAAG,EAAE,gBAAkB,UAAY,CAAE,EAAE,OAAO,kBAAkB,GAAG,CAAG,EAAG,EAAE,UAAY,UAAY,CAAE,GAAG,EAAE,MAAM,CAAG,EAAG,EAAE,QAAU,UAAY,CAAE,GAAG,EAAE,KAAK,CAAG,CAAG,OACtM,EAAG,CAAE,GAAG,CAAC,CAAG,CACrB,CAAC,EACM,GACT,CACA,SAAS,IAAI,KAAM,GAAI,CAAE,OAAO,GAAG,EAAE,KAAK,SAAU,EAAG,CAAE,OAAO,IAAI,QAAQ,SAAU,GAAI,GAAI,CAAE,IAAI,EAAI,EAAE,YAAY,IAAK,IAAI,EAAG,EAAI,EAAE,YAAY,GAAG,EAAG,EAAI,GAAG,CAAC,EAAG,EAAE,WAAa,UAAY,CAAE,GAAG,GAAK,EAAE,MAAM,CAAG,EAAG,EAAE,QAAU,UAAY,CAAE,GAAG,EAAE,KAAK,CAAG,CAAG,CAAC,CAAG,CAAC,CAAG,CAI1Q,IAAI,IAAM,CAAC,EACX,SAAS,OAAO,GAAI,KAAM,CACxB,GAAI,CAAC,KAAM,OAAO,QAAQ,QAAQ,EAElC,GADA,IAAI,EAAE,EAAI,KACN,OAAO,MAAS,aAAe,EAAE,gBAAgB,MAAO,OAAO,IAAI,YAAa,SAAU,EAAG,CAAE,OAAO,EAAE,IAAI,KAAM,EAAE,CAAG,CAAC,EAAE,MAAM,UAAY,CAAE,CAAC,EACnJ,IAAI,MAAQ,KAAK,YAAc,KAAK,YAAY,EAAI,IAAI,QAAQ,SAAU,GAAI,GAAI,CAAE,IAAI,EAAI,IAAI,WAAc,EAAE,OAAS,UAAY,CAAE,GAAG,EAAE,MAAM,CAAG,EAAG,EAAE,QAAU,GAAI,EAAE,kBAAkB,IAAI,CAAG,CAAC,EACpM,OAAO,MAAM,KAAK,SAAU,IAAK,CAAE,OAAO,IAAI,YAAa,SAAU,EAAG,CAAE,OAAO,EAAE,IAAI,CAAE,EAAG,KAAK,MAAQ,YAAa,EAAG,GAAI,EAAG,EAAE,CAAG,CAAC,CAAG,CAAC,EAAE,MAAM,UAAY,CAAE,CAAC,CACnK,CACA,SAAS,OAAO,GAAI,CAClB,OAAO,IAAI,WAAY,SAAU,EAAG,CAAE,OAAO,EAAE,IAAI,EAAE,CAAG,CAAC,EAAE,KAAK,SAAU,EAAG,CAC3E,OAAK,EACD,OAAO,MAAS,aAAe,aAAa,MAC5C,EAAE,EAAE,aAAa,aAAqB,EACnC,EAAE,EAAI,IAAI,KAAK,CAAC,EAAE,CAAC,EAAG,CAAE,KAAM,EAAE,GAAK,WAAY,CAAC,EAAK,IAAI,EAAE,GAAK,KAH1D,IAAI,EAAE,GAAK,IAI5B,CAAC,EAAE,MAAM,UAAY,CAAE,OAAO,IAAI,EAAE,GAAK,IAAM,CAAC,CAClD,CACA,SAAS,OAAO,GAAI,CAAE,cAAO,IAAI,EAAE,EAAU,IAAI,YAAa,SAAU,EAAG,CAAE,OAAO,EAAE,OAAO,EAAE,CAAG,CAAC,EAAE,MAAM,UAAY,CAAE,CAAC,CAAG,CAC7H,IAAI,OAAU,SAAS,eAAiB,SAAS,cAAc,KAAQ,IAAI,QAAQ,UAAW,EAAE,EAEhG,SAAS,QAAQ,EAAG,EAAG,CAAE,IAAI,EAAI,OAAO,YAAc,CAAC,EAAG,OAAO,EAAE,CAAC,GAAK,MAAQ,CAAG,CACpF,IAAI,KAAO,CAAC,EAGR,MAAQ,8BAA+B,KAAO,gCAAiC,UAAY,qDAC/F,SAAS,UAAU,GAAI,CACrB,IAAI,EAAK,IAAM,GAAG,OAAU,CAAC,EAC7B,GAAI,OAAO,EAAE,UAAa,WAAa,EAAE,SAAS,QAAQ,KAAK,IAAM,GAAK,EAAE,SAAS,QAAQ,SAAS,IAAM,GAAI,OAAO,SAAS,EAAE,QAAQ,EAC1I,GAAI,EAAE,QAAW,GAAI,CAAE,OAAO,KAAO,MAAQ,KAAK,SAAS,mBAAmB,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,EAAI,oBAAsB,OAAS,EAAG,CAAE,CAC5L,MAAO,EACT,CACA,SAAS,OAAO,GAAI,CAClB,GAAI,WAAW,EAAE,EAAG,CAAE,IAAI,GAAK,SAAS,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,KAAO,EAAI,CAAC,EAAE,CAAC,EAAG,GAAI,CAAC,GAAI,OAAO,QAAQ,QAAQ,EAAE,EAC3H,IAAI,GAAK,GAAG,MAAO,IAAM,CAAC,GAAG,gBAAgB,EAAG,GAAG,QAAS,GAAG,QAAQ,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,OAAO,GAAM,UAAY,iCAAiC,KAAK,CAAC,CAAG,CAAC,EAAE,CAAC,EAC7K,OAAO,QAAQ,QAAQ,UAAU,EAAE,GAAK,KAAO,GAAG,KAAK,CAAG,CAC5D,OAAI,KAAK,EAAE,EAAU,QAAQ,QAAQ,KAAK,EAAE,CAAC,EAAU,OAAO,EAAE,EAAE,KAAK,SAAU,EAAG,CAAE,GAAI,CAAC,EAAG,CAAE,IAAI,GAAK,KAAK,EAAE,MAAM,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAI,CAAC,EAAE,CAAC,EAAG,OAAO,GAAK,UAAU,EAAE,EAAI,EAAI,CAAE,YAAK,EAAE,EAAI,IAAI,gBAAgB,CAAC,EAAU,KAAK,EAAE,CAAG,CAAC,CAAG,CAIpQ,SAAS,WAAW,EAAG,EAAG,CAAE,OAAO,YAAY,CAAC,IAAM,YAAY,CAAC,CAAG,CACtE,SAAS,YAAY,EAAG,CACtB,IAAI,EAAG,GAAI,CAAE,EAAI,KAAK,MAAM,CAAC,CAAG,OAAS,EAAG,CAAE,OAAO,CAAG,CACxD,IAAI,IAAM,SAAU,EAAG,CAAE,GAAI,CAAC,GAAK,OAAO,GAAM,UAAY,MAAM,QAAQ,CAAC,EAAG,OAAO,EAAG,IAAI,EAAI,CAAC,EAAG,cAAO,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,SAAU,EAAG,CAAE,EAAE,CAAC,EAAI,IAAI,EAAE,CAAC,CAAC,CAAG,CAAC,EAAU,CAAG,EACjL,OAAO,KAAK,UAAU,IAAI,CAAC,CAAC,CAC9B,CACA,SAAS,MAAM,EAAG,CAChB,IAAI,EAAI,EAAE,OAAS,CAAC,EAAG,KAAO,OAAO,KAAK,CAAC,EAAE,KAAK,EAAG,EAAI,OAAO,EAAE,YAAc,EAAE,EAAI,IACtF,KAAK,QAAQ,SAAU,EAAG,CAAE,GAAK,EAAI,KAAO,IAAM,UAAY,YAAY,EAAE,CAAC,CAAC,EAAI,EAAE,CAAC,GAAK,GAAK,CAAC,EACrF,QAAP,EAAI,EAAY,EAAI,EAAG,EAAI,EAAE,OAAQ,IAAK,EAAK,EAAI,GAAK,EAAE,WAAW,CAAC,EAAK,EAC/E,MAAO,KAAO,IAAM,GAAG,SAAS,EAAE,CACpC,CACA,IAAI,KAAO,CAAC,EACZ,SAAS,MAAO,CAAE,IAAI,EAAI,KAAK,EAAG,KAAK,QAAQ,SAAU,EAAG,CAAE,GAAI,CAAE,EAAE,CAAC,CAAG,OAAS,EAAG,CAAE,CAAE,CAAC,EAAG,UAAU,CAAG,CAC3G,SAAS,MAAO,CAAE,OAAO,KAAK,EAAE,KAAO,CACvC,SAAS,IAAI,IAAK,CAAE,OAAO,KAAK,EAAE,MAAM,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAK,CAAC,CAAG,CACtF,SAAS,KAAK,EAAG,KAAM,CACrB,GAAI,QAAQ,EAAE,KAAK,EAAG,OAAO,QAAQ,QAAQ,IAAI,EACjD,IAAI,EAAI,KAAK,EAAG,IAAM,EAAE,KAAO,MAAM,CAAC,EACtC,GAAI,EAAE,MAAM,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAK,CAAC,EAAG,OAAO,QAAQ,QAAQ,GAAG,EACpF,IAAI,GAAK,CAAE,GAAI,IAAK,IAAK,IAAK,KAAM,EAAE,KAAM,MAAO,EAAE,MAAO,OAAQ,EAAE,OAAQ,IAAK,EAAE,IAAK,WAAY,EAAE,WAAY,cAAe,EAAE,eAAiB,GACpJ,MAAO,EAAE,MAAO,aAAc,EAAE,cAAgB,GAAI,MAAO,EAAE,OAAS,CAAC,EAAG,QAAS,EAAE,SAAW,EAAE,IAAK,SAAU,KAAK,IAAI,CAAE,EAE9H,IADA,EAAE,MAAM,QAAQ,EAAE,EACX,EAAE,MAAM,OAAS,KAAK,CAAE,IAAI,IAAM,EAAE,MAAM,IAAI,EAAG,OAAO,IAAI,EAAE,EAAG,OAAO,IAAI,GAAK,IAAI,CAAG,CAC/F,MAAM,CAAC,EAAG,aAAe,GAEzB,IAAI,KAAO,MAAQ,OAAO,MAAS,aAAe,EAAE,gBAAgB,OAAS,UAAW,KAAM,MAAQ,KAAO,KAAK,MAAQ,KAAM,KAAO,KAAO,KAAK,KAAO,KAC1J,OAAO,QAAQ,IAAI,CAAC,MAAQ,OAAO,IAAK,KAAK,EAAI,KAAM,KAAO,OAAO,IAAM,KAAM,IAAI,EAAI,IAAI,CAAC,EAAE,KAAK,UAAY,CAAE,YAAK,EAAU,GAAK,CAAC,CAC1I,CACA,SAAS,OAAO,IAAK,CAAE,IAAI,EAAI,KAAK,EAAG,GAAK,KAAM,SAAE,MAAQ,EAAE,MAAM,OAAO,SAAU,EAAG,CAAE,OAAI,EAAE,MAAQ,KAAO,GAAK,EAAU,IAAgB,EAAM,CAAC,EAAG,MAAM,CAAC,EAAG,KAAK,EAAU,EAAI,CACrL,SAAS,QAAQ,GAAI,IAAK,CAAE,IAAI,EAAI,KAAK,EAAG,EAAE,MAAM,OAAO,KAAK,IAAI,IAAK,EAAE,MAAM,MAAM,EAAG,EAAG,EAAE,EAAG,MAAM,CAAC,EAAG,KAAK,CAAG,CACpH,SAAS,WAAW,IAAK,CAAE,OAAO,GAAG,EAAG,OAAO,IAAM,IAAI,EAAO,KAAK,GAAG,IAAK,IAAI,gBAAgB,KAAK,GAAG,CAAC,EAAG,OAAO,KAAK,GAAG,EAAK,CAGjI,IAAI,KAAO,KACX,SAAS,UAAW,CAAE,OAAO,MAAM,KAAO,UAAW,CAAE,QAAS,CAAE,OAAQ,kBAAmB,CAAE,CAAC,EAAE,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,KAAK,CAAG,CAAC,EAAE,KAAK,SAAU,EAAG,CAAE,YAAO,EAAU,CAAG,CAAC,EAAE,MAAM,UAAY,CAAE,OAAO,MAAQ,CAAE,MAAO,CAAC,CAAE,CAAG,CAAC,CAAG,CAE3O,IAAI,KAAO,KACX,SAAS,QAAS,CAAE,IAAI,GAAK,IAAM,GAAG,UAAU,SAAS,MAAM,GAAK,MAAM,EAAG,GAAI,GAAC,IAAM,CAAC,MAAc,KAAI,IAAM,CAAC,EAAG,KAAK,EAAE,QAAQ,SAAU,EAAG,CAAE,IAAI,EAAI,OAAO,CAAC,EAAO,IAAG,IAAI,EAAE,GAAG,EAAI,OAAO,CAAC,EAAG,CAAC,EACpM,GAAG,YAAY,OAAO,OAAO,CAAE,UAAW,SAAU,KAAM,OAAO,KAAK,GAAG,EAAG,IAAK,IAAK,KAAM,KAAK,MAAM,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,CAAC,CAAE,EAAG,SAAS,CAAC,EAAG,GAAG,EAAG,CACnK,SAAS,iBAAiB,UAAW,SAAU,EAAG,CAAE,KAAO,EAAE,OAAQ,aAAa,IAAI,EAAG,KAAO,WAAW,OAAQ,GAAG,EAAG,OAAS,OAAO,OAAO,SAAU,EAAG,CAAE,MAAO,CAAC,WAAW,CAAC,GAAK,SAAS,EAAE,MAAM,CAAC,CAAC,CAAG,CAAC,EAAO,KAAO,IAAI,UAAU,SAAS,MAAM,GAAG,aAAa,CAAG,CAAC,EAC9Q,SAAS,WAAW,EAAG,MAAO,CAC5B,EAAI,OAAO,GAAK,EAAE,EAAE,YAAY,EAAG,IAAI,EAAI,KAAM,GAAI,CAAE,EAAI,KAAK,OAAO,OAAS,CAAC,GAAG,SAAW,MAAM,CAAG,OAAS,EAAG,CAAE,CACtH,OAAI,GAAK,EAAE,IAAM,YAAoB,QAAa,QAAQ,KAAK,EAAU,KACrE,MAAM,KAAK,CAAC,EAAU,MAAW,SAAS,KAAK,CAAC,EAAU,SAAc,aAAa,KAAK,CAAC,EAAU,QAAgB,IAC3H,CACA,SAAS,OAAO,GAAI,CAAE,MAAO,CAAC,CAAC,OAAO,EAAE,CAAG,CAI3C,SAAS,UAAW,CAClB,GAAI,CAAC,KAAM,MAAO,CAAC,EACnB,IAAI,KAAO,KAAK,EAAE,IAAI,MAAM,EAAE,OAAO,OAAO,EAAE,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,CAAC,EAChF,OAAO,KAAK,MAAM,OAAO,SAAU,EAAG,CAAE,OAAO,WAAW,EAAE,aAAc,EAAE,UAAU,GAAK,KAAK,QAAQ,EAAE,GAAG,EAAI,CAAG,CAAC,EAAE,IAAI,SAAU,EAAG,CACtI,MAAO,CAAE,GAAI,KAAO,EAAE,IAAK,IAAK,KAAO,EAAE,IAAK,MAAO,EAAE,IAAK,KAAM,WAAW,EAAE,aAAc,EAAE,UAAU,EAAG,MAAO,EAAE,cAAe,OAAQ,EAAE,OAC5I,IAAK,aAAe,EAAE,OAAQ,WAAY,EAAE,WAAY,cAAe,EAAE,eAAiB,GAAI,MAAO,EAAE,YAAa,aAAc,EAAE,cAAgB,GACpJ,MAAO,OAAO,OAAO,CAAC,EAAG,EAAE,YAAc,CAAC,CAAC,EAAG,MAAO,EAAE,OAAS,EAAG,CACvE,CAAC,CACH,CACA,IAAI,QAAU,aACd,SAAS,QAAS,CAAE,GAAI,CAAE,IAAI,EAAI,KAAK,MAAM,aAAa,QAAQ,OAAO,GAAK,IAAI,EAAG,OAAO,MAAM,QAAQ,CAAC,EAAI,EAAI,CAAC,CAAG,OAAS,EAAG,CAAE,MAAO,CAAC,CAAG,CAAE,CAClJ,SAAS,QAAQ,EAAG,GAAI,CAAE,IAAI,EAAI,OAAO,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,IAAM,IAAM,CAAC,MAAQ,KAAK,MAAM,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,CAAG,CAAC,EAAI,CAAC,EAAO,KAAO,IAAO,EAAE,KAAK,CAAC,EAAG,GAAI,CAAE,aAAa,QAAQ,QAAS,KAAK,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,CAAG,OAAS,EAAG,CAAE,CAAE,CACzQ,SAAS,MAAO,CAAE,IAAI,EAAI,OAAO,EAAG,OAAO,KAAK,EAAE,OAAO,SAAS,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAI,CAAG,CAAC,CAAC,CAAG,CAC9H,SAAS,WAAW,EAAG,CAAE,OAAO,OAAO,GAAK,EAAE,EAAE,QAAQ,IAAI,IAAM,CAAG,CACrE,SAAS,SAAS,IAAK,CAAE,OAAO,MAAQ,KAAK,MAAM,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAK,CAAC,EAAE,CAAC,CAAG,CACtG,SAAS,OAAO,GAAI,CAClB,OAAK,MACE,KAAK,MAAM,OAAO,SAAU,EAAG,CACpC,GAAI,EAAE,aAAe,GAAG,WAAY,MAAO,GAC3C,IAAI,EAAI,EAAE,YAAc,CAAC,EACzB,OAAI,GAAG,MAAM,QAAgB,WAAW,EAAE,QAAS,GAAG,MAAM,OAAO,EAC5D,OAAO,KAAK,GAAG,KAAK,EAAE,MAAM,SAAU,EAAG,CAAE,OAAO,EAAE,OAAO,CAAC,IAAM,KAAO,OAAO,EAAE,CAAC,GAAK,EAAE,IAAM,OAAO,GAAG,MAAM,CAAC,GAAK,EAAE,CAAG,CAAC,CACrI,CAAC,EAAE,CAAC,GAAK,IACX,CAKA,IAAI,KAAO,CAAC,EAAG,MAAQ,CAAC,EACxB,SAAS,KAAK,QAAS,CACrB,OAAO,QAAQ,IAAI,QAAQ,OAAO,SAAU,EAAG,EAAG,CAAE,OAAO,GAAK,QAAQ,QAAQ,CAAC,IAAM,CAAG,CAAC,EAAE,IAAI,SAAU,EAAG,CAC5G,OAAK,MAAM,CAAC,IAAG,MAAM,CAAC,EAAI,MAAM,KAAO,YAAc,EAAI,KAAK,EAAE,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,EAAE,KAAK,EAAI,IAAM,CAAC,EAAE,KAAK,SAAU,GAAI,EACtI,IAAM,GAAG,UAAY,CAAC,GAAG,QAAQ,SAAU,EAAG,CAAE,KAAK,EAAE,EAAE,EAAI,CAAE,EAAG,EAAE,MAAO,EAAG,EAAE,kBAAoB,CAAE,CAAG,CAAC,CAC7G,CAAC,EAAE,MAAM,UAAY,CAAE,CAAC,GACjB,MAAM,CAAC,CAChB,CAAC,CAAC,CACJ,CACA,SAAS,OAAO,EAAG,CAAE,OAAO,EAAI,KAAK,OAAO,EAAE,iBAAmB,KAAK,IAAI,GAAI,EAAE,gBAAkB,IAAM,EAAE,2BAA6B,EAAE,GAAK,KAAK,IAAI,EAAG,EAAE,QAAQ,CAAC,EAAI,IAAM,CAC/K,SAAS,UAAW,CAClB,GAAI,CAAC,KAAM,OAAO,KAClB,IAAI,GAAK,KAAK,kCAAoC,CAAC,GAAG,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,OAAS,iBAAmB,EAAE,aAAe,YAAc,CAAC,EAAE,CAAC,EACpJ,OAAI,EAAU,CAAE,IAAK,KAAK,MAAM,CAAC,EAAE,KAAK,CAAE,GACrC,KAAK,gBAAkB,CAAC,GAAG,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,aAAe,IAAS,oBAAoB,KAAK,EAAE,IAAI,CAAG,CAAC,EAAU,CAAE,IAAK,EAAG,EACrI,IACT,CAGA,SAAS,QAAQ,EAAG,CAClB,IAAI,EAAI,KAAK,EAAE,UAAU,GAAK,CAAC,EAAG,IAAM,EAAE,GAAK,KAAO,EAAE,EAAI,EAAE,MAAO,IAAM,EAAE,EAAI,IAAM,EAAE,EAAI,EAC7F,MAAO,CAAE,IAAK,IAAK,IAAK,GAAI,CAC9B,CACA,SAAS,UAAU,EAAG,CAAE,IAAI,EAAI,QAAQ,CAAC,EAAG,OAAO,EAAE,IAAM,EAAE,IAAM,OAAS,MAAM,EAAE,GAAG,EAAI,WAAa,MAAM,EAAE,GAAG,EAAI,OAAS,MAAM,EAAE,GAAG,CAAG,CAE9I,SAAS,SAAS,GAAI,CACpB,IAAI,EAAI,KAAK,GAAG,UAAU,GAAK,CAAC,EAAG,GAAK,GAAG,GAAM,MAAQ,KAAK,MAAM,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAG,EAAI,CAAC,EAAE,CAAC,EAAM,GAAG,GAAK,OAAO,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAG,EAAI,CAAC,EAAE,CAAC,GAAK,CAAE,WAAY,GAAI,MAAO,CAAC,CAAE,CAAC,EAAI,KAC1O,OAAI,GAAG,IAAM,EAAE,GAAK,OAAM,GAAG,YAAc,EAAE,GAC7C,GAAG,WAAa,EAAE,GAAK,EAAG,GAAG,WAAa,OAAO,EAAE,EAAG,GAAG,OAAS,CAAC,CAAC,GAC7D,EACT,CACA,SAAS,UAAW,CAAE,MAAO,CAAE,KAAM,SAAS,EAAG,MAAO,KAAO,KAAK,YAAc,KAAM,MAAO,KAAO,KAAK,WAAa,IAAK,CAAG,CAIhI,IAAI,KAAO,CAAC,EACZ,SAAS,UAAU,GAAI,MAAO,IAAK,CACjC,IAAI,EAAI,QAAQ,GAAI,MAAO,GAAG,EAAE,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,IAAM,EAAE,MAAQ,EAAI,QAAQ,GAAI,MAAO,GAAG,CAAG,CAAC,EAAE,KAAK,SAAU,EAAG,CAC7H,GAAI,CAAC,EAAE,GAAI,MAAM,IAAI,MAAM,EAAE,KAAO,MAAM,EAC1C,OAAI,OAAO,QAAU,OAAO,OAAO,SAAS,OAAO,OAAO,QAAQ,EAAU,EAAM,CAAC,EACrF,KAAK,GAAG,GAAG,EAAI,EAAG,IAAI,MAAQ,UAAY,CAAM,KAAK,GAAG,GAAG,IAAM,GAAG,OAAO,KAAK,GAAG,GAAG,CAAG,EAAG,SAAE,KAAK,MAAO,KAAK,EACxG,CACT,CAEA,SAAS,QAAQ,GAAI,MAAO,IAAK,CAC/B,IAAI,IAAM,KAAM,QAAU,KAC1B,OAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,EAAG,GAAG,OAAS,MAAQ,OAAO,GAAG,GAAK,IAAI,EAAI,IAAI,CAAC,EAAE,KAAK,SAAU,GAAI,CACtG,IAAI,KAAO,GAAG,CAAC,EAAG,KAAO,GAAG,CAAC,EAAG,GAAK,IAAI,SAAY,GAAG,OAAO,KAAM,GAAG,UAAU,EAAG,GAAG,OAAO,WAAY,OAAO,KAAO,CAAC,CAAC,EAC3H,OAAO,KAAK,GAAG,KAAK,EAAE,QAAQ,SAAU,EAAG,CAAE,GAAG,OAAO,cAAgB,EAAI,IAAK,GAAG,MAAM,CAAC,CAAC,CAAG,CAAC,EAE/F,IAAI,GAAK,eAAe,KAAK,GAAG,MAAM,UAAY,GAAG,MAAM,SAAW,EAAE,EACpE,CAAC,IAAM,GAAG,MAAM,UAAW,GAAG,OAAO,uBAAwB,KAAO,MAAQ,KAAK,SAAS,mBAAmB,GAAG,MAAM,OAAO,CAAC,CAAC,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,CAAC,EAAG,GAAK,IACnM,KAAM,KAAO,KAAM,KAAO,MAC1B,MAAM,GAAG,OAAO,eAAiB,GAAG,OAAS,MAAQ,iBAAmB,WAAa,IAAK,IAAI,KAAK,CAAC,IAAI,EAAG,WAAa,KAAK,OAAS,aAAe,QAAU,QAAS,CAAE,KAAM,KAAK,MAAQ,WAAY,CAAC,CAAC,EAC3M,MAAM,GAAG,OAAO,4BAA6B,IAAI,KAAK,CAAC,IAAI,EAAG,gBAAkB,KAAK,OAAS,aAAe,QAAU,QAAS,CAAE,KAAM,KAAK,MAAQ,WAAY,CAAC,CAAC,EACvK,IAAI,GAAK,CAAE,OAAQ,kBAAmB,EAAG,OAAI,QAAO,GAAG,YAAY,EAAI,KAChE,MAAM,KAAO,cAAe,CAAE,OAAQ,OAAQ,KAAM,GAAI,QAAS,EAAG,CAAC,CAC9E,CAAC,EAAE,KAAK,SAAU,EAAG,CACnB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAY,CAAE,MAAO,CAAC,CAAG,CAAC,EAAE,KAAK,SAAU,EAAG,CAAM,EAAE,GAAI,IAAM,IAAM,EAAE,KAAQ,EAAE,OAAS,EAAE,MAAM,CAAC,GAAK,EAAE,MAAM,CAAC,EAAE,MAAS,KAAe,EAAE,QAAU,KAAO,EAAE,OAAS,MAAK,QAAU,IAAM,EAAE,aAAe,EAAE,UAAY,OAAQ,CAAC,CAC/P,EAAG,UAAY,CAAiE,CAAC,EAC9E,KAAK,QAAQ,EAAE,KAAK,UAAY,CAC/B,IAAI,IAAO,KAAO,MAAQ,KAAK,MAAM,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAK,CAAC,GAAM,CAAC,CAAC,OAAO,EAAE,EACjG,OAAO,SAAW,CAAC,IAAM,CAAE,GAAI,GAAO,IAAK,QAAS,MAAO,EAAK,EAAI,CAAE,GAAI,GAAI,CAChF,CAAC,CACL,CACA,SAAS,MAAM,EAAG,CAAE,OAAI,GAAK,KAAa,IAAY,EAAI,KAAK,QAAQ,CAAC,EAAE,QAAQ,IAAK,GAAG,EAAI,YAAW,CAGzG,IAAI,IAAM,SAAS,cAAc,OAAO,EACxC,IAAI,YAAc,CAChB,sQACA,kUACA,iNAEA,6aACA,sFACA,uGACA,+NACA,+EACA,0KACA,kQACA,sFACA,qMACA,qMACA,mIACA,qJACA,gTACA,8BACA,kIACA,kJACA,6IACA,gOACA,0FACA,4DACA,iFACA,yQACA,yIACA,yKACA,wMACA,sQACA,6IACA,uMACA,mFACA,2XACA,6YACA,uJACA,4VACA,sOACA,sKACA,wTACA,6PACA,oNAEA,0FACA,kPACA,mLACI,wXACJ,8FACA,6OACA,wBAEA,qCACA,wVACA,qEACA,oKACA,uOACA,0QACA,8JACA,0IACA,qTACA,8LAEA,8KACA,qXACA,+JACA,oNACA,kMACA,oUACA,yXACA,wLACA,iOACA,wMACA,iOACA,2HACA,oRACA,wPACA,4HAEA,8UACA,uRACA,grBAEA,wZACA,0ZACA,iCAEA,8LACA,gTACA,sSACA,6DACA,uCACA,sQACA,+FAEA,2HACA,wTACA,sQACA,8VACA,uHACA,2QAEA,8IACA,wWACA,6FACA,mLACA,+IACA,qUACA,wLACA,qWACA,6HACA,gLACA,4OACA,mTACA,uZACA,+LACA,6QACA,qIACA,gLACA,0KACA,wIACA,6OACA,kJACA,4MACA,oLACA,6HACA,yHACA,yJACA,gJACA,uLACA,wJACA,qUACA,oLACA,yHACA,oMACA,4HACA,smBAIA,wDAEA,2JACA,wQACA,uOACA,iUACA,uJAEA,wfACF,EAAE,KAAK,IAAI,EACX,SAAS,KAAK,YAAY,GAAG,EAG7B,IAAI,aAAe,GACnB,SAAS,WAAY,CACnB,IAAI,EAAI,KAAK,EAAE,OACX,SAAW,SAAS,iBAAiB,2EAA2E,EACpH,CAAC,EAAE,QAAQ,KAAK,SAAU,SAAU,EAAG,CACrC,IAAI,EAAI,EAAE,wBACN,CAAC,GAAK,CAAC,EAAE,UAAU,SAAS,WAAW,KACzC,EAAI,SAAS,cAAc,QAAQ,EAAG,EAAE,KAAO,SAC/C,EAAE,UAAY,EAAE,UAAU,QAAQ,eAAgB,EAAE,EAAI,aACxD,EAAE,aAAa,aAAc,EAAE,MAAM,EACrC,EAAE,UAAY,GAAG,KAAO,gCACxB,EAAE,WAAW,aAAa,EAAG,CAAC,GAG3B,EAAE,MAAO,EAAE,IAAM,EAAG,EAAE,iBAAiB,QAAS,SAAU,EAAG,CAAE,EAAE,eAAe,EAAG,WAAW,CAAG,CAAC,GAEvG,EAAE,OAAS,GAAO,IAAI,GAAK,EAAE,cAAc,UAAU,EAAG,GAAG,YAAc,EAAG,GAAG,OAAS,CAAC,CAC3F,CAAC,EACG,cAAgB,GAAG,SAAS,CAClC,CACA,SAAS,OAAQ,CAAE,aAAe,GAAO,CAAC,EAAE,QAAQ,KAAK,SAAS,iBAAiB,YAAY,EAAG,SAAU,EAAG,CAAE,EAAE,UAAU,OAAO,OAAO,EAAQ,EAAE,YAAa,EAAE,UAAU,IAAI,OAAO,CAAG,CAAC,CAAG,CAEhM,SAAS,KAAK,EAAG,CACf,GAAI,SAAS,gBAAgB,UAAU,SAAS,YAAY,GAAK,SAAS,OAAQ,MAAO,GACzF,IAAI,EAAI,EAAE,sBAAsB,EAAG,GAAI,CAAC,EAAE,OAAS,EAAE,OAAS,GAAK,EAAE,IAAM,YAAa,MAAO,GAC/F,IAAI,EAAI,SAAS,iBAAiB,EAAE,KAAO,EAAE,MAAQ,EAAG,EAAE,IAAM,EAAE,OAAS,CAAC,EAAG,MAAO,CAAC,CAAC,IAAM,IAAM,GAAK,EAAE,SAAS,CAAC,EACvH,CACA,SAAS,UAAW,CACQ,GAA1B,aAAa,SAAS,CAAC,EAAO,EAAC,aAC/B,KAAI,EAAI,CAAC,EAAE,OAAO,KAAK,SAAS,iBAAiB,YAAY,EAAG,SAAU,EAAG,CAAE,MAAO,CAAC,EAAE,MAAQ,CAAC,EAAE,CAAC,EACrG,GAAI,GAAK,KAAK,CAAC,EAAG,CAAE,WAAW,MAAO,GAAG,EAAG,MAAQ,CACpD,SAAS,EAAI,WAAW,SAAU,GAAG,EACvC,CAGA,IAAI,IAAM,KAAM,IAAM,KAAM,OAAS,CAAC,EAAG,KAAO,GAAO,KAAO,KAAM,MAAQ,EAAG,MAAQ,KAAM,KAAO,GAAO,KAAO,CAAC,EAAG,GAAK,KAC3H,SAAS,GAAG,EAAG,CAAE,IAAI,EAAI,SAAS,cAAc,KAAK,EAAG,SAAE,UAAY,EAAU,EAAE,iBAAmB,CACrG,IAAI,QAAU,KACd,SAAS,YAAa,CACpB,GADsB,QAAU,GAC5B,QAAS,CAAE,IAAI,GAAK,QAAyB,GAAhB,QAAU,KAAU,IAAI,EAAE,EAAG,CAAE,GAAI,CAAE,eAAe,WAAW,YAAY,CAAG,OAAS,EAAG,CAAE,CAAE,SAAS,EAAE,KAAK,UAAY,CAAE,UAAU,EAAE,CAAG,CAAC,EAAG,MAAQ,CAAE,CACrL,MACH,IAAM,GAAG,wCAAwC,EAAG,SAAS,KAAK,YAAY,GAAG,EAAG,IAAI,iBAAiB,QAAS,UAAY,CAAE,YAAY,CAAG,CAAC,EAChJ,IAAM,GAAG,oEAAsE,EAAE,MAAQ,YAAY,EAAG,SAAS,KAAK,YAAY,GAAG,EACrI,IAAI,iBAAiB,QAAS,OAAO,EAAG,IAAI,iBAAiB,cAAe,SAAU,EAAG,CAAE,EAAE,eAAe,CAAG,CAAC,EAChH,IAAI,iBAAiB,cAAe,MAAM,EAAG,IAAI,iBAAiB,cAAe,MAAM,EAAG,CAAC,YAAa,gBAAiB,cAAc,EAAE,QAAQ,SAAU,EAAG,CAAE,IAAI,iBAAiB,EAAG,KAAK,CAAG,CAAC,EACjM,WAAW,GAAG,GAEhB,KAAO,GAAO,KAAO,CAAC,EAAG,OAAS,CAAC,EAAG,GAAK,KAAM,KAAO,CAAC,EAAG,MAAQ,CAAC,EAAG,MAAQ,CAAC,EAAG,KAAO,CAAC,EAAG,aAAa,EAAE,EAAG,OAAS,OAAO,OAAO,SAAU,EAAG,CAAE,OAAO,IAAI,CAAC,GAAK,WAAW,CAAC,CAAG,CAAC,EAAQ,IAAI,UAAU,SAAS,MAAM,IAAG,IAAI,UAAY,IAChP,IAAI,OAAS,GAAO,OAAS,GAAM,SAAS,gBAAgB,UAAU,IAAI,YAAY,EACtF,KAAO,GAAO,OAAS,GAAO,aAAa,EAAG,SAAS,EAAE,KAAK,YAAY,EAAG,QAAQ,IAAI,CAAC,SAAS,EAAG,KAAK,KAAK,EAAE,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,EAC7K,sBAAsB,UAAY,CAAE,IAAI,UAAU,IAAI,MAAM,EAAG,IAAI,UAAU,IAAI,MAAM,CAAG,CAAC,EAAG,QAAQ,IAAI,CAC5G,CAKA,IAAI,MAAQ,GAAI,MAAQ,GAAO,OAAS,GAAO,GAAK,KACpD,SAAS,QAAQ,EAAG,CAClB,GAAI,CACE,EACE,OAAQ,QAAQ,aAAa,CAAE,IAAK,CAAE,EAAG,EAAE,EACrC,KAAI,GAAK,WAAW,UAAY,CAAE,GAAK,KAAU,OAAS,CAAC,SAAU,QAAQ,UAAU,CAAE,IAAK,KAAM,EAAG,EAAE,EAAG,OAAS,GAAQ,EAAG,GAAG,IAE7I,aAAa,EAAE,EAAG,GAAK,KACnB,QAAU,QAAQ,OAAS,QAAQ,MAAM,MAAO,MAAQ,GAAM,QAAQ,KAAK,GAC/E,OAAS,GAEb,OAAS,EAAG,CAAE,CACd,MAAQ,CACV,CACA,OAAO,iBAAiB,WAAY,UAAY,CAC9C,GAAI,MAAO,CAAE,MAAQ,GAAO,MAAQ,CACpC,GAAI,GAAC,OAAS,CAAC,SACX,UAAQ,OAAS,QAAQ,MAAM,MAAQ,OAAe,KAAI,EAAI,MAAO,MAAQ,GAAI,OAAS,GAC1F,IAAM,KAAY,SAAW,QAAU,CAAC,OAAQ,MAAM,GAAU,aAAa,EAAI,EAAG,SAAS,GAAgB,IAAM,MAAM,YAAY,EAAI,EAC/I,CAAC,EAED,SAAS,WAAW,EAAG,CACrB,IAAI,GAAK,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,KAAM,GAAK,EAC5C,EAAE,iBAAiB,aAAc,SAAU,EAAG,CACzB,GAAnB,GAAK,KAAM,GAAK,EAAO,MAAQ,EAAE,QAAQ,OAAS,EAAG,CAAE,GAAK,GAAO,MAAQ,CAC3E,GAAI,EAAE,OAAO,SAAW,EAAE,OAAO,QAAQ,cAAc,EAAG,CAAE,GAAK,GAAO,MAAQ,CAChF,GAAK,EAAE,QAAQ,CAAC,EAAE,QAAS,GAAK,EAAE,QAAQ,CAAC,EAAE,QAAS,GAAK,KAAK,IAAI,CACtE,EAAG,CAAE,QAAS,EAAK,CAAC,EAEpB,EAAE,iBAAiB,YAAa,SAAU,EAAG,CAAM,OAAS,MAAM,IAAM,EAAE,YAAY,EAAE,eAAe,CAAG,EAAG,CAAE,QAAS,EAAM,CAAC,EAC/H,EAAE,iBAAiB,YAAa,SAAU,EAAG,CAC3C,GAAI,OAAS,MAAM,GAAI,CAAM,IAAM,GAAK,GAAO,GAAK,EAAG,EAAE,MAAM,WAAa,GAAI,EAAE,MAAM,UAAY,GAAQ,MAAK,IAAI,MAAM,QAAU,KAAW,GAAK,GAAO,MAAQ,CACpK,GAAI,KAAO,GAAe,KAAI,GAAK,EAAE,QAAQ,CAAC,EAAE,QAAU,GAAI,GAAK,EAAE,QAAQ,CAAC,EAAE,QAAU,GAC1F,GAAI,KAAO,KAAM,CAAwG,GAAlG,KAAK,IAAI,EAAE,EAAI,IAAM,KAAK,IAAI,EAAE,EAAI,KAAY,GAAK,GAAK,GAAK,KAAK,IAAI,EAAE,EAAI,KAAK,IAAI,EAAE,EAAI,IAAS,CAAC,IAAI,OAAQ,EAAE,MAAM,WAAa,MAAQ,CACvK,GAAK,KAAK,IAAI,EAAG,EAAE,EAAG,EAAE,MAAM,UAAY,cAAgB,GAAK,MAAW,MAAK,IAAI,MAAM,QAAU,OAAO,KAAK,IAAI,EAAG,EAAI,GAAK,EAAE,WAAW,CAAC,GAC/I,EAAG,CAAE,QAAS,EAAK,CAAC,EACpB,IAAI,IAAM,UAAY,CACpB,GAAK,GAAY,IAAK,KAAM,EAAE,MAAM,WAAa,GAAQ,MAAK,IAAI,MAAM,QAAU,IAClF,IAAI,KAAO,GAAK,IAAM,GAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAE,EAAI,GAC1D,EAAE,MAAM,UAAY,IAAQ,GAAK,EAAE,YAAc,IAAM,OAAM,YAAY,EAC3E,EACA,EAAE,iBAAiB,WAAY,GAAG,EAAG,EAAE,iBAAiB,cAAe,GAAG,CAC5E,CAKA,IAAI,GAAK,KACT,SAAS,SAAS,IAAK,CACrB,IAAI,EAAI,GAAI,GAAK,EACjB,IAD4B,GAAK,KAAM,cAAc,EAAE,EAAE,EACrD,IAAK,CAAE,EAAE,OAAO,EAAG,MAAQ,CAC/B,EAAE,UAAU,IAAI,KAAK,EAAG,WAAW,UAAY,CAAE,EAAE,OAAO,CAAG,EAAG,GAAG,EACrE,CACA,SAAS,UAAU,EAAG,CACpB,EAAI,GAAK,CAAC,EAAG,IAAI,EAAI,EAAE,OAAQ,GAAI,GAAC,GAAK,CAAC,EAAE,uBAC5C,UAAS,EAAI,EACb,IAAI,EAAI,EAAE,sBAAsB,EAAG,EAAI,OAAO,WAAY,EAAI,OAAO,YAAa,IAAM,KAAK,EAAG,IAAM,IAAI,MAAM,EAAG,CAAC,EAChH,EAAI,GAAG,8RAE+C,EAAE,MAAQ,wHAAwH,EAExL,GAAK,iBAAiB,CAAC,EAAG,GAAK,WAAW,GAAG,WAAW,GAAK,EAAG,GAAK,WAAW,GAAG,YAAY,GAAK,EACpG,KAAO,KAAK,IAAI,EAAG,EAAE,KAAO,EAAE,EAAG,MAAQ,KAAK,IAAI,EAAE,MAAQ,GAAK,GAAI,EAAI,KAAO,CAAC,EACrF,EAAE,MAAM,KAAO,KAAO,KAAM,EAAE,MAAM,MAAQ,MAAQ,KAAM,EAAE,MAAM,OAAS,KAAK,IAAI,EAAG,EAAI,EAAE,IAAM,EAAE,EAAI,KACzG,IAAI,SAAW,GAAO,GAAI,CAAE,SAAW,KAAK,IAAI,GAAK,CAAC,eAAe,QAAQ,YAAY,GAAK,GAAK,IAAM,OAAS,EAAG,CAAE,CACvH,IAAI,EAAI,EAAE,cAAc,WAAW,EAAG,EAAE,YAAc,EAAE,MAAO,IAAI,GAAK,SAAS,cAAc,OAAO,EAAG,GAAG,YAAc,SAAW,EAAE,MAAQ,EAAE,OAAO,IAAI,MAAM,EAAG,EAAE,YAAY,EAAE,EACrL,IAAI,GAAK,EAAE,cAAc,YAAY,EAAG,GAAG,MAAM,MAAS,GAAK,GAAK,KAAK,IAAI,EAAG,IAAI,OAAS,CAAC,EAAK,KACnG,IAAI,QAAQ,SAAU,GAAI,EAAG,CAC3B,IAAI,EAAI,SAAS,cAAc,MAAM,EAAG,EAAE,UAAY,WAAY,EAAE,MAAM,KAAQ,GAAK,EAAK,KAAM,EAAE,MAAM,OAAS,OAAO,EAAI,CAAC,EAC3H,IAAG,EAAE,MAAM,QAAU,IAAM,EAAI,KAAO,OAC1C,GAAG,YAAY,CAAC,EAChB,OAAO,GAAG,EAAE,EAAE,KAAK,SAAU,EAAG,CAAE,GAAK,EAAW,KAAI,GAAK,IAAI,MAAS,GAAG,IAAM,GAAI,GAAG,SAAW,QAAS,GAAG,IAAM,EAAG,EAAE,YAAY,EAAE,EAAG,CAAC,CAC9I,CAAC,EACD,IAAI,IAAM,EAAE,cAAc,cAAc,EAAG,KAAO,SAAU,GAAI,CAAE,IAAI,MAAM,mBAAqB,GAAK,SAAW,SAAW,EAC5H,EAAE,iBAAiB,cAAe,UAAY,CAAE,KAAK,EAAI,CAAG,CAAC,EAAG,EAAE,iBAAiB,YAAa,UAAY,CAAE,KAAK,EAAK,CAAG,CAAC,EAC5H,EAAE,iBAAiB,eAAgB,UAAY,CAAE,KAAK,EAAK,CAAG,CAAC,EAAG,EAAE,iBAAiB,aAAc,UAAY,CAAE,KAAK,EAAI,CAAG,CAAC,EAC9H,IAAI,iBAAiB,eAAgB,UAAY,CAAM,KAAO,GAAG,SAAS,CAAG,CAAC,EAC9E,EAAE,cAAc,WAAW,EAAE,iBAAiB,QAAS,SAAU,EAAG,CAAE,EAAE,gBAAgB,EAAG,SAAS,CAAG,CAAC,EACxG,EAAE,iBAAiB,QAAS,UAAY,CAAE,SAAS,EAAI,EAAO,UAAY,IAAI,CAAC,IAAG,QAAU,IAAI,CAAC,EAAE,KAAS,OAAO,EAAE,QAAW,WAAY,EAAE,OAAO,EAAQ,WAAW,CAAG,CAAC,EAC5K,EAAE,GAAK,YAAY,UAAY,CAAO,EAAE,aAAa,SAAS,CAAG,EAAG,GAAG,EACvE,SAAS,KAAK,YAAY,CAAC,EAAG,GAAK,EACrC,CACA,SAAS,YAAY,OAAQ,CACtB,MAAa,OAAS,GAAO,KAAO,CAAC,EAAQ,QAAQ,QAAQ,EAAE,EAAG,IAAI,UAAU,OAAO,MAAM,EAAG,IAAI,UAAU,OAAO,MAAM,EAAG,SAAS,gBAAgB,UAAU,OAAO,YAAY,EACzL,WAAW,UAAY,CAAO,IAAI,UAAU,SAAS,MAAM,IAAG,IAAI,OAAS,GAAM,EAAG,GAAG,EACzF,CACA,IAAI,MAAQ,CAAC,CAAC,SAAU,SAAS,EAAG,CAAC,MAAO,MAAM,EAAG,CAAC,QAAS,SAAS,CAAC,EACrE,KAAO,CAAC,EACZ,SAAS,cAAe,CACtB,GAAK,IAGL,CAAI,MAAM,OAAO,KAAK,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAO,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAG,CAAC,EAAG,OAAO,EAC3F,IAAI,GAAK,KAAM,IAAM,KAAK,IAAI,EAAG,GAAK,KAAO,SAAW,QAAQ,IAAM,IAAM,QAAQ,KAAO,MAAO,GAAK,GAAK,UAAU,EAAI,KAAM,GAAK,GAAK,OAAO,EAAE,EAAI,KAAM,KAAO,KAGpK,IAAI,MAAQ,KAAK,EAAG,EAAI,MAAM,OAC9B,KAAO,KAAK,OAAO,SAAU,GAAI,CAAE,OAAO,MAAM,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAI,CAAC,CAAG,CAAC,EAC9F,OAAO,KAAK,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAO,MAAM,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAG,CAAC,GAAK,EAAE,OAAS,CAAG,CAAC,GAAG,OAAO,GAAG,CAAC,CAAG,CAAC,EACjI,IAAI,GAAK,OAAO,KAAK,EAAE,EAAE,OAAQ,GAAK,MAAQ,KAAK,MAAQ,CAAC,EAAG,GAAK,GAAG,OACvE,OAAS,OAAO,OAAO,SAAU,GAAI,CAAE,OAAO,GAAG,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,KAAO,EAAI,CAAC,CAAG,CAAC,EAC9F,IAAI,EAAI,6BAA+B,EAAE,MAAQ,QAC9C,GAAK,GAAK,4CAA8C,KAAO,EAAE,KAAO,EAAE,MAAQ,YAAc,KAChG,KAAO,GAAK,uDAAyD,EAAE,MAAQ,KAAO,GAAG,EAAI,aAAe,kCAE3G,MAAQ,KAAI,GAAK,qCAAuC,EAAE,IAAM,kCAAoC,GAAG,IAAI,SAAU,EAAG,EAAG,CAAE,IAAI,GAAK,OAAO,QAAQ,EAAE,EAAE,EAAI,GAAI,MAAO,8EAAgF,IAAI,EAAE,EAAE,EAAI,mBAAqB,GAAK,iBAAmB,IAAI,EAAE,IAAM,EAAE,KAAK,EAAI,CAAC,CAAC,EAAI,MAAQ,EAAE,GAAK,oBAAsB,EAAE,GAAK,KAAO,MAAQ,2BAA6B,GAAK,MAAQ,IAAM,sBAAwB,EAAE,GAAK,2BAA6B,IAAI,EAAE,EAAE,EAAI,UAAY,IAAM,SAAW,CAAC,EAAE,KAAK,EAAE,EAAI,UAC3iB,GAIE,OAAQ,GAAK,gCAAkC,GAAK,kCAAoC,IAAM,IAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EAAI,gBAAkB,GAAK,GAAK,mCAAqC,IAAM,EAAE,MAAQ,cAAe,GAAK,WAAW,GAC7O,MAAM,QAAQ,SAAU,EAAG,CACzB,IAAI,IAAM,MAAM,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,OAAS,EAAE,CAAC,CAAG,CAAC,EAAG,GAAK,IAAI,OAC3E,KAAI,GAAK,CAAC,MAAQ,GAAG,EAAE,CAAC,CAAC,EAAG,GAAK,IAAM,IAAI,KAAK,EAAE,IAAM,OAAY,IAAI,EAAE,CAAC,CAAC,EAAI,EAAE,EAClF,GAAK,kCAAoC,EAAE,CAAC,EAAI,KAAO,EAAE,EAAE,CAAC,CAAC,EAAI,UAAY,IAAI,OAAS,WACvF,GAAK,mEAAqE,EAAE,CAAC,EAAI,iBAAmB,IAAI,EAAE,OAAS,KAAO,OAAO,GAAG,KAAK,CAAC,EAAI,SAAW,IAAI,OAAO,GAAG,KAAK,CAAC,EAAI,WAAa,GAAG,EAAI,gBAAkB,IAAM,kCAGhO,IAAI,IAAM,SAAU,EAAG,CAAE,OAAQ,OAAO,CAAC,GAAK,WAAW,EAAE,GAAG,IAAM,CAAC,KAAK,EAAE,GAAG,CAAG,EAAG,GAAK,MAAM,EAAE,CAAC,CAAC,GAAK,CAAC,EAAG,GAAK,SAAU,EAAG,CAAE,IAAI,EAAI,GAAG,QAAQ,EAAE,GAAG,EAAG,OAAO,EAAI,EAAI,IAAM,CAAG,EAAG,GAAK,IAAI,OAAO,GAAG,EAAE,KAAK,SAAU,EAAG,EAAG,CAAE,OAAO,GAAG,CAAC,EAAI,GAAG,CAAC,CAAG,CAAC,EAAG,GAAK,GAC9P,KAAO,CAAC,MAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAK,GAAG,OAAS,EAAG,MAAQ,IAAI,OAAO,SAAU,EAAG,CAAE,MAAO,CAAC,IAAI,CAAC,CAAG,CAAC,EAAE,OAAO,KAAO,CAAC,EAAI,EAAE,EACzH,GAAK,GAYT,GAXA,MAAM,QAAQ,SAAU,EAAG,CACzB,IAAI,GAAK,OAAO,CAAC,GAAK,WAAW,EAAE,GAAG,EAAG,GAAK,CAAC,MAAQ,KAAK,EAAE,GAAG,IAAM,OAAW,GAAK,KAAO,KAAK,QAAQ,EAAE,GAAG,EAAI,GAAK,KAAO,EAAE,KAAO,CAAC,GAAI,IAAM,CAAC,MAAQ,IAAM,KAAO,EAAE,KAAO,CAAC,GAAI,IAAM,CAAC,MAAQ,MAAM,EAAE,CAAC,CAAC,GAAK,IAAI,CAAC,EAEvN,KAAO,CAAC,IAAM,CAAC,MAAQ,GAAG,OAAS,IAAK,GAAK,GAAM,GAAK,2CAA6C,OAAS,EAAE,CAAC,EAAI,QAAU,IAAM,2BAA6B,EAAE,CAAC,EAAI,iBAAmB,IAAI,EAAE,IAAI,EAAI,KAAO,GAAG,KAAO,aAC/N,IAAI,GAAK,CAAC,OAAS,KAAK,EAAE,GAAG,GAAK,KAAK,EAAE,GAAG,GAC5C,GAAK,yBAA2B,GAAK,MAAQ,KAAO,IAAM,OAAS,KAAO,IAAM,eAAiB,KAAO,GAAK,eAAiB,IAAM,KAAO,GAAK,4BAA8B,KAAK,IAAI,IAAK,KAAK,IAAI,GAAK,MAAM,EAAE,GAAG,GAAK,KAAK,IAAI,EAAE,EAAI,MAAQ,IAAM,YAAc,EAAE,IAAM,8CAAgD,GAAK,MAC/T,KAAO,2BAA6B,GAAK,MAAQ,IAAM,aAAe,GAAK,oBAAsB,GAAG,KAAO,UAAY,IACpH,0CAA4C,GAAK,MAAQ,KAAO,KAAK,EAAE,GAAG,GAAK,KAAK,EAAE,GAAG,EAAI,QAAU,MAAM,EAAE,GAAG,EAAI,QAAU,IAAM,gBAAkB,EAAE,IAAM,kBAAoB,GAAK,EAAE,OAAS,EAAE,SAAW,KAAO,GAAG,KAAO,OAAS,GAAK,GAAG,GAAK,GAAG,MAAQ,iBACvQ,oBAAsB,GAAK,eAAiB,KAAK,EAAE,GAAG,EAAI,SAAW,KAAK,EAAE,GAAG,EAAI,IAAM,sBAAwB,IAAM,yBAA2B,EAAE,IAAM,KAAO,KAAK,EAAE,GAAG,EAAI,SAAW,KAAK,EAAE,GAAG,EAAI,IAAO,EAAE,MAAQ,SAAW,IAAI,EAAE,KAAK,EAAI,IAAM,IAAO,KAAO,YAAc,IAAI,OAAO,EAAE,KAAK,CAAC,EAAI,wBAA0B,UAAU,CAAC,EAAI,eACzV,CAAC,EAEG,KAAM,CAAE,IAAI,GAAK,GAAG,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAI,CAAC,EAAE,CAAC,GAAK,GAAG,CAAC,EAC1E,IAAM,GAAG,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAI,CAAC,EACvD,GAAK,qCAAuC,IAAM,MAAQ,GAAK,OAAS,IAAM,2BAA6B,EAAE,CAAC,EAAI,eAAiB,GAAG,IAAM,4CAA8C,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,EAAI,gCAAkC,GAAG,KAAO,MAAQ,GAAG,GAAK,oDACnO,GAAG,IAAM,KAAO,KAAK,GAAG,GAAG,EAAI,SAAW,KAAK,GAAG,GAAG,EAAI,IAAO,GAAG,MAAQ,SAAW,IAAI,GAAG,KAAK,EAAI,IAAM,IAAO,aAAe,IAAI,OAAO,GAAG,KAAK,CAAC,EAAI,iCAAmC,EAAE,KAAK,GAAG,OAAS,CAAC,EAAI,eAAiB,CACrR,GAAK,SACP,CAAC,GA/BY,OAAM,GAAK,UAAU,GAiCpC,GAAK,SACL,IAAI,KAAO,KAAK,OAAS,OAAO,QAC5B,KAAO,GAAK,GAAK,KAAG,GAAK,KAAO,+EAAiF,EAAE,OAAS,sDAAwD,KAAO,GAAK,aAAe,IAAM,GAAG,MAAQ,EAAE,KAAK,IAAI,EAAI,kBAC/O,2BAA6B,GAAK,2DAA6D,EAAE,MAAQ,YAAc,IAAM,yCAA2C,OAAO,EAAI,mBACnL,GAAI,GAAK,4BAA8B,GAAG,KAAO,GAAK,UAAY,GAAG,KAAO,QAAU,IAAM,KAAO,EAAI,GAAK,wBAA0B,UAAY,GAAG,IAAM,WAAa,GAAG,KAAO,4BAA8B,GAAG,KAAO,EAAE,MAAQ,YAAc,IAAM,SACvP,GAAK,4BAA8B,KAAO,GAAK,QAAU,KAAO,EAAI,GAAK,wBAA0B,WAAa,KAAO,OAAO,KAAK,GAAG,EAAI,EAAE,SAAW,gCAAkC,EAAE,KAAO,kBACnM,SAAQ,GAAK,WAAW,GAC5B,IAAI,KAAO,CAAC,EAAG,IAAM,IAAI,cAAc,cAAc,EAAG,KAAO,IAAM,IAAI,UAAY,EACrF,CAAC,EAAE,QAAQ,KAAK,IAAI,iBAAiB,cAAc,EAAG,SAAU,EAAG,EAAG,CAAE,IAAI,GAAK,EAAE,uBAAwB,MAAM,GAAK,GAAG,aAAa,QAAQ,EAAI,IAAM,IAAM,CAAC,EAAI,EAAE,UAAY,CAAC,EAClL,IAAI,UAAY,EAEhB,IAAI,IAAM,IAAI,cAAc,YAAY,EAAO,KAAK,IAAI,MAAM,YAAY,OAAQ,IAAI,aAAe,IAAI,EACzG,IAAI,UAAU,OAAO,UAAW,IAAI,EAAG,IAAI,UAAU,OAAO,OAAQ,EAAK,EACzE,IAAI,IAAM,IAAI,cAAc,cAAc,EAAO,KAAO,OAAM,IAAI,UAAY,MAC9E,CAAC,EAAE,QAAQ,KAAK,IAAI,iBAAiB,cAAc,EAAG,SAAU,EAAG,EAAG,CAAE,IAAI,GAAK,EAAE,uBAAwB,EAAI,MAAM,GAAK,GAAG,aAAa,QAAQ,EAAI,IAAM,IAAM,CAAC,EAAO,IAAG,EAAE,WAAa,EAAG,CAAC,EAChM,CAAC,EAAE,QAAQ,KAAK,IAAI,iBAAiB,eAAe,EAAG,SAAU,GAAI,CAAE,IAAI,GAAK,GAAG,QAAQ,IAA6F,OAAO,EAAE,EAAE,KAAK,SAAU,EAAG,CAAM,IAAK,KAAK,EAAE,EAAI,EAAO,GAAG,aAAa,KAAK,IAAM,IAAG,GAAG,IAAM,GAAK,CAAC,CAAG,CAAC,EAC/R,CAAC,GAAK,CAAC,MAAM,UAAU,EACvB,KAAU,KAAM,SAAS,GAAI,EAAE,EAAG,QAAU,CAAE,KAAM,GAAI,IAAK,IAAM,GAAI,GAAS,IAAI,KAAK,EAAE,EAAG,SAAS,GAAI,GAAI,QAAQ,IAAM,IAAK,CAAC,EAAE,GAC3I,CAMA,IAAI,KAAO,CAAC,EAAG,MAAQ,CAAC,EAAG,KAAO,KAAM,MAAQ,CAAC,EAAG,KAAO,KAAM,QAAU,KAAM,KAAO,CAAC,EAAG,GAAK,KAG7F,IAAM,CAAC,EAAG,IAAM,CAAC,EAAG,KAAO,CAAC,EAAG,IAAM,EAAG,KAAO,CAAC,EAAG,MAAQ,CAAC,EAAG,IAAM,CAAC,EAAG,IAAM,KAAM,IAAM,KAAM,KAAO,GAE5G,SAAS,MAAO,CAAE,GAAI,CAAE,OAAO,OAAO,WAAW,kCAAkC,EAAE,OAAS,OAAS,EAAG,CAAE,MAAO,EAAO,CAAE,CAE5H,SAAS,QAAS,CAAE,GAAI,CAAE,IAAI,EAAI,KAAK,MAAM,eAAe,QAAQ,UAAU,GAAK,IAAI,EAAG,OAAO,GAAK,OAAO,GAAM,UAAY,CAAC,MAAM,QAAQ,CAAC,EAAI,EAAI,CAAC,CAAG,OAAS,EAAG,CAAE,MAAO,CAAC,CAAG,CAAE,CACtL,SAAS,QAAS,CAAE,GAAI,CAAE,eAAe,QAAQ,WAAY,KAAK,UAAU,EAAE,CAAC,CAAG,OAAS,EAAG,CAAE,CAAE,CAClG,IAAI,GAAK,OAAO,EAAG,GAAK,KAAM,IAAM,EAAG,MAAQ,CAAC,EAAG,OAAS,GAAO,KAAO,KAAM,OAAS,KAAM,GAAK,KAAM,GAAK,KAAM,OAAS,CAAC,EAAG,MAAQ,CAAC,EAEvI,KAAO,0wHAEX,SAAS,OAAO,EAAG,CAAE,IAAI,EAAI,EAAE,OAAS,CAAC,EAAG,OAAI,EAAE,OAAS,MAAc,CAAC,WAAW,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,gBAAgB,GAAK,EAAE,UAAY,EAAE,SAAiB,CAAC,CAAC,EAAE,OAAS,CACvK,SAAS,QAAS,CAAE,IAAI,EAAI,MAAQ,KAAK,MAAQ,CAAC,EAAG,GAAI,CAAC,EAAE,OAAQ,OAAO,KAAM,IAAI,GAAK,SAAU,GAAI,CAAE,OAAO,IAAM,EAAE,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,KAAO,EAAI,CAAC,CAAG,EAAG,OAAO,GAAG,MAAM,EAAI,OAAS,GAAG,KAAK,GAAG,EAAI,KAAK,IAAM,EAAE,CAAC,EAAE,EAAI,CACxO,SAAS,YAAa,CACpB,IAAI,EAAI,MAAQ,KAAK,MAAQ,CAAC,EAAG,EAAI,qCAAuC,EAAE,IAAM,kCACpF,GAAI,EAAE,OAAQ,CACZ,IAAI,IAAM,OAAO,EAEjB,EAAE,QAAQ,SAAU,EAAG,EAAG,CAAE,IAAI,GAAK,EAAE,KAAO,IAAK,GAAK,0BAA4B,KAAO,CAAC,GAAK,OAAS,IAAM,4CAA8C,GAAK,MAAQ,IAAM,eAAiB,IAAI,EAAE,EAAE,EAAI,mBAAqB,GAAK,iBAAmB,IAAI,EAAE,IAAM,EAAE,KAAK,EAAI,CAAC,CAAC,EAAI,MAAQ,EAAE,GAAK,oBAAsB,EAAE,GAAK,KAAO,IAAM,aAAe,EAAE,GAAK,2BAA6B,IAAI,EAAE,EAAE,EAAI,UAAY,IAAM,SAAW,CAAC,EAC9a,GAAK,mGAAqG,EAAE,OAAS,qBACvH,MAAO,GAAK,gHAAkH,KAAO,gDAAkD,EAAE,QAAU,OAAS,EAAE,SAAW,mBACzN,OAAO,EAAI,QACb,CAEA,SAAS,SAAS,EAAG,CAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAK,EAAE,QAAU,IAAM,UAAY,CAAE,IAAI,EAAI,CAAC,WAAW,EAAE,GAAG,GAAK,OAAO,CAAC,EAAG,OAAO,GAAK,EAAE,MAAQ,CAAG,GAAG,CAAG,CAAC,EAAE,CAAC,CAAG,CAAG,CAEpN,SAAS,UAAU,EAAG,CACpB,GAAI,GAAC,GAAK,CAAC,EAAE,OAAS,CAAC,OAAO,KAAK,EAAE,EAAE,QACvC,KAAI,KAAO,SAAS,KAAK,CAAC,EAAG,EAAI,CAAC,EAClC,MAAM,QAAQ,SAAU,EAAG,CAAE,IAAI,EAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAG,GAAK,GAAK,KAAK,CAAC,EAAO,IAAM,OAAO,EAAE,IAAG,EAAE,EAAE,CAAC,CAAC,EAAI,GAAG,IAAK,CAAC,EAC5G,OAAO,KAAK,CAAC,EAAE,SAAQ,GAAK,GAClC,CACA,SAAS,UAAU,EAAG,CACpB,IAAI,KAAO,SAAS,KAAK,CAAC,EACtB,EAAI,CAAC,EACT,GADgB,GAAK,EAAE,OAAO,MAAM,QAAQ,SAAU,EAAG,CAAE,IAAI,GAAK,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAO,IAAM,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAG,CAAC,EACxH,CAAC,EAAE,QAAU,EAAG,CAAE,IAAIA,MAAO,CAAC,GAAI,EAAE,MAAQ,CAAC,GAAG,QAAQ,SAAU,EAAG,CAAE,IAAI,GAAK,KAAK,CAAC,EAAO,IAAM,OAAO,EAAE,GAAK,CAACA,MAAK,GAAG,IAAI,IAAKA,MAAK,GAAG,IAAI,EAAI,EAAG,EAAE,KAAK,EAAE,EAAK,CAAC,CAAG,CAC5K,OAAO,CACT,CACA,SAAS,aAAc,CAAE,IAAIA,MAAO,CAAC,EAAG,EAAI,CAAC,EAAG,YAAK,EAAE,OAAO,MAAM,EAAE,QAAQ,SAAU,EAAG,CAAOA,MAAK,EAAE,IAAI,IAAKA,MAAK,EAAE,IAAI,EAAI,EAAG,EAAE,KAAK,CAAC,EAAK,CAAC,EAAU,MAAM,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,OAAS,EAAE,CAAC,CAAG,CAAC,EAAE,CAAC,CAAG,CAAC,EAAE,OAAO,OAAO,CAAG,CACvQ,SAAS,OAAQ,CACf,IAAI,GAAK,MAAM,IAAI,SAAU,EAAG,CAAE,OAAO,GAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAE,OAAO,OAAO,EACpE,GAAI,GAAG,OAAQ,CAAE,IAAI,IAAM,GAAG,IAAI,GAAG,EAAE,OAAO,OAAO,EAAG,MAAO,CAAE,IAAK,IAAI,SAAW,EAAI,EAAE,QAAQ,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,EAAI,EAAE,SAAS,IAAI,MAAM,EAAG,IAAK,GAAI,CAAG,CAC/J,IAAI,EAAI,OAAO,EAAG,OAAI,EAAU,CAAE,IAAK,EAAE,QAAS,IAAK,UAAU,CAAC,CAAE,EAC7D,CAAE,IAAK,EAAE,OAAQ,IAAK,YAAY,CAAE,CAC7C,CACA,SAAS,QAAS,CAChB,IAAI,EAAI,MAAM,EAAG,EAAI,MAAQ,KAAK,MAAQ,CAAC,EAAG,GAAK,OAAO,EAAG,GAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,KAAO,EAAI,CAAC,EAAE,CAAC,EAC9G,IAAM,IAAM,GAAG,GAAK,sCAAwC,GAAG,GAAK,YAAc,IAAM,EAAE,IAAI,IAAI,SAAU,EAAG,CAAE,IAAI,EAAI,KAAK,EAAE,GAAG,GAAK,EAAE,OAAS,GAAI,MAAO,UAAY,EAAI,oBAAsB,IAAI,CAAC,EAAI,KAAO,IAAM,SAAW,CAAC,EAAE,KAAK,EAAE,EACnP,OAAQ,GAAK,wCAA0C,GAAK,UAAY,GAAG,MAAQ,qBAAuB,IAAI,EAAE,GAAG,EAAI,SACzH,CAKA,IAAI,IAAM,KACV,SAAS,OAAO,KAAM,GAAI,CACxB,IAAI,EAAI,MAAQ,IAAI,cAAc,yBAAyB,GAAK,IAAI,cAAc,iCAAiC,GAAI,EAAI,GAAK,EAAE,sBAAsB,EAAG,GAAK,GAChK,GAAI,CAAE,GAAK,WAAW,kCAAkC,EAAE,OAAS,OAAS,EAAG,CAAE,CACjF,GAAI,CAAC,GAAK,CAAC,EAAE,OAAS,IAAM,CAAC,OAAO,KAAO,CAAC,SAAS,KAAK,QAAS,CAAE,GAAG,EAAK,EAAG,MAAQ,CACxF,IAAI,EAAI,IAAI,gBAAgB,IAAI,EAAG,GAAK,IAAI,MAC5C,GAAG,QAAU,UAAY,CAAE,IAAI,gBAAgB,CAAC,EAAG,GAAG,EAAK,CAAG,EAC9D,GAAG,OAAS,UAAY,CACtB,IAAI,EAAI,2BAA4B,EAAI,IAAK,EAAI,WAAY,EAAI,YAAa,GAAK,GAAG,cAAgB,GAAG,aAErG,IAAM,SAAS,cAAc,KAAK,EAAG,IAAI,IAAM,GAAI,IAAI,IAAM,EAAG,IAAI,MAAM,QAAU,wHACxF,EAAE,YAAY,GAAG,EAAG,IAAI,QAAQ,CAAC,CAAE,UAAW,YAAa,QAAS,CAAE,EAAG,CAAE,UAAW,OAAQ,QAAS,CAAE,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,4BAA6B,CAAC,EACpK,WAAW,UAAY,CACrB,EAAI,EAAE,sBAAsB,EAC5B,IAAI,EAAI,SAAS,cAAc,KAAK,EAAG,EAAE,MAAM,QAAU,gEACzD,IAAI,GAAK,SAAS,cAAc,KAAK,EAAG,GAAG,MAAM,QAAU,wCAA0C,EAAI,aAAe,EAAI,2EAC5H,IAAI,EAAI,SAAS,cAAc,KAAK,EAAG,EAAE,MAAM,QAAU,2EACzD,IAAI,GAAK,GAAG,UAAU,EAAG,GAAG,MAAM,QAAU,wDAAyD,EAAE,YAAY,EAAE,EACrH,EAAE,YAAY,EAAE,EAAG,EAAE,YAAY,CAAC,EAAG,SAAS,KAAK,YAAY,CAAC,EAAG,IAAI,MAAM,WAAa,SAE1F,IAAI,GAAK,KAAK,IAAI,EAAI,KAAM,EAAI,GAAG,EAAG,GAAK,GAAK,KAAK,IAAI,GAAI,EAAI,IAAM,IAAM,CAAC,EAAG,EAAI,KAAK,IAAI,GAAK,IAAK,EAAI,IAAM,EAAE,EAAG,EAAI,EAAI,GAAI,GAAK,CAAE,MAAO,EAAI,GAAK,EAAI,KAAM,IAAK,GAAK,IAAM,GAAK,IAAM,GAAK,EAAI,KAAM,MAAO,EAAI,KAAM,OAAQ,EAAI,KAAM,aAAc,MAAO,EAClQ,KAAO,CAAE,KAAM,EAAE,KAAO,KAAM,IAAK,EAAE,IAAM,KAAM,MAAO,EAAE,MAAQ,KAAM,OAAQ,EAAE,OAAS,KAAM,aAAc,KAAM,EACzH,GAAG,QAAQ,CAAC,CAAE,UAAW,aAAe,EAAE,KAAO,MAAQ,EAAE,IAAM,aAAe,EAAE,MAAQ,EAAI,IAAM,EAAE,OAAS,EAAI,IAAK,QAAS,EAAG,aAAc,KAAM,EAAG,CAAE,QAAS,EAAG,OAAQ,GAAI,EAAG,CAAE,UAAW,OAAQ,QAAS,EAAG,aAAc,GAAI,CAAC,EAAG,CAAE,SAAU,EAAG,OAAQ,EAAG,KAAM,UAAW,CAAC,EAC3R,GAAG,QAAQ,CAAC,CAAE,eAAgB,SAAU,EAAG,CAAE,eAAgB,SAAU,CAAC,EAAG,CAAE,SAAU,EAAG,OAAQ,EAAG,KAAM,UAAW,CAAC,EACvH,EAAE,QAAQ,CAAC,KAAM,EAAE,EAAG,CAAE,SAAU,EAAG,OAAQ,EAAG,KAAM,UAAW,CAAC,EAAG,IAAI,KAAO,GAAO,GAAK,KAAM,KAAO,GACrG,IAAM,UAAY,CAAM,OAAc,KAAO,GAAM,IAAM,KAAM,EAAE,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAAE,SAAU,IAAK,KAAM,UAAW,CAAC,EAAG,WAAW,UAAY,CAAE,EAAE,OAAO,EAAG,IAAI,gBAAgB,CAAC,CAAG,EAAG,GAAG,EAAG,EACvN,KAAO,UAAY,CAAE,GAAI,GAAC,IAAM,CAAC,MAAQ,MAAc,KAAI,EAAI,GAAI,GAAK,KAC1E,EAAE,QAAQ,CAAC,GAAI,CAAE,KAAM,EAAE,EAAI,KAAM,IAAK,EAAE,EAAI,KAAM,MAAO,EAAE,EAAI,KAAM,OAAQ,EAAE,EAAI,KAAM,aAAc,MAAO,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,WAAY,KAAM,UAAW,CAAC,EAAG,WAAW,IAAK,GAAG,EAAG,EAEtM,WAAW,UAAY,CAAE,KAAO,GAAM,KAAK,CAAG,EAAG,EAAI,EAAE,EACvD,IAAM,CAAE,KAAM,SAAU,EAAG,CAAM,GAAK,EAAE,EAAI,IAAM,GAAK,EAAG,KAAK,GAAU,IAAI,CAAG,CAAE,EAClF,WAAW,UAAY,CAAE,GAAG,EAAI,CAAG,EAAG,GAAG,EACzC,WAAW,IAAK,IAAK,CACvB,EAAG,GAAG,CACR,EACA,GAAG,IAAM,CACX,CACA,SAAS,OAAO,MAAO,CACrB,GAAI,OAAS,CAAC,MAAM,OAAQ,CAAE,MAAM,OAAS,EAAG,OAAO,MAAO,SAAU,EAAG,CAAM,IAAG,MAAM,KAAO,GAAG,OAAO,KAAK,CAAG,CAAC,EAAG,MAAQ,CAC/H,IAAI,MAAQ,CAAE,MAAO,MAAQ,KAAO,OAAO,EAAG,MAAO,OAAS,KAAM,IAAK,CAAC,EAAE,OAAS,MAAM,KAAM,EAC7F,GAAK,MAAM,IAAI,SAAU,EAAG,CAAE,OAAO,GAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAE,OAAO,OAAO,EAAG,EAAI,KAAK,EAChF,GAAI,GAAG,OAAQ,CAAE,OAAS,GAAG,MAAM,EAAG,YAAY,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,GAAG,QAAQ,EAAE,GAAG,EAAI,EAAI,CAAC,EAAE,IAAI,KAAK,EAAG,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,GAAG,QAAQ,EAAE,GAAG,EAAI,CAAG,CAAC,EAAE,IAAI,KAAK,EAAG,GAAI,KAAK,EAAG,MAAQ,CACjN,GAAI,OAAO,EAAG,CAAE,WAAW,KAAK,EAAG,MAAQ,CAC3C,UAAU,KAAM,KAAK,CACvB,CACA,SAAS,WAAW,IAAK,CAAE,IAAI,EAAI,IAAI,GAAG,EAAG,GAAK,EAAW,IAAI,CAAC,OAAO,CAAC,EAAG,CAAE,OAAO,EAAE,MAAO,IAAI,EAAG,MAAQ,CAAM,GAAG,EAAE,IAAI,IAAM,IAAK,OAAO,GAAG,EAAE,IAAI,EAAQ,GAAG,EAAE,IAAI,EAAI,IAAK,aAAa,EAAG,CAElM,SAAS,OAAO,IAAK,KAAM,IAAK,KAAM,CAAE,GAAK,CAAE,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,EAAG,aAAa,GAAG,EAAG,IAAM,WAAW,UAAY,CAAE,GAAK,KAAM,IAAI,EAAI,KAAO,IAAI,cAAc,eAAe,EAAO,GAAG,EAAE,UAAU,IAAI,KAAK,CAAG,EAAG,KAAO,IAAO,IAAI,EAAG,aAAa,CAAG,CAGpR,SAAS,UAAU,EAAG,CACpB,IAAI,GAAK,KAAO,IAAI,cAAc,sBAAwB,EAAI,IAAI,EAAG,EAAI,IAAM,GAAG,mBAAoB,GAAK,EAC3G,KAAI,GAAK,EAAE,iBAAiB,2BAA2B,EAAG,GAAK,GAAG,OAClE,KAAI,GAAK,EAAE,sBAAsB,EAAG,EAAI,GAAG,CAAC,EAAE,sBAAsB,EAAG,EAAI,GAAG,GAAG,OAAS,CAAC,EAAE,sBAAsB,EAAG,EAAI,EAAE,MAAQ,EAAE,KAClI,GAAK,EAAI,GAAG,MAAQ,GAAK,EAAE,WAAa,EAAE,KAAO,GAAG,KAAO,GAAK,EAAE,YAAc,EAAE,KAAO,EAAE,OAAS,GAAK,GAAG,KAAO,GAAG,MAAQ,GAClI,EAAE,SAAS,CAAE,KAAM,KAAK,IAAI,EAAG,EAAE,EAAG,SAAU,QAAS,CAAC,GAC1D,CAIA,SAAS,OAAO,IAAK,CAAE,KAAK,KAAK,GAAG,EAAG,aAAa,EAAE,EAAG,GAAK,WAAW,OAAQ,GAAG,CAAG,CACvF,SAAS,QAAS,CAChB,IAAI,KAAO,KAAK,OAAO,SAAU,EAAG,CAAE,OAAO,KAAK,CAAC,CAAG,CAAC,EAAG,IAAM,CAAC,EAAG,KAAO,CAAC,EAAG,KAAK,QAAQ,SAAU,EAAG,CAAE,OAAO,KAAK,CAAC,CAAG,CAAC,EACxH,GAAC,KAAK,QAAU,CAAC,UACrB,KAAK,QAAQ,SAAU,EAAG,CAAE,IAAI,GAAK,IAAI,CAAC,EAAO,KAAK,IAAI,GAAG,IAAI,EAAI,IAAI,GAAG,IAAI,GAAK,CAAC,GAAG,KAAK,CAAC,CAAG,CAAC,EACnG,OAAO,KAAK,GAAG,EAAE,QAAQ,SAAU,EAAG,CAAE,IAAI,GAAK,IAAI,CAAC,EACpD,MAAM,CAAC,EAAI,GAAG,QAAQ,MAAM,CAAC,GAAK,CAAC,GAAG,OAAO,SAAU,EAAG,CAAE,OAAO,GAAG,QAAQ,CAAC,EAAI,CAAG,CAAC,CAAC,CACxF,CAAC,EACH,KAAO,KAAM,aAAa,EAE1B,KAAK,QAAQ,SAAU,EAAG,CAAE,IAAI,EAAI,IAAI,cAAc,yBAA2B,EAAI,eAAe,EAAQ,IAAW,EAAE,UAAU,IAAI,MAAM,EAC3I,WAAW,UAAY,CAAE,EAAE,UAAU,OAAO,MAAM,EAAG,EAAE,UAAU,IAAI,KAAK,CAAG,EAAG,GAAG,EAAG,CAAC,EAC3F,CAIA,SAAS,QAAQC,IAAI,CAAE,IAAI,EAAIA,IAAG,QAAQ,cAAc,EAAG,GAAK,GAAK,EAAE,uBAAwB,EAAI,GAAK,GAAG,aAAa,QAAQ,EAAI,GAAI,OAAOA,IAAG,QAAQ,IAAMA,IAAG,UAAU,SAAS,YAAY,EAAI,OAAS,EAAIA,IAAG,UAAU,SAAS,aAAa,EAAI,QAAU,EAAI,GAAK,CAC7Q,SAAS,WAAY,CAAE,IAAI,EAAI,CAAC,EAAG,OAAC,EAAE,QAAQ,KAAK,IAAI,iBAAiB,kBAAkB,EAAG,SAAUA,IAAI,CAAE,IAAI,EAAI,QAAQA,GAAE,EAAO,IAAG,EAAE,CAAC,EAAIA,IAAG,sBAAsB,EAAG,CAAC,EAAU,CAAG,CAG1L,SAAS,SAAS,KAAM,MAAO,CAC7B,IAAI,EAAI,IAAI,cAAc,yBAA2B,KAAK,CAAC,EAAI,+BAAiC,KAAK,CAAC,EAAI,IAAI,GAAK,OAAO,KAAK,CAAC,CAAC,EAAG,EAAI,GAAK,EAAE,QAAQ,cAAc,EAAG,GAAK,EAC7K,KAAI,EAAI,EAAE,wBAA0B,EAAE,uBAAuB,UAAU,SAAS,YAAY,EAAI,EAAE,uBAAyB,EACvH,GAAK,EAAE,sBAAsB,EAAG,EAAI,EAAE,sBAAsB,EAAG,EAAI,MAAM,KAAK,CAAC,CAAC,EAAG,EAAI,EAAI,EAAE,KAAO,EAAE,KAAO,EAGjH,GAAI,EAAE,UAAU,SAAS,aAAa,EAAG,CAAE,IAAI,GAAK,MAAM,QAAU,EAAE,QAAQ,CAAC,EAAG,EAAI,GAAK,EAAE,KAAO,GAAG,KAAO,EAAE,KAAO,GAAG,KAAO,GAAK,EAAE,KAAO,GAAG,KAAO,GAAK,EAAE,MAAQ,GAAG,MAAQ,GAAK,EAAE,MAAQ,GAAG,MAAQ,GAAK,EAAO,IAAG,EAAE,YAAc,GAAG,MAAQ,CACvP,EAAI,KAAK,IAAI,KAAK,IAAI,EAAG,EAAE,MAAQ,GAAG,MAAQ,EAAE,EAAG,EAAE,sBAAsB,EAAE,KAAO,GAAG,KAAO,EAAE,EAC5F,IAAG,EAAE,YAAc,GACzB,CAGA,SAAS,OAAO,IAAK,CAAE,IAAI,GAAK,IAAI,GAAG,EAAG,GAAK,IAAM,IAAI,cAAc,sBAAwB,GAAG,KAAO,IAAI,EAAG,EAAI,IAAM,GAAG,mBAAoB,OAAO,GAAK,EAAE,cAAc,cAAc,CAAG,CAG9L,SAAS,OAAO,KAAM,CACpB,IAAI,EAAI,CAAE,EAAG,CAAC,EAAG,EAAG,CAAC,CAAE,EACvB,YAAK,QAAQ,SAAU,GAAI,CAAE,IAAIA,IAAK,IAAI,cAAc,yBAA2B,GAAK,IAAI,EAAG,GAAK,IAAI,EAAE,EAAG,GAAK,OAAO,EAAE,EACrHA,KAAI,EAAE,EAAE,KAAK,CAAE,IAAK,GAAI,GAAIA,IAAG,UAAU,EAAI,EAAG,EAAGA,IAAG,sBAAsB,CAAE,CAAC,EAC/E,IAAM,IAAM,CAAC,EAAE,EAAE,GAAG,IAAI,IAAG,EAAE,EAAE,GAAG,IAAI,EAAI,CAAE,GAAI,GAAG,UAAU,EAAI,EAAG,EAAG,GAAG,sBAAsB,CAAE,EAAG,CAAC,EACrG,CACT,CAIA,SAAS,OAAO,EAAG,CAAE,IAAI,EAAI,EAAE,cAAc,YAAY,EAAO,GAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAE,UAAW,MAAO,EAAG,CAAE,UAAW,YAAa,EAAG,CAAE,UAAW,MAAO,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,UAAW,CAAC,CAAG,CAC/M,SAAS,KAAK,EAAG,CACf,GAAI,MAAK,EACT,KAAI,EAAI,IAAK,GAAK,4BAA6B,IAAM,SAAU,EAAG,EAAG,EAAG,CAAE,SAAE,MAAM,QAAU,uBAAyB,EAAE,KAAO,UAAY,EAAE,IAAM,YAAc,EAAE,MAAQ,aAAe,EAAE,OAAS,uBAAyB,EAAI,sCAAuC,IAAI,YAAY,CAAC,EAAU,CAAG,EACtS,EAAE,EAAE,QAAQ,SAAU,EAAG,CACvB,GAAI,KAAI,cAAc,yBAA2B,EAAE,IAAM,IAAI,EAC7D,KAAI,EAAI,OAAO,EAAE,GAAG,EAAG,GAAI,GAAC,GAAK,CAAC,EAAE,SAAiB,KAAI,EAAI,EAAE,sBAAsB,EAAG,GAAK,EAAE,KAAO,EAAE,EAAE,KAAM,GAAK,EAAE,IAAM,EAAE,EAAE,IAAK,GAAK,IAAI,EAAE,GAAG,EAAG,GAAK,IAAM,EAAE,EAAE,GAAG,IAAI,EAAG,EAAI,IAAI,EAAE,GAAI,EAAE,EAAG,CAAC,EACpM,GAAI,EAAE,QAAQ,MAAQ,EAAE,IAAK,CAG3B,IAAI,EAAI,GAAK,IAAI,GAAG,GAAI,GAAG,EAAG,CAAC,EAAI,KAAM,IAAM,UAAY,CAAE,EAAE,MAAM,WAAa,GAAI,EAAE,OAAO,EAAO,GAAG,EAAE,OAAO,EAAG,OAAO,CAAC,CAAG,EAChI,EAAE,MAAM,WAAa,SACjB,GAAG,EAAE,QAAQ,CAAC,CAAE,UAAW,MAAO,EAAG,CAAE,UAAW,cAAgB,EAAE,KAAO,GAAG,EAAE,MAAQ,OAAS,EAAE,IAAM,GAAG,EAAE,KAAO,KAAM,CAAC,EAAG,CAAE,SAAU,EAAG,OAAQ,GAAI,KAAM,UAAW,CAAC,EAChL,EAAE,QAAQ,CAAC,CAAE,UAAW,OAAQ,UAAW,qBAAsB,EAAG,CAAE,OAAQ,GAAI,UAAW,aAAe,GAAK,EAAI,OAAS,GAAK,EAAI,IAAM,kBAAmB,UAAW,6BAA8B,EACvM,CAAE,UAAW,aAAe,GAAK,MAAQ,GAAK,MAAO,UAAW,qBAAsB,CAAC,EAAG,CAAE,SAAU,EAAG,OAAQ,GAAI,KAAM,UAAW,CAAC,EAAE,SAAS,KAAK,IAAK,GAAG,EACjK,MACF,CACA,EAAE,MAAM,OAAS,EAAG,EAAE,MAAM,OAAS,EAAG,EAAE,MAAM,SAAW,WAC3D,EAAE,QAAQ,CAAC,CAAE,UAAW,OAAQ,QAAS,CAAE,EAAG,CAAE,OAAQ,GAAI,QAAS,CAAE,EAAG,CAAE,UAAW,cAAgB,GAAK,IAAM,MAAQ,GAAK,iBAAkB,QAAS,CAAE,CAAC,EAAG,CAAE,SAAU,EAAG,OAAQ,GAAI,KAAM,UAAW,CAAC,EAC1M,SAAS,KAAK,UAAY,CAAE,EAAE,OAAO,EAAG,EAAE,MAAM,OAAS,GAAI,OAAO,CAAC,CAAG,EAAG,UAAY,CAAE,EAAE,OAAO,CAAG,CAAC,GAC3G,CAAC,EACH,CACA,SAAS,SAAS,MAAO,KAAM,IAAK,KAAM,CACxC,GAAI,KAAK,EAAG,CAAE,KAAK,QAAQ,SAAU,GAAI,CAAE,IAAIA,IAAK,IAAI,cAAc,yBAA2B,GAAK,+BAAiC,GAAK,IAAI,EAAOA,KAAMA,IAAG,SAASA,IAAG,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAAE,SAAU,GAAI,CAAC,CAAG,CAAC,EAAG,MAAQ,CACtP,IAAI,GAAK,KAAO,4BAA8B,4BAC9C,CAAC,EAAE,QAAQ,KAAK,IAAI,iBAAiB,kBAAkB,EAAG,SAAUA,IAAI,CAAE,IAAI,EAAI,QAAQA,GAAE,EAAG,GAAI,GAAC,GAAK,CAACA,IAAG,SAAiB,KAAI,EAAI,MAAM,CAAC,EAAG,EAAIA,IAAG,sBAAsB,EAC3K,GAAI,CAAC,EAAG,CAAEA,IAAG,QAAQ,CAAC,CAAE,QAAS,EAAG,UAAW,YAAa,EAAG,CAAE,QAAS,EAAG,UAAW,MAAO,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,UAAW,CAAC,EAAG,MAAQ,CACnJ,IAAI,GAAK,EAAE,KAAO,EAAE,MAAQ,EAAI,EAAE,KAAO,EAAE,MAAQ,EAAG,GAAK,EAAE,IAAM,EAAE,OAAS,EAAI,EAAE,IAAM,EAAE,OAAS,EAAG,GAAK,EAAE,MAAQ,EAAE,MAAQ,EAAE,MAAQ,EAAG,GAAK,KAAK,QAAQ,CAAC,EAAI,GACrK,GAAI,GAAC,IAAM,KAAK,IAAI,EAAE,EAAI,GAAK,KAAK,IAAI,EAAE,EAAI,GAC9C,IAAI,CAAC,GAAI,CAAEA,IAAG,QAAQ,CAAC,CAAE,UAAW,aAAe,GAAK,MAAQ,GAAK,KAAM,EAAG,CAAE,UAAW,MAAO,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,EAAG,CAAC,EAAG,MAAQ,CAC9I,IAAI,KAAO,KAAK,IAAI,EAAG,KAAK,IAAI,GAAI,GAAK,GAAK,GAAG,CAAC,EAAG,KAAO,CAAE,UAAW,aAAe,GAAK,MAAQ,GAAK,aAAe,GAAK,IAAK,UAAW,KAAO,GAAK,KAAO,MAAQ,GAAK,KAAO,iBAAmB,IAAM,KAAO,GAAI,EACzNA,IAAG,MAAM,OAAS,EAClBA,IAAG,QAAQ,KAAO,CAAC,KAAM,CAAE,UAAW,OAAQ,UAAW,qBAAsB,CAAC,EAAI,CAAC,KACnF,CAAE,OAAQ,GAAI,UAAW,aAAgB,GAAK,EAAK,OAAS,GAAK,EAAI,IAAM,kBAAmB,UAAW,6BAA8B,EACvI,CAAE,UAAW,OAAQ,UAAW,qBAAsB,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,EAAG,CAAC,EAAE,SAAW,UAAY,CAAEA,IAAG,MAAM,OAAS,EAAI,GAC5I,CAAC,CACH,CAEA,SAAS,WAAW,IAAK,CACvB,IAAI,EAAI,IAAI,GAAG,EAAG,GAAI,GAAC,GAAK,MAAM,GAAG,GAAW,KAAI,GAAK,WAAW,GAAG,EAAI,SAAS,EAAE,KAAK,EAAI,OAAO,CAAC,EACvG,GAAI,GAAI,CAAE,IAAI,MAAQ,GAAI,MAAM,GAAG,EAAI,EAAG,aAAa,EAAG,QAAQ,GAAG,GAAG,EAAE,KAAK,UAAY,CAAE,OAAO,MAAM,GAAG,EAAG,OAAO,KAAK,GAAG,EAAG,KAAO,CAAC,GAAG,EAAG,OAAO,EAAE,QAAS,UAAY,CAAE,SAAS,KAAK,EAAE,KAAK,YAAY,CAAG,CAAC,CAAG,EAAG,UAAY,CAAE,OAAO,MAAM,GAAG,EAAG,aAAa,CAAG,CAAC,EAAG,MAAQ,CACpR,WAAW,GAAG,IAClB,MAAM,GAAG,EAAI,EAAG,KAAK,GAAG,EAAI,EAAG,MAAM,GAAG,EAAI,KAAK,IAAI,EAAG,aAAa,EAAE,EAAG,aAAa,EACvF,UAAU,CAAC,EAAE,KAAK,UAAY,CAAE,OAAO,MAAM,GAAG,EAAG,OAAO,KAAK,GAAG,EAAG,KAAK,GAAG,EAAI,EAAG,OAAO,GAAG,EAAG,OAAO,EAAE,MAAO,UAAY,CAAE,IAAI,EAAI,OAAO,CAAC,EAAO,GAAG,QAAQ,EAAE,GAAG,EAAE,KAAK,YAAY,CAAG,CAAC,CAAG,EAAG,UAAY,CAAE,OAAO,MAAM,GAAG,EAAG,OAAO,KAAK,GAAG,EAAG,aAAa,EAAO,KAAK,SAAQ,GAAK,WAAW,OAAQ,GAAG,GAAG,OAAO,EAAE,QAAS,IAAI,CAAG,CAAC,GACjV,CACA,SAAS,YAAa,CACpB,IAAI,IAAM,KAAK,IAAI,GAAG,EAAE,OAAO,OAAO,EAAG,EAAI,IAAI,OAAO,SAAU,EAAG,CAAE,OAAO,OAAO,CAAC,GAAK,WAAW,EAAE,GAAG,CAAG,CAAC,EAAE,OACjH,MAAO,4GAA8G,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,EAAI,+DAChH,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,EAAI,sCAAwC,IAAI,EAAE,QAAQ,EAAG,IAAI,MAAM,CAAC,EAAI,sEACnE,GAAG,MAAQ,+BAAiC,IAAM,EAAI,EAAE,OAAS,EAAE,OAAS,UAAY,EAAE,OAAS,oFACnG,GAAG,MAAQ,+BAAiC,IAAM,EAAI,EAAE,OAAS,EAAE,OAAS,UAAY,EAAE,MAAQ,2FAC3F,EAAE,OAAS,iBACxF,CAGA,IAAI,KAAO,CAAE,IAAK,ojHAAqjH,MAAO,qjJAAsjJ,IAAK,wxFAAyxF,EACl6V,SAAS,UAAW,CAAE,GAAI,CAAE,OAAO,aAAa,QAAQ,YAAY,IAAM,GAAK,OAAS,EAAG,CAAE,MAAO,EAAM,CAAE,CAC5G,SAAS,UAAW,CAAE,GAAI,CAAE,aAAa,QAAQ,aAAc,GAAG,CAAG,OAAS,EAAG,CAAE,CAAE,CACrF,SAAS,UAAW,CAClB,IAAI,EAAI,SAAS,cAAc,KAAK,EAAG,GAAK,uGAAwG,GAAK,qGACvJ,KAAO,SAAU,EAAG,EAAG,EAAG,CAAE,MAAO,+HAAiI,KAAK,CAAC,EAAI,YAAc,EAAI,UAAY,EAAI,QAAU,EAC5N,EAAE,UAAY,UAAW,EAAE,aAAa,OAAQ,QAAQ,EAAG,EAAE,aAAa,aAAc,MAAM,EAAG,EAAE,aAAa,aAAc,EAAE,IAAI,EACpI,EAAE,UAAY,kFAAoF,EAAE,KAAO,gCAAkC,KAAK,MAAO,GAAI,EAAE,MAAM,EAAI,KAAK,QAAS,GAAI,EAAE,QAAQ,EAAI,KAAK,MAAO,GAAI,EAAE,MAAM,EAAI,kPACW,EAAE,MAAQ,mCAC5N,EAAE,OAAS,aAAe,IAAI,UAAU,CAAC,EAAI,oCAAsC,EAAE,OAAS,iBAC5H,IAAI,MAAQ,UAAY,CAAE,EAAE,UAAU,OAAO,IAAI,EAAG,WAAW,UAAY,CAAE,EAAE,OAAO,CAAG,EAAG,GAAG,CAAG,EAClG,EAAE,iBAAiB,QAAS,SAAU,EAAG,CAAM,EAAE,SAAW,GAAG,MAAM,CAAG,CAAC,EACzE,EAAE,cAAc,cAAc,EAAE,iBAAiB,QAAS,UAAY,CAAE,SAAS,EAAG,MAAM,EAAG,OAAO,CAAG,CAAC,EACxG,SAAS,KAAK,YAAY,CAAC,EAAG,sBAAsB,UAAY,CAAE,EAAE,UAAU,IAAI,IAAI,CAAG,CAAC,CAC5F,CACA,SAAS,QAAS,CAChB,GAAI,CAAC,SAAS,EAAG,CAAE,SAAS,EAAG,MAAQ,CAClC,KAAM,GAAK,SAAS,cAAc,OAAO,EAAG,GAAG,KAAO,OAAQ,GAAG,OAAS,UAAW,GAAG,OAAS,GAAM,SAAS,KAAK,YAAY,EAAE,EACtI,GAAG,iBAAiB,SAAU,UAAY,CAAE,IAAI,EAAI,GAAG,OAAS,GAAG,MAAM,CAAC,EAAG,GAAG,MAAQ,GAAQ,GAAG,OAAO,CAAC,CAAG,CAAC,GACjH,GAAG,MAAM,CACX,CACA,SAAS,UAAW,CAClB,OAAO,QAAQ,IAAI,CAAC,OAAO,SAAS,EAAG,OAAO,OAAO,CAAC,CAAC,EAAE,KAAK,SAAU,EAAG,CACzE,IAAI,EAAI,EAAE,CAAC,EAAG,MAAQ,MAAM,QAAQ,EAAE,CAAC,CAAC,EAAI,EAAE,CAAC,EAAI,CAAC,EAChD,GAAK,EAAE,OAAQ,EAAE,KAAO,EAAE,KAAK,OAAO,SAAU,EAAG,CAAE,OAAO,MAAM,QAAQ,EAAE,EAAE,EAAI,CAAG,CAAC,EAAG,KAAO,EACtG,CAAC,EAAE,MAAM,UAAY,CAAE,CAAC,CAC1B,CAGA,OAAO,QAAQ,EAAG,SAAS,EAE3B,SAAS,OAAO,EAAG,CAAE,GAAI,QAAQ,CAAC,EAAE,WAAmB,KAAI,EAAI,EAAE,OAAO,QAAQ,oBAAoB,EAAO,CAAC,GAAK,EAAE,OAAO,QAAQ,aAAa,IAC7I,GAAK,CAAE,EAAG,EAAE,QAAS,EAAG,EAAE,QAAS,EAAG,EAAE,QAAQ,EAAG,EAAG,WAAW,UAAY,CAAE,GAAK,GAAY,KAAI,EAAI,GAAG,EAAG,GAAK,KAAM,KAAO,GAAM,WAAW,UAAY,CAAE,KAAO,EAAO,EAAG,GAAG,EAAG,GAAI,CAAE,UAAU,SAAW,UAAU,QAAQ,EAAE,CAAG,OAAS,EAAG,CAAE,CAAE,KAAO,GAAM,KAAO,CAAC,CAAC,EAAG,aAAa,EAAG,EAAG,GAAG,CAAE,GAAG,CAC9S,SAAS,OAAO,EAAG,CAAM,KAAO,KAAK,IAAI,EAAE,QAAU,GAAG,CAAC,EAAI,GAAK,KAAK,IAAI,EAAE,QAAU,GAAG,CAAC,EAAI,KAAM,aAAa,GAAG,CAAC,EAAG,GAAK,KAAQ,CACtI,SAAS,OAAQ,CAAM,KAAM,aAAa,GAAG,CAAC,EAAG,GAAK,KAAQ,CAE9D,SAAS,IAAI,IAAK,CAAE,OAAO,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAK,CAAC,EAAE,CAAC,GAAK,IAAM,CAC7F,SAAS,OAAO,GAAI,CAClB,IAAI,EAAI,IAAI,GAAG,GAAG,EAAG,GAAI,CAAC,EAAK,UAAK,KAAa,GACjD,IAAI,GAAK,OAAO,CAAC,GAAK,WAAW,EAAE,GAAG,EAAG,EAAI,QAAQ,CAAC,EAAG,IAAM,KAAK,EAAE,GAAG,GAAK,EAAE,OAAS,GAAI,EAC7F,OAAI,GAAG,IACL,EAAI,8BAAgC,IAAI,EAAE,KAAK,OAAO,EAAE,KAAK,CAAC,CAAC,EAAI,+DAAiE,EAAE,MAAQ,KAAO,GAAG,EAAI,+EACxF,GAAG,MAAQ,8BAAgC,EAAE,MAAQ,UAAY,EAAE,OAAS,oFAC5E,GAAG,MAAQ,8BAAgC,EAAE,MAAQ,UAAY,EAAE,MAAQ,uBAE/I,EAAI,mDAAqD,EAAE,IAAM,KAAO,IAAM,SAAW,IAAI,GAAG,EAAI,IAAM,IAAM,qCAC9E,IAAI,EAAE,KAAK,EAAI,QAAU,EAAE,cAAgB,SAAW,IAAI,EAAE,aAAa,EAAI,UAAY,IAAM,UAC9H,GAAK,mDAAqD,GAAG,KAAO,EAAE,QAAU,YAAc,2CAA6C,GAAG,KAAO,YAAc,IAAM,IAAM,EAAE,QAAU,SAAQ,MAAM,EAAE,GAAG,EAAI,aACnN,mDAAqD,GAAG,KAAO,EAAE,OAAS,mCAAqC,GAAG,IAAM,EAAE,MAAQ,4DACnF,EAAE,KAAO,YAErD,gGAAkG,IAAI,EAAE,KAAK,EAAI,oCAAsC,EAAI,QACpK,CACA,SAAS,OAAO,IAAK,CAAE,GAAK,CAAE,IAAK,GAAI,EAAG,aAAa,EAAG,IAAI,GAAK,IAAI,cAAc,gBAAgB,EAAO,IAAM,CAAC,WAAW,GAAG,GAAG,OAAO,GAAG,EAAE,KAAK,SAAU,EAAG,CAAM,IAAG,GAAG,IAAM,EAAG,CAAC,EAAG,sBAAsB,UAAY,CAAE,IAAI,EAAI,IAAI,cAAc,YAAY,EAAO,GAAG,EAAE,UAAU,IAAI,IAAI,EAAG,IAAI,EAAI,IAAI,cAAc,cAAc,EAAO,GAAG,EAAE,UAAU,IAAI,IAAI,CAAG,CAAC,CAAG,CACnX,SAAS,SAAU,CAAE,IAAI,EAAI,IAAI,cAAc,YAAY,EAAG,EAAI,IAAI,cAAc,cAAc,EAAG,GAAK,KAAW,IAAW,EAAE,UAAU,OAAO,IAAI,EAAO,GAAG,EAAE,UAAU,OAAO,IAAI,EAAG,WAAW,UAAY,CAAO,KAAU,EAAE,YAAY,EAAE,OAAO,EAAO,GAAK,EAAE,YAAY,EAAE,OAAO,EAAK,EAAG,GAAG,EAAG,CAE3S,SAAS,UAAU,MAAO,MAAO,CAC/B,IAAI,EAAI,KAAK,EAAG,GAAK,CAAC,EAAGD,MAAO,CAAC,EACjC,GAAI,MAAO,CAAE,IAAI,EAAI,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,KAAO,CAAC,EAAE,CAAC,EAAO,IAAK,GAAG,KAAK,CAAC,EAAGA,MAAK,EAAE,IAAI,EAAI,EAAK,CACrH,EAAE,QAAQ,SAAU,EAAG,CAAOA,MAAK,EAAE,IAAI,IAAKA,MAAK,EAAE,IAAI,EAAI,EAAG,GAAG,KAAK,CAAC,EAAK,CAAC,EAC/E,IAAI,KAAO,GAAG,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,CAAC,EAAG,OAAS,KAAK,MAAM,EACvE,YAAY,GAAG,IAAI,KAAK,EAAG,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,KAAK,QAAQ,EAAE,GAAG,EAAI,CAAG,CAAC,EAAE,IAAI,KAAK,EAAG,GAAI,OAAS,IAAI,CACrH,CACA,SAAS,UAAU,EAAG,CACpB,GAAI,WAAW,EAAE,GAAG,EAAG,CAAE,IAAI,EAAI,SAAS,EAAE,KAAK,EAAG,GAAI,IAAM,YAAY,CAAC,GAAK,aAAa,CAAC,GAAI,OAAQ,SAAS,KAAO,IAAI,aAAe,EAAE,MAAM,EAAG,MAAQ,CAChK,IAAI,IAAM,EAAE,OAAS,OAAS,EAAE,OAAS,aAAe,EAAE,OAAS,SAAW,mBAAmB,EAAE,GAAG,EAAK,EAAE,SAAW,EAAE,IACtH,MAAO,YAAY,EAAI,EAAG,SAAS,KAAO,IAAI,GAAG,EACvD,CAGA,SAAS,cAAc,IAAK,CAC1B,IAAI,EAAI,SAAS,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,QAAU,GAAK,CAAC,EAAE,CAAC,EACrE,GAAI,CAAC,EAAG,CAAE,IAAI,GAAK,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,IAAI,EAAI,OAAO,CAAC,EAAG,OAAO,GAAK,EAAE,MAAQ,GAAK,CAAC,EAAE,CAAC,EAAG,OAAO,QAAQ,QAAQ,GAAK,GAAG,IAAM,IAAI,CAAG,CACjJ,IAAI,EAAI,CAAE,KAAM,EAAE,KAAM,MAAO,EAAE,MAAO,OAAQ,EAAE,OAAQ,IAAK,EAAE,IAAK,WAAY,EAAE,WAAY,cAAe,EAAE,cAAe,MAAO,EAAE,MAAO,aAAc,EAAE,aAAc,MAAO,EAAE,KAAM,EAC7L,GAAI,UAAU,CAAC,EAAG,OAAO,KAAK,CAAC,EAC/B,IAAI,EAAI,EAAE,MAAO,IAAM,SAAU,EAAG,CAAE,OAAO,OAAO,GAAM,UAAY,iCAAiC,KAAK,CAAC,EAAI,EAAI,IAAM,EACvH,IAAM,SAAU,EAAG,CAAE,OAAO,EAAI,MAAM,CAAC,EAAE,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,EAAE,KAAK,EAAI,IAAM,CAAC,EAAE,MAAM,UAAY,CAAE,OAAO,IAAM,CAAC,EAAI,IAAM,EAC/I,OAAO,QAAQ,IAAI,CAAC,IAAI,IAAI,EAAE,gBAAgB,CAAC,GAAK,IAAI,EAAE,OAAO,GAAK,IAAI,EAAE,QAAQ,GAAK,EAAE,KAAK,EAAG,IAAI,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAC7H,KAAK,SAAU,EAAG,CAAE,OAAO,KAAK,EAAG,EAAE,CAAC,EAAI,CAAE,MAAO,EAAE,CAAC,EAAG,KAAM,EAAE,CAAC,CAAE,EAAI,EAAE,CAAC,CAAC,CAAG,CAAC,CACrF,CACA,SAAS,QAAQ,IAAK,CAAE,OAAO,MAAM,KAAO,iBAAkB,CAAE,OAAQ,OAAQ,QAAS,CAAE,eAAgB,mBAAoB,OAAQ,kBAAmB,EAAG,KAAM,KAAK,UAAU,CAAE,GAAI,IAAK,SAAU,CAAE,CAAC,CAAE,CAAC,EAAE,KAAK,UAAY,CAAE,OAAO,SAAS,CAAG,CAAC,EAAE,KAAK,UAAY,CAAM,OAAO,QAAU,OAAO,OAAO,SAAS,OAAO,OAAO,QAAQ,CAAG,CAAC,CAAG,CACpV,SAAS,SAAS,KAAM,CAAE,IAAI,GAAK,IAAI,SAAY,UAAG,OAAO,KAAM,KAAK,UAAU,EAAG,GAAG,OAAO,WAAY,OAAO,KAAK,UAAY,CAAC,CAAC,EAAG,OAAO,KAAK,KAAK,YAAc,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,GAAG,OAAO,cAAgB,EAAI,IAAK,KAAK,WAAW,CAAC,CAAC,CAAG,CAAC,EAClP,MAAM,KAAO,cAAe,CAAE,OAAQ,OAAQ,KAAM,GAAI,QAAS,CAAE,OAAQ,kBAAmB,CAAE,CAAC,EAAE,KAAK,UAAY,CAAE,OAAO,SAAS,CAAG,CAAC,EAAE,KAAK,UAAY,CAAM,OAAO,QAAU,OAAO,OAAO,SAAS,OAAO,OAAO,QAAQ,CAAG,CAAC,CAAG,CACjP,SAAS,IAAI,EAAG,CAAE,OAAO,OAAO,GAAK,EAAE,EAAE,QAAQ,UAAW,SAAU,EAAG,CAAE,MAAO,CAAE,IAAK,QAAS,IAAK,OAAQ,IAAK,OAAQ,IAAK,QAAS,EAAE,CAAC,CAAG,CAAC,CAAG,CACpJ,SAAS,OAAO,EAAG,CAAE,OAAO,OAAO,GAAK,EAAE,EAAE,MAAM,KAAK,EAAE,CAAC,EAAE,QAAQ,QAAS,EAAE,CAAG,CAClF,SAAS,WAAY,CAEnB,IAAI,GAAK,SAAU,EAAG,IAAK,EAAG,EAAG,CAAE,MAAO,iDAAmD,IAAM,2BAA6B,EAAI,wBAA0B,EAAI,UAAY,EAAI,kBAAoB,EACtM,MAAO,6BAA+B,EAAE,GAAK,UAAY,EAAE,GAAK,uCAC9D,GAAG,EAAG,oBAAsB,QAAQ,KAAM,kBAAkB,EAAI,iBAAkB,EAAE,GAAI,EAAE,GAAG,EAC7F,GAAG,EAAG,8BAAgC,GAAG,KAAO,uBAAwB,EAAE,GAAI,EAAE,GAAG,EACnF,GAAG,EAAG,oBAAsB,QAAQ,KAAM,kBAAkB,EAAI,KAAM,EAAE,GAAI,EAAE,GAAG,EAAI,4BACzF,CACA,IAAI,IAAM,KAEV,SAAS,QAAQ,EAAG,CAAE,IAAI,GAAK,EAAE,gBAAkB,IAAM,aAAc,MAAO,OAAO,KAAK,EAAE,MAAM,EAAI,MAAQ,OAAS,EAAE,OAAS,iBAAmB,mBAAmB,CAAC,EAAI,CAAG,CAChL,SAAS,SAAU,CAAE,OAAI,MAAiB,IAAM,QAAQ,IAAI,QAAQ,IAAI,SAAU,EAAG,CAAE,OAAO,MAAM,KAAO,YAAc,EAAI,KAAK,EAAE,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,EAAE,KAAK,EAAI,IAAM,CAAC,EAAE,MAAM,UAAY,CAAE,OAAO,IAAM,CAAC,CAAG,CAAC,CAAC,EAAE,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,OAAO,OAAO,CAAG,CAAC,EAAU,IAAK,CACjS,SAAS,WAAY,CACnB,IAAI,IAAM,IAAI,cAAc,YAAY,EAAG,KAAO,IAAI,cAAc,aAAa,EACjF,QAAQ,EAAE,KAAK,SAAU,GAAI,CAAM,OAAM,KAAK,UAAY,GAAG,IAAI,SAAU,EAAG,CAAE,MAAO,qBAAuB,EAAE,gBAAkB,IAAM,cAAgB,CAAC,EAAE,KAAK,EAAE,EAAG,CAAC,EACtK,IAAI,UAAY,MAAQ,KAAK,OAAS,CAAC,GAAG,OAAO,SAAU,EAAG,CAAE,OAAO,WAAW,EAAE,aAAc,EAAE,UAAU,CAAG,CAAC,EAC9G,SAAS,OACX,IAAI,UAAY,0BAA4B,EAAE,QAAU,UAAY,SAAS,OAAS,wCACpF,SAAS,MAAM,EAAG,CAAC,EAAE,IAAI,SAAU,EAAG,CAAE,MAAO,4CAA8C,IAAI,EAAE,OAAS,EAAE,EAAI,aAAe,IAAI,OAAO,EAAE,aAAa,CAAC,EAAI,aAAe,IAAI,EAAE,eAAiB,EAAE,EAAI,qBAAuB,CAAC,EAAE,KAAK,EAAE,EAC7O,8CAAgD,GAAG,KAAO,EAAE,QAAU,kBAExE,QAAQ,EAAE,KAAK,SAAU,GAAI,CACvB,CAAC,GAAG,QAAU,CAAC,IAAI,cAAc,YAAY,IACjD,IAAI,UAAY,0BAA4B,EAAE,QAAU,kCAAoC,GAAG,IAAI,SAAU,EAAG,CAC9G,MAAO,8BAAgC,IAAI,aAAe,EAAE,MAAM,EAAI,iFAAmF,IAAI,QAAQ,CAAC,CAAC,EAAI,cAAgB,IAAI,OAAO,EAAE,KAAK,CAAC,EAAI,yBAA2B,EAAE,iBAAmB,EAAE,MAAQ,OAAS,MAAM,EAAE,KAAK,EAAI,WAAa,MAAM,EAAE,gBAAgB,EAAI,OAAS,MAAM,EAAE,KAAK,GAAK,aAC5W,CAAC,EAAE,KAAK,EAAE,EAAI,SAChB,CAAC,CAEL,CAEA,SAAS,UAAW,CAAO,OAAc,KAAK,IAAI,QAAQ,SAAU,EAAG,CAAM,EAAE,IAAI,WAAW,EAAE,GAAG,GAAG,CAAG,CAAC,EAAG,KAAO,KAAM,CAC1H,SAAS,OAAO,IAAK,CAAE,IAAI,EAAI,IAAI,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,CAAC,EAAE,OAAQ,OAAQ,EAAyB,IAAM,IAAI,OAAS,EAAE,MAAM,CAAC,EAAI,EAAE,OAAO,IAAI,MAAM,EAAxE,EAAE,KAAK,IAAI,MAAM,CAA0D,CACzK,SAAS,UAAW,CAAE,OAAO,UAAW,IAAI,EAAG,OAAO,QAAS,MAAM,MAAM,CAAC,CAAG,CAC/E,SAAS,QAAQ,KAAM,KAAM,CAC3B,SAAS,EAAG,aAAa,KAAK,EAAG,IAAI,IAAM,CAAC,EAAG,KAAO,CAAC,EAAG,IAAM,OAAO,MAAM,EAAG,OAAS,CAAC,EAEtF,IAAI,QAAU,OAChB,IAAI,QAAQ,SAAU,GAAI,CAAE,IAAI,GAAK,KAAK,KAAK,UAAU,SAAU,EAAG,CAAE,OAAO,EAAE,KAAO,EAAI,CAAC,EAAO,GAAK,IAAW,IAAI,KAAK,CAAE,IAAK,KAAK,KAAK,EAAE,EAAG,KAAM,EAAG,CAAC,EAAG,KAAK,KAAK,OAAO,GAAI,CAAC,EAAO,MAAM,QAAQ,EAAE,EAAI,GAAG,MAAM,KAAK,EAAE,EAAO,SAAW,KAAI,OAAS,MAAM,CAAC,EACnQ,MAAM,QAAQ,KAAK,GAAG,EAAI,KAAI,KAAK,IAAM,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,CAAC,EAAE,GAAK,MAC9E,SAAS,GAEX,KAAK,QAAQ,SAAU,GAAI,CACzB,IAAI,EAAI,IAAI,EAAE,EAAG,GAAK,EAAW,KAAI,EAAI,CAAC,EAC1C,GAAI,WAAW,EAAE,EAAK,EAAE,KAAO,EAAE,MAAO,QAAQ,EAAE,KAAK,EAAO,OAAQ,EAAE,KAAO,SAAS,EAAE,KAAK,EAAG,KAAK,KAAK,EAAE,KAAK,OAC9G,CAAE,IAAI,IAAM,KAAK,EAAE,UAAU,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAI,CAAC,EAAG,GAAK,OAAO,CAAC,EAAG,EAAE,GAAK,OAAO,EAAE,EAAG,EAAE,IAAM,IAAS,KAAM,EAAE,KAAO,GAAG,IAAK,QAAQ,GAAG,GAAG,EAAO,OAAQ,EAAE,KAAO,GAAI,KAAK,KAAK,GAAG,GAAG,GAAO,CACtN,IAAI,KAAK,CAAC,EACZ,CAAC,EACD,OAAS,OAAO,OAAO,SAAU,GAAI,CAAE,OAAO,KAAK,QAAQ,EAAE,EAAI,CAAG,CAAC,EAAG,KAAO,CAAC,EAC5E,CAAC,KAAK,EAAE,QAAU,EAAE,MAAQ,KAAK,KAAK,UAAS,KAAO,IAC1D,KAAO,CAAE,IAAK,GAAI,EAClB,MAAQ,WAAW,UAAY,CAAE,SAAS,EAAG,aAAa,CAAG,EAAG,GAAI,EACpE,IAAI,EAAI,QAAQ,QAAQ,EAAG,KAAK,QAAQ,SAAU,EAAG,CAAE,EAAI,EAAE,KAAK,UAAY,CAAE,OAAO,QAAQ,CAAC,CAAG,CAAC,CAAG,CAAC,EACxG,EAAE,KAAK,YAAY,EAAG,aAAa,CACrC,CACA,SAAS,SAAU,CACjB,GAAK,KAAc,cAAa,KAAK,EAAG,IAAI,IAAM,KAAK,IAAK,KAAO,KAAM,IAAI,EAAI,QAAQ,QAAQ,EAC7F,GAAK,IAAI,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,CAAC,EAC9C,GAAG,QAAU,OAAQ,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ,SAAU,EAAG,CAAE,KAAK,KAAK,OAAO,KAAK,IAAI,EAAE,KAAM,KAAK,KAAK,MAAM,EAAG,EAAG,EAAE,GAAG,EAAG,MAAQ,MAAM,OAAO,SAAU,GAAI,CAAE,OAAO,KAAO,EAAE,IAAI,EAAI,CAAC,CAAG,CAAC,EAAG,SAAS,GACnN,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,SAAU,EAAG,CAAM,EAAE,IAAI,QAAQ,EAAE,GAAI,EAAE,GAAG,EAAO,EAAE,KAAM,EAAI,EAAE,KAAK,UAAY,CAAE,OAAO,SAAS,EAAE,IAAI,CAAG,CAAC,EAAE,KAAK,UAAY,CAAM,EAAE,MAAM,QAAQ,EAAE,KAAM,EAAK,CAAG,CAAC,EAAY,EAAE,MAAM,QAAQ,EAAE,KAAM,EAAK,CAAG,CAAC,EACnP,EAAE,KAAK,YAAY,EAAG,aAAa,EACrC,CACA,SAAS,IAAI,IAAK,CAAE,QAAQ,CAAC,GAAG,CAAC,CAAG,CACpC,SAAS,QAAQ,EAAG,CAClB,GAAI,KAAM,CAAE,EAAE,eAAe,EAAG,MAAQ,CACxC,IAAI,GAAK,EAAE,OAAO,QAAQ,aAAa,EAAG,GAAI,IAAM,CAAC,KAAM,CAAE,WAAW,GAAG,aAAa,WAAW,CAAC,EAAG,MAAQ,CAC/G,IAAI,IAAM,EAAE,OAAO,QAAQ,aAAa,EAAG,GAAI,IAAK,CAAE,IAAI,GAAK,IAAI,aAAa,WAAW,EAAG,EAAI,OAAO,QAAQ,EAAE,EAAO,EAAI,GAAI,OAAO,OAAO,EAAG,CAAC,EAAQ,OAAO,KAAK,EAAE,EAAG,aAAa,EAAG,MAAQ,CACrM,IAAI,IAAM,EAAE,OAAO,QAAQ,YAAY,EAAG,GAAI,IAAK,CAAE,OAAS,IAAI,aAAa,UAAU,EAAG,aAAa,EAAG,MAAQ,CACpH,IAAI,EAAI,EAAE,OAAO,QAAQ,UAAU,EACnC,GAAI,EAAG,CACL,IAAI,EAAI,EAAE,QAAQ,EAClB,GAAI,IAAM,QAAS,YAAY,UACtB,IAAM,OAAU,KAAO,CAAC,KAAM,KAAO,CAAC,EAAG,OAAS,CAAC,EAAG,OAAS,GAAO,aAAa,UACnF,IAAM,OAAQ,QAAQ,UACtB,IAAM,SAAU,CAAE,IAAI,EAAI,IAAM,GAAG,KAAM,GAAK,KAAM,aAAa,GAAG,EAAG,aAAa,EAAO,GAAG,EAAE,CAAG,SACnG,IAAM,KAAM,OAAO,IAAI,UACvB,IAAM,QAAW,GAAK,CAAC,EAAG,aAAa,UACvC,IAAM,SAAY,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAG,aAAa,UACvD,IAAM,OAAU,MAAM,EAAE,QAAQ,CAAC,EAAI,EAAG,KAAO,EAAE,QAAQ,EAAG,aAAa,EAAG,KAAO,KAAM,UAAU,EAAE,QAAQ,CAAC,UAC9G,IAAM,OAAU,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAG,aAAa,UACxD,IAAM,SAAU,OAAO,UACvB,IAAM,SAAU,CAAE,IAAI,IAAM,KAAK,EAAE,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,CAAC,EAAG,MAAQ,MAAQ,KAAK,MAAQ,CAAC,GAAG,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,EAAI,CAAC,EAAG,KAAO,KAAK,SAAW,IAAI,QAAU,OAAO,SAAW,KAAK,OAAQ,KAAO,KAAO,CAAC,EAAI,IAAK,OAAS,KAAO,CAAC,EAAI,KAAM,aAAa,CAAG,MACpR,IAAM,WAAa,KAAK,QAAU,OAAO,QAAe,KAAK,KAAK,SAAU,GAAI,CAAE,IAAI,EAAI,IAAI,EAAE,EAAG,OAAO,IAAM,OAAO,CAAC,GAAK,WAAW,EAAE,EAAI,CAAC,GAAK,OAAS,GAAM,aAAa,GAAU,QAAQ,KAAK,MAAM,CAAC,EAC9M,IAAM,WAAa,IAAM,WAAa,OAAS,GAAO,QAAQ,KAAK,MAAM,EAAG,IAAM,SAAS,GAC3F,IAAM,aAAe,OAAS,GAAO,aAAa,GAClD,IAAM,WAAW,QAAQ,EAClC,MACF,CACA,IAAI,EAAI,EAAE,OAAO,QAAQ,oBAAoB,EAC7C,GAAK,EACL,IAAI,KAAM,CAAE,IAAI,EAAI,EAAE,QAAQ,EAAG,EAAI,KAAK,QAAQ,CAAC,EAAO,EAAI,GAAI,KAAK,OAAO,EAAG,CAAC,EAAQ,KAAK,KAAK,CAAC,EAAG,aAAa,EAAG,MAAQ,CAChI,WAAW,EAAE,QAAQ,CAAC,EACxB,CAGA,SAAS,QAAS,CAChB,CAAC,EAAE,QAAQ,KAAK,IAAI,iBAAiB,oBAAoB,EAAG,SAAU,EAAG,CAAE,IAAI,GAAK,OAAO,QAAQ,EAAE,QAAQ,CAAC,EAAI,GAAI,EAAE,UAAU,OAAO,KAAM,EAAE,EAAG,IAAI,GAAK,EAAE,cAAc,aAAa,EAAO,IAAI,GAAG,UAAU,OAAO,KAAM,EAAE,CAAG,CAAC,EACrO,IAAI,UAAU,OAAO,OAAQ,OAAO,QAAU,EAAE,EAChD,IAAI,EAAI,IAAI,cAAc,YAAY,EAAO,IAAK,EAAE,SAAW,CAAC,OAAO,OAAQ,EAAE,UAAY,GAAG,MAAQ,OAAO,OAAS,EAAE,KAAK,OAAO,MAAM,EAAI,EAAE,MACpJ,CACA,SAAS,OAAO,IAAK,CACnB,IAAI,EAAI,IAAI,cAAc,sBAAwB,IAAM,IAAI,EAAG,GAAK,EACpE,KAAI,EAAI,EAAE,QAAQ,cAAc,EAAG,EAAI,GACvC,GAAI,EAAG,CAAE,IAAI,EAAI,EAAE,sBAAsB,EAAG,EAAI,EAAE,sBAAsB,EAAG,EAAI,EAAE,KAAO,EAAE,KAAO,EAAI,EAAE,KAAO,EAAE,KAAO,EAAI,EAAE,MAAQ,EAAE,MAAQ,EAAI,EAAE,MAAQ,EAAE,MAAQ,EAAI,EACzK,GAAK,EAAE,YAAc,EAAE,YAAa,GAAK,KAAK,IAAI,EAAG,KAAK,IAAI,GAAI,EAAE,WAAa,CAAC,CAAC,EAAO,GAAK,GAAI,GAAK,EAAY,GAAK,GAAK,KAAI,GAAK,IAAQ,KAAK,IAAI,GAAK,EAAE,UAAU,EAAI,GAAG,EAAE,SAAS,CAAE,KAAM,GAAI,SAAU,QAAS,CAAC,CAAG,CAChO,IAAI,GAAK,IAAI,cAAc,cAAc,EAAG,GAAK,GACjD,KAAI,EAAI,GAAG,sBAAsB,EAAG,EAAI,EAAE,sBAAsB,EAAG,GAAK,IAAI,cAAc,YAAY,EAAG,GAAK,IAAM,CAAC,GAAG,UAAU,SAAS,KAAK,EAAI,KAAK,IAAI,EAAE,OAAQ,GAAG,sBAAsB,EAAE,GAAG,EAAI,EAAE,OACzM,EAAI,EAAE,IAAM,EAAE,IAAM,EAAI,EAAE,IAAM,EAAE,IAAM,EAAI,EAAE,OAAS,GAAK,EAAI,EAAE,OAAS,GAAK,EAAI,EAClF,GAAK,KAAK,IAAI,EAAG,KAAK,IAAI,GAAG,aAAe,GAAG,aAAc,GAAG,UAAY,CAAC,CAAC,EAAO,KAAK,IAAI,GAAK,GAAG,SAAS,EAAI,GAAG,GAAG,SAAS,CAAE,IAAK,GAAI,SAAU,QAAS,CAAC,GACvK,CACA,SAAS,MAAMC,IAAI,EAAG,CAAOA,MAAYA,IAAG,UAAU,OAAO,CAAC,EAAQA,IAAG,YAAaA,IAAG,UAAU,IAAI,CAAC,EAAG,CAE3G,IAAI,QAAU,GAAO,MAAQ,EAC7B,SAAS,MAAM,EAAG,CAEhB,GADA,MAAM,EAAG,IAAI,EAAG,MAAM,IAAK,KAAK,EAC5B,SAAiB,SAAU,GAC/B,IAAI,GAAK,IAAI,cAAc,YAAY,EAAG,GAAK,GAAY,KAAI,GAAK,GAAG,cAAc,cAAc,EAC9F,KAAM,GAAK,SAAS,cAAc,KAAK,EAAG,GAAG,UAAY,cAAe,GAAG,aAAa,OAAQ,QAAQ,EAAG,GAAG,YAAY,EAAE,GACjI,GAAG,YAAc,EAAE,IAAU,GAAG,YAAa,GAAG,UAAU,IAAI,IAAI,EAClE,aAAa,KAAK,EAAG,MAAQ,WAAW,UAAY,CAAE,GAAG,UAAU,OAAO,IAAI,CAAG,EAAG,IAAI,GAC1F,CACA,SAAS,OAAO,EAAG,CACjB,IAAI,EAAI,EAAE,OAAO,QAAQ,oBAAoB,EAAG,GAAI,GAAC,GAAK,EAAE,OAAO,QAAQ,UAAU,GAAK,WAAW,EAAE,QAAQ,CAAC,GAAK,EAAE,UAAU,SAAS,MAAM,GAChJ,KAAI,GAAK,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAE,QAAQ,CAAG,CAAC,EAAE,CAAC,EAAO,IAAM,OAAO,EAAE,IAC9F,MAAQ,CAAE,EAAG,EAAG,EAAG,EAAE,QAAS,EAAG,EAAE,QAAS,EAAG,EAAE,QAAQ,EAAG,GAAI,EAAM,EACtE,MAAM,EAAI,WAAW,UAAW,GAAG,GACrC,CACA,SAAS,WAAY,CACnB,GAAK,MAAe,OAAM,GAAK,GAAM,IAAI,EAAI,MAAM,EAAG,EAAI,EAAE,sBAAsB,EAAG,GAAK,IAAI,sBAAsB,EAChH,EAAI,EAAE,UAAU,EAAI,EAAG,EAAE,UAAU,IAAI,aAAa,EAAG,EAAE,UAAU,OAAO,IAAI,EAAG,EAAE,MAAM,MAAQ,EAAE,MAAQ,KAAM,EAAE,MAAM,KAAQ,EAAE,KAAO,GAAG,KAAQ,KAAM,EAAE,MAAM,IAAO,EAAE,IAAM,GAAG,IAAO,KAChM,MAAM,GAAK,MAAM,EAAI,EAAE,KAAM,MAAM,GAAK,MAAM,EAAI,EAAE,IAAK,MAAM,EAAI,EAAG,IAAI,YAAY,CAAC,EAAG,EAAE,UAAU,IAAI,OAAO,EACjH,IAAI,cAAc,aAAa,EAAE,UAAU,IAAI,IAAI,EAAG,GAAI,CAAE,UAAU,SAAW,UAAU,QAAQ,EAAE,CAAG,OAAS,EAAG,CAAE,EACxH,CACA,OAAO,iBAAiB,cAAe,SAAU,EAAG,CAClD,GAAK,MACL,IAAI,CAAC,MAAM,GAAI,EAAM,KAAK,IAAI,EAAE,QAAU,MAAM,CAAC,EAAI,GAAK,KAAK,IAAI,EAAE,QAAU,MAAM,CAAC,EAAI,KAAK,aAAa,MAAM,CAAC,EAAG,MAAQ,MAAQ,MAAQ,CAC9I,IAAI,GAAK,IAAI,sBAAsB,EAAG,GAAK,EAAE,QAAU,GAAG,KAAM,GAAK,EAAE,QAAU,GAAG,IACpF,MAAM,EAAE,MAAM,KAAQ,GAAK,MAAM,GAAM,KAAM,MAAM,EAAE,MAAM,IAAO,GAAK,MAAM,GAAM,KACnF,IAAI,IAAM,KAAK,MAAM,GAAK,GAAG,MAAQ,EAAG,GAAK,GAAG,EAAI,GAAI,IAAI,cAAc,aAAa,EAAE,UAAU,OAAO,MAAO,GAAG,EAAG,MAAM,IAAM,IACrI,CAAC,EACD,SAAS,UAAW,CAClB,GAAK,MACL,GADoB,aAAa,MAAM,CAAC,EACpC,MAAM,GAAI,CACZ,KAAO,GAAM,WAAW,UAAY,CAAE,KAAO,EAAO,EAAG,EAAE,EAAG,IAAI,EAAI,MACpE,GAD2E,MAAQ,KAC/E,EAAE,IAAO,EAAE,EAAE,OAAO,EAAG,IAAI,EAAE,CAAC,MAAU,CAAE,EAAE,EAAE,OAAO,EAAG,EAAE,EAAE,UAAU,OAAO,OAAO,EAAG,IAAI,EAAI,IAAI,cAAc,aAAa,EAAG,EAAE,UAAU,OAAO,KAAM,KAAK,CAAG,CACxK,MAAO,MAAQ,IACjB,CACA,OAAO,iBAAiB,YAAa,QAAQ,EAAG,OAAO,iBAAiB,gBAAiB,QAAQ,EACjG,SAAS,iBAAiB,YAAa,SAAU,EAAG,CAAM,OAAS,MAAM,IAAI,EAAE,eAAe,CAAG,EAAG,CAAE,QAAS,EAAM,CAAC,EAGtH,IAAI,GAAK,KAAM,IAAM,KAAM,OAAS,KAAM,KAAO,GAAI,OAAS,KAAM,OAAS,GAAO,KAAO,CAAE,KAAM,CAAC,CAAE,EAAG,MAAQ,CAAC,EAK9G,MAAQ,KAAM,IAAM,KACxB,GAAI,CACF,IAAI,GAAK,KAAK,MAAM,eAAe,QAAQ,WAAW,GAAK,MAAM,EAC7D,IAAM,GAAG,KAAY,KAAK,IAAI,EAAI,GAAG,EAAI,MAAQ,MAAQ,GAAI,QAAQ,GAAU,eAAe,WAAW,WAAW,EAC/G,IAAM,gBAAgB,KAAK,SAAS,MAAM,GAAK,KAAK,IAAI,EAAI,GAAG,EAAI,OAAM,MAAQ,GAC5F,OAAS,EAAG,CAAE,MAAQ,IAAM,CAC5B,SAAS,SAAU,CAAE,GAAI,GAAC,OAAS,CAAC,MAAM,MAAc,OAAM,EAAI,KAAK,IAAI,EAAG,GAAI,CAAE,eAAe,QAAQ,YAAa,KAAK,UAAU,KAAK,CAAC,CAAG,OAAS,EAAG,CAAE,EAAE,CAChK,SAAS,SAAU,CAAE,GAAI,GAAC,OAAS,CAAC,MAAM,MAAc,OAAQ,KAAM,GAAI,CAAE,eAAe,WAAW,WAAW,CAAG,OAAS,EAAG,CAAE,EAAE,CAEhI,OAAS,MAAM,MAAM,SAAS,EAAE,KAAK,SAAU,EAAG,CAAM,KAAO,OAAM,IAAM,EAAE,WAAY,CAAC,EAC9F,SAAS,iBAAiB,UAAW,SAAU,EAAG,CAAE,IAAI,EAAI,EAAE,QAAU,EAAE,OAAO,WAAgB,GAAK,OAAkB,KAAO,MAAQ,EAAI,KAAK,QAAQ,EAAG,IAAM,EAAG,CAAC,EACrK,SAAS,KAAK,EAAG,CAAE,OAAO,KAAK,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,CAAG,CAC5H,IAAI,KAAO,EAAG,KAAO,CAAC,EAAG,MAAQ,CAAC,EAAG,IAAM,CAAC,EAC5C,SAAS,cAAc,MAAO,KAAM,CAElC,GAAI,OAAS,MAAM,OAAQ,CAAE,IAAI,GAAK,MAAM,OAAQ,MAAQ,KAAM,KAAO,KAAK,IAAI,EAAG,GAAI,CAAE,GAAG,MAAO,IAAI,CAAG,OAAS,EAAG,CAAE,CAAE,OAAO,QAAQ,QAAQ,CAAG,CAEtJ,GAAI,KAAK,IAAI,EAAI,KAAO,IAAM,OAAO,QAAQ,QAAQ,EACrD,IAAI,EAAI,OAAS,CAAE,KAAM,CAAC,CAAE,EAAG,MAAQ,KAAM,GAAI,CAAE,eAAe,WAAW,WAAW,CAAG,OAAS,EAAG,CAAE,CACzG,IAAI,EAAI,QAAQ,QAAQ,IAAI,EAC5B,GAAI,MAAO,CAAE,IAAI,IAAM,MAAM,KAAK,EAAO,EAAE,KAAO,EAAE,MAAQ,KAAO,IAAI,EAAE,GAAG,IAAK,OAAO,EAAE,GAAG,EAAG,WAAW,EAAE,GAAG,GAAK,EAAI,IAAI,GAAG,EAAI,QAAQ,QAAQ,GAAG,EAAI,KAAK,OAAO,OAAO,CAAC,EAAG,MAAO,CAAE,IAAK,GAAI,CAAC,EAAG,IAAI,CAAG,CAC/M,OAAO,EAAE,KAAK,SAAUC,KAAK,CAE3B,IAAI,IAAM,EAAE,KAAO,EAAE,KAAM,GAAK,SAAU,EAAG,CAAE,OAAO,GAAK,IAAM,KAAOA,KAAMA,KAAM,CAAG,EAAG,MAAQ,KAC9F,EAAE,QAAS,MAAQ,CAAC,EAAG,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,SAAUC,IAAI,CAAE,MAAMA,GAAE,EAAI,GAAG,EAAE,MAAMA,GAAE,CAAC,CAAG,CAAC,GACtG,IAAI,IAAM,CAAE,KAAM,EAAE,KAAM,MAAO,MAAO,MAAO,EAAE,MAAQ,CAAC,GAAG,IAAI,EAAE,CAAE,EAErE,GAAI,EAAE,MAAQD,KAAK,CAAE,IAAI,GAAK,WAAW,MAAM,aAAc,MAAM,OAAS,CAAC,CAAC,GAAK,EAAE,KAAM,MAAQ,EAAE,OAAS,CAAC,GAAG,EAAE,EAAG,IAAI,MAAQ,OAAO,OAAO,CAAC,EAAG,OAAS,CAAC,CAAC,EAAG,IAAI,MAAM,EAAE,EAAIA,KAAK,IAAI,QAAU,MAAQ,OAASA,KAAM,CAAE,KAAM,GAAI,IAAK,IAAK,EAAI,IAAM,CAC7P,GAAI,EAAE,OAAS,OAAQ,CAAE,QAAQ,IAAK,EAAE,MAAQA,KAAM,CAAE,KAAM,EAAE,KAAM,IAAKA,IAAI,EAAI,IAAI,EAAG,MAAQ,CAClG,IAAI,MAAQ,EAAE,MAAQ,CAAC,GAAG,IAAI,SAAU,EAAG,CAAE,OAAO,IAAM,EAAE,IAAMA,KAAM,CAAG,CAAC,EAAE,OAAO,OAAO,EAAOA,MAAO,KAAK,QAAQA,IAAG,EAAI,GAAG,KAAK,KAAKA,IAAG,EAC9I,IAAI,EAAI,KAAK,EAAG,MAAQ,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,KAAK,QAAQ,EAAE,GAAG,EAAI,EAAI,CAAC,EAAG,OAAS,KAAK,MAAM,EACzG,YAAY,MAAM,IAAI,KAAK,EAAG,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,KAAK,QAAQ,EAAE,GAAG,EAAI,CAAG,CAAC,EAAE,IAAI,KAAK,EAAG,GAAI,GAAG,CAC9G,CAAC,CACH,CACA,SAAS,MAAM,EAAG,CAAE,IAAI,EAAI,EAAE,OAAS,SAAS,EAAE,KAAK,EAAG,OAAO,EAAI,MAAM,CAAC,EAAI,MAAM,CAAC,CAAG,CAC1F,SAAS,MAAM,EAAG,CAChB,MAAO,CAAE,GAAI,EAAE,IAAK,cAAe,EAAE,MAAO,OAAQ,EAAE,OAAQ,aAAc,EAAE,aAAc,WAAY,EAAE,WAAY,cAAe,EAAE,cACrI,YAAa,EAAE,MAAO,OAAQ,OAAO,CAAC,EAAG,WAAY,OAAO,OAAO,CAAC,EAAG,EAAE,KAAK,CAAE,CACpF,CACA,SAAS,MAAM,EAAG,CAAE,MAAO,CAAE,GAAI,EAAE,IAAK,cAAe,EAAE,cAAe,OAAQ,EAAE,OAAQ,aAAc,EAAE,aAAc,WAAY,EAAE,WAAY,cAAe,EAAE,cAAe,YAAa,EAAE,YAAa,OAAQ,GAAM,WAAY,OAAO,OAAO,CAAC,EAAG,EAAE,YAAc,CAAC,CAAC,CAAE,CAAG,CACjR,SAAS,SAAS,IAAK,CACrB,OAAO,QAAQ,IAAI,IAAI,IAAI,SAAU,GAAI,CACvC,OAAK,GAAG,GACD,OAAO,GAAG,EAAE,EAAE,KAAK,SAAU,EAAG,CAAE,OAAI,IAAG,GAAG,WAAW,WAAW,GAAG,aAAc,GAAG,UAAU,IAAM,MAAQ,iBAAmB,SAAS,EAAI,GAAU,EAAI,CAAC,EADjJ,EAErB,CAAC,CAAC,CACJ,CACA,SAAS,YAAY,MAAO,KAAM,KAAM,OAAQ,CAE9C,IAAI,GAAK,SAAS,cAAc,gBAAgB,EAAG,OAAS,OAAS,KAAO,IAAM,GAAG,aAAa,aAAa,IAAM,SAAmB,OAAS,OAAlB,OAAoC,KACnK,OAAS,QAAU,KAAM,KAAO,MAAQ,GAAI,IAAM,OAAO,OAAO,CAAC,EAAG,EAAE,EAAG,IAAM,CAAC,EAAG,IAAM,CAAC,EAAQ,OAAO,KAAK,EAAE,EAAE,QAAQ,UAAU,OAAO,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,IAAI,EAAE,IAAI,EAAI,EAAE,GAAK,CAAC,EAAG,KAAO,CAAE,KAAM,MAAM,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,EAAI,CAAC,EAAE,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,EAAI,CAAC,CAAE,EAAG,YAAY,EAAI,EAAO,OAAO,QAAU,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,EAChX,IAAM,QAAQ,IAAI,CAAC,SAAS,EAAG,KAAK,MAAM,OAAO,MAAQ,CAAC,CAAC,EAAE,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,UAAY,CACtH,OAAO,QAAQ,IAAI,CAAC,SAAS,MAAM,IAAI,QAAQ,CAAC,EAAG,UAAU,MAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAG,CAAC,EACzF,KACH,GAAK,GAAG,qCAAuC,IAAI,EAAE,OAAO,EAAI,sDAAsD,EACtH,SAAS,KAAK,YAAY,EAAE,GAG9B,MAAW,GAAG,eAAe,GAAG,cAAc,EAAE,QAAQ,SAAU,EAAG,CAAE,EAAE,OAAO,CAAG,CAAC,EAAG,GAAG,MAAM,gBAAkB,GAClH,GAAG,OAAS,GAAO,SAAS,gBAAgB,UAAU,IAAI,aAAc,UAAU,EAAG,UAAU,EAC/F,IAAI,GAAK,IAAM,oBAAsB,GAAK,WAAa,IAAK,MAAM,EAAE,EAAG,QAAQ,GAAI,UAAY,CAAE,YAAY,MAAO,KAAM,KAAM,MAAM,CAAG,CAAC,EAE1I,WAAW,UAAY,CAAE,IAAI,IAAM,MAAM,OAAO,MAAQ,CAAC,CAAC,EAAG,KAAO,CAAC,EAC/D,IAAI,KAAK,KAAK,GAAG,KAAK,EAAE,KAAK,UAAY,CAAM,OAAO,MAAQ,OAAO,KAAK,SAAS,OAAO,KAAK,QAAQ,CAAG,CAAC,EAAE,MAAM,UAAY,CAAE,CAAC,EACtI,IAAI,QAAQ,SAAU,EAAG,CAAE,GAAI,CAAE,IAAI,GAAK,KAAK,OAAO,EAAE,YAAc,CAAC,GAAG,SAAW,MAAM,EAAO,IAAM,GAAG,IAAG,KAAK,GAAG,CAAC,EAAI,EAAG,OAAS,EAAG,CAAE,CAAE,CAAC,EAC3I,OAAO,KAAK,IAAI,EAAE,QAAQ,SAAS,EAAE,KAAK,UAAY,CAAE,OAAO,KAAK,IAAI,EAAE,QAAQ,SAAU,EAAG,CAAM,OAAO,UAAY,OAAO,SAAS,SAAS,OAAO,SAAS,QAAQ,CAAC,CAAG,CAAC,CAAG,CAAC,EAAE,MAAM,UAAY,CAAE,CAAC,CAC/M,EAAG,IAAI,EACP,sBAAsB,UAAY,CAAE,GAAG,UAAU,IAAI,MAAM,CAAG,CAAC,EAAG,QAAQ,IAAI,EAE9E,WAAW,UAAY,CACrB,IAAI,GAAK,CAAC,EAAG,MAAM,OAAO,MAAQ,CAAC,CAAC,EAAE,QAAQ,SAAU,GAAI,CAAE,GAAI,CAAE,IAAI,EAAI,KAAK,OAAO,GAAG,YAAc,CAAC,GAAG,SAAW,MAAM,EAAO,GAAK,EAAE,IAAG,GAAG,EAAE,CAAC,EAAI,EAAG,OAAS,EAAG,CAAE,CAAE,CAAC,EACzK,OAAO,KAAK,EAAE,EAAE,QAAQ,SAAS,EAAE,KAAK,UAAY,CAAE,OAAO,KAAK,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,SAAS,QAAQ,CAAC,CAAG,CAAC,CAAG,CAAC,EAAE,MAAM,UAAY,CAAE,CAAC,CAC3J,EAAG,IAAI,CACT,CAEA,IAAI,GAAK,KACT,SAAS,WAAY,CACnB,IAAI,EAAI,SAAS,cAAc,UAAU,EAAG,GAAI,MAAM,CAAC,GAAK,CAAC,OAAO,kBACpE,KAAI,IAAM,EAAE,UAAU,SAAS,MAAM,EACrC,GAAK,IAAI,iBAAiB,UAAY,CACpC,IAAI,IAAM,EAAE,UAAU,SAAS,MAAM,EAAO,KAAO,CAAC,KAAO,IAAM,CAAC,GAAG,QAAU,GAAG,UAAU,SAAS,MAAM,GAAG,SAAS,EAAE,KAAK,UAAY,CACxI,IAAI,IAAM,MAAM,EAAG,GAAI,IAAK,IAAI,IAAM,CAAC,EAAG,KAAK,EAAE,QAAQ,SAAU,EAAG,CAAE,IAAI,EAAI,OAAO,CAAC,EAAO,IAAG,IAAI,EAAE,GAAG,EAAI,OAAO,CAAC,EAAG,CAAC,EAC3H,IAAI,YAAY,OAAO,OAAO,CAAE,UAAW,SAAU,KAAM,OAAO,KAAK,GAAG,EAAG,IAAK,IAAK,KAAM,KAAK,MAAM,IAAI,SAAUE,GAAG,CAAE,OAAOA,GAAE,GAAK,CAAC,CAAE,EAAG,SAAS,CAAC,EAAG,GAAG,CACjK,CAAC,EAAG,IAAM,GACZ,CAAC,EAAG,GAAG,QAAQ,EAAG,CAAE,WAAY,GAAM,gBAAiB,CAAC,OAAO,CAAE,CAAC,EACpE,CAIA,SAAS,QAAQ,IAAK,CACpB,IAAI,KAAO,SAAS,KAAK,CAAC,EAAG,GAAK,CAAC,EACnC,IAAI,QAAQ,SAAU,EAAG,CACvB,GAAI,GAAC,GAAK,OAAO,EAAE,GAAM,UAAY,OAAO,EAAE,KAAQ,UAAY,EAAE,IAAI,QAAQ,gBAAgB,IAAM,GAAK,EAAE,EAAE,EAAI,GAAK,EAAE,EAAI,IAC9H,KAAI,GAAK,KAAK,EAAE,CAAC,EAAG,GAAK,GAEE,SAAvB,EAAI,GAAG,IAAK,GAAK,KAAa,IAAI,CAAC,GAAK,GAAK,MAAM,CAAC,GAAK,GAAI,EAAI,IAAI,CAAC,EAC1E,IAAI,OAAS,GAAG,GAAG,IAAI,IAAM,GAAG,KAAO,IAAI,GAAG,IAAI,IAAM,GAAG,IAE3D,GAAI,CAAC,QAAU,IAAM,GAAG,IAAK,CAAM,CAAC,OAAO,KAAK,GAAG,EAAE,QAAU,IAAI,GAAG,IAAI,IAAM,GAAG,KAAK,GAAG,KAAK,CAAE,EAAG,EAAG,GAAI,GAAI,IAAK,EAAK,CAAC,EAAG,MAAQ,CACtI,GAAG,KAAK,CAAE,EAAG,EAAG,GAAI,GAAI,IAAK,GAAM,GAAG,aAAa,KAAO,IAAI,gBAAgB,GAAG,CAAC,EAAI,UAAU,GAAG,EAAE,GAAK,GAAM,EAAG,CAAC,GACtH,CAAC,EACD,IAAI,MAAQ,KAAK,EAAO,QAAO,GAAK,GAAG,OAAO,SAAU,EAAG,CAAE,MAAO,CAAC,EAAE,GAAK,CAAC,GAC7E,IAAI,GAAK,MAAM,EAAO,IAAM,GAAG,QAAU,CAAC,OAAO,GAAG,YAAY,CAAE,UAAW,UAAW,GAAI,GAAG,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,EAAE,CAAG,CAAC,CAAE,EAAG,GAAG,EACzI,KAAO,CAAC,EAAQ,OAAO,GAAG,QAAQ,SAAU,EAAG,CAAO,EAAE,MAAK,KAAK,EAAE,GAAG,GAAG,EAAI,EAAE,IAAK,CAAC,EACtF,IAAI,GAAK,SAAS,gBAA8D,GAA7C,GAAG,UAAU,IAAI,WAAW,EAAG,WAAW,EAAO,CAAC,IAAK,CAAE,aAAa,EAAI,EAAG,MAAQ,CAAE,IAAI,UAAU,IAAI,WAAW,EACvJ,sBAAsB,UAAY,CAAE,sBAAsB,UAAY,CACpE,GAAG,UAAU,OAAO,WAAW,EAC/B,IAAI,GAAK,GAAG,cAAc,QAAQ,EAAE,sBAAsB,EAAG,GAAK,IAAI,cAAc,uBAAuB,EAAG,GAAK,SAAS,GAAG,OAAO,SAAU,EAAG,CAAE,MAAO,CAAC,EAAE,GAAK,CAAC,EAAG,KAAK,EAC7K,GAAG,QAAQ,SAAU,EAAG,CACtB,GAAI,EAAE,IAAK,CAAE,IAAI,GAAK,KAAO,GAAG,cAAc,MAAM,GAAK,IAAK,GAAK,IAAM,GAAG,sBAAsB,EAAG,GAAI,CAAC,GAAI,OAC5G,OAAO,EAAE,EAAG,GAAI,CAAE,KAAM,GAAG,KAAO,GAAG,MAAQ,EAAI,GAAI,IAAK,GAAG,IAAM,GAAG,OAAS,EAAI,GAAI,MAAO,GAAI,OAAQ,EAAG,EAAG,KAAK,EAAE,GAAG,GAAG,GAAK,EAAE,GAAG,OAAS,EAAE,EAAE,KAAK,SAAU,EAAG,CAAM,GAAG,EAAE,OAAO,CAAG,CAAC,EAAG,MAAQ,CACzM,IAAI,EAAI,IAAI,cAAc,yBAA2B,EAAE,GAAG,IAAM,+BAAiC,EAAE,GAAG,IAAM,IAAI,EAAG,GAAK,GAAK,EAAE,cAAc,KAAK,EAAG,GAAI,CAAC,GAAI,CAAE,OAAO,KAAK,EAAE,GAAG,GAAG,EAAG,MAAQ,CAC/L,IAAI,EAAI,EAAE,QAAQ,cAAc,EAAG,GAAK,EAAE,sBAAsB,EAAG,GAAK,EAAE,sBAAsB,EAAG,GAAK,EAAE,WACxG,GAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAE,YAAc,EAAE,YAAa,GAAK,GAAG,KAAO,GAAG,MAAQ,EAAI,GAAG,KAAO,GAAG,MAAQ,CAAC,CAAC,EAAGC,GAAI,GAAG,sBAAsB,EAChJ,GAAI,MAAO,CAAE,EAAE,WAAa,GAAI,MAAQ,CACxC,SAAS,EAAE,GAAG,KAAM,GAAI,GAAI,GAAG,EAC/B,OAAO,EAAE,EAAG,GAAI,CAAE,KAAMA,GAAE,MAAQ,GAAK,IAAK,IAAKA,GAAE,IAAM,GAAI,MAAOA,GAAE,MAAO,OAAQA,GAAE,MAAO,EAAG,KAAK,EAAE,GAAG,GAAG,GAAK,EAAE,GAAG,OAAS,EAAE,EAAE,KAAK,SAAU,EAAG,CACrJ,OAAO,KAAK,EAAE,GAAG,GAAG,EAAO,EAAE,KAAO,EAAE,IAAI,QAAQ,OAAO,IAAM,GAAG,IAAI,gBAAgB,EAAE,GAAG,EAAG,aAAa,EAAG,OAAO,EAAG,EAAE,GAAG,GAAG,EAChI,IAAI,GAAK,IAAI,cAAc,yBAA2B,EAAE,GAAG,IAAM,IAAI,EAAG,GAAK,IAAI,cAAc,sBAAwB,EAAE,GAAG,KAAO,eAAe,EAC9I,IAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAE,UAAW,aAAc,EAAG,CAAE,UAAW,MAAO,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,UAAW,CAAC,EACzH,IAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAE,UAAW,kBAAmB,QAAS,CAAE,EAAG,CAAE,UAAW,OAAQ,QAAS,CAAE,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,UAAW,CAAC,CAC3J,CAAC,CACH,CAAC,EACD,IAAI,EAAI,IAAM,GAAG,sBAAsB,EAAG,EAAI,OAAO,WAAY,EAAI,OAAO,YAC5E,GAAG,MAAM,gBAAkB,MAC3B,IAAI,GAAK,OAAS,GAAG,QAAU,GAAG,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAAE,SAAU,IAAK,KAAM,UAAW,CAAC,EAAI,GAAK,EAAE,OAAS,GAAG,QAAU,GAAG,QAAQ,CAAC,CAAE,UAAW,OAAQ,aAAc,MAAO,QAAS,CAAE,EAAG,CAAE,OAAQ,GAAI,QAAS,CAAE,EAC3O,CAAE,UAAW,aAAe,EAAE,KAAO,MAAQ,EAAE,IAAM,aAAe,EAAE,MAAQ,EAAI,IAAM,EAAE,OAAS,EAAI,IAAK,aAAc,OAAQ,QAAS,CAAE,CAAC,EAC9I,CAAE,SAAU,IAAK,OAAQ,0BAA2B,KAAM,UAAW,CAAC,EAAI,KAAM,GAAK,GAAK,GAAG,SAAW,QAAQ,QAAQ,EAEtH,IAAM,IAAK,MAAQ,GACvB,GAAG,MAAM,UAAY,CAAE,CAAC,EAAE,KAAK,GAAG,EAAG,WAAW,IAAK,GAAI,EACzD,SAAS,KAAM,CACb,GAAI,SAAe,MAAQ,GAAM,IAAI,UAAU,OAAO,WAAW,EAE7D,MAAQ,KACZ,SAAQ,EAAG,GAAG,UAAU,OAAO,MAAM,EAAG,GAAG,UAAU,OAAO,UAAU,EAAG,GAAG,OAAS,GACrF,GAAG,cAAc,EAAE,QAAQ,SAAU,EAAG,CAAE,EAAE,OAAO,CAAG,CAAC,EAAG,GAAG,MAAM,gBAAkB,GAAI,MAAM,IAAI,EAAG,WAAW,WAAY,GAAG,EAAG,WAAW,WAAY,GAAG,EAC7J,IAAI,GAAK,IAAI,cAAc,iBAAiB,EACxC,IAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAE,UAAW,YAAa,QAAS,CAAE,EAAG,CAAE,OAAQ,GAAI,UAAW,cAAe,QAAS,CAAE,EAAG,CAAE,UAAW,MAAO,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,UAAW,CAAC,EAC/L,CACF,CAAC,CAAG,CAAC,CACP,CAEA,SAAS,OAAO,EAAG,IAAK,CACtB,GAAK,EAAW,KAAI,GAAK,KAAK,IAAI,GACjC,SAAS,KAAM,CAAE,IAAI,GAAK,KAAO,IAAI,cAAc,yBAA2B,IAAM,YAAY,EAC/F,GAAI,CAAC,IAAO,GAAG,aAAa,KAAK,GAAK,GAAG,UAAY,GAAG,cAAiB,KAAK,IAAI,EAAI,GAAK,IAAM,CAC/F,IAAI,EAAI,KAAO,IAAI,cAAc,uBAAuB,EAAO,GAAK,KAAK,IAAI,EAAI,GAAK,MAAK,EAAE,UAAY,OAAO,GAC5G,EAAE,SAAW,KAAK,IAAI,EAAI,GAAK,IAAK,EAAE,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAAE,SAAU,GAAI,CAAC,EAAE,SAAS,KAAK,UAAY,CAAE,EAAE,OAAO,CAAG,EAAG,UAAY,CAAE,EAAE,OAAO,CAAG,CAAC,EAAQ,EAAE,OAAO,EAAG,MAAQ,CAC3M,WAAW,IAAK,GAAG,CAAG,GAAG,EAC7B,CAGA,SAAS,SAAS,GAAI,MAAO,CAC3B,IAAI,GAAK,IAAI,cAAc,cAAc,EAAG,GAAK,IAAI,cAAc,YAAY,EAAG,GAAI,CAAC,IAAM,CAAC,GAAG,OAAQ,MAAO,GAChH,IAAI,GAAK,GAAG,sBAAsB,EAAG,KAAO,GAAK,GAAG,sBAAsB,EAAE,IAAM,GAAG,QAAU,GAAI,IAAM,GAAG,IAAM,EAAG,GAAK,IAAU,GAAK,KAEzI,GADA,GAAG,QAAQ,SAAU,EAAG,CAAE,IAAI,EAAI,IAAI,cAAc,yBAA2B,EAAE,GAAG,IAAM,+BAAiC,EAAE,GAAG,IAAM,IAAI,EAAG,GAAK,EAAW,KAAI,EAAI,EAAE,sBAAsB,EAAG,GAAK,KAAK,IAAI,GAAI,EAAE,GAAG,EAAG,GAAK,KAAK,IAAI,GAAI,EAAE,MAAM,EAAG,CAAC,EACpP,KAAO,KAAW,MAAO,GAC7B,IAAI,EAAI,GAAK,IAAM,KAAK,IAAI,EAAG,KAAK,IAAI,GAAK,IAAK,GAAK,GAAG,CAAC,EAAI,GAAK,IAAM,GAAK,IAAM,EAAG,GAAK,GAAG,UACxB,GAAxE,EAAI,KAAK,IAAI,CAAC,GAAI,KAAK,IAAI,GAAG,aAAe,GAAG,aAAe,GAAI,CAAC,CAAC,EAAO,KAAK,IAAI,CAAC,EAAI,EAAG,MAAO,GACpG,GAAI,MAAS,UAAG,UAAY,GAAK,EAAU,EAC3C,IAAI,GAAK,YAAY,IAAI,EACzB,OAAC,SAAS,GAAI,CAAE,IAAI,EAAI,KAAK,IAAI,GAAI,YAAY,IAAI,EAAI,IAAM,GAAG,EAAG,EAAI,EAAI,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,KAAK,IAAI,GAAK,EAAI,EAAG,CAAC,EAAI,EAAG,EAAI,KAAO,IAAI,cAAc,cAAc,EACxK,IAAG,EAAE,UAAY,GAAK,EAAI,GAAO,EAAI,GAAG,sBAAsB,CAAC,CAAG,GAAG,EACpE,CACT,CAEA,SAAS,SAAS,EAAG,GAAI,GAAI,GAAI,CAC/B,GAAI,OAAK,IAAI,GAAK,EAAE,EAAI,GAAW,KAAI,GAAK,YAAY,IAAI,GAC3D,SAAS,GAAI,CAAE,IAAI,EAAI,KAAK,IAAI,GAAI,YAAY,IAAI,EAAI,IAAM,EAAE,EAAG,EAAI,EAAI,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,KAAK,IAAI,GAAK,EAAI,EAAG,CAAC,EAAI,EAAG,GAAK,KAAO,IAAI,cAAc,sBAAwB,EAAI,IAAI,EAAG,EAAI,IAAM,GAAG,mBAC1M,IAAG,EAAE,WAAa,IAAM,GAAK,IAAM,GAAO,EAAI,GAAG,sBAAsB,CAAC,CAAG,GAAG,EACtF,CAEA,SAAS,OAAO,EAAG,GAAI,EAAG,EAAG,CAC3B,IAAI,EAAI,SAAS,cAAc,KAAK,EAEpC,GAFuC,EAAE,UAAY,YAAa,EAAE,MAAM,MAAQ,EAAE,MAAQ,KAAM,EAAE,MAAM,OAAS,EAAE,OAAS,KAC9H,EAAE,UAAY,oBAAsB,EAAE,IAAM,2BAA6B,EAAI,SAAW,IAAI,CAAC,EAAI,IAAM,IAAM,IAAK,SAAS,KAAK,YAAY,CAAC,EACzI,CAAC,EAAE,QAAS,OAAO,QAAQ,QAAQ,CAAC,EAExC,IAAI,GAAK,GAAG,KAAO,EAAE,GAAK,EAAE,EAAI,EAAG,GAAK,GAAG,IAAM,EAAE,GAAK,EAAE,EAAI,EAAG,IAAM,EAAE,EAAI,EAAE,OAAS,EAAI,IAAK,IAAM,EAAE,EAAI,EAAE,QAAU,EAAI,IAC3H,IAAM,GAAG,KAAO,EAAE,GAAK,EAAE,KAAO,EAAE,MAAQ,GAAK,EAAI,GAAK,EAAG,GAAK,KAAK,IAAI,GAAI,EAAE,GAAG,EAAI,GAAI,EAAI,CAAE,SAAU,IAAK,OAAQ,4BAA6B,KAAM,UAAW,EACrK,EAAI,SAAU,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,MAAO,CAAE,UAAW,aAAe,EAAI,MAAQ,EAAI,cAAgB,EAAI,OAAQ,MAAO,EAAI,KAAM,OAAQ,EAAI,IAAK,CAAG,EACnJ,GAAK,EAAE,GAAI,GAAK,GAAI,EAAE,EAAI,KAAM,EAAE,EAAI,KAAM,EAAE,CAAC,EAAG,GAAG,OAAS,GAAI,IAAI,GAAK,EAAE,GAAI,GAAI,GAAI,GAAI,CAAC,EAAG,GAAG,OAAS,IAC/G,IAAI,EAAI,EAAE,QAAQ,CAAC,EAAE,GAAI,GAAI,EAAE,EAAG,EAAE,EAAG,EAAE,CAAC,EAAG,GAAI,GAAI,EAAE,EAAE,KAAM,EAAE,IAAK,EAAE,MAAO,EAAE,OAAQ,CAAC,CAAC,EAAG,CAAC,EAE3F,GAAK,EAAE,WAAY,GAAK,EAAE,UAC9B,OAAI,GAAG,UAAY,GAAG,cAAgB,GAAG,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,OAAQ,GAAI,QAAS,CAAE,EAAG,CAAE,OAAQ,IAAK,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAAC,EAAG,GAAG,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,OAAQ,GAAI,QAAS,CAAE,EAAG,CAAE,OAAQ,IAAK,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAAC,GAClP,GAAG,OAAS,UAAY,CAAE,IAAI,EAAI,CAAE,SAAU,IAAK,KAAM,UAAW,EAAG,GAAG,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAAC,EAAG,GAAG,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAAC,CAAG,EACvK,IAAI,QAAQ,SAAU,GAAI,CAAE,EAAE,SAAS,KAAK,UAAY,CAAE,GAAG,CAAC,CAAG,EAAG,UAAY,CAAE,GAAG,CAAC,CAAG,CAAC,EAAG,WAAW,UAAY,CAAE,GAAG,CAAC,CAAG,EAAG,IAAI,CAAG,CAAC,CACjJ,CAGA,SAAS,OAAQ,CACf,IAAI,EAAI,MAAM,EACd,GADiB,aAAa,GAAG,EAAG,IAAM,KACtC,CAAC,EAAG,CAAE,aAAa,EAAI,EAAG,SAAS,EAAG,MAAQ,CAClD,IAAM,WAAW,UAAY,CAAE,IAAM,KAAM,aAAa,EAAI,EAAG,SAAS,CAAG,EAAG,GAAG,EAAG,EAAE,YAAY,CAAE,UAAW,QAAS,EAAG,GAAG,CAChI,CACA,SAAS,UAAW,CAAE,IAAI,EAAI,SAAW,OAAQ,WAAW,UAAY,CAAM,EAAS,OAAO,SAAc,OAAO,OAAO,SAAS,OAAO,OAAO,QAAQ,EAAO,OAAO,OAAO,MAAM,OAAO,OAAO,KAAK,GAAY,WAAW,CAAG,EAAG,EAAE,CAAG,CAWzO,SAAS,MAAM,EAAG,CAChB,GAAK,GAAY,KAAI,IAAM,GAAG,cAAc,QAAQ,EACpD,GAAI,CAAC,EAAG,CAAE,IAAI,EAAI,KAAO,IAAI,cAAe,GAAI,EAAG,CAAE,IAAI,QAAQ,MAAQ,IAAK,GAAI,CAAE,EAAE,YAAY,CAAE,UAAW,OAAQ,EAAG,GAAG,CAAG,OAAS,EAAG,CAAC,CAAE,CAAE,MAAQ,CACrJ,KAAO,CAAC,IAAI,QAAQ,OAAS,IAAI,aAAa,KAAK,IAAK,IAAI,IAAM,eACtE,IAAI,EAAI,SAAS,cAAc,QAAQ,EAAG,EAAE,MAAQ,EAAE,QAAS,EAAE,aAAa,QAAS,4BAA4B,EAAG,EAAE,IAAM,EAC9H,WAAW,UAAY,CAAM,KAAO,IAAI,YAAY,IAAI,OAAO,CAAG,EAAG,KAAO,CAAC,IAAI,QAAQ,MAAQ,IAAM,CAAC,EACxG,GAAG,YAAY,CAAC,EAClB,CACA,SAAS,OAAQ,CAAE,IAAI,GAAK,IAAM,GAAG,iBAAiB,QAAQ,EAAG,EAAI,IAAM,GAAG,GAAG,OAAS,CAAC,EAAG,OAAO,GAAK,EAAE,eAAiB,IAAM,CACnI,SAAS,SAAU,CAAE,GAAI,CAAE,IAAI,EAAI,IAAM,MAAM,EAAO,GAAG,EAAE,YAAY,CAAE,UAAW,OAAQ,EAAG,GAAG,CAAG,OAAS,EAAG,CAAC,CAAE,CAIpH,SAAS,SAAS,EAAG,CAAE,GAAI,CAAE,IAAI,EAAI,IAAI,IAAI,CAAC,EAAG,MAAK,SAAS,KAAK,EAAE,QAAQ,GAAa,EAAE,SAAW,EAAE,SAAS,QAAQ,SAAU,MAAM,EAAG,EAAE,aAAa,IAAI,KAAM,MAAM,EAAG,EAAE,aAAa,IAAI,IAAK,KAAK,EAAU,EAAE,SAAS,GAA1I,CAA6I,OAAS,EAAG,CAAE,OAAO,CAAG,CAAE,CAC/P,SAAS,YAAa,CAAE,CAAC,EAAE,QAAQ,KAAK,SAAS,iBAAiB,gCAAgC,EAAG,SAAU,GAAI,CAAE,IAAI,EAAI,GAAG,UAAU,EAAI,EAAO,GAAG,YAAY,GAAG,WAAW,aAAa,EAAG,EAAE,CAAG,CAAC,CAAG,CAI3M,SAAS,QAAQ,EAAGC,OAAO,CACzB,IAAI,IAAM,IAAK,EAAI,EAAG,KAAO,GAAO,aAAa,GAAG,GACnD,SAAS,MAAO,CAAE,IAAM,WAAW,UAAY,CAC9C,GAAI,QAAQ,KAAO,MAAQ,CAAC,IAAM,GAAG,QACrC,IAAI,CAAC,IAAK,CAAE,MAAM,CAAC,EAAG,KAAK,EAAG,MAAQ,CACtC,aAAa,EAAG,WAAW,EAAG,OAAO,EAAE,OAAQA,OAAO,EAAE,MAAO,EAAI,EACrE,EAAG,GAAI,CAAG,GAAG,CACf,CACA,SAAS,aAAa,OAAQ,CAAO,KAAiB,QAAQ,QAAQ,EAAE,EAAG,QAAQ,EAAG,GAAG,UAAU,OAAO,MAAM,EAAG,SAAS,gBAAgB,UAAU,OAAO,aAAc,UAAU,EAAG,WAAW,UAAY,CAAE,GAAG,OAAS,GAAM,MAAM,IAAI,EAAG,WAAW,WAAY,GAAG,EAAG,WAAW,WAAY,GAAG,CAAG,EAAG,GAAG,EAAG,CAGnT,SAAS,QAAQ,OAAQ,KAAM,CAC7B,SAAS,EAAE,KAAK,SAAU,EAAG,CAC3B,IAAI,KAAO,EAAE,MAAM,OAAO,SAAU,EAAG,CAAE,OAAO,WAAW,EAAE,aAAc,EAAE,UAAU,CAAG,CAAC,EAAE,IAAI,KAAK,EAElG,KAAO,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,MAAO,CAAC,OAAO,CAAC,CAAG,CAAC,EAAE,IAAI,KAAK,EAEnE,KAAO,QAAU,OAAO,KAAO,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,OAAO,KAAK,QAAQ,EAAE,GAAG,EAAI,IAAM,CAAC,OAAO,CAAC,CAAG,CAAC,EAAE,IAAI,KAAK,EAAI,CAAC,EAEvI,GADI,KAAK,SAAU,KAAO,KAAK,OAAO,IAAI,EAAG,KAAO,KAAK,OAAO,SAAU,EAAG,CAAE,MAAO,CAAC,KAAK,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,KAAO,EAAE,EAAI,CAAC,CAAG,CAAC,GACvI,KAAM,CACR,IAAI,GAAK,GAAI,KAAK,QAAQ,SAAU,EAAG,EAAG,CAAM,EAAE,KAAO,KAAK,OAAM,GAAK,EAAG,CAAC,EAC7E,IAAI,IAAM,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,KAAK,GAAK,CAAC,EAAE,CAAC,EACtE,GAAI,GAAK,IAAM,IAAK,CAAE,IAAI,IAAM,KAAK,EAAE,EAAG,KAAK,EAAE,EAAI,OAAO,OAAO,MAAM,GAAG,EAAG,CAAE,UAAW,KAAK,IAAK,CAAC,EAAG,KAAO,KAAK,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,KAAO,KAAK,GAAK,CAAC,EAAG,KAAK,QAAQ,GAAG,CAAG,CAC/L,CACA,YAAY,KAAM,KAAM,OAAQ,QAAU,IAAI,CAChD,CAAC,CACH,CAEA,IAAI,QAAU,aACd,SAAS,SAAU,CAAE,GAAI,CAAE,IAAI,EAAI,KAAK,MAAM,aAAa,QAAQ,OAAO,GAAK,MAAM,EAAG,OAAO,GAAK,OAAO,EAAE,MAAS,UAAY,iCAAiC,KAAK,EAAE,IAAI,GAAK,KAAK,IAAI,EAAI,EAAE,EAAI,GAAK,MAAQ,EAAI,IAAM,OAAS,EAAG,CAAE,OAAO,IAAM,CAAE,CAC1P,SAAS,QAAQ,EAAG,CAAE,GAAI,CAExB,IAAI,KAAO,SAAU,EAAG,CAAE,OAAO,OAAO,GAAM,UAAY,iCAAiC,KAAK,CAAC,CAAG,EACpG,GAAI,CAAC,EAAG,OAAQ,GAAI,CAAC,KAAK,EAAE,IAAI,EAAG,CAAE,IAAI,EAAI,QAAQ,EAAG,GAAI,CAAC,GAAK,CAAC,KAAK,EAAE,IAAI,EAAG,OAAQ,EAAI,OAAO,OAAO,CAAC,EAAG,EAAG,CAAE,KAAM,EAAE,IAAK,CAAC,CAAG,CACrI,aAAa,QAAQ,QAAS,KAAK,UAAU,OAAO,OAAO,CAAE,EAAG,KAAK,IAAI,CAAE,EAAG,CAAC,CAAC,CAAC,CAAG,OAAS,EAAG,CAAE,CAAE,CACtG,SAAS,QAAS,CAChB,IAAI,EAAI,QAAQ,EAAG,GAAI,CAAC,EAAG,OAAO,KAClC,GAAI,EAAE,OAAS,OAAQ,OAAO,MAAQ,KAAK,MAAM,KAAK,SAAU,EAAG,CAAE,OAAO,WAAW,EAAE,aAAc,EAAE,UAAU,CAAG,CAAC,EAAI,EAAI,KAC/H,IAAI,KAAO,KAAK,EAAE,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,CAAC,EACpD,OAAQ,EAAE,MAAQ,CAAC,GAAG,KAAK,SAAU,EAAG,CAAE,OAAO,KAAK,QAAQ,CAAC,EAAI,EAAI,CAAC,EAAI,EAAI,IAClF,CACA,SAAS,WAAW,MAAO,CACzB,IAAI,EAAI,OAAO,EAAG,GAAK,EAAW,KAAI,IAAM,OAAO,OAAO,CAAE,MAAO,EAAE,MAAO,KAAM,EAAE,MAAQ,CAAC,CAAE,EAAG,OAAS,CAAC,CAAC,EAC7G,GAAI,EAAE,OAAS,OAAQ,CAAE,QAAQ,GAAG,EAAG,MAAQ,CAC/C,IAAI,EAAI,KAAK,EAAG,KAAO,EAAE,KAAK,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,CAAG,CAAC,CAAG,CAAC,EAAG,OAAS,KAAK,MAAM,EACjI,YAAY,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,KAAK,QAAQ,EAAE,GAAG,EAAI,EAAI,CAAC,EAAE,IAAI,KAAK,EAAG,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,KAAK,QAAQ,EAAE,GAAG,EAAI,CAAG,CAAC,EAAE,IAAI,KAAK,EAAG,GAAI,GAAG,EACpK,CACA,OAAO,iBAAiB,UAAW,SAAU,EAAG,CAC9C,GAAI,IAAE,SAAW,KAAO,CAAC,EAAE,MAAQ,CAAC,EAAE,KAAK,WAC3C,KAAI,EAAI,EAAE,KAAM,IAAM,IAAM,MAAM,EAKlC,GAJI,EAAE,UAAW,QAAQ,EAAE,OAAO,EAAG,UAAU,EAAE,OAAO,GAEpD,EAAE,YAAc,UAAW,KAAO,GAAM,aAAa,GAAG,GACxD,EAAE,YAAc,SAAW,KAAK,IAAI,YAAY,CAAE,UAAW,KAAM,GAAI,WAAW,CAAE,EAAG,GAAG,EAC1F,EAAE,YAAc,SAAW,KAAO,IAAK,IAAI,KAAK,SAAU,EAAG,CAAE,IAAI,YAAY,OAAO,OAAO,CAAE,UAAW,SAAU,MAAO,EAAE,CAAC,EAAG,KAAM,EAAE,CAAC,EAAG,KAAM,KAAM,KAAM,QAAU,OAAO,KAAM,MAAO,QAAU,OAAO,MAAO,OAAQ,MAAM,MAAM,EAAG,GAAI,WAAW,EAAG,GAAI,UAAU,EAAG,KAAM,SAAS,EAAG,MAAO,QAAU,OAAO,OAAS,KAAM,MAAO,QAAU,OAAO,OAAS,KAAM,IAAK,CAAC,EAAE,QAAU,OAAO,KAAM,QAAS,QAAU,OAAO,SAAW,IAAK,EAAG,SAAS,CAAC,EAAG,GAAG,EAAG,OAAS,IAAM,CAAC,UACzd,EAAE,YAAc,QAAU,MAAM,QAAQ,EAAE,IAAI,EAAG,CAExD,IAAI,IAAM,EAAE,KAAK,IAAI,SAAU,EAAG,CAAE,OAAO,GAAK,OAAO,EAAE,EAAE,CAAG,CAAC,EAAG,MAAQ,MAAM,OAAO,SAAU,GAAI,CAAE,OAAO,IAAI,QAAQ,EAAE,EAAI,EAAI,CAAC,EAAG,OAAO,QAAS,MAAM,MAAM,CAAC,EACrK,KAAO,CAAE,KAAM,EAAE,KAAK,OAAO,SAAU,EAAG,CAAE,OAAO,GAAK,EAAE,IAAM,MAAM,QAAQ,OAAO,EAAE,EAAE,CAAC,EAAI,CAAG,CAAC,EAAE,IAAI,SAAU,EAAG,CAAE,MAAO,CAAE,GAAI,OAAO,EAAE,EAAE,EAAG,GAAI,gBAAgB,KAAK,EAAE,IAAM,EAAE,EAAI,EAAE,GAAK,GAAI,GAAI,OAAO,EAAE,IAAO,SAAW,EAAE,GAAG,MAAM,EAAG,EAAE,EAAI,EAAG,CAAG,CAAC,EAAG,IAAK,MAAM,QAAQ,EAAE,GAAG,EAAI,GAAK,KAAO,EAAE,KAAO,KAAM,EAAG,KAAK,IAAI,CAAE,EAAG,OAAS,KAAK,IAAK,OAAO,UAAW,IAAI,CAAG,SAE9W,EAAE,YAAc,SAAgB,MAAO,aAAa,GAAG,EAAG,IAAM,KAAU,MAAM,QAAQ,EAAE,GAAG,GAAK,IAAM,CAAC,GAAG,QAAU,CAAC,OAAQ,QAAQ,EAAE,GAAG,GAAU,aAAa,EAAI,EAAG,SAAS,YACnL,EAAE,YAAc,QAAe,SAAW,QAAU,aAAa,EAAG,SAAS,GAAc,MAAM,QAAQ,EAAE,GAAG,GAAK,IAAM,CAAC,GAAG,QAAU,CAAC,OAAQ,QAAQ,EAAE,GAAG,GAAU,aAAa,EAAI,EAAG,SAAS,WACpM,EAAE,YAAc,SAAY,aAAa,EAAG,WAAW,UAAY,CAAM,OAAO,SAAc,OAAO,OAAO,SAAS,OAAO,OAAO,QAAQ,EAAG,OAAO,OAAO,KAAK,EAAK,EAAG,GAAG,UAC5K,EAAE,YAAc,WAAc,QAAQ,EAAO,OAAO,QAAQ,OAAO,OAAO,KAAK,EAAG,WAAW,WAAY,GAAG,EAAG,WAAW,WAAY,IAAI,UAC1I,EAAE,YAAc,WAAa,EAAE,MAAQ,EAAE,KAAM,CAEtD,IAAI,IAAM,EAAE,KAAK,GAAK,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAE,KAAK,EAAI,CAAC,EAAE,CAAC,EAAI,KACnF,MAAQ,SAAU,GAAI,CAAE,GAAK,IAAa,KAAI,IAAM,CAAC,EAAG,KAAK,EAAE,QAAQ,SAAU,EAAG,CAAE,IAAI,EAAI,OAAO,CAAC,EAAO,IAAG,IAAI,EAAE,GAAG,EAAI,OAAO,CAAC,EAAG,CAAC,EAC3I,IAAI,YAAY,OAAO,OAAO,CAAE,UAAW,SAAU,KAAM,OAAO,KAAK,GAAG,EAAG,IAAK,IAAK,MAAO,KAAO,KAAK,MAAQ,CAAC,GAAG,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,CAAC,CAAE,EAAG,SAAS,CAAC,EAAG,GAAG,EAC7K,IAAI,YAAY,OAAO,OAAO,CAAE,UAAW,QAAS,GAAI,EAAE,GAAI,GAAI,GAAI,WAAY,IAAM,OAAO,OAAO,GAAG,CAAC,EAAI,IAAK,EAAG,SAAS,CAAC,EAAG,GAAG,EAAG,EAEvI,IAAM,MAAQ,KAAK,MAAM,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAE,IAAM,CAAC,EAAE,CAAC,EAC5E,MAAK,KAAK,EAAE,EAAE,EAAI,CAAE,GAAI,IAAI,WAAY,SAAU,IAAI,SAAU,WAAY,IAAI,YAAc,CAAC,CAAE,GAEjG,MAAK,IAAI,EAAE,EAAE,EAAI,MAAM,KAAO,iBAAkB,CAAE,OAAQ,OAAQ,QAAS,CAAE,eAAgB,mBAAoB,OAAQ,kBAAmB,EAAG,KAAM,KAAK,UAAU,CAAE,GAAI,EAAE,KAAM,SAAU,CAAE,CAAC,CAAE,CAAC,EACnM,KAAK,UAAY,CAAE,OAAO,UAAU,IAAK,GAAM,IAAM,IAAI,SAAW,CAAC,CAAG,CAAC,EAAE,KAAK,UAAY,CAAE,MAAM,EAAI,CAAG,EAAG,UAAY,CAAE,OAAO,SAAS,EAAE,KAAK,UAAY,CAAE,MAAM,EAAK,CAAG,CAAC,CAAG,CAAC,EACzL,SACS,EAAE,YAAc,aAAe,EAAE,MAAQ,KAAK,EAAE,EAAE,EAAG,CAE5D,IAAI,EAAI,KAAK,EAAE,EAAE,EAAG,IAAM,EAAE,KAAK,GAAK,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAE,KAAK,EAAI,CAAC,EAAE,CAAC,EAAI,KAAM,GAAK,IAAI,EAAE,EAAE,EAAG,OAAO,KAAK,EAAE,EAAE,EAAG,OAAO,IAAI,EAAE,EAAE,EAC/J,IAAI,EAAI,CAAE,eAAgB,mBAAoB,OAAQ,mBAAoB,aAAc,GAAI,EAC5F,QAAQ,QAAQ,EAAE,EAAE,MAAM,UAAY,CAAE,CAAC,EAAE,KAAK,UAAY,CAAE,IAAI,GAAK,IAAM,OAAO,GAAG,EAAI,KAAM,OAAO,GAAK,MAAM,KAAO,iBAAkB,CAAE,OAAQ,OAAQ,QAAS,EAAG,KAAM,KAAK,UAAU,CAAE,GAAI,GAAG,IAAK,SAAU,CAAE,CAAC,CAAE,CAAC,EAAI,IAAM,CAAC,EACrO,KAAK,UAAY,CAAE,OAAO,MAAM,KAAO,cAAe,CAAE,OAAQ,OAAQ,QAAS,EAAG,KAAM,KAAK,UAAU,CAAE,MAAO,CAAC,CAAC,CAAE,CAAC,CAAE,CAAC,CAAG,CAAC,EAC9H,KAAK,SAAU,QAAQ,EAAE,KAAK,UAAY,CAEzC,GADI,OAAO,QAAU,OAAO,OAAO,SAAS,OAAO,OAAO,QAAQ,EAC9D,EAAC,IAAa,KAAI,IAAM,CAAC,EAAG,KAAK,EAAE,QAAQ,SAAU,EAAG,CAAE,IAAI,EAAI,OAAO,CAAC,EAAO,IAAG,IAAI,EAAE,GAAG,EAAI,OAAO,CAAC,EAAG,CAAC,EACjH,IAAI,YAAY,OAAO,OAAO,CAAE,UAAW,SAAU,KAAM,OAAO,KAAK,GAAG,EAAG,IAAK,IAAK,MAAO,KAAO,KAAK,MAAQ,CAAC,GAAG,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,CAAC,CAAE,EAAG,SAAS,CAAC,EAAG,GAAG,EAC/K,CAAC,CACL,SACS,EAAE,YAAc,UAAY,EAAE,KAAO,MAAM,EAAE,GAAG,EAAG,CAE1D,IAAI,GAAK,MAAM,EAAE,GAAG,EAAG,OAAO,MAAM,EAAE,GAAG,EAAG,OAAO,IAAI,EAAE,GAAG,EACvD,GAAG,MAAO,OAAO,EAAE,GAAG,EAAG,WAAW,EAAE,GAAG,GAAK,QAAQ,GAAG,GAAI,GAAG,GAAG,EACxE,QAAQ,IAAI,CAAC,GAAG,EAAI,OAAO,GAAG,GAAG,IAAK,GAAG,CAAC,EAAI,KAAM,GAAG,EAAI,OAAO,GAAG,GAAG,IAAM,KAAM,GAAG,CAAC,EAAI,IAAI,CAAC,EAC9F,KAAK,UAAY,CAAE,OAAO,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,EAAG,SAAS,CAAC,CAAC,CAAG,CAAC,EAC5E,KAAK,UAAY,CAAE,OAAO,SAAS,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAG,CAAC,EAC/D,KAAK,SAAU,EAAG,CACb,MAAQ,KAAK,OAAM,KAAK,KAAO,KAAK,KAAK,IAAI,SAAU,EAAG,CAAE,OAAO,IAAM,EAAE,IAAM,GAAG,GAAG,IAAM,CAAG,CAAC,GACjG,KAAK,IAAI,YAAY,OAAO,OAAO,CAAE,UAAW,OAAQ,IAAK,EAAE,IAAK,KAAM,EAAE,CAAC,EAAG,KAAM,CAAC,CAAC,GAAG,GAAI,EAAG,SAAS,CAAC,EAAG,GAAG,CACxH,CAAC,CACL,SACS,EAAE,YAAc,WAAc,aAAa,EAAI,EAAG,WAAW,WAAY,GAAG,UAI5E,EAAE,YAAc,UAAY,EAAE,KAAM,CAAE,IAAI,GAAK,EAAE,KAAM,QAAQ,QAAQ,GAAG,IAAM,KAAK,GAAG,EAAE,CAAC,EAAE,MAAM,UAAY,CAAE,CAAC,EAAE,KAAK,UAAY,CAC5I,GAAI,GAAG,GAAI,OAAO,cAAc,GAAG,EAAE,EAAE,KAAK,SAAU,IAAK,CAAE,OAAI,KAAO,KAAK,IAAI,YAAY,CAAE,UAAW,OAAQ,GAAI,EAAE,GAAI,IAAK,GAAI,EAAG,GAAG,EAAU,GAAG,EAAI,CAAC,EAC7J,IAAI,GAAK,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAG,EAAI,CAAC,EAAE,CAAC,EAAG,GAAK,IAAM,OAAO,EAAE,EAAG,OAAO,GAAK,GAAG,IAAM,IACnH,CAAC,EAAE,KAAK,SAAU,GAAI,CAAE,GAAI,GAAI,OAAO,QAAQ,EAAE,EAAE,KAAK,MAAM,CAAG,CAAC,CAAG,SAC5D,EAAE,YAAc,QAAU,EAAE,KAAM,CAAE,IAAI,GAAK,EAAE,KAAK,KAAO,EAAE,KAAK,GAAK,KAAO,EAAE,KAAK,GAAK,MAAW,KAAM,QAAQ,CAAC,EAAE,EAAG,CAAC,CAAC,EAAE,IAAI,EAAO,EAAE,MAAM,WAAW,OAAQ,GAAG,EAAK,SAC3K,EAAE,YAAc,SAAY,QAAQ,EAAG,WAAW,OAAQ,IAAI,UAC9D,EAAE,YAAc,OAAQ,CAC/B,IAAI,GAAK,EAAE,SAAW,CAAC,EACvB,GAAI,CACF,eAAe,QAAQ,aAAc,OAAO,KAAK,IAAI,CAAC,CAAC,EACvD,eAAe,QAAQ,YAAa,KAAK,UAAU,CAAE,KAAM,EAAE,KAAM,KAAM,KAAM,KAAM,GAAG,MAAQ,KAAK,KAAM,IAAK,KAAM,KAAM,EAAE,MAAQ,GAAG,MAAQ,GAAI,IAAK,EAAE,KAAO,KAAM,KAAM,EAAE,MAAQ,KAAM,MAAO,GAAG,OAAS,KAAM,EAAG,KAAK,IAAI,CAAE,CAAC,CAAC,CAC1O,OAAS,EAAG,CAAE,CAAE,IAAI,GAAK,CAAE,OAAQ,UAAW,MAAO,UAAW,IAAK,sBAAuB,EAAE,EAAE,IAAI,GAAK,MAAO,aAAa,EAAI,EAAG,SAAS,MAAS,OAAO,SAAW,QAAQ,QAAU,QAAQ,OAAO,MAAS,KAAO,eAAiB,EAAI,SACvO,EAAE,YAAc,OAAQ,SAAS,UACjC,EAAE,YAAc,OAAc,KAAK,IAAI,KAAK,EAAE,CAAC,UAC/C,EAAE,YAAc,OAAS,EAAE,KAAM,CACxC,IAAI,GAAK,EAAE,KAAK,GAAK,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAE,KAAK,EAAI,CAAC,EAAE,CAAC,EAAI,KAClF,KAAO,SAAU,GAAI,CAAE,IAAI,GAAK,GAAK,OAAO,EAAE,EAAI,KAAU,KAAK,IAAI,YAAY,OAAO,OAAO,CAAE,UAAW,QAAS,GAAI,EAAE,GAAI,GAAI,GAAI,IAAK,GAAK,GAAG,IAAM,KAAM,WAAY,GAAK,OAAO,EAAE,EAAI,IAAK,EAAG,SAAS,CAAC,EAAG,GAAG,CAAG,EACzN,GAAI,UAAU,GAAI,EAAI,EAAE,KAAK,UAAY,CAAE,KAAK,EAAI,CAAG,EAAG,UAAY,CAAE,KAAK,EAAK,CAAG,CAAC,EAAQ,KAAK,EAAK,CAC9G,SAAW,EAAE,YAAc,QAAU,EAAE,KAAM,CACvC,EAAE,KAAK,QAAQ,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,EACvC,IAAI,EAAI,EAAE,KAAK,GAAK,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAE,KAAK,EAAI,CAAC,EAAE,CAAC,EAAI,KACrF,GAAI,WAAW,EAAG,EAAG,GAAG,GAAK,QAAQ,EAAG,CAAC,EAAG,OAC5C,WAAW,EAAG,CAAC,CACjB,EACF,CAAC,EAED,SAAS,WAAW,EAAG,EAAG,CACtB,IAAI,IAAM,EAAI,EAAE,QAAW,EAAE,KAAK,OAAS,aAAe,EAAE,KAAK,OAAS,KACtE,GAAK,EAAE,KAAK,YAAc,CAAC,EAG/B,GAFI,GAAK,EAAE,OAAS,OAAS,EAAE,SAAQ,IAAM,aAAe,EAAE,OAAS,SAAW,mBAAmB,EAAE,GAAG,GACtG,CAAC,GAAK,EAAE,KAAK,IAAM,EAAE,KAAK,QAAU,WAAW,EAAE,KAAK,aAAc,EAAE,IAAM,QAAO,IAAM,aAAe,EAAE,KAAK,OAAS,WAAa,mBAAmB,EAAE,KAAK,EAAE,GACjK,CAAC,GAAK,GAAG,SAAW,EAAE,KAAK,OAAU,GAAI,CAAE,IAAI,GAAK,KAAK,MAAM,GAAG,OAAO,EAAG,IAAM,aAAe,EAAE,KAAK,OAAS,YAAc,EAAE,KAAK,WAAa,WAAa,KAAK,KAAK,UAAU,CAAE,EAAG,GAAG,CAAE,CAAC,CAAC,CAAG,OAAS,EAAG,CAAE,CACrN,GAAI,IAAK,CAAE,GAAI,CAAE,eAAe,QAAQ,YAAa,KAAK,UAAU,CAAE,KAAM,KAAM,KAAM,KAAK,KAAM,IAAK,EAAI,EAAE,IAAM,KAAM,KAAM,CAAC,GAAK,EAAE,KAAK,GAAK,EAAE,KAAK,GAAK,KAAM,KAAM,EAAE,MAAQ,GAAI,IAAK,EAAE,KAAO,KAAM,KAAM,EAAE,MAAQ,KAAM,MAAO,EAAE,SAAW,EAAE,QAAQ,OAAS,KAAM,EAAG,KAAK,IAAI,CAAE,CAAC,CAAC,CAAG,OAAS,EAAG,CAAE,CAAE,MAAQ,IAAI,QAAQ,GAAG,EAAI,GAAK,IAAM,KAAO,MAAQ,CACvW,GAAI,IAAK,CAAE,aAAa,EAAI,EAAG,aAAa,EAAE,EAAG,GAAK,KAAM,GAAI,CAAM,QAAQ,QAAQ,aAAa,KAAM,EAAE,CAAG,OAAS,EAAG,CAAE,CAAE,MAAQ,GAAI,OAAS,GAAO,SAAS,KAAO,IAAI,GAAG,CAAG,CACxL,CAEA,IAAI,UAAY,KAAO,aAAc,IAAM,KAC3C,SAAS,UAAW,CAClB,OAAI,OAAO,UAAY,OAAO,SAAS,SAAiB,QAAQ,QAAQ,EACpE,MACG,IAAM,IAAI,QAAQ,SAAU,GAAI,GAAI,CAAE,IAAI,GAAK,SAAS,cAAc,QAAQ,EAAG,GAAG,IAAM,UAAW,GAAG,OAAS,UAAY,CAAE,OAAO,UAAY,OAAO,SAAS,SAAW,GAAG,EAAI,GAAG,CAAG,EAAG,GAAG,QAAU,UAAY,CAAE,IAAM,KAAM,GAAG,CAAG,EAAG,SAAS,KAAK,YAAY,EAAE,CAAG,CAAC,EACtR,CACA,SAAS,WAAW,EAAG,EAAG,IAAK,CAC7B,IAAI,GAAK,EAAE,KAAK,YAAc,CAAC,EAAG,GAAK,KAAM,GAAI,CAAE,GAAK,KAAK,MAAM,GAAG,SAAW,MAAM,CAAG,OAAS,EAAG,CAAE,CACxG,MAAI,CAAC,IAAM,CAAC,GAAG,GAAK,CAAC,EAAE,KAAK,OAAe,IAC3C,QAAQ,IAAI,CAAC,SAAS,EAAG,MAAM,KAAO,YAAc,EAAE,KAAK,OAAS,KAAK,EAAE,KAAK,SAAU,EAAG,CAAE,GAAI,CAAC,EAAE,GAAI,KAAM,GAAG,OAAO,EAAE,KAAK,CAAG,CAAC,CAAC,CAAC,EAAE,KAAK,SAAU,EAAG,CACzJ,IAAI,EAAI,EAAE,CAAC,EACX,OAAO,SAAS,SAAS,CACvB,QAAS,GAAG,EAAG,OAAQ,EAAE,OAAQ,aAAc,EAAE,MACjD,MAAO,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,IAAI,EAAE,QAAQ,SAAK,EAAE,EAAE,QAAQ,WAAY,EAAE,EACjF,SAAU,EAAE,SAAS,IAAI,SAAU,EAAG,CAAE,MAAO,CAAE,GAAI,EAAE,GAAI,EAAG,EAAE,SAAW,CAAC,EAAG,EAAG,MAAM,EAAE,KAAK,EAAG,EAAG,EAAE,iBAAmB,EAAE,MAAQ,MAAM,EAAE,gBAAgB,EAAI,GAAI,EAAG,EAAE,SAAU,CAAG,CAAC,EACvL,QAAS,EAAE,KAAK,WAAY,OAAQ,GAAG,GAAK,CAAC,EAC7C,GAAI,CAAE,KAAM,EAAE,MAAQ,GAAI,IAAK,EAAE,KAAO,KAAM,OAAQ,EAAE,QAAU,KAAO,CAAC,CAAC,EAAE,OAAS,CAAC,CAAC,EAAE,KAAK,OAAQ,OAAQ,SAAU,MAAO,KAAM,CAAE,WAAW,EAAG,EAAG,GAAI,MAAO,KAAM,GAAG,CAAG,CAAE,CACpL,CAAC,CACH,CAAC,EAAE,MAAM,UAAY,CAAE,WAAW,EAAG,CAAC,CAAG,CAAC,EACnC,GACT,CAEA,IAAI,MAAQ,+CAAgD,IAAM,KAClE,SAAS,MAAO,CACd,OAAI,OAAO,KAAa,QAAQ,QAAQ,EACpC,MACG,IAAM,IAAI,QAAQ,SAAU,GAAI,GAAI,CACzC,OAAO,WAAa,EAAG,IAAI,EAAI,EAAG,GAAK,YAAY,UAAY,CAAM,OAAO,MAAQ,cAAc,EAAE,EAAG,GAAG,GAAc,EAAE,EAAI,MAAO,cAAc,EAAE,EAAG,IAAM,KAAM,GAAG,EAAK,EAAG,GAAG,EAClL,GAAI,CAAC,SAAS,cAAc,eAAiB,MAAQ,IAAI,EAAG,CAAE,IAAI,GAAK,SAAS,cAAc,QAAQ,EAAG,GAAG,KAAO,SAAU,GAAG,IAAM,MAAO,SAAS,KAAK,YAAY,EAAE,CAAG,CAC9K,CAAC,EACH,CACA,SAAS,MAAM,GAAI,CAAE,OAAO,WAAW,GAAG,aAAc,GAAG,YAAc,CAAC,CAAC,IAAM,KAAO,CACxF,SAAS,QAAQ,EAAG,EAAG,CACrB,GAAI,CAAC,MAAM,EAAE,IAAI,GAAK,CAAC,EAAE,KAAK,QAAU,CAAC,EAAE,KAAK,WAAY,MAAO,GACnE,IAAI,IAAM,CAAE,KAAM,EAAE,MAAQ,GAAI,IAAK,EAAE,KAAO,KAAM,OAAQ,EAAE,QAAU,KAAO,CAAC,CAAC,EAAE,OAAS,CAAC,CAAC,EAAE,KAAK,OAAQ,OAAQ,SAAU,MAAO,KAAM,CAAE,QAAQ,EAAG,EAAG,MAAO,IAAI,CAAG,CAAE,EACxK,OAAS,KACb,YAAK,EAAE,KAAK,UAAY,CACtB,cAAS,MAAO,MAAQ,IACjB,OAAO,KAAK,KAAK,CAAE,UAAW,EAAE,KAAK,WAAY,OAAQ,EAAE,KAAK,OAAQ,MAAO,EAAI,EAAE,IAAM,KAAM,QAAS,CAAC,GAAK,EAAE,KAAK,GAAK,EAAE,KAAK,GAAK,KAAM,EAAG,WACtJ,SAAU,UAAY,CAAE,WAAW,UAAY,CAAM,QAAU,MAAK,MAAQ,KAAM,EAAG,IAAI,CAAG,CAAE,CAAC,CACnG,CAAC,EAAE,KAAK,SAAU,GAAI,CAAM,KAAO,IAAS,QAAU,MAAK,MAAQ,OAAsE,CAAC,EACvI,MAAM,UAAY,CAAM,QAAU,MAAK,MAAQ,MAAM,WAAW,EAAG,CAAC,CAAG,CAAC,EACpE,EACT,CACA,SAAS,QAAQ,EAAG,EAAG,MAAO,KAAM,CAClC,GAAK,OACD,KAAK,MAAM,KAAK,IAAM,EAAE,KAC5B,IAAI,CAAC,EAAG,CAAE,IAAI,EAAI,MAAM,OAAS,CAAC,EAAG,EAAI,EAAE,KAAK,YAAc,CAAC,EAAG,KAAO,OAAO,KAAK,CAAC,EAAE,MAAM,SAAU,EAAG,CAAE,MAAO,cAAc,KAAK,CAAC,GAAK,OAAO,EAAE,CAAC,GAAK,EAAE,IAAM,OAAO,EAAE,CAAC,GAAK,EAAE,CAAG,CAAC,EAAG,GAAI,MAAQ,CAAC,MAAM,YAAe,CAAC,EAAE,KAAK,WAAY,MAAQ,CAC1P,cAAc,EAAG,EAAG,MAAO,IAAI,EACjC,CAEA,SAAS,QAAQ,OAAQ,OAAQ,CAC/B,OAAK,QACL,QAAQ,IAAI,CAAC,KAAK,EAAG,MAAM,KAAO,YAAc,OAAS,KAAK,EAAE,KAAK,SAAU,EAAG,CAAE,GAAI,CAAC,EAAE,GAAI,KAAM,GAAG,OAAO,EAAE,KAAK,CAAG,CAAC,CAAC,CAAC,EAAE,KAAK,SAAU,EAAG,CAC9I,IAAI,EAAI,EAAE,CAAC,EAAG,GAAK,OAAO,QAAU,EAAE,EAAE,YAAY,EAAG,GAAK,EAAE,UAAY,CAAC,EACvE,EAAK,IAAM,GAAG,OAAO,SAAU,EAAG,CAAE,OAAQ,EAAE,SAAW,CAAC,GAAG,KAAK,SAAU,EAAG,CAAE,OAAO,OAAO,CAAC,EAAE,YAAY,IAAM,EAAI,CAAC,CAAG,CAAC,EAAE,CAAC,GAAM,GAAG,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,SAAW,CAAC,EAAE,CAAC,GAAK,GAAG,CAAC,EACpM,GAAI,CAAC,EAAG,KAAM,GACd,OAAO,OAAO,KAAK,KAAK,CAAE,UAAW,EAAE,GAAI,OAAQ,EAAE,OAAQ,OAAQ,QAAU,KAAM,EAAG,UAAW,CAAC,CACtG,CAAC,EAAE,MAAM,UAAY,CAAE,SAAS,KAAO,IAAI,aAAe,MAAM,GAAK,OAAS,WAAa,mBAAmB,MAAM,EAAI,IAAM,SAAW,CAAC,EACnI,IAPa,EAQtB,CAEA,SAAS,YAAY,GAAI,CACvB,MAAI,CAAC,MAAM,EAAE,GAAK,CAAC,GAAG,OAAe,IACrC,KAAK,EAAE,KAAK,UAAY,CAAE,OAAO,OAAO,KAAK,KAAK,CAAE,UAAW,GAAG,WAAY,OAAQ,GAAG,OAAQ,QAAS,GAAG,IAAK,EAAG,UAAW,CAAC,CAAG,CAAC,EAClI,MAAM,UAAY,CAAE,SAAS,KAAO,IAAI,GAAG,GAAG,GAAK,GAAG,IAAI,QAAQ,GAAG,EAAI,EAAI,IAAM,KAAO,UAAY,mBAAmB,GAAG,GAAG,CAAG,CAAC,EAC/H,GACT,CAEA,SAAS,aAAa,GAAI,CACxB,IAAI,GAAK,KAAM,GAAI,CAAE,GAAK,KAAK,OAAO,GAAG,YAAc,CAAC,GAAG,SAAW,MAAM,CAAG,OAAS,EAAG,CAAE,CAC7F,MAAI,CAAC,IAAM,CAAC,GAAG,GAAK,CAAC,GAAG,OAAe,IACvC,QAAQ,IAAI,CAAC,SAAS,EAAG,MAAM,KAAO,YAAc,GAAG,OAAS,KAAK,EAAE,KAAK,SAAU,EAAG,CAAE,GAAI,CAAC,EAAE,GAAI,KAAM,GAAG,OAAO,EAAE,KAAK,CAAG,CAAC,CAAC,CAAC,EAAE,KAAK,SAAU,EAAG,CACrJ,IAAI,EAAI,EAAE,CAAC,EACX,OAAO,SAAS,SAAS,CAAE,QAAS,GAAG,EAAG,OAAQ,EAAE,OAAQ,aAAc,EAAE,MAAO,MAAO,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,IAAI,EAAE,QAAQ,SAAK,EAAE,EAAE,QAAQ,WAAY,EAAE,EAClK,SAAU,EAAE,SAAS,IAAI,SAAU,EAAG,CAAE,MAAO,CAAE,GAAI,EAAE,GAAI,EAAG,EAAE,SAAW,CAAC,EAAG,EAAG,MAAM,EAAE,KAAK,EAAG,EAAG,EAAE,iBAAmB,EAAE,MAAQ,MAAM,EAAE,gBAAgB,EAAI,GAAI,EAAG,EAAE,SAAU,CAAG,CAAC,EACvL,QAAS,GAAG,WAAY,OAAQ,GAAG,GAAK,CAAC,EAAG,QAAS,GAAG,IAAK,IAAK,GAAG,QAAS,CAAC,CACnF,CAAC,EAAE,MAAM,UAAY,CAAE,SAAS,KAAO,IAAI,GAAG,GAAG,GAAK,GAAG,IAAI,QAAQ,GAAG,EAAI,EAAI,IAAM,KAAO,UAAY,KAAK,KAAK,UAAU,CAAE,EAAG,GAAG,EAAG,EAAG,GAAG,IAAK,EAAG,GAAG,QAAS,CAAC,CAAC,CAAG,CAAC,EACjK,GACT,CAEA,SAAS,WAAW,EAAG,EAAG,GAAI,MAAO,KAAM,IAAK,CAC9C,GAAK,MACL,KAAI,GAAK,KAAM,GAAI,CAAE,GAAK,KAAK,MAAM,MAAM,OAAS,MAAM,MAAM,SAAW,MAAM,CAAG,OAAS,EAAG,CAAE,CAC9F,IAAM,KAAK,UAAU,GAAG,GAAK,CAAC,CAAC,IAAM,KAAK,UAAU,GAAG,GAAK,CAAC,CAAC,GAAK,CAAC,MAAM,YAAe,CAAC,EAAE,KAAK,YACrG,cAAc,EAAG,EAAG,MAAO,IAAI,EACjC,CAEA,SAAS,cAAc,EAAG,EAAG,MAAO,KAAM,CACxC,IAAI,QAAU,EAAI,OAAO,CAAC,EAAI,KAE1B,IAAM,MAAM,KAAK,EAAG,IAAM,IAAI,GAAG,EAAG,KAAO,IAAM,QAAQ,QAAQ,GAAG,EAAI,KAAK,OAAO,OAAO,CAAC,EAAG,MAAO,CAAE,IAAK,GAAI,CAAC,EAAG,IAAI,EAC7H,KAAK,KAAK,UAAY,CAEpB,GAAM,GAAK,EAAE,MAAQ,KAAO,IAAI,EAAE,GAAG,EAGrC,KAAI,IAAM,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,KAAO,EAAE,MAAQ,GAAK,CAAC,EAAE,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,EACxH,OAAO,QAAQ,IAAI,CAAC,OAAO,EAAE,GAAG,EAAG,OAAO,EAAE,IAAM,IAAI,CAAC,CAAC,EAAE,KAAK,SAAU,EAAG,CAAE,MAAM,GAAG,EAAI,CAAE,GAAI,OAAO,EAAE,GAAG,EAAG,IAAK,IAAK,EAAG,EAAE,CAAC,EAAG,EAAG,EAAE,CAAC,EAAG,IAAK,GAAI,EAAG,IAAI,GAAG,EAAI,EAAE,IAAK,WAAW,EAAE,GAAG,EAAQ,KAAK,QAAQ,OAAO,GAAG,EAAG,GAAG,CAAG,CAAC,EACrO,CAAC,EAAE,KAAK,UAAY,CAClB,IAAI,GAAK,KAAK,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAK,CAAC,EAAE,CAAC,EAAG,GAAK,GAExE,KAAI,GAAK,CAAC,MAAQ,UAAU,EAAE,EAAG,OAAI,KAAK,IAAI,MAAM,EAAG,IAAM,IAEtD,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAG,KAAO,KAAO,SAAS,CAAC,CAAC,EAAE,KAAK,UAAY,CAAE,OAAO,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,CAAG,CAAC,EAAE,KAAK,SAAU,EAAG,CAChJ,IAAI,KAAO,EAAE,CAAC,EAAO,EAAE,KAAK,GAAI,KAAK,UAAY,EAAE,KAAK,GAAa,SAAW,CAAC,KAAK,SAAQ,KAAK,UAAY,QAAQ,KACnH,MAAQ,KAAK,OAAM,KAAK,KAAO,KAAK,KAAK,IAAI,SAAU,EAAG,CAAE,OAAO,KAAO,GAAK,EAAE,KAAO,IAAM,CAAG,CAAC,GACtG,IAAI,GAAK,IAAM,MAAM,EACjB,IAAI,GAAG,YAAY,OAAO,OAAO,CAAE,UAAW,OAAQ,IAAK,EAAE,KAAK,IAAM,EAAE,KAAK,IAAM,KAAM,IAAK,EAAE,IAAM,KAAM,KAAM,KAAM,KAAM,CAAC,CAAC,MAAM,GAAG,CAAE,EAAG,SAAS,CAAC,EAAG,GAAG,CACtK,CAAC,EACH,CAAC,CACH,CAKA,IAAI,IAAM,QAAQ,QAAQ,EAAG,IAAM,CAAC,EAIpC,SAAS,YAAY,GAAI,GAAI,CAC3B,IAAI,EAAI,KAAK,EAAG,IAAM,EAAE,MAAM,IAAI,SAAU,EAAG,CAAE,OAAO,EAAE,GAAK,CAAC,EAAE,QAAQ,GAAG,GAAG,EAAG,GAAI,IAAM,EAAG,OAAO,GAAG,IAC1G,IAAI,MAAQ,OAAO,OAAO,CAAC,EAAG,GAAG,YAAc,CAAC,CAAC,EAAG,IAAM,MAAM,CAAE,WAAY,GAAG,WAAY,MAAO,KAAM,CAAC,EAC3G,OAAI,MAAQ,GAAG,MACX,EAAE,MAAM,KAAK,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,GAAK,CAAC,EAAG,EAAE,MAAM,OAAO,IAAK,CAAC,EAC1E,EAAE,MAAM,GAAG,EAAI,OAAO,OAAO,CAAC,EAAG,GAAI,CAAE,GAAI,IAAK,IAAK,IAAK,MAAO,GAAG,eAAiB,GAAG,MAAO,WAAY,GAAG,WAAY,cAAe,GAAG,eAAiB,GAAI,MAAO,GAAG,YAAa,MAAO,MAAO,SAAU,KAAK,IAAI,CAAE,CAAC,EACjO,MAAM,CAAC,EAAG,WAAW,GAAG,GAAG,EAC3B,OAAO,KAAK,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAM,GAAG,CAAC,IAAM,GAAG,MAAK,GAAG,CAAC,EAAI,IAAK,CAAC,EAC3E,OAAS,OAAO,IAAI,SAAU,EAAG,CAAE,OAAO,IAAM,GAAG,IAAM,IAAM,CAAG,CAAC,EACnE,KAAK,GAAU,GACjB,CACA,SAAS,iBAAiB,mBAAoB,SAAU,EAAG,CACzD,IAAI,EAAI,EAAE,QAAU,CAAC,EAAG,GAAK,IAAM,SAAS,gBAAgB,UAAU,SAAS,UAAU,GAAK,MAAM,EACpG,GAAI,GAAC,EAAE,MAAQ,CAAC,EAAE,IAClB,KAAI,EAAE,EAAE,EAAI,EAAE,KACC,QAAX,KAAO,CAAC,EAAY,EAAI,EAAE,KAAM,EAAI,EAAG,GAAK,EAAI,EAAG,EAAI,IAAI,CAAC,EAAG,IAAK,KAAK,KAAK,CAAC,EAEnF,IAAI,MAAQ,EAAE,IAAM,KAAK,EAAE,OAAO,SAAU,EAAG,CAC7C,GAAI,CAAC,EAAE,YAAe,CAAC,EAAE,IAAI,WAAY,MAAO,GAAO,IAAI,EAAI,EAAE,IAAI,YAAc,CAAC,EACpF,OAAO,EAAE,MAAM,QAAU,WAAW,EAAE,QAAS,EAAE,MAAM,OAAO,EAAI,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAU,EAAG,CAAE,OAAO,EAAE,OAAO,CAAC,IAAM,KAAO,OAAO,EAAE,CAAC,GAAK,EAAE,IAAM,OAAO,EAAE,MAAM,CAAC,GAAK,EAAE,CAAG,CAAC,CAC9L,CAAC,EAAI,CAAC,EACN,MAAM,QAAQ,SAAU,EAAG,CAAE,KAAK,KAAK,EAAE,GAAG,CAAG,CAAC,EAChD,IAAM,IAAI,KAAK,UAAY,CAAE,OAAO,SAAS,CAAG,CAAC,EAAE,KAAK,SAAU,EAAG,CACnE,IAAI,GAAK,EAAE,MAAM,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAE,EAAI,CAAC,EAAE,CAAC,EAAG,GAAK,KAC1E,MAAM,QAAQ,SAAU,GAAI,CAAE,YAAY,GAAI,EAAE,CAAG,CAAC,EAChD,KAAO,IAAI,UAAU,SAAS,MAAM,GAAG,aAAa,EACpD,EAAC,IACL,OAAO,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAU,EAAG,CAAE,GAAG,YAAY,OAAO,OAAO,CAAE,UAAW,OAAQ,IAAK,EAAE,KAAM,KAAM,KAAM,KAAM,EAAE,CAAC,EAAG,KAAM,EAAK,EAAG,SAAS,CAAC,EAAG,GAAG,CAAG,CAAC,CACtL,CAAC,EAAE,MAAM,UAAY,CAAE,CAAC,EAC1B,CAAC,EAGD,OAAO,WAAa,CAClB,MAAO,MAAO,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,UAAY,CAAE,OAAO,KAAK,EAAE,MAAQ,EAC3F,OAAQ,SAAU,IAAK,CAAE,IAAI,GAAK,OAAO,GAAG,EAAG,OAAI,IAAI,WAAW,GAAG,EAAU,EAAI,EACnF,OAAQ,SAAU,EAAG,OAAQ,CAAE,IAAI,EAAI,EAAE,KAAO,MAAM,CAAC,EAAG,OAAI,IAAI,CAAC,GAAK,KAAK,OAAO,CAAC,EAAU,QAAQ,QAAQ,EAAK,GAAY,QAAQ,QAAQ,OAAS,OAAO,EAAI,IAAI,EAAE,KAAK,SAAU,EAAG,CAAE,OAAO,KAAK,OAAO,OAAO,CAAC,EAAG,EAAG,CAAE,IAAK,CAAE,CAAC,EAAG,CAAC,CAAG,CAAC,EAAE,KAAK,UAAY,CAAE,MAAO,EAAM,CAAC,CAAG,EACvR,UAAW,SAAU,EAAG,CAAE,KAAK,KAAK,CAAC,CAAG,EAAG,KAAM,WAAY,UAAW,UAAW,QAAS,QAAS,WAAY,WACjH,SAAU,UAAY,CAAE,eAAQ,EAAU,KAAO,EAAG,cAAe,cACnE,WAAY,SAAU,GAAI,CAAE,IAAI,GAAK,IAAM,GAAG,UAAU,SAAS,MAAM,GAAK,MAAM,EAAO,IAAM,IAAM,GAAG,QAAQ,GAAG,YAAY,CAAE,UAAW,OAAQ,KAAM,EAAG,EAAG,GAAG,CAAG,EACtK,OAAQ,SAAU,EAAG,CAAE,IAAI,GAAK,IAAM,GAAG,UAAU,SAAS,MAAM,GAAK,MAAM,EAAO,IAAM,qDAAqD,KAAK,CAAC,GAAG,GAAG,YAAY,CAAE,UAAW,OAAQ,GAAI,CAAE,EAAG,GAAG,CAAG,EAE3M,QAAS,SAAU,EAAG,EAAG,CAAE,IAAI,EAAI,IAAM,EAAE,KAAO,MAAM,CAAC,GAAI,MAAI,CAAC,GAAK,CAAC,GAAK,CAAC,IAAI,CAAC,EAAU,QAAQ,QAAQ,EAAU,QAAQ,IAAI,CAAC,EAAE,MAAQ,OAAO,EAAG,EAAE,KAAK,EAAI,KAAM,EAAE,KAAO,OAAO,EAAI,KAAM,EAAE,IAAI,EAAI,IAAI,CAAC,EAAE,KAAK,UAAY,CAAE,KAAK,CAAG,CAAC,CAAG,EACnP,QAAS,SAAU,EAAG,EAAG,CAAE,IAAI,EAAI,IAAM,EAAE,KAAO,MAAM,CAAC,GAAI,OAAO,GAAK,GAAK,IAAI,CAAC,EAAI,OAAO,EAAI,KAAM,CAAC,EAAI,QAAQ,QAAQ,CAAG,EAAG,aAAc,aAAc,YAAa,YAAa,QAAS,QAAS,QAAS,UAAY,CAAE,KAAK,EAAE,MAAM,UAAY,CAAE,CAAC,CAAG,EACjQ,SAAU,UAAY,CAAE,GAAI,CAAE,OAAI,aAAa,QAAQ,WAAW,EAAU,IAAO,aAAa,QAAQ,YAAa,GAAG,EAAU,GAAM,OAAS,EAAG,CAAE,MAAO,EAAO,CAAE,CACxK,EACA,OAAO,iBAAiB,UAAW,SAAU,EAAG,CAAM,EAAE,MAAQ,IAAI,KAAK,CAAG,CAAC,EACzE,SAAS,aAAe,UAAW,SAAS,iBAAiB,mBAAoB,SAAS,EAAQ,UAAU,EAChH,SAAS,CACX,GAAG",
  "names": ["seen", "el", "sig", "sl", "c", "b", "again"]
}
