{"version":3,"mappings":"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","names":["sharedConfig","setHydrateContext","context","equalFn","a","b","$PROXY","$TRACK","signalOptions","ERROR","runEffects","runQueue","STALE","PENDING","UNOWNED","NO_INIT","Owner","Transition","Listener","Updates","Effects","ExecCount","transPending","setTransPending","createSignal","createRoot","fn","detachedOwner","listener","owner","unowned","current","root","updateFn","untrack","cleanNode","runUpdates","value","options","s","setter","writeSignal","readSignal","createComputed","c","createComputation","updateComputation","createRenderEffect","createEffect","runUserEffects","SuspenseContext","useContext","createMemo","isPromise","v","createResource","pSource","pFetcher","pOptions","source","fetcher","pr","initP","id","loadedUnderTransition","scheduled","resolved","dynamic","contexts","setValue","error","setError","track","trigger","state","setState","loadEnd","p","key","completeLoad","err","read","load","refetching","lookup","e","castError","batch","on","deps","isArray","prevInput","defer","prevValue","input","i","result","onMount","onCleanup","catchError","handler","handleError","getListener","getOwner","runWithOwner","o","prev","prevListener","startTransition","l","t","res","useTransition","resumeEffects","createContext","defaultValue","createProvider","children","memo","resolveChildren","getSuspenseContext","runningTransition","updates","lookUpstream","sSlot","node","isComp","TransitionRunning","markDownstream","time","runComputation","nextValue","init","pure","runTop","ancestors","top","wait","completeUpdates","sources","disposed","d","len","queue","userLength","ignore","index","obs","n","reset","runErrors","fns","f","results","props","FALLBACK","dispose","mapArray","list","mapFn","items","mapped","disposers","indexes","newItems","j","newLen","newIndices","newIndicesNext","temp","tempdisposers","tempIndexes","start","end","newEnd","item","disposer","mapper","set","indexArray","signals","createComponent","Comp","trueFn","propTraps","_","property","receiver","resolveSource","resolveSources","length","mergeProps","proxy","keys","target","sourcesMap","defined","sourceKeys","desc","splitProps","blocked","k","otherObject","objects","propName","isDefaultDesc","objectIndex","lazy","comp","wrap","ctx","mod","r","counter","createUniqueId","narrowedError","name","For","fallback","Index","Show","keyed","condition","child","Errors","resetErrorBoundaries","ErrorBoundary","errored","setErrored","SuspenseListContext","Suspense","show","flicker","inFallback","setFallback","store","ref","listContext","rendered","showContent","showFallback","booleans","Properties","ChildProperties","Aliases","PropAliases","getPropAlias","prop","tagName","DelegatedEvents","SVGNamespace","reconcileArrays","parentNode","bLength","aEnd","bEnd","aStart","bStart","after","map","sequence","$$EVENTS","render","code","element","insert","template","html","isCE","isSVG","create","delegateEvents","eventNames","document","eventHandler","setAttribute","setAttributeNS","namespace","className","addEventListener","delegate","handlerFn","classList","classKeys","prevKeys","toggleClassKey","classValue","style","nodeStyle","spread","skipChildren","prevProps","insertExpression","assign","use","arg","parent","accessor","marker","initial","skipRef","assignProp","toPropertyName","w","classNames","nameLen","isProp","isChildProp","propAlias","forceProp","h","ns","data","unwrapArray","cleaned","multi","cleanChildren","array","currentArray","normalizeIncomingArray","nodes","appendNodes","normalized","unwrap","replacement","inserted","el","isParent","isServer","SVG_NAMESPACE","createElement","Portal","useShadow","mount","content","hydrating","clean","setClean","cleanup","container","renderRoot","Icon","_el$","_tmpl$","_$effect","_$className","icon","class","ab","ay","by","ch","de","en","fr","hr","ja","je","ma","mo","od","ot","ru","zx","food","gold","stone","wood","popcap","oliveoil","vizier","FLAGS","RESOURCES","CivFlag","civ","rest","_$spread","_$mergeProps","src","abbr","CIVILIZATIONS","CIVILIZATION_BY_SLUG","acc","ITEMS","SUPPORTED_MODIFIER_PROPERTIES","SIMILAIR_ITEMS","PRETTY_AGE_MAP","PRETTY_AGE_MAP_LONG","PRETTY_AGE_MAP_SHORT","CURATED_CONTENT_API","staticMaps","SDK","mapCivsArgument","civs","configs","getItemTechnologies","type","includeAllCivsUnitSpecificTech","Get","technologies","unifiedItem","filteringByCiv","variations","modifiers","techMatchesItemId","m","modifierMatches","techMatchesItemClass","appliesToMultipleCivs","itemIsUnique","getMostAppropriateVariation","_a","splitUnitsIntoGroups","units","grouped","unit","splitBuildingsIntoGroups","buildings","splitTechnologiesIntroGroups","tech","matcher","_b","_c","matchesId","matchesClass","cl","canonicalItemName","group","getItemByCanonicalName","getMapAsItem","sdk","findClosestMatch","similair","closestMatch","capitlize","string","patchOrder","sortPatchDiff","getPatchHistory","patches","__vitePreload","cid","civAbbrs","history","patch","diff","section","civOverlap","lc","filter"],"sources":["../../../node_modules/solid-js/dist/solid.js","../../../node_modules/solid-js/web/dist/web.js","../../../app/frontend/lib/explorer/src/components/Icon.tsx","../../../app/frontend/lib/explorer/assets/flags/ab.png","../../../app/frontend/lib/explorer/assets/flags/ay.png","../../../app/frontend/lib/explorer/assets/flags/by.png","../../../app/frontend/lib/explorer/assets/flags/ch.png","../../../app/frontend/lib/explorer/assets/flags/de.png","../../../app/frontend/lib/explorer/assets/flags/en.png","../../../app/frontend/lib/explorer/assets/flags/fr.png","../../../app/frontend/lib/explorer/assets/flags/hr.png","../../../app/frontend/lib/explorer/assets/flags/ja.png","../../../app/frontend/lib/explorer/assets/flags/je.png","../../../app/frontend/lib/explorer/assets/flags/ma.png","../../../app/frontend/lib/explorer/assets/flags/mo.png","../../../app/frontend/lib/explorer/assets/flags/od.png","../../../app/frontend/lib/explorer/assets/flags/ot.png","../../../app/frontend/lib/explorer/assets/flags/ru.png","../../../app/frontend/lib/explorer/assets/flags/zx.png","../../../app/frontend/lib/explorer/assets/resources/food.png","../../../app/frontend/lib/explorer/assets/resources/gold.png","../../../app/frontend/lib/explorer/assets/resources/stone.png","../../../app/frontend/lib/explorer/assets/resources/wood.png","../../../app/frontend/lib/explorer/assets/resources/time.png","../../../app/frontend/lib/explorer/assets/resources/popcap.png","../../../app/frontend/lib/explorer/assets/resources/oliveoil.png","../../../app/frontend/lib/explorer/assets/resources/vizierpoints.png","../../../app/frontend/lib/explorer/assets/index.ts","../../../app/frontend/lib/explorer/src/components/CivFlag.tsx","../../../app/frontend/lib/explorer/data/src/lib/config/civs.ts","../../../app/frontend/lib/explorer/data/src/types/civs.ts","../../../app/frontend/lib/explorer/data/src/types/items.ts","../../../app/frontend/lib/explorer/src/config.ts","../../../app/frontend/lib/explorer/src/data/maps.ts","../../../app/frontend/lib/explorer/src/query/utils.ts"],"sourcesContent":["let taskIdCounter = 1,\n  isCallbackScheduled = false,\n  isPerformingWork = false,\n  taskQueue = [],\n  currentTask = null,\n  shouldYieldToHost = null,\n  yieldInterval = 5,\n  deadline = 0,\n  maxYieldInterval = 300,\n  scheduleCallback = null,\n  scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n  const channel = new MessageChannel(),\n    port = channel.port2;\n  scheduleCallback = () => port.postMessage(null);\n  channel.port1.onmessage = () => {\n    if (scheduledCallback !== null) {\n      const currentTime = performance.now();\n      deadline = currentTime + yieldInterval;\n      const hasTimeRemaining = true;\n      try {\n        const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n        if (!hasMoreWork) {\n          scheduledCallback = null;\n        } else port.postMessage(null);\n      } catch (error) {\n        port.postMessage(null);\n        throw error;\n      }\n    }\n  };\n  if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n    const scheduling = navigator.scheduling;\n    shouldYieldToHost = () => {\n      const currentTime = performance.now();\n      if (currentTime >= deadline) {\n        if (scheduling.isInputPending()) {\n          return true;\n        }\n        return currentTime >= maxYieldInterval;\n      } else {\n        return false;\n      }\n    };\n  } else {\n    shouldYieldToHost = () => performance.now() >= deadline;\n  }\n}\nfunction enqueue(taskQueue, task) {\n  function findIndex() {\n    let m = 0;\n    let n = taskQueue.length - 1;\n    while (m <= n) {\n      const k = n + m >> 1;\n      const cmp = task.expirationTime - taskQueue[k].expirationTime;\n      if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n    }\n    return m;\n  }\n  taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n  if (!scheduleCallback) setupScheduler();\n  let startTime = performance.now(),\n    timeout = maxSigned31BitInt;\n  if (options && options.timeout) timeout = options.timeout;\n  const newTask = {\n    id: taskIdCounter++,\n    fn,\n    startTime,\n    expirationTime: startTime + timeout\n  };\n  enqueue(taskQueue, newTask);\n  if (!isCallbackScheduled && !isPerformingWork) {\n    isCallbackScheduled = true;\n    scheduledCallback = flushWork;\n    scheduleCallback();\n  }\n  return newTask;\n}\nfunction cancelCallback(task) {\n  task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n  isCallbackScheduled = false;\n  isPerformingWork = true;\n  try {\n    return workLoop(hasTimeRemaining, initialTime);\n  } finally {\n    currentTask = null;\n    isPerformingWork = false;\n  }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n  let currentTime = initialTime;\n  currentTask = taskQueue[0] || null;\n  while (currentTask !== null) {\n    if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n      break;\n    }\n    const callback = currentTask.fn;\n    if (callback !== null) {\n      currentTask.fn = null;\n      const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n      callback(didUserCallbackTimeout);\n      currentTime = performance.now();\n      if (currentTask === taskQueue[0]) {\n        taskQueue.shift();\n      }\n    } else taskQueue.shift();\n    currentTask = taskQueue[0] || null;\n  }\n  return currentTask !== null;\n}\n\nconst sharedConfig = {\n  context: undefined,\n  registry: undefined\n};\nfunction setHydrateContext(context) {\n  sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n  return {\n    ...sharedConfig.context,\n    id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n    count: 0\n  };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n  equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n  owned: null,\n  cleanups: null,\n  context: null,\n  owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceFactory = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction createRoot(fn, detachedOwner) {\n  const listener = Listener,\n    owner = Owner,\n    unowned = fn.length === 0,\n    current = detachedOwner === undefined ? owner : detachedOwner,\n    root = unowned ? UNOWNED : {\n      owned: null,\n      cleanups: null,\n      context: current ? current.context : null,\n      owner: current\n    },\n    updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n  Owner = root;\n  Listener = null;\n  try {\n    return runUpdates(updateFn, true);\n  } finally {\n    Listener = listener;\n    Owner = owner;\n  }\n}\nfunction createSignal(value, options) {\n  options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n  const s = {\n    value,\n    observers: null,\n    observerSlots: null,\n    comparator: options.equals || undefined\n  };\n  const setter = value => {\n    if (typeof value === \"function\") {\n      if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n    }\n    return writeSignal(s, value);\n  };\n  return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n  const c = createComputation(fn, value, true, STALE);\n  if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n  const c = createComputation(fn, value, false, STALE);\n  if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n  runEffects = runUserEffects;\n  const c = createComputation(fn, value, false, STALE),\n    s = SuspenseContext && useContext(SuspenseContext);\n  if (s) c.suspense = s;\n  if (!options || !options.render) c.user = true;\n  Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n  let fn;\n  const c = createComputation(() => {\n      fn ? fn() : untrack(onInvalidate);\n      fn = undefined;\n    }, undefined, false, 0),\n    s = SuspenseContext && useContext(SuspenseContext);\n  if (s) c.suspense = s;\n  c.user = true;\n  return tracking => {\n    fn = tracking;\n    updateComputation(c);\n  };\n}\nfunction createMemo(fn, value, options) {\n  options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n  const c = createComputation(fn, value, true, 0);\n  c.observers = null;\n  c.observerSlots = null;\n  c.comparator = options.equals || undefined;\n  if (Scheduler && Transition && Transition.running) {\n    c.tState = STALE;\n    Updates.push(c);\n  } else updateComputation(c);\n  return readSignal.bind(c);\n}\nfunction isPromise(v) {\n  return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n  let source;\n  let fetcher;\n  let options;\n  if (arguments.length === 2 && typeof pFetcher === \"object\" || arguments.length === 1) {\n    source = true;\n    fetcher = pSource;\n    options = pFetcher || {};\n  } else {\n    source = pSource;\n    fetcher = pFetcher;\n    options = pOptions || {};\n  }\n  let pr = null,\n    initP = NO_INIT,\n    id = null,\n    loadedUnderTransition = false,\n    scheduled = false,\n    resolved = (\"initialValue\" in options),\n    dynamic = typeof source === \"function\" && createMemo(source);\n  const contexts = new Set(),\n    [value, setValue] = (options.storage || createSignal)(options.initialValue),\n    [error, setError] = createSignal(undefined),\n    [track, trigger] = createSignal(undefined, {\n      equals: false\n    }),\n    [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n  if (sharedConfig.context) {\n    id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n    let v;\n    if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v;\n  }\n  function loadEnd(p, v, error, key) {\n    if (pr === p) {\n      pr = null;\n      key !== undefined && (resolved = true);\n      if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n        value: v\n      }));\n      initP = NO_INIT;\n      if (Transition && p && loadedUnderTransition) {\n        Transition.promises.delete(p);\n        loadedUnderTransition = false;\n        runUpdates(() => {\n          Transition.running = true;\n          completeLoad(v, error);\n        }, false);\n      } else completeLoad(v, error);\n    }\n    return v;\n  }\n  function completeLoad(v, err) {\n    runUpdates(() => {\n      if (err === undefined) setValue(() => v);\n      setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n      setError(err);\n      for (const c of contexts.keys()) c.decrement();\n      contexts.clear();\n    }, false);\n  }\n  function read() {\n    const c = SuspenseContext && useContext(SuspenseContext),\n      v = value(),\n      err = error();\n    if (err !== undefined && !pr) throw err;\n    if (Listener && !Listener.user && c) {\n      createComputed(() => {\n        track();\n        if (pr) {\n          if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n            c.increment();\n            contexts.add(c);\n          }\n        }\n      });\n    }\n    return v;\n  }\n  function load(refetching = true) {\n    if (refetching !== false && scheduled) return;\n    scheduled = false;\n    const lookup = dynamic ? dynamic() : source;\n    loadedUnderTransition = Transition && Transition.running;\n    if (lookup == null || lookup === false) {\n      loadEnd(pr, untrack(value));\n      return;\n    }\n    if (Transition && pr) Transition.promises.delete(pr);\n    const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, {\n      value: value(),\n      refetching\n    }));\n    if (!isPromise(p)) {\n      loadEnd(pr, p, undefined, lookup);\n      return p;\n    }\n    pr = p;\n    if (\"value\" in p) {\n      if (p.status === \"success\") loadEnd(pr, p.value, undefined, lookup);else loadEnd(pr, undefined, undefined, lookup);\n      return p;\n    }\n    scheduled = true;\n    queueMicrotask(() => scheduled = false);\n    runUpdates(() => {\n      setState(resolved ? \"refreshing\" : \"pending\");\n      trigger();\n    }, false);\n    return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n  }\n  Object.defineProperties(read, {\n    state: {\n      get: () => state()\n    },\n    error: {\n      get: () => error()\n    },\n    loading: {\n      get() {\n        const s = state();\n        return s === \"pending\" || s === \"refreshing\";\n      }\n    },\n    latest: {\n      get() {\n        if (!resolved) return read();\n        const err = error();\n        if (err && !pr) throw err;\n        return value();\n      }\n    }\n  });\n  if (dynamic) createComputed(() => load(false));else load(false);\n  return [read, {\n    refetch: load,\n    mutate: setValue\n  }];\n}\nfunction createDeferred(source, options) {\n  let t,\n    timeout = options ? options.timeoutMs : undefined;\n  const node = createComputation(() => {\n    if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n      timeout\n    } : undefined);\n    return source();\n  }, undefined, true);\n  const [deferred, setDeferred] = createSignal(Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, options);\n  updateComputation(node);\n  setDeferred(() => Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n  return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n  const subs = new Map();\n  const node = createComputation(p => {\n    const v = source();\n    for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n      for (const c of val.values()) {\n        c.state = STALE;\n        if (c.pure) Updates.push(c);else Effects.push(c);\n      }\n    }\n    return v;\n  }, undefined, true, STALE);\n  updateComputation(node);\n  return key => {\n    const listener = Listener;\n    if (listener) {\n      let l;\n      if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n      onCleanup(() => {\n        l.delete(listener);\n        !l.size && subs.delete(key);\n      });\n    }\n    return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n  };\n}\nfunction batch(fn) {\n  return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n  if (Listener === null) return fn();\n  const listener = Listener;\n  Listener = null;\n  try {\n    return fn();\n  } finally {\n    Listener = listener;\n  }\n}\nfunction on(deps, fn, options) {\n  const isArray = Array.isArray(deps);\n  let prevInput;\n  let defer = options && options.defer;\n  return prevValue => {\n    let input;\n    if (isArray) {\n      input = Array(deps.length);\n      for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n    } else input = deps();\n    if (defer) {\n      defer = false;\n      return undefined;\n    }\n    const result = untrack(() => fn(input, prevInput, prevValue));\n    prevInput = input;\n    return result;\n  };\n}\nfunction onMount(fn) {\n  createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n  if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n  return fn;\n}\nfunction catchError(fn, handler) {\n  ERROR || (ERROR = Symbol(\"error\"));\n  Owner = createComputation(undefined, undefined, true);\n  Owner.context = {\n    ...Owner.context,\n    [ERROR]: [handler]\n  };\n  if (Transition && Transition.running) Transition.sources.add(Owner);\n  try {\n    return fn();\n  } catch (err) {\n    handleError(err);\n  } finally {\n    Owner = Owner.owner;\n  }\n}\nfunction getListener() {\n  return Listener;\n}\nfunction getOwner() {\n  return Owner;\n}\nfunction runWithOwner(o, fn) {\n  const prev = Owner;\n  const prevListener = Listener;\n  Owner = o;\n  Listener = null;\n  try {\n    return runUpdates(fn, true);\n  } catch (err) {\n    handleError(err);\n  } finally {\n    Owner = prev;\n    Listener = prevListener;\n  }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n  Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n  if (Transition && Transition.running) {\n    fn();\n    return Transition.done;\n  }\n  const l = Listener;\n  const o = Owner;\n  return Promise.resolve().then(() => {\n    Listener = l;\n    Owner = o;\n    let t;\n    if (Scheduler || SuspenseContext) {\n      t = Transition || (Transition = {\n        sources: new Set(),\n        effects: [],\n        promises: new Set(),\n        disposed: new Set(),\n        queue: new Set(),\n        running: true\n      });\n      t.done || (t.done = new Promise(res => t.resolve = res));\n      t.running = true;\n    }\n    runUpdates(fn, false);\n    Listener = Owner = null;\n    return t ? t.done : undefined;\n  });\n}\nfunction useTransition() {\n  return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n  Effects.push.apply(Effects, e);\n  e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n  const id = Symbol(\"context\");\n  return {\n    id,\n    Provider: createProvider(id),\n    defaultValue\n  };\n}\nfunction useContext(context) {\n  return Owner && Owner.context && Owner.context[context.id] !== undefined ? Owner.context[context.id] : context.defaultValue;\n}\nfunction children(fn) {\n  const children = createMemo(fn);\n  const memo = createMemo(() => resolveChildren(children()));\n  memo.toArray = () => {\n    const c = memo();\n    return Array.isArray(c) ? c : c != null ? [c] : [];\n  };\n  return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n  return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory) {\n  if (ExternalSourceFactory) {\n    const oldFactory = ExternalSourceFactory;\n    ExternalSourceFactory = (fn, trigger) => {\n      const oldSource = oldFactory(fn, trigger);\n      const source = factory(x => oldSource.track(x), trigger);\n      return {\n        track: x => source.track(x),\n        dispose() {\n          source.dispose();\n          oldSource.dispose();\n        }\n      };\n    };\n  } else {\n    ExternalSourceFactory = factory;\n  }\n}\nfunction readSignal() {\n  const runningTransition = Transition && Transition.running;\n  if (this.sources && (runningTransition ? this.tState : this.state)) {\n    if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);else {\n      const updates = Updates;\n      Updates = null;\n      runUpdates(() => lookUpstream(this), false);\n      Updates = updates;\n    }\n  }\n  if (Listener) {\n    const sSlot = this.observers ? this.observers.length : 0;\n    if (!Listener.sources) {\n      Listener.sources = [this];\n      Listener.sourceSlots = [sSlot];\n    } else {\n      Listener.sources.push(this);\n      Listener.sourceSlots.push(sSlot);\n    }\n    if (!this.observers) {\n      this.observers = [Listener];\n      this.observerSlots = [Listener.sources.length - 1];\n    } else {\n      this.observers.push(Listener);\n      this.observerSlots.push(Listener.sources.length - 1);\n    }\n  }\n  if (runningTransition && Transition.sources.has(this)) return this.tValue;\n  return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n  let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n  if (!node.comparator || !node.comparator(current, value)) {\n    if (Transition) {\n      const TransitionRunning = Transition.running;\n      if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n        Transition.sources.add(node);\n        node.tValue = value;\n      }\n      if (!TransitionRunning) node.value = value;\n    } else node.value = value;\n    if (node.observers && node.observers.length) {\n      runUpdates(() => {\n        for (let i = 0; i < node.observers.length; i += 1) {\n          const o = node.observers[i];\n          const TransitionRunning = Transition && Transition.running;\n          if (TransitionRunning && Transition.disposed.has(o)) continue;\n          if (TransitionRunning ? !o.tState : !o.state) {\n            if (o.pure) Updates.push(o);else Effects.push(o);\n            if (o.observers) markDownstream(o);\n          }\n          if (!TransitionRunning) o.state = STALE;else o.tState = STALE;\n        }\n        if (Updates.length > 10e5) {\n          Updates = [];\n          if (false) ;\n          throw new Error();\n        }\n      }, false);\n    }\n  }\n  return value;\n}\nfunction updateComputation(node) {\n  if (!node.fn) return;\n  cleanNode(node);\n  const owner = Owner,\n    listener = Listener,\n    time = ExecCount;\n  Listener = Owner = node;\n  runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n  if (Transition && !Transition.running && Transition.sources.has(node)) {\n    queueMicrotask(() => {\n      runUpdates(() => {\n        Transition && (Transition.running = true);\n        Listener = Owner = node;\n        runComputation(node, node.tValue, time);\n        Listener = Owner = null;\n      }, false);\n    });\n  }\n  Listener = listener;\n  Owner = owner;\n}\nfunction runComputation(node, value, time) {\n  let nextValue;\n  try {\n    nextValue = node.fn(value);\n  } catch (err) {\n    if (node.pure) {\n      if (Transition && Transition.running) {\n        node.tState = STALE;\n        node.tOwned && node.tOwned.forEach(cleanNode);\n        node.tOwned = undefined;\n      } else {\n        node.state = STALE;\n        node.owned && node.owned.forEach(cleanNode);\n        node.owned = null;\n      }\n    }\n    node.updatedAt = time + 1;\n    return handleError(err);\n  }\n  if (!node.updatedAt || node.updatedAt <= time) {\n    if (node.updatedAt != null && \"observers\" in node) {\n      writeSignal(node, nextValue, true);\n    } else if (Transition && Transition.running && node.pure) {\n      Transition.sources.add(node);\n      node.tValue = nextValue;\n    } else node.value = nextValue;\n    node.updatedAt = time;\n  }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n  const c = {\n    fn,\n    state: state,\n    updatedAt: null,\n    owned: null,\n    sources: null,\n    sourceSlots: null,\n    cleanups: null,\n    value: init,\n    owner: Owner,\n    context: Owner ? Owner.context : null,\n    pure\n  };\n  if (Transition && Transition.running) {\n    c.state = 0;\n    c.tState = state;\n  }\n  if (Owner === null) ;else if (Owner !== UNOWNED) {\n    if (Transition && Transition.running && Owner.pure) {\n      if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n    } else {\n      if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n    }\n  }\n  if (ExternalSourceFactory) {\n    const [track, trigger] = createSignal(undefined, {\n      equals: false\n    });\n    const ordinary = ExternalSourceFactory(c.fn, trigger);\n    onCleanup(() => ordinary.dispose());\n    const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n    const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);\n    c.fn = x => {\n      track();\n      return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n    };\n  }\n  return c;\n}\nfunction runTop(node) {\n  const runningTransition = Transition && Transition.running;\n  if ((runningTransition ? node.tState : node.state) === 0) return;\n  if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n  if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n  const ancestors = [node];\n  while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n    if (runningTransition && Transition.disposed.has(node)) return;\n    if (runningTransition ? node.tState : node.state) ancestors.push(node);\n  }\n  for (let i = ancestors.length - 1; i >= 0; i--) {\n    node = ancestors[i];\n    if (runningTransition) {\n      let top = node,\n        prev = ancestors[i + 1];\n      while ((top = top.owner) && top !== prev) {\n        if (Transition.disposed.has(top)) return;\n      }\n    }\n    if ((runningTransition ? node.tState : node.state) === STALE) {\n      updateComputation(node);\n    } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n      const updates = Updates;\n      Updates = null;\n      runUpdates(() => lookUpstream(node, ancestors[0]), false);\n      Updates = updates;\n    }\n  }\n}\nfunction runUpdates(fn, init) {\n  if (Updates) return fn();\n  let wait = false;\n  if (!init) Updates = [];\n  if (Effects) wait = true;else Effects = [];\n  ExecCount++;\n  try {\n    const res = fn();\n    completeUpdates(wait);\n    return res;\n  } catch (err) {\n    if (!wait) Effects = null;\n    Updates = null;\n    handleError(err);\n  }\n}\nfunction completeUpdates(wait) {\n  if (Updates) {\n    if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n    Updates = null;\n  }\n  if (wait) return;\n  let res;\n  if (Transition) {\n    if (!Transition.promises.size && !Transition.queue.size) {\n      const sources = Transition.sources;\n      const disposed = Transition.disposed;\n      Effects.push.apply(Effects, Transition.effects);\n      res = Transition.resolve;\n      for (const e of Effects) {\n        \"tState\" in e && (e.state = e.tState);\n        delete e.tState;\n      }\n      Transition = null;\n      runUpdates(() => {\n        for (const d of disposed) cleanNode(d);\n        for (const v of sources) {\n          v.value = v.tValue;\n          if (v.owned) {\n            for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n          }\n          if (v.tOwned) v.owned = v.tOwned;\n          delete v.tValue;\n          delete v.tOwned;\n          v.tState = 0;\n        }\n        setTransPending(false);\n      }, false);\n    } else if (Transition.running) {\n      Transition.running = false;\n      Transition.effects.push.apply(Transition.effects, Effects);\n      Effects = null;\n      setTransPending(true);\n      return;\n    }\n  }\n  const e = Effects;\n  Effects = null;\n  if (e.length) runUpdates(() => runEffects(e), false);\n  if (res) res();\n}\nfunction runQueue(queue) {\n  for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n  for (let i = 0; i < queue.length; i++) {\n    const item = queue[i];\n    const tasks = Transition.queue;\n    if (!tasks.has(item)) {\n      tasks.add(item);\n      Scheduler(() => {\n        tasks.delete(item);\n        runUpdates(() => {\n          Transition.running = true;\n          runTop(item);\n        }, false);\n        Transition && (Transition.running = false);\n      });\n    }\n  }\n}\nfunction runUserEffects(queue) {\n  let i,\n    userLength = 0;\n  for (i = 0; i < queue.length; i++) {\n    const e = queue[i];\n    if (!e.user) runTop(e);else queue[userLength++] = e;\n  }\n  if (sharedConfig.context) {\n    if (sharedConfig.count) {\n      sharedConfig.effects || (sharedConfig.effects = []);\n      sharedConfig.effects.push(...queue.slice(0, userLength));\n      return;\n    } else if (sharedConfig.effects) {\n      queue = [...sharedConfig.effects, ...queue];\n      userLength += sharedConfig.effects.length;\n      delete sharedConfig.effects;\n    }\n    setHydrateContext();\n  }\n  for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n  const runningTransition = Transition && Transition.running;\n  if (runningTransition) node.tState = 0;else node.state = 0;\n  for (let i = 0; i < node.sources.length; i += 1) {\n    const source = node.sources[i];\n    if (source.sources) {\n      const state = runningTransition ? source.tState : source.state;\n      if (state === STALE) {\n        if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source);\n      } else if (state === PENDING) lookUpstream(source, ignore);\n    }\n  }\n}\nfunction markDownstream(node) {\n  const runningTransition = Transition && Transition.running;\n  for (let i = 0; i < node.observers.length; i += 1) {\n    const o = node.observers[i];\n    if (runningTransition ? !o.tState : !o.state) {\n      if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n      if (o.pure) Updates.push(o);else Effects.push(o);\n      o.observers && markDownstream(o);\n    }\n  }\n}\nfunction cleanNode(node) {\n  let i;\n  if (node.sources) {\n    while (node.sources.length) {\n      const source = node.sources.pop(),\n        index = node.sourceSlots.pop(),\n        obs = source.observers;\n      if (obs && obs.length) {\n        const n = obs.pop(),\n          s = source.observerSlots.pop();\n        if (index < obs.length) {\n          n.sourceSlots[s] = index;\n          obs[index] = n;\n          source.observerSlots[index] = s;\n        }\n      }\n    }\n  }\n  if (Transition && Transition.running && node.pure) {\n    if (node.tOwned) {\n      for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n      delete node.tOwned;\n    }\n    reset(node, true);\n  } else if (node.owned) {\n    for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n    node.owned = null;\n  }\n  if (node.cleanups) {\n    for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n    node.cleanups = null;\n  }\n  if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n}\nfunction reset(node, top) {\n  if (!top) {\n    node.tState = 0;\n    Transition.disposed.add(node);\n  }\n  if (node.owned) {\n    for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n  }\n}\nfunction castError(err) {\n  if (err instanceof Error) return err;\n  return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n    cause: err\n  });\n}\nfunction runErrors(err, fns, owner) {\n  try {\n    for (const f of fns) f(err);\n  } catch (e) {\n    handleError(e, owner && owner.owner || null);\n  }\n}\nfunction handleError(err, owner = Owner) {\n  const fns = ERROR && owner && owner.context && owner.context[ERROR];\n  const error = castError(err);\n  if (!fns) throw error;\n  if (Effects) Effects.push({\n    fn() {\n      runErrors(error, fns, owner);\n    },\n    state: STALE\n  });else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n  if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n  if (Array.isArray(children)) {\n    const results = [];\n    for (let i = 0; i < children.length; i++) {\n      const result = resolveChildren(children[i]);\n      Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n    }\n    return results;\n  }\n  return children;\n}\nfunction createProvider(id, options) {\n  return function provider(props) {\n    let res;\n    createRenderEffect(() => res = untrack(() => {\n      Owner.context = {\n        ...Owner.context,\n        [id]: props.value\n      };\n      return children(() => props.children);\n    }), undefined);\n    return res;\n  };\n}\nfunction onError(fn) {\n  ERROR || (ERROR = Symbol(\"error\"));\n  if (Owner === null) ;else if (Owner.context === null || !Owner.context[ERROR]) {\n    Owner.context = {\n      ...Owner.context,\n      [ERROR]: [fn]\n    };\n    mutateContext(Owner, ERROR, [fn]);\n  } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n  if (o.owned) {\n    for (let i = 0; i < o.owned.length; i++) {\n      if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n      if (!o.owned[i].context) {\n        o.owned[i].context = o.context;\n        mutateContext(o.owned[i], key, value);\n      } else if (!o.owned[i].context[key]) {\n        o.owned[i].context[key] = value;\n        mutateContext(o.owned[i], key, value);\n      }\n    }\n  }\n}\n\nfunction observable(input) {\n  return {\n    subscribe(observer) {\n      if (!(observer instanceof Object) || observer == null) {\n        throw new TypeError(\"Expected the observer to be an object.\");\n      }\n      const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n      if (!handler) {\n        return {\n          unsubscribe() {}\n        };\n      }\n      const dispose = createRoot(disposer => {\n        createEffect(() => {\n          const v = input();\n          untrack(() => handler(v));\n        });\n        return disposer;\n      });\n      if (getOwner()) onCleanup(dispose);\n      return {\n        unsubscribe() {\n          dispose();\n        }\n      };\n    },\n    [Symbol.observable || \"@@observable\"]() {\n      return this;\n    }\n  };\n}\nfunction from(producer) {\n  const [s, set] = createSignal(undefined, {\n    equals: false\n  });\n  if (\"subscribe\" in producer) {\n    const unsub = producer.subscribe(v => set(() => v));\n    onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n  } else {\n    const clean = producer(set);\n    onCleanup(clean);\n  }\n  return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n  for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n  let items = [],\n    mapped = [],\n    disposers = [],\n    len = 0,\n    indexes = mapFn.length > 1 ? [] : null;\n  onCleanup(() => dispose(disposers));\n  return () => {\n    let newItems = list() || [],\n      i,\n      j;\n    newItems[$TRACK];\n    return untrack(() => {\n      let newLen = newItems.length,\n        newIndices,\n        newIndicesNext,\n        temp,\n        tempdisposers,\n        tempIndexes,\n        start,\n        end,\n        newEnd,\n        item;\n      if (newLen === 0) {\n        if (len !== 0) {\n          dispose(disposers);\n          disposers = [];\n          items = [];\n          mapped = [];\n          len = 0;\n          indexes && (indexes = []);\n        }\n        if (options.fallback) {\n          items = [FALLBACK];\n          mapped[0] = createRoot(disposer => {\n            disposers[0] = disposer;\n            return options.fallback();\n          });\n          len = 1;\n        }\n      }\n      else if (len === 0) {\n        mapped = new Array(newLen);\n        for (j = 0; j < newLen; j++) {\n          items[j] = newItems[j];\n          mapped[j] = createRoot(mapper);\n        }\n        len = newLen;\n      } else {\n        temp = new Array(newLen);\n        tempdisposers = new Array(newLen);\n        indexes && (tempIndexes = new Array(newLen));\n        for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n        for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n          temp[newEnd] = mapped[end];\n          tempdisposers[newEnd] = disposers[end];\n          indexes && (tempIndexes[newEnd] = indexes[end]);\n        }\n        newIndices = new Map();\n        newIndicesNext = new Array(newEnd + 1);\n        for (j = newEnd; j >= start; j--) {\n          item = newItems[j];\n          i = newIndices.get(item);\n          newIndicesNext[j] = i === undefined ? -1 : i;\n          newIndices.set(item, j);\n        }\n        for (i = start; i <= end; i++) {\n          item = items[i];\n          j = newIndices.get(item);\n          if (j !== undefined && j !== -1) {\n            temp[j] = mapped[i];\n            tempdisposers[j] = disposers[i];\n            indexes && (tempIndexes[j] = indexes[i]);\n            j = newIndicesNext[j];\n            newIndices.set(item, j);\n          } else disposers[i]();\n        }\n        for (j = start; j < newLen; j++) {\n          if (j in temp) {\n            mapped[j] = temp[j];\n            disposers[j] = tempdisposers[j];\n            if (indexes) {\n              indexes[j] = tempIndexes[j];\n              indexes[j](j);\n            }\n          } else mapped[j] = createRoot(mapper);\n        }\n        mapped = mapped.slice(0, len = newLen);\n        items = newItems.slice(0);\n      }\n      return mapped;\n    });\n    function mapper(disposer) {\n      disposers[j] = disposer;\n      if (indexes) {\n        const [s, set] = createSignal(j);\n        indexes[j] = set;\n        return mapFn(newItems[j], s);\n      }\n      return mapFn(newItems[j]);\n    }\n  };\n}\nfunction indexArray(list, mapFn, options = {}) {\n  let items = [],\n    mapped = [],\n    disposers = [],\n    signals = [],\n    len = 0,\n    i;\n  onCleanup(() => dispose(disposers));\n  return () => {\n    const newItems = list() || [];\n    newItems[$TRACK];\n    return untrack(() => {\n      if (newItems.length === 0) {\n        if (len !== 0) {\n          dispose(disposers);\n          disposers = [];\n          items = [];\n          mapped = [];\n          len = 0;\n          signals = [];\n        }\n        if (options.fallback) {\n          items = [FALLBACK];\n          mapped[0] = createRoot(disposer => {\n            disposers[0] = disposer;\n            return options.fallback();\n          });\n          len = 1;\n        }\n        return mapped;\n      }\n      if (items[0] === FALLBACK) {\n        disposers[0]();\n        disposers = [];\n        items = [];\n        mapped = [];\n        len = 0;\n      }\n      for (i = 0; i < newItems.length; i++) {\n        if (i < items.length && items[i] !== newItems[i]) {\n          signals[i](() => newItems[i]);\n        } else if (i >= items.length) {\n          mapped[i] = createRoot(mapper);\n        }\n      }\n      for (; i < items.length; i++) {\n        disposers[i]();\n      }\n      len = signals.length = disposers.length = newItems.length;\n      items = newItems.slice(0);\n      return mapped = mapped.slice(0, len);\n    });\n    function mapper(disposer) {\n      disposers[i] = disposer;\n      const [s, set] = createSignal(newItems[i]);\n      signals[i] = set;\n      return mapFn(s, i);\n    }\n  };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n  hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n  if (hydrationEnabled) {\n    if (sharedConfig.context) {\n      const c = sharedConfig.context;\n      setHydrateContext(nextHydrateContext());\n      const r = untrack(() => Comp(props || {}));\n      setHydrateContext(c);\n      return r;\n    }\n  }\n  return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n  return true;\n}\nconst propTraps = {\n  get(_, property, receiver) {\n    if (property === $PROXY) return receiver;\n    return _.get(property);\n  },\n  has(_, property) {\n    if (property === $PROXY) return true;\n    return _.has(property);\n  },\n  set: trueFn,\n  deleteProperty: trueFn,\n  getOwnPropertyDescriptor(_, property) {\n    return {\n      configurable: true,\n      enumerable: true,\n      get() {\n        return _.get(property);\n      },\n      set: trueFn,\n      deleteProperty: trueFn\n    };\n  },\n  ownKeys(_) {\n    return _.keys();\n  }\n};\nfunction resolveSource(s) {\n  return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n  for (let i = 0, length = this.length; i < length; ++i) {\n    const v = this[i]();\n    if (v !== undefined) return v;\n  }\n}\nfunction mergeProps(...sources) {\n  let proxy = false;\n  for (let i = 0; i < sources.length; i++) {\n    const s = sources[i];\n    proxy = proxy || !!s && $PROXY in s;\n    sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n  }\n  if (proxy) {\n    return new Proxy({\n      get(property) {\n        for (let i = sources.length - 1; i >= 0; i--) {\n          const v = resolveSource(sources[i])[property];\n          if (v !== undefined) return v;\n        }\n      },\n      has(property) {\n        for (let i = sources.length - 1; i >= 0; i--) {\n          if (property in resolveSource(sources[i])) return true;\n        }\n        return false;\n      },\n      keys() {\n        const keys = [];\n        for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n        return [...new Set(keys)];\n      }\n    }, propTraps);\n  }\n  const target = {};\n  const sourcesMap = {};\n  const defined = new Set();\n  for (let i = sources.length - 1; i >= 0; i--) {\n    const source = sources[i];\n    if (!source) continue;\n    const sourceKeys = Object.getOwnPropertyNames(source);\n    for (let i = 0, length = sourceKeys.length; i < length; i++) {\n      const key = sourceKeys[i];\n      if (key === \"__proto__\" || key === \"constructor\") continue;\n      const desc = Object.getOwnPropertyDescriptor(source, key);\n      if (!defined.has(key)) {\n        if (desc.get) {\n          defined.add(key);\n          Object.defineProperty(target, key, {\n            enumerable: true,\n            configurable: true,\n            get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])\n          });\n        } else {\n          if (desc.value !== undefined) defined.add(key);\n          target[key] = desc.value;\n        }\n      } else {\n        const sources = sourcesMap[key];\n        if (sources) {\n          if (desc.get) {\n            sources.push(desc.get.bind(source));\n          } else if (desc.value !== undefined) {\n            sources.push(() => desc.value);\n          }\n        } else if (target[key] === undefined) target[key] = desc.value;\n      }\n    }\n  }\n  return target;\n}\nfunction splitProps(props, ...keys) {\n  if ($PROXY in props) {\n    const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n    const res = keys.map(k => {\n      return new Proxy({\n        get(property) {\n          return k.includes(property) ? props[property] : undefined;\n        },\n        has(property) {\n          return k.includes(property) && property in props;\n        },\n        keys() {\n          return k.filter(property => property in props);\n        }\n      }, propTraps);\n    });\n    res.push(new Proxy({\n      get(property) {\n        return blocked.has(property) ? undefined : props[property];\n      },\n      has(property) {\n        return blocked.has(property) ? false : property in props;\n      },\n      keys() {\n        return Object.keys(props).filter(k => !blocked.has(k));\n      }\n    }, propTraps));\n    return res;\n  }\n  const otherObject = {};\n  const objects = keys.map(() => ({}));\n  for (const propName of Object.getOwnPropertyNames(props)) {\n    const desc = Object.getOwnPropertyDescriptor(props, propName);\n    const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n    let blocked = false;\n    let objectIndex = 0;\n    for (const k of keys) {\n      if (k.includes(propName)) {\n        blocked = true;\n        isDefaultDesc ? objects[objectIndex][propName] = desc.value : Object.defineProperty(objects[objectIndex], propName, desc);\n      }\n      ++objectIndex;\n    }\n    if (!blocked) {\n      isDefaultDesc ? otherObject[propName] = desc.value : Object.defineProperty(otherObject, propName, desc);\n    }\n  }\n  return [...objects, otherObject];\n}\nfunction lazy(fn) {\n  let comp;\n  let p;\n  const wrap = props => {\n    const ctx = sharedConfig.context;\n    if (ctx) {\n      const [s, set] = createSignal();\n      sharedConfig.count || (sharedConfig.count = 0);\n      sharedConfig.count++;\n      (p || (p = fn())).then(mod => {\n        setHydrateContext(ctx);\n        sharedConfig.count--;\n        set(() => mod.default);\n        setHydrateContext();\n      });\n      comp = s;\n    } else if (!comp) {\n      const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n      comp = s;\n    }\n    let Comp;\n    return createMemo(() => (Comp = comp()) && untrack(() => {\n      if (false) ;\n      if (!ctx) return Comp(props);\n      const c = sharedConfig.context;\n      setHydrateContext(ctx);\n      const r = Comp(props);\n      setHydrateContext(c);\n      return r;\n    }));\n  };\n  wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n  return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n  const ctx = sharedConfig.context;\n  return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n  const fallback = \"fallback\" in props && {\n    fallback: () => props.fallback\n  };\n  return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n  const fallback = \"fallback\" in props && {\n    fallback: () => props.fallback\n  };\n  return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n  const keyed = props.keyed;\n  const condition = createMemo(() => props.when, undefined, {\n    equals: (a, b) => keyed ? a === b : !a === !b\n  });\n  return createMemo(() => {\n    const c = condition();\n    if (c) {\n      const child = props.children;\n      const fn = typeof child === \"function\" && child.length > 0;\n      return fn ? untrack(() => child(keyed ? c : () => {\n        if (!untrack(condition)) throw narrowedError(\"Show\");\n        return props.when;\n      })) : child;\n    }\n    return props.fallback;\n  }, undefined, undefined);\n}\nfunction Switch(props) {\n  let keyed = false;\n  const equals = (a, b) => a[0] === b[0] && (keyed ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n  const conditions = children(() => props.children),\n    evalConditions = createMemo(() => {\n      let conds = conditions();\n      if (!Array.isArray(conds)) conds = [conds];\n      for (let i = 0; i < conds.length; i++) {\n        const c = conds[i].when;\n        if (c) {\n          keyed = !!conds[i].keyed;\n          return [i, c, conds[i]];\n        }\n      }\n      return [-1];\n    }, undefined, {\n      equals\n    });\n  return createMemo(() => {\n    const [index, when, cond] = evalConditions();\n    if (index < 0) return props.fallback;\n    const c = cond.children;\n    const fn = typeof c === \"function\" && c.length > 0;\n    return fn ? untrack(() => c(keyed ? when : () => {\n      if (untrack(evalConditions)[0] !== index) throw narrowedError(\"Match\");\n      return cond.when;\n    })) : c;\n  }, undefined, undefined);\n}\nfunction Match(props) {\n  return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n  Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n  let err;\n  if (sharedConfig.context && sharedConfig.load) err = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count);\n  const [errored, setErrored] = createSignal(err, undefined);\n  Errors || (Errors = new Set());\n  Errors.add(setErrored);\n  onCleanup(() => Errors.delete(setErrored));\n  return createMemo(() => {\n    let e;\n    if (e = errored()) {\n      const f = props.fallback;\n      return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n    }\n    return catchError(() => props.children, setErrored);\n  }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n  let [wrapper, setWrapper] = createSignal(() => ({\n      inFallback: false\n    })),\n    show;\n  const listContext = useContext(SuspenseListContext);\n  const [registry, setRegistry] = createSignal([]);\n  if (listContext) {\n    show = listContext.register(createMemo(() => wrapper()().inFallback));\n  }\n  const resolved = createMemo(prev => {\n    const reveal = props.revealOrder,\n      tail = props.tail,\n      {\n        showContent = true,\n        showFallback = true\n      } = show ? show() : {},\n      reg = registry(),\n      reverse = reveal === \"backwards\";\n    if (reveal === \"together\") {\n      const all = reg.every(inFallback => !inFallback());\n      const res = reg.map(() => ({\n        showContent: all && showContent,\n        showFallback\n      }));\n      res.inFallback = !all;\n      return res;\n    }\n    let stop = false;\n    let inFallback = prev.inFallback;\n    const res = [];\n    for (let i = 0, len = reg.length; i < len; i++) {\n      const n = reverse ? len - i - 1 : i,\n        s = reg[n]();\n      if (!stop && !s) {\n        res[n] = {\n          showContent,\n          showFallback\n        };\n      } else {\n        const next = !stop;\n        if (next) inFallback = true;\n        res[n] = {\n          showContent: next,\n          showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n        };\n        stop = true;\n      }\n    }\n    if (!stop) inFallback = false;\n    res.inFallback = inFallback;\n    return res;\n  }, {\n    inFallback: false\n  });\n  setWrapper(() => resolved);\n  return createComponent(SuspenseListContext.Provider, {\n    value: {\n      register: inFallback => {\n        let index;\n        setRegistry(registry => {\n          index = registry.length;\n          return [...registry, inFallback];\n        });\n        return createMemo(() => resolved()[index], undefined, {\n          equals: suspenseListEquals\n        });\n      }\n    },\n    get children() {\n      return props.children;\n    }\n  });\n}\nfunction Suspense(props) {\n  let counter = 0,\n    show,\n    ctx,\n    p,\n    flicker,\n    error;\n  const [inFallback, setFallback] = createSignal(false),\n    SuspenseContext = getSuspenseContext(),\n    store = {\n      increment: () => {\n        if (++counter === 1) setFallback(true);\n      },\n      decrement: () => {\n        if (--counter === 0) setFallback(false);\n      },\n      inFallback,\n      effects: [],\n      resolved: false\n    },\n    owner = getOwner();\n  if (sharedConfig.context && sharedConfig.load) {\n    const key = sharedConfig.context.id + sharedConfig.context.count;\n    let ref = sharedConfig.load(key);\n    if (ref && (typeof ref !== \"object\" || ref.status !== \"success\")) p = ref;\n    if (p && p !== \"$$f\") {\n      const [s, set] = createSignal(undefined, {\n        equals: false\n      });\n      flicker = s;\n      p.then(() => {\n        sharedConfig.gather(key);\n        setHydrateContext(ctx);\n        set();\n        setHydrateContext();\n      }).catch(err => {\n        if (err || sharedConfig.done) {\n          err && (error = err);\n          return set();\n        }\n      });\n    }\n  }\n  const listContext = useContext(SuspenseListContext);\n  if (listContext) show = listContext.register(store.inFallback);\n  let dispose;\n  onCleanup(() => dispose && dispose());\n  return createComponent(SuspenseContext.Provider, {\n    value: store,\n    get children() {\n      return createMemo(() => {\n        if (error) throw error;\n        ctx = sharedConfig.context;\n        if (flicker) {\n          flicker();\n          return flicker = undefined;\n        }\n        if (ctx && p === \"$$f\") setHydrateContext();\n        const rendered = createMemo(() => props.children);\n        return createMemo(prev => {\n          const inFallback = store.inFallback(),\n            {\n              showContent = true,\n              showFallback = true\n            } = show ? show() : {};\n          if ((!inFallback || p && p !== \"$$f\") && showContent) {\n            store.resolved = true;\n            dispose && dispose();\n            dispose = ctx = p = undefined;\n            resumeEffects(store.effects);\n            return rendered();\n          }\n          if (!showFallback) return;\n          if (dispose) return prev;\n          return createRoot(disposer => {\n            dispose = disposer;\n            if (ctx) {\n              setHydrateContext({\n                id: ctx.id + \"f\",\n                count: 0\n              });\n              ctx = undefined;\n            }\n            return props.fallback;\n          }, owner);\n        });\n      });\n    }\n  });\n}\n\nconst DEV = undefined;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, catchError, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createRoot, sharedConfig, createRenderEffect, untrack, enableHydration, getOwner, createEffect, runWithOwner, createMemo, createSignal, onCleanup, splitProps } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, createMemo as memo, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst Properties = /*#__PURE__*/new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n  className: \"class\",\n  htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n  class: \"className\",\n  formnovalidate: {\n    $: \"formNoValidate\",\n    BUTTON: 1,\n    INPUT: 1\n  },\n  ismap: {\n    $: \"isMap\",\n    IMG: 1\n  },\n  nomodule: {\n    $: \"noModule\",\n    SCRIPT: 1\n  },\n  playsinline: {\n    $: \"playsInline\",\n    VIDEO: 1\n  },\n  readonly: {\n    $: \"readOnly\",\n    INPUT: 1,\n    TEXTAREA: 1\n  }\n});\nfunction getPropAlias(prop, tagName) {\n  const a = PropAliases[prop];\n  return typeof a === \"object\" ? a[tagName] ? a[\"$\"] : undefined : a;\n}\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\n\nfunction reconcileArrays(parentNode, a, b) {\n  let bLength = b.length,\n    aEnd = a.length,\n    bEnd = bLength,\n    aStart = 0,\n    bStart = 0,\n    after = a[aEnd - 1].nextSibling,\n    map = null;\n  while (aStart < aEnd || bStart < bEnd) {\n    if (a[aStart] === b[bStart]) {\n      aStart++;\n      bStart++;\n      continue;\n    }\n    while (a[aEnd - 1] === b[bEnd - 1]) {\n      aEnd--;\n      bEnd--;\n    }\n    if (aEnd === aStart) {\n      const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n      while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n    } else if (bEnd === bStart) {\n      while (aStart < aEnd) {\n        if (!map || !map.has(a[aStart])) a[aStart].remove();\n        aStart++;\n      }\n    } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n      const node = a[--aEnd].nextSibling;\n      parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n      parentNode.insertBefore(b[--bEnd], node);\n      a[aEnd] = b[bEnd];\n    } else {\n      if (!map) {\n        map = new Map();\n        let i = bStart;\n        while (i < bEnd) map.set(b[i], i++);\n      }\n      const index = map.get(a[aStart]);\n      if (index != null) {\n        if (bStart < index && index < bEnd) {\n          let i = aStart,\n            sequence = 1,\n            t;\n          while (++i < aEnd && i < bEnd) {\n            if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n            sequence++;\n          }\n          if (sequence > index - bStart) {\n            const node = a[aStart];\n            while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n          } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n        } else aStart++;\n      } else a[aStart++].remove();\n    }\n  }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n  let disposer;\n  createRoot(dispose => {\n    disposer = dispose;\n    element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n  }, options.owner);\n  return () => {\n    disposer();\n    element.textContent = \"\";\n  };\n}\nfunction template(html, isCE, isSVG) {\n  let node;\n  const create = () => {\n    const t = document.createElement(\"template\");\n    t.innerHTML = html;\n    return isSVG ? t.content.firstChild.firstChild : t.content.firstChild;\n  };\n  const fn = isCE ? () => untrack(() => document.importNode(node || (node = create()), true)) : () => (node || (node = create())).cloneNode(true);\n  fn.cloneNode = fn;\n  return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n  const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n  for (let i = 0, l = eventNames.length; i < l; i++) {\n    const name = eventNames[i];\n    if (!e.has(name)) {\n      e.add(name);\n      document.addEventListener(name, eventHandler);\n    }\n  }\n}\nfunction clearDelegatedEvents(document = window.document) {\n  if (document[$$EVENTS]) {\n    for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n    delete document[$$EVENTS];\n  }\n}\nfunction setProperty(node, name, value) {\n  !sharedConfig.context && (node[name] = value);\n}\nfunction setAttribute(node, name, value) {\n  if (sharedConfig.context) return;\n  if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n  if (sharedConfig.context) return;\n  if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n  if (sharedConfig.context) return;\n  if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n  if (delegate) {\n    if (Array.isArray(handler)) {\n      node[`$$${name}`] = handler[0];\n      node[`$$${name}Data`] = handler[1];\n    } else node[`$$${name}`] = handler;\n  } else if (Array.isArray(handler)) {\n    const handlerFn = handler[0];\n    node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n  } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n  const classKeys = Object.keys(value || {}),\n    prevKeys = Object.keys(prev);\n  let i, len;\n  for (i = 0, len = prevKeys.length; i < len; i++) {\n    const key = prevKeys[i];\n    if (!key || key === \"undefined\" || value[key]) continue;\n    toggleClassKey(node, key, false);\n    delete prev[key];\n  }\n  for (i = 0, len = classKeys.length; i < len; i++) {\n    const key = classKeys[i],\n      classValue = !!value[key];\n    if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n    toggleClassKey(node, key, true);\n    prev[key] = classValue;\n  }\n  return prev;\n}\nfunction style(node, value, prev) {\n  if (!value) return prev ? setAttribute(node, \"style\") : value;\n  const nodeStyle = node.style;\n  if (typeof value === \"string\") return nodeStyle.cssText = value;\n  typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n  prev || (prev = {});\n  value || (value = {});\n  let v, s;\n  for (s in prev) {\n    value[s] == null && nodeStyle.removeProperty(s);\n    delete prev[s];\n  }\n  for (s in value) {\n    v = value[s];\n    if (v !== prev[s]) {\n      nodeStyle.setProperty(s, v);\n      prev[s] = v;\n    }\n  }\n  return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n  const prevProps = {};\n  if (!skipChildren) {\n    createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n  }\n  createRenderEffect(() => props.ref && props.ref(node));\n  createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n  return prevProps;\n}\nfunction dynamicProperty(props, key) {\n  const src = props[key];\n  Object.defineProperty(props, key, {\n    get() {\n      return src();\n    },\n    enumerable: true\n  });\n  return props;\n}\nfunction use(fn, element, arg) {\n  return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n  if (marker !== undefined && !initial) initial = [];\n  if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n  createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n  props || (props = {});\n  for (const prop in prevProps) {\n    if (!(prop in props)) {\n      if (prop === \"children\") continue;\n      prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n    }\n  }\n  for (const prop in props) {\n    if (prop === \"children\") {\n      if (!skipChildren) insertExpression(node, props.children);\n      continue;\n    }\n    const value = props[prop];\n    prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n  }\n}\nfunction hydrate$1(code, element, options = {}) {\n  sharedConfig.completed = globalThis._$HY.completed;\n  sharedConfig.events = globalThis._$HY.events;\n  sharedConfig.load = id => globalThis._$HY.r[id];\n  sharedConfig.has = id => id in globalThis._$HY.r;\n  sharedConfig.gather = root => gatherHydratable(element, root);\n  sharedConfig.registry = new Map();\n  sharedConfig.context = {\n    id: options.renderId || \"\",\n    count: 0\n  };\n  gatherHydratable(element, options.renderId);\n  const dispose = render(code, element, [...element.childNodes], options);\n  sharedConfig.context = null;\n  return dispose;\n}\nfunction getNextElement(template) {\n  let node, key;\n  if (!sharedConfig.context || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n    return template();\n  }\n  if (sharedConfig.completed) sharedConfig.completed.add(node);\n  sharedConfig.registry.delete(key);\n  return node;\n}\nfunction getNextMatch(el, nodeName) {\n  while (el && el.localName !== nodeName) el = el.nextSibling;\n  return el;\n}\nfunction getNextMarker(start) {\n  let end = start,\n    count = 0,\n    current = [];\n  if (sharedConfig.context) {\n    while (end) {\n      if (end.nodeType === 8) {\n        const v = end.nodeValue;\n        if (v === \"$\") count++;else if (v === \"/\") {\n          if (count === 0) return [end, current];\n          count--;\n        }\n      }\n      current.push(end);\n      end = end.nextSibling;\n    }\n  }\n  return [end, current];\n}\nfunction runHydrationEvents() {\n  if (sharedConfig.events && !sharedConfig.events.queued) {\n    queueMicrotask(() => {\n      const {\n        completed,\n        events\n      } = sharedConfig;\n      events.queued = false;\n      while (events.length) {\n        const [el, e] = events[0];\n        if (!completed.has(el)) return;\n        eventHandler(e);\n        events.shift();\n      }\n    });\n    sharedConfig.events.queued = true;\n  }\n}\nfunction toPropertyName(name) {\n  return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n  const classNames = key.trim().split(/\\s+/);\n  for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n  let isCE, isProp, isChildProp, propAlias, forceProp;\n  if (prop === \"style\") return style(node, value, prev);\n  if (prop === \"classList\") return classList(node, value, prev);\n  if (value === prev) return prev;\n  if (prop === \"ref\") {\n    if (!skipRef) value(node);\n  } else if (prop.slice(0, 3) === \"on:\") {\n    const e = prop.slice(3);\n    prev && node.removeEventListener(e, prev);\n    value && node.addEventListener(e, value);\n  } else if (prop.slice(0, 10) === \"oncapture:\") {\n    const e = prop.slice(10);\n    prev && node.removeEventListener(e, prev, true);\n    value && node.addEventListener(e, value, true);\n  } else if (prop.slice(0, 2) === \"on\") {\n    const name = prop.slice(2).toLowerCase();\n    const delegate = DelegatedEvents.has(name);\n    if (!delegate && prev) {\n      const h = Array.isArray(prev) ? prev[0] : prev;\n      node.removeEventListener(name, h);\n    }\n    if (delegate || value) {\n      addEventListener(node, name, value, delegate);\n      delegate && delegateEvents([name]);\n    }\n  } else if (prop.slice(0, 5) === \"attr:\") {\n    setAttribute(node, prop.slice(5), value);\n  } else if ((forceProp = prop.slice(0, 5) === \"prop:\") || (isChildProp = ChildProperties.has(prop)) || !isSVG && ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\"))) {\n    if (forceProp) {\n      prop = prop.slice(5);\n      isProp = true;\n    } else if (sharedConfig.context) return value;\n    if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[propAlias || prop] = value;\n  } else {\n    const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n    if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n  }\n  return value;\n}\nfunction eventHandler(e) {\n  const key = `$$${e.type}`;\n  let node = e.composedPath && e.composedPath()[0] || e.target;\n  if (e.target !== node) {\n    Object.defineProperty(e, \"target\", {\n      configurable: true,\n      value: node\n    });\n  }\n  Object.defineProperty(e, \"currentTarget\", {\n    configurable: true,\n    get() {\n      return node || document;\n    }\n  });\n  if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n  while (node) {\n    const handler = node[key];\n    if (handler && !node.disabled) {\n      const data = node[`${key}Data`];\n      data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n      if (e.cancelBubble) return;\n    }\n    node = node._$host || node.parentNode || node.host;\n  }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n  if (sharedConfig.context) {\n    !current && (current = [...parent.childNodes]);\n    let cleaned = [];\n    for (let i = 0; i < current.length; i++) {\n      const node = current[i];\n      if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();else cleaned.push(node);\n    }\n    current = cleaned;\n  }\n  while (typeof current === \"function\") current = current();\n  if (value === current) return current;\n  const t = typeof value,\n    multi = marker !== undefined;\n  parent = multi && current[0] && current[0].parentNode || parent;\n  if (t === \"string\" || t === \"number\") {\n    if (sharedConfig.context) return current;\n    if (t === \"number\") value = value.toString();\n    if (multi) {\n      let node = current[0];\n      if (node && node.nodeType === 3) {\n        node.data = value;\n      } else node = document.createTextNode(value);\n      current = cleanChildren(parent, current, marker, node);\n    } else {\n      if (current !== \"\" && typeof current === \"string\") {\n        current = parent.firstChild.data = value;\n      } else current = parent.textContent = value;\n    }\n  } else if (value == null || t === \"boolean\") {\n    if (sharedConfig.context) return current;\n    current = cleanChildren(parent, current, marker);\n  } else if (t === \"function\") {\n    createRenderEffect(() => {\n      let v = value();\n      while (typeof v === \"function\") v = v();\n      current = insertExpression(parent, v, current, marker);\n    });\n    return () => current;\n  } else if (Array.isArray(value)) {\n    const array = [];\n    const currentArray = current && Array.isArray(current);\n    if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n      createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n      return () => current;\n    }\n    if (sharedConfig.context) {\n      if (!array.length) return current;\n      if (marker === undefined) return [...parent.childNodes];\n      let node = array[0];\n      let nodes = [node];\n      while ((node = node.nextSibling) !== marker) nodes.push(node);\n      return current = nodes;\n    }\n    if (array.length === 0) {\n      current = cleanChildren(parent, current, marker);\n      if (multi) return current;\n    } else if (currentArray) {\n      if (current.length === 0) {\n        appendNodes(parent, array, marker);\n      } else reconcileArrays(parent, current, array);\n    } else {\n      current && cleanChildren(parent);\n      appendNodes(parent, array);\n    }\n    current = array;\n  } else if (value.nodeType) {\n    if (sharedConfig.context && value.parentNode) return current = multi ? [value] : value;\n    if (Array.isArray(current)) {\n      if (multi) return current = cleanChildren(parent, current, marker, value);\n      cleanChildren(parent, current, null, value);\n    } else if (current == null || current === \"\" || !parent.firstChild) {\n      parent.appendChild(value);\n    } else parent.replaceChild(value, parent.firstChild);\n    current = value;\n  } else ;\n  return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n  let dynamic = false;\n  for (let i = 0, len = array.length; i < len; i++) {\n    let item = array[i],\n      prev = current && current[i],\n      t;\n    if (item == null || item === true || item === false) ; else if ((t = typeof item) === \"object\" && item.nodeType) {\n      normalized.push(item);\n    } else if (Array.isArray(item)) {\n      dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n    } else if (t === \"function\") {\n      if (unwrap) {\n        while (typeof item === \"function\") item = item();\n        dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n      } else {\n        normalized.push(item);\n        dynamic = true;\n      }\n    } else {\n      const value = String(item);\n      if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);else normalized.push(document.createTextNode(value));\n    }\n  }\n  return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n  for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n  if (marker === undefined) return parent.textContent = \"\";\n  const node = replacement || document.createTextNode(\"\");\n  if (current.length) {\n    let inserted = false;\n    for (let i = current.length - 1; i >= 0; i--) {\n      const el = current[i];\n      if (node !== el) {\n        const isParent = el.parentNode === parent;\n        if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n      } else inserted = true;\n    }\n  } else parent.insertBefore(node, marker);\n  return [node];\n}\nfunction gatherHydratable(element, root) {\n  const templates = element.querySelectorAll(`*[data-hk]`);\n  for (let i = 0; i < templates.length; i++) {\n    const node = templates[i];\n    const key = node.getAttribute(\"data-hk\");\n    if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n  }\n}\nfunction getHydrationKey() {\n  const hydrate = sharedConfig.context;\n  return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n  return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n  return props.children;\n}\nfunction voidFn() {}\nconst RequestContext = Symbol();\nfunction innerHTML(parent, content) {\n  !sharedConfig.context && (parent.innerHTML = content);\n}\n\nfunction throwInBrowser(func) {\n  const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n  console.error(err);\n}\nfunction renderToString(fn, options) {\n  throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n  throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n  throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst isDev = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n  return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n  enableHydration();\n  return hydrate$1(...args);\n};\nfunction Portal(props) {\n  const {\n      useShadow\n    } = props,\n    marker = document.createTextNode(\"\"),\n    mount = () => props.mount || document.body,\n    owner = getOwner();\n  let content;\n  let hydrating = !!sharedConfig.context;\n  createEffect(() => {\n    if (hydrating) getOwner().user = hydrating = false;\n    content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n    const el = mount();\n    if (el instanceof HTMLHeadElement) {\n      const [clean, setClean] = createSignal(false);\n      const cleanup = () => setClean(true);\n      createRoot(dispose => insert(el, () => !clean() ? content() : dispose(), null));\n      onCleanup(cleanup);\n    } else {\n      const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n        renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n          mode: \"open\"\n        }) : container;\n      Object.defineProperty(container, \"_$host\", {\n        get() {\n          return marker.parentNode;\n        },\n        configurable: true\n      });\n      insert(renderRoot, content);\n      el.appendChild(container);\n      props.ref && props.ref(container);\n      onCleanup(() => el.removeChild(container));\n    }\n  }, undefined, {\n    render: !hydrating\n  });\n  return marker;\n}\nfunction Dynamic(props) {\n  const [p, others] = splitProps(props, [\"component\"]);\n  const cached = createMemo(() => p.component);\n  return createMemo(() => {\n    const component = cached();\n    switch (typeof component) {\n      case \"function\":\n        return untrack(() => component(others));\n      case \"string\":\n        const isSvg = SVGElements.has(component);\n        const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n        spread(el, others, isSvg);\n        return el;\n    }\n  });\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, Properties, RequestContext, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, getPropAlias, voidFn as getRequestEvent, hydrate, innerHTML, insert, isDev, isServer, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, setProperty, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n","import { Component } from \"solid-js\";\n\nexport const Icon: Component<{ icon: string; class?: string }> = (props) => <i class={`fas fa-${props.icon} ${props.class}`}></i>;\n","export default \"__VITE_ASSET__0773fb1a__\"","export default \"__VITE_ASSET__40fab727__\"","export default \"__VITE_ASSET__56a9b1c8__\"","export default \"__VITE_ASSET__e572896b__\"","export default \"__VITE_ASSET__184ad0fc__\"","export default \"__VITE_ASSET__f43b4562__\"","export default \"__VITE_ASSET__ae28ba06__\"","export default \"__VITE_ASSET__ec52f04f__\"","export default \"__VITE_ASSET__0e8e58bd__\"","export default \"__VITE_ASSET__6af23ece__\"","export default \"__VITE_ASSET__2b74ed27__\"","export default \"__VITE_ASSET__3c0fb50c__\"","export default \"__VITE_ASSET__b4c65213__\"","export default \"__VITE_ASSET__383fced2__\"","export default \"__VITE_ASSET__bb549645__\"","export default \"__VITE_ASSET__49b6a48e__\"","export default \"__VITE_ASSET__8403e97d__\"","export default \"__VITE_ASSET__1473a4e5__\"","export default \"__VITE_ASSET__1ace6197__\"","export default \"__VITE_ASSET__503286f8__\"","export default \"data:image/png;base64,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\"","export default \"__VITE_ASSET__7aefd2b1__\"","export default \"__VITE_ASSET__acc3e711__\"","export default \"__VITE_ASSET__0a640455__\"","import ab from \"./flags/ab.png\";\nimport ay from \"./flags/ay.png\";\nimport by from \"./flags/by.png\";\nimport ch from \"./flags/ch.png\";\nimport de from \"./flags/de.png\";\nimport en from \"./flags/en.png\";\nimport fr from \"./flags/fr.png\";\nimport hr from \"./flags/hr.png\";\nimport ja from \"./flags/ja.png\";\nimport je from \"./flags/je.png\";\nimport ma from \"./flags/ma.png\";\nimport mo from \"./flags/mo.png\";\nimport od from \"./flags/od.png\";\nimport ot from \"./flags/ot.png\";\nimport ru from \"./flags/ru.png\";\nimport zx from \"./flags/zx.png\";\n\nimport food from \"./resources/food.png\";\nimport gold from \"./resources/gold.png\";\nimport stone from \"./resources/stone.png\";\nimport wood from \"./resources/wood.png\";\nimport time from \"./resources/time.png\";\nimport popcap from \"./resources/popcap.png\";\nimport oliveoil from \"./resources/oliveoil.png\";\nimport vizier from \"./resources/vizierpoints.png\";\n\nexport const FLAGS = { ab, ay, by, ch, de, en, fr, hr, ja, je, ma, mo, od, ot, ru, zx };\n\nexport const RESOURCES = { food, gold, stone, wood, time, popcap, oliveoil, vizier };\n","import { Component, ComponentProps, splitProps } from \"solid-js\";\nimport { FLAGS } from \"../../assets\";\nimport { civAbbr } from \"../types/data\";\n\nexport const CivFlag: Component<ComponentProps<\"img\"> & { abbr: civAbbr }> = (props) => {\n  const [civ, rest] = splitProps(props, [\"abbr\"]);\n  return <img src={FLAGS[civ.abbr]} {...rest} />;\n};\n","export const CIVILIZATIONS = {\n  ab: {\n    name: \"Abbasid Dynasty\",\n    abbr: \"ab\",\n    slug: \"abbasid\",\n    attribName: \"abbasid\",\n    expansion: [\"base\"],\n  },\n  ay: {\n    name: \"Ayyubids\",\n    abbr: \"ay\",\n    slug: \"ayyubids\",\n    attribName: \"abbasid_ha_01\",\n    expansion: [\"sultans-ascend\"],\n  },\n  by: {\n    name: \"Byzantines\",\n    abbr: \"by\",\n    slug: \"byzantines\",\n    attribName: \"byzantine\",\n    expansion: [\"sultans-ascend\"],\n  },\n  ch: {\n    name: \"Chinese\",\n    abbr: \"ch\",\n    slug: \"chinese\",\n    attribName: \"chinese\",\n    expansion: [\"base\"],\n  },\n  de: {\n    name: \"Delhi Sultanate\",\n    abbr: \"de\",\n    slug: \"delhi\",\n    attribName: \"sultanate\",\n    expansion: [\"base\"],\n  },\n  en: {\n    name: \"English\",\n    abbr: \"en\",\n    slug: \"english\",\n    attribName: \"english\",\n    expansion: [\"base\"],\n  },\n  fr: {\n    name: \"French\",\n    abbr: \"fr\",\n    slug: \"french\",\n    attribName: \"french\",\n    expansion: [\"base\"],\n  },\n  hr: {\n    name: \"Holy Roman Empire\",\n    abbr: \"hr\",\n    slug: \"hre\",\n    attribName: \"hre\",\n    expansion: [\"base\"],\n  },\n  ja: {\n    name: \"Japanese\",\n    abbr: \"ja\",\n    slug: \"japanese\",\n    attribName: \"japanese\",\n    expansion: [\"sultans-ascend\"],\n  },\n  je: {\n    name: \"Jeanne d'Arc\",\n    abbr: \"je\",\n    slug: \"jeannedarc\",\n    attribName: \"french_ha_01\",\n    expansion: [\"sultans-ascend\"],\n  },\n  ma: {\n    name: \"Malians\",\n    abbr: \"ma\",\n    slug: \"malians\",\n    attribName: \"malian\",\n    expansion: [\"base\"],\n  },\n  mo: {\n    name: \"Mongols\",\n    abbr: \"mo\",\n    slug: \"mongols\",\n    attribName: \"mongol\",\n    expansion: [\"base\"],\n  },\n  od: {\n    name: \"Order of the Dragon\",\n    abbr: \"od\",\n    slug: \"orderofthedragon\",\n    attribName: \"hre_ha_01\",\n    expansion: [\"sultans-ascend\"],\n  },\n  ot: {\n    name: \"Ottomans\",\n    abbr: \"ot\",\n    slug: \"ottomans\",\n    attribName: \"ottoman\",\n    expansion: [\"base\"],\n  },\n  ru: {\n    name: \"Rus\",\n    abbr: \"ru\",\n    slug: \"rus\",\n    attribName: \"rus\",\n    expansion: [\"base\"],\n  },\n  zx: {\n    name: \"Zhu Xi's Legacy\",\n    abbr: \"zx\",\n    slug: \"zhuxi\",\n    attribName: \"chinese_ha_01\",\n    expansion: [\"sultans-ascend\"],\n  },\n} as const;\n","import { CIVILIZATIONS } from \"../lib/config/civs\";\n\nexport type CivAbbr = keyof typeof CIVILIZATIONS;\nexport type CivSlug = typeof CIVILIZATIONS[CivAbbr][\"slug\"];\n\nexport type CivConfig = {\n  name: string;\n  abbr: CivAbbr;\n  slug: CivSlug;\n  attribName?: string;\n  expansion: string[];\n};\n\nexport type CivInfo = {\n  name: string;\n  classes: string;\n  description: string;\n  // backdrop?: string;\n  overview: { title: string; description?: string; list?: string[] }[];\n};\n\nexport const CIVILIZATION_BY_SLUG: Record<CivSlug, CivConfig> = Object.values(CIVILIZATIONS).reduce((acc, civ) => ({ ...acc, [civ.slug]: civ }), {} as Record<CivSlug, CivConfig>);\n","import { CivAbbr, ItemSlug } from \"../sdk/utils\";\n\nexport type ItemClass =\n  | \"light\"\n  | \"heavy\"\n  | \"infantry\"\n  | \"cavalry\"\n  | \"ship\"\n  | \"archer\"\n  | \"springald\"\n  | \"attack\"\n  | \"incendiary\"\n  | \"warship\"\n  | \"ranged\"\n  | \"siege\"\n  | \"melee\"\n  | \"fire\"\n  | \"religious\"\n  | \"gunpowder\"\n  | \"structure\"\n  | \"building\"\n  | \"transport\"\n  | \"support\"\n  | \"wall\"\n  | \"tower\"\n  | \"gate\"\n  | \"landmark\"\n  | \"wonder\"\n  | \"military\"\n  | \"technology\"\n  | \"hunt\"\n  | \"defensive\"\n  | \"worker\"\n  | string;\n\nexport interface Item {\n  id: ItemId;\n  baseId: ItemId;\n  type: \"unit\" | \"building\" | \"technology\" | \"upgrade\" | \"ability\";\n  civs: CivAbbr[];\n  classes: ItemClass[];\n  displayClasses: string[];\n\n  name: string;\n  age: number;\n\n  description: string;\n  icon_src?: string;\n  icon?: string;\n\n  unique: boolean;\n\n  producedBy: string[];\n\n  costs: {\n    food: number;\n    wood: number;\n    gold: number;\n    stone: number;\n    oliveoil?: number;\n    vizier?: number;\n    time: number;\n    popcap?: number;\n    total: number;\n  };\n\n  pbgid?: number;\n  attribName?: string;\n}\n\nexport interface PhysicalItem extends Item {\n  weapons: Weapon[];\n  armor: Armor[];\n\n  hitpoints: number;\n\n  sight: {\n    line: number;\n    height: number;\n  };\n\n  garrison?: {\n    capacity: number;\n    classes: string[];\n  };\n\n  unlockedBy?: ItemSlug[];\n}\n\nexport interface Unit extends PhysicalItem {\n  type: \"unit\";\n  movement: {\n    speed: number;\n  };\n}\n\n// Todo, may add material properties, units/objects that can be garrisoned, etc.\nexport interface Building extends PhysicalItem {\n  type: \"building\";\n  influences?: string[];\n  popcapIncrease?: number;\n}\n\nexport interface Technology extends Item {\n  type: \"technology\";\n  effects?: Modifier[];\n}\n\nexport interface Upgrade extends Item {\n  type: \"upgrade\";\n  unlocks: ItemId;\n}\n\nexport interface Weapon {\n  name?: string;\n  id?: ItemId;\n  type: \"melee\" | \"charge\" | \"ranged\" | \"siege\" | \"fire\";\n  damage: number;\n  speed: number;\n  modifiers?: Modifier[];\n  range?: {\n    min: number;\n    max: number;\n  };\n  durations?: Record<string, number>;\n  burst?: { count: number };\n  attribName?: string;\n  pbgid?: number;\n}\n\nexport interface Ability extends Item {\n  type: \"ability\";\n  active?: \"always\" | \"manual\" | \"toggle\";\n  auraRange?: number;\n  cooldown?: number;\n  toggleGroup?: string;\n  effects?: Modifier[];\n  unlockedBy?: ItemSlug[];\n  activatedOn?: ItemSlug[];\n}\n\nexport type Selector = { class?: ItemClass[][]; id?: ItemId[] };\n\nexport type Modifier = {\n  property: ModifyableProperty;\n  target?: Selector;\n  select?: Selector;\n  effect: \"multiply\" | \"change\";\n  value: number;\n  type: \"passive\" | \"ability\" | \"influence\" | \"bonus\";\n  duration?: number;\n};\n\nexport type Armor = {\n  type: \"melee\" | \"ranged\" | \"fire\";\n  value: number;\n};\n\nexport type ItemId = string;\n\nexport type ItemType = Building | Unit | Technology | Upgrade | Ability;\n\nexport type ModifyableProperty =\n  | \"unknown\" // Complex effects not easily incoded in buffed stats\n  | \"burst\"\n  | \"hitpoints\"\n  | \"meleeArmor\"\n  | \"rangedArmor\"\n  | \"meleeAttack\"\n  | \"rangedAttack\"\n  | \"siegeAttack\"\n  | \"fireAttack\"\n  | \"fireArmor\"\n  | \"moveSpeed\"\n  | \"attackSpeed\"\n  | \"minRange\"\n  | \"maxRange\"\n  | \"heightOfSight\"\n  | \"lineOfSight\"\n  | \"carryCapacity\"\n  | \"huntGatherRate\"\n  | \"huntCarryCapacity\"\n  | \"foodCost\"\n  | \"foodGatherRate\"\n  | \"goldCost\"\n  | \"goldGatherRate\"\n  | \"goldGeneration\"\n  | \"stoneCost\"\n  | \"stoneGatherRate\"\n  | \"woodCost\"\n  | \"woodGatherRate\"\n  | \"berryGatherRate\"\n  | \"farmGatherRate\"\n  | \"populationCost\"\n  | \"healingRate\"\n  | \"repairRate\"\n  | \"maxPopulation\"\n  | \"buildTime\"\n  | \"productionSpeed\"\n  | \"researchSpeed\"\n  | \"areaOfEffect\";\n\nexport interface UnifiedItem<T extends Item = Item> {\n  id: ItemId;\n  name: string;\n  civs: CivAbbr[];\n  unique: boolean;\n  variations: T[];\n  type: T[\"type\"];\n  minAge: number;\n  classes: ItemClass[];\n  displayClasses: string[];\n  icon?: string;\n  description?: string;\n}\n\nexport enum ITEMS {\n  UNITS = \"units\",\n  BUILDINGS = \"buildings\",\n  TECHNOLOGIES = \"technologies\",\n  UPGRADES = \"upgrades\",\n}\n\nexport type ItemTypes = {\n  [ITEMS.UNITS]: Unit;\n  [ITEMS.TECHNOLOGIES]: Technology;\n  [ITEMS.BUILDINGS]: Building;\n  [ITEMS.UPGRADES]: Upgrade;\n};\n","import { ModifyableProperty } from \"@data/types/items\";\nexport { CIVILIZATIONS } from \"@data/lib/config/civs\";\nexport { CIVILIZATION_BY_SLUG } from \"@data/types/civs\";\nexport { ITEMS } from \"@data/types/items\";\nexport type { Building, ModifyableProperty, Technology, Unit, Upgrade, ItemTypes } from \"@data/types/items\";\n\nexport const SUPPORTED_MODIFIER_PROPERTIES: ModifyableProperty[] = [\n  \"meleeArmor\",\n  \"meleeAttack\",\n  \"rangedArmor\",\n  \"rangedAttack\",\n  \"fireAttack\",\n  \"fireArmor\",\n  \"siegeAttack\",\n  \"burst\",\n  \"hitpoints\",\n  \"moveSpeed\",\n  \"attackSpeed\",\n  \"lineOfSight\",\n  \"maxRange\",\n];\n\nexport const DATA_ROOT = import.meta.env.DATA_URL && import.meta.env.DEV ? import.meta.env.DATA_URL : \"https://data.aoe4world.com/\";\n\nexport const SIMILAIR_ITEMS = [\n  [\"villager\", \"dragon-villager\"],\n  [\"archer\", \"longbowman\", \"gilded-archer\", \"yumi-ashigaru\", \"zhuge-nu\"],\n  [\"spearman\", \"donso\", \"gilded-spearman\", \"limitanei\"],\n  [\"knight\", \"lancer\", \"royal-knight\", \"keshik\", \"sofa\", \"gilded-knight\", \"mounted-samurai\", \"cataphract\", \"camel-lancer\"],\n  [\"monk\", \"scholar\", \"imam\", \"dervish\", \"warrior-monk\", \"shaman\", \"prelate\", \"shinto-priest\", \"buddhist-monk\", \"shaolin-monk\"],\n  [\"atabeg\", \"prelate\"],\n  [\"desert-raider\", \"camel-rider\"],\n  [\"horse-archer\", \"mangudai\", \"camel-archer\", \"tower-elephant\", \"onna-musha\", \"desert-raider\"],\n  [\"horseman\", \"ghazi-raider\", \"sipahi\", \"gilded-horseman\"],\n  [\"jeannes-rider\", \"yuan-raider\"],\n  [\"crossbowman\", \"arbaletrier\", \"javelin-thrower\", \"gilded-crossbowman\"],\n  [\"cannon\", \"royal-cannon\", \"bombard\", \"great-bombard\"],\n  [\"culverin\", \"royal-culverin\"],\n  [\"mangonel\", \"nest-of-bees\", \"manjaniq\"],\n  [\"battering-ram\", \"cheirosiphon\"],\n  [\"siege-tower\", \"tower-of-the-sultan\"],\n  [\"handcannoneer\", \"streltsy\", \"jannisary\", \"musofadi-gunner\", \"dragon-handcannoneer\"],\n  [\"traction-trebuchet\", \"trebuchet\", \"counterweight-trebuchet\", \"huihui-pao\"],\n  [\"man-at-arms\", \"palace-guard\", \"musofadi-warrior\", \"ghulam\", \"samurai\", \"gilded-man-at-arms\", \"varangian-guard\"],\n  [\"onna-bugeisha\", \"landsknecht\", \"gilded-landsknecht\"],\n  [\"trade-ship\", \"lodya-trade-ship\"],\n  [\"transport-ship\", \"lodya-transport-ship\"],\n  [\"fishing-boat\", \"lodya-fishing-boat\"],\n  [\"galley\", \"dhow\", \"junk\", \"hunting-canoe\", \"light-junk\", \"lodya-galley\"],\n  [\"hulk\", \"baghlah\", \"war-cog\", \"war-canoe\", \"lodya-attack-ship\", \"war-junk\"],\n  [\"demolition-ship\", \"lodya-demolition-ship\", \"explosive-junk\", \"explosive-dhow\"],\n  [\"carrack\", \"baochuan\", \"xebec\", \"atakebune\"],\n  [\"farm\", \"olive-grove\", \"pasture\"],\n  [\"monastery\", \"mosque\", \"prayer-tent\", \"shinto-shrine\", \"buddhist-temple\"],\n  [\"hunting-cabin\", \"mill\", \"ger\", \"farmhouse\"],\n  [\"blacksmith\", \"forge\", \"mining-camp\"],\n  [\"palisade-gate\", \"fortified-palisade-gate\"],\n  [\"palisade-wall\", \"fortified-palisade-wall\"],\n  [\"outpost\", \"wooden-fortress\", \"toll-outpost\"],\n  [\"university\", \"madrasa\"],\n  [\"castle\", \"keep\"],\n];\n\n// Rendering wrong or not fitting model, never include\nexport const MUTED_UNITS = [\"wynguard-army\", \"khaganate-units\"];\n\nexport const PRETTY_AGE_MAP = [\"\", \"Age I\", \"Age II\", \"Age III\", \"Age IV\"];\nexport const PRETTY_AGE_MAP_LONG = [\"\", \"Dark Age (I)\", \"Feudal Age (II)\", \"Castle Age (III)\", \"Imperial Age (IV)\"];\nexport const PRETTY_AGE_MAP_SHORT = [\"\", \"I\", \"II\", \"III\", \"IV\"];\n\nexport const CURATED_CONTENT_API = \"https://curated.aoe4world.com/\";\n","export const staticMaps = {\n  \"ancient-spires\": [\n    \"Ancient Spires\",\n    \"https://static.aoe4world.com/assets/maps/ancient_spires-f6d4ed2baecb3e883eed7abbb0bc2d0cd9b0ade0b06052886455f9d903064c45.png\",\n  ],\n  \"high-view\": [\"High View\", \"https://static.aoe4world.com/assets/maps/high_view-554e3c206c2ab5de03eff825bae1782c995f43c3d49045c445c37167755dc756.png\"],\n  \"mongolian-heights\": [\n    \"Mongolian Heights\",\n    \"https://static.aoe4world.com/assets/maps/mongolian_heights-d2e6345c97a7d30d9bcb6349e599833ae70b1b16ea3029c10c986ecda996dc50.png\",\n  ],\n  \"dry-arabia\": [\"Dry Arabia\", \"https://static.aoe4world.com/assets/maps/dry_arabia-a38664e3a1140c77c184c56ce6ccc91b83ab9bf9e69f463621bf4acc6e663240.png\"],\n  \"mountain-pass\": [\n    \"Mountain Pass\",\n    \"https://static.aoe4world.com/assets/maps/mountain_pass-0b69b081bdb9f8df2c302d3ac3b8847a27f49e75631e2d677fa2f3b730d6ef04.png\",\n  ],\n  \"hill-and-dale\": [\n    \"Hill and Dale\",\n    \"https://static.aoe4world.com/assets/maps/hill_and_dale-7867678344511f75ca224324806ade2552c4667e89e57a2153c02fd44684ddee.png\",\n  ],\n  \"french-pass\": [\"French Pass\", \"https://static.aoe4world.com/assets/maps/french_pass-3ccf8fbacfc7a55fe17fcc69e1409fd6d067ca4394c9fedd55b9ab195c7363cb.png\"],\n  \"king-of-the-hill\": [\n    \"King of the Hill\",\n    \"https://static.aoe4world.com/assets/maps/king_of_the_hill-17717abfb688a8e8ea05bb4a0799dced0c13a3cfc864fa28fb6bf2d010e77180.png\",\n  ],\n  altai: [\"Altai\", \"https://static.aoe4world.com/assets/maps/altai-9b272a24dce7dfa3a2e60579a801e7152a4a94f041340ee81bef913d9cc70c6c.png\"],\n  lipany: [\"Lipany\", \"https://static.aoe4world.com/assets/maps/lipany-d1e494f8fd09007b948dee6ce146402ab57a382ca9c52265f140d668c3ea6b5e.png\"],\n  confluence: [\"Confluence\", \"https://static.aoe4world.com/assets/maps/confluence-4322dcd579128d990df9c6ee62f155d0f8d33d1f58fb30149af05967a3b8fdf3.png\"],\n  \"danube-river\": [\n    \"Danube River\",\n    \"https://static.aoe4world.com/assets/maps/danube_river-fb83fa5ec52e63c87867619e4e010bc4f32717ba99234fbc327a86e4e4d6af9d.png\",\n  ],\n  \"black-forest\": [\n    \"Black Forest\",\n    \"https://static.aoe4world.com/assets/maps/black_forest-d4431e88f043782a03b5d35d7bb26b515f8a0837dbc707675ac27f7afa0c7534.png\",\n  ],\n  nagari: [\"Nagari\", \"https://static.aoe4world.com/assets/maps/nagari-a89f44d0283a3e6ca61443994d0fbf025c41e362b0c21297bc889efe9bc91889.png\"],\n  \"boulder-bay\": [\"Boulder Bay\", \"https://static.aoe4world.com/assets/maps/boulder_bay-11f453b895a76e632a4507e57653e46ca1e6505801b413e3c3f71c20ef6b91f1.png\"],\n  \"warring-islands\": [\n    \"Warring Islands\",\n    \"https://static.aoe4world.com/assets/maps/warring_islands-4f4e6f79e416317cce05b106056cc551e6cadce4aece5c5c5ebb24da5bc0b346.png\",\n  ],\n};\n","import { getAbbr, getSlug } from \"@data/sdk/utils\";\nimport { Ability, Building, Item, Modifier, PhysicalItem } from \"@data/types/items\";\nimport { CIVILIZATIONS, ITEMS, SIMILAIR_ITEMS } from \"../config\";\nimport { staticMaps } from \"../data/maps\";\nimport { civAbbr, civConfig, GroupedBuildings, GroupedUnits, Technology, UnifiedItem, Unit } from \"../types/data\";\nimport { PatchLine, PatchNotes } from \"../types/patches\";\n\nconst SDK = import(\"@data/sdk\");\n\n/** Map any of civAbbr | civConfig | civConfig[] | civAbbr[] to a single array */\nexport type civFilterParam = Parameters<typeof mapCivsArgument>[0];\nexport function mapCivsArgument(civs?: civAbbr | civConfig | civConfig[] | civAbbr[]): civConfig[] {\n  const configs = Object.values(CIVILIZATIONS);\n  if (!civs) return configs;\n  else if (Array.isArray(civs)) return civs.map((c) => (typeof c === \"string\" ? configs.find((civ) => civ.abbr === c) : c));\n  else if (typeof civs === \"string\") return configs.filter((c) => c.abbr === civs);\n  else return [civs];\n}\n\n/** Filter a list of unified items based on their civ or max age */\nexport function filterItems<T extends UnifiedItem[]>(items: T, { civs, maxAge }: { civs: civFilterParam; maxAge?: number } = { civs: [] }) {\n  const cs = mapCivsArgument(civs);\n\n  return items.reduce((items, x) => {\n    if (!cs.some((c) => x.civs.includes(c.abbr))) return items;\n    let filteredVariations = [...(x.variations ?? [])];\n\n    filteredVariations = filteredVariations.filter((v) => cs.some((c) => v.civs.includes(c.abbr)));\n    if (maxAge) filteredVariations = filteredVariations.filter((v) => v.age <= maxAge);\n\n    let filteredCivs = x.civs.filter((c) => filteredVariations.some((v) => v.civs.includes(c)));\n    if (filteredVariations.length > 0) items.push({ ...x, civs: filteredCivs, variations: filteredVariations });\n    return items;\n  }, [] as typeof items);\n}\n\n/** Query the technologies that apply to an item and merge them with all technology modifiers */\nexport async function getItemTechnologies<T extends ITEMS>(\n  type: T,\n  item: string | UnifiedItem,\n  civ?: civAbbr | civConfig,\n  includeAllCivsUnitSpecificTech = false\n): Promise<UnifiedItem<Technology>[]> {\n  const { Get, technologies } = await SDK;\n  const unifiedItem = typeof item == \"string\" ? Get(`${type}/${item}`) : item;\n  return technologies.reduce((acc, t) => {\n    const filteringByCiv = !!civ;\n    const variations = t.variations.filter((v) => (filteringByCiv ? v.civs.includes(mapCivsArgument(civ)[0].abbr) : true));\n    const modifiers = variations.flatMap((v) => v.effects).filter(Boolean);\n    if (!modifiers || !variations.length) return acc;\n\n    const techResearchedAtId = false; //t.variations.some((v) => v.producedBy.includes(unifiedItem.id));\n    const techMatchesItemId = modifiers.some((m) => modifierMatches(m.select, unifiedItem).id);\n    const techMatchesItemClass = modifiers.some((m) => modifierMatches(m.select, unifiedItem).class);\n    const appliesToMultipleCivs = t.civs.length > 1;\n    const itemIsUnique = unifiedItem.civs.length === 1;\n\n    if (\n      techResearchedAtId ||\n      (filteringByCiv\n        ? techMatchesItemId || techMatchesItemClass\n        : // If we're not looking at techs for a specific civ & unit combo\n        // we show only techs that match by id, or those that match by class and have multiple civs\n        (techMatchesItemId && itemIsUnique) || (techMatchesItemId && includeAllCivsUnitSpecificTech) || (techMatchesItemClass && appliesToMultipleCivs))\n    ) {\n      if (techMatchesItemId) acc.unshift({ ...t, variations });\n      else acc.push({ ...t, variations });\n    }\n\n    return acc;\n  }, [] as UnifiedItem<Technology>[]);\n}\n\nexport function getMostAppropriateVariation<T extends Item = Item>(item: UnifiedItem<T>, civ: civConfig): T {\n  if (!item) return null;\n  return (\n    (civ ? item.variations.filter((v) => v.civs.includes(civ.abbr)) : item.variations)\n      .sort((a, b) => b.costs.total - a.costs.total)\n      .sort((a, b) => a.id.length - b.id.length)\n      .sort((a, b) => b.civs.length - a.civs.length)[0] ?? item.variations[0]\n  );\n}\n\nexport function splitUnitsIntoGroups(units: UnifiedItem<Unit>[]) {\n  const grouped = units?.reduce(\n    (acc, unit) => {\n      if (unit.classes.some((c) => c === \"hero\")) acc.hero.push(unit);\n      else if (unit.classes.some((c) => c === \"ship\")) acc.ships.push(unit);\n      else if (unit.variations.some((v) => v.producedBy.includes(\"mercenary-house\") || v.producedBy.includes(\"foreign-engineering-company\")))\n        acc.mercenaries.push(unit);\n      else if (unit.classes.some((c) => c === \"warship\")) acc.ships.push(unit);\n      else if (unit.classes.some((c) => c === \"worker\")) acc.workers.push(unit);\n      else if (unit.classes.some((c) => c === \"infantry\")) acc.infantry.push(unit);\n      else if (unit.classes.some((c) => c === \"cavalry\")) acc.cavalry.push(unit);\n      else if (unit.classes.some((c) => c === \"camel\")) acc.cavalry.push(unit);\n      else if (unit.classes.some((c) => c === \"siege\")) acc.siege.push(unit);\n      else if (unit.classes.some((c) => c === \"mixed\")) acc.misc.push(unit);\n      else acc.workers.push(unit);\n\n      return acc;\n    },\n    { hero: [], workers: [], infantry: [], cavalry: [], siege: [], ships: [], misc: [], mercenaries: [] } as GroupedUnits\n  );\n  grouped.mercenaries.sort((b, a) => b.variations[0].costs.total - a.variations[0].costs.total);\n  return grouped;\n}\n\nexport function splitBuildingsIntoGroups(buildings: UnifiedItem<Building>[]) {\n  const grouped = buildings?.reduce(\n    (acc, unit) => {\n      if (unit.classes.some((c) => c === \"landmark\")) acc.landmarks.push(unit);\n      else if (unit.classes.some((c) => c === \"wonder\")) acc.wonders.push(unit);\n      else if (unit.classes.some((c) => c === \"defensive\")) acc.defensive.push(unit);\n      else if (unit.classes.some((c) => c === \"technology\")) acc.technology.push(unit);\n      else if (unit.classes.some((c) => c === \"religious\")) acc.religious.push(unit);\n      else if (unit.classes.some((c) => c === \"military\")) acc.military.push(unit);\n      else acc.economy.push(unit);\n\n      return acc;\n    },\n    { landmarks: [], economy: [], military: [], defensive: [], religious: [], technology: [], wonders: [] } as GroupedBuildings\n  );\n  grouped.landmarks.sort((b, a) => b.variations[0].costs.total - a.variations[0].costs.total);\n  return grouped;\n}\n\nexport function splitTechnologiesIntroGroups(buildings: UnifiedItem<Technology>[]) {\n  return buildings?.reduce(\n    (acc, tech) => {\n      if (tech.classes.some((c) => [\"advance\"].includes(c) && tech.civs[0] == \"ab\")) return acc;\n      else if (tech.classes.some((c) => tech.civs[0] == \"ay\" && tech.id.includes(\"wing\"))) acc.wings.push(tech);\n      else if (tech.classes.some((c) => c === \"level-up-choice\") && tech.civs[0] == \"je\") acc.leveling.push(tech);\n      else if (tech.classes.some((c) => [\"ship\", \"naval\", \"warship\"].includes(c))) acc.naval.push(tech);\n      else if (\n        tech.classes.some((c) =>\n          [\n            \"mining\",\n            \"gathering\",\n            \"woodcutting\",\n            \"farm\",\n            \"hunting\",\n            \"villager\",\n            \"fishing\",\n            \"construction\",\n            \"official\",\n            \"population\",\n            \"trade\",\n            \"economic\",\n            \"research\",\n            \"raiding\",\n            \"packing\",\n          ].includes(c)\n        )\n      )\n        acc.economy.push(tech);\n      else if (tech.classes.some((c) => [\"defensive\", \"emplacement\", \"building\", \"outpost\", \"keep\"].includes(c))) acc.defensive.push(tech);\n      else if (tech.classes.some((c) => [\"religious\", \"healing\"].includes(c))) acc.religious.push(tech);\n      else if (tech.classes.some((c) => [\"Production\", \"siege\", \"melee\", \"cavalry\", \"infantry\", \"ranged\", \"production\", \"gunpowder\"].includes(c)))\n        acc.military.push(tech);\n      else acc.units.push(tech);\n\n      return acc;\n    },\n    { wings: [], leveling: [], economy: [], naval: [], defensive: [], religious: [], military: [], units: [] } as Record<string, UnifiedItem<Technology>[]>\n  );\n}\n\nexport function modifierMatches(matcher: Modifier[\"select\"], item: Item | UnifiedItem) {\n  if (!matcher) return { id: false, class: false, any: false };\n  const matchesId = matcher.id?.includes(item.id) || matcher.id?.includes((item as Item).baseId);\n  const matchesClass = matcher.class?.some((cl) => cl?.every((c) => item.classes.includes(c)));\n  return { id: matchesId, class: matchesClass, any: matchesId || matchesClass };\n}\n\nexport function canonicalItemName(item: Item | UnifiedItem) {\n  const group = item.type === \"unit\" ? \"units\" : item.type === \"building\" ? \"buildings\" : \"technologies\";\n  return `${group}/${\"baseId\" in item ? item.baseId : item.id}`;\n}\n\nexport function getItemByCanonicalName(id: string) {\n  if (id.startsWith(\"maps/\")) return getMapAsItem(id.split(\"/\")[1]);\n  return SDK.then((sdk) => sdk.Get(id as any));\n}\n\nexport async function findClosestMatch<T extends ITEMS>(type: T, id: string, civ: civConfig) {\n  const similair = SIMILAIR_ITEMS.find((units) => units.includes(id));\n  const closestMatch = similair && (await SDK)[type].where({ civilization: civ.abbr }).find((i) => similair.includes(i.id));\n  return closestMatch ?? null;\n}\n\nfunction getMapAsItem(id: string) {\n  const [name, icon] = staticMaps[id] ?? [capitlize(id.replaceAll(\"-\", \" \")), \"\"];\n\n  return {\n    id,\n    name,\n    civs: [],\n    classes: [\"Map\"],\n    icon,\n    description: \"\",\n    type: \"map\",\n  } as unknown as UnifiedItem;\n}\n\nexport function capitlize(string: string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nconst patchOrder = [\"buff\", \"nerf\", \"fix\"];\nexport const sortPatchDiff = (a: PatchLine, b: PatchLine) => patchOrder.indexOf(a[0]) - patchOrder.indexOf(b[0]);\n\n/** Get all changes, line by line, that apply to a specific item */\nexport async function getPatchHistory(item: UnifiedItem, civs?: civConfig[]) {\n  const { patches } = await import(\"../data/patches/patch\");\n\n  const cid = canonicalItemName(item);\n  const civAbbrs = civs?.map((c) => c.abbr);\n  const history: { patch: PatchNotes; diff: PatchLine[] }[] = [];\n  for (const patch of patches) {\n    const diff = [];\n    for (const section of patch.sections) {\n      if (!civOverlap(civAbbrs, section.civs)) continue;\n      diff.push(\n        ...section.changes.reduce(\n          (acc, c) => (c.items.includes(cid) && civOverlap(civAbbrs, c.civs) ? [...acc, ...c.diff.filter(([t, l, lc]) => civOverlap(civAbbrs, lc)).map(([t, l, lc = []]) => [t, l, [...lc, section.civs]])] : acc),\n          [] as PatchLine[]\n        )\n      );\n    }\n    if (diff.length) {\n      diff.sort(sortPatchDiff);\n      history.push({ patch, diff });\n    }\n  }\n  return history.sort((a, b) => patches.indexOf(b.patch) - patches.indexOf(a.patch));\n}\n\nfunction civOverlap(filter: civAbbr[], value: civAbbr[]) {\n  if (!value?.length || !filter?.length) return true;\n  return filter.some((c) => value.includes(c));\n}\n"],"file":"assets/utils-ca93868b.js"}