@abgov/web-components 1.20.2 → 1.20.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +1081 -1081
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/svelte/src/runtime/internal/utils.js","../../../node_modules/svelte/src/runtime/internal/environment.js","../../../node_modules/svelte/src/runtime/internal/loop.js","../../../node_modules/svelte/src/runtime/internal/globals.js","../../../node_modules/svelte/src/runtime/internal/dom.js","../../../node_modules/svelte/src/runtime/internal/style_manager.js","../../../node_modules/svelte/src/runtime/internal/lifecycle.js","../../../node_modules/svelte/src/runtime/internal/scheduler.js","../../../node_modules/svelte/src/runtime/internal/transitions.js","../../../node_modules/svelte/src/runtime/internal/each.js","../../../node_modules/svelte/src/runtime/internal/Component.js","../../../node_modules/svelte/src/shared/version.js","../../../node_modules/svelte/src/runtime/internal/disclose-version/index.js","../../../libs/web-components/src/common/styling.ts","../../../libs/web-components/src/common/utils.ts","../../../libs/web-components/src/components/accordion/Accordion.svelte","../../../libs/web-components/src/common/breakpoints.ts","../../../libs/web-components/src/components/app-header/AppHeader.svelte","../../../libs/web-components/src/components/app-header-menu/AppHeaderMenu.svelte","../../../libs/web-components/src/components/badge/Badge.svelte","../../../libs/web-components/src/components/block/Block.svelte","../../../libs/web-components/src/components/button/Button.svelte","../../../libs/web-components/src/components/button-group/ButtonGroup.svelte","../../../node_modules/date-fns/toDate.mjs","../../../node_modules/date-fns/constructFrom.mjs","../../../node_modules/date-fns/addDays.mjs","../../../node_modules/date-fns/addMonths.mjs","../../../node_modules/date-fns/constants.mjs","../../../node_modules/date-fns/_lib/defaultOptions.mjs","../../../node_modules/date-fns/startOfWeek.mjs","../../../node_modules/date-fns/startOfISOWeek.mjs","../../../node_modules/date-fns/getISOWeekYear.mjs","../../../node_modules/date-fns/startOfDay.mjs","../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","../../../node_modules/date-fns/differenceInCalendarDays.mjs","../../../node_modules/date-fns/startOfISOWeekYear.mjs","../../../node_modules/date-fns/addYears.mjs","../../../node_modules/date-fns/isSameDay.mjs","../../../node_modules/date-fns/isDate.mjs","../../../node_modules/date-fns/isValid.mjs","../../../node_modules/date-fns/startOfYear.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/localize.mjs","../../../node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/match.mjs","../../../node_modules/date-fns/locale/en-US.mjs","../../../node_modules/date-fns/getDayOfYear.mjs","../../../node_modules/date-fns/getISOWeek.mjs","../../../node_modules/date-fns/getWeekYear.mjs","../../../node_modules/date-fns/startOfWeekYear.mjs","../../../node_modules/date-fns/getWeek.mjs","../../../node_modules/date-fns/_lib/addLeadingZeros.mjs","../../../node_modules/date-fns/_lib/format/lightFormatters.mjs","../../../node_modules/date-fns/_lib/format/formatters.mjs","../../../node_modules/date-fns/_lib/format/longFormatters.mjs","../../../node_modules/date-fns/_lib/protectedTokens.mjs","../../../node_modules/date-fns/format.mjs","../../../node_modules/date-fns/getDaysInMonth.mjs","../../../node_modules/date-fns/lastDayOfMonth.mjs","../../../node_modules/date-fns/isAfter.mjs","../../../node_modules/date-fns/isBefore.mjs","../../../node_modules/date-fns/isSameMonth.mjs","../../../node_modules/date-fns/setDate.mjs","../../../libs/web-components/src/components/calendar/Calendar.svelte","../../../libs/web-components/src/components/callout/Callout.svelte","../../../libs/web-components/src/components/card-actions/CardActions.svelte","../../../libs/web-components/src/components/card-content/CardContent.svelte","../../../libs/web-components/src/components/card/Card.svelte","../../../libs/web-components/src/components/card-group/CardGroup.svelte","../../../libs/web-components/src/components/card-image/CardImage.svelte","../../../libs/web-components/src/components/checkbox/Checkbox.svelte","../../../libs/web-components/src/components/chip/Chip.svelte","../../../node_modules/svelte/src/runtime/easing/index.js","../../../node_modules/svelte/src/runtime/transition/index.js","../../../libs/web-components/src/common/no-scroll.ts","../../../libs/web-components/src/components/circular-progress/CircularProgress.svelte","../../../libs/web-components/src/components/container/Container.svelte","../../../libs/web-components/src/components/date-picker/DatePicker.svelte","../../../libs/web-components/src/components/details/Details.svelte","../../../libs/web-components/src/components/divider/Divider.svelte","../../../libs/web-components/src/components/dropdown/Dropdown.svelte","../../../libs/web-components/src/components/dropdown/DropdownItem.svelte","../../../libs/web-components/src/components/file-upload-card/FileUploadCard.svelte","../../../libs/web-components/src/components/file-upload-input/FileUploadInput.svelte","../../../libs/web-components/src/components/focus-trap/FocusTrap.svelte","../../../libs/web-components/src/components/footer/Footer.svelte","../../../libs/web-components/src/components/footer-meta-section/FooterMetaSection.svelte","../../../libs/web-components/src/components/footer-nav-section/FooterNavSection.svelte","../../../libs/web-components/src/components/form-item/FormItem.svelte","../../../libs/web-components/src/components/form-step/FormStep.svelte","../../../libs/web-components/src/components/form-stepper/FormStepper.svelte","../../../libs/web-components/src/layouts/FullScreenNavbarLayout.svelte","../../../libs/web-components/src/components/grid/Grid.svelte","../../../libs/web-components/src/components/hero-banner/HeroBanner.svelte","../../../libs/web-components/src/components/icon-button/IconButton.svelte","../../../libs/web-components/src/components/icon/Icon.svelte","../../../libs/web-components/src/components/input/Input.svelte","../../../libs/web-components/src/components/microsite-header/MicrositeHeader.svelte","../../../libs/web-components/src/components/modal/Modal.svelte","../../../libs/web-components/src/components/notification/Notification.svelte","../../../libs/web-components/src/layouts/one-column-layout/OneColumnLayout.svelte","../../../libs/web-components/src/common/validators.ts","../../../libs/web-components/src/components/page-block/PageBlock.svelte","../../../libs/web-components/src/components/pages/Pages.svelte","../../../libs/web-components/src/components/pagination/Pagination.svelte","../../../libs/web-components/src/components/popover/Popover.svelte","../../../libs/web-components/src/components/radio-group/RadioGroup.svelte","../../../libs/web-components/src/components/radio-item/RadioItem.svelte","../../../libs/web-components/src/components/scrollable/Scrollable.svelte","../../../libs/web-components/src/common/urls.ts","../../../libs/web-components/src/components/side-menu/SideMenu.svelte","../../../libs/web-components/src/components/side-menu-group/SideMenuGroup.svelte","../../../libs/web-components/src/components/side-menu-heading/SideMenuHeading.svelte","../../../libs/web-components/src/components/skeleton/Skeleton.svelte","../../../libs/web-components/src/components/spacer/Spacer.svelte","../../../node_modules/svelte/src/runtime/store/index.js","../../../node_modules/svelte/src/runtime/motion/utils.js","../../../node_modules/svelte/src/runtime/motion/tweened.js","../../../libs/web-components/src/components/spinner/Spinner.svelte","../../../libs/web-components/src/components/tab/Tab.svelte","../../../libs/web-components/src/components/table/Table.svelte","../../../libs/web-components/src/components/table/TableSortHeader.svelte","../../../libs/web-components/src/components/tabs/Tabs.svelte","../../../libs/web-components/src/components/text-area/TextArea.svelte","../../../libs/web-components/src/layouts/three-column-layout/ThreeColumnLayout.svelte","../../../libs/web-components/src/components/tooltip/Tooltip.svelte","../../../libs/web-components/src/layouts/two-column-layout/TwoColumnLayout.svelte"],"sourcesContent":["/** @returns {void} */\nexport function noop() {}\n\nexport const identity = (x) => x;\n\n/**\n * @template T\n * @template S\n * @param {T} tar\n * @param {S} src\n * @returns {T & S}\n */\nexport function assign(tar, src) {\n\t// @ts-ignore\n\tfor (const k in src) tar[k] = src[k];\n\treturn /** @type {T & S} */ (tar);\n}\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n/**\n * @param {any} value\n * @returns {value is PromiseLike<any>}\n */\nexport function is_promise(value) {\n\treturn (\n\t\t!!value &&\n\t\t(typeof value === 'object' || typeof value === 'function') &&\n\t\ttypeof (/** @type {any} */ (value).then) === 'function'\n\t);\n}\n\n/** @returns {void} */\nexport function add_location(element, file, line, column, char) {\n\telement.__svelte_meta = {\n\t\tloc: { file, line, column, char }\n\t};\n}\n\nexport function run(fn) {\n\treturn fn();\n}\n\nexport function blank_object() {\n\treturn Object.create(null);\n}\n\n/**\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function run_all(fns) {\n\tfns.forEach(run);\n}\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\n/** @returns {boolean} */\nexport function safe_not_equal(a, b) {\n\treturn a != a ? b == b : a !== b || (a && typeof a === 'object') || typeof a === 'function';\n}\n\nlet src_url_equal_anchor;\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nexport function src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\tif (!src_url_equal_anchor) {\n\t\tsrc_url_equal_anchor = document.createElement('a');\n\t}\n\t// This is actually faster than doing URL(..).href\n\tsrc_url_equal_anchor.href = url;\n\treturn element_src === src_url_equal_anchor.href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element_srcset\n * @param {string | undefined | null} srcset\n * @returns {boolean}\n */\nexport function srcset_url_equal(element_srcset, srcset) {\n\tconst element_urls = split_srcset(element_srcset.srcset);\n\tconst urls = split_srcset(srcset || '');\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n\n/** @returns {boolean} */\nexport function not_equal(a, b) {\n\treturn a != a ? b == b : a !== b;\n}\n\n/** @returns {boolean} */\nexport function is_empty(obj) {\n\treturn Object.keys(obj).length === 0;\n}\n\n/** @returns {void} */\nexport function validate_store(store, name) {\n\tif (store != null && typeof store.subscribe !== 'function') {\n\t\tthrow new Error(`'${name}' is not a store with a 'subscribe' method`);\n\t}\n}\n\nexport function subscribe(store, ...callbacks) {\n\tif (store == null) {\n\t\tfor (const callback of callbacks) {\n\t\t\tcallback(undefined);\n\t\t}\n\t\treturn noop;\n\t}\n\tconst unsub = store.subscribe(...callbacks);\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * https://svelte.dev/docs/svelte-store#get\n * @template T\n * @param {import('../store/public.js').Readable<T>} store\n * @returns {T}\n */\nexport function get_store_value(store) {\n\tlet value;\n\tsubscribe(store, (_) => (value = _))();\n\treturn value;\n}\n\n/** @returns {void} */\nexport function component_subscribe(component, store, callback) {\n\tcomponent.$$.on_destroy.push(subscribe(store, callback));\n}\n\nexport function create_slot(definition, ctx, $$scope, fn) {\n\tif (definition) {\n\t\tconst slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n\t\treturn definition[0](slot_ctx);\n\t}\n}\n\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n\treturn definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;\n}\n\nexport function get_slot_changes(definition, $$scope, dirty, fn) {\n\tif (definition[2] && fn) {\n\t\tconst lets = definition[2](fn(dirty));\n\t\tif ($$scope.dirty === undefined) {\n\t\t\treturn lets;\n\t\t}\n\t\tif (typeof lets === 'object') {\n\t\t\tconst merged = [];\n\t\t\tconst len = Math.max($$scope.dirty.length, lets.length);\n\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\tmerged[i] = $$scope.dirty[i] | lets[i];\n\t\t\t}\n\t\t\treturn merged;\n\t\t}\n\t\treturn $$scope.dirty | lets;\n\t}\n\treturn $$scope.dirty;\n}\n\n/** @returns {void} */\nexport function update_slot_base(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tslot_changes,\n\tget_slot_context_fn\n) {\n\tif (slot_changes) {\n\t\tconst slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n\t\tslot.p(slot_context, slot_changes);\n\t}\n}\n\n/** @returns {void} */\nexport function update_slot(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tdirty,\n\tget_slot_changes_fn,\n\tget_slot_context_fn\n) {\n\tconst slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n\tupdate_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\n\n/** @returns {any[] | -1} */\nexport function get_all_dirty_from_scope($$scope) {\n\tif ($$scope.ctx.length > 32) {\n\t\tconst dirty = [];\n\t\tconst length = $$scope.ctx.length / 32;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tdirty[i] = -1;\n\t\t}\n\t\treturn dirty;\n\t}\n\treturn -1;\n}\n\n/** @returns {{}} */\nexport function exclude_internal_props(props) {\n\tconst result = {};\n\tfor (const k in props) if (k[0] !== '$') result[k] = props[k];\n\treturn result;\n}\n\n/** @returns {{}} */\nexport function compute_rest_props(props, keys) {\n\tconst rest = {};\n\tkeys = new Set(keys);\n\tfor (const k in props) if (!keys.has(k) && k[0] !== '$') rest[k] = props[k];\n\treturn rest;\n}\n\n/** @returns {{}} */\nexport function compute_slots(slots) {\n\tconst result = {};\n\tfor (const key in slots) {\n\t\tresult[key] = true;\n\t}\n\treturn result;\n}\n\n/** @returns {(this: any, ...args: any[]) => void} */\nexport function once(fn) {\n\tlet ran = false;\n\treturn function (...args) {\n\t\tif (ran) return;\n\t\tran = true;\n\t\tfn.call(this, ...args);\n\t};\n}\n\nexport function null_to_empty(value) {\n\treturn value == null ? '' : value;\n}\n\nexport function set_store_value(store, ret, value) {\n\tstore.set(value);\n\treturn ret;\n}\n\nexport const has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\n\nexport function action_destroyer(action_result) {\n\treturn action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\n/** @param {number | string} value\n * @returns {[number, string]}\n */\nexport function split_css_unit(value) {\n\tconst split = typeof value === 'string' && value.match(/^\\s*(-?[\\d.]+)([^\\s]*)\\s*$/);\n\treturn split ? [parseFloat(split[1]), split[2] || 'px'] : [/** @type {number} */ (value), 'px'];\n}\n\nexport const contenteditable_truthy_values = ['', true, 1, 'true', 'contenteditable'];\n","import { noop } from './utils.js';\n\nexport const is_client = typeof window !== 'undefined';\n\n/** @type {() => number} */\nexport let now = is_client ? () => window.performance.now() : () => Date.now();\n\nexport let raf = is_client ? (cb) => requestAnimationFrame(cb) : noop;\n\n// used internally for testing\n/** @returns {void} */\nexport function set_now(fn) {\n\tnow = fn;\n}\n\n/** @returns {void} */\nexport function set_raf(fn) {\n\traf = fn;\n}\n","import { raf } from './environment.js';\n\nconst tasks = new Set();\n\n/**\n * @param {number} now\n * @returns {void}\n */\nfunction run_tasks(now) {\n\ttasks.forEach((task) => {\n\t\tif (!task.c(now)) {\n\t\t\ttasks.delete(task);\n\t\t\ttask.f();\n\t\t}\n\t});\n\tif (tasks.size !== 0) raf(run_tasks);\n}\n\n/**\n * For testing purposes only!\n * @returns {void}\n */\nexport function clear_loops() {\n\ttasks.clear();\n}\n\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n * @param {import('./private.js').TaskCallback} callback\n * @returns {import('./private.js').Task}\n */\nexport function loop(callback) {\n\t/** @type {import('./private.js').TaskEntry} */\n\tlet task;\n\tif (tasks.size === 0) raf(run_tasks);\n\treturn {\n\t\tpromise: new Promise((fulfill) => {\n\t\t\ttasks.add((task = { c: callback, f: fulfill }));\n\t\t}),\n\t\tabort() {\n\t\t\ttasks.delete(task);\n\t\t}\n\t};\n}\n","/** @type {typeof globalThis} */\nexport const globals =\n\ttypeof window !== 'undefined'\n\t\t? window\n\t\t: typeof globalThis !== 'undefined'\n\t\t? globalThis\n\t\t: // @ts-ignore Node typings have this\n\t\t global;\n","import { contenteditable_truthy_values, has_prop } from './utils.js';\n\nimport { ResizeObserverSingleton } from './ResizeObserverSingleton.js';\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\n\n/**\n * @returns {void}\n */\nexport function start_hydrating() {\n\tis_hydrating = true;\n}\n\n/**\n * @returns {void}\n */\nexport function end_hydrating() {\n\tis_hydrating = false;\n}\n\n/**\n * @param {number} low\n * @param {number} high\n * @param {(index: number) => number} key\n * @param {number} value\n * @returns {number}\n */\nfunction upper_bound(low, high, key, value) {\n\t// Return first index of value larger than input value in the range [low, high)\n\twhile (low < high) {\n\t\tconst mid = low + ((high - low) >> 1);\n\t\tif (key(mid) <= value) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\thigh = mid;\n\t\t}\n\t}\n\treturn low;\n}\n\n/**\n * @param {NodeEx} target\n * @returns {void}\n */\nfunction init_hydrate(target) {\n\tif (target.hydrate_init) return;\n\ttarget.hydrate_init = true;\n\t// We know that all children have claim_order values since the unclaimed have been detached if target is not <head>\n\n\tlet children = /** @type {ArrayLike<NodeEx2>} */ (target.childNodes);\n\t// If target is <head>, there may be children without claim_order\n\tif (target.nodeName === 'HEAD') {\n\t\tconst my_children = [];\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tconst node = children[i];\n\t\t\tif (node.claim_order !== undefined) {\n\t\t\t\tmy_children.push(node);\n\t\t\t}\n\t\t}\n\t\tchildren = my_children;\n\t}\n\t/*\n\t * Reorder claimed children optimally.\n\t * We can reorder claimed children optimally by finding the longest subsequence of\n\t * nodes that are already claimed in order and only moving the rest. The longest\n\t * subsequence of nodes that are claimed in order can be found by\n\t * computing the longest increasing subsequence of .claim_order values.\n\t *\n\t * This algorithm is optimal in generating the least amount of reorder operations\n\t * possible.\n\t *\n\t * Proof:\n\t * We know that, given a set of reordering operations, the nodes that do not move\n\t * always form an increasing subsequence, since they do not move among each other\n\t * meaning that they must be already ordered among each other. Thus, the maximal\n\t * set of nodes that do not move form a longest increasing subsequence.\n\t */\n\t// Compute longest increasing subsequence\n\t// m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n\tconst m = new Int32Array(children.length + 1);\n\t// Predecessor indices + 1\n\tconst p = new Int32Array(children.length);\n\tm[0] = -1;\n\tlet longest = 0;\n\tfor (let i = 0; i < children.length; i++) {\n\t\tconst current = children[i].claim_order;\n\t\t// Find the largest subsequence length such that it ends in a value less than our current value\n\t\t// upper_bound returns first greater value, so we subtract one\n\t\t// with fast path for when we are on the current longest subsequence\n\t\tconst seq_len =\n\t\t\t(longest > 0 && children[m[longest]].claim_order <= current\n\t\t\t\t? longest + 1\n\t\t\t\t: upper_bound(1, longest, (idx) => children[m[idx]].claim_order, current)) - 1;\n\t\tp[i] = m[seq_len] + 1;\n\t\tconst new_len = seq_len + 1;\n\t\t// We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n\t\tm[new_len] = i;\n\t\tlongest = Math.max(new_len, longest);\n\t}\n\t// The longest increasing subsequence of nodes (initially reversed)\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst lis = [];\n\t// The rest of the nodes, nodes that will be moved\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst to_move = [];\n\tlet last = children.length - 1;\n\tfor (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n\t\tlis.push(children[cur - 1]);\n\t\tfor (; last >= cur; last--) {\n\t\t\tto_move.push(children[last]);\n\t\t}\n\t\tlast--;\n\t}\n\tfor (; last >= 0; last--) {\n\t\tto_move.push(children[last]);\n\t}\n\tlis.reverse();\n\t// We sort the nodes being moved to guarantee that their insertion order matches the claim order\n\tto_move.sort((a, b) => a.claim_order - b.claim_order);\n\t// Finally, we move the nodes\n\tfor (let i = 0, j = 0; i < to_move.length; i++) {\n\t\twhile (j < lis.length && to_move[i].claim_order >= lis[j].claim_order) {\n\t\t\tj++;\n\t\t}\n\t\tconst anchor = j < lis.length ? lis[j] : null;\n\t\ttarget.insertBefore(to_move[i], anchor);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @returns {void}\n */\nexport function append(target, node) {\n\ttarget.appendChild(node);\n}\n\n/**\n * @param {Node} target\n * @param {string} style_sheet_id\n * @param {string} styles\n * @returns {void}\n */\nexport function append_styles(target, style_sheet_id, styles) {\n\tconst append_styles_to = get_root_for_style(target);\n\tif (!append_styles_to.getElementById(style_sheet_id)) {\n\t\tconst style = element('style');\n\t\tstyle.id = style_sheet_id;\n\t\tstyle.textContent = styles;\n\t\tappend_stylesheet(append_styles_to, style);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {ShadowRoot | Document}\n */\nexport function get_root_for_style(node) {\n\tif (!node) return document;\n\tconst root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n\tif (root && /** @type {ShadowRoot} */ (root).host) {\n\t\treturn /** @type {ShadowRoot} */ (root);\n\t}\n\treturn node.ownerDocument;\n}\n\n/**\n * @param {Node} node\n * @returns {CSSStyleSheet}\n */\nexport function append_empty_stylesheet(node) {\n\tconst style_element = element('style');\n\t// For transitions to work without 'style-src: unsafe-inline' Content Security Policy,\n\t// these empty tags need to be allowed with a hash as a workaround until we move to the Web Animations API.\n\t// Using the hash for the empty string (for an empty tag) works in all browsers except Safari.\n\t// So as a workaround for the workaround, when we append empty style tags we set their content to /* empty */.\n\t// The hash 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc=' will then work even in Safari.\n\tstyle_element.textContent = '/* empty */';\n\tappend_stylesheet(get_root_for_style(node), style_element);\n\treturn style_element.sheet;\n}\n\n/**\n * @param {ShadowRoot | Document} node\n * @param {HTMLStyleElement} style\n * @returns {CSSStyleSheet}\n */\nfunction append_stylesheet(node, style) {\n\tappend(/** @type {Document} */ (node).head || node, style);\n\treturn style.sheet;\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @returns {void}\n */\nexport function append_hydration(target, node) {\n\tif (is_hydrating) {\n\t\tinit_hydrate(target);\n\t\tif (\n\t\t\ttarget.actual_end_child === undefined ||\n\t\t\t(target.actual_end_child !== null && target.actual_end_child.parentNode !== target)\n\t\t) {\n\t\t\ttarget.actual_end_child = target.firstChild;\n\t\t}\n\t\t// Skip nodes of undefined ordering\n\t\twhile (target.actual_end_child !== null && target.actual_end_child.claim_order === undefined) {\n\t\t\ttarget.actual_end_child = target.actual_end_child.nextSibling;\n\t\t}\n\t\tif (node !== target.actual_end_child) {\n\t\t\t// We only insert if the ordering of this node should be modified or the parent node is not target\n\t\t\tif (node.claim_order !== undefined || node.parentNode !== target) {\n\t\t\t\ttarget.insertBefore(node, target.actual_end_child);\n\t\t\t}\n\t\t} else {\n\t\t\ttarget.actual_end_child = node.nextSibling;\n\t\t}\n\t} else if (node.parentNode !== target || node.nextSibling !== null) {\n\t\ttarget.appendChild(node);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @param {Node} [anchor]\n * @returns {void}\n */\nexport function insert(target, node, anchor) {\n\ttarget.insertBefore(node, anchor || null);\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @param {NodeEx} [anchor]\n * @returns {void}\n */\nexport function insert_hydration(target, node, anchor) {\n\tif (is_hydrating && !anchor) {\n\t\tappend_hydration(target, node);\n\t} else if (node.parentNode !== target || node.nextSibling != anchor) {\n\t\ttarget.insertBefore(node, anchor || null);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {void}\n */\nexport function detach(node) {\n\tif (node.parentNode) {\n\t\tnode.parentNode.removeChild(node);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function destroy_each(iterations, detaching) {\n\tfor (let i = 0; i < iterations.length; i += 1) {\n\t\tif (iterations[i]) iterations[i].d(detaching);\n\t}\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element(name) {\n\treturn document.createElement(name);\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @param {string} is\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element_is(name, is) {\n\treturn document.createElement(name, { is });\n}\n\n/**\n * @template T\n * @template {keyof T} K\n * @param {T} obj\n * @param {K[]} exclude\n * @returns {Pick<T, Exclude<keyof T, K>>}\n */\nexport function object_without_properties(obj, exclude) {\n\tconst target = /** @type {Pick<T, Exclude<keyof T, K>>} */ ({});\n\tfor (const k in obj) {\n\t\tif (\n\t\t\thas_prop(obj, k) &&\n\t\t\t// @ts-ignore\n\t\t\texclude.indexOf(k) === -1\n\t\t) {\n\t\t\t// @ts-ignore\n\t\t\ttarget[k] = obj[k];\n\t\t}\n\t}\n\treturn target;\n}\n\n/**\n * @template {keyof SVGElementTagNameMap} K\n * @param {K} name\n * @returns {SVGElement}\n */\nexport function svg_element(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n/**\n * @param {string} data\n * @returns {Text}\n */\nexport function text(data) {\n\treturn document.createTextNode(data);\n}\n\n/**\n * @returns {Text} */\nexport function space() {\n\treturn text(' ');\n}\n\n/**\n * @returns {Text} */\nexport function empty() {\n\treturn text('');\n}\n\n/**\n * @param {string} content\n * @returns {Comment}\n */\nexport function comment(content) {\n\treturn document.createComment(content);\n}\n\n/**\n * @param {EventTarget} node\n * @param {string} event\n * @param {EventListenerOrEventListenerObject} handler\n * @param {boolean | AddEventListenerOptions | EventListenerOptions} [options]\n * @returns {() => void}\n */\nexport function listen(node, event, handler, options) {\n\tnode.addEventListener(event, handler, options);\n\treturn () => node.removeEventListener(event, handler, options);\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function prevent_default(fn) {\n\treturn function (event) {\n\t\tevent.preventDefault();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopPropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_immediate_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopImmediatePropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function self(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.target === this) fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function trusted(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.isTrusted) fn.call(this, event);\n\t};\n}\n\n/**\n * @param {Element} node\n * @param {string} attribute\n * @param {string} [value]\n * @returns {void}\n */\nexport function attr(node, attribute, value) {\n\tif (value == null) node.removeAttribute(attribute);\n\telse if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);\n}\n/**\n * List of attributes that should always be set through the attr method,\n * because updating them through the property setter doesn't work reliably.\n * In the example of `width`/`height`, the problem is that the setter only\n * accepts numeric values, but the attribute can also be set to a string like `50%`.\n * If this list becomes too big, rethink this approach.\n */\nconst always_set_through_set_attribute = ['width', 'height'];\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_attributes(node, attributes) {\n\t// @ts-ignore\n\tconst descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n\tfor (const key in attributes) {\n\t\tif (attributes[key] == null) {\n\t\t\tnode.removeAttribute(key);\n\t\t} else if (key === 'style') {\n\t\t\tnode.style.cssText = attributes[key];\n\t\t} else if (key === '__value') {\n\t\t\t/** @type {any} */ (node).value = node[key] = attributes[key];\n\t\t} else if (\n\t\t\tdescriptors[key] &&\n\t\t\tdescriptors[key].set &&\n\t\t\talways_set_through_set_attribute.indexOf(key) === -1\n\t\t) {\n\t\t\tnode[key] = attributes[key];\n\t\t} else {\n\t\t\tattr(node, key, attributes[key]);\n\t\t}\n\t}\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_svg_attributes(node, attributes) {\n\tfor (const key in attributes) {\n\t\tattr(node, key, attributes[key]);\n\t}\n}\n\n/**\n * @param {Record<string, unknown>} data_map\n * @returns {void}\n */\nexport function set_custom_element_data_map(node, data_map) {\n\tObject.keys(data_map).forEach((key) => {\n\t\tset_custom_element_data(node, key, data_map[key]);\n\t});\n}\n\n/**\n * @returns {void} */\nexport function set_custom_element_data(node, prop, value) {\n\tconst lower = prop.toLowerCase(); // for backwards compatibility with existing behavior we do lowercase first\n\tif (lower in node) {\n\t\tnode[lower] = typeof node[lower] === 'boolean' && value === '' ? true : value;\n\t} else if (prop in node) {\n\t\tnode[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n\t} else {\n\t\tattr(node, prop, value);\n\t}\n}\n\n/**\n * @param {string} tag\n */\nexport function set_dynamic_element_data(tag) {\n\treturn /-/.test(tag) ? set_custom_element_data_map : set_attributes;\n}\n\n/**\n * @returns {void}\n */\nexport function xlink_attr(node, attribute, value) {\n\tnode.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {HTMLElement} node\n * @returns {string}\n */\nexport function get_svelte_dataset(node) {\n\treturn node.dataset.svelteH;\n}\n\n/**\n * @returns {unknown[]} */\nexport function get_binding_group_value(group, __value, checked) {\n\tconst value = new Set();\n\tfor (let i = 0; i < group.length; i += 1) {\n\t\tif (group[i].checked) value.add(group[i].__value);\n\t}\n\tif (!checked) {\n\t\tvalue.delete(__value);\n\t}\n\treturn Array.from(value);\n}\n\n/**\n * @param {HTMLInputElement[]} group\n * @returns {{ p(...inputs: HTMLInputElement[]): void; r(): void; }}\n */\nexport function init_binding_group(group) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\treturn {\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\t_inputs.forEach((input) => group.push(input));\n\t\t},\n\t\t/* remove */ r() {\n\t\t\t_inputs.forEach((input) => group.splice(group.indexOf(input), 1));\n\t\t}\n\t};\n}\n\n/**\n * @param {number[]} indexes\n * @returns {{ u(new_indexes: number[]): void; p(...inputs: HTMLInputElement[]): void; r: () => void; }}\n */\nexport function init_binding_group_dynamic(group, indexes) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _group = get_binding_group(group);\n\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\n\tfunction get_binding_group(group) {\n\t\tfor (let i = 0; i < indexes.length; i++) {\n\t\t\tgroup = group[indexes[i]] = group[indexes[i]] || [];\n\t\t}\n\t\treturn group;\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction push() {\n\t\t_inputs.forEach((input) => _group.push(input));\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction remove() {\n\t\t_inputs.forEach((input) => _group.splice(_group.indexOf(input), 1));\n\t}\n\treturn {\n\t\t/* update */ u(new_indexes) {\n\t\t\tindexes = new_indexes;\n\t\t\tconst new_group = get_binding_group(group);\n\t\t\tif (new_group !== _group) {\n\t\t\t\tremove();\n\t\t\t\t_group = new_group;\n\t\t\t\tpush();\n\t\t\t}\n\t\t},\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\tpush();\n\t\t},\n\t\t/* remove */ r: remove\n\t};\n}\n\n/** @returns {number} */\nexport function to_number(value) {\n\treturn value === '' ? null : +value;\n}\n\n/** @returns {any[]} */\nexport function time_ranges_to_array(ranges) {\n\tconst array = [];\n\tfor (let i = 0; i < ranges.length; i += 1) {\n\t\tarray.push({ start: ranges.start(i), end: ranges.end(i) });\n\t}\n\treturn array;\n}\n\n/**\n * @param {Element} element\n * @returns {ChildNode[]}\n */\nexport function children(element) {\n\treturn Array.from(element.childNodes);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {void}\n */\nfunction init_claim_info(nodes) {\n\tif (nodes.claim_info === undefined) {\n\t\tnodes.claim_info = { last_index: 0, total_claimed: 0 };\n\t}\n}\n\n/**\n * @template {ChildNodeEx} R\n * @param {ChildNodeArray} nodes\n * @param {(node: ChildNodeEx) => node is R} predicate\n * @param {(node: ChildNodeEx) => ChildNodeEx | undefined} process_node\n * @param {() => R} create_node\n * @param {boolean} dont_update_last_index\n * @returns {R}\n */\nfunction claim_node(nodes, predicate, process_node, create_node, dont_update_last_index = false) {\n\t// Try to find nodes in an order such that we lengthen the longest increasing subsequence\n\tinit_claim_info(nodes);\n\tconst result_node = (() => {\n\t\t// We first try to find an element after the previous one\n\t\tfor (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// Otherwise, we try to find one before\n\t\t// We iterate in reverse so that we don't go too far back\n\t\tfor (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t} else if (replacement === undefined) {\n\t\t\t\t\t// Since we spliced before the last_index, we decrease it\n\t\t\t\t\tnodes.claim_info.last_index--;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// If we can't find any matching node, we create a new one\n\t\treturn create_node();\n\t})();\n\tresult_node.claim_order = nodes.claim_info.total_claimed;\n\tnodes.claim_info.total_claimed += 1;\n\treturn result_node;\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @param {(name: string) => Element | SVGElement} create_element\n * @returns {Element | SVGElement}\n */\nfunction claim_element_base(nodes, name, attributes, create_element) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Element | SVGElement} */\n\t\t(node) => node.nodeName === name,\n\t\t/** @param {Element} node */\n\t\t(node) => {\n\t\t\tconst remove = [];\n\t\t\tfor (let j = 0; j < node.attributes.length; j++) {\n\t\t\t\tconst attribute = node.attributes[j];\n\t\t\t\tif (!attributes[attribute.name]) {\n\t\t\t\t\tremove.push(attribute.name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tremove.forEach((v) => node.removeAttribute(v));\n\t\t\treturn undefined;\n\t\t},\n\t\t() => create_element(name)\n\t);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_svg_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, svg_element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Text}\n */\nexport function claim_text(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Text} */\n\t\t(node) => node.nodeType === 3,\n\t\t/** @param {Text} node */\n\t\t(node) => {\n\t\t\tconst data_str = '' + data;\n\t\t\tif (node.data.startsWith(data_str)) {\n\t\t\t\tif (node.data.length !== data_str.length) {\n\t\t\t\t\treturn node.splitText(data_str.length);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode.data = data_str;\n\t\t\t}\n\t\t},\n\t\t() => text(data),\n\t\ttrue // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n\t);\n}\n\n/**\n * @returns {Text} */\nexport function claim_space(nodes) {\n\treturn claim_text(nodes, ' ');\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Comment}\n */\nexport function claim_comment(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Comment} */\n\t\t(node) => node.nodeType === 8,\n\t\t/** @param {Comment} node */\n\t\t(node) => {\n\t\t\tnode.data = '' + data;\n\t\t\treturn undefined;\n\t\t},\n\t\t() => comment(data),\n\t\ttrue\n\t);\n}\n\nfunction get_comment_idx(nodes, text, start) {\n\tfor (let i = start; i < nodes.length; i += 1) {\n\t\tconst node = nodes[i];\n\t\tif (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n * @param {boolean} is_svg\n * @returns {HtmlTagHydration}\n */\nexport function claim_html_tag(nodes, is_svg) {\n\t// find html opening tag\n\tconst start_index = get_comment_idx(nodes, 'HTML_TAG_START', 0);\n\tconst end_index = get_comment_idx(nodes, 'HTML_TAG_END', start_index + 1);\n\tif (start_index === -1 || end_index === -1) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\n\tinit_claim_info(nodes);\n\tconst html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n\tdetach(html_tag_nodes[0]);\n\tdetach(html_tag_nodes[html_tag_nodes.length - 1]);\n\tconst claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n\tif (claimed_nodes.length === 0) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\tfor (const n of claimed_nodes) {\n\t\tn.claim_order = nodes.claim_info.total_claimed;\n\t\tnodes.claim_info.total_claimed += 1;\n\t}\n\treturn new HtmlTagHydration(is_svg, claimed_nodes);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data(text, data) {\n\tdata = '' + data;\n\tif (text.data === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data_contenteditable(text, data) {\n\tdata = '' + data;\n\tif (text.wholeText === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @param {string} attr_value\n * @returns {void}\n */\nexport function set_data_maybe_contenteditable(text, data, attr_value) {\n\tif (~contenteditable_truthy_values.indexOf(attr_value)) {\n\t\tset_data_contenteditable(text, data);\n\t} else {\n\t\tset_data(text, data);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_input_value(input, value) {\n\tinput.value = value == null ? '' : value;\n}\n\n/**\n * @returns {void} */\nexport function set_input_type(input, type) {\n\ttry {\n\t\tinput.type = type;\n\t} catch (e) {\n\t\t// do nothing\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_style(node, key, value, important) {\n\tif (value == null) {\n\t\tnode.style.removeProperty(key);\n\t} else {\n\t\tnode.style.setProperty(key, value, important ? 'important' : '');\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_option(select, value, mounting) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\tif (option.__value === value) {\n\t\t\toption.selected = true;\n\t\t\treturn;\n\t\t}\n\t}\n\tif (!mounting || value !== undefined) {\n\t\tselect.selectedIndex = -1; // no option should be selected\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_options(select, value) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\toption.selected = ~value.indexOf(option.__value);\n\t}\n}\n\nexport function select_value(select) {\n\tconst selected_option = select.querySelector(':checked');\n\treturn selected_option && selected_option.__value;\n}\n\nexport function select_multiple_value(select) {\n\treturn [].map.call(select.querySelectorAll(':checked'), (option) => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\n\n/**\n * @type {boolean} */\nlet crossorigin;\n\n/**\n * @returns {boolean} */\nexport function is_crossorigin() {\n\tif (crossorigin === undefined) {\n\t\tcrossorigin = false;\n\t\ttry {\n\t\t\tif (typeof window !== 'undefined' && window.parent) {\n\t\t\t\tvoid window.parent.document;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tcrossorigin = true;\n\t\t}\n\t}\n\treturn crossorigin;\n}\n\n/**\n * @param {HTMLElement} node\n * @param {() => void} fn\n * @returns {() => void}\n */\nexport function add_iframe_resize_listener(node, fn) {\n\tconst computed_style = getComputedStyle(node);\n\tif (computed_style.position === 'static') {\n\t\tnode.style.position = 'relative';\n\t}\n\tconst iframe = element('iframe');\n\tiframe.setAttribute(\n\t\t'style',\n\t\t'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n\t\t\t'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;'\n\t);\n\tiframe.setAttribute('aria-hidden', 'true');\n\tiframe.tabIndex = -1;\n\tconst crossorigin = is_crossorigin();\n\n\t/**\n\t * @type {() => void}\n\t */\n\tlet unsubscribe;\n\tif (crossorigin) {\n\t\tiframe.src = \"data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>\";\n\t\tunsubscribe = listen(\n\t\t\twindow,\n\t\t\t'message',\n\t\t\t/** @param {MessageEvent} event */ (event) => {\n\t\t\t\tif (event.source === iframe.contentWindow) fn();\n\t\t\t}\n\t\t);\n\t} else {\n\t\tiframe.src = 'about:blank';\n\t\tiframe.onload = () => {\n\t\t\tunsubscribe = listen(iframe.contentWindow, 'resize', fn);\n\t\t\t// make sure an initial resize event is fired _after_ the iframe is loaded (which is asynchronous)\n\t\t\t// see https://github.com/sveltejs/svelte/issues/4233\n\t\t\tfn();\n\t\t};\n\t}\n\tappend(node, iframe);\n\treturn () => {\n\t\tif (crossorigin) {\n\t\t\tunsubscribe();\n\t\t} else if (unsubscribe && iframe.contentWindow) {\n\t\t\tunsubscribe();\n\t\t}\n\t\tdetach(iframe);\n\t};\n}\nexport const resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'content-box'\n});\nexport const resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'border-box'\n});\nexport const resize_observer_device_pixel_content_box = /* @__PURE__ */ new ResizeObserverSingleton(\n\t{ box: 'device-pixel-content-box' }\n);\nexport { ResizeObserverSingleton };\n\n/**\n * @returns {void} */\nexport function toggle_class(element, name, toggle) {\n\t// The `!!` is required because an `undefined` flag means flipping the current state.\n\telement.classList.toggle(name, !!toggle);\n}\n\n/**\n * @template T\n * @param {string} type\n * @param {T} [detail]\n * @param {{ bubbles?: boolean, cancelable?: boolean }} [options]\n * @returns {CustomEvent<T>}\n */\nexport function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\n/**\n * @param {string} selector\n * @param {HTMLElement} parent\n * @returns {ChildNodeArray}\n */\nexport function query_selector_all(selector, parent = document.body) {\n\treturn Array.from(parent.querySelectorAll(selector));\n}\n\n/**\n * @param {string} nodeId\n * @param {HTMLElement} head\n * @returns {any[]}\n */\nexport function head_selector(nodeId, head) {\n\tconst result = [];\n\tlet started = 0;\n\tfor (const node of head.childNodes) {\n\t\tif (node.nodeType === 8 /* comment node */) {\n\t\t\tconst comment = node.textContent.trim();\n\t\t\tif (comment === `HEAD_${nodeId}_END`) {\n\t\t\t\tstarted -= 1;\n\t\t\t\tresult.push(node);\n\t\t\t} else if (comment === `HEAD_${nodeId}_START`) {\n\t\t\t\tstarted += 1;\n\t\t\t\tresult.push(node);\n\t\t\t}\n\t\t} else if (started > 0) {\n\t\t\tresult.push(node);\n\t\t}\n\t}\n\treturn result;\n}\n/** */\nexport class HtmlTag {\n\t/**\n\t * @private\n\t * @default false\n\t */\n\tis_svg = false;\n\t/** parent for creating node */\n\te = undefined;\n\t/** html tag nodes */\n\tn = undefined;\n\t/** target */\n\tt = undefined;\n\t/** anchor */\n\ta = undefined;\n\tconstructor(is_svg = false) {\n\t\tthis.is_svg = is_svg;\n\t\tthis.e = this.n = null;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tthis.h(html);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @param {HTMLElement | SVGElement} target\n\t * @param {HTMLElement | SVGElement} anchor\n\t * @returns {void}\n\t */\n\tm(html, target, anchor = null) {\n\t\tif (!this.e) {\n\t\t\tif (this.is_svg)\n\t\t\t\tthis.e = svg_element(/** @type {keyof SVGElementTagNameMap} */ (target.nodeName));\n\t\t\t/** #7364 target for <template> may be provided as #document-fragment(11) */ else\n\t\t\t\tthis.e = element(\n\t\t\t\t\t/** @type {keyof HTMLElementTagNameMap} */ (\n\t\t\t\t\t\ttarget.nodeType === 11 ? 'TEMPLATE' : target.nodeName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\tthis.t =\n\t\t\t\ttarget.tagName !== 'TEMPLATE'\n\t\t\t\t\t? target\n\t\t\t\t\t: /** @type {HTMLTemplateElement} */ (target).content;\n\t\t\tthis.c(html);\n\t\t}\n\t\tthis.i(anchor);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\th(html) {\n\t\tthis.e.innerHTML = html;\n\t\tthis.n = Array.from(\n\t\t\tthis.e.nodeName === 'TEMPLATE' ? this.e.content.childNodes : this.e.childNodes\n\t\t);\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert(this.t, this.n[i], anchor);\n\t\t}\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tp(html) {\n\t\tthis.d();\n\t\tthis.h(html);\n\t\tthis.i(this.a);\n\t}\n\n\t/**\n\t * @returns {void} */\n\td() {\n\t\tthis.n.forEach(detach);\n\t}\n}\n\nexport class HtmlTagHydration extends HtmlTag {\n\t/** @type {Element[]} hydration claimed nodes */\n\tl = undefined;\n\n\tconstructor(is_svg = false, claimed_nodes) {\n\t\tsuper(is_svg);\n\t\tthis.e = this.n = null;\n\t\tthis.l = claimed_nodes;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tif (this.l) {\n\t\t\tthis.n = this.l;\n\t\t} else {\n\t\t\tsuper.c(html);\n\t\t}\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert_hydration(this.t, this.n[i], anchor);\n\t\t}\n\t}\n}\n\n/**\n * @param {NamedNodeMap} attributes\n * @returns {{}}\n */\nexport function attribute_to_object(attributes) {\n\tconst result = {};\n\tfor (const attribute of attributes) {\n\t\tresult[attribute.name] = attribute.value;\n\t}\n\treturn result;\n}\n\nconst escaped = {\n\t'\"': '"',\n\t'&': '&',\n\t'<': '<'\n};\n\nconst regex_attribute_characters_to_escape = /[\"&<]/g;\n\n/**\n * Note that the attribute itself should be surrounded in double quotes\n * @param {any} attribute\n */\nfunction escape_attribute(attribute) {\n\treturn String(attribute).replace(regex_attribute_characters_to_escape, (match) => escaped[match]);\n}\n\n/**\n * @param {Record<string, string>} attributes\n */\nexport function stringify_spread(attributes) {\n\tlet str = ' ';\n\tfor (const key in attributes) {\n\t\tif (attributes[key] != null) {\n\t\t\tstr += `${key}=\"${escape_attribute(attributes[key])}\" `;\n\t\t}\n\t}\n\n\treturn str;\n}\n\n/**\n * @param {HTMLElement} element\n * @returns {{}}\n */\nexport function get_custom_elements_slots(element) {\n\tconst result = {};\n\telement.childNodes.forEach(\n\t\t/** @param {Element} node */ (node) => {\n\t\t\tresult[node.slot || 'default'] = true;\n\t\t}\n\t);\n\treturn result;\n}\n\nexport function construct_svelte_component(component, props) {\n\treturn new component(props);\n}\n\n/**\n * @typedef {Node & {\n * \tclaim_order?: number;\n * \thydrate_init?: true;\n * \tactual_end_child?: NodeEx;\n * \tchildNodes: NodeListOf<NodeEx>;\n * }} NodeEx\n */\n\n/** @typedef {ChildNode & NodeEx} ChildNodeEx */\n\n/** @typedef {NodeEx & { claim_order: number }} NodeEx2 */\n\n/**\n * @typedef {ChildNodeEx[] & {\n * \tclaim_info?: {\n * \t\tlast_index: number;\n * \t\ttotal_claimed: number;\n * \t};\n * }} ChildNodeArray\n */\n","import { append_empty_stylesheet, detach, get_root_for_style } from './dom.js';\nimport { raf } from './environment.js';\n\n// we need to store the information for multiple documents because a Svelte application could also contain iframes\n// https://github.com/sveltejs/svelte/issues/3624\n/** @type {Map<Document | ShadowRoot, import('./private.d.ts').StyleInformation>} */\nconst managed_styles = new Map();\n\nlet active = 0;\n\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\n/**\n * @param {string} str\n * @returns {number}\n */\nfunction hash(str) {\n\tlet hash = 5381;\n\tlet i = str.length;\n\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n\treturn hash >>> 0;\n}\n\n/**\n * @param {Document | ShadowRoot} doc\n * @param {Element & ElementCSSInlineStyle} node\n * @returns {{ stylesheet: any; rules: {}; }}\n */\nfunction create_style_information(doc, node) {\n\tconst info = { stylesheet: append_empty_stylesheet(node), rules: {} };\n\tmanaged_styles.set(doc, info);\n\treturn info;\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {number} a\n * @param {number} b\n * @param {number} duration\n * @param {number} delay\n * @param {(t: number) => number} ease\n * @param {(t: number, u: number) => string} fn\n * @param {number} uid\n * @returns {string}\n */\nexport function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n\tconst step = 16.666 / duration;\n\tlet keyframes = '{\\n';\n\tfor (let p = 0; p <= 1; p += step) {\n\t\tconst t = a + (b - a) * ease(p);\n\t\tkeyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n\t}\n\tconst rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n\tconst name = `__svelte_${hash(rule)}_${uid}`;\n\tconst doc = get_root_for_style(node);\n\tconst { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);\n\tif (!rules[name]) {\n\t\trules[name] = true;\n\t\tstylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n\t}\n\tconst animation = node.style.animation || '';\n\tnode.style.animation = `${\n\t\tanimation ? `${animation}, ` : ''\n\t}${name} ${duration}ms linear ${delay}ms 1 both`;\n\tactive += 1;\n\treturn name;\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {string} [name]\n * @returns {void}\n */\nexport function delete_rule(node, name) {\n\tconst previous = (node.style.animation || '').split(', ');\n\tconst next = previous.filter(\n\t\tname\n\t\t\t? (anim) => anim.indexOf(name) < 0 // remove specific animation\n\t\t\t: (anim) => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n\t);\n\tconst deleted = previous.length - next.length;\n\tif (deleted) {\n\t\tnode.style.animation = next.join(', ');\n\t\tactive -= deleted;\n\t\tif (!active) clear_rules();\n\t}\n}\n\n/** @returns {void} */\nexport function clear_rules() {\n\traf(() => {\n\t\tif (active) return;\n\t\tmanaged_styles.forEach((info) => {\n\t\t\tconst { ownerNode } = info.stylesheet;\n\t\t\t// there is no ownerNode if it runs on jsdom.\n\t\t\tif (ownerNode) detach(ownerNode);\n\t\t});\n\t\tmanaged_styles.clear();\n\t});\n}\n","import { custom_event } from './dom.js';\n\nexport let current_component;\n\n/** @returns {void} */\nexport function set_current_component(component) {\n\tcurrent_component = component;\n}\n\nexport function get_current_component() {\n\tif (!current_component) throw new Error('Function called outside component initialization');\n\treturn current_component;\n}\n\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#beforeupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function beforeUpdate(fn) {\n\tget_current_component().$$.before_update.push(fn);\n}\n\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted.\n *\n * `onMount` does not run inside a [server-side component](https://svelte.dev/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs/svelte#onmount\n * @template T\n * @param {() => import('./private.js').NotFunction<T> | Promise<import('./private.js').NotFunction<T>> | (() => any)} fn\n * @returns {void}\n */\nexport function onMount(fn) {\n\tget_current_component().$$.on_mount.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#afterupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function afterUpdate(fn) {\n\tget_current_component().$$.after_update.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs/svelte#ondestroy\n * @param {() => any} fn\n * @returns {void}\n */\nexport function onDestroy(fn) {\n\tget_current_component().$$.on_destroy.push(fn);\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n * loaded: never; // does not take a detail argument\n * change: string; // takes a detail argument of type string, which is required\n * optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * https://svelte.dev/docs/svelte#createeventdispatcher\n * @template {Record<string, any>} [EventMap=any]\n * @returns {import('./public.js').EventDispatcher<EventMap>}\n */\nexport function createEventDispatcher() {\n\tconst component = get_current_component();\n\treturn (type, detail, { cancelable = false } = {}) => {\n\t\tconst callbacks = component.$$.callbacks[type];\n\t\tif (callbacks) {\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = custom_event(/** @type {string} */ (type), detail, { cancelable });\n\t\t\tcallbacks.slice().forEach((fn) => {\n\t\t\t\tfn.call(component, event);\n\t\t\t});\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\t\treturn true;\n\t};\n}\n\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#setcontext\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nexport function setContext(key, context) {\n\tget_current_component().$$.context.set(key, context);\n\treturn context;\n}\n\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#getcontext\n * @template T\n * @param {any} key\n * @returns {T}\n */\nexport function getContext(key) {\n\treturn get_current_component().$$.context.get(key);\n}\n\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * https://svelte.dev/docs/svelte#getallcontexts\n * @template {Map<any, any>} [T=Map<any, any>]\n * @returns {T}\n */\nexport function getAllContexts() {\n\treturn get_current_component().$$.context;\n}\n\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#hascontext\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\treturn get_current_component().$$.context.has(key);\n}\n\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\n/**\n * @param component\n * @param event\n * @returns {void}\n */\nexport function bubble(component, event) {\n\tconst callbacks = component.$$.callbacks[event.type];\n\tif (callbacks) {\n\t\t// @ts-ignore\n\t\tcallbacks.slice().forEach((fn) => fn.call(this, event));\n\t}\n}\n","import { run_all } from './utils.js';\nimport { current_component, set_current_component } from './lifecycle.js';\n\nexport const dirty_components = [];\nexport const intros = { enabled: false };\nexport const binding_callbacks = [];\n\nlet render_callbacks = [];\n\nconst flush_callbacks = [];\n\nconst resolved_promise = /* @__PURE__ */ Promise.resolve();\n\nlet update_scheduled = false;\n\n/** @returns {void} */\nexport function schedule_update() {\n\tif (!update_scheduled) {\n\t\tupdate_scheduled = true;\n\t\tresolved_promise.then(flush);\n\t}\n}\n\n/** @returns {Promise<void>} */\nexport function tick() {\n\tschedule_update();\n\treturn resolved_promise;\n}\n\n/** @returns {void} */\nexport function add_render_callback(fn) {\n\trender_callbacks.push(fn);\n}\n\n/** @returns {void} */\nexport function add_flush_callback(fn) {\n\tflush_callbacks.push(fn);\n}\n\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\n\nlet flushidx = 0; // Do *not* move this inside the flush() function\n\n/** @returns {void} */\nexport function flush() {\n\t// Do not reenter flush while dirty components are updated, as this can\n\t// result in an infinite loop. Instead, let the inner flush handle it.\n\t// Reentrancy is ok afterwards for bindings etc.\n\tif (flushidx !== 0) {\n\t\treturn;\n\t}\n\tconst saved_component = current_component;\n\tdo {\n\t\t// first, call beforeUpdate functions\n\t\t// and update components\n\t\ttry {\n\t\t\twhile (flushidx < dirty_components.length) {\n\t\t\t\tconst component = dirty_components[flushidx];\n\t\t\t\tflushidx++;\n\t\t\t\tset_current_component(component);\n\t\t\t\tupdate(component.$$);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// reset dirty state to not end up in a deadlocked state and then rethrow\n\t\t\tdirty_components.length = 0;\n\t\t\tflushidx = 0;\n\t\t\tthrow e;\n\t\t}\n\t\tset_current_component(null);\n\t\tdirty_components.length = 0;\n\t\tflushidx = 0;\n\t\twhile (binding_callbacks.length) binding_callbacks.pop()();\n\t\t// then, once components are updated, call\n\t\t// afterUpdate functions. This may cause\n\t\t// subsequent updates...\n\t\tfor (let i = 0; i < render_callbacks.length; i += 1) {\n\t\t\tconst callback = render_callbacks[i];\n\t\t\tif (!seen_callbacks.has(callback)) {\n\t\t\t\t// ...so guard against infinite loops\n\t\t\t\tseen_callbacks.add(callback);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t\trender_callbacks.length = 0;\n\t} while (dirty_components.length);\n\twhile (flush_callbacks.length) {\n\t\tflush_callbacks.pop()();\n\t}\n\tupdate_scheduled = false;\n\tseen_callbacks.clear();\n\tset_current_component(saved_component);\n}\n\n/** @returns {void} */\nfunction update($$) {\n\tif ($$.fragment !== null) {\n\t\t$$.update();\n\t\trun_all($$.before_update);\n\t\tconst dirty = $$.dirty;\n\t\t$$.dirty = [-1];\n\t\t$$.fragment && $$.fragment.p($$.ctx, dirty);\n\t\t$$.after_update.forEach(add_render_callback);\n\t}\n}\n\n/**\n * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function flush_render_callbacks(fns) {\n\tconst filtered = [];\n\tconst targets = [];\n\trender_callbacks.forEach((c) => (fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)));\n\ttargets.forEach((c) => c());\n\trender_callbacks = filtered;\n}\n","import { identity as linear, is_function, noop, run_all } from './utils.js';\nimport { now } from './environment.js';\nimport { loop } from './loop.js';\nimport { create_rule, delete_rule } from './style_manager.js';\nimport { custom_event } from './dom.js';\nimport { add_render_callback } from './scheduler.js';\n\n/**\n * @type {Promise<void> | null}\n */\nlet promise;\n\n/**\n * @returns {Promise<void>}\n */\nfunction wait() {\n\tif (!promise) {\n\t\tpromise = Promise.resolve();\n\t\tpromise.then(() => {\n\t\t\tpromise = null;\n\t\t});\n\t}\n\treturn promise;\n}\n\n/**\n * @param {Element} node\n * @param {INTRO | OUTRO | boolean} direction\n * @param {'start' | 'end'} kind\n * @returns {void}\n */\nfunction dispatch(node, direction, kind) {\n\tnode.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\n\nconst outroing = new Set();\n\n/**\n * @type {Outro}\n */\nlet outros;\n\n/**\n * @returns {void} */\nexport function group_outros() {\n\toutros = {\n\t\tr: 0,\n\t\tc: [],\n\t\tp: outros // parent group\n\t};\n}\n\n/**\n * @returns {void} */\nexport function check_outros() {\n\tif (!outros.r) {\n\t\trun_all(outros.c);\n\t}\n\toutros = outros.p;\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} [local]\n * @returns {void}\n */\nexport function transition_in(block, local) {\n\tif (block && block.i) {\n\t\toutroing.delete(block);\n\t\tblock.i(local);\n\t}\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} local\n * @param {0 | 1} [detach]\n * @param {() => void} [callback]\n * @returns {void}\n */\nexport function transition_out(block, local, detach, callback) {\n\tif (block && block.o) {\n\t\tif (outroing.has(block)) return;\n\t\toutroing.add(block);\n\t\toutros.c.push(() => {\n\t\t\toutroing.delete(block);\n\t\t\tif (callback) {\n\t\t\t\tif (detach) block.d(1);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t});\n\t\tblock.o(local);\n\t} else if (callback) {\n\t\tcallback();\n\t}\n}\n\n/**\n * @type {import('../transition/public.js').TransitionConfig}\n */\nconst null_transition = { duration: 0 };\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ start(): void; invalidate(): void; end(): void; }}\n */\nexport function create_in_transition(node, fn, params) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'in' };\n\tlet config = fn(node, params, options);\n\tlet running = false;\n\tlet animation_name;\n\tlet task;\n\tlet uid = 0;\n\n\t/**\n\t * @returns {void} */\n\tfunction cleanup() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\t\tif (css) animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n\t\ttick(0, 1);\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tif (task) task.abort();\n\t\trunning = true;\n\t\tadd_render_callback(() => dispatch(node, true, 'start'));\n\t\ttask = loop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(1, 0);\n\t\t\t\t\tdispatch(node, true, 'end');\n\t\t\t\t\tcleanup();\n\t\t\t\t\treturn (running = false);\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\tlet started = false;\n\treturn {\n\t\tstart() {\n\t\t\tif (started) return;\n\t\t\tstarted = true;\n\t\t\tdelete_rule(node);\n\t\t\tif (is_function(config)) {\n\t\t\t\tconfig = config(options);\n\t\t\t\twait().then(go);\n\t\t\t} else {\n\t\t\t\tgo();\n\t\t\t}\n\t\t},\n\t\tinvalidate() {\n\t\t\tstarted = false;\n\t\t},\n\t\tend() {\n\t\t\tif (running) {\n\t\t\t\tcleanup();\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ end(reset: any): void; }}\n */\nexport function create_out_transition(node, fn, params) {\n\t/** @type {TransitionOptions} */\n\tconst options = { direction: 'out' };\n\tlet config = fn(node, params, options);\n\tlet running = true;\n\tlet animation_name;\n\tconst group = outros;\n\tgroup.r += 1;\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\tif (css) animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tadd_render_callback(() => dispatch(node, false, 'start'));\n\n\t\tif ('inert' in node) {\n\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\tnode.inert = true;\n\t\t}\n\n\t\tloop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(0, 1);\n\t\t\t\t\tdispatch(node, false, 'end');\n\t\t\t\t\tif (!--group.r) {\n\t\t\t\t\t\t// this will result in `end()` being called,\n\t\t\t\t\t\t// so we don't need to clean up here\n\t\t\t\t\t\trun_all(group.c);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(1 - t, t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\n\tif (is_function(config)) {\n\t\twait().then(() => {\n\t\t\t// @ts-ignore\n\t\t\tconfig = config(options);\n\t\t\tgo();\n\t\t});\n\t} else {\n\t\tgo();\n\t}\n\n\treturn {\n\t\tend(reset) {\n\t\t\tif (reset && 'inert' in node) {\n\t\t\t\tnode.inert = original_inert_value;\n\t\t\t}\n\t\t\tif (reset && config.tick) {\n\t\t\t\tconfig.tick(1, 0);\n\t\t\t}\n\t\t\tif (running) {\n\t\t\t\tif (animation_name) delete_rule(node, animation_name);\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @param {boolean} intro\n * @returns {{ run(b: 0 | 1): void; end(): void; }}\n */\nexport function create_bidirectional_transition(node, fn, params, intro) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'both' };\n\tlet config = fn(node, params, options);\n\tlet t = intro ? 0 : 1;\n\n\t/**\n\t * @type {Program | null} */\n\tlet running_program = null;\n\n\t/**\n\t * @type {PendingProgram | null} */\n\tlet pending_program = null;\n\tlet animation_name = null;\n\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction clear_animation() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @param {PendingProgram} program\n\t * @param {number} duration\n\t * @returns {Program}\n\t */\n\tfunction init(program, duration) {\n\t\tconst d = /** @type {Program['d']} */ (program.b - t);\n\t\tduration *= Math.abs(d);\n\t\treturn {\n\t\t\ta: t,\n\t\t\tb: program.b,\n\t\t\td,\n\t\t\tduration,\n\t\t\tstart: program.start,\n\t\t\tend: program.start + duration,\n\t\t\tgroup: program.group\n\t\t};\n\t}\n\n\t/**\n\t * @param {INTRO | OUTRO} b\n\t * @returns {void}\n\t */\n\tfunction go(b) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\t/**\n\t\t * @type {PendingProgram} */\n\t\tconst program = {\n\t\t\tstart: now() + delay,\n\t\t\tb\n\t\t};\n\n\t\tif (!b) {\n\t\t\t// @ts-ignore todo: improve typings\n\t\t\tprogram.group = outros;\n\t\t\toutros.r += 1;\n\t\t}\n\n\t\tif ('inert' in node) {\n\t\t\tif (b) {\n\t\t\t\tif (original_inert_value !== undefined) {\n\t\t\t\t\t// aborted/reversed outro — restore previous inert value\n\t\t\t\t\tnode.inert = original_inert_value;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\t\tnode.inert = true;\n\t\t\t}\n\t\t}\n\n\t\tif (running_program || pending_program) {\n\t\t\tpending_program = program;\n\t\t} else {\n\t\t\t// if this is an intro, and there's a delay, we need to do\n\t\t\t// an initial tick and/or apply CSS animation immediately\n\t\t\tif (css) {\n\t\t\t\tclear_animation();\n\t\t\t\tanimation_name = create_rule(node, t, b, duration, delay, easing, css);\n\t\t\t}\n\t\t\tif (b) tick(0, 1);\n\t\t\trunning_program = init(program, duration);\n\t\t\tadd_render_callback(() => dispatch(node, b, 'start'));\n\t\t\tloop((now) => {\n\t\t\t\tif (pending_program && now > pending_program.start) {\n\t\t\t\t\trunning_program = init(pending_program, duration);\n\t\t\t\t\tpending_program = null;\n\t\t\t\t\tdispatch(node, running_program.b, 'start');\n\t\t\t\t\tif (css) {\n\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\tanimation_name = create_rule(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tt,\n\t\t\t\t\t\t\trunning_program.b,\n\t\t\t\t\t\t\trunning_program.duration,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\teasing,\n\t\t\t\t\t\t\tconfig.css\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (running_program) {\n\t\t\t\t\tif (now >= running_program.end) {\n\t\t\t\t\t\ttick((t = running_program.b), 1 - t);\n\t\t\t\t\t\tdispatch(node, running_program.b, 'end');\n\t\t\t\t\t\tif (!pending_program) {\n\t\t\t\t\t\t\t// we're done\n\t\t\t\t\t\t\tif (running_program.b) {\n\t\t\t\t\t\t\t\t// intro — we can tidy up immediately\n\t\t\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// outro — needs to be coordinated\n\t\t\t\t\t\t\t\tif (!--running_program.group.r) run_all(running_program.group.c);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trunning_program = null;\n\t\t\t\t\t} else if (now >= running_program.start) {\n\t\t\t\t\t\tconst p = now - running_program.start;\n\t\t\t\t\t\tt = running_program.a + running_program.d * easing(p / running_program.duration);\n\t\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!(running_program || pending_program);\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\trun(b) {\n\t\t\tif (is_function(config)) {\n\t\t\t\twait().then(() => {\n\t\t\t\t\tconst opts = { direction: b ? 'in' : 'out' };\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconfig = config(opts);\n\t\t\t\t\tgo(b);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tgo(b);\n\t\t\t}\n\t\t},\n\t\tend() {\n\t\t\tclear_animation();\n\t\t\trunning_program = pending_program = null;\n\t\t}\n\t};\n}\n\n/** @typedef {1} INTRO */\n/** @typedef {0} OUTRO */\n/** @typedef {{ direction: 'in' | 'out' | 'both' }} TransitionOptions */\n/** @typedef {(node: Element, params: any, options: TransitionOptions) => import('../transition/public.js').TransitionConfig} TransitionFn */\n\n/**\n * @typedef {Object} Outro\n * @property {number} r\n * @property {Function[]} c\n * @property {Object} p\n */\n\n/**\n * @typedef {Object} PendingProgram\n * @property {number} start\n * @property {INTRO|OUTRO} b\n * @property {Outro} [group]\n */\n\n/**\n * @typedef {Object} Program\n * @property {number} a\n * @property {INTRO|OUTRO} b\n * @property {1|-1} d\n * @property {number} duration\n * @property {number} start\n * @property {number} end\n * @property {Outro} [group]\n */\n","import { transition_in, transition_out } from './transitions.js';\nimport { run_all } from './utils.js';\n\n// general each functions:\n\nexport function ensure_array_like(array_like_or_iterator) {\n\treturn array_like_or_iterator?.length !== undefined\n\t\t? array_like_or_iterator\n\t\t: Array.from(array_like_or_iterator);\n}\n\n// keyed each functions:\n\n/** @returns {void} */\nexport function destroy_block(block, lookup) {\n\tblock.d(1);\n\tlookup.delete(block.key);\n}\n\n/** @returns {void} */\nexport function outro_and_destroy_block(block, lookup) {\n\ttransition_out(block, 1, 1, () => {\n\t\tlookup.delete(block.key);\n\t});\n}\n\n/** @returns {void} */\nexport function fix_and_destroy_block(block, lookup) {\n\tblock.f();\n\tdestroy_block(block, lookup);\n}\n\n/** @returns {void} */\nexport function fix_and_outro_and_destroy_block(block, lookup) {\n\tblock.f();\n\toutro_and_destroy_block(block, lookup);\n}\n\n/** @returns {any[]} */\nexport function update_keyed_each(\n\told_blocks,\n\tdirty,\n\tget_key,\n\tdynamic,\n\tctx,\n\tlist,\n\tlookup,\n\tnode,\n\tdestroy,\n\tcreate_each_block,\n\tnext,\n\tget_context\n) {\n\tlet o = old_blocks.length;\n\tlet n = list.length;\n\tlet i = o;\n\tconst old_indexes = {};\n\twhile (i--) old_indexes[old_blocks[i].key] = i;\n\tconst new_blocks = [];\n\tconst new_lookup = new Map();\n\tconst deltas = new Map();\n\tconst updates = [];\n\ti = n;\n\twhile (i--) {\n\t\tconst child_ctx = get_context(ctx, list, i);\n\t\tconst key = get_key(child_ctx);\n\t\tlet block = lookup.get(key);\n\t\tif (!block) {\n\t\t\tblock = create_each_block(key, child_ctx);\n\t\t\tblock.c();\n\t\t} else if (dynamic) {\n\t\t\t// defer updates until all the DOM shuffling is done\n\t\t\tupdates.push(() => block.p(child_ctx, dirty));\n\t\t}\n\t\tnew_lookup.set(key, (new_blocks[i] = block));\n\t\tif (key in old_indexes) deltas.set(key, Math.abs(i - old_indexes[key]));\n\t}\n\tconst will_move = new Set();\n\tconst did_move = new Set();\n\t/** @returns {void} */\n\tfunction insert(block) {\n\t\ttransition_in(block, 1);\n\t\tblock.m(node, next);\n\t\tlookup.set(block.key, block);\n\t\tnext = block.first;\n\t\tn--;\n\t}\n\twhile (o && n) {\n\t\tconst new_block = new_blocks[n - 1];\n\t\tconst old_block = old_blocks[o - 1];\n\t\tconst new_key = new_block.key;\n\t\tconst old_key = old_block.key;\n\t\tif (new_block === old_block) {\n\t\t\t// do nothing\n\t\t\tnext = new_block.first;\n\t\t\to--;\n\t\t\tn--;\n\t\t} else if (!new_lookup.has(old_key)) {\n\t\t\t// remove old block\n\t\t\tdestroy(old_block, lookup);\n\t\t\to--;\n\t\t} else if (!lookup.has(new_key) || will_move.has(new_key)) {\n\t\t\tinsert(new_block);\n\t\t} else if (did_move.has(old_key)) {\n\t\t\to--;\n\t\t} else if (deltas.get(new_key) > deltas.get(old_key)) {\n\t\t\tdid_move.add(new_key);\n\t\t\tinsert(new_block);\n\t\t} else {\n\t\t\twill_move.add(old_key);\n\t\t\to--;\n\t\t}\n\t}\n\twhile (o--) {\n\t\tconst old_block = old_blocks[o];\n\t\tif (!new_lookup.has(old_block.key)) destroy(old_block, lookup);\n\t}\n\twhile (n) insert(new_blocks[n - 1]);\n\trun_all(updates);\n\treturn new_blocks;\n}\n\n/** @returns {void} */\nexport function validate_each_keys(ctx, list, get_context, get_key) {\n\tconst keys = new Map();\n\tfor (let i = 0; i < list.length; i++) {\n\t\tconst key = get_key(get_context(ctx, list, i));\n\t\tif (keys.has(key)) {\n\t\t\tlet value = '';\n\t\t\ttry {\n\t\t\t\tvalue = `with value '${String(key)}' `;\n\t\t\t} catch (e) {\n\t\t\t\t// can't stringify\n\t\t\t}\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot have duplicate keys in a keyed each: Keys at index ${keys.get(\n\t\t\t\t\tkey\n\t\t\t\t)} and ${i} ${value}are duplicates`\n\t\t\t);\n\t\t}\n\t\tkeys.set(key, i);\n\t}\n}\n","import {\n\tadd_render_callback,\n\tflush,\n\tflush_render_callbacks,\n\tschedule_update,\n\tdirty_components\n} from './scheduler.js';\nimport { current_component, set_current_component } from './lifecycle.js';\nimport { blank_object, is_empty, is_function, run, run_all, noop } from './utils.js';\nimport {\n\tchildren,\n\tdetach,\n\tstart_hydrating,\n\tend_hydrating,\n\tget_custom_elements_slots,\n\tinsert,\n\telement,\n\tattr\n} from './dom.js';\nimport { transition_in } from './transitions.js';\n\n/** @returns {void} */\nexport function bind(component, name, callback) {\n\tconst index = component.$$.props[name];\n\tif (index !== undefined) {\n\t\tcomponent.$$.bound[index] = callback;\n\t\tcallback(component.$$.ctx[index]);\n\t}\n}\n\n/** @returns {void} */\nexport function create_component(block) {\n\tblock && block.c();\n}\n\n/** @returns {void} */\nexport function claim_component(block, parent_nodes) {\n\tblock && block.l(parent_nodes);\n}\n\n/** @returns {void} */\nexport function mount_component(component, target, anchor) {\n\tconst { fragment, after_update } = component.$$;\n\tfragment && fragment.m(target, anchor);\n\t// onMount happens before the initial afterUpdate\n\tadd_render_callback(() => {\n\t\tconst new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n\t\t// if the component was destroyed immediately\n\t\t// it will update the `$$.on_destroy` reference to `null`.\n\t\t// the destructured on_destroy may still reference to the old array\n\t\tif (component.$$.on_destroy) {\n\t\t\tcomponent.$$.on_destroy.push(...new_on_destroy);\n\t\t} else {\n\t\t\t// Edge case - component was destroyed immediately,\n\t\t\t// most likely as a result of a binding initialising\n\t\t\trun_all(new_on_destroy);\n\t\t}\n\t\tcomponent.$$.on_mount = [];\n\t});\n\tafter_update.forEach(add_render_callback);\n}\n\n/** @returns {void} */\nexport function destroy_component(component, detaching) {\n\tconst $$ = component.$$;\n\tif ($$.fragment !== null) {\n\t\tflush_render_callbacks($$.after_update);\n\t\trun_all($$.on_destroy);\n\t\t$$.fragment && $$.fragment.d(detaching);\n\t\t// TODO null out other refs, including component.$$ (but need to\n\t\t// preserve final state?)\n\t\t$$.on_destroy = $$.fragment = null;\n\t\t$$.ctx = [];\n\t}\n}\n\n/** @returns {void} */\nfunction make_dirty(component, i) {\n\tif (component.$$.dirty[0] === -1) {\n\t\tdirty_components.push(component);\n\t\tschedule_update();\n\t\tcomponent.$$.dirty.fill(0);\n\t}\n\tcomponent.$$.dirty[(i / 31) | 0] |= 1 << i % 31;\n}\n\n// TODO: Document the other params\n/**\n * @param {SvelteComponent} component\n * @param {import('./public.js').ComponentConstructorOptions} options\n *\n * @param {import('./utils.js')['not_equal']} not_equal Used to compare props and state values.\n * @param {(target: Element | ShadowRoot) => void} [append_styles] Function that appends styles to the DOM when the component is first initialised.\n * This will be the `add_css` function from the compiled component.\n *\n * @returns {void}\n */\nexport function init(\n\tcomponent,\n\toptions,\n\tinstance,\n\tcreate_fragment,\n\tnot_equal,\n\tprops,\n\tappend_styles = null,\n\tdirty = [-1]\n) {\n\tconst parent_component = current_component;\n\tset_current_component(component);\n\t/** @type {import('./private.js').T$$} */\n\tconst $$ = (component.$$ = {\n\t\tfragment: null,\n\t\tctx: [],\n\t\t// state\n\t\tprops,\n\t\tupdate: noop,\n\t\tnot_equal,\n\t\tbound: blank_object(),\n\t\t// lifecycle\n\t\ton_mount: [],\n\t\ton_destroy: [],\n\t\ton_disconnect: [],\n\t\tbefore_update: [],\n\t\tafter_update: [],\n\t\tcontext: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n\t\t// everything else\n\t\tcallbacks: blank_object(),\n\t\tdirty,\n\t\tskip_bound: false,\n\t\troot: options.target || parent_component.$$.root\n\t});\n\tappend_styles && append_styles($$.root);\n\tlet ready = false;\n\t$$.ctx = instance\n\t\t? instance(component, options.props || {}, (i, ret, ...rest) => {\n\t\t\t\tconst value = rest.length ? rest[0] : ret;\n\t\t\t\tif ($$.ctx && not_equal($$.ctx[i], ($$.ctx[i] = value))) {\n\t\t\t\t\tif (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);\n\t\t\t\t\tif (ready) make_dirty(component, i);\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t })\n\t\t: [];\n\t$$.update();\n\tready = true;\n\trun_all($$.before_update);\n\t// `false` as a special case of no DOM component\n\t$$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n\tif (options.target) {\n\t\tif (options.hydrate) {\n\t\t\tstart_hydrating();\n\t\t\t// TODO: what is the correct type here?\n\t\t\t// @ts-expect-error\n\t\t\tconst nodes = children(options.target);\n\t\t\t$$.fragment && $$.fragment.l(nodes);\n\t\t\tnodes.forEach(detach);\n\t\t} else {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t$$.fragment && $$.fragment.c();\n\t\t}\n\t\tif (options.intro) transition_in(component.$$.fragment);\n\t\tmount_component(component, options.target, options.anchor);\n\t\tend_hydrating();\n\t\tflush();\n\t}\n\tset_current_component(parent_component);\n}\n\nexport let SvelteElement;\n\nif (typeof HTMLElement === 'function') {\n\tSvelteElement = class extends HTMLElement {\n\t\t/** The Svelte component constructor */\n\t\t$$ctor;\n\t\t/** Slots */\n\t\t$$s;\n\t\t/** The Svelte component instance */\n\t\t$$c;\n\t\t/** Whether or not the custom element is connected */\n\t\t$$cn = false;\n\t\t/** Component props data */\n\t\t$$d = {};\n\t\t/** `true` if currently in the process of reflecting component props back to attributes */\n\t\t$$r = false;\n\t\t/** @type {Record<string, CustomElementPropDefinition>} Props definition (name, reflected, type etc) */\n\t\t$$p_d = {};\n\t\t/** @type {Record<string, Function[]>} Event listeners */\n\t\t$$l = {};\n\t\t/** @type {Map<Function, Function>} Event listener unsubscribe functions */\n\t\t$$l_u = new Map();\n\n\t\tconstructor($$componentCtor, $$slots, use_shadow_dom) {\n\t\t\tsuper();\n\t\t\tthis.$$ctor = $$componentCtor;\n\t\t\tthis.$$s = $$slots;\n\t\t\tif (use_shadow_dom) {\n\t\t\t\tthis.attachShadow({ mode: 'open' });\n\t\t\t}\n\t\t}\n\n\t\taddEventListener(type, listener, options) {\n\t\t\t// We can't determine upfront if the event is a custom event or not, so we have to\n\t\t\t// listen to both. If someone uses a custom event with the same name as a regular\n\t\t\t// browser event, this fires twice - we can't avoid that.\n\t\t\tthis.$$l[type] = this.$$l[type] || [];\n\t\t\tthis.$$l[type].push(listener);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t}\n\t\t\tsuper.addEventListener(type, listener, options);\n\t\t}\n\n\t\tremoveEventListener(type, listener, options) {\n\t\t\tsuper.removeEventListener(type, listener, options);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$l_u.get(listener);\n\t\t\t\tif (unsub) {\n\t\t\t\t\tunsub();\n\t\t\t\t\tthis.$$l_u.delete(listener);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tasync connectedCallback() {\n\t\t\tthis.$$cn = true;\n\t\t\tif (!this.$$c) {\n\t\t\t\t// We wait one tick to let possible child slot elements be created/mounted\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (!this.$$cn || this.$$c) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfunction create_slot(name) {\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tlet node;\n\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\tc: function create() {\n\t\t\t\t\t\t\t\tnode = element('slot');\n\t\t\t\t\t\t\t\tif (name !== 'default') {\n\t\t\t\t\t\t\t\t\tattr(node, 'name', name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * @param {HTMLElement} target\n\t\t\t\t\t\t\t * @param {HTMLElement} [anchor]\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tm: function mount(target, anchor) {\n\t\t\t\t\t\t\t\tinsert(target, node, anchor);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\td: function destroy(detaching) {\n\t\t\t\t\t\t\t\tif (detaching) {\n\t\t\t\t\t\t\t\t\tdetach(node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst $$slots = {};\n\t\t\t\tconst existing_slots = get_custom_elements_slots(this);\n\t\t\t\tfor (const name of this.$$s) {\n\t\t\t\t\tif (name in existing_slots) {\n\t\t\t\t\t\t$$slots[name] = [create_slot(name)];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const attribute of this.attributes) {\n\t\t\t\t\t// this.$$data takes precedence over this.attributes\n\t\t\t\t\tconst name = this.$$g_p(attribute.name);\n\t\t\t\t\tif (!(name in this.$$d)) {\n\t\t\t\t\t\tthis.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, 'toProp');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Port over props that were set programmatically before ce was initialized\n\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\tif (!(key in this.$$d) && this[key] !== undefined) {\n\t\t\t\t\t\tthis.$$d[key] = this[key]; // don't transform, these were set through JavaScript\n\t\t\t\t\t\tdelete this[key]; // remove the property that shadows the getter/setter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$c = new this.$$ctor({\n\t\t\t\t\ttarget: this.shadowRoot || this,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...this.$$d,\n\t\t\t\t\t\t$$slots,\n\t\t\t\t\t\t$$scope: {\n\t\t\t\t\t\t\tctx: []\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Reflect component props as attributes\n\t\t\t\tconst reflect_attributes = () => {\n\t\t\t\t\tthis.$$r = true;\n\t\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\t\tthis.$$d[key] = this.$$c.$$.ctx[this.$$c.$$.props[key]];\n\t\t\t\t\t\tif (this.$$p_d[key].reflect) {\n\t\t\t\t\t\t\tconst attribute_value = get_custom_element_value(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tthis.$$d[key],\n\t\t\t\t\t\t\t\tthis.$$p_d,\n\t\t\t\t\t\t\t\t'toAttribute'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (attribute_value == null) {\n\t\t\t\t\t\t\t\tthis.removeAttribute(this.$$p_d[key].attribute || key);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setAttribute(this.$$p_d[key].attribute || key, attribute_value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.$$r = false;\n\t\t\t\t};\n\t\t\t\tthis.$$c.$$.after_update.push(reflect_attributes);\n\t\t\t\treflect_attributes(); // once initially because after_update is added too late for first render\n\n\t\t\t\tfor (const type in this.$$l) {\n\t\t\t\t\tfor (const listener of this.$$l[type]) {\n\t\t\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$l = {};\n\t\t\t}\n\t\t}\n\n\t\t// We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte\n\t\t// and setting attributes through setAttribute etc, this is helpful\n\t\tattributeChangedCallback(attr, _oldValue, newValue) {\n\t\t\tif (this.$$r) return;\n\t\t\tattr = this.$$g_p(attr);\n\t\t\tthis.$$d[attr] = get_custom_element_value(attr, newValue, this.$$p_d, 'toProp');\n\t\t\tthis.$$c?.$set({ [attr]: this.$$d[attr] });\n\t\t}\n\n\t\tdisconnectedCallback() {\n\t\t\tthis.$$cn = false;\n\t\t\t// In a microtask, because this could be a move within the DOM\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\tif (!this.$$cn) {\n\t\t\t\t\tthis.$$c.$destroy();\n\t\t\t\t\tthis.$$c = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t$$g_p(attribute_name) {\n\t\t\treturn (\n\t\t\t\tObject.keys(this.$$p_d).find(\n\t\t\t\t\t(key) =>\n\t\t\t\t\t\tthis.$$p_d[key].attribute === attribute_name ||\n\t\t\t\t\t\t(!this.$$p_d[key].attribute && key.toLowerCase() === attribute_name)\n\t\t\t\t) || attribute_name\n\t\t\t);\n\t\t}\n\t};\n}\n\n/**\n * @param {string} prop\n * @param {any} value\n * @param {Record<string, CustomElementPropDefinition>} props_definition\n * @param {'toAttribute' | 'toProp'} [transform]\n */\nfunction get_custom_element_value(prop, value, props_definition, transform) {\n\tconst type = props_definition[prop]?.type;\n\tvalue = type === 'Boolean' && typeof value !== 'boolean' ? value != null : value;\n\tif (!transform || !props_definition[prop]) {\n\t\treturn value;\n\t} else if (transform === 'toAttribute') {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value == null ? null : JSON.stringify(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value ? '' : null;\n\t\t\tcase 'Number':\n\t\t\t\treturn value == null ? null : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t} else {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value && JSON.parse(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value; // conversion already handled above\n\t\t\tcase 'Number':\n\t\t\t\treturn value != null ? +value : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t}\n}\n\n/**\n * @internal\n *\n * Turn a Svelte component into a custom element.\n * @param {import('./public.js').ComponentType} Component A Svelte component constructor\n * @param {Record<string, CustomElementPropDefinition>} props_definition The props to observe\n * @param {string[]} slots The slots to create\n * @param {string[]} accessors Other accessors besides the ones for props the component has\n * @param {boolean} use_shadow_dom Whether to use shadow DOM\n * @param {(ce: new () => HTMLElement) => new () => HTMLElement} [extend]\n */\nexport function create_custom_element(\n\tComponent,\n\tprops_definition,\n\tslots,\n\taccessors,\n\tuse_shadow_dom,\n\textend\n) {\n\tlet Class = class extends SvelteElement {\n\t\tconstructor() {\n\t\t\tsuper(Component, slots, use_shadow_dom);\n\t\t\tthis.$$p_d = props_definition;\n\t\t}\n\t\tstatic get observedAttributes() {\n\t\t\treturn Object.keys(props_definition).map((key) =>\n\t\t\t\t(props_definition[key].attribute || key).toLowerCase()\n\t\t\t);\n\t\t}\n\t};\n\tObject.keys(props_definition).forEach((prop) => {\n\t\tObject.defineProperty(Class.prototype, prop, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c && prop in this.$$c ? this.$$c[prop] : this.$$d[prop];\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tvalue = get_custom_element_value(prop, value, props_definition);\n\t\t\t\tthis.$$d[prop] = value;\n\t\t\t\tthis.$$c?.$set({ [prop]: value });\n\t\t\t}\n\t\t});\n\t});\n\taccessors.forEach((accessor) => {\n\t\tObject.defineProperty(Class.prototype, accessor, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c?.[accessor];\n\t\t\t}\n\t\t});\n\t});\n\tif (extend) {\n\t\t// @ts-expect-error - assigning here is fine\n\t\tClass = extend(Class);\n\t}\n\tComponent.element = /** @type {any} */ (Class);\n\treturn Class;\n}\n\n/**\n * Base class for Svelte components. Used when dev=false.\n *\n * @template {Record<string, any>} [Props=any]\n * @template {Record<string, any>} [Events=any]\n */\nexport class SvelteComponent {\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$ = undefined;\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$set = undefined;\n\n\t/** @returns {void} */\n\t$destroy() {\n\t\tdestroy_component(this, 1);\n\t\tthis.$destroy = noop;\n\t}\n\n\t/**\n\t * @template {Extract<keyof Events, string>} K\n\t * @param {K} type\n\t * @param {((e: Events[K]) => void) | null | undefined} callback\n\t * @returns {() => void}\n\t */\n\t$on(type, callback) {\n\t\tif (!is_function(callback)) {\n\t\t\treturn noop;\n\t\t}\n\t\tconst callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n\t\tcallbacks.push(callback);\n\t\treturn () => {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index !== -1) callbacks.splice(index, 1);\n\t\t};\n\t}\n\n\t/**\n\t * @param {Partial<Props>} props\n\t * @returns {void}\n\t */\n\t$set(props) {\n\t\tif (this.$$set && !is_empty(props)) {\n\t\t\tthis.$$.skip_bound = true;\n\t\t\tthis.$$set(props);\n\t\t\tthis.$$.skip_bound = false;\n\t\t}\n\t}\n}\n\n/**\n * @typedef {Object} CustomElementPropDefinition\n * @property {string} [attribute]\n * @property {boolean} [reflect]\n * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]\n */\n","// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n *\n * https://svelte.dev/docs/svelte-compiler#svelte-version\n * @type {string}\n */\nexport const VERSION = '4.2.11';\nexport const PUBLIC_VERSION = '4';\n","import { PUBLIC_VERSION } from '../../../shared/version.js';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte || (window.__svelte = { v: new Set() })).v.add(PUBLIC_VERSION);\n","type NumericSpacing =\n | \"0\"\n | \"1\"\n | \"2\"\n | \"3\"\n | \"4\"\n | \"5\"\n | \"6\"\n | \"7\"\n | \"8\"\n | \"9\"\n | \"10\";\n\ntype TShirtSpacing =\n | \"none\"\n | \"3xs\"\n | \"2xs\"\n | \"xs\"\n | \"s\"\n | \"m\"\n | \"l\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\";\n\nexport type Spacing = NumericSpacing | TShirtSpacing | null;\n\nconst conversions: Record<string, TShirtSpacing> = {\n \"0\": \"none\",\n \"1\": \"3xs\",\n \"2\": \"2xs\",\n \"3\": \"xs\",\n \"4\": \"s\",\n \"5\": \"m\",\n \"6\": \"l\",\n \"7\": \"xl\",\n \"8\": \"2xl\",\n \"9\": \"3xl\",\n \"10\": \"4xl\",\n \"none\": \"none\",\n \"3xs\": \"3xs\",\n \"2xs\": \"2xs\",\n \"xs\": \"xs\",\n \"s\": \"s\",\n \"m\": \"m\",\n \"l\": \"l\",\n \"xl\": \"xl\",\n \"2xl\": \"2xl\",\n \"3xl\": \"3xl\",\n \"4xl\": \"4xl\",\n};\n\n/**\n * Allow for 0-10 values to be used along side the existing Spacing values\n */\nfunction convertSpacing(size: Spacing): Spacing {\n if (!size) return \"none\";\n if (!Number.isInteger(+size)) {\n return size;\n }\n return conversions[size] || \"none\";\n}\n\n/**\n * import type { Spacing } from \"../../common/types\";\n * import { calculateMargin } from \"../../common/types\";\n *\n * export let mt: Spacing = null;\n * export let mr: Spacing = null;\n * export let mb: Spacing = null;\n * export let ml: Spacing = null;\n *\n * // add the following style attribute to the root element\n * style={calculateMargin(mt, mr, mb, ml)}\n */\nexport function calculateMargin(\n mt: Spacing,\n mr: Spacing,\n mb: Spacing,\n ml: Spacing,\n) {\n mt = convertSpacing(mt);\n mb = convertSpacing(mb);\n ml = convertSpacing(ml);\n mr = convertSpacing(mr);\n return [\n mt && mt !== \"none\" && `margin-top:var(--goa-space-${mt});` || \"\",\n mr && mr !== \"none\" && `margin-right:var(--goa-space-${mr});` || \"\",\n mb && mb !== \"none\" && `margin-bottom:var(--goa-space-${mb});` || \"\",\n ml && ml !== \"none\" && `margin-left:var(--goa-space-${ml});` || \"\",\n ].join(\" \");\n}\n\nexport function injectCss(\n el: HTMLElement,\n rootSelector: string,\n css: Record<string, string | number>,\n media?: string,\n) {\n if (!el) return;\n const style = document.createElement(\"style\");\n const _css = Object.entries(css)\n .map((entry) => `${entry[0]}: ${entry[1]};`)\n .join(\" \");\n if (media) {\n style.innerHTML = `@media (${media}) { ${rootSelector} {${_css}} }`;\n } else {\n style.innerHTML = `${rootSelector} {${_css}}`;\n }\n el.appendChild(style);\n}\n","export function toBoolean(value: string): boolean {\n // this is how false will need to be represented\n if (value === \"false\") {\n return false;\n }\n // for element props empty strings are also a true value\n // ex. <input type=\"text\" disabled /> /* is a disabled input */\n if (value === \"\") {\n return true;\n }\n return !!value;\n}\n\nexport function fromBoolean(value: boolean): string {\n return value ? \"true\" : \"false\";\n}\n\nexport function isValidDate(d: Date): boolean {\n return !isNaN(d.getDate());\n}\n\nexport function validateRequired(componentName: string, props: Record<string, unknown>) {\n Object.entries(props).forEach(prop => {\n if (!prop[1]) {\n console.warn(`${componentName}: ${prop[0]} is required`);\n }\n });\n}\n\n// To avoid console errors due to late binding, we need to use setTimeout before calling typeValidator\nexport function typeValidator(\n message: string,\n values: string[],\n required = false,\n): [string[], (value: string | null) => void] {\n const validator = (value: string | null): void => {\n if (!required && !value) {\n return;\n }\n if (required && !value) {\n console.error(`[${value}] is an invalid ${message.toLowerCase()}`);\n return;\n }\n if (!values.includes(value || \"\")) {\n console.error(`[${value}] is an invalid ${message.toLowerCase()}`);\n }\n };\n return [values, validator];\n}\n\nexport function getTimestamp(val?: Date) {\n const months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n const now = val || new Date();\n const hour24 = now.getHours();\n const min0 = now.getMinutes();\n\n const date = now.getDate();\n const month = months[now.getMonth()];\n const year = now.getFullYear();\n const hour = (hour24 === 0 && 12) || (hour24 > 12 && hour24 - 12) || hour24;\n const meridium = (hour24 === 0 && \"AM\") || (hour24 >= 12 && \"PM\") || \"AM\";\n const min = (min0 < 10 && `0${min0}`) || min0;\n const ordinal =\n (date % 10 === 1 && date !== 11 && \"st\") ||\n (date % 10 === 2 && date !== 12 && \"nd\") ||\n (date % 10 === 3 && date !== 13 && \"rd\") ||\n \"th\";\n\n return `${month} ${date}${ordinal} ${year}, ${hour}:${min} ${meridium}`;\n}\n\nexport function cssVar(name: string, value: string | number): string {\n return value ? `${name}: ${value};` : \"\";\n}\n\nexport function pluralize(word: string, count: number) {\n if (count === 1) return word;\n return `${word}s`;\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return value > max\n ? max\n : value < min\n ? min\n : value\n}\n","<svelte:options customElement=\"goa-accordion\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { calculateMargin } from \"../../common/styling\";\n import {\n typeValidator,\n toBoolean,\n validateRequired,\n } from \"../../common/utils\";\n import type { Spacing } from \"../../common/styling\";\n\n // Validator\n const [HeadingSizes, validateHeadingSize] = typeValidator(\n \"Accordion heading size\",\n [\"small\", \"medium\"],\n );\n\n // Types\n type HeadingSize = (typeof HeadingSizes)[number];\n\n export let open: string = \"false\";\n export let heading: string = \"\";\n export let secondarytext: string = \"\";\n export let headingsize: HeadingSize = \"small\";\n export let testid: string = \"\";\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = \"xs\";\n export let ml: Spacing = null;\n\n // Private\n\n let _hovering: boolean = false;\n let _titleEl: HTMLElement;\n let _headingContentSlotChildren: Element[] = [];\n\n // Reactive\n\n $: isOpen = toBoolean(open);\n\n // Functions\n\n onMount(() => {\n validateRequired(\"GoAAccordion\", { heading });\n validateHeadingSize(headingsize);\n _headingContentSlotChildren = getChildren();\n });\n\n function getChildren(): Element[] {\n if (_titleEl) {\n const slot = _titleEl.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n return slot.assignedElements();\n } else {\n // @ts-expect-error\n return [..._titleEl.children] as Element[]; // unit tests\n }\n }\n return [];\n }\n</script>\n\n<!-- HTML -->\n<div\n style={calculateMargin(mt, mr, mb, ml)}\n class=\"goa-accordion\"\n data-testid={testid}\n>\n <details open={isOpen}>\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <summary\n class={`container-${headingsize}`}\n on:mouseover={() => (_hovering = true)}\n on:mouseout={() => (_hovering = false)}\n on:focus={() => (_hovering = false)}\n on:blur={() => (_hovering = false)}\n >\n <goa-icon\n type=\"chevron-forward\"\n fillcolor={_hovering\n ? \"var(--goa-color-interactive-hover)\"\n : \"var(--goa-color-interactive-default)\"}\n ></goa-icon>\n <div class=\"title\" bind:this={_titleEl}>\n <span\n class=\"heading heading-{headingsize}\"\n data-testid={`${testid}-heading`}>{heading}</span\n >\n <span class=\"secondary-text\">{secondarytext}</span>\n <div\n class=\"heading-content\"\n class:heading-content-top={_headingContentSlotChildren.length}\n >\n <slot name=\"headingcontent\" />\n </div>\n </div>\n </summary>\n <div class=\"content\">\n <slot />\n </div>\n </details>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n font-size: var(--goa-font-size-4);\n }\n\n .goa-accordion,\n .goa-accordion * {\n box-sizing: border-box;\n }\n\n .goa-accordion {\n container: self / inline-size;\n }\n\n summary {\n min-height: 3.5rem;\n border-width: var(--goa-border-width-s);\n border-style: solid;\n border-radius: var(--goa-border-radius-m);\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-200);\n color: var(--goa-color-text-default);\n cursor: pointer;\n list-style: none;\n display: flex;\n align-items: center;\n\n /* safari hack (see below) */\n position: relative;\n }\n\n summary:hover {\n background-color: var(--goa-color-greyscale-200);\n }\n summary:focus,\n summary:active {\n background-color: var(--goa-color-greyscale-100);\n outline: none;\n }\n\n /* Hack to make outline radius work on Safari */\n summary:active::before,\n summary:focus::before {\n content: \"\";\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n left: -1px;\n border: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n border-radius: 4px;\n }\n\n summary::marker, /* Latest Chrome, Edge, Firefox */\n summary::-webkit-details-marker /* Safari */ {\n display: none;\n }\n\n summary goa-icon {\n padding: 0.125rem 1rem;\n }\n\n .title {\n display: flex;\n flex: 1;\n }\n\n .title span {\n padding-bottom: var(--goa-space-3xs, 0);\n }\n\n .heading {\n font: var(--goa-typography-heading-s);\n padding-right: 1rem;\n }\n\n .secondary-text {\n font: var(--goa-typography-body-s);\n line-height: 1.5rem;\n padding-right: 1rem;\n }\n\n .heading-content {\n flex: 1;\n }\n\n goa-icon {\n padding: 0.125rem 1rem;\n }\n\n .container-medium {\n min-height: 4rem;\n }\n\n .container-medium goa-icon {\n padding: 0.375rem 1rem;\n }\n\n .content {\n border-bottom: var(--goa-border-width-s) solid\n var(--goa-color-greyscale-200);\n border-left: var(--goa-border-width-s) solid var(--goa-color-greyscale-200);\n border-right: var(--goa-border-width-s) solid var(--goa-color-greyscale-200);\n border-bottom-left-radius: var(--goa-border-radius-m);\n border-bottom-right-radius: var(--goa-border-radius-m);\n }\n\n .content :global(::slotted(*:last-child)) {\n margin-bottom: 0 !important;\n }\n \n details[open] goa-icon {\n transform: rotate(90deg);\n }\n\n details[open] summary {\n border-bottom-left-radius: var(--goa-border-radius-none);\n border-bottom-right-radius: var(--goa-border-radius-none);\n }\n\n /* Sizes */\n .heading-medium {\n line-height: 2rem;\n font: var(--goa-typography-heading-m);\n }\n\n @container self (--mobile) {\n .content {\n padding: 1.5rem;\n }\n summary {\n padding-bottom: 1rem;\n align-items: flex-start;\n }\n .title {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n }\n\n @container self (--not-mobile) {\n .content {\n padding: 1.5rem 2rem 1.5rem 3.5rem;\n }\n .title {\n align-items: center;\n }\n }\n</style>\n","export const MOBILE_BP = 624;\nexport const TABLET_BP = 1024;\n","<!-- svelte-ignore missing-custom-element-compile-options -->\n<svelte:options customElement=\"goa-app-header\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { MOBILE_BP, TABLET_BP } from \"../../common/breakpoints\";\n\n // optional\n export let heading: string = \"\";\n export let url: string = \"\";\n export let testid: string = \"\";\n export let maxcontentwidth = \"\";\n export let fullmenubreakpoint: number = TABLET_BP; // minimum window width to show all menu links\n\n // Private\n\n const _mobileLogo =\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='32' height='32' viewBox='0 0 16 16'%3E%3Cdefs%3E%3Cstyle%3E.a%7Bfill:none;%7D.b%7Bfill:%2300aad2;%7D.c%7Bclip-path:url(%23a);%7D.d%7Bfill:%23fff;%7D%3C/style%3E%3CclipPath id='a'%3E%3Crect class='a' width='14' height='14' transform='translate(-0.345 -0.21)'/%3E%3C/clipPath%3E%3C/defs%3E%3Cg transform='translate(0 -0.135)'%3E%3Ccircle class='b' cx='8' cy='8' r='8' transform='translate(0 0.135)'/%3E%3Cg transform='translate(1.345 1.344)'%3E%3Cg class='c' transform='translate(0 0)'%3E%3Cpath class='d' d='M12.612,13.636a16.24,16.24,0,0,1-1.86-.822,13.436,13.436,0,0,0,1.6-.708,11.312,11.312,0,0,0,.264,1.53M16.032,7.3c-.266-.034-.128.091-.2.442a5.465,5.465,0,0,1-2.8,3.338,16.141,16.141,0,0,1,.249-4.84c.275-1,.6-.813.2-1.022-.427-.22-.887.071-1.258.813A27.247,27.247,0,0,1,7.4,13.522a2.141,2.141,0,0,1-2.918.461c-.206-.174-.282.095-.026.37a2.412,2.412,0,0,0,3.387-.082A32.715,32.715,0,0,0,12.219,7.51a23.541,23.541,0,0,0,.063,3.971,11.464,11.464,0,0,1-1.964.749c-.388.1-.628.26-.635.439-.007.2.253.363.63.541.67.318,2.633,1.246,3.117,1.527.414.24.616.053.739-.207.16-.338-.279-.533-.7-.661a13.175,13.175,0,0,1-.382-2.179,7.143,7.143,0,0,0,2.547-2.454,4.7,4.7,0,0,0,.4-1.133,2.125,2.125,0,0,0,.048-.742s-.007-.054-.048-.059' transform='translate(-3.51 -3.943)'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E\";\n const _desktopLogo =\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='149.351' height='42' viewBox='0 0 149.351 42'%3E%3Cdefs%3E%3Cstyle%3E.a%7Bfill:none;%7D.b%7Bclip-path:url(%23a);%7D.c%7Bfill:%2300aad2;%7D.d%7Bfill:%235f6a72;%7D%3C/style%3E%3CclipPath id='a'%3E%3Crect class='a' width='149.351' height='42'/%3E%3C/clipPath%3E%3C/defs%3E%3Cg class='b'%3E%3Crect class='c' width='13.555' height='13.555' transform='translate(135.796 21.524)'/%3E%3Cpath class='d' d='M63.082,33.088c-1.383.138-2.835.277-4.357.346.553-4.357,2.835-10.373,5.671-9.405,1.66.553.761,5.671-1.314,9.059m-3.527,2.974a3.761,3.761,0,0,1-1.245,0,.851.851,0,0,0,.346-.692v-.553c.761,0,1.936-.138,3.389-.277a4.327,4.327,0,0,1-2.49,1.521M76.844,25.688c1.8-1.66,2.7-1.521,2.9-1.106.484.968-1.591,4.357-5.671,6.224a10.328,10.328,0,0,1,2.766-5.118m66.736,1.66c-.207-3.389-3.181-3.942-3.6-2.974-.138.346,1.106.207,1.106,2.628,0,3.942-4.011,9.129-9.129,9.129-5.532,0-6.985-4.357-7.261-6.432-.207-1.452.138-3.458-2.351-3.181-1.729.207-3.25,3.527-5.463,6.362-1.867,2.42-2.7,2.213-2.282.138.553-2.628,2.7-8.714,5.187-9.129,1.176-.207,1.591,1.8,2.075.553s.069-4.011-2.559-4.011c-1.8,0-3.942,1.936-5.74,4.08-1.521,1.936-9.336,13.416-12.656,10.927-1.521-1.176-1.383-5.878-.415-11.411,3.873-1.521,7.123-1.037,8.921-.138.9.415,1.037.346.622-.622-.553-1.452-3.665-3.734-8.575-2.7-.138,0-.207.069-.346.069.415-1.8.83-3.665,1.383-5.463.484-1.66,1.8-4.5-1.729-4.979-1.106-.207-.622.346-1.037,1.867-.692,2.766-1.521,6.362-2.144,10.028a19.745,19.745,0,0,0-7.538,8.091,38.59,38.59,0,0,0,.9-4.772,1.589,1.589,0,0,0-1.245-1.729c-.761-.207-1.729.138-2.628,1.452-2.144,3.043-4.841,7.815-8.99,9.82-2.974,1.452-4.288,0-4.357-2.282a9.869,9.869,0,0,0,1.521-.553c5.394-2.351,7.192-5.947,5.878-8.16-1.314-2.075-4.979-1.452-7.953,1.66a11.175,11.175,0,0,0-2.7,6.5c-1.245.277-2.628.484-4.219.692,2.49-4.08,2.282-9.613-1.383-10.581-4.288-1.106-6.432,3.043-7.331,6.5.346-3.873.9-7.745,1.591-11.549.346-1.66,1.452-4.5-2.075-4.979-1.106-.207-.968.346-.9,1.867.138,2.075-2.144,14.454-.968,19.848-1.521.484-2.144,1.66-.207,2.835,1.383.83,4.357,1.106,7.331-.346a9.3,9.3,0,0,0,2.766-2.144c1.8-.207,3.665-.553,5.394-.83.277,2.42,1.867,4.219,5.463,3.873,5.118-.484,9.682-6.777,11.411-9.82-.346,3.25-2.42,10.373,1.176,10.028,1.383-.138.83-.346.9-1.591.346-4.288,3.873-7.953,7.4-10.166-.622,5.256-.415,9.958,2.006,11.411,4.426,2.766,10.581-4.5,14.039-8.921-1.729,3.942-2.7,8.921-.138,9.682,3.043.9,5.463-4.219,8.3-8.091.346,2.766,2.213,7.607,9.682,7.607,8.022-.069,13.071-4.91,12.863-10.1m-108.3,8.645A66.439,66.439,0,0,1,27.4,32.534a59.168,59.168,0,0,0,6.777-2.974,54.453,54.453,0,0,0,1.106,6.432m20.4,3.873c-.069-.207-.622.069-1.106,0-1.452-.207-3.389-2.213-3.942-5.463-1.037-5.878-.415-11.687,1.314-20.332.346-1.66,1.452-4.5-2.075-5.048-1.106-.138-.553.415-.83,1.867C47.66,17.32,42.4,21.954,37.149,25.066,36.6,17.735,36.8,9.505,38.186,4.526c1.176-4.219,2.559-3.458.83-4.357s-3.734.277-5.325,3.458S24.839,23.89,13.221,35.439C7.273,41.317,1.879,38.274.842,37.375c-.9-.761-1.176.415-.138,1.591,4.772,5.256,11.826,2.282,14.384-.277,7.054-7.054,15.283-22.268,18.6-28.7a98.251,98.251,0,0,0,.277,16.874,50.129,50.129,0,0,1-8.3,3.181c-1.66.415-2.7,1.106-2.7,1.867s1.106,1.521,2.7,2.282c2.835,1.383,11.2,5.256,13.209,6.5,1.729,1.037,2.628.207,3.112-.9.692-1.452-1.176-2.282-2.974-2.766a60.545,60.545,0,0,1-1.66-9.267c4.219-2.628,8.437-6.086,10.788-10.443C47.522,20.916,46,33.3,49.873,38.482a5.451,5.451,0,0,0,4.564,2.213c.968-.069,1.383-.692,1.245-.83' transform='translate(-0.038 0.124)'/%3E%3C/g%3E%3C/svg%3E\";\n\n let _slotParentEl: HTMLElement;\n let _windowWidth = window.innerWidth;\n let _showToggleMenu = false;\n let _showMenu = false;\n\n // Reactive\n\n $: _mobile = _windowWidth < MOBILE_BP;\n $: _tablet = _windowWidth >= MOBILE_BP && _windowWidth < fullmenubreakpoint;\n $: _desktop = _windowWidth >= +fullmenubreakpoint;\n // @ts-expect-error\n $: (async () => (_showToggleMenu = _desktop ? false : await hasChildren()))();\n\n // Functions\n\n const toggleMenu = () => (_showMenu = !_showMenu);\n const hideMenu = () => (_showMenu = false);\n\n // Hooks\n\n onMount(() => {\n window.addEventListener(\"popstate\", onRouteChange, true);\n setCurrentLink();\n });\n\n onDestroy(() => {\n window.removeEventListener(\"popstate\", onRouteChange, true);\n });\n\n function onRouteChange() {\n setCurrentLink();\n hideMenu();\n }\n\n // Update component if the current browser url matches one of this element's child links\n function setCurrentLink() {\n if (!_slotParentEl) return;\n\n const slot = _slotParentEl.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot) return;\n\n const link = slot\n .assignedElements()\n .filter((el) => el.tagName === \"A\")\n .map((el) => {\n el.classList.remove(\"current\");\n return el;\n })\n .find((el) => {\n const href = (el as HTMLLinkElement).href;\n const url = `${window.location.pathname}${window.location.search}${window.location.hash}`;\n return href.endsWith(url);\n });\n if (link) {\n link.classList.add(\"current\");\n }\n }\n\n // *Menu* children count\n // When in mobile mode, while the children are not visible the children are rendered in a div[display: none]\n // element to allow for the children count to be obtained.\n async function hasChildren() {\n await tick();\n\n if (!_slotParentEl) return;\n\n const slot = _slotParentEl?.childNodes[0] as HTMLSlotElement;\n const children = slot.assignedElements?.();\n if (children) {\n return children.length > 0;\n } else {\n // testing\n // @ts-expect-error\n return [..._slotParentEl.querySelectorAll(\"a\")].length > 0;\n }\n }\n</script>\n\n<svelte:window bind:innerWidth={_windowWidth} />\n\n<!-- HTML -->\n<div\n class=\"container\"\n data-testid={testid}\n style={`--max-content-width: ${maxcontentwidth || \"100%\"}`}\n class:show-menu={_showMenu}\n class:mobile={_mobile}\n class:tablet={_tablet}\n class:desktop={_desktop}\n>\n <div class=\"layout\">\n <!-- Logo and optional heading link -->\n {#if url}\n <a href={url} class=\"header-logo-title-area\" data-testid=\"url\">\n <img alt=\"GoA Logo\" class=\"image-mobile\" src={_mobileLogo} />\n <img alt=\"GoA Logo\" class=\"image-desktop\" src={_desktopLogo} />\n {#if heading}\n <span data-testid=\"title\" class=\"title\">{heading}</span>\n {/if}\n </a>\n {:else}\n <div class=\"header-logo-title-area\">\n <img alt=\"GoA Logo\" class=\"image-mobile\" src={_mobileLogo} />\n <img alt=\"GoA Logo\" class=\"image-desktop\" src={_desktopLogo} />\n {#if heading}\n <span data-testid=\"title\" class=\"title\">{heading}</span>\n {/if}\n </div>\n {/if}\n\n <!-- Menu button for mobile -->\n {#if _showToggleMenu && _mobile}\n <button\n on:click={toggleMenu}\n class=\"menu-toggle-area\"\n data-testid=\"menu-toggle\"\n >\n Menu <goa-icon\n type={_showMenu ? \"chevron-up\" : \"chevron-down\"}\n mt=\"1\"\n />\n </button>\n {/if}\n\n <!-- Menu and menu button for tablet -->\n {#if _showToggleMenu && _tablet}\n <goa-popover\n class=\"menu\"\n open={_showMenu}\n context=\"app-header-menu\"\n focusborderwidth=\"0\"\n borderradius=\"0\"\n padded=\"false\"\n width=\"16rem\"\n tabindex=\"-1\"\n position=\"below\"\n on:_close={hideMenu}\n >\n <div slot=\"target\">\n <button\n on:click={toggleMenu}\n class=\"menu-toggle-area\"\n data-testid=\"menu-toggle\"\n >\n Menu <goa-icon\n type={_showMenu ? \"chevron-up\" : \"chevron-down\"}\n mt=\"1\"\n />\n </button>\n </div>\n\n {#if _showMenu}\n <div bind:this={_slotParentEl} data-testid=\"slot\">\n <slot />\n </div>\n {/if}\n </goa-popover>\n {/if}\n\n <!--\n Need to render slot content to allow mobile and tablet views to\n know whether or not to show the Menu button. `_slotContainer` provides\n a reference to determine if any slot children exist.\n -->\n {#if !_showMenu && (_mobile || _tablet)}\n <div bind:this={_slotParentEl} style=\"display: none\">\n <slot />\n </div>\n {/if}\n\n <!-- Mobile and desktop slot content -->\n {#if (_showMenu && _mobile) || _desktop}\n <div bind:this={_slotParentEl} data-testid=\"slot\" class=\"content-area\">\n <slot />\n </div>\n {/if}\n </div>\n</div>\n\n<!-- Style -->\n\n<style>\n *,\n :global(::slotted(*)) {\n font: var(--goa-typography-body-s);\n }\n\n /* =============== */\n /* Common */\n /* =============== */\n\n /* spans the full page width */\n .container {\n border-bottom: var(--goa-border-width-s) solid\n var(--goa-color-greyscale-200);\n background-color: var(--goa-color-greyscale-white);\n }\n\n .title {\n margin-left: var(--goa-space-s);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: var(--goa-color-text-default);\n }\n\n /* contains all children within component */\n .layout {\n width: 100%;\n display: grid;\n grid-template-columns: 1fr auto;\n grid-template-rows: 3.375rem auto;\n grid-template-areas:\n \"header menu\"\n \"links links\";\n }\n\n .header-logo-title-area {\n grid-area: header;\n\n display: flex;\n align-items: center;\n padding: 0 1rem;\n text-decoration: none;\n }\n .header-logo-title-area:focus {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n outline-offset: calc(-1 * var(--goa-border-width-l));\n }\n\n .menu-toggle-area {\n grid-area: menu;\n\n color: var(--goa-color-text-default);\n align-items: center;\n background: transparent;\n border: none;\n cursor: pointer;\n display: flex;\n gap: 0.25rem;\n justify-content: right;\n padding: 1rem;\n text-decoration: underline;\n }\n\n .menu-toggle-area goa-icon {\n scale: 0.8;\n }\n\n .menu-toggle-area:focus {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n outline-offset: calc(-1 * var(--goa-border-width-l));\n }\n goa-popover .menu-toggle-area:focus {\n outline-offset: 0;\n }\n\n .image-desktop {\n height: 2rem;\n }\n\n .content-area {\n grid-area: links;\n }\n\n :global(::slotted(a)) {\n display: block;\n margin: 0;\n font: var(--goa-typography-body-m);\n text-decoration: none;\n color: var(--goa-color-text-default);\n padding: calc((3rem - var(--goa-line-height-3)) / 2) 1rem;\n cursor: pointer;\n white-space: nowrap;\n }\n :global(::slotted(a:hover)) {\n background-color: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n }\n :global(::slotted(a:focus)) {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n outline-offset: calc(-1 * var(--goa-border-width-l));\n }\n :global(::slotted(a.interactive)) {\n text-decoration: underline;\n color: var(--goa-color-interactive-default);\n }\n\n .mobile :global(::slotted(a)) {\n box-shadow: inset 0 var(--goa-border-width-s) 0 0\n var(--goa-color-greyscale-200);\n }\n .mobile .image-desktop {\n display: none;\n }\n .mobile .image-mobile {\n display: block;\n }\n .mobile.show-menu {\n border-bottom: var(--goa-border-width-m) solid\n var(--goa-color-greyscale-200);\n }\n\n /* Tablet */\n .tablet *,\n .tablet:global(::slotted(*)) {\n font: var(--goa-typography-body-m);\n }\n .tablet :global(::slotted(a)) {\n box-shadow: inset 0 var(--goa-border-width-s) 0 0\n var(--goa-color-greyscale-200);\n }\n .tablet .image-desktop {\n display: block;\n }\n .tablet .image-mobile {\n display: none;\n }\n .tablet .header-logo-title-area {\n padding: 0 1.5rem;\n min-height: 4rem;\n }\n .tablet .layout {\n grid-template-rows: 4rem auto;\n }\n .tablet .title {\n margin-left: var(--goa-space-m);\n }\n\n /* Desktop */\n .desktop .content-area {\n grid-area: menu;\n display: flex;\n align-items: stretch;\n }\n .desktop .header-logo-title-area {\n grid-area: header;\n display: flex;\n align-items: center;\n grid-template-rows: 3.375rem auto;\n color: inherit;\n flex: 1 1 auto;\n min-height: 4rem;\n }\n .desktop .image-desktop {\n display: block;\n }\n .desktop .image-mobile {\n display: none;\n }\n .desktop .layout {\n display: grid;\n grid-template-columns: auto 1fr auto;\n grid-template-rows: auto;\n grid-template-areas: \"header . menu\";\n margin: 0 auto;\n width: min(var(--max-content-width), 100%);\n }\n .desktop :global(::slotted(goa-app-header-menu)),\n .desktop :global(::slotted(a)),\n .desktop :global(::slotted(a:visited)) {\n color: var(--goa-color-text-default);\n font-weight: var(--goa-font-weight-bold);\n grid-template-rows: 3.375rem auto;\n display: inline-flex;\n align-items: center;\n padding: 0 0.75rem;\n }\n .desktop :global(::slotted(goa-app-header-menu)) {\n padding: 0;\n }\n .desktop :global(::slotted(a:focus-within)),\n .desktop :global(::slotted(goa-app-header-menu:focus-within)),\n .desktop :global(::slotted(a:hover)),\n .desktop :global(::slotted(goa-app-header-menu:hover)) {\n background: var(--goa-color-greyscale-100);\n cursor: pointer;\n color: var(--goa-color-interactive-hover);\n }\n .desktop :global(::slotted(a:focus)),\n .desktop :global(::slotted(goa-app-header-menu:focus)) {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n outline-offset: calc(-1 * var(--goa-border-width-l));\n }\n .desktop :global(::slotted(a.current)) {\n border-top: 4px solid var(--goa-color-interactive-default);\n border-bottom: 4px solid transparent;\n }\n .desktop :global(::slotted(a.current:hover)) {\n border-top: 4px solid var(--goa-color-interactive-hover);\n }\n .desktop :global(::slotted(a.interactive)) {\n font-weight: var(--goa-font-weight-medium);\n text-decoration: underline;\n color: var(--goa-color-interactive-default);\n padding: 0 var(--goa-space-m);\n }\n .desktop :global(::slotted(a.interactive:hover)) {\n color: var(--goa-color-interactive-hover);\n }\n .desktop :global(::slotted(a.interactive.current)) {\n border-color: transparent;\n margin-left: var(--goa-space-m);\n }\n</style>\n","<svelte:options customElement=\"goa-app-header-menu\" />\n\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { validateRequired } from \"../../common/utils\";\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n import { TABLET_BP } from \"../../common/breakpoints\";\n\n // Required\n export let heading: string;\n\n // Optional\n export let leadingicon: GoAIconType;\n export let type: \"primary\" | \"secondary\" = \"primary\";\n\n // Private\n\n // media queries are not sufficient as they don't allow for the same slot\n // to be used in different query selectors\n let _innerWidth: number = window.innerWidth;\n // allows listening to popover events\n let _popoverEl: HTMLElement;\n // allow for finding of contained link elements within slot\n let _slotParentEl: HTMLElement;\n // internal state of when the window location matches with a link within this element's slot\n let _hasCurrentLink = false;\n // open state\n let _open = false;\n\n // Reactive\n $: _desktop = _innerWidth >= TABLET_BP;\n\n // call the method when window changes to desktop size\n $: _desktop && bindToPopoverCloseEvent();\n\n // Hooks\n\n onMount(async () => {\n await tick();\n validateRequired(\"GoaAppHeaderMenu\", { heading });\n\n setCurrentLink();\n window.addEventListener(\"popstate\", setCurrentLink, true);\n });\n\n\n onDestroy(() => {\n window.removeEventListener(\"popstate\", setCurrentLink, true);\n });\n\n // Functions\n\n function setCurrentLink() {\n _hasCurrentLink = hasCurrentLink();\n }\n\n // Determine if the current browser url matches one of this element's child links\n function hasCurrentLink(): boolean {\n if (!_slotParentEl) return false;\n\n const slot = _slotParentEl.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot) return false;\n\n const link = slot\n .assignedElements()\n .filter((el) => el.tagName === \"A\")\n .find((el) => {\n const href = (el as HTMLLinkElement).href;\n const url = `${window.location.pathname}${window.location.search}${window.location.hash}`;\n return href.endsWith(url);\n });\n return !!link;\n }\n\n // Ensures that the Popover _close event has a handler if the window\n // is resized after initial load\n async function bindToPopoverCloseEvent() {\n await tick();\n if (!_popoverEl) return;\n _popoverEl.removeEventListener(\"_close\", closeMenu);\n _popoverEl.removeEventListener(\"_open\", openMenu);\n\n _popoverEl.addEventListener(\"_close\", closeMenu);\n _popoverEl.addEventListener(\"_open\", openMenu);\n }\n\n async function openMenu() {\n _open = true;\n\n await tick();\n\n if (_slotParentEl) {\n _slotParentEl.addEventListener(\"click\", closeMenu);\n }\n }\n\n function closeMenu() {\n if (_slotParentEl) {\n _slotParentEl.removeEventListener(\"click\", closeMenu);\n }\n // timeout is required to allow any other events to fire before DOM is changed\n setTimeout(() => {\n _open = false;\n }, 1);\n }\n\n function toggleMenu() {\n _open ? closeMenu() : openMenu();\n }\n</script>\n\n<svelte:window bind:innerWidth={_innerWidth} />\n\n{#if _desktop}\n <goa-popover\n bind:this={_popoverEl}\n context=\"app-header-menu\"\n focusborderwidth=\"0\"\n borderradius=\"0\"\n padded=\"false\"\n tabindex=\"-1\"\n width=\"16rem\"\n position=\"below\"\n open=\"{_open}\"\n >\n <button\n slot=\"target\"\n style=\"padding: 0 0.75rem;\"\n class={type}\n class:current={_hasCurrentLink}\n >\n {#if leadingicon}\n <goa-icon type={leadingicon} mt=\"1\" />\n {/if}\n {heading}\n <goa-icon type={_open ? \"chevron-up\" : \"chevron-down\"} mt=\"1\" />\n </button>\n\n <div class=\"desktop\" bind:this={_slotParentEl}>\n <slot />\n </div>\n </goa-popover>\n{:else}\n <button class:open={_open} on:click={toggleMenu} class={type}>\n {#if leadingicon}\n <goa-icon type={leadingicon} mt=\"1\" />\n {/if}\n <span class=\"heading\">{heading}</span>\n <goa-spacer hspacing=\"fill\" />\n <goa-icon type={_open ? \"chevron-up\" : \"chevron-down\"} mt=\"1\" />\n </button>\n {#if _open}\n <div class=\"not-desktop\" bind:this={_slotParentEl}>\n <slot />\n </div>\n {/if}\n{/if}\n\n<style>\n * {\n font: var(--goa-typography-body-m);\n }\n\n /* ============= */\n /* Common */\n /* ============= */\n\n button {\n padding: 0;\n border: none;\n background: transparent;\n outline: none;\n color: var(--goa-color-text-default);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n button:active,\n button:hover,\n button:focus-within,\n [slot=\"target\"]:focus-within {\n background: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n }\n button.current {\n border-top: 4px solid var(--goa-color-interactive-default);\n border-bottom: 4px solid transparent;\n }\n button.current:hover {\n border-top: 4px solid var(--goa-color-interactive-hover);\n }\n\n button.open {\n border-bottom: 1px solid var(--goa-color-greyscale-200);\n }\n\n :global(::slotted(a)),\n :global(::slotted(a:visited)) {\n box-shadow: inset 0 1px 0 0 var(--goa-color-greyscale-200);\n color: var(--goa-color-text-default);\n display: block;\n padding: calc((3rem - var(--goa-line-height-3)) / 2) 1rem;\n text-decoration: none;\n }\n .not-desktop :global(::slotted(a)) {\n padding: calc((3rem - var(--goa-line-height-3)) / 2) 2.75rem;\n }\n :global(::slotted(a:first-child)) {\n box-shadow: none;\n }\n :global(::slotted(a:hover)) {\n background: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n }\n :global(::slotted(a:focus-visible)) {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n outline-offset: -3px;\n color: var(--goa-color-interactive-hover);\n }\n :global(::slotted(a.interactive)) {\n text-decoration: underline;\n color: var(--goa-color-interactive-default);\n }\n\n @media not (--desktop) {\n button {\n box-shadow: inset 0 1px 0 0 var(--goa-color-greyscale-200);\n height: 3rem;\n flex: 1 1 auto;\n padding: 0 1rem;\n width: 100%;\n }\n button:focus {\n outline: var(--goa-border-width-l) solid\n var(--goa-color-interactive-focus);\n outline-offset: -3px;\n }\n .heading {\n /* prevent the menu text from line breaking too early */\n flex: 0 0 auto;\n }\n }\n\n @media (--desktop) {\n button[slot=\"target\"] {\n font-weight: var(--goa-font-weight-bold);\n /* ensures that the button spans 100% of the height of the desktop app header bar */\n height: 4rem;\n white-space: nowrap;\n }\n button.secondary {\n font-weight: var(--goa-font-weight-regular);\n }\n }\n</style>\n","<svelte:options customElement=\"goa-badge\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { typeValidator, toBoolean } from \"../../common/utils\";\n\n // Validator\n const [Types, validateType] = typeValidator(\n \"Badge type\",\n [\n \"success\",\n \"important\",\n \"information\",\n \"emergency\",\n \"dark\",\n \"midtone\",\n \"light\",\n ],\n true,\n );\n\n //Type\n type BadgeType = (typeof Types)[number];\n\n export let type: BadgeType;\n\n // optional\n export let testid: string = \"\";\n export let content: string = \"\";\n export let icon: string = \"false\";\n export let arialabel: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // private\n $: showIcon = toBoolean(icon);\n $: showIconOnly = showIcon && !content;\n\n $: iconType = {\n success: \"checkmark-circle\",\n important: \"alert-circle\",\n information: \"information-circle\",\n emergency: \"warning\",\n dark: \"information-circle\",\n midtone: \"information-circle\",\n light: \"information-circle\",\n }[type];\n\n onMount(() => {\n setTimeout(() => validateType(type), 1);\n if (!showIcon && !content) {\n console.warn(\n \"GoABadge must have either then content or icon property set\",\n );\n }\n if (showIconOnly && !arialabel) {\n console.warn(\"GoABadge with icon only requires an arialabel\");\n }\n });\n</script>\n\n<!-- HTML -->\n<div\n style={calculateMargin(mt, mr, mb, ml)}\n data-testid={testid}\n data-type=\"goa-badge\"\n class=\"goa-badge badge-{type}\"\n class:icon-only={showIconOnly}\n>\n {#if showIcon}\n <goa-icon\n arialabel={showIconOnly && arialabel ? arialabel : null}\n role={showIconOnly && arialabel ? \"presentation\" : null}\n type={iconType}\n size=\"small\"\n />\n {:else}\n <div style=\"height: 1.2rem; margin-left:-0.25rem;\" />\n {/if}\n {#if content}\n <div class=\"goa-badge-content\">\n {content}\n </div>\n {/if}\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n .goa-badge {\n display: inline-flex;\n align-items: center;\n border-radius: 0.25rem;\n padding: 3px 0.5rem; /* is calc(3 / 16 * 1rem) better for scaling? */\n gap: 0.25rem;\n font-weight: var(--goa-font-weight-regular);\n }\n\n .icon-only {\n padding: 0.25rem;\n }\n\n .goa-badge-content {\n font-size: var(--goa-font-size-2);\n line-height: var(--goa-line-height-1);\n padding-bottom: var(\n --font-valign-fix,\n 0\n ); /* acumin font requires this to allow for vertical alignment */\n }\n\n .goa-badge.badge-information {\n background-color: var(--goa-color-greyscale-100);\n color: var(--goa-color-info-default);\n }\n\n .goa-badge.badge-success {\n background-color: var(--goa-color-success-default);\n color: var(--goa-color-text-light);\n }\n\n .goa-badge.badge-important {\n background-color: var(--goa-color-warning-default);\n color: var(--goa-color-text-default);\n }\n\n .goa-badge.badge-emergency {\n background-color: var(--goa-color-emergency-default);\n color: var(--goa-color-text-light);\n }\n\n .goa-badge.badge-dark {\n background-color: var(--goa-color-greyscale-black);\n color: var(--goa-color-text-light);\n }\n\n .goa-badge.badge-midtone {\n background-color: var(--goa-color-greyscale-700);\n color: var(--goa-color-text-light);\n }\n\n .goa-badge.badge-light {\n background-color: var(--goa-color-greyscale-white);\n color: var(--goa-color-text-default);\n }\n</style>\n","<svelte:options customElement=\"goa-block\" />\n\n<script lang=\"ts\">\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n\n export let gap: Spacing = \"m\";\n export let direction: \"row\" | \"column\" = \"row\";\n export let alignment: \"center\" | \"start\" | \"end\" = \"start\";\n\n $: _alignment =\n alignment === \"start\"\n ? \"flex-start\"\n : alignment === \"end\"\n ? \"flex-end\"\n : \"center\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n</script>\n\n<div\n class=\"block\"\n style={`\n ${calculateMargin(mt, mr, mb, ml)};\n --gap: var(--goa-space-${gap});\n --alignment: ${_alignment};\n --direction: ${direction};\n `}\n>\n <slot />\n</div>\n\n<style>\n .block {\n display: flex;\n flex-direction: var(--direction);\n align-items: var(--alignment);\n gap: var(--gap);\n }\n</style>\n","<svelte:options customElement=\"goa-button\" />\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { typeValidator, toBoolean } from \"../../common/utils\";\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n\n // Validators\n const [Types, validateType] = typeValidator(\n \"Button type\",\n [\"primary\", \"submit\", \"secondary\", \"tertiary\", \"start\"],\n true,\n );\n const [Sizes, validateSize] = typeValidator(\n \"Button size\",\n [\"normal\", \"compact\"],\n true,\n );\n const [Variants, validateVariant] = typeValidator(\n \"Button variant\",\n [\"normal\", \"destructive\"],\n true,\n );\n\n // Types\n type ButtonType = (typeof Types)[number];\n type Size = (typeof Sizes)[number];\n type Variant = (typeof Variants)[number];\n\n // optional\n export let type: ButtonType = \"primary\";\n export let size: Size = \"normal\";\n export let variant: Variant = \"normal\";\n export let disabled: string = \"false\";\n export let leadingicon: GoAIconType | null = null;\n export let trailingicon: GoAIconType | null = null;\n export let testid: string = \"\";\n\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n $: isDisabled = toBoolean(disabled);\n $: isButtonDark = type === \"primary\" || type === \"start\";\n\n function clickHandler(_e: Event) {\n // TODO: use e.target??\n if (!isDisabled) {\n // @ts-expect-error\n this.dispatchEvent(\n new CustomEvent(\"_click\", { composed: true, bubbles: true }),\n );\n }\n }\n\n onMount(() => {\n validateType(type);\n validateSize(size);\n validateVariant(variant);\n });\n</script>\n\n<button\n class=\"{type} {size} {variant}\"\n class:leading={leadingicon}\n class:trailing={trailingicon || type === \"start\"}\n style={calculateMargin(mt, mr, mb, ml)}\n on:click={clickHandler}\n disabled={isDisabled}\n on:click={clickHandler}\n data-testid={testid}\n type={type == \"submit\" ? type : \"button\"}\n>\n {#if type === \"start\"}\n <span class=\"text\">\n <slot />\n </span>\n <goa-icon id=\"trailing-icon\" type=\"arrow-forward\" inverted=\"true\" />\n {:else}\n {#if leadingicon}\n <goa-icon id=\"leading-icon\" type={leadingicon} inverted={isButtonDark} />\n {/if}\n <span class=\"text\">\n <slot />\n </span>\n {#if trailingicon}\n <goa-icon\n id=\"trailing-icon\"\n type={trailingicon}\n inverted={isButtonDark}\n />\n {/if}\n {/if}\n</button>\n\n<style>\n :host {\n --button-height: 2.625rem; /* 42px */\n --button-height-compact: 2rem; /* 32px */\n --button-height-tall: 3.25rem; /* 52px */\n\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n button {\n display: inline-flex;\n box-sizing: border-box;\n border-radius: 0.25rem;\n border: 2px solid var(--goa-color-interactive-default);\n box-sizing: border-box;\n cursor: pointer;\n font-family: var(--goa-font-family-sans);\n font-size: var(--goa-font-size-5);\n font-weight: 400;\n height: var(--button-height);\n letter-spacing: var(--goa-letter-spacing-button);\n line-height: 100%;\n padding: 0 0.75rem;\n white-space: nowrap;\n\n /* for leading and trailing icon vertical alignment */\n gap: 0.5rem;\n align-items: center;\n justify-content: center;\n transition:\n transform 0.1s ease-in-out,\n background-color 0.2s ease-in-out,\n border-color 0.2s ease-in-out;\n }\n\n @media (--mobile) {\n :host {\n width: 100%;\n }\n button {\n width: 100%;\n display: flex;\n }\n }\n\n .text {\n padding-bottom: var(\n --font-valign-fix,\n 0\n ); /* acumin font requires this to allow for vertical alignment */\n }\n\n button:disabled {\n pointer-events: none;\n opacity: 0.5;\n }\n\n button.compact {\n height: var(--button-height-compact);\n font-size: var(--goa-font-size-4);\n padding-left: var(--goa-space-xs);\n padding-right: var(--goa-space-xs);\n }\n\n button.start {\n height: var(--button-height-tall);\n font-weight: var(--goa-font-weight-bold);\n }\n\n /* Primary */\n button.start,\n button.submit,\n button.primary {\n border: 2px solid var(--goa-color-interactive-default);\n background-color: var(--goa-color-interactive-default);\n color: var(--goa-color-text-light);\n }\n\n button.start:hover,\n button.submit:hover,\n button.primary:hover {\n border-color: var(--goa-color-interactive-hover);\n background-color: var(--goa-color-interactive-hover);\n }\n\n button.start:focus,\n button.start:active,\n button.submit:focus,\n button.submit:active,\n button.primary:focus,\n button.primary:active {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n border-color: var(--goa-color-interactive-hover);\n background-color: var(--goa-color-interactive-hover);\n outline: none;\n }\n\n /* Secondary */\n\n button.secondary {\n border: 2px solid var(--goa-color-interactive-default);\n background-color: var(--goa-color-greyscale-white);\n color: var(--goa-color-interactive-default);\n }\n\n button.secondary:hover {\n border-color: var(--goa-color-interactive-hover);\n color: var(--goa-color-interactive-hover);\n background-color: var(--goa-color-greyscale-100);\n }\n\n button.secondary:focus,\n button.secondary:active {\n border-color: var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n background-color: var(--goa-color-greyscale-100);\n outline: none;\n }\n\n /* Tertiary */\n\n button.tertiary {\n border: 1px solid transparent;\n background-color: transparent;\n color: var(--goa-color-interactive-default);\n text-decoration: underline;\n }\n\n button.tertiary:hover {\n border-color: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n background-color: var(--goa-color-greyscale-100);\n }\n\n button.tertiary:focus,\n button.tertiary:active {\n border-color: var(--goa-color-greyscale-100);\n background-color: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n outline: none;\n }\n\n .submit.destructive,\n .primary.destructive {\n color: var(--goa-color-greyscale-white);\n background-color: var(--goa-color-emergency-default);\n border-color: var(--goa-color-emergency-default);\n }\n .submit.destructive:hover,\n .primary.destructive:hover {\n background-color: var(--goa-color-emergency-dark);\n border-color: var(--goa-color-emergency-dark);\n }\n .submit.destructive:focus,\n .primary.destructive:focus,\n .primary.destructive:active {\n background-color: var(--goa-color-emergency-dark);\n border-color: var(--goa-color-emergency-dark);\n }\n\n .secondary.destructive {\n color: var(--goa-color-emergency-default);\n border-color: var(--goa-color-emergency-default);\n background-color: var(--goa-color-greyscale-white);\n }\n .secondary.destructive:hover {\n border-color: var(--goa-color-emergency-dark);\n color: var(--goa-color-emergency-dark);\n background-color: var(--goa-color-greyscale-white);\n }\n .secondary.destructive:focus,\n .secondary.destructive:active {\n color: var(--goa-color-emergency-dark);\n border-color: var(--goa-color-emergency-dark);\n background-color: var(--goa-color-greyscale-white);\n }\n\n .tertiary.destructive {\n color: var(--goa-color-emergency-default);\n border-color: transparent;\n }\n .tertiary.destructive:hover {\n color: var(--goa-color-emergency-dark);\n }\n .tertiary.destructive:focus,\n .tertiary.destructive:active {\n color: var(--goa-color-emergency-dark);\n }\n</style>\n","<svelte:options customElement=\"goa-button-group\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n\n export let alignment: ButtonAlignment = \"start\";\n export let gap: Gap = \"relaxed\";\n export let testid: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n const [BUTTON_ALIGNMENTS, validateAlignment] = typeValidator(\"alignment\", [\n \"start\",\n \"end\",\n \"center\",\n ]);\n type ButtonAlignment = (typeof BUTTON_ALIGNMENTS)[number];\n\n const [GAPS, validateGap] = typeValidator(\"gap\", [\"relaxed\", \"compact\"]);\n type Gap = (typeof GAPS)[number];\n\n $: _alignment = {\n start: \"flex-start\",\n end: \"flex-end\",\n center: \"center\",\n }[alignment];\n\n onMount(() => {\n validateAlignment(alignment);\n validateGap(gap);\n });\n</script>\n\n<!-- HTML -->\n<div\n data-testid={testid}\n style=\"{calculateMargin(\n mt,\n mr,\n mb,\n ml,\n )}; --alignment: {_alignment}; --gap-size: {gap === 'relaxed'\n ? '1rem'\n : '0.75rem'}\"\n>\n <slot />\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n div {\n display: flex;\n flex-direction: row;\n justify-content: var(--alignment);\n align-items: center;\n flex-wrap: wrap;\n gap: var(--gap-size);\n padding: 3px 0; /* prevent button box shadow from being cut off */\n }\n</style>\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date(date: DateType): DateType {\n * return constructFrom(\n * date, // Use contrustor from the given date\n * date.getTime() // Use the date value to create a new date\n * )\n * }\n */\nexport function constructFrom(date, value) {\n if (date instanceof Date) {\n return new date.constructor(value);\n } else {\n return new Date(value);\n }\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n const _date = toDate(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n\n const timestampLeft =\n +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight =\n +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { addMonths } from \"./addMonths.mjs\";\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount) {\n return addMonths(date, amount * 12);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","import { startOfDay } from \"./startOfDay.mjs\";\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(dateLeft, dateRight) {\n const dateLeftStartOfDay = startOfDay(dateLeft);\n const dateRightStartOfDay = startOfDay(dateRight);\n\n return +dateLeftStartOfDay === +dateRightStartOfDay;\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate(date);\n return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n const cleanDate = toDate(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date) {\n const _date = toDate(date);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n const _date = toDate(date);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n const _date = toDate(date);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = constructFrom(date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The last day of a month\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * const result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport function lastDayOfMonth(date) {\n const _date = toDate(date);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default lastDayOfMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return _date.getTime() > _dateToCompare.getTime();\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return +_date < +_dateToCompare;\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport function isSameMonth(dateLeft, dateRight) {\n const _dateLeft = toDate(dateLeft);\n const _dateRight = toDate(dateRight);\n return (\n _dateLeft.getFullYear() === _dateRight.getFullYear() &&\n _dateLeft.getMonth() === _dateRight.getMonth()\n );\n}\n\n// Fallback for modularized imports:\nexport default isSameMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param dayOfMonth - The day of the month of the new date\n *\n * @returns The new date with the day of the month set\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * const result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport function setDate(date, dayOfMonth) {\n const _date = toDate(date);\n _date.setDate(dayOfMonth);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setDate;\n","<svelte:options customElement=\"goa-calendar\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n import {\n addMonths,\n addDays,\n format,\n getDaysInMonth,\n isSameDay,\n lastDayOfMonth,\n setDate,\n isSameMonth,\n startOfDay,\n addYears,\n isBefore,\n isAfter,\n } from \"date-fns\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { isValidDate } from \"../../common/utils\";\n\n // ******\n // Public\n // ******\n\n export let name: string = \"\";\n export let value: string = \"\";\n export let min: string = \"\";\n export let max: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // ****************\n // Exposed Privates\n // ****************\n\n export let bordered: string = \"true\";\n\n // ********\n // Privates\n // ********\n\n let _selectedDate: Date | null; // date set by the user\n let _calendarDate: Date; // date that the calendar is synced to (days of month, month/year dropdowns)\n let _min: Date;\n let _max: Date;\n let _monthDays: Date[] = [];\n let _previousMonthDays: Date[] = [];\n let _nextMonthDays: Date[] = [];\n let _nextMonthDayCount: number;\n let _months = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n let _years: string[] = [];\n let _calendarEl: HTMLElement;\n\n // *****\n // Hooks\n // *****\n\n onMount(async () => {\n _calendarDate = _selectedDate = value\n ? startOfDay(new Date(value))\n : startOfDay(new Date());\n _min = (min && new Date(min)) || addYears(_selectedDate, -5);\n _max = (max && new Date(max)) || addYears(_selectedDate, 5);\n\n // define year range to show in dropdown\n const yearCount = _max.getFullYear() - _min.getFullYear() + 1;\n let yearStart = _min.getFullYear();\n _years = new Array(yearCount)\n .fill(undefined)\n .map((_, i) => `${yearStart + i}`)\n .sort();\n\n initKeybindings();\n\n await tick();\n renderCalendar({ type: \"date\", value: _selectedDate });\n });\n\n // *********\n // Functions\n // *********\n\n type DateChange = { type: \"date\"; value: Date };\n type MonthChange = { type: \"month\"; value: number };\n type YearChange = { type: \"year\"; value: number };\n\n function renderCalendar(change: DateChange | MonthChange | YearChange) {\n switch (change.type) {\n case \"date\":\n _calendarDate = change.value;\n break;\n case \"month\":\n _calendarDate.setMonth(change.value);\n break;\n case \"year\":\n _calendarDate.setFullYear(change.value);\n break;\n }\n\n if (!isValidDate(_calendarDate)) {\n return;\n }\n\n // day count\n const dayCount = getDaysInMonth(_calendarDate);\n _monthDays = new Array(dayCount)\n .fill(undefined)\n .map(\n (_, i) =>\n new Date(\n _calendarDate.getFullYear(),\n _calendarDate.getMonth(),\n i + 1,\n ),\n );\n\n // previous month days to fill the start of the calendar\n const prevMonthEnd = lastDayOfMonth(addMonths(_calendarDate, -1));\n const selectedMonthStart = setDate(_calendarDate, 1);\n _previousMonthDays = [];\n for (let i = 0; i < selectedMonthStart.getDay(); i++) {\n _previousMonthDays = [..._previousMonthDays, addDays(prevMonthEnd, -i)];\n }\n _previousMonthDays.reverse();\n\n // next month days to fill the end of the calendar\n _nextMonthDays = [];\n _nextMonthDayCount =\n 7 - ((_previousMonthDays.length + _monthDays.length) % 7);\n // ensure a full week is not appended to the end\n if (_nextMonthDayCount < 7) {\n const nextMonthStart = setDate(addMonths(_calendarDate, 1), 1);\n for (let i = 0; i < _nextMonthDayCount; i++) {\n _nextMonthDays = [..._nextMonthDays, addDays(nextMonthStart, i)];\n }\n }\n }\n\n function initKeybindings() {\n const handleKeyClick = async (e: KeyboardEvent, newDate: Date) => {\n e.stopPropagation();\n e.preventDefault();\n\n // prevent selection outsite min/max boundies\n if (newDate < _min || newDate > _max) {\n return;\n }\n\n // re-initialize calendar days if arrow keys move to a different month\n if (!isSameMonth(newDate, _calendarDate)) {\n renderCalendar({ type: \"date\", value: newDate });\n }\n _calendarDate = newDate;\n\n await tick();\n const focusedDateEl = _calendarEl.querySelector(\n `[data-date=\"${newDate.getTime()}\"]`,\n ) as HTMLButtonElement;\n focusedDateEl?.focus();\n };\n\n _calendarEl.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n switch (e.key) {\n case \"ArrowUp\":\n handleKeyClick(e, addDays(_calendarDate, -7));\n break;\n case \"ArrowDown\":\n handleKeyClick(e, addDays(_calendarDate, 7));\n break;\n case \"ArrowLeft\":\n handleKeyClick(e, addDays(_calendarDate, -1));\n break;\n case \"ArrowRight\":\n handleKeyClick(e, addDays(_calendarDate, 1));\n break;\n case \"Delete\":\n case \"Backspace\":\n _selectedDate = null;\n break;\n case \"Home\": {\n let homeDate = new Date(_calendarDate);\n homeDate.setDate(1);\n handleKeyClick(e, homeDate);\n break;\n }\n case \"End\":\n handleKeyClick(e, lastDayOfMonth(_calendarDate));\n break;\n case \"PageUp\":\n if (e.shiftKey) {\n handleKeyClick(e, addYears(_calendarDate, -1));\n } else {\n handleKeyClick(e, addMonths(_calendarDate, -1));\n }\n break;\n case \"PageDown\":\n if (e.shiftKey) {\n handleKeyClick(e, addYears(_calendarDate, 1));\n } else {\n handleKeyClick(e, addMonths(_calendarDate, 1));\n }\n break;\n case \"Enter\":\n _selectedDate = _calendarDate;\n dispatchValue();\n e.stopPropagation();\n e.preventDefault();\n break;\n case \"Escape\":\n e.stopPropagation();\n e.preventDefault();\n break;\n }\n });\n }\n\n function dispatchValue() {\n if (!_selectedDate) return;\n if (!isValidDate(_selectedDate)) return;\n\n value = _selectedDate.toISOString();\n _calendarEl.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n detail: {\n type: \"date\",\n name: name,\n value: _selectedDate,\n },\n }),\n );\n }\n\n // **************\n // Event Handlers\n // **************\n\n function setMonth(e: CustomEvent) {\n renderCalendar({ type: \"month\", value: +e.detail.value });\n e.preventDefault();\n e.stopPropagation();\n }\n\n function setYear(e: CustomEvent) {\n renderCalendar({ type: \"year\", value: +e.detail.value });\n e.preventDefault();\n e.stopPropagation();\n }\n\n function onDateClick(e: Event) {\n const el = e.target as HTMLElement;\n const raw = parseInt(el.dataset[\"date\"] || \"0\");\n if (!raw) return;\n\n const newDate = new Date(raw);\n\n if (newDate < _min || newDate > _max) {\n return;\n }\n\n // re-initialize calendar days if user clicked on day outside current month\n if (!isSameMonth(newDate, _calendarDate)) {\n renderCalendar({ type: \"date\", value: newDate });\n }\n\n _selectedDate = _calendarDate = newDate;\n dispatchValue();\n }\n</script>\n\n<div\n style={calculateMargin(mt, mr, mb, ml)}\n class:bordered={bordered === \"true\"}\n>\n <goa-block mb=\"m\">\n <goa-form-item label=\"Month\" mt=\"0\">\n <goa-dropdown\n name=\"month\"\n arialabel={`${name} month`}\n data-testid=\"months\"\n width=\"calc(314px / 2 - 1.5rem)\"\n relative=\"true\"\n value={_calendarDate?.getMonth()}\n on:_change={setMonth}\n >\n {#each _months as month, i}\n <goa-dropdown-item value={i} label={month} />\n {/each}\n </goa-dropdown>\n </goa-form-item>\n\n <goa-form-item label=\"Year\" mt=\"0\">\n <goa-dropdown\n name=\"year\"\n arialabel={`${name} year`}\n data-testid=\"years\"\n width=\"calc(314px / 2 - 1.5rem)\"\n relative=\"true\"\n value={_calendarDate?.getFullYear()}\n on:_change={setYear}\n >\n {#each _years as year}\n <goa-dropdown-item value={year} />\n {/each}\n </goa-dropdown>\n </goa-form-item>\n </goa-block>\n\n <div data-testid=\"calendar\" class=\"calendar\" bind:this={_calendarEl}>\n <h5>Sun</h5>\n <h5>Mon</h5>\n <h5>Tue</h5>\n <h5>Wed</h5>\n <h5>Thu</h5>\n <h5>Fri</h5>\n <h5>Sat</h5>\n {#each _previousMonthDays as d}\n <button\n on:click={onDateClick}\n aria-label={format(d, \"PPPP\")}\n data-date={format(d, \"T\")}\n data-day={format(d, \"eee\")}\n class=\"day other-month\"\n class:disabled={isBefore(d, _min) || isAfter(d, _max)}\n tabindex={isSameDay(d, _calendarDate) ? 0 : -1}\n >\n <div class=\"day-num\" data-testid=\"date\">{d.getDate()}</div>\n </button>\n {/each}\n {#each _monthDays as d}\n <button\n on:click={onDateClick}\n aria-label={format(d, \"PPPP\")}\n data-date={format(d, \"T\")}\n data-day={format(d, \"eee\")}\n class=\"day\"\n class:today={isSameDay(d, new Date())}\n class:selected={value && isSameDay(d, _selectedDate)}\n class:disabled={isBefore(d, _min) || isAfter(d, _max)}\n tabindex={isSameDay(d, _calendarDate) ? 0 : -1}\n >\n <div class=\"day-num\" data-testid=\"date\">{d.getDate()}</div>\n </button>\n {/each}\n {#each _nextMonthDays as d}\n <button\n on:click={onDateClick}\n aria-label={format(d, \"PPPP\")}\n data-date={format(d, \"T\")}\n data-day={format(d, \"eee\")}\n class=\"day other-month\"\n class:disabled={isBefore(d, _min) || isAfter(d, _max)}\n tabindex={isSameDay(d, _calendarDate) ? 0 : -1}\n >\n <div class=\"day-num\" data-testid=\"date\">{d.getDate()}</div>\n </button>\n {/each}\n </div>\n</div>\n\n<style>\n :host {\n font: var(--goa-typography-body-s);\n }\n\n .bordered {\n display: inline-block;\n border: 1px solid var(--goa-color-greyscale-700);\n border-radius: var(--goa-border-radius-m);\n padding: 1rem;\n }\n\n .calendar {\n display: grid;\n justify-items: center;\n grid-template-columns: repeat(7, 1fr);\n gap: 2px 0;\n width: 280px;\n font: var(--goa-typography-body-s);\n }\n\n h5 {\n margin: 0;\n font: var(--goa-typography-heading-xs);\n }\n\n .day {\n align-items: center;\n background: var(--goa-color-white);\n border: none;\n border-radius: var(--goa-border-radius-m);\n color: var(--goa-color-greyscale-black);\n display: inline-flex;\n font: var(--goa-typography-body-s);\n height: 2.5rem;\n justify-content: center;\n margin: 0;\n width: 2.5rem;\n }\n\n .day.other-month {\n color: var(--goa-color-greyscale-400);\n }\n\n .day.today {\n font-weight: var(--goa-font-weight-bold);\n }\n\n .day:focus-within {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n }\n\n .day.selected {\n background: var(--goa-color-interactive-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .day:hover {\n background: var(--goa-color-greyscale-200);\n color: var(--goa-color-greyscale-black);\n cursor: pointer;\n }\n\n .day.selected:hover {\n background: var(--goa-color-interactive-hover);\n text-decoration-color: var(--goa-color-white);\n color: var(--goa-color-greyscale-white);\n }\n\n .day.today.selected:hover {\n background: var(--goa-color-interactive-hover);\n text-decoration-color: var(--goa-color-white);\n color: var(--goa-color-greyscale-white);\n }\n\n .day.disabled {\n color: var(--goa-color-greyscale-400);\n cursor: default;\n }\n\n .day.disabled:hover {\n background: var(--goa-color-white);\n }\n\n .day-num {\n width: 100%;\n margin: 0 6px;\n pointer-events: none;\n padding-bottom: 2px;\n }\n\n .selected .day-num {\n border-bottom: none;\n padding-bottom: 0;\n width: 1.5rem;\n }\n\n .today .day-num {\n border-bottom: 3px solid var(--goa-color-interactive-default);\n }\n\n .today.selected .day-num {\n border-bottom: 3px solid var(--goa-color-greyscale-white);\n }\n</style>\n","<svelte:options customElement=\"goa-callout\" />\n\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n import { MOBILE_BP } from \"../../common/breakpoints\";\n\n // Validators\n\n const [Types, validateType] = typeValidator(\n \"Callout type\",\n [\"emergency\", \"important\", \"information\", \"event\", \"success\"],\n true,\n );\n const [CalloutSizes, validateCalloutSize] = typeValidator(\"Callout size\", [\n \"medium\",\n \"large\",\n ]);\n\n // Types\n\n type CalloutType = (typeof Types)[number];\n type CalloutSize = (typeof CalloutSizes)[number];\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = \"l\";\n export let ml: Spacing = null;\n export let size: CalloutSize = \"large\";\n export let type: CalloutType;\n export let heading: string = \"\";\n export let testid: string = \"\";\n\n // Private\n\n let screenSize = 0;\n let iconSize = \"medium\";\n\n // Reactive\n\n $: isMediumCallout = screenSize < MOBILE_BP || size === \"medium\";\n\n $: iconType =\n type === \"emergency\"\n ? \"warning\"\n : type === \"important\"\n ? \"alert-circle\"\n : type === \"information\"\n ? \"information-circle\"\n : type === \"success\"\n ? \"checkmark-circle\"\n : type === \"event\"\n ? \"calendar\"\n : \"\";\n\n onMount(() => {\n validateCalloutSize(size);\n setTimeout(() => {\n validateType(type);\n iconSize = isMediumCallout ? \"small\" : \"medium\";\n });\n });\n</script>\n\n<!-- HTML -->\n<svelte:window bind:innerWidth={screenSize} />\n<div\n style={calculateMargin(mt, mr, mb, ml)}\n class=\"notification\"\n class:medium={isMediumCallout}\n data-testid={testid}\n>\n <span class=\"icon {type}\">\n <goa-icon\n type={iconType}\n size={iconSize}\n inverted={type === \"important\" ? \"false\" : \"true\"}\n />\n </span>\n <span class=\"content\">\n {#if heading}\n <h3 class:medium={isMediumCallout}>{heading}</h3>\n {/if}\n <slot />\n </span>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .notification {\n display: flex;\n align-items: stretch;\n overflow: hidden;\n font: var(--goa-typography-body-m);\n }\n\n h3 {\n font-size: var(--goa-font-size-7);\n line-height: var(--goa-line-height-2);\n font-weight: var(--goa-font-weight-regular);\n margin-top: var(--goa-space-none);\n margin-bottom: var(--goa-space-m);\n }\n\n .emergency {\n background-color: var(--goa-color-emergency-default);\n }\n .important {\n background-color: var(--goa-color-warning-default);\n }\n .information {\n background-color: var(--goa-color-info-default);\n }\n .event {\n background-color: var(--goa-color-info-default);\n }\n .success {\n background-color: var(--goa-color-success-default);\n }\n\n .icon {\n text-align: center;\n padding-top: var(--goa-space-l);\n padding-left: var(--goa-space-s);\n padding-right: var(--goa-space-s);\n }\n .content {\n flex: 1 1 auto;\n background-color: var(--goa-color-greyscale-100);\n padding: var(--goa-space-l);\n }\n /*Medium callout style*/\n .notification.medium {\n font: var(--goa-typography-body-s);\n }\n h3.medium {\n font: var(--goa-typography-heading-xs);\n margin-bottom: var(--goa-space-2xs);\n }\n .notification.medium .content {\n padding: var(--goa-space-s);\n margin-top: calc(-1 * var(--goa-space-3xs));\n }\n .notification.medium .icon {\n padding-top: var(--goa-space-s);\n padding-left: var(--goa-space-2xs);\n padding-right: var(--goa-space-2xs);\n }\n</style>\n","<svelte:options customElement=\"goa-card-actions\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n</script>\n\n<!-- HTML -->\n<goa-card-content>\n <goa-button-group alignment=\"end\">\n <slot />\n </goa-button-group>\n</goa-card-content>\n\n<!-- Style -->\n<style>\n</style>\n","<svelte:options customElement=\"goa-card-content\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n</script>\n\n<!-- HTML -->\n<div class=\"card-content\">\n <slot />\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .card-content {\n padding: 1rem;\n }\n</style>\n","<svelte:options customElement=\"goa-card\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n\n export let elevation: number = 0;\n export let width: string = \"100%\";\n export let height: \"auto\" | \"max\" = \"auto\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n //optional\n export let testid: string = \"\";\n</script>\n\n<!-- HTML -->\n<div id=\"container\">\n <div\n data-testid={testid}\n class=\"card\"\n style=\"\n --width: {width};\n --height: {height === 'auto' ? 'auto' : '100%'};\n {calculateMargin(mt, mr, mb, ml)}\n {elevation === 0\n ? `border: 1px solid var(--goa-color-greyscale-200);`\n : `box-shadow: var(--shadow-${elevation});`}\n \"\n >\n <slot />\n </div>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n #container {\n container: self / inline-size;\n }\n\n .card {\n background-color: var(--goa-color-greyscale-white);\n border-radius: 4px;\n overflow: hidden;\n height: var(--height);\n }\n\n @container self (--not-mobile) {\n .card {\n margin: 0 auto;\n }\n }\n</style>\n","<svelte:options customElement=\"goa-card-group\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n</script>\n\n<!-- HTML -->\n<div class=\"card-group\">\n <slot />\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .card-group {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n gap: 1rem;\n width: 100%;\n }\n</style>\n","<svelte:options customElement=\"goa-card-image\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n export let src: string;\n export let height: string = \"100%\";\n</script>\n\n<!-- HTML -->\n<div\n style={`\n background-image: url({src}); \n height: {height}; \n background-size: cover; \n background-position: center;\n `}\n/>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n</style>\n","<svelte:options customElement=\"goa-checkbox\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n\n import { fromBoolean, toBoolean } from \"../../common/utils\";\n // Required\n export let name: string;\n\n // Optional values\n export let checked: string = \"false\";\n export let text: string = \"\";\n export let value: string = \"\";\n export let disabled: string = \"false\";\n export let error: string = \"false\";\n export let testid: string = \"\";\n export let arialabel: string = \"\";\n export let description: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Private\n let _value: string;\n let _checkboxRef: HTMLElement;\n let _descriptionId: string;\n\n // Binding\n $: isDisabled = toBoolean(disabled);\n $: isError = toBoolean(error);\n $: isChecked = toBoolean(checked);\n $: isIndeterminate = false; // Design review. To be built with TreeView Later\n\n onMount(() => {\n // hold on to the initial value to prevent losing it on check changes\n _value = value;\n _descriptionId = `description_${name}`;\n });\n\n function onChange(e: Event) {\n // Manually set the focus back to the checkbox after the state change\n _checkboxRef.focus();\n // An empty string is required as setting the second value to `null` caused the data to get\n // out of sync with the events.\n const newCheckStatus = !isChecked;\n const newValue = newCheckStatus ? `${_value || \"checked\"}` : \"\";\n\n // set the local state\n checked = fromBoolean(newCheckStatus);\n\n e.target?.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n detail: { name, checked: newCheckStatus, value: newValue },\n }),\n );\n }\n</script>\n\n<!-- View -->\n\n<div style={calculateMargin(mt, mr, mb, ml)} class=\"goa-checkbox\">\n <label\n class=\"goa-checkbox-label\"\n data-testid={testid}\n for={name}\n class:goa-checkbox--disabled={isDisabled}\n class:goa-checkbox--error={isError}\n >\n <div\n class=\"goa-checkbox-container\"\n class:goa-checkbox--selected={isChecked}\n >\n <input\n bind:this={_checkboxRef}\n id={name}\n {name}\n checked={isChecked}\n disabled={isDisabled}\n type=\"checkbox\"\n value={`${value}`}\n aria-label={arialabel || name}\n aria-describedby={description ? _descriptionId : null}\n on:change={onChange}\n />\n {#if isIndeterminate}\n <svg\n id=\"dashmark\"\n data-testid=\"dashmark\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 15 2\"\n >\n <rect width=\"15\" height=\"2\" />\n </svg>\n {:else if isChecked}\n <svg\n id=\"checkmark\"\n data-testid=\"checkmark\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 12.18\"\n >\n <path d=\"M5.09,9.64,1.27,5.82,0,7.09l5.09,5.09L16,1.27,14.73,0Z\" />\n </svg>\n {/if}\n </div>\n <div class=\"goa-checkbox-text\">\n <div class=\"label-text\" data-testid=\"text\">\n <slot>\n {text}\n </slot>\n </div>\n </div>\n </label>\n {#if $$slots.description || description}\n <div class=\"description-text\" id={_descriptionId} data-testid=\"description\">\n <slot name=\"description\"/>\n {description}\n </div>\n {/if}\n</div>\n\n<!-- Styles -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n display: block;\n }\n .goa-checkbox-label {\n display: flex;\n cursor: pointer;\n }\n\n .goa-checkbox {\n min-height: calc(3rem - 0.25rem);\n }\n .goa-checkbox input[type=\"checkbox\"] {\n /* hide the input, but still make it tab-able */\n opacity: 0;\n position: absolute;\n cursor: pointer;\n }\n\n .goa-checkbox-container {\n box-sizing: border-box;\n border: var(--goa-border-width-s) solid var(--goa-color-greyscale-700);\n border-radius: 2px;\n background-color: var(--goa-color-greyscale-white);\n height: 1.5rem;\n width: 1.5rem;\n display: flex;\n justify-content: center;\n padding: 3px;\n\n /* prevent squishing of checkbox */\n flex: 0 0 auto;\n }\n .goa-checkbox-container svg {\n fill: var(--goa-color-greyscale-white);\n }\n\n .goa-checkbox-container.goa-checkbox--selected {\n background-color: var(--goa-color-interactive-default);\n border: none;\n }\n\n .goa-checkbox-container.goa-checkbox--selected:hover {\n background-color: var(--goa-color-interactive-hover);\n }\n\n .goa-checkbox-container:hover {\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n border: none;\n }\n\n .goa-checkbox-container:focus-within,\n .goa-checkbox-container:focus,\n .goa-checkbox-container:active {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n border: var(--goa-border-width-s) solid var(--goa-color-greyscale-700);\n outline: none;\n }\n\n .goa-checkbox-container.goa-checkbox--selected:focus-within {\n background-color: var(--goa-color-interactive-default);\n border: none;\n }\n\n .goa-checkbox-text {\n padding-left: 0.5rem;\n user-select: none;\n font-weight: var(--goa-font-weight-regular);\n }\n\n /* Error state */\n .goa-checkbox--error .goa-checkbox-container,\n .goa-checkbox--error .goa-checkbox-container:hover {\n border: var(--goa-border-width-s) solid var(--goa-color-emergency-default);\n box-shadow: inset 0 0 0 1px var(--goa-color-emergency-default);\n background-color: var(--goa-color-greyscale-white);\n }\n\n .goa-checkbox--error .goa-checkbox-container:focus-within {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n background-color: var(--goa-color-greyscale-white);\n border: var(--goa-border-width-s) solid var(--goa-color-emergency-default);\n }\n\n .goa-checkbox--error .goa-checkbox-container svg {\n fill: var(--goa-color-emergency-default);\n }\n\n /* disabled state */\n .goa-checkbox--disabled .goa-checkbox-text {\n opacity: 40%;\n }\n\n .goa-checkbox--disabled .goa-checkbox-container,\n .goa-checkbox--disabled .goa-checkbox-container:hover {\n border: var(--goa-border-width-s) solid var(--goa-color-greyscale-400);\n box-shadow: none;\n opacity: 40%;\n }\n\n .goa-checkbox--disabled .goa-checkbox-container.goa-checkbox--selected,\n .goa-checkbox--disabled .goa-checkbox-container.goa-checkbox--selected:hover {\n border: none;\n background-color: var(--goa-color-interactive-default);\n }\n\n .goa-checkbox--disabled.goa-checkbox--error\n .goa-checkbox-container.goa-checkbox--selected {\n border: var(--goa-border-width-s) solid var(--goa-color-emergency-default);\n box-shadow: inset 0 0 0 1px var(--goa-color-emergency-default);\n }\n\n .goa-checkbox--disabled,\n input[type=\"checkbox\"][disabled]:hover {\n cursor: default;\n }\n\n .description-text {\n font: var(--goa-typography-body-xs);\n margin-left: var(--goa-space-xl);\n margin-top: var(--goa-space-2xs);\n }\n</style>\n","<svelte:options customElement=\"goa-chip\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { toBoolean } from \"../../common/utils\";\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n\n type ChipVariant = \"filter\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n export let leadingicon: GoAIconType | null = null;\n export let error: string = \"false\";\n export let deletable: string = \"false\";\n export let content: string;\n export let variant: ChipVariant;\n export let testid: string = \"\";\n\n let el: HTMLElement;\n let _hovering: boolean = false;\n\n // booleans\n let _error: boolean;\n let _deletable: boolean;\n\n $: _error = toBoolean(error);\n $: _deletable = toBoolean(deletable);\n\n function onDelete(e: Event) {\n el.dispatchEvent(\n new CustomEvent(\"_click\", { composed: true, bubbles: true }),\n );\n e.stopPropagation();\n }\n</script>\n\n<!-- HTML -->\n<!-- svelte-ignore a11y-no-noninteractive-tabindex -->\n<!-- svelte-ignore a11y-click-events-have-key-events -->\n<!-- svelte-ignore a11y-no-static-element-interactions -->\n<div\n bind:this={el}\n data-testid={testid}\n class=\"chip\"\n class:deletable={_deletable}\n class:error={_error}\n class:variant\n style={calculateMargin(mt, mr, mb, ml)}\n tabindex=\"0\"\n on:click={(e) => _deletable && onDelete(e)}\n on:mouseover={() => (_hovering = true)}\n on:mouseout={() => (_hovering = false)}\n on:focus={() => (_hovering = false)}\n on:blur={() => (_hovering = false)}\n>\n {#if leadingicon}\n <goa-icon class=\"leading-icon\" size=\"medium\" type={leadingicon} />\n {/if}\n <div class=\"text\">\n {content}\n </div>\n {#if _deletable}\n <goa-icon\n class=\"delete-icon\"\n size=\"medium\"\n theme=\"filled\"\n type=\"close-circle\"\n fillcolor={_error\n ? \"var(--goa-color-emergency-default)\"\n : _hovering\n ? \"var(--goa-color-interactive-hover)\"\n : \"var(--goa-color-greyscale-700)\"}\n opacity={_error ? (_hovering ? 1 : 0.5) : 1}\n />\n {/if}\n</div>\n\n<!-- Style -->\n<style>\n .leading-icon {\n margin-left: -0.25rem;\n }\n\n .chip {\n vertical-align: middle;\n align-items: center;\n background-color: var(--goa-color-greyscale-white);\n border-radius: 99px;\n border: 1px solid #949494; /* TODO: change this to a defined color value when one is defined in the design specs */\n box-sizing: border-box;\n color: var(--goa-color-text-default);\n display: inline-flex;\n flex-direction: row;\n font-size: var(--goa-font-size-3);\n font-weight: var(--goa-font-weight-regular);\n gap: 0.25rem;\n height: 2rem;\n justify-content: center;\n padding: 0 0.75rem;\n cursor: default;\n }\n\n .text {\n padding-bottom: var(\n --font-valign-fix,\n 0\n ); /* acumin font requires this to allow for vertical alignment */\n }\n\n .chip:focus {\n outline: 2px solid var(--goa-color-interactive-focus);\n background-color: var(--goa-color-greyscale-white);\n }\n\n .chip:hover {\n background-color: var(--goa-color-greyscale-200);\n }\n\n .deletable {\n cursor: pointer;\n }\n\n .delete-icon {\n margin-right: -0.25rem;\n }\n\n .error,\n .error:hover {\n background-color: var(--goa-color-emergency-light);\n }\n</style>\n","/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nexport { identity as linear } from '../internal/index.js';\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backInOut(t) {\n\tconst s = 1.70158 * 1.525;\n\tif ((t *= 2) < 1) return 0.5 * (t * t * ((s + 1) * t - s));\n\treturn 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backIn(t) {\n\tconst s = 1.70158;\n\treturn t * t * ((s + 1) * t - s);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backOut(t) {\n\tconst s = 1.70158;\n\treturn --t * t * ((s + 1) * t + s) + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceOut(t) {\n\tconst a = 4.0 / 11.0;\n\tconst b = 8.0 / 11.0;\n\tconst c = 9.0 / 10.0;\n\tconst ca = 4356.0 / 361.0;\n\tconst cb = 35442.0 / 1805.0;\n\tconst cc = 16061.0 / 1805.0;\n\tconst t2 = t * t;\n\treturn t < a\n\t\t? 7.5625 * t2\n\t\t: t < b\n\t\t? 9.075 * t2 - 9.9 * t + 3.4\n\t\t: t < c\n\t\t? ca * t2 - cb * t + cc\n\t\t: 10.8 * t * t - 20.52 * t + 10.72;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceInOut(t) {\n\treturn t < 0.5 ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceIn(t) {\n\treturn 1.0 - bounceOut(1.0 - t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circInOut(t) {\n\tif ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1);\n\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circIn(t) {\n\treturn 1.0 - Math.sqrt(1.0 - t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circOut(t) {\n\treturn Math.sqrt(1 - --t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicInOut(t) {\n\treturn t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicIn(t) {\n\treturn t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicOut(t) {\n\tconst f = t - 1.0;\n\treturn f * f * f + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticInOut(t) {\n\treturn t < 0.5\n\t\t? 0.5 * Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n\t\t: 0.5 *\n\t\t\t\tMath.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n\t\t\t\tMath.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n\t\t\t\t1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticIn(t) {\n\treturn Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticOut(t) {\n\treturn Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoInOut(t) {\n\treturn t === 0.0 || t === 1.0\n\t\t? t\n\t\t: t < 0.5\n\t\t? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n\t\t: -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoIn(t) {\n\treturn t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoOut(t) {\n\treturn t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadInOut(t) {\n\tt /= 0.5;\n\tif (t < 1) return 0.5 * t * t;\n\tt--;\n\treturn -0.5 * (t * (t - 2) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadIn(t) {\n\treturn t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadOut(t) {\n\treturn -t * (t - 2.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartInOut(t) {\n\treturn t < 0.5 ? +8.0 * Math.pow(t, 4.0) : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartIn(t) {\n\treturn Math.pow(t, 4.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartOut(t) {\n\treturn Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintInOut(t) {\n\tif ((t *= 2) < 1) return 0.5 * t * t * t * t * t;\n\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintIn(t) {\n\treturn t * t * t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintOut(t) {\n\treturn --t * t * t * t * t + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineInOut(t) {\n\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineIn(t) {\n\tconst v = Math.cos(t * Math.PI * 0.5);\n\tif (Math.abs(v) < 1e-14) return 1;\n\telse return 1 - v;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineOut(t) {\n\treturn Math.sin((t * Math.PI) / 2);\n}\n","import { cubicOut, cubicInOut, linear } from '../easing/index.js';\nimport { assign, split_css_unit, is_function } from '../internal/index.js';\n\n/**\n * Animates a `blur` filter alongside an element's opacity.\n *\n * https://svelte.dev/docs/svelte-transition#blur\n * @param {Element} node\n * @param {import('./public').BlurParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function blur(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst f = style.filter === 'none' ? '' : style.filter;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [value, unit] = split_css_unit(amount);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `opacity: ${target_opacity - od * u}; filter: ${f} blur(${u * value}${unit});`\n\t};\n}\n\n/**\n * Animates the opacity of an element from 0 to the current opacity for `in` transitions and from the current opacity to 0 for `out` transitions.\n *\n * https://svelte.dev/docs/svelte-transition#fade\n * @param {Element} node\n * @param {import('./public').FadeParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n\tconst o = +getComputedStyle(node).opacity;\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) => `opacity: ${t * o}`\n\t};\n}\n\n/**\n * Animates the x and y positions and the opacity of an element. `in` transitions animate from the provided values, passed as parameters to the element's default values. `out` transitions animate from the element's default values to the provided values.\n *\n * https://svelte.dev/docs/svelte-transition#fly\n * @param {Element} node\n * @param {import('./public').FlyParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fly(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [xValue, xUnit] = split_css_unit(x);\n\tconst [yValue, yUnit] = split_css_unit(y);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * xValue}${xUnit}, ${(1 - t) * yValue}${yUnit});\n\t\t\topacity: ${target_opacity - od * u}`\n\t};\n}\n\n/**\n * Slides an element in and out.\n *\n * https://svelte.dev/docs/svelte-transition#slide\n * @param {Element} node\n * @param {import('./public').SlideParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function slide(node, { delay = 0, duration = 400, easing = cubicOut, axis = 'y' } = {}) {\n\tconst style = getComputedStyle(node);\n\tconst opacity = +style.opacity;\n\tconst primary_property = axis === 'y' ? 'height' : 'width';\n\tconst primary_property_value = parseFloat(style[primary_property]);\n\tconst secondary_properties = axis === 'y' ? ['top', 'bottom'] : ['left', 'right'];\n\tconst capitalized_secondary_properties = secondary_properties.map(\n\t\t(e) => `${e[0].toUpperCase()}${e.slice(1)}`\n\t);\n\tconst padding_start_value = parseFloat(style[`padding${capitalized_secondary_properties[0]}`]);\n\tconst padding_end_value = parseFloat(style[`padding${capitalized_secondary_properties[1]}`]);\n\tconst margin_start_value = parseFloat(style[`margin${capitalized_secondary_properties[0]}`]);\n\tconst margin_end_value = parseFloat(style[`margin${capitalized_secondary_properties[1]}`]);\n\tconst border_width_start_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[0]}Width`]\n\t);\n\tconst border_width_end_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[1]}Width`]\n\t);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) =>\n\t\t\t'overflow: hidden;' +\n\t\t\t`opacity: ${Math.min(t * 20, 1) * opacity};` +\n\t\t\t`${primary_property}: ${t * primary_property_value}px;` +\n\t\t\t`padding-${secondary_properties[0]}: ${t * padding_start_value}px;` +\n\t\t\t`padding-${secondary_properties[1]}: ${t * padding_end_value}px;` +\n\t\t\t`margin-${secondary_properties[0]}: ${t * margin_start_value}px;` +\n\t\t\t`margin-${secondary_properties[1]}: ${t * margin_end_value}px;` +\n\t\t\t`border-${secondary_properties[0]}-width: ${t * border_width_start_value}px;` +\n\t\t\t`border-${secondary_properties[1]}-width: ${t * border_width_end_value}px;`\n\t};\n}\n\n/**\n * Animates the opacity and scale of an element. `in` transitions animate from an element's current (default) values to the provided values, passed as parameters. `out` transitions animate from the provided values to an element's default values.\n *\n * https://svelte.dev/docs/svelte-transition#scale\n * @param {Element} node\n * @param {import('./public').ScaleParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function scale(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst sd = 1 - start;\n\tconst od = target_opacity * (1 - opacity);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - sd * u});\n\t\t\topacity: ${target_opacity - od * u}\n\t\t`\n\t};\n}\n\n/**\n * Animates the stroke of an SVG element, like a snake in a tube. `in` transitions begin with the path invisible and draw the path to the screen over time. `out` transitions start in a visible state and gradually erase the path. `draw` only works with elements that have a `getTotalLength` method, like `<path>` and `<polyline>`.\n *\n * https://svelte.dev/docs/svelte-transition#draw\n * @param {SVGElement & { getTotalLength(): number }} node\n * @param {import('./public').DrawParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n\tlet len = node.getTotalLength();\n\tconst style = getComputedStyle(node);\n\tif (style.strokeLinecap !== 'butt') {\n\t\tlen += parseInt(style.strokeWidth);\n\t}\n\tif (duration === undefined) {\n\t\tif (speed === undefined) {\n\t\t\tduration = 800;\n\t\t} else {\n\t\t\tduration = len / speed;\n\t\t}\n\t} else if (typeof duration === 'function') {\n\t\tduration = duration(len);\n\t}\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_, u) => `\n\t\t\tstroke-dasharray: ${len};\n\t\t\tstroke-dashoffset: ${u * len};\n\t\t`\n\t};\n}\n\n/**\n * The `crossfade` function creates a pair of [transitions](https://svelte.dev/docs#template-syntax-element-directives-transition-fn) called `send` and `receive`. When an element is 'sent', it looks for a corresponding element being 'received', and generates a transition that transforms the element to its counterpart's position and fades it out. When an element is 'received', the reverse happens. If there is no counterpart, the `fallback` transition is used.\n *\n * https://svelte.dev/docs/svelte-transition#crossfade\n * @param {import('./public').CrossfadeParams & {\n * \tfallback?: (node: Element, params: import('./public').CrossfadeParams, intro: boolean) => import('./public').TransitionConfig;\n * }} params\n * @returns {[(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig, (node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig]}\n */\nexport function crossfade({ fallback, ...defaults }) {\n\t/** @type {Map<any, Element>} */\n\tconst to_receive = new Map();\n\t/** @type {Map<any, Element>} */\n\tconst to_send = new Map();\n\t/**\n\t * @param {Element} from_node\n\t * @param {Element} node\n\t * @param {import('./public').CrossfadeParams} params\n\t * @returns {import('./public').TransitionConfig}\n\t */\n\tfunction crossfade(from_node, node, params) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = (d) => Math.sqrt(d) * 30,\n\t\t\teasing = cubicOut\n\t\t} = assign(assign({}, defaults), params);\n\t\tconst from = from_node.getBoundingClientRect();\n\t\tconst to = node.getBoundingClientRect();\n\t\tconst dx = from.left - to.left;\n\t\tconst dy = from.top - to.top;\n\t\tconst dw = from.width / to.width;\n\t\tconst dh = from.height / to.height;\n\t\tconst d = Math.sqrt(dx * dx + dy * dy);\n\t\tconst style = getComputedStyle(node);\n\t\tconst transform = style.transform === 'none' ? '' : style.transform;\n\t\tconst opacity = +style.opacity;\n\t\treturn {\n\t\t\tdelay,\n\t\t\tduration: is_function(duration) ? duration(d) : duration,\n\t\t\teasing,\n\t\t\tcss: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${\n\t\t\t\tt + (1 - t) * dh\n\t\t\t});\n\t\t\t`\n\t\t};\n\t}\n\n\t/**\n\t * @param {Map<any, Element>} items\n\t * @param {Map<any, Element>} counterparts\n\t * @param {boolean} intro\n\t * @returns {(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig}\n\t */\n\tfunction transition(items, counterparts, intro) {\n\t\treturn (node, params) => {\n\t\t\titems.set(params.key, node);\n\t\t\treturn () => {\n\t\t\t\tif (counterparts.has(params.key)) {\n\t\t\t\t\tconst other_node = counterparts.get(params.key);\n\t\t\t\t\tcounterparts.delete(params.key);\n\t\t\t\t\treturn crossfade(other_node, node, params);\n\t\t\t\t}\n\t\t\t\t// if the node is disappearing altogether\n\t\t\t\t// (i.e. wasn't claimed by the other list)\n\t\t\t\t// then we need to supply an outro\n\t\t\t\titems.delete(params.key);\n\t\t\t\treturn fallback && fallback(node, params, intro);\n\t\t\t};\n\t\t};\n\t}\n\treturn [transition(to_send, to_receive, false), transition(to_receive, to_send, true)];\n}\n","export default function (_node: HTMLElement, opts: { enable: boolean }) {\n let toggledScrolling = false;\n\n function hideScrollbars() {\n if (!isScrollable()) {\n return;\n }\n const scrollbarWidth = calculateScrollbarWidth();\n toggledScrolling = true;\n document.body.style.overflow = \"hidden\";\n document.body.style.borderRight = `${scrollbarWidth}px solid #eee`;\n }\n\n function isScrollable() {\n return document.body.style.overflow !== \"hidden\";\n }\n\n function resetScrollbars() {\n if (!toggledScrolling) {\n return;\n }\n\n toggledScrolling = false;\n // need to perform on the next render cycle to allow the css transitions to take place\n setTimeout(() => {\n document.body.style.overflow = \"\";\n document.body.style.borderRight = \"\";\n }, 200);\n }\n\n function calculateScrollbarWidth() {\n // no scrollbars present\n if (document.body.clientHeight <= document.documentElement.clientHeight) {\n return 0;\n }\n\n const outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.overflow = \"scroll\";\n document.body.appendChild(outer);\n\n // Creating inner element and placing it in the container\n const inner = document.createElement(\"div\");\n outer.appendChild(inner);\n\n // Calculating difference between container's full width and the child width\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n\n // Removing temporary elements from the DOM\n outer.parentNode?.removeChild(outer);\n\n return scrollbarWidth;\n }\n\n if (opts.enable) {\n hideScrollbars();\n }\n\n return {\n update() {\n if (!opts.enable) {\n resetScrollbars();\n }\n },\n\n destroy() {\n resetScrollbars();\n },\n };\n}\n","<svelte:options customElement=\"goa-circular-progress\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { fade } from \"svelte/transition\";\n import noScroll from \"../../common/no-scroll\";\n import { typeValidator, toBoolean } from \"../../common/utils\";\n\n // Validators\n const [Variants, validateVariant] = typeValidator(\n \"Circular progress variant\",\n [\"fullscreen\", \"inline\"],\n );\n const [Sizes, validateSize] = typeValidator(\"Button size\", [\n \"small\",\n \"large\",\n ]);\n\n // Types\n type Size = (typeof Sizes)[number];\n type Variant = (typeof Variants)[number];\n\n // Optional\n export let variant: Variant = \"inline\";\n export let size: Size = \"large\";\n export let message: string = \"\";\n export let progress: number = -1;\n export let visible: string = \"false\";\n\n $: isVisible = toBoolean(visible);\n\n let spinnerSize: \"large\" | \"xlarge\";\n let fullscreen: boolean;\n let inline: boolean;\n\n onMount(async () => {\n validateVariant(variant);\n validateSize(size);\n spinnerSize = size === \"small\" ? \"large\" : \"xlarge\";\n fullscreen = variant === \"fullscreen\";\n inline = variant === \"inline\";\n });\n</script>\n\n<!-- HTML -->\n{#if isVisible}\n {#if fullscreen}\n <div\n transition:fade={{ duration: 300 }}\n use:noScroll={{ enable: true }}\n class:fullscreen\n >\n <goa-spinner size={spinnerSize} {progress} />\n {#if message}\n <div class=\"message\">{message}</div>\n {/if}\n </div>\n {:else if inline}\n <div class:inline class={\"spinner-\" + spinnerSize}>\n <goa-spinner size={spinnerSize} {progress} />\n {#if message}\n <div class=\"message\">{message}</div>\n {/if}\n </div>\n {/if}\n{/if}\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .fullscreen {\n position: fixed;\n inset: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n background-color: rgba(255, 255, 255, 0.9);\n }\n\n .inline {\n margin: 3.5rem;\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n\n .spinner-large .message {\n margin-top: 1.5rem;\n font-size: 1.2rem;\n }\n .spinner-xlarge .message {\n margin-top: 2rem;\n font-size: 1.5rem;\n }\n</style>\n","<svelte:options customElement=\"goa-container\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n import { typeValidator } from \"../../common/utils\";\n import { onMount } from \"svelte\";\n\n // Validator\n const [Types, validateType] = typeValidator(\"Container type\", [\n \"interactive\",\n \"info\",\n \"error\",\n \"success\",\n \"important\",\n \"non-interactive\",\n ]);\n const [Accents, validateAccent] = typeValidator(\"Container accent\", [\n \"thick\",\n \"thin\",\n \"filled\",\n ]);\n const [Paddings, validatePadding] = typeValidator(\"Container padding\", [\n \"relaxed\",\n \"compact\",\n ]);\n\n // Types\n type Type = (typeof Types)[number];\n type Accent = (typeof Accents)[number];\n type Padding = (typeof Paddings)[number];\n\n export let type: Type = \"interactive\";\n export let accent: Accent = \"filled\";\n export let padding: Padding = \"relaxed\";\n export let testid: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = \"m\";\n export let ml: Spacing = null;\n\n onMount(() => {\n validateType(type);\n validateAccent(accent);\n validatePadding(padding);\n });\n</script>\n\n<!-- HTML -->\n\n<div\n data-testid={testid}\n style={calculateMargin(mt, mr, mb, ml)}\n class={`\n goa-container\n goa-container--${type}\n padding--${padding}\n accent--${accent}\n `}\n>\n <header class=\"heading--{accent}\">\n <div class=\"title\">\n <slot name=\"title\" />\n </div>\n\n <div class=\"actions\">\n <slot name=\"actions\" />\n </div>\n </header>\n <div class=\"content\">\n <slot />\n </div>\n</div>\n\n<!-- Style -->\n\n<style> \n :host {\n display: flex;\n flex: 1 1 auto;\n }\n \n .goa-container {\n box-sizing: border-box;\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n }\n\n .goa-container * {\n box-sizing: border-box;\n }\n\n header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-weight: 700;\n\n font-size: var(--goa-font-size-4);\n border-width: 1px;\n border-style: solid;\n border-top-left-radius: var(--goa-border-radius-m);\n border-top-right-radius: var(--goa-border-radius-m);\n }\n\n .content {\n border-bottom: 1px solid var(--goa-color-greyscale-200);\n border-left: 1px solid var(--goa-color-greyscale-200);\n border-right: 1px solid var(--goa-color-greyscale-200);\n border-bottom-left-radius: var(--goa-border-radius-m);\n border-bottom-right-radius: var(--goa-border-radius-m);\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n }\n\n .content :global(::slotted(*:last-child)) {\n margin-bottom: 0 !important;\n }\n\n /* Background Colour */\n\n .goa-container--non-interactive.accent--filled .content {\n border-color: var(--goa-color-greyscale-200);\n background-color: var(--goa-color-greyscale-100);\n }\n .goa-container--important.accent--filled .content {\n border-color: var(--goa-color-warning-default);\n background-color: var(--goa-color-warning-background);\n }\n .goa-container--error.accent--filled .content {\n border-color: var(--goa-color-emergency-default);\n background-color: var(--goa-color-emergency-background);\n }\n .goa-container--success.accent--filled .content {\n border-color: var(--goa-color-success-default);\n background-color: var(--goa-color-success-background);\n }\n .goa-container--info.accent--filled .content {\n border-color: var(--goa-color-info-default);\n background-color: var(--goa-color-info-background);\n }\n\n .title,\n .actions {\n padding: 0.5rem 0;\n }\n\n /* Padding variants */\n\n .padding--relaxed header {\n padding: 0 1.5rem;\n }\n\n .padding--relaxed .content {\n padding: 1.5rem;\n }\n\n .padding--compact header,\n .padding--compact .content {\n padding: 0 1rem;\n }\n\n .padding--compact header {\n padding: 0 1rem;\n }\n\n .padding--compact .content {\n padding: 1rem;\n }\n\n /* Override padding in small screens to the compact value */\n @container self (--mobile) {\n .padding--relaxed header {\n padding: 0 1rem;\n }\n .padding--relaxed .content {\n padding: 1rem;\n }\n }\n\n /* colors */\n\n .goa-container--non-interactive header {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-200);\n color: var(--goa-color-greyscale-black);\n }\n\n .goa-container--interactive header {\n background-color: var(--goa-color-brand-default);\n border-color: var(--goa-color-brand-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .goa-container--info header {\n background-color: var(--goa-color-info-default);\n border-color: var(--goa-color-info-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .goa-container--error header {\n /* TODO: need a better color name here */\n background-color: var(--goa-color-emergency-default);\n border-color: var(--goa-color-emergency-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .goa-container--success header {\n /* TODO: need a better color name here */\n background-color: var(--goa-color-success-default);\n border-color: var(--goa-color-success-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .goa-container--important header {\n background-color: var(--goa-color-warning-default);\n border-color: var(--goa-color-warning-default);\n color: var(--goa-color-greyscale-white);\n }\n\n /* Sizes */\n .heading--thick {\n padding: 0.5rem 1.5rem;\n max-height: 3rem;\n min-height: 1rem;\n }\n\n .heading--thick .title {\n line-height: 2rem;\n }\n\n .heading--thin {\n height: 0.5rem;\n }\n\n .heading--filled {\n display: none;\n }\n .heading--filled ~ .content {\n border-top: 1px solid var(--goa-color-greyscale-200);\n border-top-left-radius: var(--goa-border-radius-m);\n border-top-right-radius: var(--goa-border-radius-m);\n }\n\n .heading--thin .title,\n .heading--thin .actions {\n display: none;\n }\n\n .actions {\n display: flex;\n align-items: center;\n }\n</style>\n","<svelte:options customElement=\"goa-date-picker\" />\n\n<script lang=\"ts\">\n import { afterUpdate, onMount } from \"svelte\";\n import {\n addDays,\n addMonths,\n addYears,\n format,\n isValid,\n startOfDay,\n } from \"date-fns\";\n import type { Spacing } from \"../../common/styling\";\n\n type DateValue = {\n type: \"date\";\n value: Date;\n };\n\n export let value: string = \"\";\n export let min: string = \"\";\n export let max: string = \"\";\n export let relative: string = \"false\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // re-initializes the date if the value is changed externally\n // $: value && initDate();\n\n let _oldValue: Date;\n let _rootEl: Element;\n let _date: Date | null;\n let _showPopover: boolean = false;\n\n onMount(async () => {\n await initDate();\n });\n\n // FIXME: This breaks keyboard entry\n afterUpdate(() => {\n // @ts-expect-error: string / int comparison is performed here\n if (_oldValue != value) {\n initDate();\n }\n });\n\n async function initDate() {\n _date = (value && startOfDay(new Date(value))) || null;\n if (value && !isValid(_date)) {\n console.error(`${value} is not a valid date`);\n }\n }\n\n function onCalendarChange(e: CustomEvent) {\n _date = e.detail.value;\n if (_date) {\n value = _date.toISOString();\n hideCalendar();\n dispatchValue(_date);\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n function dispatchValue(date: Date | null) {\n if (!date) return;\n _oldValue = date;\n _rootEl.dispatchEvent(\n new CustomEvent<DateValue>(\"_change\", {\n composed: true,\n bubbles: true,\n detail: {\n type: \"date\",\n value: date,\n },\n }),\n );\n }\n\n function formatDate(d: Date | string | null): string {\n if (!d) return \"\";\n\n if (typeof d === \"string\") {\n return format(new Date(d), \"PPP\");\n }\n return format(d, \"PPP\");\n }\n\n function hideCalendar() {\n _showPopover = false;\n }\n\n function showCalendar() {\n _showPopover = true;\n }\n\n function handleKeyDown(e: KeyboardEvent) {\n if ([\"Space\", \"Enter\"].includes(e.key)) {\n showCalendar();\n return;\n }\n\n // in the key event handling below the first line `_date ||= ...` is to initialize the date, if\n // it hasn't yet been set to 1 unit opposite of what the keybinding does ex. if ArrowDown is\n // clicked, which moves the datepicker one week ahead, the date is initialize one week before.\n // This is to allow the starting date displayed to be that of today no matter what key is\n // pressed.\n\n switch (e.key) {\n case \"ArrowLeft\":\n _date ||= addDays(new Date(), 1);\n _date = addDays(_date, -1);\n break;\n case \"ArrowRight\":\n _date ||= addDays(new Date(), -1);\n _date = addDays(_date, 1);\n break;\n case \"ArrowDown\":\n _date ||= addDays(new Date(), -7);\n _date = addDays(_date, 7);\n break;\n case \"ArrowUp\":\n _date ||= addDays(new Date(), 7);\n _date = addDays(_date, -7);\n break;\n case \"PageUp\":\n _date ||= e.shiftKey\n ? addYears(new Date(), 1)\n : addMonths(new Date(), 1);\n _date = e.shiftKey ? addYears(_date, -1) : addMonths(_date, -1);\n break;\n case \"PageDown\":\n _date ||= e.shiftKey\n ? addYears(new Date(), -1)\n : addMonths(new Date(), -1);\n _date = e.shiftKey ? addYears(_date, 1) : addMonths(_date, 1);\n break;\n default:\n return;\n }\n\n dispatchValue(_date);\n\n e.preventDefault();\n e.stopPropagation();\n }\n</script>\n\n<goa-popover\n bind:this={_rootEl}\n tabindex=\"-1\"\n {relative}\n {mt}\n {mb}\n {ml}\n {mr}\n open={_showPopover}\n on:_close={() => dispatchValue(_date)}\n>\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <goa-input\n slot=\"target\"\n readonly=\"true\"\n trailingicon=\"calendar\"\n value={formatDate(_date)}\n on:click={showCalendar}\n on:keydown={handleKeyDown}\n />\n <goa-calendar\n {value}\n {min}\n {max}\n bordered=\"false\"\n on:_change={onCalendarChange}\n />\n</goa-popover>\n","<svelte:options customElement=\"goa-details\" />\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { calculateMargin } from \"../../common/styling\";\n import { toBoolean, validateRequired} from \"../../common/utils\";\n import type { Spacing } from \"../../common/styling\";\n\n export let heading: string;\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n export let open: string = \"false\";\n\n let _isMouseOver: boolean = false\n let _summaryEl: HTMLElement;\n let _detailsEl: HTMLElement;\n\n $: _isOpen = toBoolean(open);\n\n\n onMount(() => {\n validateRequired(\"Details\", { heading });\n\n _summaryEl.addEventListener(\"mouseover\", () => {\n _isMouseOver = true;\n });\n\n _summaryEl.addEventListener(\"mouseout\", () => {\n _isMouseOver = false;\n });\n });\n</script>\n\n<style>\n :host {\n font-family: var(--goa-font-family-sans);\n }\n\n details {\n max-width: 75ch;\n position: relative;\n }\n\n details :global(::slotted(*)) {\n font: var(--goa-typography-body-m);\n }\n\n summary {\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n cursor: pointer;\n list-style: none;\n display: flex;\n align-items: flex-start;\n }\n\n goa-icon {\n /* transition: transform 80ms ease; */\n position: absolute;\n }\n\n details[open] goa-icon {\n transform: translateX(-1px) rotate(90deg);\n top: 0.75rem;\n }\n\n /* Hide native icon on iOS */\n details summary::-webkit-details-marker {\n display:none;\n }\n\n summary {\n border-radius: var(--goa-border-radius-m);\n }\n summary:focus,\n summary:active {\n outline: 3px solid var(--goa-color-interactive-focus);\n border-radius: var(--goa-border-radius-m);\n color: var(--goa-color-interactive-hover);\n background-color: var(--goa-color-greyscale-100);\n }\n summary:hover {\n background-color: var(--goa-color-greyscale-100);\n }\n\n summary span {\n margin-left: 2rem;\n text-decoration: underline;\n color: var(--goa-color-interactive-default);\n padding-bottom: var(--font-valign-fix);\n line-height: var(--goa-line-height-3);\n }\n summary:hover span {\n color: var(--goa-color-interactive-hover);\n }\n\n .content {\n border-left: 4px solid var(--goa-color-greyscale-200);\n padding: 1rem;\n margin-left: 1.1rem;\n margin-bottom: var(--goa-space-s);\n }\n\n .content :global(::slotted(p:last-child)) {\n margin-bottom: 0 !important;\n }\n</style>\n\n<details\n bind:this={_detailsEl}\n open={_isOpen}\n on:toggle={({target}) => open = `${target.open}`}\n style={calculateMargin(mt, mr, mb, ml)}>\n <summary bind:this={_summaryEl}>\n <goa-icon\n mt=\"1\"\n mr=\"2\"\n type=\"chevron-forward\"\n fillcolor={_isMouseOver ? \"var(--goa-color-interactive-hover)\" : \"var(--goa-color-interactive-default)\"}\n />\n <span>{heading}</span>\n </summary>\n <div class=\"content\">\n <slot />\n </div>\n</details>\n\n","<svelte:options customElement=\"goa-divider\" />\n\n<script lang=\"ts\">\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n\n export let testid: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n</script>\n\n<hr data-testid={testid} style={calculateMargin(mt, mr, mb, ml)} />\n\n<style>\n hr {\n padding: 0;\n margin: 0;\n height: 1px;\n background-color: var(--goa-color-greyscale-200);\n border: none;\n }\n</style>\n","<svelte:options customElement=\"goa-dropdown\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { fromBoolean, toBoolean } from \"../../common/utils\";\n import { calculateMargin } from \"../../common/styling\";\n\n interface Option {\n label: string;\n value: string;\n filter: string;\n }\n\n interface EventHandler {\n handleKeyUp: (e: KeyboardEvent) => void;\n handleKeyDown: (e: KeyboardEvent) => void;\n }\n\n // Props\n\n export let name: string;\n export let arialabel: string = \"\";\n export let arialabelledby: string = \"\";\n export let value: string = \"\";\n export let filterable: string = \"false\";\n export let leadingicon: GoAIconType | null = null;\n export let maxheight: string = \"276px\";\n export let placeholder: string = \"\";\n export let width: string = \"\";\n export let disabled: string = \"false\";\n export let error: string = \"false\";\n export let multiselect: string = \"false\";\n export let native: string = \"false\";\n export let relative: string = \"false\";\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n //\n // Private\n //\n\n let _options: Option[] = [];\n let _isMenuVisible = false;\n let _highlightedIndex: number = -1;\n let _width: string;\n\n let _wrapperEl: HTMLElement;\n let _rootEl: HTMLElement;\n let _menuEl: HTMLElement;\n let _selectEl: HTMLSelectElement;\n let _inputEl: HTMLInputElement;\n let _eventHandler: EventHandler;\n\n let _isDirty: boolean = false;\n let _filteredOptions: Option[] = [];\n let _values: string[] = [];\n\n //\n // Reactive\n //\n\n $: _disabled = toBoolean(disabled);\n $: _error = toBoolean(error);\n $: _multiselect = toBoolean(multiselect);\n $: _native = toBoolean(native);\n $: _filterable = toBoolean(filterable) && !_native;\n\n // To keep track of active descendant for the accessibility\n $: _activeDescendantId = _filteredOptions[_highlightedIndex]\n ? _filteredOptions[_highlightedIndex].value\n : undefined;\n\n $: {\n _values = parseValues(value);\n // updating _inputEl.value is done within seperate function\n // to prevent unwanted reactive updates.\n setDisplayedValue();\n }\n\n //\n // Hooks\n //\n\n onMount(async () => {\n await tick();\n _eventHandler = _filterable\n ? new ComboboxKeyUpHandler(_inputEl)\n : new DropdownKeyUpHandler(_inputEl);\n\n // the following is required to appease the unit testing gods in that they don't respond\n // to the slotchange event\n _options = getOptions();\n\n if (!_native) {\n _inputEl.value = _options.find((o) => o.value === value)?.label ?? \"\";\n\n if (width) {\n _width = width;\n if (width.endsWith(\"%\")) {\n calculatePercentWidth();\n } else {\n _width = width;\n }\n }\n\n // This is only here to allow the tests to pass :(\n if (!width && _options.length > 0) {\n _width = getLongestChildWidth(_options);\n }\n }\n\n syncFilteredOptions();\n\n // watch for DOM changes within the slot => dynamic binding\n const slot = _rootEl.querySelector(\"slot\");\n slot?.addEventListener(\"slotchange\", () => {\n if (!_rootEl) return;\n\n _options = getOptions();\n syncFilteredOptions();\n\n if (!width) {\n _width = getLongestChildWidth(_options);\n }\n\n if (!_native) {\n setDisplayedValue();\n }\n });\n });\n\n //\n // Functions\n //\n\n function calculatePercentWidth() {\n const rootWidth = _wrapperEl.getBoundingClientRect()?.width;\n const percent = parseInt(width) / 100;\n _width = percent * rootWidth + \"px\";\n }\n\n // prevents unwanted reactive updates.\n function setDisplayedValue() {\n if (_inputEl) {\n const option = _options.find((o) => o.value == _values[0]); // possible string number comparison\n _inputEl.value = option?.label ?? option?.value ?? \"\";\n }\n }\n\n // parse and convert values to strings to avoid later type comparison issues\n function parseValues(selectedValue: string) {\n let rawValue: string[];\n try {\n rawValue = JSON.parse(selectedValue || `[\"\"]`);\n } catch (e) {\n rawValue = [selectedValue];\n }\n const rawValues = typeof rawValue === \"object\" ? rawValue : [rawValue];\n // convert all values to strings to avoid later type comparison issues\n return rawValues.map((val: unknown) => `${val}`);\n }\n\n function getChildren(): Element[] {\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n // default\n return slot.assignedElements();\n }\n // unit tests\n const el = _native ? _selectEl : _rootEl;\n // @ts-expect-error\n return [...el.children] as Element[];\n }\n\n // Create a list of the options based on the children within the slot\n // The children don't have to be goa-dropdown-item elements. Any child element\n // work as long as it has a value and label content\n function getOptions(): Option[] {\n return getChildren()\n .filter((child: Element) => child.tagName === \"GOA-DROPDOWN-ITEM\")\n .map((el: Element) => {\n const option = el as unknown as Option;\n const value = el.getAttribute(\"value\") || option.value || \"\";\n const label =\n el.getAttribute(\"label\") || option.label || el.innerHTML || value;\n const filter = el.getAttribute(\"filter\") || label || value || \"\";\n\n return { value, label, filter } as Option;\n });\n }\n\n // compute the required width to ensure all children fit\n function getLongestChildWidth(options: Option[]): string {\n // set width to longest item\n const optionsWidth = options\n .map((option: Option) => {\n const label = `${option.label}` || `${option.value}` || \"\";\n return label.length;\n })\n .sort((a: number, b: number) => (a > b ? 1 : -1))\n .pop();\n\n // longest one defines the width\n let maxWidth = Math.max(optionsWidth || 0, placeholder.length) + 8;\n\n // compensate for icon width\n if (leadingicon) {\n maxWidth += 2;\n }\n\n return `${maxWidth}ch`;\n }\n\n // Change the direction of highlighted options for Arrow up and down\n function changeHighlightedOption(offset: number) {\n let index = _highlightedIndex + offset;\n let items = !_filteredOptions?.length ? _options : _filteredOptions;\n if (items.length === 0) return;\n\n // if index is out of scope\n if (index < 0) {\n index = _filterable ? items.length - 1 : 0;\n } else if (index >= items.length) {\n index = _filterable ? 0 : items.length - 1;\n }\n _highlightedIndex = index;\n scrollToOption(index);\n }\n\n function scrollToOption(index: number) {\n const liNode = _menuEl.querySelector(\n `li[data-index=\"${index}\"]`,\n ) as HTMLLIElement;\n if (!liNode) return;\n\n const liOptionRect = liNode.getBoundingClientRect();\n const ulRect = _menuEl.getBoundingClientRect();\n const isInView =\n liOptionRect.top >= 0 &&\n liOptionRect.left >= 0 &&\n liOptionRect.bottom <= ulRect.height &&\n liOptionRect.right <= ulRect.width;\n\n if (isInView) return;\n\n liNode.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n }\n\n function syncFilteredOptions() {\n _filteredOptions = _filterable\n ? _options.filter((option) => isFilterMatch(option, _inputEl.value))\n : _options;\n }\n\n function showMenu() {\n if (_disabled) {\n return;\n }\n\n setTimeout(() => {\n syncFilteredOptions();\n _isMenuVisible = true;\n _inputEl?.focus();\n }, 0);\n }\n\n function hideMenu() {\n _isMenuVisible = false;\n }\n\n function isFilterMatch(option: Option, filter: string) {\n if (filter.length === 0) return true;\n\n let value = option.filter || option.label || option.value;\n value = value.toLowerCase();\n filter = filter.toLowerCase();\n\n return value.startsWith(filter) || value.includes(\" \" + filter);\n }\n\n function dispatchValue(value?: string) {\n const detail = _multiselect\n ? { name, values: [value, ..._values] }\n : { name, value: value };\n\n setTimeout(() => {\n _rootEl.dispatchEvent(\n new CustomEvent(\"_change\", { composed: true, detail }),\n );\n _isDirty = false;\n }, 1);\n }\n\n //\n // Event handlers\n //\n\n function onSelect(option: Option) {\n if (_disabled) return;\n if (!_native) {\n _isDirty = true;\n hideMenu();\n _inputEl.value = option.label;\n }\n dispatchValue(option.value);\n }\n\n /**\n * When website autofill value without user keyboard\n */\n async function onChange() {\n await tick();\n syncFilteredOptions();\n if (_filteredOptions.length === 1) {\n dispatchValue(_filteredOptions[0].value);\n setTimeout(() => {\n hideMenu();\n }, 100);\n }\n }\n\n function onInputKeyUp(e: KeyboardEvent) {\n if (_disabled) return;\n _eventHandler.handleKeyUp(e);\n }\n\n function onInputKeyDown(e: KeyboardEvent) {\n if (_disabled) return;\n _eventHandler.handleKeyDown(e);\n }\n\n function onClearIconKeyDown(e: KeyboardEvent) {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n reset();\n showMenu();\n }\n }\n\n function onClearIconClick(e: Event) {\n reset();\n showMenu();\n e.stopPropagation();\n }\n\n function onNativeSelect(e: Event) {\n const target = e.currentTarget as HTMLSelectElement;\n const option = _options[target.selectedIndex];\n onSelect(option);\n }\n\n function reset() {\n if (_disabled) return;\n\n _activeDescendantId = undefined;\n _highlightedIndex = -1;\n _inputEl.value = \"\";\n _isDirty = false;\n syncFilteredOptions();\n\n dispatchValue(\"\");\n }\n\n function onChevronClick(e: Event) {\n showMenu();\n e.stopPropagation();\n }\n\n class ComboboxKeyUpHandler implements EventHandler {\n constructor(private input: HTMLInputElement) {\n input.addEventListener(\"blur\", async (e) => {\n if (!_isDirty) return;\n if (!_filterable) return;\n\n const input = e.target as HTMLInputElement;\n const selectedOption = _filteredOptions.find(\n (o) => o.label === input.value,\n );\n\n if (!selectedOption) {\n dispatchValue(\"\");\n input.value = \"\";\n }\n });\n }\n\n onEscape(e: KeyboardEvent) {\n reset();\n _inputEl.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n\n onEnter(e: KeyboardEvent) {\n const option = _filteredOptions[_highlightedIndex];\n if (option) {\n onSelect(option);\n }\n\n if (_inputEl.value) {\n hideMenu();\n } else {\n showMenu();\n }\n\n e.stopPropagation();\n }\n\n onArrow(e: KeyboardEvent, direction: \"up\" | \"down\") {\n if (!_isMenuVisible) showMenu();\n changeHighlightedOption(direction === \"up\" ? -1 : 1);\n e.stopPropagation();\n }\n\n onTab(_: KeyboardEvent) {\n const matchedOption = _filteredOptions.find(\n (option) =>\n option.label.toLowerCase() === this.input.value.toLowerCase(),\n );\n if (matchedOption) {\n onSelect(matchedOption);\n }\n hideMenu();\n }\n\n onKeyUp(_: KeyboardEvent) {\n showMenu();\n _isDirty = true;\n }\n\n handleKeyUp(e: KeyboardEvent) {\n switch (e.key) {\n case \"Enter\":\n this.onEnter(e);\n break;\n case \"ArrowUp\":\n this.onArrow(e, \"up\");\n break;\n case \"ArrowDown\":\n this.onArrow(e, \"down\");\n break;\n case \"Home\":\n this.input.setSelectionRange(0, 0);\n break;\n case \"End\":\n this.input.setSelectionRange(\n this.input.value.length,\n this.input.value.length,\n );\n break;\n default:\n this.onKeyUp(e);\n break;\n }\n }\n\n handleKeyDown(e: KeyboardEvent) {\n switch (e.key) {\n case \"Escape\":\n this.onEscape(e);\n break;\n case \"Tab\":\n this.onTab(e);\n break;\n }\n }\n }\n\n class DropdownKeyUpHandler implements EventHandler {\n constructor(_input: HTMLInputElement) {}\n\n onEnter(e: KeyboardEvent) {\n if (_isMenuVisible) {\n const option = _filteredOptions[_highlightedIndex];\n if (option) {\n onSelect(option);\n }\n hideMenu();\n } else {\n showMenu();\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n\n onArrow(e: KeyboardEvent, direction: \"up\" | \"down\") {\n if (!_isMenuVisible) showMenu();\n changeHighlightedOption(direction === \"up\" ? -1 : 1);\n e.preventDefault();\n e.stopPropagation();\n }\n\n handleKeyDown(e: KeyboardEvent) {\n switch (e.key) {\n case \" \":\n case \"Enter\":\n this.onEnter(e);\n break;\n case \"ArrowUp\":\n this.onArrow(e, \"up\");\n break;\n case \"ArrowDown\":\n this.onArrow(e, \"down\");\n break;\n case \"Tab\":\n hideMenu();\n break;\n }\n\n return false;\n }\n\n handleKeyUp(e: KeyboardEvent) {\n switch (e.key) {\n case \"ArrowUp\":\n case \"ArrowDown\":\n case \" \":\n case \"Enter\":\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }\n</script>\n\n<!-- Template -->\n<div bind:this={_wrapperEl}>\n <div\n data-testid={`${name}-dropdown`}\n class=\"dropdown\"\n class:dropdown-native={_native}\n style={`\n ${calculateMargin(mt, mr, mb, ml)};\n --width: ${_width};\n `}\n bind:this={_rootEl}\n >\n {#if _native}\n <select\n {name}\n aria-label={arialabel || name}\n aria-labelledby={arialabelledby}\n class:error={_error}\n disabled={_disabled}\n id={name}\n bind:this={_selectEl}\n on:change={onNativeSelect}\n >\n <slot />\n {#each _options as option}\n <option selected={value === option.value} value={option.value}>\n {option.label}\n </option>\n {/each}\n </select>\n {:else}\n <!-- list and filter -->\n <slot />\n <goa-popover\n {disabled}\n {relative}\n data-testid=\"option-list\"\n maxwidth={_width}\n open={_isMenuVisible}\n padded=\"false\"\n tabindex=\"-1\"\n width={_width}\n on:_open={showMenu}\n on:_close={hideMenu}\n >\n <div\n slot=\"target\"\n class=\"dropdown-input-group\"\n class:dropdown-input-group--disabled={_disabled}\n class:error={_error}\n >\n {#if leadingicon}\n <goa-icon\n class=\"dropdown-input--leading-icon\"\n data-testid=\"leading-icon\"\n type={leadingicon}\n />\n {/if}\n\n <input\n style={`\n cursor: ${!_disabled ? (_filterable ? \"auto\" : \"pointer\") : \"default\"};\n `}\n data-testid=\"input\"\n bind:this={_inputEl}\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n aria-autocomplete=\"list\"\n aria-controls={`menu-${name}`}\n aria-expanded={_isMenuVisible}\n aria-label={arialabel || name}\n aria-labelledby={arialabelledby}\n id={name}\n aria-activedescendant={_activeDescendantId}\n aria-disabled={_disabled}\n aria-owns={_isMenuVisible ? `menu-${name}` : undefined}\n aria-haspopup=\"listbox\"\n disabled={_disabled}\n readonly={!_filterable}\n {placeholder}\n {name}\n on:keydown={onInputKeyDown}\n on:keyup={onInputKeyUp}\n on:change={onChange}\n />\n\n {#if _inputEl?.value && _filterable}\n <goa-icon\n id={name}\n tabindex={_disabled ? -1 : 0}\n role=\"button\"\n arialabel={`clear ${arialabel || name}`}\n ariacontrols={`menu-${name}`}\n ariaexpanded={fromBoolean(_isMenuVisible)}\n on:click|stopPropagation={onClearIconClick}\n on:keydown={onClearIconKeyDown}\n class=\"dropdown-icon--clear\"\n class:disabled={_disabled}\n size=\"medium\"\n type=\"close\"\n />\n {:else}\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <goa-icon\n role=\"button\"\n tabindex=\"-1\"\n id={name}\n arialabel={arialabel || name}\n ariacontrols={`menu-${name}`}\n ariaexpanded={fromBoolean(_isMenuVisible)}\n class=\"dropdown-icon--arrow\"\n size=\"medium\"\n type={_isMenuVisible ? \"chevron-up\" : \"chevron-down\"}\n on:click={onChevronClick}\n />\n {/if}\n </div>\n\n <!--Menu-->\n <ul\n id={`menu-${name}`}\n role=\"listbox\"\n tabindex=\"-1\"\n data-testid=\"dropdown-menu\"\n bind:this={_menuEl}\n aria-label={arialabel || name}\n aria-labelledby={arialabelledby}\n style={`\n outline: none;\n overflow-y: auto;\n max-height: ${maxheight};\n `}\n >\n {#each _filteredOptions as option, index (index)}\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <li\n id={option.value}\n aria-selected={_inputEl.value === (option.label || option.value)}\n class=\"dropdown-item\"\n class:dropdown-item--highlighted={index === _highlightedIndex}\n class:selected={_inputEl.value === (option.label || option.value)}\n data-index={index}\n data-testid={`dropdown-item-${option.value}`}\n data-value={option.value}\n role=\"option\"\n style=\"display: block\"\n on:click={() => onSelect(option)}\n >\n {option.label || option.value}\n </li>\n {:else}\n {#if _filterable}\n <li class=\"dropdown-item\" data-testid=\"dropdown-item-not-found\">\n No matches found\n </li>\n {/if}\n {/each}\n </ul>\n </goa-popover>\n {/if}\n </div>\n</div>\n\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n .dropdown {\n cursor: pointer;\n width: var(--width, 100%);\n }\n\n @media (--mobile) {\n .dropdown {\n width: 100%;\n }\n }\n\n @media (--not-mobile) {\n .dropdown {\n width: var(--width, 100%);\n }\n }\n\n .dropdown-input-group {\n box-sizing: border-box;\n outline: none;\n transition: box-shadow 0.1s ease-in;\n border: 1px solid var(--goa-color-greyscale-700);\n border-radius: var(--goa-border-radius-m);\n display: inline-flex;\n align-items: stretch;\n\n /* The vertical align fixes inputs with a leading icon to not be vertically offset */\n vertical-align: middle;\n background-color: var(--goa-color-greyscale-white);\n cursor: pointer;\n width: var(--width, 100%);\n }\n\n .dropdown-input-group:hover {\n border-color: var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n }\n\n .dropdown-input-group:focus,\n .dropdown-input-group:focus-within {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n }\n\n @container not (--mobile) {\n .dropdown-input-group {\n width: var(--width);\n }\n }\n\n .dropdown-input-group.error,\n .dropdown-input-group.error:hover {\n border: 2px solid var(--goa-color-interactive-error);\n box-shadow: 0 0 0 1px var(--goa-color-interactive-error);\n }\n\n .dropdown-input-group.error:focus-within,\n .dropdown-input-group.error:focus {\n border: 2px solid var(--goa-color-interactive-error);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n }\n\n .dropdown-icon--arrow,\n .dropdown-icon--clear {\n margin-right: var(--goa-space-s);\n }\n\n .dropdown-icon--clear:focus:not(.disabled),\n .dropdown-icon--clear:active:not(.disabled) {\n color: var(--goa-color-interactive-focus);\n outline: none;\n }\n\n .dropdown-input--leading-icon {\n margin-left: 0.75rem;\n }\n\n .dropdown-input--leading-icon + input {\n padding-left: 0.5rem;\n }\n\n input {\n display: inline-block;\n color: var(--goa-color-text-default);\n font-size: var(--goa-font-size-4);\n padding: var(--goa-space-xs);\n padding-left: var(--goa-space-s);\n line-height: calc(40px - calc(var(--goa-space-xs) * 2));\n background-color: transparent;\n width: 100%;\n flex: 1 1 auto;\n font-family: var(--goa-font-family-sans);\n z-index: 1;\n }\n\n input,\n input:focus,\n input:hover,\n input:active {\n outline: none;\n border: none;\n }\n\n input[aria-disabled=\"true\"] {\n color: var(--goa-color-text-secondary);\n }\n\n .dropdown-input-group--disabled,\n .dropdown-input-group--disabled:hover,\n .dropdown-input-group--disabled:active,\n .dropdown-input-group--disabled:focus {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-200) !important;\n cursor: default;\n box-shadow: none !important;\n }\n\n /** menu **/\n ul[role=\"listbox\"] {\n border-radius: var(--goa-border-radius-m);\n padding: 0;\n margin: 0;\n }\n\n /* dropdown items */\n\n .dropdown-item {\n margin: 0;\n padding: 0.5rem;\n cursor: pointer;\n color: var(--goa-color-greyscale-black);\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .dropdown-item:hover,\n .dropdown-item--highlighted {\n background: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n }\n\n .dropdown-item[aria-selected=\"true\"] {\n background: var(--goa-color-interactive-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .dropdown-item[aria-selected=\"true\"]:hover,\n .dropdown-item[aria-selected=\"true\"].dropdown-item--highlighted {\n background: var(--goa-color-interactive-hover);\n color: var(--goa-color-greyscale-white);\n }\n\n /* Native styling */\n .dropdown-native {\n position: relative;\n border: 1px solid var(--goa-color-greyscale-700);\n border-radius: var(--goa-border-radius-m);\n background-color: var(--goa-color-greyscale-white);\n transition: box-shadow 0.1s ease-in;\n }\n\n .dropdown-native:has(select:disabled) {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-200);\n box-shadow: none;\n color: var(--goa-color-text-secondary);\n cursor: default;\n }\n\n .dropdown-native:has(select.error) {\n border: 2px solid var(--goa-color-interactive-error);\n }\n\n .dropdown-native:hover {\n border-color: var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n }\n\n select {\n border: none;\n font: var(--goa-font-family-sans);\n background-color: transparent;\n color: var(--goa-color-text-default);\n font-size: var(--goa-font-size-4);\n appearance: none;\n padding: calc(var(--goa-space-xs) + 1px);\n padding-left: var(--goa-space-s);\n padding-right: 3rem;\n outline: none;\n width: 100%;\n }\n\n .dropdown-native::after {\n content: \"\";\n position: absolute;\n right: 0.6rem;\n top: 0.6rem;\n pointer-events: none;\n width: 1.5rem;\n height: 1.5rem;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path fill='none' stroke='%23333333' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 184l144 144 144-144' /%3E%3C/svg%3E\");\n background-repeat: none;\n }\n\n .dropdown-native:focus-within {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n }\n</style>\n","<svelte:options customElement=\"goa-dropdown-item\" />\n\n<script lang=\"ts\">\n export let filter: string = \"\";\n export let label: string = \"\";\n export let value: string = \"\";\n</script>\n","<svelte:options customElement=\"goa-file-upload-card\" />\n\n<script lang=\"ts\">\n import { getTimestamp } from \"../../common/utils\";\n\n // Public\n\n export let filename: string;\n export let size: number;\n export let type: string = \"\";\n export let progress: number = -1;\n export let error: string = \"\";\n\n // Private\n\n let _status: \"uploading\" | \"uploaded\" | \"error\" = \"uploading\";\n let _rootEl: HTMLElement;\n let _fileIcon: string = \"goa-file\";\n\n // Reactive\n\n $: _status =\n error && \"error\"\n || (progress >= 0 && progress < 100) && \"uploading\"\n || \"uploaded\"\n\n $: _fileIcon = filename && type && getFiletypeIcon(filename, type);\n\n // Functions\n\n function getFiletypeIcon(filename: string, type: string): string {\n // file extensions\n const parts = filename.split(\".\");\n const ext = parts[parts.length - 1];\n const extTypeIcon =\n ext === \"xlxs\" && \"goa-xls\"\n || ext === \"xls\" && \"goa-xls\"\n || ext === \"zip\" && \"goa-zip\"\n || ext === \"docx\" && \"goa-doc\"\n || ext === \"doc\" && \"goa-doc\"\n || ext === \"pptx\" && \"goa-ppt\"\n || ext === \"ppt\" && \"goa-ppt\"\n || ext === \"pdf\" && \"goa-pdf\"\n || ext === \"html\" && \"goa-html\"\n\n\n if (extTypeIcon) return extTypeIcon;\n\n // mimetype\n const mimeTypeIcon =\n type === \"application/vnd.ms-powerpoint\" && \"goa-ppt\"\n || type.includes(\"presentationml\") && \"goa-ppt\"\n || type.includes(\"wordprocessingml\") && \"goa-doc\"\n || type.includes(\"spreadsheet\") && \"goa-xls\"\n || type.startsWith(\"video\") && \"goa-video\"\n || type.startsWith(\"audio\") && \"goa-audio\"\n || type.startsWith(\"image\") && \"goa-image\"\n || type === \"application/msword\" && \"goa-doc\"\n || \"goa-file\"\n\n return mimeTypeIcon;\n }\n\n function dispatch(action: \"_delete\" | \"_cancel\") {\n _rootEl.dispatchEvent(\n new CustomEvent(action, {\n composed: true,\n }),\n );\n }\n\n function formatFileSize(bytes: number): string {\n switch (true) {\n case bytes < 1024:\n return bytes + \"B\";\n case bytes < 1024 * 1024:\n return Math.round(bytes / 1024) + \"KB\";\n case bytes < Math.pow(1024, 3):\n return Math.round(bytes / Math.pow(1024, 2)) + \"MB\";\n default:\n return \"n/a\";\n }\n }\n</script>\n\n<div id=\"container\">\n <div\n data-testid=\"root\"\n bind:this={_rootEl}\n class={`root ${_status}`}\n class:error\n >\n {#if _status === \"uploaded\"}\n <goa-icon\n class=\"fileicon\"\n data-testid=\"icon\"\n type={_fileIcon}\n fillcolor=\"#0070c4\"\n size=\"xlarge\"\n />\n {:else}\n <goa-icon\n class=\"fileicon\"\n data-testid=\"icon\"\n type=\"goa-file\"\n fillcolor=\"#dcdcdc\"\n size=\"xlarge\"\n />\n {/if}\n <div class=\"details\">\n <div class=\"filename\" data-testid=\"filename\">{filename}</div>\n {#if _status !== \"error\"}\n <div class=\"filesize\" data-testid=\"filesize\">{formatFileSize(size)}</div>\n {/if}\n {#if _status === \"uploading\"}\n <div class=\"progress\" data-testid=\"progress\">\n <progress value={progress} max=\"100\" />\n {Math.ceil(progress)}%\n </div>\n {:else if _status === \"uploaded\"}\n <div class=\"timestamp\" data-testid=\"timestamp\">\n Uploaded on {getTimestamp()}\n </div>\n {:else if _status === \"error\"}\n <div class=\"error-msg\" data-testid=\"error\">\n <goa-icon type=\"warning\" size=\"small\" theme=\"filled\" />\n {error}\n </div>\n {/if}\n </div>\n\n <div class=\"actions\" data-testid=\"actions\">\n {#if _status === \"uploading\"}\n <goa-button\n type=\"tertiary\"\n size=\"compact\"\n on:click={() => dispatch(\"_cancel\")}>Cancel</goa-button\n >\n {:else if _status === \"uploaded\"}\n <goa-button\n type=\"tertiary\"\n size=\"compact\"\n on:click={() => dispatch(\"_delete\")}\n leadingicon=\"trash\">Remove</goa-button\n >\n {:else if _status === \"error\"}\n <goa-button\n type=\"tertiary\"\n size=\"compact\"\n on:click={() => dispatch(\"_delete\")}\n variant=\"destructive\">Cancel</goa-button\n >\n {/if}\n </div>\n </div>\n</div>\n\n<style>\n #container {\n container: self / inline-size;\n }\n\n .root {\n display: grid;\n padding: var(--goa-space-l);\n border: var(--goa-border-width-s) solid var(--goa-color-greyscale-200);\n border-radius: var(--goa-border-radius-m);\n margin: 0.5rem 0;\n gap: 1rem;\n align-items: center;\n }\n\n .details {\n grid-area: details;\n\n display: flex;\n flex-direction: column;\n overflow-x: hidden;\n }\n\n .actions {\n grid-area: action;\n }\n\n @container self (--not-mobile) {\n .root {\n grid-template-columns: 38px 1fr auto;\n grid-template-rows: auto;\n grid-template-areas: \"icon details action\";\n }\n\n .details {\n /* To match the design specs of 1.5rem \"gap\" on left side => 1rem gap + 0.5rem margin */\n margin-left: 0.5rem;\n }\n }\n \n @container self (--mobile) {\n .root {\n grid-template-columns: 38px auto;\n grid-template-rows: repeat(2, auto);\n grid-template-areas:\n \"icon details\"\n \"action action\";\n }\n\n .actions {\n display: flex;\n justify-content: center;\n }\n }\n\n .root.error {\n border: var(--goa-border-width-m) solid var(--goa-color-interactive-error);\n }\n\n .fileicon {\n grid-area: icon;\n align-self: center;\n }\n\n .filename {\n grid-area: filename;\n font-size: var(--goa-font-size-4);\n overflow-wrap: anywhere;\n }\n\n .error-msg {\n display: flex;\n align-items: flex-start;\n margin-top: 0.5rem;\n gap: var(--goa-space-2xs);\n color: var(--goa-color-interactive-error);\n font: var(--goa-typography-body-xs);\n }\n\n .timestamp,\n .filesize {\n color: var(--goa-color-greyscale-700);\n font: var(--goa-typography-body-s);\n }\n\n .progress {\n display: flex;\n align-items: center;\n font: var(--goa-typography-body-xs);\n gap: 0.5rem;\n }\n\n progress {\n flex: 1 1 auto;\n\n -webkit-appearance: none;\n appearance: none;\n height: 4px;\n border: none;\n border-radius: var(--goa-border-radius-m);\n background: var(--goa-color-greyscale-200);\n color: var(--goa-color-greyscale-700);\n }\n\n /* iOS tweaks */\n progress::-webkit-progress-value {\n background: var(--goa-color-interactive-default);\n }\n progress::-webkit-progress-bar {\n background: var(--goa-color-greyscale-200);\n }\n progress::-moz-progress-bar {\n background: var(--goa-color-interactive-default);\n }\n</style>\n","<svelte:options customElement=\"goa-file-upload-input\" />\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n\n type Variant = \"dragdrop\" | \"button\";\n type Issue = {\n filename: string;\n error: string;\n }\n\n // Public\n\n export let variant: Variant = \"dragdrop\";\n export let accept: string = \"*\";\n export let maxfilesize: string = \"5MB\";\n\n // Private\n\n let _el: HTMLElement;\n let _fileInput: HTMLInputElement;\n let _state: \"hover\" | \"dragenter\" | \"default\" = \"default\";\n\n let issues: Issue[] = [];\n\n // Hooks\n\n onMount(() => {\n _fileInput.addEventListener(\n \"change\",\n () => {\n issues = []; // reset on every new batch of files\n\n // @ts-expect-error\n [..._fileInput.files].forEach((file) => {\n const error = validate(file);\n if (error) {\n issues = [{ filename: file.name, error }, ...issues];\n return;\n }\n dispatch(file);\n });\n _fileInput.value = \"\";\n },\n true,\n );\n });\n\n // Functions\n\n function validate(file: File): string | null {\n if (!isValidFileType(file)) {\n return \"Invalid file type\";\n }\n if (!isValidFileSize(file)) {\n return `The file must be less than ${maxfilesize}`;\n }\n return null;\n }\n\n function isValidFileType(file: File): boolean {\n const typeMatchers = accept.split(\",\");\n for (const matcher of typeMatchers) {\n const matches =\n file.type.match(matcher.replace(\"*\", \".*\").replace(\"/\", \"/\")) ||\n file.name.endsWith(accept);\n if (matches) {\n return true;\n }\n }\n return false;\n }\n\n function isValidFileSize(file: File): boolean {\n const [_, size, units] = maxfilesize.match(/(\\d*)(\\w*$)/);\n const factor = {\n B: 1,\n KB: 1024,\n MB: Math.pow(1024, 2),\n GB: Math.pow(1024, 3),\n };\n if (file.size / factor[units] > parseInt(size)) {\n return false;\n }\n return true;\n }\n\n function dispatch(file: File) {\n _el.dispatchEvent(\n new CustomEvent(\"_selectFile\", {\n composed: true,\n detail: { file },\n }),\n );\n }\n\n function openFilePicker() {\n _fileInput.click();\n }\n\n // Event handlers\n\n function onDrag(e: DragEvent) {\n e.preventDefault();\n return false;\n }\n\n function onDrop(e: DragEvent) {\n e.preventDefault();\n\n issues = []; // reset on every new batch of files\n\n if (e.dataTransfer?.items) {\n // @ts-expect-error\n [...e.dataTransfer.items].forEach((item) => {\n if (item.kind === \"file\") {\n const file = item.getAsFile();\n const error = validate(file);\n if (error) {\n issues = [{ filename: file.name, error }, ...issues];\n return;\n }\n dispatch(item.getAsFile());\n }\n });\n } else {\n // @ts-expect-error\n [...e.dataTransfer?.files].forEach((file) => {\n const error = validate(file);\n if (error) {\n issues = [{ filename: file.name, error }, ...issues];\n return;\n }\n dispatch(file);\n });\n }\n _fileInput.value = \"\";\n }\n\n function onDragEnter() {\n _state = \"dragenter\";\n }\n\n function onDragLeave(e: DragEvent) {\n // hovering over child components will result in the dragleave event to be fired,\n // so we must validate to whether the mouse pointer is within the bounds of the\n // dropable area\n const rect = _el.getBoundingClientRect();\n const withinBounds =\n e.clientX > rect.x &&\n e.clientX <= rect.x + rect.width &&\n e.clientY > rect.y &&\n e.clientY <= rect.y + rect.height;\n\n if (!withinBounds) {\n _state = \"default\";\n }\n }\n\n function onMouseOver() {\n _state = \"hover\";\n }\n\n function onMouseOut() {\n _state = \"default\";\n }\n</script>\n\n<!-- svelte-ignore\n a11y-click-events-have-key-events\n a11y-mouse-events-have-key-events\n-->\n{#if variant === \"dragdrop\"}\n <div\n bind:this={_el}\n data-testid=\"dragdrop\"\n class={`dragdrop state-${_state}`}\n on:click={openFilePicker}\n on:drop={onDrop}\n on:mouseover={onMouseOver}\n on:mouseout={onMouseOut}\n on:dragenter={onDragEnter}\n on:dragleave={onDragLeave}\n on:dragover={onDrag}\n >\n <div class=\"instructions\">\n <goa-icon type=\"cloud-upload\" size=\"large\" />\n <div>Drag and drop files here</div>\n <em>or</em>\n <div class=\"browse-files\">Browse files</div>\n </div>\n\n {#if maxfilesize}\n <em class=\"max-file-size\" data-testid=\"max-file-size\"\n >Maximum file size is {maxfilesize}.</em\n >\n {/if}\n\n <input\n data-testid=\"input\"\n tabindex=\"0\"\n type=\"file\"\n {accept}\n bind:this={_fileInput}\n />\n </div>\n{/if}\n\n{#if variant === \"button\"}\n <div class=\"button\" bind:this={_el}>\n <goa-button on:click={openFilePicker} type=\"secondary\">\n Choose file\n </goa-button>\n\n {#if maxfilesize}\n <em class=\"max-file-size\" data-testid=\"max-file-size\">\n Maximum file size is {maxfilesize}.\n </em>\n {/if}\n </div>\n\n <input\n bind:this={_fileInput}\n data-testid=\"input\"\n tabindex=\"-1\"\n type=\"file\"\n {accept}\n multiple\n />\n{/if}\n\n{#if issues.length}\n <div class=\"issues\">\n {#each issues as issue}\n <div class=\"issue\">\n {issue.filename}\n <div class=\"error\" data-testid=\"error\">\n <goa-icon type=\"warning\" size=\"small\" theme=\"filled\" />\n {issue.error}\n </div>\n </div>\n {/each}\n </div>\n{/if}\n\n<style>\n .dragdrop {\n border-radius: var(--goa-border-radius-m);\n border: var(--goa-border-width-m) dashed\n var(--goa-color-interactive-default);\n display: flex;\n font: var(--goa-typography-body-m);\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n padding: var(--goa-space-xl) 0;\n color: var(--goa-color-interactive-default);\n text-align: center;\n cursor: pointer;\n\n container: self / inline-size;\n }\n\n .dragdrop:active,\n .dragdrop:focus-within {\n border-style: solid;\n outline: none;\n }\n .dragdrop:hover div {\n color: var(--goa-color-interactive-hover);\n }\n\n /** States **/\n\n .state-default {\n background: var(--goa-color-info-background);\n }\n .state-hover {\n background: var(--goa-color-greyscale-100);\n border-style: dashed;\n }\n .state-dragenter {\n background: var(--goa-color-info-background);\n border-style: solid;\n }\n\n .instructions {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n goa-icon {\n margin-top: 4px;\n margin-right: 4px;\n }\n\n .browse-files {\n text-decoration: underline;\n }\n\n em {\n font-style: normal;\n font: var(--goa-typography-body-s);\n color: var(--goa-color-greyscale-700);\n }\n\n .max-file-size {\n display: block;\n margin-top: 0.5rem;\n }\n\n input[type=\"file\"] {\n position: absolute;\n left: -9999px;\n }\n\n /* issues */\n .issues {\n border-bottom: 1px solid var(--goa-color-greyscale-200);\n margin: 1rem 0;\n }\n .issue {\n margin-bottom: 1rem;\n }\n .error {\n color: var(--goa-color-interactive-error);\n font-size: 0.9em;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n @container self (--mobile) {\n .dragdrop {\n padding-top: 1.75rem;\n }\n .instructions {\n flex-direction: column;\n }\n }\n</style>\n","<svelte:options customElement=\"goa-focus-trap\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n // Private\n\n let rootEl: HTMLElement;\n let boundryStartEl: HTMLElement;\n let boundryEndEl: HTMLElement;\n let isShiftPressed: boolean;\n\n // Hooks\n\n onMount(async () => {\n await tick();\n // event is attached to the rootEl, eliminating the need to remove the listener since it\n // will be removed when the associated element is removed.\n rootEl.addEventListener(\"focus\", onFocus, true);\n rootEl.addEventListener(\"keydown\", onKeydown, true);\n rootEl.addEventListener(\"keyup\", onKeyup, true);\n\n boundryStartEl = rootEl.querySelector(\"[data-tab-boundry=start]\");\n boundryEndEl = rootEl.querySelector(\"[data-tab-boundry=end]\");\n });\n\n function onKeydown(e: KeyboardEvent) {\n if (e.shiftKey) isShiftPressed = true;\n }\n\n function onKeyup(e: KeyboardEvent) {\n if (e.shiftKey) isShiftPressed = false;\n }\n\n // Functions\n\n function isFocusable(node: Node): Node {\n const element = node as HTMLElement;\n const isTabbable =\n element.tabIndex > 0 ||\n (element.tabIndex === 0 && element.getAttribute(\"tabIndex\") !== null);\n\n if (isTabbable) return node;\n if (element[\"disabled\"]) return null;\n if (element.tabIndex < 0 || element.getAttribute?.(\"tabindex\") === \"-1\")\n return null;\n\n switch (element.nodeName) {\n case \"A\": {\n const el = element as HTMLLinkElement;\n if (!!el.href && el.rel !== \"ignore\") return node;\n }\n case \"INPUT\": {\n const el = element as HTMLInputElement;\n if (el.type !== \"hidden\" && el.type !== \"file\") return node;\n }\n case \"BUTTON\":\n case \"SELECT\":\n case \"TEXTAREA\":\n return node;\n default:\n return null;\n }\n }\n\n // Focus event handler\n function onFocus(event: Event): void {\n const el = event.target as HTMLElement;\n\n if (el.dataset.tabBoundry === \"start\") {\n if (isShiftPressed) {\n boundryEndEl.focus();\n return;\n }\n const next = findFirstNode([el.nextElementSibling], false) as HTMLElement;\n next?.focus();\n return;\n }\n\n if (el.dataset.tabBoundry === \"end\") {\n if (!isShiftPressed) {\n boundryStartEl.focus();\n return;\n }\n const next = findFirstNode(\n [el.previousElementSibling],\n true,\n ) as HTMLElement;\n next?.focus();\n return;\n }\n }\n\n function findFirstNode(\n nodes: NodeList | Node[],\n reversed: boolean = false,\n ): Node {\n const nodeList = reversed ? [...nodes].reverse() : nodes;\n for (const node of nodeList) {\n const el = \n isFocusable(node)\n || findFirstNode(node.childNodes, reversed)\n || findFirstNodeOfSlot(node, reversed)\n || findFirstNodeOfShadowDOM(node, reversed);\n if (el) {\n return el;\n }\n }\n return null;\n }\n\n function findFirstNodeOfSlot(node: Node, reversed: boolean): Node {\n if (!(node instanceof HTMLSlotElement)) return null;\n return findFirstNode([...node.assignedNodes()], reversed);\n }\n\n function findFirstNodeOfShadowDOM(node: Node, reversed: boolean): Node {\n if (!(node instanceof HTMLElement)) return null;\n return findFirstNode([...(node.shadowRoot?.childNodes || [])], reversed);\n }\n</script>\n\n<div bind:this={rootEl}>\n <!-- svelte-ignore a11y-no-noninteractive-tabindex -->\n <span data-tab-boundry=\"start\" tabindex=\"0\"></span>\n <slot />\n <!-- svelte-ignore a11y-no-noninteractive-tabindex -->\n <span data-tab-boundry=\"end\" tabindex=\"0\"></span>\n</div>\n\n<style>\n div {\n display: inline;\n }\n</style>\n","<svelte:options customElement=\"goa-app-footer\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n export let maxcontentwidth: string = \"\";\n\n let rootEl: HTMLElement;\n let navLinks: Element[];\n let metaLinks: Element[];\n\n const year = new Date().getFullYear();\n\n onMount(async () => {\n await tick();\n const navSlot = rootEl.querySelector(\"slot[name=nav]\") as HTMLSlotElement;\n const metaSlot = rootEl.querySelector(\"slot[name=meta]\") as HTMLSlotElement;\n\n navLinks = navSlot?.assignedElements();\n metaLinks = metaSlot?.assignedElements();\n });\n</script>\n\n<div\n class=\"app-footer\"\n bind:this={rootEl}\n style={`--max-content-width: ${maxcontentwidth || \"100%\"}`}\n>\n <div class=\"content\">\n <div class=\"nav-links\">\n <slot name=\"nav\" />\n </div>\n\n {#if navLinks && navLinks.length > 0}\n <goa-divider spacing=\"small\" />\n {/if}\n\n <div\n class=\"meta-section\"\n class:with-meta-links={metaLinks && metaLinks.length > 0}\n >\n <div class=\"meta-links\">\n <slot name=\"meta\" />\n </div>\n\n <div\n class=\"abgov\"\n class:with-meta-links={metaLinks && metaLinks.length > 0}\n >\n <a href=\"https://alberta.ca\">\n <img\n alt=\"GoA Logo\"\n class=\"logo\"\n src=\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='149.351' height='42' viewBox='0 0 149.351 42'%3E%3Cdefs%3E%3Cstyle%3E.a%7Bfill:none;%7D.b%7Bclip-path:url(%23a);%7D.c%7Bfill:%2300aad2;%7D.d%7Bfill:%235f6a72;%7D%3C/style%3E%3CclipPath id='a'%3E%3Crect class='a' width='149.351' height='42'/%3E%3C/clipPath%3E%3C/defs%3E%3Cg class='b'%3E%3Crect class='c' width='13.555' height='13.555' transform='translate(135.796 21.524)'/%3E%3Cpath class='d' d='M63.082,33.088c-1.383.138-2.835.277-4.357.346.553-4.357,2.835-10.373,5.671-9.405,1.66.553.761,5.671-1.314,9.059m-3.527,2.974a3.761,3.761,0,0,1-1.245,0,.851.851,0,0,0,.346-.692v-.553c.761,0,1.936-.138,3.389-.277a4.327,4.327,0,0,1-2.49,1.521M76.844,25.688c1.8-1.66,2.7-1.521,2.9-1.106.484.968-1.591,4.357-5.671,6.224a10.328,10.328,0,0,1,2.766-5.118m66.736,1.66c-.207-3.389-3.181-3.942-3.6-2.974-.138.346,1.106.207,1.106,2.628,0,3.942-4.011,9.129-9.129,9.129-5.532,0-6.985-4.357-7.261-6.432-.207-1.452.138-3.458-2.351-3.181-1.729.207-3.25,3.527-5.463,6.362-1.867,2.42-2.7,2.213-2.282.138.553-2.628,2.7-8.714,5.187-9.129,1.176-.207,1.591,1.8,2.075.553s.069-4.011-2.559-4.011c-1.8,0-3.942,1.936-5.74,4.08-1.521,1.936-9.336,13.416-12.656,10.927-1.521-1.176-1.383-5.878-.415-11.411,3.873-1.521,7.123-1.037,8.921-.138.9.415,1.037.346.622-.622-.553-1.452-3.665-3.734-8.575-2.7-.138,0-.207.069-.346.069.415-1.8.83-3.665,1.383-5.463.484-1.66,1.8-4.5-1.729-4.979-1.106-.207-.622.346-1.037,1.867-.692,2.766-1.521,6.362-2.144,10.028a19.745,19.745,0,0,0-7.538,8.091,38.59,38.59,0,0,0,.9-4.772,1.589,1.589,0,0,0-1.245-1.729c-.761-.207-1.729.138-2.628,1.452-2.144,3.043-4.841,7.815-8.99,9.82-2.974,1.452-4.288,0-4.357-2.282a9.869,9.869,0,0,0,1.521-.553c5.394-2.351,7.192-5.947,5.878-8.16-1.314-2.075-4.979-1.452-7.953,1.66a11.175,11.175,0,0,0-2.7,6.5c-1.245.277-2.628.484-4.219.692,2.49-4.08,2.282-9.613-1.383-10.581-4.288-1.106-6.432,3.043-7.331,6.5.346-3.873.9-7.745,1.591-11.549.346-1.66,1.452-4.5-2.075-4.979-1.106-.207-.968.346-.9,1.867.138,2.075-2.144,14.454-.968,19.848-1.521.484-2.144,1.66-.207,2.835,1.383.83,4.357,1.106,7.331-.346a9.3,9.3,0,0,0,2.766-2.144c1.8-.207,3.665-.553,5.394-.83.277,2.42,1.867,4.219,5.463,3.873,5.118-.484,9.682-6.777,11.411-9.82-.346,3.25-2.42,10.373,1.176,10.028,1.383-.138.83-.346.9-1.591.346-4.288,3.873-7.953,7.4-10.166-.622,5.256-.415,9.958,2.006,11.411,4.426,2.766,10.581-4.5,14.039-8.921-1.729,3.942-2.7,8.921-.138,9.682,3.043.9,5.463-4.219,8.3-8.091.346,2.766,2.213,7.607,9.682,7.607,8.022-.069,13.071-4.91,12.863-10.1m-108.3,8.645A66.439,66.439,0,0,1,27.4,32.534a59.168,59.168,0,0,0,6.777-2.974,54.453,54.453,0,0,0,1.106,6.432m20.4,3.873c-.069-.207-.622.069-1.106,0-1.452-.207-3.389-2.213-3.942-5.463-1.037-5.878-.415-11.687,1.314-20.332.346-1.66,1.452-4.5-2.075-5.048-1.106-.138-.553.415-.83,1.867C47.66,17.32,42.4,21.954,37.149,25.066,36.6,17.735,36.8,9.505,38.186,4.526c1.176-4.219,2.559-3.458.83-4.357s-3.734.277-5.325,3.458S24.839,23.89,13.221,35.439C7.273,41.317,1.879,38.274.842,37.375c-.9-.761-1.176.415-.138,1.591,4.772,5.256,11.826,2.282,14.384-.277,7.054-7.054,15.283-22.268,18.6-28.7a98.251,98.251,0,0,0,.277,16.874,50.129,50.129,0,0,1-8.3,3.181c-1.66.415-2.7,1.106-2.7,1.867s1.106,1.521,2.7,2.282c2.835,1.383,11.2,5.256,13.209,6.5,1.729,1.037,2.628.207,3.112-.9.692-1.452-1.176-2.282-2.974-2.766a60.545,60.545,0,0,1-1.66-9.267c4.219-2.628,8.437-6.086,10.788-10.443C47.522,20.916,46,33.3,49.873,38.482a5.451,5.451,0,0,0,4.564,2.213c.968-.069,1.383-.692,1.245-.83' transform='translate(-0.038 0.124)'/%3E%3C/g%3E%3C/svg%3E\"\n />\n </a>\n <a href=\"https://alberta.ca\" class=\"goa-copyright\">\n © {year} Government of Alberta\n </a>\n </div>\n </div>\n </div>\n</div>\n\n<style>\n * {\n box-sizing: border-box;\n }\n\n .app-footer {\n background-color: var(--goa-color-greyscale-100);\n border-top: 2px solid var(--goa-color-greyscale-200);\n border-bottom: 1rem solid var(--goa-color-brand-default);\n\n container: self / inline-size;\n }\n\n .content {\n margin: 0 auto;\n width: min(var(--max-content-width), 100%);\n }\n\n @container self (--mobile) {\n .content {\n padding: 2rem 1rem;\n }\n }\n\n @container self (--tablet) {\n .content {\n padding: 2rem 2rem;\n }\n }\n\n @container self (--desktop) {\n .content {\n padding: 2rem 4.5rem;\n }\n }\n\n .meta-section {\n display: flex;\n flex-direction: column;\n padding: 1rem 0;\n }\n\n /* gap between meta links and goa log when stacked vertically on small screen */\n .meta-section.with-meta-links {\n gap: 2rem;\n justify-content: space-between;\n }\n\n .meta-links {\n display: none;\n }\n .with-meta-links .meta-links {\n display: block;\n }\n\n .nav-links {\n display: flex;\n flex-direction: column;\n gap: 2rem;\n }\n\n .abgov {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 100%;\n }\n\n @container self (--not-mobile) {\n .meta-section {\n flex-direction: row;\n gap: 2rem;\n }\n\n .nav-links {\n flex-direction: row;\n }\n\n .abgov {\n align-items: center;\n flex-direction: row-reverse;\n }\n }\n\n .abgov.with-meta-links {\n gap: 1rem;\n flex-direction: column;\n width: unset;\n }\n\n @container self (--not-mobile) {\n .abgov.with-meta-links {\n align-items: flex-end;\n }\n }\n\n .goa-copyright {\n white-space: nowrap;\n }\n\n a {\n color: var(--goa-color-text-secondary);\n }\n</style>\n","<svelte:options customElement=\"goa-app-footer-meta-section\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n let rootEl: HTMLElement;\n let children: HTMLLinkElement[] = [];\n\n onMount(async () => {\n await tick();\n children = rootEl\n .querySelector(\"slot\")\n .assignedElements() as HTMLLinkElement[];\n\n const isValid = children\n .map((child) => child.hasAttribute(\"href\"))\n .reduce((sum: boolean, valid: boolean) => {\n return sum && valid;\n }, true);\n\n if (!isValid) {\n children = [];\n console.warn(\"GoAFooterMetaSection children must be anchor elements.\");\n return;\n }\n });\n</script>\n\n<!-- Template -->\n<section bind:this={rootEl}>\n <div class=\"hidden\">\n <slot />\n </div>\n\n <ul>\n {#each children as child}\n <li><a href={child.href}>{child.innerHTML}</a></li>\n {/each}\n </ul>\n</section>\n\n<style>\n .hidden {\n display: none;\n }\n\n ul {\n display: flex;\n flex-wrap: wrap;\n gap: var(--goa-space-l);\n padding-left: 0;\n }\n\n li {\n list-style-type: none;\n }\n\n a {\n color: var(--goa-color-text-default);\n white-space: nowrap;\n }\n</style>\n","<svelte:options customElement=\"goa-app-footer-nav-section\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n export let heading: string = \"\";\n export let maxcolumncount: number = 1;\n\n let rootEl: HTMLElement;\n let children: HTMLLinkElement[] = [];\n\n onMount(async () => {\n await tick();\n\n // remap slot content\n children = rootEl\n .querySelector(\"slot\")\n ?.assignedElements() as HTMLLinkElement[];\n\n const isValid = children\n .map((child) => child.hasAttribute(\"href\"))\n .reduce((sum: boolean, valid: boolean) => {\n return sum && valid;\n }, true);\n\n if (!isValid) {\n children = [];\n console.warn(\"GoAFooterNavSection children must be anchor elements.\");\n return;\n }\n });\n</script>\n\n<!-- Template -->\n<section bind:this={rootEl}>\n {#if heading}\n <div class=\"title\">{heading}</div>\n <goa-divider spacing=\"small\" />\n {/if}\n\n <div class=\"hidden\">\n <slot />\n </div>\n\n <ul\n class=\"links\"\n style={`\n --narrow-display-type: ${Math.ceil(maxcolumncount / 2) > 1 ? \"block\" : \"flex\"};\n --narrow-column-count: ${Math.ceil(maxcolumncount / 2)};\n --wide-display-type: ${maxcolumncount > 1 ? \"block\" : \"flex\"};\n --wide-column-count: ${maxcolumncount};\n `}\n >\n {#each children as child}\n <li><a href={child.href}>{child.innerHTML}</a></li>\n {/each}\n </ul>\n</section>\n\n<!-- Styles -->\n<style>\n :host {\n /* The flex-grow is set via code above */\n flex: auto;\n }\n\n .title {\n font-size: var(--goa-font-size-7);\n line-height: var(--goa-line-height-4);\n padding-bottom: var(--goa-space-l);\n }\n\n .hidden {\n display: none;\n }\n\n .links {\n display: block;\n list-style-type: none;\n padding-left: 0;\n }\n\n @media not (--mobile) {\n .links {\n list-style-type: none;\n padding-left: 0;\n flex-direction: column;\n }\n }\n\n @media (--tablet) {\n .links {\n display: var(--narrow-display-type);\n column-count: var(--narrow-column-count);\n }\n }\n\n @media (--desktop) {\n .links {\n display: var(--wide-display-type);\n column-count: var(--wide-column-count);\n }\n }\n\n li {\n padding: 0.75rem 0;\n }\n\n a {\n color: var(--goa-color-text-default);\n }\n</style>\n","<svelte:options customElement=\"goa-form-item\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { typeValidator } from \"../../common/utils\";\n\n // Validators\n const [REQUIREMENT_TYPES, validateRequirementType] = typeValidator(\n \"Requirement type\",\n [\"optional\", \"required\"],\n false,\n );\n const [LABEL_SIZE_TYPES, validateLabelSize] = typeValidator(\n \"Label size type\",\n [\"regular\", \"large\"],\n false,\n );\n\n type RequirementType = (typeof REQUIREMENT_TYPES)[number];\n type LabelSizeType = (typeof LABEL_SIZE_TYPES)[number];\n\n export let testid: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Optional\n export let label: string = \"\";\n export let labelsize: LabelSizeType = \"regular\";\n export let helptext: string = \"\";\n export let error: string = \"\";\n export let requirement: RequirementType = \"\";\n export let id: string = \"\";\n\n onMount(() => {\n validateRequirementType(requirement);\n validateLabelSize(labelsize);\n });\n</script>\n\n<!-- HTML -->\n<div data-testid={testid} style={calculateMargin(mt, mr, mb, ml)}>\n {#if label}\n <div class={`label ${labelsize}`} {id}>\n {label}\n {#if requirement && REQUIREMENT_TYPES.includes(requirement)}\n <em>({requirement})</em>\n {/if}\n </div>\n {/if}\n <div class=\"form-item-input\">\n <slot />\n </div>\n {#if error}\n <div class=\"error-msg\">\n <goa-icon type=\"warning\" size=\"small\" theme=\"filled\" mt=\"2xs\" />\n {error}\n </div>\n {/if}\n {#if helptext}\n <div class=\"help-msg\">{helptext}</div>\n {/if}\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n * {\n box-sizing: border-box;\n }\n\n .label {\n display: block;\n font-weight: var(--goa-font-weight-bold);\n color: var(--goa-color-text-default);\n font-size: var(--goa-font-size-4);\n padding-bottom: 0.5rem;\n }\n\n .label.large {\n font: var(--goa-typography-heading-l);\n }\n\n .label em {\n color: var(--goa-color-greyscale-700);\n font-weight: var(--goa-font-weight-regular);\n font-size: var(--goa-font-size-2);\n line-height: var(--goa-line-height-1);\n font-style: normal;\n }\n\n .form-item-input {\n margin-bottom: 0.25rem;\n }\n\n .help-msg {\n font-size: var(--goa-font-size-2);\n color: var(--goa-color-text-default);\n }\n\n .error-msg {\n display: inline-flex;\n align-items: flex-start;\n gap: 0.25rem;\n font-size: var(--goa-font-size-2);\n color: var(--goa-color-interactive-error);\n margin-bottom: 0.25rem;\n }\n</style>\n","<svelte:options customElement=\"goa-form-step\" />\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { toBoolean, typeValidator } from \"../../common/utils\";\n\n // Validator\n const [StatusTypes, validateStatus] = typeValidator(\n \"Form Step status\",\n [\"incomplete\", \"complete\"],\n false,\n );\n type FormStepStatus = (typeof StatusTypes)[number];\n\n // ======\n // Public\n // ======\n\n export let text: string;\n\n // Set by FormStepper parent component\n export let current: string = \"false\";\n export let enabled: string = \"false\";\n export let childindex: string = \"\";\n export let arialabel: string = \"\";\n export let status: FormStepStatus = \"\";\n\n // =======\n // Private\n // =======\n\n let _stepEl: HTMLElement;\n let _checkbox: HTMLInputElement;\n let _isMobile: boolean;\n\n // ========\n // Reactive\n // ========\n\n $: _isCurrent = toBoolean(current);\n $: _isEnabled = toBoolean(enabled) || status === \"complete\";\n\n onMount(() => {\n validateStatus(status);\n // event binding\n _stepEl.addEventListener(\"click\", () => {\n if (!_isEnabled) return;\n\n _checkbox.checked = !_checkbox.checked;\n _stepEl.dispatchEvent(\n new CustomEvent(\"_click\", {\n composed: true,\n bubbles: true,\n detail: +childindex,\n }),\n );\n });\n\n _stepEl.addEventListener(\"resized\", (e: Event) => {\n const { mobile } = (e as CustomEvent).detail;\n _isMobile = mobile;\n });\n });\n</script>\n\n<label\n id={arialabel}\n bind:this={_stepEl}\n class:mobile={_isMobile}\n class:desktop={!_isMobile}\n role=\"listitem\"\n tabindex=\"-1\"\n for={text}\n data-status={status}\n aria-current={_isCurrent ? \"step\" : \"false\"}\n aria-label={`${arialabel} ${text} ${status || \"\"}`}\n>\n <input\n id={text}\n bind:this={_checkbox}\n type=\"checkbox\"\n checked={_isCurrent}\n aria-disabled={!_isEnabled}\n />\n <div data-testid=\"status\" class=\"status\">\n {#if _isCurrent}\n <goa-icon type=\"pencil\" />\n {:else if status === \"complete\"}\n <goa-icon type=\"checkmark\" inverted />\n {:else if status === \"incomplete\"}\n <goa-icon type=\"remove\" />\n {:else}\n <div data-testid=\"step-number\" class=\"step-number\">{childindex}</div>\n {/if}\n </div>\n <div class=\"details\">\n <div class=\"text\" data-testid=\"text\">{text}</div>\n {#if status === \"incomplete\"}\n <div class=\"subtext\" data-testid=\"subtext\">Partially complete</div>\n {/if}\n </div>\n</label>\n\n<style>\n input[type=\"checkbox\"] {\n position: absolute;\n left: -9999px;\n }\n\n label {\n display: flex;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n padding: var(--goa-space-l);\n }\n\n label:not([aria-disabled=\"true\"]):not([aria-current=\"step\"]):focus-within,\n label:not([aria-disabled=\"true\"]):not([aria-current=\"step\"]):focus,\n label:not([aria-disabled=\"true\"]):not([aria-current=\"step\"]):active {\n outline: var(--goa-color-interactive-focus) solid var(--goa-border-width-l);\n }\n\n label:not([aria-disabled=\"true\"]):not([aria-current=\"step\"]):hover {\n background-color: rgba(0, 0, 0, 0.05);\n cursor: pointer;\n }\n\n label.desktop {\n text-align: center;\n flex-direction: column;\n align-items: center;\n }\n\n label.desktop .details {\n margin-top: 0.75rem;\n }\n\n label.mobile {\n flex-direction: row;\n align-items: center;\n text-align: start;\n }\n\n label.mobile .details {\n margin-left: 1rem;\n }\n\n .status {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n border-radius: 999px;\n border: 4px solid var(--goa-color-interactive-default);\n background: var(--goa-color-greyscale-white);\n height: 2.5rem;\n width: 2.5rem;\n }\n\n .status > * {\n fill: var(--fill-color, var(--goa-color-interactive-default));\n color: var(--fill-color, var(--goa-color-interactive-default));\n }\n\n [aria-current=\"step\"] .text {\n font-weight: var(--goa-font-weight-bold);\n }\n\n [data-status=\"complete\"] .status {\n background: var(--goa-color-interactive-default);\n }\n\n [aria-current=\"step\"][data-status=\"complete\"] .status {\n background: var(--goa-color-greyscale-white);\n }\n\n .step-number {\n margin-bottom: var(--font-valign-fix);\n font-weight: var(--goa-font-weight-bold);\n color: var(--goa-color-text-secondary);\n }\n\n label:not(\n [data-status=\"complete\"],\n [data-status=\"incomplete\"],\n [aria-current=\"step\"]\n )\n .status {\n border-color: var(--goa-color-greyscale-500);\n }\n\n .text {\n font: var(--goa-typography-body-s);\n }\n\n .subtext {\n margin-top: 0.25rem;\n font: var(--goa-typography-body-xs);\n color: var(--goa-color-text-secondary);\n }\n</style>\n","<svelte:options customElement=\"goa-form-stepper\" />\n\n<script lang=\"ts\">\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n import { onDestroy, onMount, tick } from \"svelte\";\n import { MOBILE_BP } from \"../../common/breakpoints\"\n\n // ======\n // Public\n // ======\n\n export let step: number = -1; // this is a 1-based index, -1 is the unset value\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // =======\n // Private\n // =======\n\n let _rootEl: HTMLElement; // events bound to it\n let _gridEl: HTMLElement; // used to obtain component dimensions\n let _steps: Element[] = []; // step DOM elements to allow for width calculations\n let _stepWidth: number; // calculated x distance (px) between each step point\n let _stepHeight: number; // calculated y distance (px) between each step point\n let _progressHeight: number; // allow css calculations for mobile view\n\n let _maxAllowedStep: number = 1; // prevent users from using the stepper to access future steps\n let _maxProgressStep: number = 1; // controls the progress bars value\n\n let _showProgressBars = false; // delays the showing of the progress bars to prevent it from\n // being temporarily visible with an unwanted offset\n\n // ========\n // Reactive\n // ========\n\n // handles the 1-based step value and the number of line segments is one less\n // than the number of steps\n $: _progress = ((_maxProgressStep - 1) / (_steps.length - 1)) * 100;\n $: setCurrentStepStatus(step);\n $: if (_steps.length) {\n // allow access to all steps if not step property is provided\n if (step <= 0) {\n step = 1;\n setTimeout(() => {\n dispatch(step);\n }, 1);\n _maxAllowedStep = _steps.length;\n }\n\n if (step > _maxProgressStep) _maxProgressStep = step;\n if (step > _maxAllowedStep) _maxAllowedStep = step;\n _steps.forEach((stepEl: Element, index: number) => {\n stepEl.setAttribute(\n \"enabled\",\n index > _maxAllowedStep - 1 ? \"false\" : \"true\",\n );\n });\n }\n\n onMount(async () => {\n await tick();\n\n // children steps\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n _steps = slot.assignedElements();\n } else {\n // for unit tests only\n // @ts-expect-error testing\n _steps = [..._rootEl.querySelector(\"goa-grid\").children] as Element[];\n }\n\n // set step a11y label\n _steps.forEach((_step: Element, index: number) => {\n const s = _step as HTMLElement;\n s.setAttribute(\"arialabel\", `Step ${index + 1} of ${_steps.length}`);\n s.setAttribute(\"childindex\", `${index + 1}`);\n });\n\n // handle click events from progress items\n _rootEl.addEventListener(\"_click\", (e: Event) => {\n step = (e as CustomEvent).detail;\n dispatch(step);\n });\n\n setCurrentStepStatus(step);\n calcStepDimensions();\n\n setTimeout(() => {\n _showProgressBars = true;\n }, 10);\n\n // recompute size listeners\n window.addEventListener(\"orientationchange\", calcStepDimensions);\n\n const resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n if (entries.length !== 1) return; \n calcStepDimensions();\n\n const width = entries[0].contentRect.width;\n\n for (const step of _steps) {\n step.shadowRoot\n ?.querySelector(\"label\")\n ?.dispatchEvent(new CustomEvent(\"resized\", { \n bubbles: true, \n composed: true,\n detail: {\n mobile: width < MOBILE_BP,\n }\n }))\n }\n });\n\n resizeObserver.observe(_rootEl)\n\n return () => resizeObserver.unobserve(_rootEl);\n });\n\n onDestroy(() => {\n window.removeEventListener(\"orientationchange\", calcStepDimensions);\n })\n\n function dispatch(step: number) {\n _rootEl?.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n bubbles: true,\n detail: { step },\n }),\n );\n }\n\n function setCurrentStepStatus(step: number) {\n _steps.forEach((stepEl, index) => {\n stepEl.setAttribute(\"current\", index === step - 1 ? \"true\" : \"false\");\n });\n }\n\n async function calcStepDimensions() {\n // tick required, without it the _steps elements width was not yet updated\n await tick();\n const step = _steps?.[0] as HTMLElement;\n _stepWidth = step?.offsetWidth ?? 0;\n _stepHeight = step?.offsetHeight ?? 0;\n _progressHeight = _gridEl?.offsetHeight;\n }\n</script>\n\n<div id=\"container\">\n <div\n class=\"form-stepper\"\n style={`\n ${calculateMargin(mt, mr, mb, ml)};\n --progress: ${_progress}%;\n --step-width: ${_stepWidth}px;\n --step-height: ${_stepHeight}px;\n --height: ${_progressHeight}px;\n `}\n role=\"list\"\n bind:this={_rootEl}\n >\n {#if _steps.length > 0 && _showProgressBars}\n <progress class=\"horizontal\" value={_progress} max=\"100\"></progress>\n <progress class=\"vertical\" value={_progress} max=\"100\"></progress>\n {/if}\n <div class=\"slots\" bind:this={_gridEl}>\n <goa-grid minchildwidth=\"10ch\">\n <slot />\n </goa-grid>\n </div>\n </div>\n</div>\n\n<style>\n .slots {\n position: relative;\n inset: 0;\n z-index: 2;\n }\n\n #container {\n container: self / inline-size;\n }\n\n progress {\n position: absolute;\n z-index: 1;\n -webkit-appearance: none;\n appearance: none;\n height: 4px;\n border: none;\n background: var(--goa-color-greyscale-200);\n pointer-events: none;\n }\n\n /* 2.5rem = 40px where 40px = height of form stepper icons */\n /* 2px = 4px / 2, where 4px is thickness of progress bar */\n /* 1.5rem = 24px = padding as per design specs */\n progress.horizontal {\n top: calc(1.5rem + (2.5rem / 2) - 2px);\n left: calc(var(--step-width) / 2);\n width: calc(100% - var(--step-width));\n }\n\n @container self (--not-mobile) {\n progress.horizontal {\n display: block;\n }\n progress.vertical {\n display: none;\n }\n .form-stepper {\n position: relative;\n }\n }\n\n /* 1.25rem = 20px = 40px / 2, half the height of the 40px stepper */\n progress.vertical {\n width: calc(var(--height) - var(--step-height));\n transform: rotate(90deg)\n translate(\n calc(50% + 1.25rem + 1.75rem),\n calc((var(--height) - var(--step-height)) / 2 - 1.25rem - 1.5rem)\n );\n }\n\n @container self (--mobile) {\n progress.horizontal {\n display: none;\n }\n progress.vertical {\n display: inline-block;\n }\n .form-stepper {\n display: block;\n }\n }\n\n /* iOS tweaks */\n progress::-webkit-progress-value {\n background: var(--goa-color-interactive-default);\n }\n progress::-webkit-progress-bar {\n background: var(--goa-color-greyscale-200);\n }\n progress::-moz-progress-bar {\n background: var(--goa-color-interactive-default);\n }\n\n</style>\n","<svelte:options customElement=\"goa-layout-full-nav\" />\n\n<div class=\"page\">\n <header class=\"header\">\n <slot name=\"header\" />\n </header>\n\n <nav class=\"nav\">\n <slot name=\"nav\" />\n </nav>\n\n <main>\n <slot />\n </main>\n\n <footer class=\"footer\">\n <slot name=\"footer\" />\n </footer>\n</div>\n\n<style>\n .page {\n height: 100vh;\n grid-template-columns: auto;\n grid-template-rows: min-content auto min-content;\n grid-template-areas:\n \"header\"\n \"content\"\n \"nav\"\n \"footer\";\n display: grid;\n place-content: stretch stretch;\n gap: 0 0;\n }\n\n @media (--mobile) {\n .page {\n grid-template-columns: 300px auto;\n grid-template-rows: min-content auto min-content;\n grid-template-areas:\n \"header header\"\n \"nav content\"\n \"footer footer\";\n }\n }\n\n .header {\n grid-area: header;\n }\n .footer {\n grid-area: footer;\n }\n\n main {\n grid-area: content;\n justify-self: stretch;\n padding: 1rem;\n }\n\n .nav {\n grid-area: nav;\n padding: 1rem;\n background-color: var(--goa-color-greyscale-100);\n }\n</style>\n","<svelte:options customElement=\"goa-grid\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n\n import { calculateMargin } from \"../../common/styling\";\n import { validateRequired } from \"../../common/utils\";\n import type { Spacing } from \"../../common/styling\";\n\n export let gap: Spacing = \"m\";\n export let minchildwidth: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n onMount(() => {\n validateRequired(\"Grid\", { minchildwidth });\n });\n</script>\n\n<!-- HTML -->\n<div id=\"container\">\n <div\n class=\"goa-grid\"\n style={`\n ${calculateMargin(mt, mr, mb, ml)}\n --min-child-width: ${minchildwidth || 0};\n gap: var(--goa-space-${gap})\n `}\n >\n <slot />\n </div>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n #container {\n container: self / inline-size;\n }\n\n .goa-grid {\n display: flex;\n flex-direction: column;\n gap: var(--gap);\n }\n\n @container self (--not-mobile) {\n .goa-grid {\n display: grid;\n grid-template-columns: repeat(\n auto-fit,\n minmax(var(--min-child-width), 1fr)\n );\n }\n }\n</style>\n","<svelte:options customElement=\"goa-hero-banner\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n export let heading: string;\n export let backgroundurl: string;\n export let minheight: string;\n export let maxcontentwidth = \"100%\";\n export let backgroundcolor: string = \"#f8f8f8\";\n export let textcolor: string = \"\";\n\n /* Set minheight to support old default value of 600px */\n $: if (!minheight && backgroundurl) minheight = \"600px\";\n</script>\n\n<!-- HTML -->\n<div\n class=\"goa-hero\"\n class:with-image={backgroundurl}\n data-testid=\"background\"\n style=\"\n min-height: {minheight};\n --hero-banner-background-color: {backgroundcolor};\n --hero-banner-text-color: {textcolor};\n --hero-background-url: url({backgroundurl});\n \"\n>\n <goa-page-block width={maxcontentwidth || \"full\"}>\n <h1>{heading}</h1>\n <div class=\"goa-hero-banner-content\" role=\"note\">\n <slot />\n </div>\n <div class=\"goa-hero-banner-actions\">\n <slot name=\"actions\" />\n </div>\n </goa-page-block>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .goa-hero {\n background: var(--hero-banner-background-color);\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n flex-direction: column;\n color: var(--hero-banner-text-color, var(--goa-color-text-default));\n background-position: center center;\n width: 100%;\n padding: var(--goa-space-3xl) 0;\n }\n\n .goa-hero.with-image {\n border-bottom: 8px solid var(--goa-color-brand-default);\n justify-content: flex-end;\n background: unset;\n background-image: linear-gradient(\n rgba(0, 0, 0, 0) 0%,\n rgba(0, 0, 0, 0.4) 40%,\n rgba(0, 0, 0, 0.6) 100%\n ),\n var(--hero-background-url);\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n color: var(--hero-banner-text-color, var(--goa-color-text-light));\n }\n\n h1 {\n font: var(--goa-typography-heading-xl);\n margin: 0;\n }\n\n .goa-hero-banner-content {\n font: var(--goa-typography-body-l);\n margin: var(--goa-space-l) 0 0;\n }\n\n .goa-hero-banner-actions {\n margin: var(--goa-space-l) 0 0;\n }\n</style>\n","<svelte:options customElement=\"goa-icon-button\" />\n\n<script lang=\"ts\">\n import { typeValidator, toBoolean } from \"../../common/utils\";\n import type { IconSize, IconTheme, GoAIconType } from \"../icon/Icon.svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount } from \"svelte\";\n\n // Validator\n const [Variants, validateVariant] = typeValidator(\n \"Icon Button Variant\",\n [\"color\", \"nocolor\", \"dark\", \"destructive\"],\n true,\n );\n\n type Variant = (typeof Variants)[number];\n\n // required\n export let icon: GoAIconType;\n\n // optional\n export let size: IconSize = \"medium\";\n export let theme: IconTheme = \"outline\";\n export let variant: Variant = \"color\";\n export let title: string = \"\";\n export let testid: string = \"\";\n export let disabled: string = \"false\";\n export let inverted: string = \"false\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // private\n $: css = `${variant} ${isInverted ? \"inverted\" : \"\"}`;\n $: isDisabled = toBoolean(disabled);\n $: isInverted = toBoolean(inverted);\n $: _paddingSize = {\n small: \"0.25rem\",\n medium: \"0.25rem\",\n large: \"0.5rem\",\n }[size];\n\n function handleClick(e) {\n e.target.dispatchEvent(\n new CustomEvent(\"_click\", { composed: true, detail: { event: e } }),\n );\n }\n\n onMount(() => {\n validateVariant(variant);\n });\n</script>\n\n<button\n style=\"{calculateMargin(mt, mr, mb, ml)}; --pading-size: {_paddingSize}\"\n {title}\n disabled={isDisabled}\n class={css}\n data-testid={testid}\n on:click={handleClick}\n>\n <goa-icon {title} type={icon} {size} {theme} inverted={isInverted} />\n</button>\n\n<style>\n :host {\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n button,\n button * {\n box-sizing: border-box;\n }\n\n button {\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n justify-content: center;\n background: transparent;\n cursor: pointer;\n border: none;\n border-radius: var(--goa-border-radius-m);\n padding: var(--pading-size);\n }\n\n /* Primary */\n .color,\n .dark {\n color: var(--goa-color-interactive-default);\n fill: var(--goa-color-interactive-default);\n cursor: pointer;\n transition:\n background-color 100ms ease-in,\n transform 100ms ease-in;\n }\n\n .dark:not(.inverted) {\n color: unset;\n }\n\n button:hover:not(.destructive) {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n outline: none;\n }\n\n button:focus:not(.destructive),\n button:active:not(.destructive) {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-interactive-focus);\n color: var(--goa-color-interactive-focus);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n outline: none;\n }\n\n .color.inverted:hover {\n background-color: var(--goa-color-interactive-hover);\n }\n\n .destructive {\n color: var(--goa-color-emergency-dark);\n fill: var(--goa-color-emergency-dark);\n }\n\n .destructive:hover {\n background-color: var(--goa-color-emergency-light);\n border-color: var(--goa-color-emergency-light);\n outline: none;\n }\n\n .destructive:focus,\n .destructive:active {\n background-color: var(--goa-color-emergency-light);\n border-color: var(--goa-color-interactive-focus);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n outline: none;\n }\n\n button:disabled {\n pointer-events: none;\n opacity: 0.5;\n transform: none;\n cursor: default;\n }\n\n button:disabled:hover {\n background-color: transparent;\n }\n\n button.dark:hover {\n background-color: rgba(0, 0, 0, 0.3);\n }\n\n button.dark:focus,\n button.dark:active {\n background-color: rgba(0, 0, 0, 0.3);\n box-shadow: 0 0 0 3px var(--goa-color-greyscale-white);\n }\n</style>\n","<svelte:options customElement=\"goa-icon\" />\n\n<script lang=\"ts\" context=\"module\">\n export type IconSize = \"small\" | \"medium\" | \"large\" | \"xlarge\";\n export type IconVariant = \"primary\" | \"secondary\" | \"tertiary\";\n export type IconTheme = \"outline\" | \"filled\" | \"sharp\";\n\n export type GoAIconType =\n | \"accessibility\"\n | \"add-circle\"\n | \"add\"\n | \"airplane\"\n | \"alarm\"\n | \"albums\"\n | \"alert-circle\"\n | \"alert\"\n | \"american-football\"\n | \"analytics\"\n | \"aperture\"\n | \"apps\"\n | \"archive\"\n | \"arrow-back-circle\"\n | \"arrow-back\"\n | \"arrow-down-circle\"\n | \"arrow-down\"\n | \"arrow-forward-circle\"\n | \"arrow-forward\"\n | \"arrow-redo-circle\"\n | \"arrow-redo\"\n | \"arrow-undo-circle\"\n | \"arrow-undo\"\n | \"arrow-up-circle\"\n | \"arrow-up\"\n | \"at-circle\"\n | \"at\"\n | \"attach\"\n | \"backspace\"\n | \"bag-add\"\n | \"bag-check\"\n | \"bag-handle\"\n | \"bag\"\n | \"bag-remove\"\n | \"balloon\"\n | \"ban\"\n | \"bandage\"\n | \"bar-chart\"\n | \"barbell\"\n | \"barcode\"\n | \"baseball\"\n | \"basket\"\n | \"basketball\"\n | \"battery-charging\"\n | \"battery-dead\"\n | \"battery-full\"\n | \"battery-half\"\n | \"beaker\"\n | \"bed\"\n | \"beer\"\n | \"bicycle\"\n | \"bluetooth\"\n | \"boat\"\n | \"body\"\n | \"bonfire\"\n | \"book\"\n | \"bookmark\"\n | \"bookmarks\"\n | \"bowling-ball\"\n | \"briefcase\"\n | \"browsers\"\n | \"brush\"\n | \"bug\"\n | \"build\"\n | \"bulb\"\n | \"bus\"\n | \"business\"\n | \"cafe\"\n | \"calculator\"\n | \"calendar-clear\"\n | \"calendar-number\"\n | \"calendar\"\n | \"call\"\n | \"camera\"\n | \"camera-reverse\"\n | \"car\"\n | \"car-sport\"\n | \"card\"\n | \"caret-back-circle\"\n | \"caret-back\"\n | \"caret-down-circle\"\n | \"caret-down\"\n | \"caret-forward-circle\"\n | \"caret-forward\"\n | \"caret-up-circle\"\n | \"caret-up\"\n | \"cart\"\n | \"cash\"\n | \"cellular\"\n | \"chatbox-ellipses\"\n | \"chatbox\"\n | \"chatbubble-ellipses\"\n | \"chatbubble\"\n | \"chatbubbles\"\n | \"checkbox\"\n | \"checkmark-circle\"\n | \"checkmark-done-circle\"\n | \"checkmark-done\"\n | \"chevron-back-circle\"\n | \"chevron-back\"\n | \"chevron-down-circle\"\n | \"chevron-down\"\n | \"chevron-forward-circle\"\n | \"chevron-forward\"\n | \"chevron-up-circle\"\n | \"chevron-up\"\n | \"clipboard\"\n | \"close-circle\"\n | \"close\"\n | \"cloud-circle\"\n | \"cloud-done\"\n | \"cloud-download\"\n | \"cloud-offline\"\n | \"cloud\"\n | \"cloud-upload\"\n | \"cloudy-night\"\n | \"cloudy\"\n | \"code-download\"\n | \"code\"\n | \"code-slash\"\n | \"code-working\"\n | \"cog\"\n | \"color-fill\"\n | \"color-filter\"\n | \"color-palette\"\n | \"color-wand\"\n | \"compass\"\n | \"construct\"\n | \"contract\"\n | \"contrast\"\n | \"copy\"\n | \"create\"\n | \"crop\"\n | \"cube\"\n | \"cut\"\n | \"desktop\"\n | \"diamond\"\n | \"dice\"\n | \"disc\"\n | \"document-attach\"\n | \"document-lock\"\n | \"document\"\n | \"document-text\"\n | \"documents\"\n | \"download\"\n | \"duplicate\"\n | \"ear\"\n | \"earth\"\n | \"easel\"\n | \"egg\"\n | \"ellipse\"\n | \"ellipsis-horizontal-circle\"\n | \"ellipsis-horizontal\"\n | \"ellipsis-vertical-circle\"\n | \"ellipsis-vertical\"\n | \"enter\"\n | \"exit\"\n | \"expand\"\n | \"extension-puzzle\"\n | \"eye-off\"\n | \"eye\"\n | \"eyedrop\"\n | \"fast-food\"\n | \"female\"\n | \"file-tray-full\"\n | \"file-tray\"\n | \"file-tray-stacked\"\n | \"filenames.ps1\"\n | \"film\"\n | \"filter-circle\"\n | \"filter\"\n | \"finger-print\"\n | \"fish\"\n | \"fitness\"\n | \"flag\"\n | \"flame\"\n | \"flash-off\"\n | \"flash\"\n | \"flashlight\"\n | \"flask\"\n | \"flower\"\n | \"folder-open\"\n | \"folder\"\n | \"football\"\n | \"footsteps\"\n | \"funnel\"\n | \"game-controller\"\n | \"gift\"\n | \"git-branch\"\n | \"git-commit\"\n | \"git-compare\"\n | \"git-merge\"\n | \"git-network\"\n | \"git-pull-request\"\n | \"glasses\"\n | \"globe\"\n | \"golf\"\n | \"grid\"\n | \"hammer\"\n | \"hand-left\"\n | \"hand-right\"\n | \"happy\"\n | \"hardware-chip\"\n | \"headset\"\n | \"heart-circle\"\n | \"heart-dislike-circle\"\n | \"heart-dislike\"\n | \"heart-half\"\n | \"heart\"\n | \"help-buoy\"\n | \"help-circle\"\n | \"help\"\n | \"home\"\n | \"hourglass\"\n | \"ice-cream\"\n | \"id-card\"\n | \"image\"\n | \"images\"\n | \"infinite\"\n | \"information-circle\"\n | \"information\"\n | \"invert-mode\"\n | \"journal\"\n | \"key\"\n | \"keypad\"\n | \"language\"\n | \"laptop\"\n | \"layers\"\n | \"leaf\"\n | \"library\"\n | \"link\"\n | \"list-circle\"\n | \"list\"\n | \"locate\"\n | \"location\"\n | \"lock-closed\"\n | \"lock-open\"\n | \"log-in\"\n | \"log-out\"\n | \"magnet\"\n | \"mail-open\"\n | \"mail\"\n | \"mail-unread\"\n | \"male-female\"\n | \"male\"\n | \"man\"\n | \"map\"\n | \"medal\"\n | \"medical\"\n | \"medkit\"\n | \"megaphone\"\n | \"menu\"\n | \"mic-circle\"\n | \"mic-off-circle\"\n | \"mic-off\"\n | \"mic\"\n | \"moon\"\n | \"move\"\n | \"musical-note\"\n | \"musical-notes\"\n | \"navigate-circle\"\n | \"navigate\"\n | \"newspaper\"\n | \"notifications-circle\"\n | \"notifications-off-circle\"\n | \"notifications-off\"\n | \"notifications\"\n | \"nuclear\"\n | \"nutrition\"\n | \"open\"\n | \"options\"\n | \"paper-plane\"\n | \"partly-sunny\"\n | \"pause-circle\"\n | \"pause\"\n | \"paw\"\n | \"people-circle\"\n | \"people\"\n | \"person-add\"\n | \"person-circle\"\n | \"person\"\n | \"person-remove\"\n | \"phone-landscape\"\n | \"phone-portrait\"\n | \"pie-chart\"\n | \"pin\"\n | \"pint\"\n | \"pizza\"\n | \"planet\"\n | \"play-back-circle\"\n | \"play-back\"\n | \"play-circle\"\n | \"play-forward-circle\"\n | \"play-forward\"\n | \"play\"\n | \"play-skip-back-circle\"\n | \"play-skip-back\"\n | \"play-skip-forward-circle\"\n | \"play-skip-forward\"\n | \"podium\"\n | \"power\"\n | \"pricetag\"\n | \"pricetags\"\n | \"print\"\n | \"prism\"\n | \"pulse\"\n | \"push\"\n | \"qr-code\"\n | \"radio-button-off\"\n | \"radio-button-on\"\n | \"radio\"\n | \"rainy\"\n | \"reader\"\n | \"receipt\"\n | \"recording\"\n | \"refresh-circle\"\n | \"refresh\"\n | \"reload-circle\"\n | \"reload\"\n | \"remove-circle\"\n | \"reorder-four\"\n | \"reorder-three\"\n | \"reorder-two\"\n | \"repeat\"\n | \"resize\"\n | \"restaurant\"\n | \"return-down-back\"\n | \"return-down-forward\"\n | \"return-up-back\"\n | \"return-up-forward\"\n | \"ribbon\"\n | \"rocket\"\n | \"rose\"\n | \"sad\"\n | \"save\"\n | \"scale\"\n | \"scan-circle\"\n | \"scan\"\n | \"school\"\n | \"search-circle\"\n | \"search\"\n | \"send\"\n | \"server\"\n | \"settings\"\n | \"shapes\"\n | \"share\"\n | \"share-social\"\n | \"shield-checkmark\"\n | \"shield-half\"\n | \"shield\"\n | \"shirt\"\n | \"shuffle\"\n | \"skull\"\n | \"snow\"\n | \"sparkles\"\n | \"speedometer\"\n | \"square\"\n | \"star-half\"\n | \"star\"\n | \"stats-chart\"\n | \"stop-circle\"\n | \"stop\"\n | \"stopwatch\"\n | \"storefront\"\n | \"subway\"\n | \"sunny\"\n | \"swap-horizontal\"\n | \"swap-vertical\"\n | \"sync-circle\"\n | \"sync\"\n | \"tablet-landscape\"\n | \"tablet-portrait\"\n | \"telescope\"\n | \"tennisball\"\n | \"terminal\"\n | \"text\"\n | \"thermometer\"\n | \"thumbs-down\"\n | \"thumbs-up\"\n | \"thunderstorm\"\n | \"ticket\"\n | \"time\"\n | \"timer\"\n | \"today\"\n | \"toggle\"\n | \"trail-sign\"\n | \"train\"\n | \"transgender\"\n | \"trash-bin\"\n | \"trash\"\n | \"trending-down\"\n | \"trending-up\"\n | \"triangle\"\n | \"trophy\"\n | \"tv\"\n | \"umbrella\"\n | \"unlink\"\n | \"videocam-off\"\n | \"videocam\"\n | \"volume-high\"\n | \"volume-low\"\n | \"volume-medium\"\n | \"volume-mute\"\n | \"volume-off\"\n | \"walk\"\n | \"wallet\"\n | \"warning\"\n | \"watch\"\n | \"water\"\n | \"wifi\"\n | \"wine\"\n | \"woman\"\n | \"logo-alipay\"\n | \"logo-amazon\"\n | \"logo-amplify\"\n | \"logo-android\"\n | \"logo-angular\"\n | \"logo-apple\"\n | \"logo-apple-appstore\"\n | \"logo-apple-ar\"\n | \"logo-behance\"\n | \"logo-bitbucket\"\n | \"logo-bitcoin\"\n | \"logo-buffer\"\n | \"logo-capacitor\"\n | \"logo-chrome\"\n | \"logo-closed-captioning\"\n | \"logo-codepen\"\n | \"logo-css3\"\n | \"logo-designernews\"\n | \"logo-deviantart\"\n | \"logo-discord\"\n | \"logo-docker\"\n | \"logo-dribbble\"\n | \"logo-dropbox\"\n | \"logo-edge\"\n | \"logo-electron\"\n | \"logo-euro\"\n | \"logo-facebook\"\n | \"logo-figma\"\n | \"logo-firebase\"\n | \"logo-firefox\"\n | \"logo-flickr\"\n | \"logo-foursquare\"\n | \"logo-github\"\n | \"logo-gitlab\"\n | \"logo-google\"\n | \"logo-google-playstore\"\n | \"logo-hackernews\"\n | \"logo-html5\"\n | \"logo-instagram\"\n | \"logo-ionic\"\n | \"logo-ionitron\"\n | \"logo-javascript\"\n | \"logo-laravel\"\n | \"logo-linkedin\"\n | \"logo-markdown\"\n | \"logo-mastodon\"\n | \"logo-medium\"\n | \"logo-microsoft\"\n | \"logo-no-smoking\"\n | \"logo-nodejs\"\n | \"logo-npm\"\n | \"logo-octocat\"\n | \"logo-paypal\"\n | \"logo-pinterest\"\n | \"logo-playstation\"\n | \"logo-pwa\"\n | \"logo-python\"\n | \"logo-react\"\n | \"logo-reddit\"\n | \"logo-rss\"\n | \"logo-sass\"\n | \"logo-skype\"\n | \"logo-slack\"\n | \"logo-snapchat\"\n | \"logo-soundcloud\"\n | \"logo-stackoverflow\"\n | \"logo-steam\"\n | \"logo-stencil\"\n | \"logo-tableau\"\n | \"logo-tiktok\"\n | \"logo-tumblr\"\n | \"logo-tux\"\n | \"logo-twitch\"\n | \"logo-twitter\"\n | \"logo-usd\"\n | \"logo-venmo\"\n | \"logo-vercel\"\n | \"logo-vimeo\"\n | \"logo-vk\"\n | \"logo-vue\"\n | \"logo-web-component\"\n | \"logo-wechat\"\n | \"logo-whatsapp\"\n | \"logo-windows\"\n | \"logo-wordpress\"\n | \"logo-xbox\"\n | \"logo-xing\"\n | \"logo-yahoo\"\n | \"logo-yen\"\n | \"logo-youtube\";\n\n type GoAIconOverridesType =\n | \"pencil\"\n | \"checkmark\"\n | \"remove\"\n | \"goa-file\"\n | \"goa-text\"\n | \"goa-pdf\"\n | \"goa-doc\"\n | \"goa-ppt\"\n | \"goa-xls\"\n | \"goa-zip\"\n | \"goa-video\"\n | \"goa-audio\"\n | \"goa-image\";\n</script>\n\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { cssVar, toBoolean } from \"../../common/utils\";\n import { calculateMargin } from \"../../common/styling\";\n\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Required\n\n export let type: GoAIconType & GoAIconOverridesType;\n\n // Optional\n\n export let size: IconSize = \"medium\";\n export let theme: IconTheme = \"outline\";\n export let inverted: string = \"false\";\n export let fillcolor: string = \"\";\n export let opacity: number = 1;\n export let title: string = \"\";\n export let testid: string = \"\";\n export let arialabel: string = \"\";\n export let ariacontrols: string = \"\";\n export let ariaexpanded: string = \"\";\n export let role: string = \"img\";\n\n // Reactive\n\n $: _isInverted = toBoolean(inverted);\n $: _ariaExpanded = toBoolean(ariaexpanded);\n\n // Private\n\n const _iconOverrides: Record<GoAIconOverridesType, string> = {\n pencil: `<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M16.1442 5.47956L12.5355 1.87088L13.7196 0.686776C14.0391 0.367257 14.4385 0.212197 14.9178 0.221594C15.3971 0.230992 15.7965 0.39545 16.116 0.714969L17.3283 1.92726C17.6478 2.24678 17.8076 2.64148 17.8076 3.11136C17.8076 3.58124 17.6478 3.97594 17.3283 4.29546L16.1442 5.47956ZM1.03951 17.8424C0.795173 17.8424 0.593125 17.7626 0.433365 17.6028C0.273605 17.443 0.193726 17.241 0.193726 16.9966V14.5721C0.193726 14.4593 0.212521 14.356 0.250112 14.262C0.287702 14.168 0.353485 14.074 0.447461 13.9801L11.4689 2.93435L15.0776 6.54303L4.05615 17.5887C3.96217 17.6827 3.8682 17.7485 3.77422 17.7861C3.68024 17.8236 3.57687 17.8424 3.4641 17.8424H1.03951Z\" fill=\"currentcolor\"/> </svg>`,\n checkmark: `<svg width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.20129 11.5368L15.9974 0.341265C16.3611 -0.0743717 16.9929 -0.116489 17.4085 0.247193C17.8241 0.610875 17.8663 1.24264 17.5026 1.65827L7.00258 13.6583C6.82032 13.8666 6.5599 13.99 6.28328 13.9992C6.00666 14.0084 5.7386 13.9026 5.54289 13.7069L1.04289 9.20688C0.652369 8.81635 0.652369 8.18319 1.04289 7.79266C1.43342 7.40214 2.06658 7.40214 2.45711 7.79266L6.20129 11.5368Z\" fill=\"currentcolor\"/> </svg>`,\n remove: `<svg width=\"16\" height=\"20\" viewBox=\"0 0 16 1\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M1.5 -0.000244141C0.947715 -0.000244141 0.5 0.447471 0.5 0.999756C0.5 1.55204 0.947715 1.99976 1.5 1.99976H15C15.5523 1.99976 16 1.55204 16 0.999756C16 0.447471 15.5523 -0.000244141 15 -0.000244141H1.5Z\" fill=\"currentcolor\"/> </svg>`,\n \"goa-file\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <g clip-path=\"url(#clip0_1357_108691)\"> <path d=\"M38.741 14C38.541 13.07 38.081 12.22 37.401 11.54L36.861 11L27.861 2L27.321 1.46C26.641 0.78 25.781 0.32 24.861 0.12C24.511 0.04 24.151 0 23.791 0H5.86096C3.10096 0 0.860962 2.24 0.860962 5V43C0.860962 45.76 3.10096 48 5.86096 48H33.861C36.621 48 38.861 45.76 38.861 43V15.07C38.861 14.71 38.811 14.35 38.741 14ZM35.041 12H29.871C28.221 12 26.871 10.65 26.871 9V3.83L35.041 12ZM36.871 43C36.871 44.65 35.521 46 33.871 46H5.87097C4.22097 46 2.87097 44.65 2.87097 43V5C2.87097 3.35 4.22097 2 5.87097 2H23.801C24.171 2 24.531 2.07 24.871 2.2V9C24.871 11.76 27.111 14 29.871 14H36.671C36.801 14.34 36.871 14.7 36.871 15.07V43Z\" fill=\"currentcolor\"/> </g> <defs> <clipPath id=\"clip0_1357_108691\"><rect width=\"38\" height=\"48\" fill=\"white\" transform=\"translate(0.861328)\"/></clipPath></defs></svg>`,\n \"goa-text\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.7953 14C38.5953 13.07 38.1353 12.22 37.4553 11.54L36.9153 11L27.9153 2L27.3753 1.46C26.6953 0.78 25.8353 0.32 24.9153 0.12C24.5653 0.04 24.2053 0 23.8453 0H5.91528C3.15528 0 0.915283 2.24 0.915283 5V43C0.915283 45.76 3.15528 48 5.91528 48H33.9153C36.6753 48 38.9153 45.76 38.9153 43V15.07C38.9153 14.71 38.8653 14.35 38.7953 14ZM35.0953 12H29.9253C28.2753 12 26.9253 10.65 26.9253 9V3.83L35.0953 12ZM36.9253 43C36.9253 44.65 35.5753 46 33.9253 46H5.91528C4.26528 46 2.91528 44.65 2.91528 43V5C2.91528 3.35 4.26528 2 5.91528 2H23.8453C24.2153 2 24.5753 2.07 24.9153 2.2V9C24.9153 11.76 27.1553 14 29.9153 14H36.7153C36.8453 14.34 36.9153 14.7 36.9153 15.07V43H36.9253Z\" fill=\"currentcolor\"/> <path d=\"M27.9153 34H11.9153C11.363 34 10.9153 34.4477 10.9153 35C10.9153 35.5523 11.363 36 11.9153 36H27.9153C28.4676 36 28.9153 35.5523 28.9153 35C28.9153 34.4477 28.4676 34 27.9153 34Z\" fill=\"currentcolor\"/> <path d=\"M27.9153 26H11.9153C11.363 26 10.9153 26.4477 10.9153 27C10.9153 27.5523 11.363 28 11.9153 28H27.9153C28.4676 28 28.9153 27.5523 28.9153 27C28.9153 26.4477 28.4676 26 27.9153 26Z\" fill=\"currentcolor\"/> </svg>`,\n \"goa-pdf\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M37.8861 14C37.6861 13.07 37.2261 12.22 36.5461 11.54L36.0061 11L27.0061 2L26.4661 1.46C25.7861 0.78 24.9261 0.32 24.0061 0.12C23.6561 0.04 23.2961 0 22.9361 0H5.0061C2.2461 0 0.00610352 2.24 0.00610352 5V43C0.00610352 45.76 2.2461 48 5.0061 48H33.0061C35.7661 48 38.0061 45.76 38.0061 43V15.07C38.0061 14.71 37.9561 14.35 37.8861 14ZM34.1861 12H29.0161C27.3661 12 26.0161 10.65 26.0161 9V3.83L34.1861 12ZM36.0161 43C36.0161 44.65 34.6661 46 33.0161 46H5.0061C3.3561 46 2.0061 44.65 2.0061 43V5C2.0061 3.35 3.3561 2 5.0061 2H22.9361C23.3061 2 23.6661 2.07 24.0061 2.2V9C24.0061 11.76 26.2461 14 29.0061 14H35.8061C35.9361 14.34 36.0061 14.7 36.0061 15.07V43H36.0161Z\" fill=\"currentcolor\"/> <path d=\"M5.02611 27C5.02611 26.45 5.47611 26 6.02611 26H9.05611C11.1161 26 12.9261 27.06 12.9261 29.28C12.9261 31.5 11.2461 32.74 8.85611 32.74H7.25611V35.85C7.25611 36.47 6.75611 36.97 6.13611 36.97C5.51611 36.97 5.01611 36.47 5.01611 35.85V27.01L5.02611 27ZM7.26611 30.96H8.73611C9.91611 30.96 10.6561 30.53 10.6561 29.31C10.6561 28.22 9.90611 27.77 8.79611 27.77H7.25611V30.96H7.26611Z\" fill=\"currentcolor\"/> <path d=\"M15.0361 27C15.0361 26.45 15.4861 26 16.0361 26H18.8461C22.1761 26 24.0161 28.03 24.0161 31.25C24.0161 34.82 22.0961 36.96 18.7661 36.96H16.0361C15.4861 36.96 15.0361 36.51 15.0361 35.96V27ZM17.2961 35.2H18.7361C20.6861 35.2 21.6961 33.74 21.6961 31.28C21.6961 29.25 20.7861 27.79 18.7461 27.79H17.2861V35.2H17.2961Z\" fill=\"currentcolor\"/> <path d=\"M25.9761 27C25.9761 26.45 26.4261 26 26.9761 26H32.0861C32.5961 26 33.0061 26.41 33.0061 26.92C33.0061 27.43 32.5961 27.84 32.0861 27.84H28.1761V30.63H31.8161C32.3161 30.63 32.7161 31.03 32.7161 31.53C32.7161 32.03 32.3161 32.43 31.8161 32.43H28.1761V35.86C28.1761 36.47 27.6861 36.96 27.0761 36.96C26.4661 36.96 25.9761 36.47 25.9761 35.86V26.99V27Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-doc\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.6134 14C38.4134 13.07 37.9534 12.22 37.2734 11.54L36.7334 11L27.7334 2L27.1934 1.46C26.5134 0.78 25.6534 0.32 24.7334 0.12C24.3834 0.04 24.0234 0 23.6634 0H5.7334C2.9734 0 0.733398 2.24 0.733398 5V43C0.733398 45.76 2.9734 48 5.7334 48H33.7334C36.4934 48 38.7334 45.76 38.7334 43V15.07C38.7334 14.71 38.6834 14.35 38.6134 14ZM34.9134 12H29.7434C28.0934 12 26.7434 10.65 26.7434 9V3.83L34.9134 12ZM36.7434 43C36.7434 44.65 35.3934 46 33.7434 46H5.7334C4.0834 46 2.7334 44.65 2.7334 43V5C2.7334 3.35 4.0834 2 5.7334 2H23.6634C24.0334 2 24.3934 2.07 24.7334 2.2V9C24.7334 11.76 26.9734 14 29.7334 14H36.5334C36.6634 14.34 36.7334 14.7 36.7334 15.07V43H36.7434Z\" fill=\"currentcolor\"/> <path d=\"M13.7834 36.6406L10.9034 24.5806C10.6934 23.7206 11.3534 22.8906 12.2334 22.8906C12.8734 22.8906 13.4334 23.3406 13.5734 23.9706C14.4934 28.2306 15.3434 32.5006 15.6434 34.9706H15.6634C16.0934 32.6806 17.3834 27.7106 18.2434 24.0806C18.4134 23.3806 19.0334 22.8906 19.7534 22.8906C20.4634 22.8906 21.0834 23.3706 21.2534 24.0606C22.0734 27.3606 23.3634 32.5806 23.7534 34.8406H23.7734C24.1834 32.0406 25.4534 26.8306 26.1134 23.8706C26.2434 23.3006 26.7434 22.8906 27.3334 22.8906C28.1534 22.8906 28.7434 23.6606 28.5434 24.4506L25.4134 36.6706C25.2134 37.4606 24.5034 38.0106 23.6934 38.0106C22.8634 38.0106 22.1534 37.4506 21.9634 36.6406C21.1734 33.2806 20.0434 28.8506 19.6434 26.6306H19.6234C19.1834 28.9106 18.0234 33.4506 17.2234 36.6606C17.0234 37.4506 16.3134 38.0006 15.5034 38.0006C14.6834 38.0006 13.9634 37.4406 13.7734 36.6406H13.7834Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-ppt\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.2498 14C38.0498 13.07 37.5898 12.22 36.9098 11.54L36.3698 11L27.3698 2L26.8298 1.46C26.1497 0.78 25.2898 0.32 24.3698 0.12C24.0198 0.04 23.6598 0 23.2998 0H5.36975C2.60975 0 0.369751 2.24 0.369751 5V43C0.369751 45.76 2.60975 48 5.36975 48H33.3698C36.1297 48 38.3698 45.76 38.3698 43V15.07C38.3698 14.71 38.3198 14.35 38.2498 14ZM34.5498 12H29.3798C27.7298 12 26.3798 10.65 26.3798 9V3.83L34.5498 12ZM36.3797 43C36.3797 44.65 35.0298 46 33.3797 46H5.36975C3.71975 46 2.36975 44.65 2.36975 43V5C2.36975 3.35 3.71975 2 5.36975 2H23.2998C23.6698 2 24.0298 2.07 24.3698 2.2V9C24.3698 11.76 26.6098 14 29.3698 14H36.1698C36.2998 14.34 36.3698 14.7 36.3698 15.07V43H36.3797Z\" fill=\"currentcolor\"/> <path d=\"M14.0798 24.8906C14.0798 23.7906 14.9798 22.8906 16.0798 22.8906H19.4698C22.3098 22.8906 24.6598 24.3406 24.6598 27.2906C24.6598 30.2406 22.4198 31.9306 19.2298 31.9306H16.7698V36.6606C16.7698 37.4006 16.1698 38.0006 15.4298 38.0006C14.6898 38.0006 14.0898 37.4006 14.0898 36.6606V24.8906H14.0798ZM16.7598 29.8206H19.0698C20.8098 29.8206 21.9498 29.1806 21.9498 27.3606C21.9498 25.7306 20.7798 25.0306 19.1298 25.0306H16.7498V29.8306L16.7598 29.8206Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-xls\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.3407 14C38.1407 13.07 37.6807 12.22 37.0007 11.54L36.4607 11L27.4607 2L26.9207 1.46C26.2407 0.78 25.3807 0.32 24.4607 0.12C24.1107 0.04 23.7507 0 23.3907 0H5.46069C2.70069 0 0.460693 2.24 0.460693 5V43C0.460693 45.76 2.70069 48 5.46069 48H33.4607C36.2207 48 38.4607 45.76 38.4607 43V15.07C38.4607 14.71 38.4107 14.35 38.3407 14ZM34.6407 12H29.4707C27.8207 12 26.4707 10.65 26.4707 9V3.83L34.6407 12ZM36.4707 43C36.4707 44.65 35.1207 46 33.4707 46H5.46069C3.81069 46 2.46069 44.65 2.46069 43V5C2.46069 3.35 3.81069 2 5.46069 2H23.3907C23.7607 2 24.1207 2.07 24.4607 2.2V9C24.4607 11.76 26.7007 14 29.4607 14H36.2607C36.3907 14.34 36.4607 14.7 36.4607 15.07V43H36.4707Z\" fill=\"currentcolor\"/> <path d=\"M23.4107 38.0006C22.9407 38.0006 22.5107 37.7506 22.2707 37.3406L19.3907 32.2806H19.3707L16.4607 37.3906C16.2507 37.7706 15.8407 38.0006 15.4107 38.0006C14.4707 38.0006 13.8907 36.9706 14.3807 36.1606L17.9207 30.3906L14.5807 24.8606C14.0607 23.9906 14.6807 22.8906 15.6907 22.8906C16.1607 22.8906 16.5907 23.1406 16.8207 23.5406L19.5307 28.2806L19.5507 28.2606L22.3507 23.4806C22.5607 23.1206 22.9507 22.8906 23.3807 22.8906C24.3107 22.8906 24.8807 23.9106 24.3907 24.7006L21.0307 30.1206L24.5407 36.0206C25.0607 36.8906 24.4307 38.0006 23.4207 38.0006H23.4107Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-zip\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.7043 14C38.5043 13.07 38.0443 12.22 37.3643 11.54L36.8243 11L27.8243 2L27.2843 1.46C26.6043 0.78 25.7443 0.32 24.8243 0.12C24.4743 0.04 24.1143 0 23.7543 0H5.82434C3.06434 0 0.824341 2.24 0.824341 5V43C0.824341 45.76 3.06434 48 5.82434 48H33.8243C36.5843 48 38.8243 45.76 38.8243 43V15.07C38.8243 14.71 38.7743 14.35 38.7043 14ZM35.0043 12H29.8343C28.1843 12 26.8343 10.65 26.8343 9V3.83L35.0043 12ZM36.8343 43C36.8343 44.65 35.4843 46 33.8343 46H5.82434C4.17434 46 2.82434 44.65 2.82434 43V5C2.82434 3.35 4.17434 2 5.82434 2H23.7543C24.1243 2 24.4843 2.07 24.8243 2.2V9C24.8243 11.76 27.0643 14 29.8243 14H36.6243C36.7543 14.34 36.8243 14.7 36.8243 15.07V43H36.8343Z\" fill=\"currentcolor\"/> <path d=\"M14.8243 20H12.8243V22H14.8243V20Z\" fill=\"currentcolor\"/> <path d=\"M12.8243 18H10.8243V20H12.8243V18Z\" fill=\"currentcolor\"/> <path d=\"M14.8243 16H12.8243V18H14.8243V16Z\" fill=\"currentcolor\"/> <path d=\"M12.8243 14H10.8243V16H12.8243V14Z\" fill=\"currentcolor\"/> <path d=\"M14.8243 12H12.8243V14H14.8243V12Z\" fill=\"currentcolor\"/> <path d=\"M12.8243 10H10.8243V12H12.8243V10Z\" fill=\"currentcolor\"/> <path d=\"M14.8243 8H12.8243V10H14.8243V8Z\" fill=\"currentcolor\"/> <path d=\"M12.8243 6H10.8243V8H12.8243V6Z\" fill=\"currentcolor\"/> <path d=\"M14.8243 4H12.8243V6H14.8243V4Z\" fill=\"currentcolor\"/> <path d=\"M12.8243 2H10.8243V4H12.8243V2Z\" fill=\"currentcolor\"/> <path d=\"M17.7244 32.14L15.4744 23.69C15.3644 23.29 15.0044 23 14.5844 23H11.0644C10.6444 23 10.2744 23.28 10.1744 23.69L7.92435 32.14C7.30435 35.17 9.62435 37.97 12.8244 38C16.0144 37.98 18.3444 35.18 17.7244 32.14ZM15.1944 34.89C14.6244 35.58 13.7644 35.98 12.8244 35.99C11.8844 35.98 11.0244 35.58 10.4544 34.89C9.92435 34.24 9.71435 33.42 9.87435 32.59L11.8944 25H13.7544L15.7744 32.59C15.9344 33.42 15.7244 34.24 15.1944 34.89Z\" fill=\"currentcolor\"/> <path d=\"M13.8243 32H11.8243C11.2721 32 10.8243 32.4477 10.8243 33C10.8243 33.5523 11.2721 34 11.8243 34H13.8243C14.3766 34 14.8243 33.5523 14.8243 33C14.8243 32.4477 14.3766 32 13.8243 32Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-video\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M37.977 14C37.777 13.07 37.317 12.22 36.637 11.54L36.097 11L27.097 2L26.557 1.46C25.877 0.78 25.017 0.32 24.097 0.12C23.747 0.04 23.387 0 23.027 0H5.09705C2.33705 0 0.0970459 2.24 0.0970459 5V43C0.0970459 45.76 2.33705 48 5.09705 48H33.097C35.857 48 38.097 45.76 38.097 43V15.07C38.097 14.71 38.047 14.35 37.977 14ZM34.277 12H29.107C27.457 12 26.107 10.65 26.107 9V3.83L34.277 12ZM36.107 43C36.107 44.65 34.757 46 33.107 46H5.09705C3.44705 46 2.09705 44.65 2.09705 43V5C2.09705 3.35 3.44705 2 5.09705 2H23.027C23.397 2 23.757 2.07 24.097 2.2V9C24.097 11.76 26.337 14 29.097 14H35.897C36.027 14.34 36.097 14.7 36.097 15.07V43H36.107Z\" fill=\"currentcolor\"/> <path d=\"M22.097 26.0002V29.0102C22.097 29.7802 22.927 30.2602 23.587 29.8802L25.077 29.0302L28.087 27.3202V34.6902L25.077 32.9802L23.587 32.1302C22.917 31.7502 22.097 32.2302 22.097 33.0002V35.9902H10.097V25.9902H22.097M22.097 23.9902H10.097C8.99705 23.9902 8.09705 24.8902 8.09705 25.9902V35.9902C8.09705 37.0902 8.99705 37.9902 10.097 37.9902H22.097C23.197 37.9902 24.097 37.0902 24.097 35.9902V34.7202L27.107 36.4302C27.427 36.6102 27.767 36.6902 28.087 36.6902C29.137 36.6902 30.087 35.8502 30.087 34.6902V27.3202C30.087 26.1502 29.127 25.3202 28.087 25.3202C27.757 25.3202 27.417 25.4002 27.107 25.5802L24.097 27.2902V25.9902C24.097 24.8902 23.197 23.9902 22.097 23.9902Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-audio\": `<svg width=\"39\" height=\"49\" viewBox=\"0 0 39 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.0679 14.2305C37.8679 13.3005 37.4079 12.4505 36.7279 11.7705L36.1879 11.2305L27.1879 2.23047L26.6479 1.69047C25.9679 1.01047 25.1079 0.550469 24.1879 0.350469C23.8379 0.270469 23.4779 0.230469 23.1179 0.230469H5.18793C2.42793 0.230469 0.187927 2.47047 0.187927 5.23047V43.2305C0.187927 45.9905 2.42793 48.2305 5.18793 48.2305H33.1879C35.9479 48.2305 38.1879 45.9905 38.1879 43.2305V15.3005C38.1879 14.9405 38.1379 14.5805 38.0679 14.2305ZM34.3679 12.2305H29.1979C27.5479 12.2305 26.1979 10.8805 26.1979 9.23047V4.06047L34.3679 12.2305ZM36.1979 43.2305C36.1979 44.8805 34.8479 46.2305 33.1979 46.2305H5.19792C3.54792 46.2305 2.19792 44.8805 2.19792 43.2305V5.23047C2.19792 3.58047 3.54792 2.23047 5.19792 2.23047H23.1279C23.4979 2.23047 23.8579 2.30047 24.1979 2.43047V9.23047C24.1979 11.9905 26.4379 14.2305 29.1979 14.2305H35.9979C36.1279 14.5705 36.1979 14.9305 36.1979 15.3005V43.2305Z\" fill=\"currentcolor\"/> <path d=\"M20.1879 25.1189V37.3489L16.3479 34.6089L15.8279 34.2389H10.1879V28.2389H15.8279L16.3479 27.8689L20.1879 25.1289M20.1879 23.1289C19.7979 23.1289 19.3979 23.2489 19.0279 23.5089L15.1879 26.2489H10.1879C9.08793 26.2489 8.18793 27.1489 8.18793 28.2489V34.2489C8.18793 35.3489 9.08793 36.2489 10.1879 36.2489H15.1879L19.0279 38.9889C19.3879 39.2489 19.7879 39.3689 20.1879 39.3689C21.2279 39.3689 22.1979 38.5489 22.1979 37.3689V25.1389C22.1979 23.9589 21.2279 23.1389 20.1879 23.1389V23.1289Z\" fill=\"currentcolor\"/> <path d=\"M26.1381 23.707C26.6381 24.037 27.1081 24.417 27.5481 24.857C27.9881 25.297 28.3681 25.767 28.6981 26.267C29.0281 26.767 29.2981 27.287 29.5181 27.837C29.7381 28.387 29.8981 28.937 30.0081 29.507C30.1181 30.077 30.1681 30.647 30.1681 31.227C30.1681 31.807 30.1181 32.377 30.0081 32.947C29.8981 33.517 29.7381 34.077 29.5181 34.617C29.2981 35.157 29.0281 35.687 28.6981 36.187C28.3681 36.687 27.9881 37.157 27.5481 37.597C27.1081 38.037 26.6381 38.417 26.1381 38.747\" stroke=\"currentcolor\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\"/> </svg> `,\n \"goa-image\": `<svg width=\"39\" height=\"49\" viewBox=\"0 0 39 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.1588 14.2305C37.9588 13.3005 37.4988 12.4505 36.8188 11.7705L36.2788 11.2305L27.2788 2.23047L26.7388 1.69047C26.0588 1.01047 25.1988 0.550469 24.2788 0.350469C23.9288 0.270469 23.5688 0.230469 23.2088 0.230469H5.27881C2.51881 0.230469 0.278809 2.47047 0.278809 5.23047V43.2305C0.278809 45.9905 2.51881 48.2305 5.27881 48.2305H33.2788C36.0388 48.2305 38.2788 45.9905 38.2788 43.2305V15.3005C38.2788 14.9405 38.2288 14.5805 38.1588 14.2305ZM34.4588 12.2305H29.2888C27.6388 12.2305 26.2888 10.8805 26.2888 9.23047V4.06047L34.4588 12.2305ZM36.2888 43.2305C36.2888 44.8805 34.9388 46.2305 33.2888 46.2305H5.2888C3.6388 46.2305 2.2888 44.8805 2.2888 43.2305V5.23047C2.2888 3.58047 3.6388 2.23047 5.2888 2.23047H23.2188C23.5888 2.23047 23.9488 2.30047 24.2888 2.43047V9.23047C24.2888 11.9905 26.5288 14.2305 29.2888 14.2305H36.0888C36.2188 14.5705 36.2888 14.9305 36.2888 15.3005V43.2305Z\" fill=\"currentcolor\"/> <path d=\"M20.9985 28.2305C21.3585 28.2305 21.6485 28.4405 21.7885 28.7305L27.1085 36.7305C27.3185 37.0205 27.3185 37.4405 27.1785 37.7305C27.0385 38.0905 26.6785 38.2305 26.3185 38.2305H12.2385C11.8785 38.2305 11.5885 38.0905 11.3785 37.7305C11.2385 37.4405 11.2385 37.0205 11.4485 36.7305L14.8285 31.7305C14.9685 31.4405 15.3285 31.2305 15.6185 31.2305C15.9785 31.2305 16.2685 31.4405 16.4785 31.7305L17.3385 32.9405L20.1385 28.7305C20.3585 28.4405 20.6385 28.2305 20.9985 28.2305ZM20.9985 26.2305C20.0485 26.2305 19.1685 26.6905 18.5385 27.5305L18.4985 27.5805L18.4685 27.6305L17.1185 29.6605C16.6585 29.3805 16.1485 29.2405 15.6085 29.2405C14.6085 29.2405 13.6185 29.8205 13.1085 30.6905L9.79851 35.5905C9.17851 36.4505 9.08851 37.6705 9.57851 38.6305L9.60851 38.7005L9.6485 38.7705C10.2085 39.7005 11.1485 40.2405 12.2285 40.2405H26.3085C27.5185 40.2405 28.5385 39.6005 28.9985 38.5605C29.4385 37.6105 29.3385 36.4405 28.7485 35.6005L23.5085 27.7105C22.9885 26.8005 22.0485 26.2405 21.0085 26.2405L20.9985 26.2305Z\" fill=\"currentcolor\"/> <path d=\"M12.7788 23.2305C13.6088 23.2305 14.2788 23.9005 14.2788 24.7305C14.2788 25.5605 13.6088 26.2305 12.7788 26.2305C11.9488 26.2305 11.2788 25.5605 11.2788 24.7305C11.2788 23.9005 11.9488 23.2305 12.7788 23.2305ZM12.7788 21.2305C10.8488 21.2305 9.27881 22.8005 9.27881 24.7305C9.27881 26.6605 10.8488 28.2305 12.7788 28.2305C14.7088 28.2305 16.2788 26.6605 16.2788 24.7305C16.2788 22.8005 14.7088 21.2305 12.7788 21.2305Z\" fill=\"currentcolor\"/> </svg> `,\n } as const;\n\n function iconName(type: GoAIconType): string {\n const name =\n theme === \"filled\" || (type as string).indexOf(\"logo\") === 0\n ? type\n : `${type}-${theme}`;\n\n return name;\n }\n</script>\n\n<div\n {role}\n aria-label={arialabel}\n aria-controls={ariacontrols}\n aria-expanded={_ariaExpanded}\n class={`goa-icon goa-icon--${size}`}\n class:inverted={_isInverted}\n data-testid={testid}\n {title}\n style={`\n ${calculateMargin(mt, mr, mb, ml)}\n ${cssVar(\"--fill-color\", fillcolor)};\n ${cssVar(\"--opacity\", opacity)};\n `}\n>\n {#if type}\n {#if type in _iconOverrides}\n <div class=\"icon-override\">\n {@html _iconOverrides[type]}\n </div>\n {:else}\n <ion-icon name={iconName(type)} />\n {/if}\n {/if}\n</div>\n\n<style>\n :host {\n display: inline-flex;\n align-items: center;\n }\n\n ion-icon {\n pointer-events: none;\n width: 100%;\n height: 100%;\n }\n\n .goa-icon {\n fill: var(--fill-color);\n color: var(--fill-color);\n opacity: var(--opacity);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .goa-icon--small {\n width: var(--goa-icon-size-m);\n height: var(--goa-icon-size-m);\n }\n .goa-icon--medium {\n width: var(--goa-icon-size-l);\n height: var(--goa-icon-size-l);\n }\n .goa-icon--large {\n width: 2rem;\n height: 2rem;\n }\n .goa-icon--xlarge {\n width: 2.5rem;\n height: 2.5rem;\n }\n\n /* override height when a custom svg icon is used to ensure svg retains dims */\n .goa-icon:has(.icon-override) {\n height: fit-content;\n }\n\n .icon-override {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .inverted * {\n color: #fff;\n fill: #fff;\n }\n</style>\n","<svelte:options customElement=\"goa-input\" />\n\n<script lang=\"ts\" context=\"module\">\n export type GoAInputVariant = \"goa\" | \"bare\";\n</script>\n\n<script lang=\"ts\">\n import { typeValidator, toBoolean } from \"../../common/utils\";\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount, tick } from \"svelte\";\n\n // Validators\n const [Types, validateType] = typeValidator(\"Input type\", [\n \"text\",\n \"number\",\n \"password\",\n \"email\",\n \"date\",\n \"datetime-local\",\n \"month\",\n \"range\",\n \"search\",\n \"tel\",\n \"time\",\n \"url\",\n \"week\",\n ]);\n\n const [AutoCapitalize, validateAutoCapitalize] = typeValidator(\n \"Input auto capitalize\",\n [\"on\", \"off\", \"none\", \"sentences\", \"words\", \"characters\"],\n );\n\n // Types\n type Type = (typeof Types)[number];\n type AutoCapitalize = (typeof AutoCapitalize)[number];\n\n export let type: Type = \"text\";\n export let name: string = \"\";\n export let value: string = \"\";\n export let autocapitalize: AutoCapitalize = \"off\";\n export let placeholder: string = \"\";\n export let leadingicon: GoAIconType | null = null;\n export let trailingicon: GoAIconType | null = null;\n export let variant: GoAInputVariant = \"goa\";\n export let disabled: string = \"false\";\n export let handletrailingiconclick: string = \"false\";\n export let focused: string = \"false\";\n export let readonly: string = \"false\";\n export let error: string = \"false\";\n export let testid: string = \"\";\n export let width: string = \"30ch\";\n export let arialabel: string = \"\";\n export let arialabelledby: string = \"\";\n export let min: string = \"\";\n export let max: string = \"\";\n export let step: number = 1;\n export let prefix: string = \"\";\n export let suffix: string = \"\";\n export let debounce: number = 0;\n export let maxlength: number | null = null;\n export let id: string = \"\";\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n let _leadingContentSlot = false;\n let _trailingContentSlot = false;\n let _debounceId: any;\n let inputEl: HTMLElement;\n let _rootEl: HTMLElement;\n\n $: handlesTrailingIconClick = toBoolean(handletrailingiconclick);\n $: isFocused = toBoolean(focused);\n $: isReadonly = toBoolean(readonly);\n $: isError = toBoolean(error);\n $: isDisabled = toBoolean(disabled);\n\n // TODO: determine if this and the next reactive statement need to be reactive, as they are both\n // things that should only be run once\n $: if (isFocused && inputEl) {\n setTimeout(() => inputEl.focus(), 2);\n }\n\n $: if (inputEl && type === \"search\") {\n inputEl.addEventListener(\"search\", (e) => {\n onKeyUp(e);\n });\n }\n\n function onKeyUp(e: Event) {\n const input = e.target as HTMLInputElement;\n\n if (!input) return;\n if (isReadonly) return;\n\n if (_debounceId != null) {\n clearTimeout(_debounceId);\n }\n\n _debounceId = setTimeout(() => {\n input.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n bubbles: false,\n cancelable: true,\n detail: { name, value: input.value },\n }),\n );\n }, debounce);\n\n input.dispatchEvent(\n new CustomEvent(\"_keyPress\", {\n composed: true,\n detail: { name, value: input.value, key: (e as KeyboardEvent).key },\n }),\n );\n value = input.value;\n }\n\n function onFocus(e: Event) {\n const input = e.target as HTMLInputElement;\n input.dispatchEvent(\n new CustomEvent(\"_focus\", {\n composed: true,\n detail: { name, value: input.value },\n }),\n );\n }\n\n function onBlur(e: Event) {\n const input = e.target as HTMLInputElement;\n input.dispatchEvent(\n new CustomEvent(\"_blur\", {\n composed: true,\n detail: { name, value: input.value },\n }),\n );\n }\n\n function doClick() {\n // @ts-ignore\n this.dispatchEvent(\n new CustomEvent(\"_trailingIconClick\", { composed: true }),\n );\n }\n\n onMount(async () => {\n await tick();\n\n validateType(type);\n validateAutoCapitalize(autocapitalize);\n\n if (prefix != \"\" || suffix != \"\") {\n console.warn(\n \"GoAInput [prefix] and [suffix] properties are deprecated. Instead use leadingContent and trailingContent.\",\n );\n }\n\n const leadingContentSlot = _rootEl.querySelector(\n \"slot[name=leadingContent]\",\n ) as HTMLSlotElement;\n\n if (leadingContentSlot && leadingContentSlot.assignedNodes().length > 0) {\n _leadingContentSlot = true;\n }\n\n const trailingContentSlot = _rootEl.querySelector(\n \"slot[name=trailingContent]\",\n ) as HTMLSlotElement;\n\n if (trailingContentSlot && trailingContentSlot.assignedNodes().length > 0) {\n _trailingContentSlot = true;\n }\n });\n</script>\n\n<!-- HTML -->\n\n<div\n class=\"container\"\n style={`--width: ${width};${calculateMargin(mt, mr, mb, ml)}`}\n bind:this={_rootEl}\n>\n <div\n class=\"goa-input variant--{variant} type--{type}\"\n class:input--disabled={isDisabled}\n class:leading-content={_leadingContentSlot}\n class:trailing-content={_trailingContentSlot}\n class:error={isError}\n >\n {#if prefix}\n <div class=\"prefix\">\n {prefix}\n </div>\n {/if}\n\n <div class=\"leading-content-slot\">\n <slot name=\"leadingContent\" />\n </div>\n\n {#if leadingicon}\n <goa-icon\n class=\"leading-icon\"\n data-testid=\"leading-icon\"\n type={leadingicon}\n />\n {/if}\n\n <input\n bind:this={inputEl}\n class=\"input--{variant}\"\n class:input-leading-content={_leadingContentSlot && !isDisabled}\n class:input-trailing-content={_trailingContentSlot && !isDisabled}\n style={`--search-icon-offset: ${trailingicon ? \"-0.5rem\" : \"0\"}`}\n readonly={isReadonly}\n disabled={isDisabled}\n data-testid={testid}\n {autocapitalize}\n {name}\n {type}\n {value}\n {placeholder}\n {min}\n {max}\n {step}\n {maxlength}\n id={id || name}\n role=\"textbox\"\n aria-label={arialabel || name}\n aria-labelledby={arialabelledby}\n on:keyup={onKeyUp}\n on:change={onKeyUp}\n on:focus={onFocus}\n on:blur={onBlur}\n />\n\n <!-- Trailing Icon -->\n {#if trailingicon && !handlesTrailingIconClick}\n <goa-icon\n class=\"trailing-icon\"\n data-testid=\"trailing-icon\"\n size=\"medium\"\n type={trailingicon}\n />\n {/if}\n\n <!-- Trailing Icon Button -->\n {#if trailingicon && handlesTrailingIconClick}\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <goa-icon-button\n on:click={doClick}\n disabled={isDisabled}\n variant=\"nocolor\"\n size=\"medium\"\n icon={trailingicon}\n data-testid=\"trailing-icon-button\"\n class=\"trailing-icon-button\"\n />\n {/if}\n\n {#if suffix}\n <span class=\"suffix\">{suffix}</span>\n {/if}\n <div class=\"trailing-content-slot\">\n <slot name=\"trailingContent\" />\n </div>\n </div>\n</div>\n\n<!-- Styles -->\n<style>\n :host {\n box-sizing: border-box;\n }\n\n .container {\n position: relative;\n width: 100%;\n display: inline-block;\n }\n\n @media not (--mobile) {\n .container {\n width: var(--width);\n }\n }\n\n .goa-input,\n .goa-input * {\n box-sizing: border-box;\n line-height: normal;\n }\n\n .goa-input {\n box-sizing: border-box;\n outline: none;\n transition: box-shadow 0.1s ease-in;\n border: 1px solid var(--goa-color-greyscale-700);\n border-radius: var(--goa-border-radius-m);\n display: inline-flex;\n align-items: stretch;\n /* The vertical align fixes inputs with a leading icon to not be vertically offset */\n vertical-align: middle;\n min-width: 100%;\n background-color: var(--goa-color-greyscale-white);\n }\n\n .goa-input:not(.leading-content):not(.trailing-content):hover{\n border-color: var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n }\n .goa-input:active:not(.leading-content):not(.trailing-content),\n .goa-input:focus:not(.leading-content):not(.trailing-content),\n .goa-input:focus-within:not(.leading-content):not(.trailing-content) {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n }\n\n /* type=range does not have an outline/box-shadow */\n .goa-input.type--range {\n border: none;\n }\n\n .goa-input.type--range:active,\n .goa-input.type--range:focus,\n .goa-input.type--range:focus-within {\n box-shadow: none;\n }\n\n .leading-icon {\n margin-left: 0.75rem;\n }\n\n .trailing-icon {\n margin-right: var(--goa-space-s);\n }\n\n .trailing-icon-button {\n margin-right: var(--goa-space-xs);\n }\n\n input {\n display: inline-block;\n color: var(--goa-color-text-default);\n font-size: var(--goa-font-size-4);\n padding: var(--goa-space-xs) var(--goa-space-s);\n line-height: calc(40px - calc(var(--goa-space-xs) * 2));\n background-color: transparent;\n width: 100%;\n flex: 1 1 auto;\n font-family: var(--goa-font-family-sans);\n z-index: 1;\n }\n\n input[readonly] {\n cursor: pointer;\n }\n\n .leading-icon + input {\n padding-left: 0.5rem;\n }\n\n input,\n input:focus,\n input:hover,\n input:active {\n outline: none;\n border: none;\n }\n\n .input--disabled,\n .input--disabled:hover,\n .input--disabled:active,\n .input--disabled:focus {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-200) !important;\n cursor: default;\n box-shadow: none !important;\n }\n\n .input--disabled input,\n .input--disabled input:hover,\n .input--disabled input:active,\n .input--disabled input:focus {\n color: var(--goa-color-text-secondary);\n }\n\n .input--disabled input:hover {\n cursor: default !important;\n }\n\n .prefix,\n .suffix,\n .leading-content-slot :global(::slotted(div)),\n .trailing-content-slot :global(::slotted(div)) {\n background-color: var(--goa-color-greyscale-100);\n padding: 0 0.75rem;\n display: flex;\n align-items: center;\n }\n\n .leading-content-slot :global(::slotted(div)),\n .trailing-content-slot :global(::slotted(div)) {\n padding: 0.5rem 0.75rem;\n }\n\n .prefix,\n .leading-content-slot :global(::slotted(div)){\n /* background-clip doesn't want to work */\n border-top-left-radius: var(--goa-border-radius-m);\n border-bottom-left-radius: var(--goa-border-radius-m);\n border-right: 1px solid var(--goa-color-greyscale-700);\n }\n\n .suffix,\n .trailing-content-slot :global(::slotted(div)) {\n /* background-clip doesn't want to work */\n border-top-right-radius: var(--goa-border-radius-m);\n border-bottom-right-radius: var(--goa-border-radius-m);\n border-left: 1px solid var(--goa-color-greyscale-700);\n }\n\n .input--disabled .prefix,\n .input--disabled .leading-content-slot :global(::slotted(div)) {\n border-right: 1px solid var(--goa-color-greyscale-200);\n }\n\n .input--disabled .suffix,\n .input--disabled .trailing-content-slot :global(::slotted(div)) {\n border-left: 1px solid var(--goa-color-greyscale-200);\n }\n\n /* Themes */\n input.input--goa {\n display: block;\n border: none;\n flex: 1 1 auto;\n }\n\n .variant--bare {\n border: none;\n }\n\n .variant--bare:focus,\n .variant--bare:active,\n .variant--bare:focus-within {\n box-shadow: none;\n }\n\n .error:not(.leading-content):not(.trailing-content),\n .error:not(.leading-content):not(.trailing-content):hover{\n border: 2px solid var(--goa-color-interactive-error);\n box-shadow: 0 0 0 1px var(--goa-color-interactive-error);\n }\n\n .error:not(.leading-content):not(.trailing-content):focus-within:hover{\n border: 2px solid var(--goa-color-interactive-error);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n }\n\n .error .input-leading-content,\n .error .input-leading-content:hover,\n .error .input-trailing-content,\n .error .input-trailing-content:hover {\n outline: var(--goa-border-width-s) solid var(--goa-color-interactive-error);\n box-shadow: inset 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-error);\n }\n\n .error .input-leading-content:focus,\n .error .input-trailing-content:focus,\n .error .input-leading-content:active,\n .error .input-trailing-content:active {\n outline: var(--goa-border-width-s) solid var(--goa-color-interactive-error);\n box-shadow: 0 0 0 var(--goa-border-width-l)\n var(--goa-color-interactive-focus);\n }\n\n .input-leading-content:hover,\n .input-trailing-content:hover {\n box-shadow: inset 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n outline: var(--goa-border-width-s) solid var(--goa-color-interactive-hover);\n }\n\n .input-leading-content:active,\n .input-leading-content:focus,\n .input-leading-content:focus-within,\n .input-trailing-content:active,\n .input-trailing-content:focus,\n .input-trailing-content:focus-within {\n box-shadow: 0 0 0 var(--goa-border-width-l)\n var(--goa-color-interactive-focus);\n outline: var(--goa-border-width-s) solid var(--goa-color-greyscale-700);\n }\n\n .error .input-trailing-content,\n .input-trailing-content:hover,\n .input-trailing-content:active,\n .input-trailing-content:focus,\n .input-trailing-content:focus-within {\n border-top-left-radius: var(--goa-border-radius-m);\n border-bottom-left-radius: var(--goa-border-radius-m);\n }\n\n .error .input-leading-content,\n .input-leading-content:hover,\n .input-leading-content:active,\n .input-leading-content:focus,\n .input-leading-content:focus-within{\n border-top-right-radius: var(--goa-border-radius-m);\n border-bottom-right-radius: var(--goa-border-radius-m);\n }\n\n .leading-content .input-trailing-content,\n .leading-content .input-trailing-content:hover,\n .leading-content .input-trailing-content:active,\n .leading-content .input-trailing-content:focus,\n .leading-content .input-trailing-content:focus-within {\n border-radius: 0;\n }\n\n input[type=\"search\"]:enabled:read-write:-webkit-any(\n :focus,\n :hover\n )::-webkit-search-cancel-button {\n position: relative;\n right: var(--search-icon-offset);\n cursor: pointer;\n -webkit-appearance: none;\n height: 1.2rem;\n width: 1.2rem;\n background: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"%23333\" d=\"M405 136.798L375.202 107 256 226.202 136.798 107 107 136.798 226.202 256 107 375.202 136.798 405 256 285.798 375.202 405 405 375.202 285.798 256z\"/></svg>')\n center center no-repeat;\n }\n\n ::-ms-reveal {\n display: none;\n }\n</style>\n","<svelte:options customElement=\"goa-microsite-header\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n\n // Validator\n const [Types, validateType] = typeValidator(\n \"Microsite header type\",\n [\"live\", \"alpha\", \"beta\"],\n true,\n );\n // Type\n type Type = (typeof Types)[number];\n\n export let type: Type;\n export let version: string = \"\";\n export let feedbackurl: string = \"\";\n export let maxcontentwidth = \"100%\";\n export let headerurltarget: UrlTargetType = \"blank\";\n export let feedbackurltarget: UrlTargetType = \"blank\";\n\n // Validator\n const [UrlTarget, validateUrlTargetType] = typeValidator(\n \"URL target values\",\n [\"self\", \"blank\"],\n );\n\n // Types\n type UrlTargetType = (typeof UrlTarget)[number];\n\n function capitalize(val: string): string {\n if (!val || (val && val.length === 0)) return \"\";\n return val[0].toUpperCase() + val.slice(1);\n }\n\n onMount(() => {\n setTimeout(() => validateType(type), 1);\n validateUrlTargetType(headerurltarget);\n validateUrlTargetType(feedbackurltarget);\n });\n</script>\n\n<!-- HTML -->\n<div id=\"container\">\n <div\n class=\"content-container\"\n style={`--max-content-width: ${maxcontentwidth}`}\n >\n {#if type === \"live\"}\n <div data-testid=\"type\" class=\"site-text\">\n An official site of the <a\n href=\"https://www.alberta.ca/index.aspx\"\n target={`_${headerurltarget}`}>Alberta Government</a\n >\n </div>\n {/if}\n\n {#if [\"alpha\", \"beta\"].includes(type)}\n <div\n data-testid=\"type\"\n class=\"service-type service-type--{type.toLowerCase()}\"\n >\n {capitalize(type)}\n </div>\n <div data-testid=\"site-text\" class=\"site-text\">\n This is a new <a\n href=\"https://www.alberta.ca/index.aspx\"\n target={`_${headerurltarget}`}>Alberta Government</a\n >\n service\n {#if feedbackurl}\n <span data-testid=\"feedback\"\n >— help us improve it by giving <a\n href={feedbackurl}\n target={`_${feedbackurltarget}`}>feedback</a\n ></span\n >\n {/if}\n </div>\n {/if}\n <div class=\"spacer\" />\n {#if version}\n <div data-testid=\"version\" class=\"version\">\n {version}\n </div>\n {/if}\n </div>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n #container {\n container: self / inline-size;\n background-color: var(--goa-color-greyscale-100);\n }\n\n a {\n color: var(--goa-color-interactive-default);\n cursor: pointer;\n }\n\n a:hover {\n color: var(--goa-color-interactive-hover);\n }\n\n a:focus {\n outline-width: thin;\n outline-style: solid;\n outline-color: var(--goa-color-interactive-hover);\n outline-offset: 0px;\n }\n\n a[target=\"_blank\"]::after {\n content: \"\";\n width: var(--goa-icon-size-s);\n height: var(--goa-icon-size-s);\n background-color: var(--goa-color-interactive-default);\n display: inline-block;\n margin-left: var(--goa-space-2xs);\n vertical-align: sub;\n mask: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20class%3D%22ionicon%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20d%3D%22M384%20224v184a40%2040%200%200%201-40%2040H104a40%2040%200%200%201-40-40V168a40%2040%200%200%201%2040-40h167.48M336%2064h112v112M224%20288%20440%2072%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%2232%22%2F%3E%3C%2Fsvg%3E\")\n center bottom no-repeat;\n -webkit-mask: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20class%3D%22ionicon%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20d%3D%22M384%20224v184a40%2040%200%200%201-40%2040H104a40%2040%200%200%201-40-40V168a40%2040%200%200%201%2040-40h167.48M336%2064h112v112M224%20288%20440%2072%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%2232%22%2F%3E%3C%2Fsvg%3E\")\n center bottom no-repeat;\n }\n a[target=\"_blank\"]:hover:after {\n background-color: var(--goa-color-interactive-hover);\n }\n\n .content-container {\n\n font-size: var(--goa-font-size-2);\n padding: 0.5rem 1rem;\n\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n max-width: min(var(--max-content-width), 100%);\n margin: 0 auto;\n }\n\n @container self (--not-mobile) {\n .content-container {\n align-items: center;\n padding: 0.25rem 2rem;\n }\n }\n\n @container self (--desktop) {\n .content-container {\n padding: 0.25rem 4.5rem;\n }\n }\n\n .spacer {\n flex: 1 1 auto;\n }\n\n .version {\n color: var(--goa-color-text-secondary);\n padding-left: 1rem;\n line-height: 1.25rem;\n }\n\n .service-type {\n font-weight: bold;\n padding: 0.125rem 0.25rem;\n display: flex;\n margin-right: 1rem;\n line-height: initial;\n }\n\n .service-type--alpha {\n background-color: var(--goa-color-warning-default);\n color: var(--goa-color-text-default);\n }\n\n .service-type--beta {\n background-color: var(--goa-color-brand-default);\n color: var(--goa-color-text-light);\n }\n\n .site-text {\n color: var(--goa-color-text-default);\n line-height: 1.25rem;\n }\n</style>\n","<svelte:options customElement=\"goa-modal\" />\n\n<script lang=\"ts\">\n import { fade, fly } from \"svelte/transition\";\n import noscroll from \"../../common/no-scroll\";\n import { toBoolean, typeValidator } from \"../../common/utils\";\n import { onDestroy, onMount, tick } from \"svelte\";\n\n type CalloutVariant = (typeof CALLOUT_VARIANT)[number];\n type Transition = (typeof Transitions)[number];\n\n // ******\n // Public\n // ******\n\n export let heading: string = \"\";\n export let closable: string = \"false\";\n export let open: string = \"false\";\n export let transition: Transition = \"none\";\n export let calloutvariant: CalloutVariant | null = null;\n export let maxwidth: string = \"60ch\";\n\n // @deprecated: use maxwidth\n export let width: string = \"\";\n\n // *******\n // Private\n // *******\n\n let _rootEl: HTMLElement | null = null;\n let _scrollPos: \"top\" | \"middle\" | \"bottom\" = \"top\";\n let _scrollEl: HTMLElement | null = null;\n let _headerEl: HTMLElement | null = null;\n let _isOpen: boolean = false;\n let _requiresTopPadding: boolean;\n\n // Type verification\n const [CALLOUT_VARIANT, validateCalloutVariant] = typeValidator(\n \"Callout variant\",\n [\"emergency\", \"important\", \"information\", \"success\", \"event\"],\n );\n\n const [Transitions, validateTransition] = typeValidator(\"Modal transition\", [\n \"fast\",\n \"slow\",\n \"none\",\n ]);\n\n // ********\n // Reactive\n // ********\n\n $: _isClosable = toBoolean(closable);\n\n // Moving the reactive var into a timeout prevents accessing null stylesheet\n // reference to allow for creation of the @keyframes for the in:fade and out:fade transitions.\n // DDIDS-1288\n $: setTimeout(() => (_isOpen = toBoolean(open)), 1);\n\n // Show the shadow at the top of the content after scrolling down\n $: if (_isOpen && _scrollEl) {\n const hasScroll = _scrollEl.scrollHeight > _scrollEl.offsetHeight;\n if (hasScroll) {\n _scrollPos = \"top\";\n }\n }\n\n $: if (_isOpen && _rootEl) {\n _requiresTopPadding =\n !!_headerEl?.querySelector(\"div.modal-title\")?.textContent ||\n !!_headerEl?.querySelector(\"div.modal-close\") ||\n getChildren().length > 0;\n }\n\n $: _transitionTime =\n transition === \"none\" ? 0 : transition === \"slow\" ? 400 : 200;\n\n $: _iconType =\n calloutvariant === \"emergency\"\n ? \"warning\"\n : calloutvariant === \"important\"\n ? \"alert-circle\"\n : calloutvariant === \"information\"\n ? \"information-circle\"\n : calloutvariant === \"success\"\n ? \"checkmark-circle\"\n : calloutvariant === \"event\"\n ? \"calendar\"\n : \"\";\n\n // *****\n // Hooks\n // *****\n\n onMount(async () => {\n await tick();\n validateCalloutVariant(calloutvariant);\n validateTransition(transition);\n\n // event listenerts\n window.addEventListener(\"keydown\", onInputKeyDown);\n\n if (width) {\n maxwidth = width;\n console.warn(\"`width` is deprecated. Please use `maxwidth` instead.\");\n }\n });\n\n onDestroy(() => {\n window.removeEventListener(\"keydown\", onInputKeyDown);\n });\n\n // *********\n // Functions\n // *********\n\n function close(e: Event) {\n if (!_isClosable) {\n return;\n }\n _rootEl?.dispatchEvent(new CustomEvent(\"_close\", { composed: true }));\n e.stopPropagation();\n }\n\n const onInputKeyDown = (e: KeyboardEvent) => {\n if (!_isOpen) {\n return;\n }\n switch (e.key) {\n case \"Escape\":\n close(e);\n e.preventDefault();\n break;\n }\n };\n\n function handleScroll(e: CustomEvent) {\n const hasScroll = e.detail.scrollHeight > e.detail.offsetHeight;\n if (!_isOpen || !hasScroll) return;\n\n // top\n if (e.detail.scrollTop == 0) {\n _scrollPos = \"top\";\n return;\n }\n\n // bottom\n if (\n Math.abs(\n e.detail.scrollHeight - e.detail.scrollTop - e.detail.offsetHeight,\n ) < 1\n ) {\n _scrollPos = \"bottom\";\n return;\n }\n\n _scrollPos = \"middle\";\n }\n\n function getChildren(): Element[] {\n const slot = _headerEl?.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n return [...slot.assignedElements()];\n } else {\n // @ts-expect-error\n return [..._headerEl.children] as Element[]; // unit tests\n }\n }\n</script>\n\n{#if _isOpen}\n <goa-focus-trap {open}>\n <div\n use:noscroll={{ enable: _isOpen }}\n in:fade={{ duration: _transitionTime }}\n out:fade={{ delay: _transitionTime, duration: _transitionTime }}\n data-testid=\"modal\"\n class={`modal ${_scrollPos}`}\n style={`--maxwidth: ${maxwidth};`}\n bind:this={_rootEl}\n >\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <div data-testid=\"modal-overlay\" class=\"modal-overlay\" on:click={close} />\n <div\n in:fly={{ duration: _transitionTime, y: 200 }}\n out:fly={{ delay: _transitionTime, duration: _transitionTime, y: -100 }}\n class=\"modal-pane\"\n >\n {#if calloutvariant !== null}\n <div class=\"callout-bar {calloutvariant}\">\n <goa-icon\n type={_iconType}\n inverted={calloutvariant === \"important\" ? \"false\" : \"true\"}\n />\n </div>\n {/if}\n <div class=\"content\">\n <header bind:this={_headerEl} class:has-content={_requiresTopPadding}>\n <div data-testid=\"modal-title\" class=\"modal-title\">\n {#if heading}\n {heading}\n {:else}\n <slot name=\"heading\" />\n {/if}\n </div>\n {#if _isClosable}\n <div class=\"modal-close\">\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <goa-icon-button\n data-testid=\"modal-close-button\"\n icon=\"close\"\n on:click={close}\n variant=\"nocolor\"\n />\n </div>\n {/if}\n </header>\n <div data-testid=\"modal-content\" class=\"modal-content\">\n <goa-scrollable\n direction=\"vertical\"\n hpadding=\"1.9rem\"\n maxheight=\"70vh\"\n bind:this={_scrollEl}\n on:_scroll={handleScroll}\n >\n <slot />\n </goa-scrollable>\n </div>\n <div class=\"modal-actions\" data-testid=\"modal-actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n </div>\n </goa-focus-trap>\n{/if}\n\n<!-- ======================================================================= -->\n<!-- Css -->\n<!-- ======================================================================= -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n position: relative;\n z-index: 99999;\n }\n\n :host * {\n box-sizing: border-box;\n }\n\n .modal {\n font-family: var(--goa-font-family-sans);\n position: fixed;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100vh;\n width: 100%;\n z-index: 3;\n }\n\n .modal-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.2);\n z-index: 1;\n }\n\n .emergency {\n background-color: var(--goa-color-emergency-default);\n }\n .important {\n background-color: var(--goa-color-warning-default);\n }\n .information {\n background-color: var(--goa-color-info-default);\n }\n .event {\n background-color: var(--goa-color-info-default);\n }\n .success {\n background-color: var(--goa-color-success-default);\n }\n\n .callout-bar {\n flex: 0 0 3rem;\n text-align: center;\n padding-top: 2rem;\n border-radius: 4px 0px 0px 4px;\n }\n .content {\n flex: 1 1 auto;\n width: 100%;\n margin: var(--goa-space-xl);\n }\n\n .content header {\n display: flex;\n justify-content: space-between;\n }\n\n header.has-content {\n margin-bottom: var(--goa-space-l);\n }\n\n @media (--mobile) {\n .content {\n margin: var(--goa-space-l);\n }\n header.has-content {\n margin-bottom: var(--goa-space-m);\n }\n\n .modal-actions :global(::slotted(*)) {\n padding: var(--goa-space-l) 0 0;\n }\n }\n\n @media (--desktop) {\n .modal-pane {\n max-width: var(--maxwidth);\n }\n }\n\n .modal-pane {\n background-color: #fff;\n z-index: 2;\n width: 90%;\n display: flex;\n box-shadow: var(--goa-shadow-modal);\n border-radius: 4px;\n border: 1px solid var(--goa-color-greyscale-700);\n }\n\n .modal-actions :global(::slotted(*)) {\n padding: var(--goa-space-xl) 0 0;\n }\n\n .modal-content {\n margin: 0 -2rem;\n line-height: 1.75rem;\n }\n\n .modal-content :global(::slotted(:last-child)) {\n margin-bottom: 0 !important;\n }\n\n .modal-title {\n font: var(--goa-typography-heading-m);\n }\n\n .modal-close {\n padding-left: var(--goa-space-m);\n margin-top: var(--goa-space-2xs);\n }\n\n .scroll-top {\n box-shadow: inset 0px -8px 6px -6px rgba(0, 0, 0, 0.1);\n }\n\n .scroll-middle {\n box-shadow:\n inset 0px -8px 6px -6px rgba(0, 0, 0, 0.1),\n inset 0px 8px 6px -6px rgba(0, 0, 0, 0.1);\n }\n\n .scroll-bottom {\n box-shadow: inset 0px 8px 6px -6px rgba(0, 0, 0, 0.1);\n }\n</style>\n","<svelte:options customElement=\"goa-notification\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { fade } from \"svelte/transition\";\n import { onMount } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n\n // Validator\n const [Types, validateType] = typeValidator(\n \"Notification type\",\n [\"emergency\", \"important\", \"information\", \"event\"] as const,\n true,\n );\n const [AriaLiveTypes, validateAriaLiveType] = typeValidator(\n \"Aria-Live type\",\n [\"assertive\", \"off\", \"polite\"] as const,\n true,\n );\n\n // Type\n type NotificationType = (typeof Types)[number];\n type AriaLiveType = (typeof AriaLiveTypes)[number];\n\n export let type: NotificationType = \"\";\n export let maxcontentwidth = \"100%\";\n export let arialive: AriaLiveType = \"polite\";\n\n let show = true;\n $: iconType =\n type === \"emergency\"\n ? \"warning\"\n : type === \"important\"\n ? \"alert-circle\"\n : type === \"information\"\n ? \"information-circle\"\n : type === \"event\"\n ? \"calendar\"\n : \"\";\n\n onMount(() => {\n validateAriaLiveType(arialive);\n setTimeout(() => validateType(type), 1);\n });\n\n function close(e: Event) {\n show = false;\n e.target?.dispatchEvent(new CustomEvent(\"_dismiss\", { composed: true }));\n e.stopPropagation();\n }\n</script>\n\n<!-- HTML -->\n{#if show}\n <div id=\"container\">\n <div\n transition:fade\n class=\"notification {type}\"\n style={`--max-content-width: ${maxcontentwidth}`}\n >\n <div\n class=\"content-container\"\n role=\"alert\"\n aria-live={arialive}\n aria-atomic=\"true\"\n >\n <div class=\"icon\">\n <goa-icon\n type={iconType}\n inverted={type === \"important\" ? \"false\" : \"true\"}\n />\n </div>\n <div class=\"content\">\n <slot />\n </div>\n <div class=\"close\">\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <button class={type} on:click={close}>\n <goa-icon\n type=\"close\"\n inverted={type === \"important\" ? \"false\" : \"true\"}\n />\n </button>\n </div>\n </div>\n </div>\n </div>\n{/if}\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n #container {\n container: self / inline-size;\n }\n \n .notification {\n padding: var(--goa-space-l) var(--goa-space-m);\n display: flex;\n }\n\n @container self (--not-mobile) {\n .notification {\n padding: var(--goa-space-l) var(--goa-space-xl);\n }\n }\n\n @container self (--desktop) {\n .notification {\n padding: var(--goa-space-l) calc(3 * var(--goa-space-l));\n }\n }\n\n .emergency {\n background-color: var(--goa-color-emergency-default);\n color: var(--goa-color-text-light);\n }\n\n .important {\n background-color: var(--goa-color-warning-default);\n color: var(--goa-color-text-default);\n }\n\n .information,\n .event {\n background-color: var(--goa-color-info-default);\n color: var(--goa-color-text-light);\n }\n\n .icon {\n flex: 0 0 auto;\n }\n\n .content-container {\n display: flex;\n flex-direction: row;\n flex: 1 1 auto;\n gap: var(--goa-space-m);\n margin: 0 auto;\n max-width: min(var(--max-content-width), 100%);\n }\n\n .content {\n flex: 1 1 auto;\n }\n\n :global(::slotted(a)) {\n color: unset !important;\n outline: unset !important;\n }\n :global(::slotted(a:focus)) {\n outline: auto !important;\n border-radius: var(--goa-border-radius-m);\n }\n .notification.important :global(::slotted(a:focus)) {\n outline: unset !important;\n box-shadow: 0 0 0 3px var(--goa-color-greyscale-black);\n border-radius: var(--goa-border-radius-m);\n }\n\n .close {\n flex: 0 0 auto;\n }\n /*Close button*/\n .close button {\n background-color: transparent;\n border: none;\n cursor: pointer;\n padding: var(--goa-space-2xs);\n margin: 0;\n outline: none;\n border-radius: var(--goa-border-radius-m);\n display: inline-flex;\n }\n /*Information & Event Close Button*/\n .close button.information:hover,\n .close button.information:focus,\n .close button.event:hover,\n .close button.event:focus {\n background-color: var(--goa-color-info-dark);\n }\n .close button.information:focus,\n .close button.event:focus {\n box-shadow: 0 0 0 3px var(--goa-color-greyscale-white);\n }\n /*Important close button*/\n .close button.important:hover,\n .close button.important:focus {\n background-color: var(--goa-color-warning-dark);\n }\n .close button.important:focus {\n box-shadow: 0 0 0 3px var(--goa-color-greyscale-black);\n }\n /*Emergency close button*/\n .close button.emergency:hover,\n .close button.emergency:focus {\n background-color: var(--goa-color-emergency-dark);\n }\n .close button.emergency:focus {\n box-shadow: 0 0 0 3px var(--goa-color-greyscale-white);\n }\n</style>\n","<svelte:options customElement=\"goa-one-column-layout\" />\n\n<script lang=\"ts\">\n</script>\n\n<div class=\"page\">\n <section class=\"header\">\n <slot name=\"header\" />\n </section>\n\n <main>\n <slot />\n </main>\n\n <section class=\"footer\">\n <slot name=\"footer\" />\n </section>\n</div>\n\n<style>\n .page {\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n .header,\n .footer {\n flex: 0 0 auto;\n }\n main {\n flex: 1 1 auto;\n }\n</style>\n","const dimensionRegex = /^[1-9]+[0-9]*(px|em|rem|ch|vh|vw|%)$/\nexport function isValidDimension(value: string): boolean {\n return dimensionRegex.test(value)\n}\n","<svelte:options customElement=\"goa-page-block\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { isValidDimension } from \"../../common/validators\";\n\n type Size = \"full\" | string;\n const Sizes = {\n full: \"100%\",\n };\n\n // Required\n export let width: Size;\n\n // Private\n export let _width: string;\n\n function isValidSize(value: string) {\n if ([\"full\"].includes(width)) return true;\n if (isValidDimension(value)) return true;\n\n return false;\n }\n\n onMount(() => {\n if (!isValidSize(width)) {\n console.error(\"Invalid PageBlock width\");\n }\n\n _width = Sizes[width] || width;\n });\n</script>\n\n<!-- HTML -->\n<div class=\"page-content\" style={`--max-width: ${_width}`}>\n <slot />\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .page-content {\n max-width: var(--max-width);\n margin: 0 auto;\n padding: 0 1rem;\n }\n @media not (--mobile) {\n .page-content {\n padding: 0 2rem;\n }\n }\n @media (--desktop) {\n .page-content {\n padding: 0 4.5rem;\n }\n }\n</style>\n","<svelte:options customElement=\"goa-pages\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n\n // Public\n export let current: number = 1; // 1-based\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Private\n let _rootEl: HTMLElement;\n\n // Hooks\n onMount(async () => {\n await tick();\n setCurrentPage(current);\n });\n\n // Reactive\n $: setCurrentPage(current);\n\n function setCurrentPage(current: number) {\n if (!_rootEl) return;\n\n const children = getChildren();\n children.forEach((child: Element, index: number) => {\n const _child = child as HTMLElement;\n _child.style.display = index + 1 === +current ? \"block\" : \"none\";\n });\n }\n\n function getChildren(): Element[] {\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n return [...slot.assignedElements()];\n } else {\n return [..._rootEl.children] as Element[]; // unit tests\n }\n }\n</script>\n\n<div bind:this={_rootEl} style={calculateMargin(mt, mr, mb, ml)} class=\"pages\">\n <slot />\n</div>\n","<svelte:options customElement=\"goa-pagination\" />\n\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { onMount, tick } from \"svelte\";\n import { typeValidator, validateRequired } from \"../../common/utils\";\n\n // Types\n\n const [Variants, validateVariant] = typeValidator(\"Pagination variant\", [\n \"all\",\n \"links-only\",\n ]);\n type Variant = (typeof Variants)[number];\n\n // public\n\n export let pagenumber: number;\n export let itemcount: number;\n export let perpagecount: number = 10;\n export let variant: Variant = \"all\";\n export let mt: Spacing = \"none\";\n export let mr: Spacing = \"none\";\n export let mb: Spacing = \"m\";\n export let ml: Spacing = \"none\";\n\n // reactive\n\n $: _pageCount = Math.ceil(itemcount / perpagecount);\n\n // private\n\n let pageDropdownEl: HTMLElement;\n let hiddenEl: HTMLInputElement; // needed to allow the inputEl's event to be cancelled\n\n // hooks\n\n onMount(async () => {\n await tick();\n validateRequired(\"GoAPagination\", { itemcount, pagenumber });\n validateVariant(variant);\n\n // prevent event propagation\n if (!pageDropdownEl) {\n console.error(\"Missing pageDropdownEl\");\n return;\n }\n pageDropdownEl?.addEventListener(\"_change\", (e: Event) => {\n const ce = e as CustomEvent;\n const page = Number.parseInt(ce.detail.value);\n e.stopPropagation();\n\n hiddenEl.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n bubbles: true,\n detail: { page },\n }),\n );\n });\n });\n\n // functions\n\n function goto(e: Event, offset: number) {\n const newPage = Number.parseInt(pagenumber + \"\") + offset;\n\n if (newPage > 0 && newPage <= _pageCount) {\n e.target?.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n bubbles: true,\n detail: { page: newPage },\n }),\n );\n }\n e.preventDefault();\n }\n</script>\n\n<goa-block id=\"root\" {ml} {mr} {mb} {mt}>\n <div class=\"controls\">\n {#if variant === \"all\"}\n <goa-block data-testid=\"page-selector\" alignment=\"center\" gap=\"s\">\n <span>Page</span>\n <input bind:this={hiddenEl} type=\"hidden\" />\n <goa-dropdown bind:this={pageDropdownEl} value={pagenumber}>\n {#each { length: _pageCount } as _, i}\n <goa-dropdown-item value={i + 1} label={i + 1} />\n {/each}\n </goa-dropdown>\n <span>of {_pageCount}</span>\n </goa-block>\n {/if}\n <goa-block alignment=\"center\" gap=\"m\" data-testid=\"page-links\">\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <goa-button\n on:click={(e) => goto(e, -1)}\n type=\"tertiary\"\n leadingicon=\"arrow-back\"\n disabled={pagenumber == 1 ? \"true\" : \"false\"}>Previous</goa-button\n >\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <goa-button\n on:click={(e) => goto(e, 1)}\n type=\"tertiary\"\n trailingicon=\"arrow-forward\"\n disabled={pagenumber == _pageCount ? \"true\" : \"false\"}>Next</goa-button\n >\n </goa-block>\n </div>\n</goa-block>\n\n<style>\n span {\n white-space: nowrap;\n }\n\n .controls {\n display: flex;\n gap: 1rem;\n flex-direction: column;\n align-items: center;\n width: 100%;\n }\n\n @media (--not-mobile) {\n .controls {\n flex-direction: row;\n justify-content: space-between;\n }\n }\n</style>\n","<svelte:options customElement=\"goa-popover\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n import { calculateMargin } from \"../../common/styling\";\n import { cssVar, toBoolean } from \"../../common/utils\";\n import type { Spacing } from \"../../common/styling\";\n\n // Public\n\n // to allow for data-testid queries within tests\n export let testid: string = \"popover\";\n // prevents the popover from exceeding this width\n export let maxwidth: string = \"320px\";\n // allow width to be hardcoded\n export let width: string = \"\";\n // allows to override the default padding when content needs to be flush with boundries\n export let padded: string = \"true\";\n // provides control to where the popover content is positioned\n export let position: \"above\" | \"below\" | \"auto\" = \"auto\";\n // ajust positioning when popover component is contained within a relative positioned parent\n export let relative: string = \"false\";\n\n // margins\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Exposed privates\n // **Required only to allow popover position to be customized when used within\n // other components. These props should _not_ be documented.**\n\n // allow for outside control of whether popover is open/closed (see AppHeaderMenu)\n export let open: string = \"false\";\n // allows outside control of the `open` property ex. when used within dropdown\n export let disabled: string = \"false\";\n // allows tabindex to be set to -1 to skip tabbing if a parent is handling events\n export let tabindex: string = \"0\";\n // additional vertical offset that is added to popover's position\n export let voffset = \"\";\n // additional horizontal offset that is added to popover's position\n export let hoffset = \"\";\n // width of outline seen when focused\n export let focusborderwidth = \"var(--goa-border-width-l)\";\n // border radius of popover window\n export let borderradius = \"var(--goa-border-radius-m)\";\n\n // Private\n\n let _rootEl: HTMLElement;\n let _targetEl: HTMLElement;\n let _popoverEl: HTMLElement;\n let _focusTrapEl: HTMLElement;\n let _initFocusedEl: HTMLElement;\n let _sectionHeight: number;\n\n // Reactive\n\n $: _padded = toBoolean(padded);\n $: _open = toBoolean(open);\n $: _disabled = toBoolean(disabled);\n $: _relative = toBoolean(relative);\n\n $: (async () => _open && (await setPopoverPosition()))();\n $: (async () => _sectionHeight && (await setPopoverPosition()))();\n $: {\n if (_open) {\n window.addEventListener(\"popstate\", handleUrlChange, true);\n } else {\n window.removeEventListener(\"popstate\", handleUrlChange, true);\n }\n }\n\n // Hooks\n\n onMount(async () => {\n await tick();\n _targetEl.addEventListener(\"keydown\", onTargetEvent);\n\n const slot = _targetEl.querySelector(\"slot\");\n let children: Element[];\n if (slot) {\n children = slot.assignedElements();\n } else {\n // for unit tests only\n // @ts-expect-error\n children = [..._targetEl.children] as Element[];\n }\n\n _initFocusedEl =\n (children.find(\n (el) => (el as HTMLElement).tabIndex >= 0,\n ) as HTMLElement) || _targetEl;\n });\n\n // Functions\n\n // Called on window popstate changes. This allows for clicking links within\n // the popover to close the popover\n function handleUrlChange(_e: Event) {\n closePopover();\n }\n\n // Handles events when the targetEl has focus\n function onTargetEvent(e: KeyboardEvent) {\n switch (e.key) {\n case \" \":\n case \"Enter\":\n openPopover();\n break;\n case \"Escape\":\n closePopover();\n break;\n }\n }\n\n // Event binding when the focusTrapEl has focus. This is required since the\n // popover exists within the slot of the FocusTrap which prevents the existing\n // targetEl eventing binding from \"hearing\" the events\n function onFocusTrapEvent(e: KeyboardEvent) {\n switch (e.key) {\n case \"Escape\":\n closePopover();\n break;\n }\n }\n\n // Opens the popover and adds the required binding to the new slot element\n function openPopover() {\n if (_disabled) return;\n (async () => {\n _open = true;\n await tick();\n _focusTrapEl.addEventListener(\"keydown\", onFocusTrapEvent, true);\n _rootEl.dispatchEvent(new CustomEvent(\"_open\", { composed: true }));\n })();\n }\n\n // Ensures that upon closing of the popover that the element that triggered\n // the popover to be shown re-attains focus and that any window event binding\n // is removed (it may not have been added if target was clicked)\n function closePopover() {\n _initFocusedEl.focus();\n _open = false;\n window.removeEventListener(\"popstate\", handleUrlChange, true);\n _rootEl.dispatchEvent(new CustomEvent(\"_close\", { composed: true }));\n }\n\n function getBoundingClientRectWithMargins(\n el: Element,\n ): Omit<DOMRect, \"toJSON\"> {\n const rect = el.getBoundingClientRect();\n const style = window.getComputedStyle(el);\n const mTop = parseInt(style.marginTop, 10) || 0;\n const mRight = parseInt(style.marginRight, 10) || 0;\n const mBottom = parseInt(style.marginBottom, 10) || 0;\n const mLeft = parseInt(style.marginLeft, 10) || 0;\n\n return {\n top: rect.top - mTop,\n right: rect.right + mRight,\n bottom: rect.bottom + mBottom,\n left: rect.left - mLeft,\n width: rect.width + mLeft + mRight,\n height: rect.height + mTop + mBottom,\n x: rect.x - mLeft,\n y: rect.y - mTop,\n };\n }\n\n async function setPopoverPosition() {\n await tick();\n\n // Get target and content rectangles\n const targetRect = getBoundingClientRectWithMargins(_targetEl);\n const popoverRect = getBoundingClientRectWithMargins(_popoverEl);\n\n // exit if the popover hasn't yet been filled\n if (popoverRect.height < 20) return;\n\n // Calculate available space above and below the target element\n const spaceAbove = targetRect.top;\n const spaceBelow = window.innerHeight - targetRect.bottom;\n\n // Determine if there's more space above or below the target element\n const displayOnTop =\n position === \"auto\"\n ? spaceBelow < popoverRect.height &&\n spaceAbove > popoverRect.height &&\n spaceAbove > spaceBelow\n : position === \"above\";\n\n if (displayOnTop) {\n _popoverEl.style.top = _relative\n ? `${-popoverRect.height}px`\n : `${targetRect.y - popoverRect.height + window.scrollY}px`;\n }\n\n // Move the popover to the left if it is too far to the right and only if there is space to the left\n const rightAligned =\n document.body.clientWidth - targetRect.left < popoverRect.width &&\n targetRect.left > popoverRect.width;\n\n if (rightAligned) {\n _popoverEl.style.left = `${targetRect.x - (popoverRect.width - targetRect.width)}px`;\n }\n }\n</script>\n\n<!-- HTML -->\n\n<div\n bind:this={_rootEl}\n data-testid={testid}\n style={`\n ${(_relative && \"position: relative;\") || \"\"}\n ${calculateMargin(mt, mr, mb, ml)}\n ${cssVar(\"--offset-top\", voffset)}\n ${cssVar(\"--offset-bottom\", voffset)}\n ${cssVar(\"--offset-left\", hoffset)}\n ${cssVar(\"--offset-right\", hoffset)}\n ${cssVar(\"--focus-border-width\", focusborderwidth)}\n ${cssVar(\"--border-radius\", borderradius)}\n`}\n>\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <!-- svelte-ignore a11y-no-noninteractive-tabindex -->\n <div\n class=\"popover-target\"\n tabindex={+tabindex}\n bind:this={_targetEl}\n on:click={openPopover}\n data-testid=\"popover-target\"\n >\n <slot name=\"target\" />\n </div>\n\n {#if _open}\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <div\n data-testid=\"popover-background\"\n class=\"popover-background\"\n on:click={closePopover}\n />\n <div class=\"popover-container\">\n <section\n bind:clientHeight={_sectionHeight}\n bind:this={_popoverEl}\n data-testid=\"popover-content\"\n class=\"popover-content\"\n style={`\n ${cssVar(\"width\", width)}\n max-width: ${maxwidth};\n padding: ${_padded ? \"var(--goa-space-m)\" : \"0\"};\n `}\n >\n <goa-focus-trap open=\"true\">\n <div bind:this={_focusTrapEl}>\n <slot />\n </div>\n </goa-focus-trap>\n </section>\n </div>\n {/if}\n</div>\n\n<!-- Style -->\n\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n font-size: var(--goa-font-size-4);\n display: flex;\n align-items: center;\n }\n\n .popover-target {\n cursor: pointer;\n }\n\n .popover-target:focus {\n outline: var(--focus-border-width) solid var(--goa-color-interactive-focus);\n }\n\n .popover-content {\n color: var(--goa-color-text-default);\n position: absolute;\n width: fit-content;\n list-style-type: none;\n background: var(--goa-color-greyscale-white);\n border-radius: var(--border-radius);\n outline: none;\n filter: drop-shadow(0px 2px 4px rgba(0, 0, 0, 0.2));\n z-index: 99;\n width: max-content;\n\n margin-top: var(--offset-top, 3px);\n margin-bottom: var(--offset-bottom, 3px);\n margin-left: var(--offset-left, 0);\n margin-right: var(--offset-right, 0);\n }\n\n :global(::slotted(ul)) {\n display: block;\n padding: 0;\n margin: 0;\n list-style-type: none;\n line-height: 2rem;\n }\n\n .popover-background {\n cursor: default;\n position: fixed;\n z-index: 98;\n inset: 0;\n }\n</style>\n","<svelte:options customElement=\"goa-radio-group\" />\n\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { typeValidator, toBoolean } from \"../../common/utils\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount, tick } from \"svelte\";\n\n // Validator\n const [Orientations, validateOrientation] = typeValidator(\n \"Radio group orientation\",\n [\"vertical\", \"horizontal\"],\n );\n\n // Type\n type Orientation = (typeof Orientations)[number];\n\n interface RadioOption {\n label: string;\n value: string;\n description?: string;\n }\n\n // Public\n\n export let name: string;\n export let value: string;\n export let orientation: Orientation = \"vertical\";\n export let disabled: string = \"false\";\n export let error: string = \"false\";\n export let testid: string = \"\";\n export let arialabel: string = \"\";\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Reactive\n\n $: isDisabled = toBoolean(disabled);\n $: isError = toBoolean(error);\n\n // Private\n\n let el: HTMLElement;\n let options: RadioOption[] = [];\n let _options: Element[] = [];\n\n // Hooks\n\n onMount(async () => {\n await tick();\n validateOrientation(orientation);\n\n if (!el) return;\n\n _options = getChildren();\n bindOptions(_options);\n\n el.addEventListener(\"_click\",(e: Event) => {\n onChange((e as CustomEvent).detail);\n });\n });\n\n // Functions\n\n /**\n * Allows the child elements to be obtainable within unit tests\n * @returns List of child elements\n */\n function getChildren(): Element[] {\n const slot = el.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n // default\n return [...slot.assignedElements()];\n } else {\n // unit tests\n // @ts-expect-error\n return [...el.children] as Element[];\n }\n }\n function bindOptions(children: Element[]) {\n children.forEach((el, index) => {\n const option = el as unknown as RadioOption & { innerText: string };\n const optionValue = el.getAttribute(\"value\") || option.value;\n option.setAttribute(\"disabled\", isDisabled);\n option.setAttribute(\"error\", isError);\n option.setAttribute(\"name\", name);\n option.setAttribute(\"checked\", optionValue === value);\n option.setAttribute(\"arialabel\", arialabel || name);\n option.setAttribute(\"ariadescribedby\", `description-${name}-${index}`);\n option.setAttribute(\"data-testid\", `radio-option-${index}`);\n });\n }\n\n /**\n * Handles changing of the radio items\n * @param newValue Selected value\n */\n function onChange(newValue: string) {\n if (newValue === value) return;\n\n value = newValue;\n el.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n bubbles: true,\n detail: { name, value: value },\n }),\n );\n setCurrentSelectedOption();\n }\n\n function setCurrentSelectedOption() {\n _options.forEach((el) => {\n const option = el as unknown as RadioOption & { innerText: string };\n const optionValue = el.getAttribute(\"value\") || option.value;\n option.setAttribute(\"checked\", optionValue === value);\n });\n }\n</script>\n\n<!-- Html -->\n<div\n bind:this={el}\n style={calculateMargin(mt, mr, mb, ml)}\n class={`goa-radio-group--${orientation}`}\n data-testid={testid}\n>\n <slot />\n</div>\n\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .goa-radio-group--horizontal {\n display: flex;\n flex-direction: row;\n }\n\n .goa-radio-group--vertical {\n display: inline-block;\n }\n</style>\n","<svelte:options customElement=\"goa-radio-item\"/>\n\n<script lang=\"ts\">\n import {toBoolean} from \"../../common/utils\";\n\n export let value: string;\n export let label: string;\n export let description: string = \"\";\n export let disabled: string = \"false\";\n export let error: string = \"false\";\n export let name: string;\n export let checked: string = \"false\";\n export let arialabel: string;\n export let ariadescribedby: string;\n\n let _radioItemEl: HTMLElement;\n\n // Reactive\n $: isDisabled = toBoolean(disabled);\n $: isError = toBoolean(error);\n $: isChecked = toBoolean(checked);\n\n function onChange() {\n if (isDisabled) return;\n if (isChecked) return;\n\n const event = new CustomEvent('_click', {\n detail: value,\n composed: true,\n bubbles: true\n });\n _radioItemEl.dispatchEvent(event);\n }\n</script>\n\n<div class=\"goa-radio-container\">\n <label\n bind:this={_radioItemEl}\n data-testid=\"radio-option-{value}\"\n class=\"goa-radio\"\n class:goa-radio--disabled={isDisabled}\n class:goa-radio--error={isError}\n >\n <input\n type=\"radio\"\n {name}\n value={value}\n disabled={isDisabled}\n checked={isChecked}\n aria-label={arialabel}\n aria-describedby={ariadescribedby}\n on:click={onChange}\n />\n <div class=\"goa-radio-icon\"/>\n <span class=\"goa-radio-label\">\n {label || value}\n </span>\n </label>\n {#if $$slots.description || description}\n <div class=\"goa-radio-description\">\n <slot name=\"description\"/>\n {description}\n </div>\n {/if}\n</div>\n\n<style>\n label.goa-radio {\n --goa-radio-outline-width: 3px;\n --goa-radio-diameter: 1.5rem;\n --goa-radio-border-width: 1px;\n --goa-radio-border-width--checked: 7px;\n box-sizing: border-box;\n display: flex;\n }\n\n .goa-radio-container {\n padding-bottom: 1rem;\n }\n\n .goa-radio:hover {\n cursor: pointer;\n }\n\n .goa-radio *,\n .goa-radio *:before,\n .goa-radio *:after {\n box-sizing: border-box;\n }\n\n .goa-radio input[type=\"radio\"] {\n width: 0;\n height: 0;\n margin: 0;\n opacity: 0;\n }\n\n .goa-radio-label {\n padding: 0 var(--goa-space-xs);\n font-weight: var(--goa-font-weight-regular);\n }\n\n .goa-radio-group--horizontal .goa-radio-label {\n padding-right: var(--goa-space-xl);\n }\n\n .goa-radio-label {\n padding-right: var(--goa-space-xl);\n }\n\n .goa-radio-description {\n font: var(--goa-typography-body-xs);\n margin-left: var(--goa-space-xl);\n margin-top: var(--goa-space-2xs);\n }\n\n .goa-radio-icon {\n display: inline-block;\n height: var(--goa-radio-diameter);\n width: var(--goa-radio-diameter);\n border-radius: 50%;\n background-color: #fff;\n transition: box-shadow 100ms ease-in-out;\n\n /* prevent squishing of radio button */\n flex: 0 0 auto;\n margin-top: var(--font-valign-fix);\n }\n\n /* What is this? */\n .goa-radio:focus > input:not(:disabled) ~ .goa-radio-icon {\n box-shadow: 0 0 0 var(--goa-radio-outline-width) var(--goa-color-interactive-focus);\n }\n\n .goa-radio--disabled .goa-radio-label {\n opacity: 0.4;\n }\n\n .goa-radio--disabled:hover {\n cursor: default;\n }\n\n /* States */\n\n /* Default */\n input[type=\"radio\"]:not(:checked) ~ .goa-radio-icon {\n border: var(--goa-radio-border-width) solid var(--goa-color-greyscale-700);\n }\n\n /* Default:hover */\n input[type=\"radio\"]:hover ~ .goa-radio-icon {\n border: 1px solid var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 1px var(--goa-color-interactive-hover);\n }\n\n /* Checked:hover */\n input[type=\"radio\"]:checked:hover ~ .goa-radio-icon {\n border: 7px solid var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 1px var(--goa-color-interactive-hover);\n }\n\n /* Default:focus */\n input[type=\"radio\"]:focus ~ .goa-radio-icon,\n input[type=\"radio\"]:hover:active ~ .goa-radio-icon,\n input[type=\"radio\"]:hover:focus ~ .goa-radio-icon,\n input[type=\"radio\"]:active ~ .goa-radio-icon {\n box-shadow: 0 0 0 var(--goa-radio-outline-width) var(--goa-color-interactive-focus);\n }\n\n /* Checked */\n input[type=\"radio\"]:checked ~ .goa-radio-icon {\n border: var(--goa-radio-border-width--checked) solid var(--goa-color-interactive-default);\n }\n\n /* Disabled */\n input[type=\"radio\"]:disabled ~ .goa-radio-icon,\n input[type=\"radio\"]:disabled:focus ~ .goa-radio-icon,\n input[type=\"radio\"]:disabled:active ~ .goa-radio-icon {\n border: var(--goa-radio-border-width) solid var(--goa-color-greyscale-700);\n box-shadow: none;\n opacity: 40%;\n }\n\n /* Disabled and checked */\n input[type=\"radio\"]:disabled:checked ~ .goa-radio-icon,\n input[type=\"radio\"]:disabled:checked:focus ~ .goa-radio-icon,\n input[type=\"radio\"]:disabled:checked:active ~ .goa-radio-icon {\n border: var(--goa-radio-border-width--checked) solid var(--goa-color-interactive-hover);\n box-shadow: none;\n }\n\n /* Error */\n .goa-radio--error input[type=\"radio\"]:checked ~ .goa-radio-icon,\n .goa-radio--error input[type=\"radio\"]:disabled:checked ~ .goa-radio-icon {\n border: 7px solid var(--goa-color-emergency-default);\n }\n\n .goa-radio--error input[type=\"radio\"]:hover ~ .goa-radio-icon {\n box-shadow: 0 0 0 1px var(--goa-color-emergency-default);\n }\n\n .goa-radio--error input[type=\"radio\"]:hover:active ~ .goa-radio-icon,\n .goa-radio--error input[type=\"radio\"]:hover:focus ~ .goa-radio-icon {\n box-shadow: 0 0 0 var(--goa-radio-outline-width) var(--goa-color-interactive-focus);\n }\n\n .goa-radio--error input[type=\"radio\"]:disabled:hover ~ .goa-radio-icon {\n box-shadow: none;\n }\n\n .goa-radio--error input[type=\"radio\"]:not(:checked) ~ .goa-radio-icon {\n border: 2px solid var(--goa-color-emergency-default);\n }\n</style>\n","<svelte:options customElement=\"goa-scrollable\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n // Public\n export let direction: \"vertical\" | \"horizontal\" = \"vertical\";\n export let hpadding: string = \"\";\n export let vpadding: string = \"\";\n export let maxheight: string = \"\";\n export let offsetHeight: number;\n export let scrollHeight: number;\n\n // Private\n let _el: HTMLElement;\n\n function onScroll(e: Event) {\n e.target.dispatchEvent(\n new CustomEvent(\"_scroll\", {\n composed: true,\n detail: {\n offsetHeight: _el.offsetHeight,\n scrollHeight: _el.scrollHeight,\n scrollTop: _el.scrollTop,\n },\n }),\n );\n e.stopPropagation();\n }\n\n onMount(async () => {\n await tick();\n offsetHeight = _el.offsetHeight;\n scrollHeight = _el.scrollHeight;\n });\n</script>\n\n<div\n class=\"goa-scrollable\"\n bind:this={_el}\n on:scroll={onScroll}\n style={`\n max-height: ${maxheight || \"50vh\"};\n overflow-y: ${direction === \"vertical\" ? \"auto\" : \"hidden\"};\n overflow-x: ${direction === \"horizontal\" ? \"auto\" : \"hidden\"};\n margin: ${vpadding} 0;\n padding: 0 ${hpadding};\n`}\n>\n <slot />\n</div>\n\n<style>\n .goa-scrollable {\n scroll-behavior: smooth;\n }\n\n .goa-scrollable::-webkit-scrollbar {\n width: 6px;\n }\n\n .goa-scrollable::-webkit-scrollbar-track {\n background: #f1f1f1;\n }\n\n .goa-scrollable::-webkit-scrollbar-thumb {\n background: #888;\n }\n\n .goa-scrollable::-webkit-scrollbar-thumb:hover {\n background: #555;\n }\n</style>\n","export function isUrlMatch(windowUrl: URL | Location, testUrl: string): number {\n // path match\n if (testUrl === undefined) return -1;\n\n const windowUrlParts = windowUrl.pathname.replace(/^\\//, \"\").split(\"/\");\n const urlParts = testUrl.replace(/^\\//, \"\").split(\"/\");\n\n if (windowUrlParts.length < urlParts.length) {\n return -1;\n }\n\n // hash\n if (windowUrl.hash.length > 0 && windowUrl.hash === testUrl) {\n return 1;\n }\n\n // root url\n if (urlParts.length === 1 && urlParts[0] === \"\") {\n return 0;\n }\n\n let weight = -1;\n let index = 0;\n\n for (const part of windowUrlParts) {\n if (urlParts[index] !== part) {\n break;\n }\n weight += 1;\n index++;\n }\n\n // if weight was incremented once, then it actually has a value of 1, not 0\n return weight >= 0 ? weight + 1 : weight;\n}\n","<svelte:options customElement=\"goa-side-menu\" />\n\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { isUrlMatch } from \"../../common/urls\";\n\n let _rootEl: HTMLElement;\n\n onMount(async () => {\n await tick();\n setCurrentUrl();\n addEventListeners();\n });\n\n onDestroy(() => {\n removeEventListeners();\n });\n\n function setCurrentUrl() {\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot) {\n return;\n }\n\n const links = slot\n .assignedElements()\n .filter((el: Element) => el.tagName === \"A\");\n\n let currentEl: Element | undefined = undefined;\n let maxWeight = 0;\n links.forEach((child: Element) => {\n const weight = isUrlMatch(\n document.location,\n child.getAttribute(\"href\") || \"\",\n );\n\n if (weight > maxWeight) {\n maxWeight = weight;\n currentEl = child;\n }\n child.classList.remove(\"current\");\n });\n\n if (!!currentEl) {\n // @ts-expect-error\n currentEl?.classList.add(\"current\");\n }\n }\n\n function addEventListeners() {\n // watch path changes\n let currentLocation = document.location.href;\n const observer = new MutationObserver((_mutationList) => {\n if (isUrlMatch(document.location, currentLocation)) {\n currentLocation = document.location.href;\n setCurrentUrl();\n }\n });\n observer.observe(document.body, { childList: true, subtree: true });\n\n // watch hash / browser history changes\n window.addEventListener(\"popstate\", setCurrentUrl);\n }\n\n function removeEventListeners() {\n window.removeEventListener(\"popstate\", setCurrentUrl);\n }\n</script>\n\n<div bind:this={_rootEl} class=\"side-menu\">\n <slot />\n</div>\n\n<style>\n :global(::slotted(a)),\n :global(::slotted(a:visited)) {\n /* required to override base styles */\n color: var(--goa-color-text-default) !important;\n\n display: block;\n font: var(--goa-typography-body-m);\n padding: 0.5rem 1rem 0.5rem 2rem;\n text-decoration: none;\n }\n\n :global(::slotted(a.current)) {\n font: var(--goa-typography-heading-s);\n background: #cedfee;\n }\n :global(::slotted(a:hover:not(.current))) {\n background: #cedfee;\n }\n :global(::slotted(a:focus-visible)) {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n }\n\n .side-menu {\n display: block;\n }\n</style>\n","<svelte:options customElement=\"goa-side-menu-group\" />\n\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { isUrlMatch } from \"../../common/urls\";\n\n type SideMenuGroupElement = HTMLElement & { heading?: string };\n\n export let heading: string;\n\n let _open = false;\n let _current = false;\n let _rootEl: HTMLElement;\n\n $: _slug = toSlug(heading);\n\n onMount(async () => {\n await tick(); // needed to allow for window location to be read\n checkUrlMatches();\n setCurrent();\n addEventListeners();\n });\n\n onDestroy(() => {\n removeEventListeners();\n });\n\n function checkUrlMatches() {\n _open = matchesMenu() || matchesChild(_rootEl);\n if (_open) {\n notifyParent(true);\n }\n }\n\n function addEventListeners() {\n // listen to events by children (if child is open the parent also has to be open)\n _rootEl.addEventListener(\"_open\", () => {\n _open = true;\n _current = true;\n });\n\n // watch path changes\n let currentLocation = document.location.href;\n const observer = new MutationObserver((_mutationList) => {\n // if path change occurs\n if (currentLocation !== document.location.href) {\n currentLocation = document.location.href;\n setCurrent();\n }\n });\n observer.observe(document.body, { childList: true, subtree: true });\n\n // watch hash / browser history changes\n window.addEventListener(\"popstate\", setCurrent);\n }\n\n function removeEventListeners() {\n window.removeEventListener(\"popstate\", setCurrent);\n }\n\n function toSlug(path: string): string {\n return path?.toLowerCase().replace(/ /g, \"-\");\n }\n\n function matchesMenu(): boolean {\n return isUrlMatch(document.location, _slug) >= 0;\n }\n\n function matchesChild(el: SideMenuGroupElement): boolean {\n if (isUrlMatch(document.location, toSlug(el.heading)) >= 0) {\n return true;\n }\n\n const slot = el.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot) {\n return false;\n }\n const children = slot.assignedElements();\n return !!children.find((child: Element) => {\n return isUrlMatch(document.location, child.getAttribute(\"href\")) >= 0;\n });\n }\n\n function setCurrent() {\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot) {\n return false;\n }\n\n const children = slot.assignedElements();\n let maxMatchWeight = -1;\n let matchedChild = null;\n\n _current = false;\n children.forEach((child: Element) => {\n const url = child.getAttribute(\"href\");\n const weight = isUrlMatch(document.location, url);\n if (weight > maxMatchWeight) {\n maxMatchWeight = weight;\n matchedChild = child;\n }\n child.classList.remove(\"current\");\n\n // get side-menu-group (level >= 2) marked as children\n if (child.tagName === \"GOA-SIDE-MENU-GROUP\") {\n child.setAttribute(\"child\", \"true\");\n }\n });\n\n if (matchedChild) {\n _current = true;\n matchedChild.classList.add(\"current\");\n notifyParent(true);\n }\n }\n\n function handleClick(e: Event) {\n _open = !_open;\n e.preventDefault();\n }\n\n function notifyParent(current: boolean) {\n _rootEl.dispatchEvent(\n new CustomEvent(\"_open\", {\n bubbles: true,\n composed: true,\n detail: { current },\n }),\n );\n }\n</script>\n\n<div bind:this={_rootEl} class=\"side-menu-group\" class:current={_current}>\n <a href={`#${_slug}`} class=\"heading\" on:click={handleClick}>\n {heading}\n {#if _open}\n <goa-icon type=\"chevron-down\" />\n {:else}\n <goa-icon type=\"chevron-forward\" />\n {/if}\n </a>\n <div class:hidden={!_open} class=\"group\" data-testid=\"group\">\n <slot />\n </div>\n</div>\n\n<style>\n :global(::slotted(a)),\n :global(::slotted(goa-side-menu-heading)),\n :global(::slotted(a:visited)) {\n /* required to override base styles */\n color: var(--goa-color-text-default) !important;\n display: block;\n font: var(--goa-typography-body-m);\n margin-left: 1rem;\n }\n\n :global(::slotted(a)),\n :global(::slotted(a:visited)) {\n padding: 0.5rem 1rem;\n text-decoration: none;\n border-left: 4px solid var(--goa-color-greyscale-100);\n }\n\n :global(::slotted(a.current)) {\n font: var(--goa-typography-heading-s);\n border-left: 4px solid var(--goa-color-interactive-disabled);\n background: var(--goa-color-info-background);\n }\n :global(::slotted(a:hover:not(.current))) {\n background: var(--goa-color-info-background);\n border-color: var(--goa-color-greyscale-200);\n }\n :global(::slotted(a:focus-visible)),\n .heading:focus-visible {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n }\n\n /**\n * .heading: the heading of a level 1 side-menu-group\n * :host([child=true]) a.heading: the heading of a level >=2 side-menu-group\n */\n :host([child=\"true\"]) a.heading,\n .heading {\n color: var(--goa-color-text-default);\n display: flex;\n align-items: center;\n justify-content: space-between;\n line-height: 2rem;\n padding: 0.5rem 1rem 0.5rem 2rem;\n text-decoration: none;\n }\n\n :host([child=\"true\"]) a.heading {\n margin-left: 1rem;\n border-left: 4px solid var(--goa-color-greyscale-100);\n padding: 0.5rem 1rem 0.5rem 1rem;\n }\n\n :host([child=\"true\"]) a.heading:hover {\n border-color: var(--goa-color-greyscale-200);\n background: var(--goa-color-info-background);\n }\n\n :host([child=\"true\"]) .side-menu-group.current a.heading {\n background: var(--goa-color-info-background);\n border-left: 4px solid var(--goa-color-interactive-disabled);\n }\n\n .side-menu-group.current .heading {\n background: #cedfee;\n }\n .heading:hover {\n background: #cedfee;\n }\n\n .hidden {\n display: none;\n }\n\n .group {\n padding-left: 1rem;\n }\n</style>\n","<svelte:options customElement=\"goa-side-menu-heading\" />\n\n<script lang=\"ts\">\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n\n export let icon: GoAIconType = null;\n</script>\n\n<h2 data-testid=\"section-heading\" class:icon>\n {#if icon}\n <goa-icon id=\"heading-icon\" type={icon} theme=\"filled\" />\n {/if}\n <slot />\n <slot name=\"meta\" />\n</h2>\n\n<style>\n h2 {\n border-top: var(--goa-border-width-m) solid\n var(--goa-color-greyscale-200, #dcdcdc);\n background: var(--goa-color-greyscale-100, #f1f1f1);\n padding: 0.75rem 0.75rem 0.5rem 1.5rem;\n margin: 0;\n color: var(--goa-color-text-secondary, #666);\n font: var(--goa-typography-heading-s);\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n }\n</style>\n","<svelte:options customElement=\"goa-skeleton\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n\n // Validator\n const [Types, validateType] = typeValidator(\n \"Skeleton type\",\n [\n \"image\",\n \"text\",\n \"title\",\n \"text-small\",\n \"avatar\",\n \"header\",\n \"paragraph\",\n \"thumbnail\",\n \"card\",\n \"lines\",\n \"profile\",\n \"article\",\n ],\n true,\n );\n const [Sizes, validateSize] = typeValidator(\"Skeleton size\", [\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n ]);\n\n // Type\n type SkeletonType = (typeof Types)[number];\n type SkeletonSize = (typeof Sizes)[number];\n\n export let maxwidth: string = \"300px\";\n export let size: SkeletonSize = \"1\";\n export let linecount: number = 3;\n export let type: SkeletonType;\n export let testid: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n onMount(() => {\n setTimeout(() => validateType(type), 1);\n validateSize(size);\n });\n</script>\n\n<!-- HTML -->\n<div \n id=\"container\"\n data-testid={testid} \n style={calculateMargin(mt, mr, mb, ml)}>\n {#if type === \"card\"}\n <div class=\"card card-{size}\" style=\"--max-width: {maxwidth};\">\n <svelte:self type=\"image\" {size} />\n <div class=\"card-content\">\n <svelte:self type=\"header\" {size} />\n <svelte:self type=\"lines\" {size} {linecount} />\n </div>\n </div>\n {:else if type === \"profile\"}\n <div class=\"profile profile-{size}\">\n <div class=\"profile-avatar\">\n <svelte:self type=\"avatar\" {size} />\n </div>\n <div class=\"profile-name\">\n <svelte:self type=\"title\" {size} />\n <svelte:self type=\"text-small\" {size} />\n </div>\n </div>\n {:else if type === \"lines\"}\n {#each Array(Number.parseInt(linecount + \"\")) as _item}\n <svelte:self type=\"text\" {size} {linecount} />\n {/each}\n {:else if type === \"article\"}\n <div>\n <div style=\"display: flex; gap: 1rem;\">\n <div style=\"flex: 1 1 auto\">\n <svelte:self type=\"image\" {size} />\n </div>\n <div style=\"flex: 2 2 auto\">\n <svelte:self type=\"header\" size=\"4\" />\n <svelte:self type=\"header\" size=\"1\" />\n </div>\n </div>\n <svelte:self type=\"lines\" {size} />\n </div>\n {:else}\n <div class=\"skeleton {type} {`${type}-${size}`}\"></div>\n {/if}\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n #container {\n container: self / inline-size;\n }\n \n @keyframes pulse {\n 0% {\n opacity: 0.5;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0.5;\n }\n }\n\n .skeleton {\n background-color: var(--goa-color-greyscale-100);\n animation: pulse 2s infinite ease-in-out;\n overflow: hidden;\n margin: 10px 0;\n }\n\n .image,\n .image-1 {\n background-color: var(--goa-color-greyscale-100);\n flex: 1 1 100px;\n height: 100px;\n margin: 0;\n }\n .image-2 {\n height: 140px;\n }\n .image-3 {\n height: 200px;\n }\n .image-4 {\n height: 300px;\n }\n\n .text,\n .text-1,\n .text-2,\n .text-3,\n .text-4 {\n width: 100%;\n height: 0.75rem;\n border-radius: 0.25rem;\n margin: 6px 0;\n }\n\n .title,\n .title-1,\n .title-2 {\n width: 100%;\n height: 0.75rem;\n border-radius: 0.25rem;\n }\n .title-3 {\n height: 0.8rem;\n }\n .title-4 {\n height: 1rem;\n }\n\n .text-small,\n .text-small-1 {\n width: 30%;\n height: 6px;\n border-radius: 2px;\n }\n .text-small-2 {\n width: 40%;\n height: 8px;\n border-radius: 2px;\n }\n .text-small-3 {\n width: 50%;\n height: 10px;\n border-radius: 3px;\n }\n .text-small-4 {\n width: 70%;\n height: 12px;\n border-radius: 4px;\n }\n\n .paragraph {\n width: 100%;\n height: 70px;\n border-radius: 4px;\n }\n\n .header,\n .header-1 {\n width: 50%;\n height: 18px;\n margin: 12px 0;\n border-radius: 0.25rem;\n }\n .header-2 {\n width: 60%;\n height: 20px;\n margin: 14px 0;\n border-radius: 0.25rem;\n }\n .header-3 {\n width: 70%;\n height: 22px;\n margin: 16px 0;\n border-radius: 0.25rem;\n }\n .header-4 {\n width: 80%;\n height: 24px;\n margin: 18px 0;\n border-radius: 0.3rem;\n }\n\n .avatar {\n display: inline-block;\n }\n .avatar,\n .avatar-1 {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n }\n .avatar-2 {\n width: 60px;\n height: 60px;\n border-radius: 50%;\n }\n .avatar-3 {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n }\n .avatar-4 {\n width: 120px;\n height: 120px;\n border-radius: 50%;\n }\n\n .thumbnail {\n display: inline-block;\n }\n .thumbnail,\n .thumbnail-1 {\n width: 40px;\n height: 40px;\n border-radius: 4px;\n }\n .thumbnail-2 {\n width: 60px;\n height: 60px;\n border-radius: 4px;\n }\n .thumbnail-3 {\n width: 80px;\n height: 80px;\n border-radius: 4px;\n }\n .thumbnail-4 {\n width: 120px;\n height: 120px;\n border-radius: 4px;\n }\n\n .card {\n display: inline-block;\n }\n .card,\n .card-1,\n .card-2,\n .card-3,\n .card-4 {\n border: 1px solid var(--goa-color-greyscale-100);\n border-radius: 4px;\n }\n\n @container self (--mobile) {\n .card {\n width: 100%;\n }\n }\n @container self (--not-mobile) {\n .card {\n width: var(--max-width);\n }\n }\n\n /* helpers */\n\n .card-content {\n flex: 1 1 auto;\n padding: 1rem;\n }\n\n .profile {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n .profile-1 {\n max-width: 280px;\n gap: 1rem;\n }\n .profile-2 {\n max-width: 360px;\n gap: 1rem;\n }\n .profile-3 {\n max-width: 480px;\n gap: 1rem;\n }\n .profile-4 {\n max-width: 560px;\n gap: 1rem;\n }\n\n .profile .profile-avatar {\n flex-shrink: 0;\n }\n .profile .profile-name {\n flex: 1 1 auto;\n }\n</style>\n","<svelte:options customElement=\"goa-spacer\" />\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { injectCss, type Spacing } from \"../../common/styling\";\n\n export let hspacing: Spacing | \"fill\" = \"none\";\n export let vspacing: Spacing = \"none\";\n\n let rootEl: HTMLElement;\n onMount(() => {\n const height = `var(--goa-space-${vspacing})`;\n const width = hspacing === \"fill\" \n ? \"100%\" \n : `var(--goa-space-${hspacing})`;\n injectCss(rootEl, \":host\", { width, height });\n });\n</script>\n\n<div \n bind:this={rootEl}\n style={`\n height: var(--goa-space-${vspacing});\n width: var(--goa-space-${hspacing});\n `}\n/>\n","import {\n\trun_all,\n\tsubscribe,\n\tnoop,\n\tsafe_not_equal,\n\tis_function,\n\tget_store_value\n} from '../internal/index.js';\n\nconst subscriber_queue = [];\n\n/**\n * Creates a `Readable` store that allows reading by subscription.\n *\n * https://svelte.dev/docs/svelte-store#readable\n * @template T\n * @param {T} [value] initial value\n * @param {import('./public.js').StartStopNotifier<T>} [start]\n * @returns {import('./public.js').Readable<T>}\n */\nexport function readable(value, start) {\n\treturn {\n\t\tsubscribe: writable(value, start).subscribe\n\t};\n}\n\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n *\n * https://svelte.dev/docs/svelte-store#writable\n * @template T\n * @param {T} [value] initial value\n * @param {import('./public.js').StartStopNotifier<T>} [start]\n * @returns {import('./public.js').Writable<T>}\n */\nexport function writable(value, start = noop) {\n\t/** @type {import('./public.js').Unsubscriber} */\n\tlet stop;\n\t/** @type {Set<import('./private.js').SubscribeInvalidateTuple<T>>} */\n\tconst subscribers = new Set();\n\t/** @param {T} new_value\n\t * @returns {void}\n\t */\n\tfunction set(new_value) {\n\t\tif (safe_not_equal(value, new_value)) {\n\t\t\tvalue = new_value;\n\t\t\tif (stop) {\n\t\t\t\t// store is ready\n\t\t\t\tconst run_queue = !subscriber_queue.length;\n\t\t\t\tfor (const subscriber of subscribers) {\n\t\t\t\t\tsubscriber[1]();\n\t\t\t\t\tsubscriber_queue.push(subscriber, value);\n\t\t\t\t}\n\t\t\t\tif (run_queue) {\n\t\t\t\t\tfor (let i = 0; i < subscriber_queue.length; i += 2) {\n\t\t\t\t\t\tsubscriber_queue[i][0](subscriber_queue[i + 1]);\n\t\t\t\t\t}\n\t\t\t\t\tsubscriber_queue.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {import('./public.js').Updater<T>} fn\n\t * @returns {void}\n\t */\n\tfunction update(fn) {\n\t\tset(fn(value));\n\t}\n\n\t/**\n\t * @param {import('./public.js').Subscriber<T>} run\n\t * @param {import('./private.js').Invalidator<T>} [invalidate]\n\t * @returns {import('./public.js').Unsubscriber}\n\t */\n\tfunction subscribe(run, invalidate = noop) {\n\t\t/** @type {import('./private.js').SubscribeInvalidateTuple<T>} */\n\t\tconst subscriber = [run, invalidate];\n\t\tsubscribers.add(subscriber);\n\t\tif (subscribers.size === 1) {\n\t\t\tstop = start(set, update) || noop;\n\t\t}\n\t\trun(value);\n\t\treturn () => {\n\t\t\tsubscribers.delete(subscriber);\n\t\t\tif (subscribers.size === 0 && stop) {\n\t\t\t\tstop();\n\t\t\t\tstop = null;\n\t\t\t}\n\t\t};\n\t}\n\treturn { set, update, subscribe };\n}\n\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * https://svelte.dev/docs/svelte-store#derived\n * @template {import('./private.js').Stores} S\n * @template T\n * @overload\n * @param {S} stores - input stores\n * @param {(values: import('./private.js').StoresValues<S>, set: (value: T) => void, update: (fn: import('./public.js').Updater<T>) => void) => import('./public.js').Unsubscriber | void} fn - function callback that aggregates the values\n * @param {T} [initial_value] - initial value\n * @returns {import('./public.js').Readable<T>}\n */\n\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * https://svelte.dev/docs/svelte-store#derived\n * @template {import('./private.js').Stores} S\n * @template T\n * @overload\n * @param {S} stores - input stores\n * @param {(values: import('./private.js').StoresValues<S>) => T} fn - function callback that aggregates the values\n * @param {T} [initial_value] - initial value\n * @returns {import('./public.js').Readable<T>}\n */\n\n/**\n * @template {import('./private.js').Stores} S\n * @template T\n * @param {S} stores\n * @param {Function} fn\n * @param {T} [initial_value]\n * @returns {import('./public.js').Readable<T>}\n */\nexport function derived(stores, fn, initial_value) {\n\tconst single = !Array.isArray(stores);\n\t/** @type {Array<import('./public.js').Readable<any>>} */\n\tconst stores_array = single ? [stores] : stores;\n\tif (!stores_array.every(Boolean)) {\n\t\tthrow new Error('derived() expects stores as input, got a falsy value');\n\t}\n\tconst auto = fn.length < 2;\n\treturn readable(initial_value, (set, update) => {\n\t\tlet started = false;\n\t\tconst values = [];\n\t\tlet pending = 0;\n\t\tlet cleanup = noop;\n\t\tconst sync = () => {\n\t\t\tif (pending) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcleanup();\n\t\t\tconst result = fn(single ? values[0] : values, set, update);\n\t\t\tif (auto) {\n\t\t\t\tset(result);\n\t\t\t} else {\n\t\t\t\tcleanup = is_function(result) ? result : noop;\n\t\t\t}\n\t\t};\n\t\tconst unsubscribers = stores_array.map((store, i) =>\n\t\t\tsubscribe(\n\t\t\t\tstore,\n\t\t\t\t(value) => {\n\t\t\t\t\tvalues[i] = value;\n\t\t\t\t\tpending &= ~(1 << i);\n\t\t\t\t\tif (started) {\n\t\t\t\t\t\tsync();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tpending |= 1 << i;\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\tstarted = true;\n\t\tsync();\n\t\treturn function stop() {\n\t\t\trun_all(unsubscribers);\n\t\t\tcleanup();\n\t\t\t// We need to set this to false because callbacks can still happen despite having unsubscribed:\n\t\t\t// Callbacks might already be placed in the queue which doesn't know it should no longer\n\t\t\t// invoke this derived store.\n\t\t\tstarted = false;\n\t\t};\n\t});\n}\n\n/**\n * Takes a store and returns a new one derived from the old one that is readable.\n *\n * https://svelte.dev/docs/svelte-store#readonly\n * @template T\n * @param {import('./public.js').Readable<T>} store - store to make readonly\n * @returns {import('./public.js').Readable<T>}\n */\nexport function readonly(store) {\n\treturn {\n\t\tsubscribe: store.subscribe.bind(store)\n\t};\n}\n\nexport { get_store_value as get };\n","/**\n * @param {any} obj\n * @returns {boolean}\n */\nexport function is_date(obj) {\n\treturn Object.prototype.toString.call(obj) === '[object Date]';\n}\n","import { writable } from '../store/index.js';\nimport { assign, loop, now } from '../internal/index.js';\nimport { linear } from '../easing/index.js';\nimport { is_date } from './utils.js';\n\n/** @returns {(t: any) => any} */\nfunction get_interpolator(a, b) {\n\tif (a === b || a !== a) return () => a;\n\tconst type = typeof a;\n\tif (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) {\n\t\tthrow new Error('Cannot interpolate values of different type');\n\t}\n\tif (Array.isArray(a)) {\n\t\tconst arr = b.map((bi, i) => {\n\t\t\treturn get_interpolator(a[i], bi);\n\t\t});\n\t\treturn (t) => arr.map((fn) => fn(t));\n\t}\n\tif (type === 'object') {\n\t\tif (!a || !b) throw new Error('Object cannot be null');\n\t\tif (is_date(a) && is_date(b)) {\n\t\t\ta = a.getTime();\n\t\t\tb = b.getTime();\n\t\t\tconst delta = b - a;\n\t\t\treturn (t) => new Date(a + t * delta);\n\t\t}\n\t\tconst keys = Object.keys(b);\n\t\tconst interpolators = {};\n\t\tkeys.forEach((key) => {\n\t\t\tinterpolators[key] = get_interpolator(a[key], b[key]);\n\t\t});\n\t\treturn (t) => {\n\t\t\tconst result = {};\n\t\t\tkeys.forEach((key) => {\n\t\t\t\tresult[key] = interpolators[key](t);\n\t\t\t});\n\t\t\treturn result;\n\t\t};\n\t}\n\tif (type === 'number') {\n\t\tconst delta = b - a;\n\t\treturn (t) => a + t * delta;\n\t}\n\tthrow new Error(`Cannot interpolate ${type} values`);\n}\n\n/**\n * A tweened store in Svelte is a special type of store that provides smooth transitions between state values over time.\n *\n * https://svelte.dev/docs/svelte-motion#tweened\n * @template T\n * @param {T} [value]\n * @param {import('./private.js').TweenedOptions<T>} [defaults]\n * @returns {import('./public.js').Tweened<T>}\n */\nexport function tweened(value, defaults = {}) {\n\tconst store = writable(value);\n\t/** @type {import('../internal/private.js').Task} */\n\tlet task;\n\tlet target_value = value;\n\t/**\n\t * @param {T} new_value\n\t * @param {import('./private.js').TweenedOptions<T>} [opts]\n\t */\n\tfunction set(new_value, opts) {\n\t\tif (value == null) {\n\t\t\tstore.set((value = new_value));\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\ttarget_value = new_value;\n\t\tlet previous_task = task;\n\t\tlet started = false;\n\t\tlet {\n\t\t\tdelay = 0,\n\t\t\tduration = 400,\n\t\t\teasing = linear,\n\t\t\tinterpolate = get_interpolator\n\t\t} = assign(assign({}, defaults), opts);\n\t\tif (duration === 0) {\n\t\t\tif (previous_task) {\n\t\t\t\tprevious_task.abort();\n\t\t\t\tprevious_task = null;\n\t\t\t}\n\t\t\tstore.set((value = target_value));\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\tconst start = now() + delay;\n\t\tlet fn;\n\t\ttask = loop((now) => {\n\t\t\tif (now < start) return true;\n\t\t\tif (!started) {\n\t\t\t\tfn = interpolate(value, new_value);\n\t\t\t\tif (typeof duration === 'function') duration = duration(value, new_value);\n\t\t\t\tstarted = true;\n\t\t\t}\n\t\t\tif (previous_task) {\n\t\t\t\tprevious_task.abort();\n\t\t\t\tprevious_task = null;\n\t\t\t}\n\t\t\tconst elapsed = now - start;\n\t\t\tif (elapsed > /** @type {number} */ (duration)) {\n\t\t\t\tstore.set((value = new_value));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// @ts-ignore\n\t\t\tstore.set((value = fn(easing(elapsed / duration))));\n\t\t\treturn true;\n\t\t});\n\t\treturn task.promise;\n\t}\n\treturn {\n\t\tset,\n\t\tupdate: (fn, opts) => set(fn(target_value, value), opts),\n\t\tsubscribe: store.subscribe\n\t};\n}\n","<svelte:options customElement=\"goa-spinner\" />\n\n<script lang=\"ts\" context=\"module\">\n export type SpinnerSize = \"small\" | \"medium\" | \"large\" | \"xlarge\";\n export type SpinnerType = \"infinite\" | \"progress\";\n</script>\n\n<!-- Script -->\n<script lang=\"ts\">\n import { tweened } from \"svelte/motion\";\n import { quartOut } from \"svelte/easing\";\n\n // required\n export let size: SpinnerSize;\n\n // optional\n export let invert: boolean = false;\n export let progress: number = -1;\n export let testid: string = \"\";\n\n let type: SpinnerType = \"infinite\";\n\n const _progress = tweened(0, {\n duration: 500,\n easing: quartOut,\n });\n\n // Reactive\n\n $: {\n // Typescript recognizes `progress` as a number, but once compiled, due to it being a web component, progress is a string.\n // This line makes both sides happy.\n const p = parseFloat(progress + \"\");\n\n if (p >= 0) {\n _progress.set(p || 1); // start at 1 to prevent incorrect arc calculations\n type = \"progress\";\n }\n }\n\n $: diameter =\n size &&\n {\n small: 16,\n medium: 32,\n large: 64,\n xlarge: 100,\n }[size];\n\n $: strokewidth =\n size &&\n {\n small: 2,\n medium: 4,\n large: 7,\n xlarge: 9,\n }[size];\n\n $: radius = diameter / 2;\n $: pathRadius = radius - strokewidth / 2;\n\n $: ready = type === \"infinite\" ? pathRadius : pathRadius && progress;\n\n // Functions\n\n function getCoords(radians: number): string {\n const x = radius + pathRadius * Math.cos(radians);\n const y = radius + pathRadius * Math.sin(radians);\n return x + \" \" + y;\n }\n\n function getArc(progress: number): string {\n switch (type) {\n case \"progress\": {\n const start = getCoords(-Math.PI / 2);\n const end = getCoords(-Math.PI / 2 + 2 * Math.PI * (progress / 100));\n const largeArcFlag = progress % 100 < 50 ? 0 : 1;\n\n return `M ${start} A ${pathRadius} ${pathRadius} 0 ${largeArcFlag} 1 ${end}`;\n }\n case \"infinite\": {\n const start = getCoords(Math.PI * 1.5);\n const end = getCoords(0);\n\n return `M ${start} A ${pathRadius} ${pathRadius} 0 1 0 ${end}`;\n }\n }\n }\n</script>\n\n<!-- HTML -->\n{#if ready}\n <svg\n class={`spinner-${type}`}\n fill=\"none\"\n viewBox=\"0 0 {diameter} {diameter}\"\n width={diameter}\n height={diameter}\n data-testid={testid}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx={radius}\n cy={radius}\n stroke={invert\n ? \"var(--goa-color-info-hover)\"\n : \"var(--goa-color-brand-light)\"}\n stroke-width={strokewidth}\n r={radius - strokewidth / 2}\n />\n <path\n d={getArc($_progress)}\n stroke-width={strokewidth}\n stroke={invert\n ? \"var(--goa-color-brand-light)\"\n : \"var(--goa-color-info-default)\"}\n stroke-linecap=\"round\"\n />\n </svg>\n{/if}\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n .spinner-infinite {\n animation: rotate 2s linear infinite;\n }\n</style>\n","<svelte:options customElement=\"goa-tab\" />\n\n<script lang=\"ts\">\n import { toBoolean } from \"../../common/utils\";\n\n // ======\n // Public\n // ======\n\n export let heading: string = \"\";\n\n // =======\n // Private\n // =======\n\n export let open: string = \"false\";\n\n let _isOpen: boolean;\n $: _isOpen = toBoolean(open);\n</script>\n\n<div style=\"display:none\" data-heading={heading} />\n<slot style=\"display:none\" name=\"heading\" />\n{#if _isOpen}\n <div role=\"tabpanel\">\n <slot />\n </div>\n{/if}\n\n<style>\n [role=\"tabpanel\"] {\n padding-top: 2rem;\n }\n</style>\n","<svelte:options customElement=\"goa-table\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n import { calculateMargin } from \"../../common/styling\";\n import { typeValidator, toBoolean } from \"../../common/utils\";\n import type { GoATableSortDirection } from \"./TableSortHeader.svelte\";\n import type { Spacing } from \"../../common/styling\";\n\n // Validators\n const [Variants, validateVariant] = typeValidator(\n \"Table variant\",\n [\"normal\", \"relaxed\"],\n true,\n );\n type Variant = (typeof Variants)[number];\n\n // Public\n\n export let width: string = \"\";\n export let stickyheader: string = \"false\";\n export let variant: Variant = \"normal\";\n\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Private\n\n let _rootEl: HTMLElement;\n let _isTableRoot: boolean = false;\n\n // Reactive\n\n $: _stickyHeader = toBoolean(stickyheader);\n\n // Hooks\n\n onMount(() => {\n validateVariant(variant);\n\n // without setTimeout it won't properly sort in Safari\n setTimeout(attachSortEventHandling, 0);\n\n // exit here if when running tests (tests don't have assignedElements)\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot || slot.assignedElements().length === 0) {\n return;\n }\n\n // React has everything nested in a table to prevent invalid DOM errors\n _isTableRoot = slot.assignedElements()[0].tagName === \"TABLE\";\n });\n\n // Functions\n\n async function attachSortEventHandling() {\n await tick();\n const contentSlot = _rootEl?.querySelector(\"slot\") as HTMLSlotElement;\n const headings = contentSlot\n ?.assignedElements()\n .find((el) => el.tagName === \"THEAD\" || el.tagName === \"TABLE\")\n ?.querySelectorAll(\"goa-table-sort-header\");\n\n headings?.forEach((heading) => {\n heading.addEventListener(\"click\", () => {\n const sortBy = heading.getAttribute(\"name\");\n let sortDir: number = 0;\n\n // relay state to all children\n headings.forEach((child) => {\n if (child.getAttribute(\"name\") === sortBy) {\n // @ts-expect-error\n const direction = child[\"direction\"] as GoATableSortDirection;\n // starting direction is asc\n const newDirection = direction === \"asc\" ? \"desc\" : \"asc\";\n\n sortDir = newDirection === \"asc\" ? 1 : -1;\n child.setAttribute(\"direction\", newDirection);\n } else {\n child.setAttribute(\"direction\", \"none\");\n }\n });\n\n if (sortBy && sortDir !== 0) {\n dispatch(heading, { sortBy, sortDir });\n }\n });\n\n // dispatch the default sort params if initially set\n const initialSortBy = heading.getAttribute(\"name\");\n // @ts-ignore\n const initialDirection = heading[\"direction\"] as GoATableSortDirection;\n if (initialSortBy && initialDirection && initialDirection !== \"none\") {\n setTimeout(() => {\n dispatch(heading, {\n sortBy: initialSortBy,\n sortDir: initialDirection === \"asc\" ? 1 : -1,\n });\n }, 10);\n }\n });\n }\n\n function dispatch(el: Element, params: { sortBy: string; sortDir: number }) {\n el.dispatchEvent(\n new CustomEvent(\"_sort\", {\n composed: true,\n bubbles: true,\n cancelable: false,\n detail: params,\n }),\n );\n }\n</script>\n\n<div\n bind:this={_rootEl}\n class={`goatable ${variant}`}\n class:sticky={_stickyHeader}\n style={`\n ${`width: ${width || \"100%\"};`}\n ${calculateMargin(mt, mr, mb, ml)}\n `}\n>\n {#if _isTableRoot}\n <slot />\n {:else}\n <table style={width && \"width: 100%;\"}>\n <slot />\n </table>\n {/if}\n</div>\n\n<style>\n /* other styles can be found in the assets/css/components.css file */\n :host {\n overflow-x: auto;\n }\n .goatable {\n width: 0;\n }\n\n table {\n border-collapse: collapse;\n }\n</style>\n","<svelte:options customElement=\"goa-table-sort-header\" />\n\n<script context=\"module\" lang=\"ts\">\n export type GoATableSortDirection = \"asc\" | \"desc\" | \"none\";\n</script>\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n export let direction: GoATableSortDirection = \"none\";\n\n // Private\n let _rootEl: HTMLElement;\n onMount(() => {\n if (_rootEl) {\n // Add styling if an ancestor has a class to style number columns,\n const hostEl = _rootEl.getRootNode().host;\n const ancestor = hostEl?.closest(\"th.goa-table-number-header\");\n if (ancestor) {\n _rootEl.style.setProperty(\"--header-text-align\", \"flex-end\");\n }\n }\n });\n</script>\n\n<button bind:this={_rootEl}>\n <slot />\n {#if direction === \"desc\"}\n <goa-icon type=\"caret-down\" size=\"small\" />\n {:else if direction === \"asc\"}\n <goa-icon type=\"caret-up\" size=\"small\" />\n {:else}\n <div class=\"direction--none\">\n <goa-icon type=\"caret-up\" size=\"small\" />\n <goa-icon type=\"caret-down\" size=\"small\" />\n </div>\n {/if}\n</button>\n\n<style>\n :host {\n display: flex;\n align-items: flex-end;\n }\n\n button {\n border: none;\n background: none;\n display: flex;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n color: inherit;\n width: 100%;\n height: 3.75rem;\n padding: 0 1rem;\n justify-content: var(--header-text-align, flex-start);\n gap: 0.25rem;\n align-items: center;\n }\n\n /* User set classes */\n button:hover {\n background-color: var(--goa-color-greyscale-100);\n cursor: pointer;\n color: var(--goa-color-interactive-hover);\n }\n\n button goa-icon {\n color: var(--goa-color-interactive-default);\n }\n button:hover goa-icon {\n color: var(--goa-color-interactive-hover);\n }\n button .direction--none goa-icon {\n color: var(--goa-color-greyscale-400);\n }\n button:hover .direction--none goa-icon {\n color: var(--goa-color-greyscale-400);\n }\n\n goa-icon {\n scale: 0.8;\n }\n\n .direction--none goa-icon {\n height: 0.625rem;\n }\n\n .direction--none {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n }\n</style>\n","<svelte:options customElement=\"goa-tabs\" />\n\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { clamp, fromBoolean } from \"../../common/utils\";\n\n export let initialtab: number = 1; // 1-based\n\n // Private\n let _rootEl: HTMLElement;\n let _tabs: Element[] = [];\n let _tabsEl: HTMLElement;\n let _panelEl: HTMLElement;\n let _currentTab: number = 1;\n\n // ========\n // Hooks\n // ========\n\n onMount(async () => {\n // init listeners\n addKeyboardEventListeners();\n\n // setup tabs\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n slot.addEventListener(\"slotchange\", () => {\n _tabs = slot.assignedElements();\n bindTabs(_tabs);\n });\n } else {\n // @ts-expect-error\n _tabs = [..._rootEl.querySelectorAll(\"goa-tab\")] as Element[]; // for unit tests\n bindTabs(_tabs);\n }\n\n setTimeout(() => {\n // HACK: this is done to get the initial tab set when using angular\n setCurrentTab(+initialtab);\n }, 1);\n setCurrentTab(+initialtab);\n });\n\n function bindTabs(tabs: Element[]) {\n const path = window.location.pathname;\n\n // create buttons (tabs) for each of the tab contents elements\n tabs.forEach((tab, index) => {\n // @ts-expect-error\n let headingEl = [...tab.children].find(\n (child) => child.getAttribute(\"slot\") === \"heading\",\n ) as HTMLElement;\n\n let tabSlug: string;\n\n if (headingEl) {\n // slot exists\n headingEl?.classList.add(\"tab\");\n } else {\n // heading prop is set\n const headingDataEl = (tab.shadowRoot || tab)?.querySelector(\n \"[data-heading]\",\n ) as HTMLElement;\n\n const heading =\n headingDataEl?.dataset[\"heading\"] || tab.getAttribute(\"heading\");\n if (heading) {\n headingEl = document.createElement(\"div\");\n headingEl.classList.add(\"tab\");\n headingEl.textContent = heading;\n tabSlug = heading;\n } \n }\n\n tabSlug ||= \"tab-\" + index;\n if (headingEl) {\n const link = document.createElement(\"a\");\n link.setAttribute(\"id\", `tab-${index + 1}`);\n link.setAttribute(\"data-testid\", `tab-${index + 1}`);\n link.setAttribute(\"role\", \"tab\");\n link.setAttribute(\"href\", path + \"#\" + tabSlug);\n link.addEventListener(\"click\", () => setCurrentTab(index + 1));\n link.setAttribute(\"aria-controls\", `tabpanel-${index + 1}`);\n link.appendChild(headingEl);\n\n _tabsEl.appendChild(link);\n }\n });\n }\n\n onDestroy(() => {\n removeKeyboardEventListeners();\n });\n\n // =========\n // Functions\n // =========\n\n function addKeyboardEventListeners() {\n _rootEl.addEventListener(\"focus\", handleKeydownEvents, true);\n }\n\n function removeKeyboardEventListeners() {\n // TODO: determine if this is ever being called\n _rootEl.removeEventListener(\"focus\", handleKeydownEvents, true);\n }\n\n function setCurrentTab(tab: number) {\n // prevent tab from exceeding limits\n _currentTab = clamp(tab, 1, _tabs.length);\n\n // HACK: this only exists due to the `setTimeout` on line , which is required to allow the\n // initialtab to be properly set in Angular, causes null errors.\n if (!_tabsEl) return;\n\n let currentLocation = \"\";\n // @ts-expect-error\n [..._tabsEl.querySelectorAll(\"[role=tab]\")].map((el, index) => {\n const isCurrent = index + 1 === _currentTab; // currentTab is 1-based\n _tabs[index].setAttribute(\"open\", \"false\");\n el.setAttribute(\"aria-selected\", fromBoolean(isCurrent));\n el.setAttribute(\"tabindex\", isCurrent ? \"0\" : \"-1\");\n if (isCurrent) {\n currentLocation = (el as HTMLLinkElement).href;\n el.focus();\n _tabs[index].setAttribute(\"open\", \"true\"); // display tab content\n }\n });\n\n _panelEl.setAttribute(\"aria-labelledby\", `tab-${_currentTab}`);\n _panelEl.setAttribute(\"id\", `tabpanel-${_currentTab}`);\n\n // update the browswers url with the new hash\n if (currentLocation) {\n document.location = currentLocation\n }\n }\n\n function handleKeydownEvents() {\n _rootEl.addEventListener(\"keydown\", onKeyDown);\n }\n\n function onKeyDown(e: KeyboardEvent) {\n let isHandled = false;\n const isTabButtonFocused = e.target && _tabsEl.contains(e.target as Node);\n\n if (!isTabButtonFocused) {\n return;\n }\n\n switch (e.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n if (_currentTab === 1) {\n setCurrentTab(_tabs.length);\n } else {\n setCurrentTab(_currentTab - 1);\n }\n isHandled = true;\n break;\n case \"ArrowDown\":\n case \"ArrowRight\":\n if (_currentTab === _tabs.length) {\n setCurrentTab(1);\n } else {\n setCurrentTab(_currentTab + 1);\n }\n isHandled = true;\n break;\n case \"Home\":\n setCurrentTab(1);\n isHandled = true;\n break;\n case \"End\":\n setCurrentTab(_tabs.length);\n isHandled = true;\n break;\n default:\n break;\n }\n\n if (isHandled) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n</script>\n\n<!--HTML-->\n\n<div role=\"tablist\" bind:this={_rootEl}>\n <div class=\"tabs\" bind:this={_tabsEl}></div>\n <div class=\"tabpanel\" tabindex=\"0\" bind:this={_panelEl} role=\"tabpanel\">\n <slot />\n </div>\n</div>\n\n<style>\n :host {\n box-sizing: border-box;\n font: var(--goa-typography-body-m);\n }\n\n :global(.tab) {\n display: flex;\n gap: var(--goa-space-xs);\n }\n\n :global([role=\"tab\"]) {\n display: block;\n background: none;\n overflow: hidden;\n white-space: nowrap;\n cursor: pointer;\n border: none;\n font: var(--goa-typography-body-m);\n color: var(--goa-color-text-default);\n text-decoration: none;\n letter-spacing: 0.03125rem;\n }\n\n :global([role=\"tab\"][aria-selected=\"true\"]) {\n font: var(--goa-typography-heading-s);\n }\n\n :global([role=\"tab\"]:focus-visible) {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n }\n\n :global([role=\"tab\"]:hover:not([aria-selected=\"true\"])),\n :global([role=\"tab\"]:focus:not([aria-selected=\"true\"])),\n :global([role=\"tab\"]:focus-visible:not([aria-selected=\"true\"])) {\n border-color: var(--goa-color-greyscale-200);\n }\n\n @media (--not-mobile) {\n :global([role=\"tablist\"]) {\n border-bottom: none;\n }\n .tabs {\n border-bottom: var(--goa-border-width-s) solid\n var(--goa-color-greyscale-200);\n display: flex;\n gap: var(--goa-space-xl);\n }\n :global([role=\"tab\"]) {\n padding: var(--goa-space-s) var(--goa-space-m);\n border-bottom: 4px solid transparent;\n }\n :global([role=\"tab\"][aria-selected=\"true\"]) {\n border-color: var(--goa-color-interactive-default);\n }\n }\n\n @media (--mobile) {\n :global([role=\"tab\"]) {\n width: 100%;\n padding: var(--goa-space-xs) 0;\n padding-left: 12px;\n border-left: 4px solid transparent;\n }\n :global([role=\"tab\"][aria-selected=\"true\"]) {\n border-color: var(--goa-color-interactive-default);\n background: var(--goa-color-info-background);\n }\n }\n</style>\n","<svelte:options customElement=\"goa-textarea\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { pluralize, toBoolean } from \"../../common/utils\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n\n export let name: string;\n export let value: string = \"\";\n export let placeholder: string = \"\";\n export let rows: number = 3;\n export let testid: string = \"\";\n export let width: string = \"60ch\";\n export let error: string = \"false\";\n export let readonly: string = \"false\";\n export let disabled: string = \"false\";\n export let arialabel: string = \"\";\n export let countby: \"character\" | \"word\" | \"\" = \"\";\n export let maxcount: number = -1;\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // reactive\n\n $: isError = toBoolean(error);\n $: isDisabled = toBoolean(disabled);\n $: isReadonly = toBoolean(readonly);\n $: count =\n countby === \"character\"\n ? value.length\n : value.split(\" \").filter((word) => word.trim().length > 0).length;\n\n // privates\n\n let _textareaEl: HTMLTextAreaElement;\n\n // functions\n\n function onChange(e: KeyboardEvent) {\n if (isDisabled) return;\n dispatchChange(e);\n }\n\n function onKeyPress(e: KeyboardEvent) {\n if (isDisabled) return;\n dispatchKeyPress(e);\n dispatchChange(e);\n }\n\n function dispatchChange(_: KeyboardEvent) {\n _textareaEl.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n detail: { name, value: _textareaEl.value },\n }),\n );\n }\n\n function dispatchKeyPress(e: KeyboardEvent) {\n _textareaEl.dispatchEvent(\n new CustomEvent(\"_keyPress\", {\n composed: true,\n detail: { name, value, key: e.key },\n }),\n );\n }\n</script>\n\n<!-- HTML -->\n<div id=\"container\">\n <div\n data-testid=\"root\"\n class=\"root\"\n class:error={isError || (maxcount > 0 && count > maxcount)}\n class:disabled={isDisabled}\n style={`\n ${calculateMargin(mt, mr, mb, ml)};\n --width: ${width};\n --char-count-padding: ${countby ? \"2rem\" : \"0\"};\n `}\n >\n <textarea\n bind:this={_textareaEl}\n {name}\n {placeholder}\n {rows}\n aria-label={arialabel || name}\n disabled={isDisabled}\n readonly={isReadonly}\n data-testid={testid}\n bind:value\n on:keyup={onKeyPress}\n on:change={onChange}\n />\n\n {#if maxcount > 0 && !isDisabled}\n <div class=\"counter\" class:counter-error={count > maxcount}>\n {#if countby && count > maxcount}\n {count - maxcount} {pluralize(countby, count - maxcount)} too many\n {:else if countby && count < maxcount}\n {maxcount - count} {pluralize(countby, maxcount - count)} remaining\n {/if}\n </div>\n {/if}\n\n {#if countby && maxcount < 0 && count > 0 && !isDisabled}\n <div class=\"counter\">\n {count}\n {pluralize(countby, count)}\n </div>\n {/if}\n </div>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n --textarea-padding-vertical: 0.625rem;\n --textarea-padding-horizontal: var(--goa-space-s);\n\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n #container {\n container: self / inline-size;\n }\n\n .root {\n position: relative;\n width: 100%;\n padding-bottom: var(--char-count-padding);\n border: var(--goa-border-width-s) solid var(--goa-color-greyscale-700);\n border-radius: 3px;\n }\n\n textarea {\n display: block;\n box-sizing: border-box;\n outline: none;\n border: none;\n border-radius: 3px;\n color: var(--goa-color-greyscale-black, #ccc);\n padding: var(--textarea-padding-vertical) var(--textarea-padding-horizontal);\n font-size: var(--goa-font-size-4);\n font-family: var(--goa-font-family-sans);\n min-width: 100%;\n resize: vertical;\n }\n\n @container self (--mobile) {\n textarea {\n width: 100%;\n min-width: 100%;\n }\n }\n\n @container self (--not-mobile) {\n .root {\n max-width: var(--width);\n }\n textarea {\n min-width: 0;\n width: var(--width);\n }\n }\n\n textarea[readonly] {\n cursor: pointer;\n }\n\n .root:hover {\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n }\n\n .root:focus-within {\n box-shadow: 0 0 0 var(--goa-border-width-l)\n var(--goa-color-interactive-focus);\n }\n\n .counter-error {\n color: var(--goa-color-interactive-error);\n }\n\n .counter {\n position: absolute;\n right: 0.75rem;\n font-size: var(--goa-font-size-2);\n }\n\n textarea {\n resize: none;\n scroll-behavior: smooth;\n max-height: calc(100vh * var(--max-height, 100) / 100);\n }\n\n textarea::-webkit-scrollbar {\n width: 6px;\n }\n\n textarea::-webkit-scrollbar-track {\n background: #f1f1f1;\n }\n\n textarea::-webkit-scrollbar-thumb {\n background: #888;\n }\n\n textarea::-webkit-scrollbar-thumb:hover {\n background: #555;\n }\n\n .error {\n border-color: var(--goa-color-interactive-error);\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-error);\n }\n .error:hover {\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-error);\n }\n .error:active,\n .error:focus {\n box-shadow: 0 0 0 var(--goa-border-width-l)\n var(--goa-color-interactive-focus);\n }\n</style>\n","<svelte:options customElement=\"goa-three-column-layout\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n export let leftcolumnwidth: string;\n export let rightcolumnwidth: string;\n export let maxcontentwidth: string;\n</script>\n\n<!-- HTML -->\n<div\n class=\"page\"\n style={`\n --max-content-width: ${maxcontentwidth || \"100%\"};\n --nav-column-width: ${leftcolumnwidth || \"256px\"};\n --side-menu-column-width: ${rightcolumnwidth || \"256px\"}\n `}\n>\n <header class=\"header\">\n <slot name=\"header\" />\n </header>\n\n <section class=\"content\">\n <nav class=\"nav\">\n <slot name=\"nav\" />\n </nav>\n\n <main>\n <slot />\n </main>\n\n <nav class=\"nav side-menu\">\n <!-- DEPRECATED: sidebar is deprecated -->\n <slot name=\"sidebar\" />\n <slot name=\"side-menu\" />\n </nav>\n </section>\n\n <footer class=\"footer\">\n <slot name=\"footer\" />\n </footer>\n</div>\n\n<!-- Style -->\n<style>\n * {\n box-sizing: border-box;\n }\n .page {\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n .content {\n flex: 1 1 auto;\n display: flex;\n flex-direction: column;\n gap: 2rem;\n }\n\n .header,\n .footer {\n flex: 0 0 auto;\n }\n\n main {\n flex: 1 1 auto;\n padding: 0 1rem;\n }\n\n .nav {\n padding: 0 1rem;\n transition: transform 200ms ease-in-out;\n background-color: var(--goa-color-greyscale-white);\n }\n\n .nav > * {\n display: block;\n padding: 0.5rem 0;\n }\n\n @media not (--mobile) {\n .page {\n gap: 2rem;\n }\n .content {\n display: flex;\n flex-direction: row;\n justify-content: center;\n width: min(var(--max-content-width), 100vw);\n margin: 0 auto;\n }\n\n .nav {\n padding: 0 2rem;\n transform: translateX(0);\n }\n\n .nav:not(.side-menu) {\n flex: 0 0 var(--nav-column-width);\n }\n .nav.side-menu {\n flex: 0 0 var(--side-menu-column-width);\n }\n main {\n padding-right: 2rem;\n }\n }\n\n @media (--desktop) {\n main {\n padding-right: 4.5rem;\n }\n }\n</style>\n","<svelte:options customElement=\"goa-tooltip\" />\n\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n\n // Public\n\n export let content = \"\";\n export let testid: string = \"\";\n export let position: Position = \"top\";\n export let halign: Alignment = \"center\";\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Types\n\n type Position = (typeof Positions)[number];\n type Alignment = (typeof Alignment)[number];\n\n // Validator\n\n const [Positions, validatePosition] = typeValidator(\n \"Tooltip positions\",\n [\"top\", \"bottom\", \"left\", \"right\"],\n false,\n );\n\n const [Alignment, validateAlignment] = typeValidator(\n \"Tooltip alignment\",\n [\"left\", \"right\", \"center\"],\n false,\n );\n\n const validator = (position: Position, align: Alignment) => {\n if (position === \"left\" || position === \"right\") {\n if (align !== \"center\") {\n console.error(\n `[${align}] is an invalid option for position ${position}`,\n );\n }\n }\n };\n\n // Private\n\n let _screenSize = 0;\n let _rootEl: HTMLElement;\n let _tooltipEl: HTMLElement;\n let _initialPosition: Position;\n let _tooltipVisible = false;\n let _showTooltipTimeout: string | number | NodeJS.Timeout | undefined;\n let _hideTooltipTimeout: string | number | NodeJS.Timeout | undefined;\n\n // Use a unique id for each tooltip instance.\n // So screen readers can identify the tooltip instance when\n // there are multiple tooltips on the same page\n let _tooltipInstanceId: string;\n\n // Reactive\n\n $: {\n if (_rootEl && _tooltipEl) {\n _rootEl.style.setProperty(\n \"--target-width\",\n `${_rootEl.getBoundingClientRect().width / 2}px`,\n );\n }\n }\n\n // call checkAndAdjustPosition function when content changes\n $: {\n content && checkAndAdjustPosition();\n }\n\n // Hooks\n\n onMount(() => {\n setTimeout(() => {\n validatePosition(position);\n validateAlignment(halign);\n validator(position, halign);\n }, 1);\n\n _initialPosition = position;\n _tooltipInstanceId = Math.random().toString(36);\n\n window.addEventListener(\"resize\", checkAndAdjustPosition);\n checkAndAdjustPosition();\n });\n\n onDestroy(() => {\n window.removeEventListener(\"resize\", checkAndAdjustPosition);\n clearTimeout(_showTooltipTimeout);\n clearTimeout(_hideTooltipTimeout);\n });\n\n // Functions\n\n const showTooltip = () => {\n _showTooltipTimeout = setTimeout(() => {\n _tooltipVisible = true;\n checkAndAdjustPosition();\n }, 300);\n };\n\n const hideTooltip = () => {\n clearTimeout(_showTooltipTimeout);\n\n _hideTooltipTimeout = setTimeout(() => {\n _tooltipVisible = false;\n position = _initialPosition;\n }, 500);\n };\n\n async function checkAndAdjustPosition() {\n // angular needs time to render the _tooltipEl\n await tick();\n\n if (!_tooltipEl || !_rootEl) {\n return;\n }\n\n // determine the bounding rectangle of the tooltip and root element\n const tooltipRect = _tooltipEl.getBoundingClientRect();\n const rootRect = _rootEl.getBoundingClientRect();\n\n const spaceTop = rootRect.top;\n const spaceBottom = window.innerHeight - rootRect.bottom;\n const spaceLeft = rootRect.left;\n const spaceRight = window.innerWidth - rootRect.right;\n\n const newWidth = Math.min(\n _screenSize * 0.8,\n 400,\n tooltipRect.width,\n Math.max(spaceLeft, spaceRight) - 10,\n );\n const shouldWrapContent =\n newWidth > rootRect.width ||\n newWidth > spaceLeft ||\n newWidth > spaceRight;\n _tooltipEl.style.width = `${newWidth - 32}px`;\n\n if (shouldWrapContent) {\n _tooltipEl.style.whiteSpace = \"normal\";\n } else {\n _tooltipEl.style.whiteSpace = \"nowrap\";\n }\n\n let newPosition = position; // use a local variable to determine the new position\n let newAlign = halign; // use a local variable to determine the new position\n\n // check if there is enough space for the tooltip in the initial position\n if (position === \"bottom\" && tooltipRect.height > spaceBottom) {\n newPosition = \"top\";\n } else if (position === \"top\" && tooltipRect.height > spaceTop) {\n newPosition = \"bottom\";\n }\n\n // similar check for left and right position\n if (position === \"right\" && tooltipRect.width > spaceRight) {\n newPosition = \"left\";\n } else if (position === \"left\" && tooltipRect.width > spaceLeft) {\n newPosition = \"right\";\n }\n\n // similar check for left and right alignmewnt\n if (halign === \"right\" && tooltipRect.width > spaceRight) {\n newAlign = \"left\";\n } else if (halign === \"left\" && tooltipRect.width > spaceLeft) {\n newAlign = \"right\";\n } else if (\n halign === \"center\" &&\n (position === \"top\" || position === \"bottom\") &&\n (tooltipRect.width / 2 > spaceLeft || tooltipRect.width / 2 > spaceRight)\n ) {\n newAlign = spaceLeft > spaceRight ? \"left\" : \"right\";\n }\n\n // update tooltip position\n position = newPosition;\n halign = newAlign;\n }\n</script>\n\n<svelte:window bind:innerWidth={_screenSize} />\n\n<!-- svelte-ignore a11y-no-noninteractive-tabindex -->\n<div\n class=\"tooltip align-{halign}\"\n bind:this={_rootEl}\n on:mouseenter={() => {\n clearTimeout(_hideTooltipTimeout);\n showTooltip();\n }}\n on:mouseleave={hideTooltip}\n on:focus={() => {\n clearTimeout(_hideTooltipTimeout);\n showTooltip();\n }}\n on:blur={hideTooltip}\n data-testid={testid}\n role=\"tooltip\"\n aria-describedby=\"{_tooltipInstanceId}-tooltip\"\n tabindex=\"0\"\n style={calculateMargin(mt, mr, mb, ml)}\n>\n <div class=\"tooltip-target\">\n <slot />\n </div>\n <span\n id=\"{_tooltipInstanceId}-tooltip\"\n class=\"tooltip-text {position} align-{halign}\"\n bind:this={_tooltipEl}\n style=\"visibility: {_tooltipVisible ? 'visible' : 'hidden'}\">{content}</span\n >\n</div>\n\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n .tooltip {\n position: relative;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n }\n\n .tooltip-text {\n visibility: hidden;\n font: var(--goa-typography-body-s);\n background-color: var(--goa-color-greyscale-700);\n color: var(--goa-color-text-light);\n text-align: center;\n border-radius: var(--goa-border-radius-m);\n position: absolute;\n z-index: 1;\n opacity: 0;\n transition: opacity 0.3s;\n padding: var(--goa-space-xs) var(--goa-space-m);\n text-align: left;\n white-space: nowrap;\n display: flex;\n flex-direction: column;\n }\n\n .tooltip-target {\n margin: 4px;\n }\n\n .tooltip-text.bottom {\n top: calc(100% + 10px);\n }\n\n .tooltip-text.top {\n bottom: calc(100% + 10px);\n }\n\n .tooltip-text.right {\n left: calc(100% + 10px);\n }\n\n .tooltip-text.left {\n right: calc(100% + 10px);\n }\n\n .tooltip:hover .tooltip-text,\n .tooltip:focus .tooltip-text {\n opacity: 1;\n }\n\n .tooltip-text.bottom::before,\n .tooltip-text.top::before,\n .tooltip-text.left::before,\n .tooltip-text.right::before {\n content: \"\";\n position: absolute;\n border-style: solid;\n }\n\n .tooltip-text.bottom::before {\n top: -10px;\n left: 50%;\n border-width: 0 10px 10px 10px;\n transform: translateX(-50%);\n border-color: transparent transparent var(--goa-color-greyscale-700)\n transparent;\n }\n .tooltip-text.top::before {\n bottom: -10px;\n left: 50%;\n transform: translateX(-50%);\n border-width: 10px 10px 0 10px;\n border-color: var(--goa-color-greyscale-700) transparent transparent\n transparent;\n }\n .tooltip-text.left::before {\n top: 50%;\n right: -10px;\n transform: translateY(-50%);\n border-width: 10px 0 10px 10px;\n border-color: transparent transparent transparent\n var(--goa-color-greyscale-700);\n }\n .tooltip-text.right::before {\n top: 50%;\n left: -10px;\n transform: translateY(-50%);\n border-width: 10px 10px 10px 0;\n border-style: solid;\n border-color: transparent var(--goa-color-greyscale-700) transparent\n transparent;\n }\n\n .tooltip-text.bottom.align-left::before,\n .tooltip-text.top.align-left::before {\n left: calc(100% - (var(--target-width) + 1rem));\n }\n\n .tooltip-text.bottom.align-right::before,\n .tooltip-text.top.align-right::before {\n left: calc(var(--target-width) + 1rem);\n }\n\n .tooltip.align-right {\n justify-content: flex-start;\n }\n .tooltip.align-left {\n justify-content: flex-end;\n }\n\n .tooltip-text.align-right {\n left: 0;\n margin-left: -1rem;\n }\n .tooltip-text.align-left {\n right: 0;\n margin-right: -1rem;\n }\n</style>\n","<svelte:options customElement=\"goa-two-column-layout\" />\n\n<script lang=\"ts\">\n export let navcolumnwidth: string = \"\"; // blank values falls back to the css var\n export let maxcontentwidth: string = \"\";\n</script>\n\n<div\n class=\"page\"\n style={`\n --max-content-width: ${maxcontentwidth || \"100%\"};\n --nav-column-width: ${navcolumnwidth || \"256px\"};\n `}\n>\n <header class=\"header\">\n <slot name=\"header\" />\n </header>\n\n <section class=\"content\">\n <nav class=\"nav\">\n <slot name=\"nav\" />\n </nav>\n\n <main>\n <slot />\n </main>\n </section>\n\n <footer class=\"footer\">\n <slot name=\"footer\" />\n </footer>\n</div>\n\n<style>\n * {\n box-sizing: border-box;\n }\n .page {\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n .content {\n flex: 1 1 auto;\n\n display: flex;\n flex-direction: column;\n gap: 2rem;\n }\n\n .header,\n .footer {\n flex: 0 0 auto;\n }\n\n main {\n flex: 1 1 auto;\n padding: 0 1rem;\n }\n\n .nav {\n padding: 0 1rem;\n transition: transform 200ms ease-in-out;\n background-color: var(--goa-color-greyscale-white);\n }\n\n .nav > * {\n display: block;\n padding: 0.5rem 0;\n }\n\n @media not (--mobile) {\n .page {\n gap: 2rem;\n }\n .content {\n display: flex;\n flex-direction: row;\n justify-content: center;\n width: min(var(--max-content-width), 100vw);\n margin: 0 auto;\n }\n\n .nav {\n padding: 0 2rem;\n transform: translateX(0);\n flex: 0 0 var(--nav-column-width);\n }\n\n main {\n padding-right: 2rem;\n }\n }\n\n @media (--desktop) {\n main {\n padding-right: 4.5rem;\n }\n }\n</style>\n"],"names":["noop","identity","x","assign","tar","src","k","run","fn","blank_object","run_all","fns","is_function","thing","safe_not_equal","a","b","src_url_equal_anchor","src_url_equal","element_src","url","is_empty","obj","subscribe","store","callbacks","callback","unsub","component_subscribe","component","create_slot","definition","ctx","$$scope","slot_ctx","get_slot_context","get_slot_changes","dirty","lets","merged","len","i","update_slot_base","slot","slot_definition","slot_changes","get_slot_context_fn","slot_context","get_all_dirty_from_scope","length","compute_slots","slots","result","key","null_to_empty","value","action_destroyer","action_result","split_css_unit","split","is_client","now","raf","cb","tasks","run_tasks","task","loop","fulfill","globals","append","target","node","append_styles","style_sheet_id","styles","append_styles_to","get_root_for_style","style","element","append_stylesheet","root","append_empty_stylesheet","style_element","insert","anchor","detach","destroy_each","iterations","detaching","name","svg_element","text","data","space","empty","listen","event","handler","options","stop_propagation","attr","attribute","set_custom_element_data","prop","lower","children","set_data","set_input_value","input","set_style","important","crossorigin","is_crossorigin","add_iframe_resize_listener","iframe","unsubscribe","toggle_class","toggle","custom_event","type","detail","bubbles","cancelable","get_custom_elements_slots","managed_styles","active","hash","str","create_style_information","doc","info","create_rule","duration","delay","ease","uid","step","keyframes","p","t","rule","stylesheet","rules","animation","delete_rule","previous","next","anim","deleted","clear_rules","ownerNode","current_component","set_current_component","get_current_component","onMount","afterUpdate","onDestroy","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","schedule_update","flush","tick","add_render_callback","seen_callbacks","flushidx","saved_component","update","$$","flush_render_callbacks","filtered","targets","c","promise","wait","dispatch","direction","kind","outroing","outros","group_outros","check_outros","transition_in","block","local","transition_out","null_transition","create_in_transition","params","config","running","animation_name","cleanup","go","easing","linear","css","start_time","end_time","started","create_out_transition","group","original_inert_value","reset","create_bidirectional_transition","intro","running_program","pending_program","clear_animation","init","program","d","ensure_array_like","array_like_or_iterator","destroy_block","lookup","update_keyed_each","old_blocks","get_key","dynamic","list","destroy","create_each_block","get_context","o","n","old_indexes","new_blocks","new_lookup","deltas","updates","child_ctx","will_move","did_move","new_block","old_block","new_key","old_key","create_component","mount_component","fragment","after_update","new_on_destroy","destroy_component","make_dirty","instance","create_fragment","not_equal","props","parent_component","ready","ret","rest","nodes","SvelteElement","$$componentCtor","$$slots","use_shadow_dom","__publicField","listener","existing_slots","get_custom_element_value","reflect_attributes","attribute_value","_oldValue","newValue","_a","attribute_name","props_definition","transform","create_custom_element","Component","accessors","extend","Class","accessor","SvelteComponent","index","PUBLIC_VERSION","conversions","convertSpacing","size","calculateMargin","mt","mr","mb","ml","injectCss","el","rootSelector","media","_css","entry","toBoolean","fromBoolean","isValidDate","validateRequired","componentName","typeValidator","message","values","required","getTimestamp","val","months","hour24","min0","date","month","year","hour","meridium","min","ordinal","cssVar","pluralize","word","count","clamp","max","goa_icon","goa_icon_fillcolor_value","div0","div3","div3_style_value","details","summary","div1","span0","span1","div2","current","HeadingSizes","validateHeadingSize","open","$$props","heading","secondarytext","headingsize","testid","_hovering","_titleEl","_headingContentSlotChildren","getChildren","$$value","mouseover_handler","$$invalidate","mouseout_handler","focus_handler","blur_handler","isOpen","MOBILE_BP","TABLET_BP","create_if_block_7","_mobileLogo","img0","img0_src_value","_desktopLogo","img1","img1_src_value","div","create_if_block_6","span","button","create_if_block_3","goa_popover","create_if_block_5","if_block1","create_if_block_4","if_block2","create_if_block_2","create_if_block_1","create_if_block","div1_style_value","maxcontentwidth","fullmenubreakpoint","_slotParentEl","_windowWidth","_showToggleMenu","_showMenu","toggleMenu","hideMenu","onRouteChange","setCurrentLink","link","href","hasChildren","_mobile","_tablet","_desktop","goa_spacer","leadingicon","_innerWidth","_popoverEl","_hasCurrentLink","_open","hasCurrentLink","bindToPopoverCloseEvent","closeMenu","openMenu","goa_icon_arialabel_value","goa_icon_role_value","div_style_value","Types","validateType","content","icon","arialabel","showIcon","showIconOnly","iconType","gap","alignment","_alignment","button_style_value","button_type_value","Sizes","validateSize","Variants","validateVariant","variant","disabled","trailingicon","clickHandler","_e","isDisabled","isButtonDark","BUTTON_ALIGNMENTS","validateAlignment","GAPS","validateGap","toDate","argument","argStr","constructFrom","addDays","amount","_date","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","millisecondsInWeek","millisecondsInDay","defaultOptions","getDefaultOptions","startOfWeek","_b","_c","_d","weekStartsOn","day","diff","startOfISOWeek","getISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfDay","getTimezoneOffsetInMilliseconds","utcDate","differenceInCalendarDays","dateLeft","dateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","startOfISOWeekYear","fourthOfJanuary","addYears","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isDate","isValid","startOfYear","cleanDate","formatDistanceLocale","formatDistance","token","tokenValue","buildFormatLongFn","args","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","context","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","quarter","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","sign","output","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","offset","delimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","format","_message","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","_f","_g","_h","locale","defaultLocale","originalDate","parts","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","part","formatter","matched","getDaysInMonth","monthIndex","lastDayOfMonth","isAfter","dateToCompare","_dateToCompare","isBefore","isSameMonth","_dateLeft","_dateRight","setDate","goa_dropdown_item","t_value","t0_value","t0","goa_dropdown0","goa_dropdown0_value_value","goa_dropdown1","goa_dropdown1_value_value","goa_block","goa_form_item0","goa_form_item1","h50","h51","h52","h53","h54","h55","h56","bordered","_selectedDate","_calendarDate","_min","_max","_monthDays","_previousMonthDays","_nextMonthDays","_nextMonthDayCount","_months","_years","_calendarEl","yearCount","yearStart","_","initKeybindings","renderCalendar","change","dayCount","prevMonthEnd","selectedMonthStart","nextMonthStart","handleKeyClick","e","newDate","focusedDateEl","homeDate","dispatchValue","setMonth","setYear","onDateClick","raw","h3","goa_icon_inverted_value","CalloutSizes","validateCalloutSize","screenSize","iconSize","isMediumCallout","goa_card_content","goa_button_group","elevation","height","svg","path","rect","input_aria_label_value","label","checked","error","description","_value","_checkboxRef","_descriptionId","onChange","newCheckStatus","isChecked","isError","isIndeterminate","goa_icon_opacity_value","deletable","_error","_deletable","onDelete","click_handler","cubicOut","f","quartOut","fade","fly","y","opacity","target_opacity","od","xValue","xUnit","yValue","yUnit","u","noscroll","_node","opts","toggledScrolling","hideScrollbars","isScrollable","scrollbarWidth","calculateScrollbarWidth","resetScrollbars","outer","inner","div_class_value","goa_spinner","dispose","noScroll","div_transition","progress","visible","spinnerSize","fullscreen","inline","isVisible","header","Accents","validateAccent","Paddings","validatePadding","accent","padding","goa_input","goa_input_value_value","goa_calendar","relative","_rootEl","_showPopover","initDate","onCalendarChange","hideCalendar","formatDate","showCalendar","handleKeyDown","close_handler","details_style_value","_isMouseOver","_summaryEl","_detailsEl","toggle_handler","_isOpen","hr","hr_style_value","ul","ul_aria_label_value","each_1_else","select","select_aria_label_value","goa_icon_ariaexpanded_value","li","li_id_value","li_data_testid_value","li_data_value_value","option_1","option_1_value_value","parseValues","selectedValue","rawValue","isFilterMatch","option","filter","arialabelledby","filterable","maxheight","placeholder","multiselect","native","_isMenuVisible","_highlightedIndex","_width","_wrapperEl","_menuEl","_selectEl","_inputEl","_eventHandler","_isDirty","_filteredOptions","_values","_filterable","ComboboxKeyUpHandler","DropdownKeyUpHandler","getOptions","_native","calculatePercentWidth","getLongestChildWidth","syncFilteredOptions","setDisplayedValue","rootWidth","percent","child","optionsWidth","maxWidth","changeHighlightedOption","items","scrollToOption","liNode","liOptionRect","ulRect","showMenu","_disabled","_multiselect","onSelect","onInputKeyUp","onInputKeyDown","onClearIconKeyDown","onClearIconClick","onNativeSelect","_activeDescendantId","onChevronClick","matchedOption","_input","formatFileSize","progress_1","t1","t1_value","goa_button","div4","getFiletypeIcon","filename","ext","extTypeIcon","bytes","_status","_fileIcon","action","click_handler_1","click_handler_2","onDrag","em","t3_value","t3","if_block0","accept","maxfilesize","_el","_fileInput","_state","issues","file","validate","isValidFileType","isValidFileSize","typeMatchers","matcher","units","factor","openFilePicker","onDrop","item","onDragEnter","onDragLeave","onMouseOver","onMouseOut","isFocusable","rootEl","boundryStartEl","boundryEndEl","isShiftPressed","onFocus","onKeydown","onKeyup","findFirstNode","reversed","nodeList","findFirstNodeOfSlot","findFirstNodeOfShadowDOM","goa_divider","if_block","div5","div5_style_value","a0","a1","navLinks","metaLinks","navSlot","metaSlot","a_href_value","section","sum","valid","maxcolumncount","show_if","REQUIREMENT_TYPES","validateRequirementType","LABEL_SIZE_TYPES","validateLabelSize","labelsize","helptext","requirement","id","label_aria_label_value","StatusTypes","validateStatus","enabled","childindex","status","_stepEl","_checkbox","_isMobile","_isEnabled","mobile","_isCurrent","progress0","progress1","goa_grid","_gridEl","_steps","_stepWidth","_stepHeight","_progressHeight","_maxAllowedStep","_maxProgressStep","_showProgressBars","_step","s","setCurrentStepStatus","calcStepDimensions","resizeObserver","entries","stepEl","_progress","nav","main","footer","minchildwidth","goa_page_block","goa_page_block_width_value","h1","backgroundurl","minheight","backgroundcolor","textcolor","handleClick","theme","title","inverted","isInverted","_paddingSize","ion_icon","ion_icon_name_value","raw_value","fillcolor","ariacontrols","ariaexpanded","role","_iconOverrides","iconName","_isInverted","_ariaExpanded","goa_icon_button","doClick","if_block3","input_id_value","div2_class_value","AutoCapitalize","validateAutoCapitalize","autocapitalize","handletrailingiconclick","focused","readonly","prefix","suffix","debounce","maxlength","_leadingContentSlot","_trailingContentSlot","_debounceId","inputEl","onKeyUp","isReadonly","onBlur","leadingContentSlot","trailingContentSlot","handlesTrailingIconClick","isFocused","capitalize","div0_class_value","version","feedbackurl","headerurltarget","feedbackurltarget","UrlTarget","validateUrlTargetType","goa_focus_trap","div6","goa_scrollable","noscroll_action","div6_intro","closable","transition","calloutvariant","maxwidth","_scrollPos","_scrollEl","_headerEl","_requiresTopPadding","CALLOUT_VARIANT","validateCalloutVariant","Transitions","validateTransition","close","_isClosable","handleScroll","hasScroll","_transitionTime","_iconType","goa_icon0","goa_icon0_inverted_value","goa_icon1","goa_icon1_inverted_value","AriaLiveTypes","validateAriaLiveType","arialive","show","section0","section1","dimensionRegex","isValidDimension","isValidSize","setCurrentPage","_child","each_value","goa_dropdown","goa_button0","goa_button0_disabled_value","goa_button1","goa_button1_disabled_value","goa_block1","goa_block0","pagenumber","itemcount","perpagecount","pageDropdownEl","hiddenEl","ce","page","goto","newPage","_pageCount","getBoundingClientRectWithMargins","mTop","mRight","mBottom","mLeft","padded","position","tabindex","voffset","hoffset","focusborderwidth","borderradius","_targetEl","_focusTrapEl","_initFocusedEl","_sectionHeight","onTargetEvent","handleUrlChange","closePopover","openPopover","onFocusTrapEvent","setPopoverPosition","targetRect","popoverRect","spaceAbove","spaceBelow","_relative","_padded","Orientations","validateOrientation","orientation","bindOptions","optionValue","setCurrentSelectedOption","t2_value","label_1","t2","ariadescribedby","_radioItemEl","hpadding","vpadding","offsetHeight","scrollHeight","onScroll","isUrlMatch","windowUrl","testUrl","windowUrlParts","urlParts","weight","setCurrentUrl","addEventListeners","removeEventListeners","links","currentEl","maxWeight","currentLocation","_mutationList","toSlug","_current","checkUrlMatches","setCurrent","matchesMenu","matchesChild","notifyParent","_slug","maxMatchWeight","matchedChild","h2","each_blocks","linecount","hspacing","vspacing","subscriber_queue","writable","start","stop","subscribers","set","new_value","run_queue","subscriber","invalidate","is_date","get_interpolator","arr","bi","delta","keys","interpolators","tweened","defaults","target_value","previous_task","interpolate","elapsed","circle","circle_stroke_value","path_d_value","path_stroke_value","svg_viewBox_value","invert","getCoords","radians","radius","pathRadius","getArc","end","largeArcFlag","diameter","strokewidth","table","table_style_value","stickyheader","_isTableRoot","attachSortEventHandling","contentSlot","headings","sortBy","sortDir","newDirection","initialSortBy","initialDirection","_stickyHeader","hostEl","initialtab","_tabs","_tabsEl","_panelEl","_currentTab","addKeyboardEventListeners","bindTabs","setCurrentTab","tabs","tab","headingEl","tabSlug","headingDataEl","removeKeyboardEventListeners","handleKeydownEvents","isCurrent","onKeyDown","isHandled","textarea","textarea_aria_label_value","rows","countby","maxcount","_textareaEl","dispatchChange","onKeyPress","dispatchKeyPress","nav0","nav1","leftcolumnwidth","rightcolumnwidth","span_class_value","halign","Positions","validatePosition","Alignment","validator","align","_screenSize","_tooltipEl","_initialPosition","_tooltipVisible","_showTooltipTimeout","_hideTooltipTimeout","_tooltipInstanceId","checkAndAdjustPosition","showTooltip","hideTooltip","tooltipRect","rootRect","spaceTop","spaceBottom","spaceLeft","spaceRight","newWidth","shouldWrapContent","newPosition","newAlign","navcolumnwidth"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,77,78,120,121,122]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/svelte/src/runtime/internal/utils.js","../../../node_modules/svelte/src/runtime/internal/environment.js","../../../node_modules/svelte/src/runtime/internal/loop.js","../../../node_modules/svelte/src/runtime/internal/globals.js","../../../node_modules/svelte/src/runtime/internal/dom.js","../../../node_modules/svelte/src/runtime/internal/style_manager.js","../../../node_modules/svelte/src/runtime/internal/lifecycle.js","../../../node_modules/svelte/src/runtime/internal/scheduler.js","../../../node_modules/svelte/src/runtime/internal/transitions.js","../../../node_modules/svelte/src/runtime/internal/each.js","../../../node_modules/svelte/src/runtime/internal/Component.js","../../../node_modules/svelte/src/shared/version.js","../../../node_modules/svelte/src/runtime/internal/disclose-version/index.js","../../../libs/web-components/src/common/styling.ts","../../../libs/web-components/src/common/utils.ts","../../../libs/web-components/src/components/accordion/Accordion.svelte","../../../libs/web-components/src/common/breakpoints.ts","../../../libs/web-components/src/components/app-header/AppHeader.svelte","../../../libs/web-components/src/components/app-header-menu/AppHeaderMenu.svelte","../../../libs/web-components/src/components/badge/Badge.svelte","../../../libs/web-components/src/components/block/Block.svelte","../../../libs/web-components/src/components/button/Button.svelte","../../../libs/web-components/src/components/button-group/ButtonGroup.svelte","../../../node_modules/date-fns/toDate.mjs","../../../node_modules/date-fns/constructFrom.mjs","../../../node_modules/date-fns/addDays.mjs","../../../node_modules/date-fns/addMonths.mjs","../../../node_modules/date-fns/constants.mjs","../../../node_modules/date-fns/_lib/defaultOptions.mjs","../../../node_modules/date-fns/startOfWeek.mjs","../../../node_modules/date-fns/startOfISOWeek.mjs","../../../node_modules/date-fns/getISOWeekYear.mjs","../../../node_modules/date-fns/startOfDay.mjs","../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","../../../node_modules/date-fns/differenceInCalendarDays.mjs","../../../node_modules/date-fns/startOfISOWeekYear.mjs","../../../node_modules/date-fns/addYears.mjs","../../../node_modules/date-fns/isSameDay.mjs","../../../node_modules/date-fns/isDate.mjs","../../../node_modules/date-fns/isValid.mjs","../../../node_modules/date-fns/startOfYear.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/localize.mjs","../../../node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/match.mjs","../../../node_modules/date-fns/locale/en-US.mjs","../../../node_modules/date-fns/getDayOfYear.mjs","../../../node_modules/date-fns/getISOWeek.mjs","../../../node_modules/date-fns/getWeekYear.mjs","../../../node_modules/date-fns/startOfWeekYear.mjs","../../../node_modules/date-fns/getWeek.mjs","../../../node_modules/date-fns/_lib/addLeadingZeros.mjs","../../../node_modules/date-fns/_lib/format/lightFormatters.mjs","../../../node_modules/date-fns/_lib/format/formatters.mjs","../../../node_modules/date-fns/_lib/format/longFormatters.mjs","../../../node_modules/date-fns/_lib/protectedTokens.mjs","../../../node_modules/date-fns/format.mjs","../../../node_modules/date-fns/getDaysInMonth.mjs","../../../node_modules/date-fns/lastDayOfMonth.mjs","../../../node_modules/date-fns/isAfter.mjs","../../../node_modules/date-fns/isBefore.mjs","../../../node_modules/date-fns/isSameMonth.mjs","../../../node_modules/date-fns/setDate.mjs","../../../libs/web-components/src/components/calendar/Calendar.svelte","../../../libs/web-components/src/components/callout/Callout.svelte","../../../libs/web-components/src/components/card-actions/CardActions.svelte","../../../libs/web-components/src/components/card-content/CardContent.svelte","../../../libs/web-components/src/components/card/Card.svelte","../../../libs/web-components/src/components/card-group/CardGroup.svelte","../../../libs/web-components/src/components/card-image/CardImage.svelte","../../../libs/web-components/src/components/checkbox/Checkbox.svelte","../../../libs/web-components/src/components/chip/Chip.svelte","../../../node_modules/svelte/src/runtime/easing/index.js","../../../node_modules/svelte/src/runtime/transition/index.js","../../../libs/web-components/src/common/no-scroll.ts","../../../libs/web-components/src/components/circular-progress/CircularProgress.svelte","../../../libs/web-components/src/components/container/Container.svelte","../../../libs/web-components/src/components/date-picker/DatePicker.svelte","../../../libs/web-components/src/components/details/Details.svelte","../../../libs/web-components/src/components/divider/Divider.svelte","../../../libs/web-components/src/components/dropdown/Dropdown.svelte","../../../libs/web-components/src/components/dropdown/DropdownItem.svelte","../../../libs/web-components/src/components/file-upload-card/FileUploadCard.svelte","../../../libs/web-components/src/components/file-upload-input/FileUploadInput.svelte","../../../libs/web-components/src/components/focus-trap/FocusTrap.svelte","../../../libs/web-components/src/components/footer/Footer.svelte","../../../libs/web-components/src/components/footer-meta-section/FooterMetaSection.svelte","../../../libs/web-components/src/components/footer-nav-section/FooterNavSection.svelte","../../../libs/web-components/src/components/form-item/FormItem.svelte","../../../libs/web-components/src/components/form-step/FormStep.svelte","../../../libs/web-components/src/components/form-stepper/FormStepper.svelte","../../../libs/web-components/src/layouts/FullScreenNavbarLayout.svelte","../../../libs/web-components/src/components/grid/Grid.svelte","../../../libs/web-components/src/components/hero-banner/HeroBanner.svelte","../../../libs/web-components/src/components/icon-button/IconButton.svelte","../../../libs/web-components/src/components/icon/Icon.svelte","../../../libs/web-components/src/components/input/Input.svelte","../../../libs/web-components/src/components/microsite-header/MicrositeHeader.svelte","../../../libs/web-components/src/components/modal/Modal.svelte","../../../libs/web-components/src/components/notification/Notification.svelte","../../../libs/web-components/src/layouts/one-column-layout/OneColumnLayout.svelte","../../../libs/web-components/src/common/validators.ts","../../../libs/web-components/src/components/page-block/PageBlock.svelte","../../../libs/web-components/src/components/pages/Pages.svelte","../../../libs/web-components/src/components/pagination/Pagination.svelte","../../../libs/web-components/src/components/popover/Popover.svelte","../../../libs/web-components/src/components/radio-group/RadioGroup.svelte","../../../libs/web-components/src/components/radio-item/RadioItem.svelte","../../../libs/web-components/src/components/scrollable/Scrollable.svelte","../../../libs/web-components/src/common/urls.ts","../../../libs/web-components/src/components/side-menu/SideMenu.svelte","../../../libs/web-components/src/components/side-menu-group/SideMenuGroup.svelte","../../../libs/web-components/src/components/side-menu-heading/SideMenuHeading.svelte","../../../libs/web-components/src/components/skeleton/Skeleton.svelte","../../../libs/web-components/src/components/spacer/Spacer.svelte","../../../node_modules/svelte/src/runtime/store/index.js","../../../node_modules/svelte/src/runtime/motion/utils.js","../../../node_modules/svelte/src/runtime/motion/tweened.js","../../../libs/web-components/src/components/spinner/Spinner.svelte","../../../libs/web-components/src/components/tab/Tab.svelte","../../../libs/web-components/src/components/table/Table.svelte","../../../libs/web-components/src/components/table/TableSortHeader.svelte","../../../libs/web-components/src/components/tabs/Tabs.svelte","../../../libs/web-components/src/components/text-area/TextArea.svelte","../../../libs/web-components/src/layouts/three-column-layout/ThreeColumnLayout.svelte","../../../libs/web-components/src/components/tooltip/Tooltip.svelte","../../../libs/web-components/src/layouts/two-column-layout/TwoColumnLayout.svelte"],"sourcesContent":["/** @returns {void} */\nexport function noop() {}\n\nexport const identity = (x) => x;\n\n/**\n * @template T\n * @template S\n * @param {T} tar\n * @param {S} src\n * @returns {T & S}\n */\nexport function assign(tar, src) {\n\t// @ts-ignore\n\tfor (const k in src) tar[k] = src[k];\n\treturn /** @type {T & S} */ (tar);\n}\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n/**\n * @param {any} value\n * @returns {value is PromiseLike<any>}\n */\nexport function is_promise(value) {\n\treturn (\n\t\t!!value &&\n\t\t(typeof value === 'object' || typeof value === 'function') &&\n\t\ttypeof (/** @type {any} */ (value).then) === 'function'\n\t);\n}\n\n/** @returns {void} */\nexport function add_location(element, file, line, column, char) {\n\telement.__svelte_meta = {\n\t\tloc: { file, line, column, char }\n\t};\n}\n\nexport function run(fn) {\n\treturn fn();\n}\n\nexport function blank_object() {\n\treturn Object.create(null);\n}\n\n/**\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function run_all(fns) {\n\tfns.forEach(run);\n}\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\n/** @returns {boolean} */\nexport function safe_not_equal(a, b) {\n\treturn a != a ? b == b : a !== b || (a && typeof a === 'object') || typeof a === 'function';\n}\n\nlet src_url_equal_anchor;\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nexport function src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\tif (!src_url_equal_anchor) {\n\t\tsrc_url_equal_anchor = document.createElement('a');\n\t}\n\t// This is actually faster than doing URL(..).href\n\tsrc_url_equal_anchor.href = url;\n\treturn element_src === src_url_equal_anchor.href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element_srcset\n * @param {string | undefined | null} srcset\n * @returns {boolean}\n */\nexport function srcset_url_equal(element_srcset, srcset) {\n\tconst element_urls = split_srcset(element_srcset.srcset);\n\tconst urls = split_srcset(srcset || '');\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n\n/** @returns {boolean} */\nexport function not_equal(a, b) {\n\treturn a != a ? b == b : a !== b;\n}\n\n/** @returns {boolean} */\nexport function is_empty(obj) {\n\treturn Object.keys(obj).length === 0;\n}\n\n/** @returns {void} */\nexport function validate_store(store, name) {\n\tif (store != null && typeof store.subscribe !== 'function') {\n\t\tthrow new Error(`'${name}' is not a store with a 'subscribe' method`);\n\t}\n}\n\nexport function subscribe(store, ...callbacks) {\n\tif (store == null) {\n\t\tfor (const callback of callbacks) {\n\t\t\tcallback(undefined);\n\t\t}\n\t\treturn noop;\n\t}\n\tconst unsub = store.subscribe(...callbacks);\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * https://svelte.dev/docs/svelte-store#get\n * @template T\n * @param {import('../store/public.js').Readable<T>} store\n * @returns {T}\n */\nexport function get_store_value(store) {\n\tlet value;\n\tsubscribe(store, (_) => (value = _))();\n\treturn value;\n}\n\n/** @returns {void} */\nexport function component_subscribe(component, store, callback) {\n\tcomponent.$$.on_destroy.push(subscribe(store, callback));\n}\n\nexport function create_slot(definition, ctx, $$scope, fn) {\n\tif (definition) {\n\t\tconst slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n\t\treturn definition[0](slot_ctx);\n\t}\n}\n\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n\treturn definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;\n}\n\nexport function get_slot_changes(definition, $$scope, dirty, fn) {\n\tif (definition[2] && fn) {\n\t\tconst lets = definition[2](fn(dirty));\n\t\tif ($$scope.dirty === undefined) {\n\t\t\treturn lets;\n\t\t}\n\t\tif (typeof lets === 'object') {\n\t\t\tconst merged = [];\n\t\t\tconst len = Math.max($$scope.dirty.length, lets.length);\n\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\tmerged[i] = $$scope.dirty[i] | lets[i];\n\t\t\t}\n\t\t\treturn merged;\n\t\t}\n\t\treturn $$scope.dirty | lets;\n\t}\n\treturn $$scope.dirty;\n}\n\n/** @returns {void} */\nexport function update_slot_base(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tslot_changes,\n\tget_slot_context_fn\n) {\n\tif (slot_changes) {\n\t\tconst slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n\t\tslot.p(slot_context, slot_changes);\n\t}\n}\n\n/** @returns {void} */\nexport function update_slot(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tdirty,\n\tget_slot_changes_fn,\n\tget_slot_context_fn\n) {\n\tconst slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n\tupdate_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\n\n/** @returns {any[] | -1} */\nexport function get_all_dirty_from_scope($$scope) {\n\tif ($$scope.ctx.length > 32) {\n\t\tconst dirty = [];\n\t\tconst length = $$scope.ctx.length / 32;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tdirty[i] = -1;\n\t\t}\n\t\treturn dirty;\n\t}\n\treturn -1;\n}\n\n/** @returns {{}} */\nexport function exclude_internal_props(props) {\n\tconst result = {};\n\tfor (const k in props) if (k[0] !== '$') result[k] = props[k];\n\treturn result;\n}\n\n/** @returns {{}} */\nexport function compute_rest_props(props, keys) {\n\tconst rest = {};\n\tkeys = new Set(keys);\n\tfor (const k in props) if (!keys.has(k) && k[0] !== '$') rest[k] = props[k];\n\treturn rest;\n}\n\n/** @returns {{}} */\nexport function compute_slots(slots) {\n\tconst result = {};\n\tfor (const key in slots) {\n\t\tresult[key] = true;\n\t}\n\treturn result;\n}\n\n/** @returns {(this: any, ...args: any[]) => void} */\nexport function once(fn) {\n\tlet ran = false;\n\treturn function (...args) {\n\t\tif (ran) return;\n\t\tran = true;\n\t\tfn.call(this, ...args);\n\t};\n}\n\nexport function null_to_empty(value) {\n\treturn value == null ? '' : value;\n}\n\nexport function set_store_value(store, ret, value) {\n\tstore.set(value);\n\treturn ret;\n}\n\nexport const has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\n\nexport function action_destroyer(action_result) {\n\treturn action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\n/** @param {number | string} value\n * @returns {[number, string]}\n */\nexport function split_css_unit(value) {\n\tconst split = typeof value === 'string' && value.match(/^\\s*(-?[\\d.]+)([^\\s]*)\\s*$/);\n\treturn split ? [parseFloat(split[1]), split[2] || 'px'] : [/** @type {number} */ (value), 'px'];\n}\n\nexport const contenteditable_truthy_values = ['', true, 1, 'true', 'contenteditable'];\n","import { noop } from './utils.js';\n\nexport const is_client = typeof window !== 'undefined';\n\n/** @type {() => number} */\nexport let now = is_client ? () => window.performance.now() : () => Date.now();\n\nexport let raf = is_client ? (cb) => requestAnimationFrame(cb) : noop;\n\n// used internally for testing\n/** @returns {void} */\nexport function set_now(fn) {\n\tnow = fn;\n}\n\n/** @returns {void} */\nexport function set_raf(fn) {\n\traf = fn;\n}\n","import { raf } from './environment.js';\n\nconst tasks = new Set();\n\n/**\n * @param {number} now\n * @returns {void}\n */\nfunction run_tasks(now) {\n\ttasks.forEach((task) => {\n\t\tif (!task.c(now)) {\n\t\t\ttasks.delete(task);\n\t\t\ttask.f();\n\t\t}\n\t});\n\tif (tasks.size !== 0) raf(run_tasks);\n}\n\n/**\n * For testing purposes only!\n * @returns {void}\n */\nexport function clear_loops() {\n\ttasks.clear();\n}\n\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n * @param {import('./private.js').TaskCallback} callback\n * @returns {import('./private.js').Task}\n */\nexport function loop(callback) {\n\t/** @type {import('./private.js').TaskEntry} */\n\tlet task;\n\tif (tasks.size === 0) raf(run_tasks);\n\treturn {\n\t\tpromise: new Promise((fulfill) => {\n\t\t\ttasks.add((task = { c: callback, f: fulfill }));\n\t\t}),\n\t\tabort() {\n\t\t\ttasks.delete(task);\n\t\t}\n\t};\n}\n","/** @type {typeof globalThis} */\nexport const globals =\n\ttypeof window !== 'undefined'\n\t\t? window\n\t\t: typeof globalThis !== 'undefined'\n\t\t? globalThis\n\t\t: // @ts-ignore Node typings have this\n\t\t global;\n","import { contenteditable_truthy_values, has_prop } from './utils.js';\n\nimport { ResizeObserverSingleton } from './ResizeObserverSingleton.js';\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\n\n/**\n * @returns {void}\n */\nexport function start_hydrating() {\n\tis_hydrating = true;\n}\n\n/**\n * @returns {void}\n */\nexport function end_hydrating() {\n\tis_hydrating = false;\n}\n\n/**\n * @param {number} low\n * @param {number} high\n * @param {(index: number) => number} key\n * @param {number} value\n * @returns {number}\n */\nfunction upper_bound(low, high, key, value) {\n\t// Return first index of value larger than input value in the range [low, high)\n\twhile (low < high) {\n\t\tconst mid = low + ((high - low) >> 1);\n\t\tif (key(mid) <= value) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\thigh = mid;\n\t\t}\n\t}\n\treturn low;\n}\n\n/**\n * @param {NodeEx} target\n * @returns {void}\n */\nfunction init_hydrate(target) {\n\tif (target.hydrate_init) return;\n\ttarget.hydrate_init = true;\n\t// We know that all children have claim_order values since the unclaimed have been detached if target is not <head>\n\n\tlet children = /** @type {ArrayLike<NodeEx2>} */ (target.childNodes);\n\t// If target is <head>, there may be children without claim_order\n\tif (target.nodeName === 'HEAD') {\n\t\tconst my_children = [];\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tconst node = children[i];\n\t\t\tif (node.claim_order !== undefined) {\n\t\t\t\tmy_children.push(node);\n\t\t\t}\n\t\t}\n\t\tchildren = my_children;\n\t}\n\t/*\n\t * Reorder claimed children optimally.\n\t * We can reorder claimed children optimally by finding the longest subsequence of\n\t * nodes that are already claimed in order and only moving the rest. The longest\n\t * subsequence of nodes that are claimed in order can be found by\n\t * computing the longest increasing subsequence of .claim_order values.\n\t *\n\t * This algorithm is optimal in generating the least amount of reorder operations\n\t * possible.\n\t *\n\t * Proof:\n\t * We know that, given a set of reordering operations, the nodes that do not move\n\t * always form an increasing subsequence, since they do not move among each other\n\t * meaning that they must be already ordered among each other. Thus, the maximal\n\t * set of nodes that do not move form a longest increasing subsequence.\n\t */\n\t// Compute longest increasing subsequence\n\t// m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n\tconst m = new Int32Array(children.length + 1);\n\t// Predecessor indices + 1\n\tconst p = new Int32Array(children.length);\n\tm[0] = -1;\n\tlet longest = 0;\n\tfor (let i = 0; i < children.length; i++) {\n\t\tconst current = children[i].claim_order;\n\t\t// Find the largest subsequence length such that it ends in a value less than our current value\n\t\t// upper_bound returns first greater value, so we subtract one\n\t\t// with fast path for when we are on the current longest subsequence\n\t\tconst seq_len =\n\t\t\t(longest > 0 && children[m[longest]].claim_order <= current\n\t\t\t\t? longest + 1\n\t\t\t\t: upper_bound(1, longest, (idx) => children[m[idx]].claim_order, current)) - 1;\n\t\tp[i] = m[seq_len] + 1;\n\t\tconst new_len = seq_len + 1;\n\t\t// We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n\t\tm[new_len] = i;\n\t\tlongest = Math.max(new_len, longest);\n\t}\n\t// The longest increasing subsequence of nodes (initially reversed)\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst lis = [];\n\t// The rest of the nodes, nodes that will be moved\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst to_move = [];\n\tlet last = children.length - 1;\n\tfor (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n\t\tlis.push(children[cur - 1]);\n\t\tfor (; last >= cur; last--) {\n\t\t\tto_move.push(children[last]);\n\t\t}\n\t\tlast--;\n\t}\n\tfor (; last >= 0; last--) {\n\t\tto_move.push(children[last]);\n\t}\n\tlis.reverse();\n\t// We sort the nodes being moved to guarantee that their insertion order matches the claim order\n\tto_move.sort((a, b) => a.claim_order - b.claim_order);\n\t// Finally, we move the nodes\n\tfor (let i = 0, j = 0; i < to_move.length; i++) {\n\t\twhile (j < lis.length && to_move[i].claim_order >= lis[j].claim_order) {\n\t\t\tj++;\n\t\t}\n\t\tconst anchor = j < lis.length ? lis[j] : null;\n\t\ttarget.insertBefore(to_move[i], anchor);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @returns {void}\n */\nexport function append(target, node) {\n\ttarget.appendChild(node);\n}\n\n/**\n * @param {Node} target\n * @param {string} style_sheet_id\n * @param {string} styles\n * @returns {void}\n */\nexport function append_styles(target, style_sheet_id, styles) {\n\tconst append_styles_to = get_root_for_style(target);\n\tif (!append_styles_to.getElementById(style_sheet_id)) {\n\t\tconst style = element('style');\n\t\tstyle.id = style_sheet_id;\n\t\tstyle.textContent = styles;\n\t\tappend_stylesheet(append_styles_to, style);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {ShadowRoot | Document}\n */\nexport function get_root_for_style(node) {\n\tif (!node) return document;\n\tconst root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n\tif (root && /** @type {ShadowRoot} */ (root).host) {\n\t\treturn /** @type {ShadowRoot} */ (root);\n\t}\n\treturn node.ownerDocument;\n}\n\n/**\n * @param {Node} node\n * @returns {CSSStyleSheet}\n */\nexport function append_empty_stylesheet(node) {\n\tconst style_element = element('style');\n\t// For transitions to work without 'style-src: unsafe-inline' Content Security Policy,\n\t// these empty tags need to be allowed with a hash as a workaround until we move to the Web Animations API.\n\t// Using the hash for the empty string (for an empty tag) works in all browsers except Safari.\n\t// So as a workaround for the workaround, when we append empty style tags we set their content to /* empty */.\n\t// The hash 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc=' will then work even in Safari.\n\tstyle_element.textContent = '/* empty */';\n\tappend_stylesheet(get_root_for_style(node), style_element);\n\treturn style_element.sheet;\n}\n\n/**\n * @param {ShadowRoot | Document} node\n * @param {HTMLStyleElement} style\n * @returns {CSSStyleSheet}\n */\nfunction append_stylesheet(node, style) {\n\tappend(/** @type {Document} */ (node).head || node, style);\n\treturn style.sheet;\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @returns {void}\n */\nexport function append_hydration(target, node) {\n\tif (is_hydrating) {\n\t\tinit_hydrate(target);\n\t\tif (\n\t\t\ttarget.actual_end_child === undefined ||\n\t\t\t(target.actual_end_child !== null && target.actual_end_child.parentNode !== target)\n\t\t) {\n\t\t\ttarget.actual_end_child = target.firstChild;\n\t\t}\n\t\t// Skip nodes of undefined ordering\n\t\twhile (target.actual_end_child !== null && target.actual_end_child.claim_order === undefined) {\n\t\t\ttarget.actual_end_child = target.actual_end_child.nextSibling;\n\t\t}\n\t\tif (node !== target.actual_end_child) {\n\t\t\t// We only insert if the ordering of this node should be modified or the parent node is not target\n\t\t\tif (node.claim_order !== undefined || node.parentNode !== target) {\n\t\t\t\ttarget.insertBefore(node, target.actual_end_child);\n\t\t\t}\n\t\t} else {\n\t\t\ttarget.actual_end_child = node.nextSibling;\n\t\t}\n\t} else if (node.parentNode !== target || node.nextSibling !== null) {\n\t\ttarget.appendChild(node);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @param {Node} [anchor]\n * @returns {void}\n */\nexport function insert(target, node, anchor) {\n\ttarget.insertBefore(node, anchor || null);\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @param {NodeEx} [anchor]\n * @returns {void}\n */\nexport function insert_hydration(target, node, anchor) {\n\tif (is_hydrating && !anchor) {\n\t\tappend_hydration(target, node);\n\t} else if (node.parentNode !== target || node.nextSibling != anchor) {\n\t\ttarget.insertBefore(node, anchor || null);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {void}\n */\nexport function detach(node) {\n\tif (node.parentNode) {\n\t\tnode.parentNode.removeChild(node);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function destroy_each(iterations, detaching) {\n\tfor (let i = 0; i < iterations.length; i += 1) {\n\t\tif (iterations[i]) iterations[i].d(detaching);\n\t}\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element(name) {\n\treturn document.createElement(name);\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @param {string} is\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element_is(name, is) {\n\treturn document.createElement(name, { is });\n}\n\n/**\n * @template T\n * @template {keyof T} K\n * @param {T} obj\n * @param {K[]} exclude\n * @returns {Pick<T, Exclude<keyof T, K>>}\n */\nexport function object_without_properties(obj, exclude) {\n\tconst target = /** @type {Pick<T, Exclude<keyof T, K>>} */ ({});\n\tfor (const k in obj) {\n\t\tif (\n\t\t\thas_prop(obj, k) &&\n\t\t\t// @ts-ignore\n\t\t\texclude.indexOf(k) === -1\n\t\t) {\n\t\t\t// @ts-ignore\n\t\t\ttarget[k] = obj[k];\n\t\t}\n\t}\n\treturn target;\n}\n\n/**\n * @template {keyof SVGElementTagNameMap} K\n * @param {K} name\n * @returns {SVGElement}\n */\nexport function svg_element(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n/**\n * @param {string} data\n * @returns {Text}\n */\nexport function text(data) {\n\treturn document.createTextNode(data);\n}\n\n/**\n * @returns {Text} */\nexport function space() {\n\treturn text(' ');\n}\n\n/**\n * @returns {Text} */\nexport function empty() {\n\treturn text('');\n}\n\n/**\n * @param {string} content\n * @returns {Comment}\n */\nexport function comment(content) {\n\treturn document.createComment(content);\n}\n\n/**\n * @param {EventTarget} node\n * @param {string} event\n * @param {EventListenerOrEventListenerObject} handler\n * @param {boolean | AddEventListenerOptions | EventListenerOptions} [options]\n * @returns {() => void}\n */\nexport function listen(node, event, handler, options) {\n\tnode.addEventListener(event, handler, options);\n\treturn () => node.removeEventListener(event, handler, options);\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function prevent_default(fn) {\n\treturn function (event) {\n\t\tevent.preventDefault();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopPropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_immediate_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopImmediatePropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function self(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.target === this) fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function trusted(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.isTrusted) fn.call(this, event);\n\t};\n}\n\n/**\n * @param {Element} node\n * @param {string} attribute\n * @param {string} [value]\n * @returns {void}\n */\nexport function attr(node, attribute, value) {\n\tif (value == null) node.removeAttribute(attribute);\n\telse if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);\n}\n/**\n * List of attributes that should always be set through the attr method,\n * because updating them through the property setter doesn't work reliably.\n * In the example of `width`/`height`, the problem is that the setter only\n * accepts numeric values, but the attribute can also be set to a string like `50%`.\n * If this list becomes too big, rethink this approach.\n */\nconst always_set_through_set_attribute = ['width', 'height'];\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_attributes(node, attributes) {\n\t// @ts-ignore\n\tconst descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n\tfor (const key in attributes) {\n\t\tif (attributes[key] == null) {\n\t\t\tnode.removeAttribute(key);\n\t\t} else if (key === 'style') {\n\t\t\tnode.style.cssText = attributes[key];\n\t\t} else if (key === '__value') {\n\t\t\t/** @type {any} */ (node).value = node[key] = attributes[key];\n\t\t} else if (\n\t\t\tdescriptors[key] &&\n\t\t\tdescriptors[key].set &&\n\t\t\talways_set_through_set_attribute.indexOf(key) === -1\n\t\t) {\n\t\t\tnode[key] = attributes[key];\n\t\t} else {\n\t\t\tattr(node, key, attributes[key]);\n\t\t}\n\t}\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_svg_attributes(node, attributes) {\n\tfor (const key in attributes) {\n\t\tattr(node, key, attributes[key]);\n\t}\n}\n\n/**\n * @param {Record<string, unknown>} data_map\n * @returns {void}\n */\nexport function set_custom_element_data_map(node, data_map) {\n\tObject.keys(data_map).forEach((key) => {\n\t\tset_custom_element_data(node, key, data_map[key]);\n\t});\n}\n\n/**\n * @returns {void} */\nexport function set_custom_element_data(node, prop, value) {\n\tconst lower = prop.toLowerCase(); // for backwards compatibility with existing behavior we do lowercase first\n\tif (lower in node) {\n\t\tnode[lower] = typeof node[lower] === 'boolean' && value === '' ? true : value;\n\t} else if (prop in node) {\n\t\tnode[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n\t} else {\n\t\tattr(node, prop, value);\n\t}\n}\n\n/**\n * @param {string} tag\n */\nexport function set_dynamic_element_data(tag) {\n\treturn /-/.test(tag) ? set_custom_element_data_map : set_attributes;\n}\n\n/**\n * @returns {void}\n */\nexport function xlink_attr(node, attribute, value) {\n\tnode.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {HTMLElement} node\n * @returns {string}\n */\nexport function get_svelte_dataset(node) {\n\treturn node.dataset.svelteH;\n}\n\n/**\n * @returns {unknown[]} */\nexport function get_binding_group_value(group, __value, checked) {\n\tconst value = new Set();\n\tfor (let i = 0; i < group.length; i += 1) {\n\t\tif (group[i].checked) value.add(group[i].__value);\n\t}\n\tif (!checked) {\n\t\tvalue.delete(__value);\n\t}\n\treturn Array.from(value);\n}\n\n/**\n * @param {HTMLInputElement[]} group\n * @returns {{ p(...inputs: HTMLInputElement[]): void; r(): void; }}\n */\nexport function init_binding_group(group) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\treturn {\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\t_inputs.forEach((input) => group.push(input));\n\t\t},\n\t\t/* remove */ r() {\n\t\t\t_inputs.forEach((input) => group.splice(group.indexOf(input), 1));\n\t\t}\n\t};\n}\n\n/**\n * @param {number[]} indexes\n * @returns {{ u(new_indexes: number[]): void; p(...inputs: HTMLInputElement[]): void; r: () => void; }}\n */\nexport function init_binding_group_dynamic(group, indexes) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _group = get_binding_group(group);\n\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\n\tfunction get_binding_group(group) {\n\t\tfor (let i = 0; i < indexes.length; i++) {\n\t\t\tgroup = group[indexes[i]] = group[indexes[i]] || [];\n\t\t}\n\t\treturn group;\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction push() {\n\t\t_inputs.forEach((input) => _group.push(input));\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction remove() {\n\t\t_inputs.forEach((input) => _group.splice(_group.indexOf(input), 1));\n\t}\n\treturn {\n\t\t/* update */ u(new_indexes) {\n\t\t\tindexes = new_indexes;\n\t\t\tconst new_group = get_binding_group(group);\n\t\t\tif (new_group !== _group) {\n\t\t\t\tremove();\n\t\t\t\t_group = new_group;\n\t\t\t\tpush();\n\t\t\t}\n\t\t},\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\tpush();\n\t\t},\n\t\t/* remove */ r: remove\n\t};\n}\n\n/** @returns {number} */\nexport function to_number(value) {\n\treturn value === '' ? null : +value;\n}\n\n/** @returns {any[]} */\nexport function time_ranges_to_array(ranges) {\n\tconst array = [];\n\tfor (let i = 0; i < ranges.length; i += 1) {\n\t\tarray.push({ start: ranges.start(i), end: ranges.end(i) });\n\t}\n\treturn array;\n}\n\n/**\n * @param {Element} element\n * @returns {ChildNode[]}\n */\nexport function children(element) {\n\treturn Array.from(element.childNodes);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {void}\n */\nfunction init_claim_info(nodes) {\n\tif (nodes.claim_info === undefined) {\n\t\tnodes.claim_info = { last_index: 0, total_claimed: 0 };\n\t}\n}\n\n/**\n * @template {ChildNodeEx} R\n * @param {ChildNodeArray} nodes\n * @param {(node: ChildNodeEx) => node is R} predicate\n * @param {(node: ChildNodeEx) => ChildNodeEx | undefined} process_node\n * @param {() => R} create_node\n * @param {boolean} dont_update_last_index\n * @returns {R}\n */\nfunction claim_node(nodes, predicate, process_node, create_node, dont_update_last_index = false) {\n\t// Try to find nodes in an order such that we lengthen the longest increasing subsequence\n\tinit_claim_info(nodes);\n\tconst result_node = (() => {\n\t\t// We first try to find an element after the previous one\n\t\tfor (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// Otherwise, we try to find one before\n\t\t// We iterate in reverse so that we don't go too far back\n\t\tfor (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t} else if (replacement === undefined) {\n\t\t\t\t\t// Since we spliced before the last_index, we decrease it\n\t\t\t\t\tnodes.claim_info.last_index--;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// If we can't find any matching node, we create a new one\n\t\treturn create_node();\n\t})();\n\tresult_node.claim_order = nodes.claim_info.total_claimed;\n\tnodes.claim_info.total_claimed += 1;\n\treturn result_node;\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @param {(name: string) => Element | SVGElement} create_element\n * @returns {Element | SVGElement}\n */\nfunction claim_element_base(nodes, name, attributes, create_element) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Element | SVGElement} */\n\t\t(node) => node.nodeName === name,\n\t\t/** @param {Element} node */\n\t\t(node) => {\n\t\t\tconst remove = [];\n\t\t\tfor (let j = 0; j < node.attributes.length; j++) {\n\t\t\t\tconst attribute = node.attributes[j];\n\t\t\t\tif (!attributes[attribute.name]) {\n\t\t\t\t\tremove.push(attribute.name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tremove.forEach((v) => node.removeAttribute(v));\n\t\t\treturn undefined;\n\t\t},\n\t\t() => create_element(name)\n\t);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_svg_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, svg_element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Text}\n */\nexport function claim_text(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Text} */\n\t\t(node) => node.nodeType === 3,\n\t\t/** @param {Text} node */\n\t\t(node) => {\n\t\t\tconst data_str = '' + data;\n\t\t\tif (node.data.startsWith(data_str)) {\n\t\t\t\tif (node.data.length !== data_str.length) {\n\t\t\t\t\treturn node.splitText(data_str.length);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode.data = data_str;\n\t\t\t}\n\t\t},\n\t\t() => text(data),\n\t\ttrue // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n\t);\n}\n\n/**\n * @returns {Text} */\nexport function claim_space(nodes) {\n\treturn claim_text(nodes, ' ');\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Comment}\n */\nexport function claim_comment(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Comment} */\n\t\t(node) => node.nodeType === 8,\n\t\t/** @param {Comment} node */\n\t\t(node) => {\n\t\t\tnode.data = '' + data;\n\t\t\treturn undefined;\n\t\t},\n\t\t() => comment(data),\n\t\ttrue\n\t);\n}\n\nfunction get_comment_idx(nodes, text, start) {\n\tfor (let i = start; i < nodes.length; i += 1) {\n\t\tconst node = nodes[i];\n\t\tif (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n * @param {boolean} is_svg\n * @returns {HtmlTagHydration}\n */\nexport function claim_html_tag(nodes, is_svg) {\n\t// find html opening tag\n\tconst start_index = get_comment_idx(nodes, 'HTML_TAG_START', 0);\n\tconst end_index = get_comment_idx(nodes, 'HTML_TAG_END', start_index + 1);\n\tif (start_index === -1 || end_index === -1) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\n\tinit_claim_info(nodes);\n\tconst html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n\tdetach(html_tag_nodes[0]);\n\tdetach(html_tag_nodes[html_tag_nodes.length - 1]);\n\tconst claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n\tif (claimed_nodes.length === 0) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\tfor (const n of claimed_nodes) {\n\t\tn.claim_order = nodes.claim_info.total_claimed;\n\t\tnodes.claim_info.total_claimed += 1;\n\t}\n\treturn new HtmlTagHydration(is_svg, claimed_nodes);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data(text, data) {\n\tdata = '' + data;\n\tif (text.data === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data_contenteditable(text, data) {\n\tdata = '' + data;\n\tif (text.wholeText === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @param {string} attr_value\n * @returns {void}\n */\nexport function set_data_maybe_contenteditable(text, data, attr_value) {\n\tif (~contenteditable_truthy_values.indexOf(attr_value)) {\n\t\tset_data_contenteditable(text, data);\n\t} else {\n\t\tset_data(text, data);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_input_value(input, value) {\n\tinput.value = value == null ? '' : value;\n}\n\n/**\n * @returns {void} */\nexport function set_input_type(input, type) {\n\ttry {\n\t\tinput.type = type;\n\t} catch (e) {\n\t\t// do nothing\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_style(node, key, value, important) {\n\tif (value == null) {\n\t\tnode.style.removeProperty(key);\n\t} else {\n\t\tnode.style.setProperty(key, value, important ? 'important' : '');\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_option(select, value, mounting) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\tif (option.__value === value) {\n\t\t\toption.selected = true;\n\t\t\treturn;\n\t\t}\n\t}\n\tif (!mounting || value !== undefined) {\n\t\tselect.selectedIndex = -1; // no option should be selected\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_options(select, value) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\toption.selected = ~value.indexOf(option.__value);\n\t}\n}\n\nexport function select_value(select) {\n\tconst selected_option = select.querySelector(':checked');\n\treturn selected_option && selected_option.__value;\n}\n\nexport function select_multiple_value(select) {\n\treturn [].map.call(select.querySelectorAll(':checked'), (option) => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\n\n/**\n * @type {boolean} */\nlet crossorigin;\n\n/**\n * @returns {boolean} */\nexport function is_crossorigin() {\n\tif (crossorigin === undefined) {\n\t\tcrossorigin = false;\n\t\ttry {\n\t\t\tif (typeof window !== 'undefined' && window.parent) {\n\t\t\t\tvoid window.parent.document;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tcrossorigin = true;\n\t\t}\n\t}\n\treturn crossorigin;\n}\n\n/**\n * @param {HTMLElement} node\n * @param {() => void} fn\n * @returns {() => void}\n */\nexport function add_iframe_resize_listener(node, fn) {\n\tconst computed_style = getComputedStyle(node);\n\tif (computed_style.position === 'static') {\n\t\tnode.style.position = 'relative';\n\t}\n\tconst iframe = element('iframe');\n\tiframe.setAttribute(\n\t\t'style',\n\t\t'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n\t\t\t'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;'\n\t);\n\tiframe.setAttribute('aria-hidden', 'true');\n\tiframe.tabIndex = -1;\n\tconst crossorigin = is_crossorigin();\n\n\t/**\n\t * @type {() => void}\n\t */\n\tlet unsubscribe;\n\tif (crossorigin) {\n\t\tiframe.src = \"data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>\";\n\t\tunsubscribe = listen(\n\t\t\twindow,\n\t\t\t'message',\n\t\t\t/** @param {MessageEvent} event */ (event) => {\n\t\t\t\tif (event.source === iframe.contentWindow) fn();\n\t\t\t}\n\t\t);\n\t} else {\n\t\tiframe.src = 'about:blank';\n\t\tiframe.onload = () => {\n\t\t\tunsubscribe = listen(iframe.contentWindow, 'resize', fn);\n\t\t\t// make sure an initial resize event is fired _after_ the iframe is loaded (which is asynchronous)\n\t\t\t// see https://github.com/sveltejs/svelte/issues/4233\n\t\t\tfn();\n\t\t};\n\t}\n\tappend(node, iframe);\n\treturn () => {\n\t\tif (crossorigin) {\n\t\t\tunsubscribe();\n\t\t} else if (unsubscribe && iframe.contentWindow) {\n\t\t\tunsubscribe();\n\t\t}\n\t\tdetach(iframe);\n\t};\n}\nexport const resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'content-box'\n});\nexport const resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'border-box'\n});\nexport const resize_observer_device_pixel_content_box = /* @__PURE__ */ new ResizeObserverSingleton(\n\t{ box: 'device-pixel-content-box' }\n);\nexport { ResizeObserverSingleton };\n\n/**\n * @returns {void} */\nexport function toggle_class(element, name, toggle) {\n\t// The `!!` is required because an `undefined` flag means flipping the current state.\n\telement.classList.toggle(name, !!toggle);\n}\n\n/**\n * @template T\n * @param {string} type\n * @param {T} [detail]\n * @param {{ bubbles?: boolean, cancelable?: boolean }} [options]\n * @returns {CustomEvent<T>}\n */\nexport function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\n/**\n * @param {string} selector\n * @param {HTMLElement} parent\n * @returns {ChildNodeArray}\n */\nexport function query_selector_all(selector, parent = document.body) {\n\treturn Array.from(parent.querySelectorAll(selector));\n}\n\n/**\n * @param {string} nodeId\n * @param {HTMLElement} head\n * @returns {any[]}\n */\nexport function head_selector(nodeId, head) {\n\tconst result = [];\n\tlet started = 0;\n\tfor (const node of head.childNodes) {\n\t\tif (node.nodeType === 8 /* comment node */) {\n\t\t\tconst comment = node.textContent.trim();\n\t\t\tif (comment === `HEAD_${nodeId}_END`) {\n\t\t\t\tstarted -= 1;\n\t\t\t\tresult.push(node);\n\t\t\t} else if (comment === `HEAD_${nodeId}_START`) {\n\t\t\t\tstarted += 1;\n\t\t\t\tresult.push(node);\n\t\t\t}\n\t\t} else if (started > 0) {\n\t\t\tresult.push(node);\n\t\t}\n\t}\n\treturn result;\n}\n/** */\nexport class HtmlTag {\n\t/**\n\t * @private\n\t * @default false\n\t */\n\tis_svg = false;\n\t/** parent for creating node */\n\te = undefined;\n\t/** html tag nodes */\n\tn = undefined;\n\t/** target */\n\tt = undefined;\n\t/** anchor */\n\ta = undefined;\n\tconstructor(is_svg = false) {\n\t\tthis.is_svg = is_svg;\n\t\tthis.e = this.n = null;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tthis.h(html);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @param {HTMLElement | SVGElement} target\n\t * @param {HTMLElement | SVGElement} anchor\n\t * @returns {void}\n\t */\n\tm(html, target, anchor = null) {\n\t\tif (!this.e) {\n\t\t\tif (this.is_svg)\n\t\t\t\tthis.e = svg_element(/** @type {keyof SVGElementTagNameMap} */ (target.nodeName));\n\t\t\t/** #7364 target for <template> may be provided as #document-fragment(11) */ else\n\t\t\t\tthis.e = element(\n\t\t\t\t\t/** @type {keyof HTMLElementTagNameMap} */ (\n\t\t\t\t\t\ttarget.nodeType === 11 ? 'TEMPLATE' : target.nodeName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\tthis.t =\n\t\t\t\ttarget.tagName !== 'TEMPLATE'\n\t\t\t\t\t? target\n\t\t\t\t\t: /** @type {HTMLTemplateElement} */ (target).content;\n\t\t\tthis.c(html);\n\t\t}\n\t\tthis.i(anchor);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\th(html) {\n\t\tthis.e.innerHTML = html;\n\t\tthis.n = Array.from(\n\t\t\tthis.e.nodeName === 'TEMPLATE' ? this.e.content.childNodes : this.e.childNodes\n\t\t);\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert(this.t, this.n[i], anchor);\n\t\t}\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tp(html) {\n\t\tthis.d();\n\t\tthis.h(html);\n\t\tthis.i(this.a);\n\t}\n\n\t/**\n\t * @returns {void} */\n\td() {\n\t\tthis.n.forEach(detach);\n\t}\n}\n\nexport class HtmlTagHydration extends HtmlTag {\n\t/** @type {Element[]} hydration claimed nodes */\n\tl = undefined;\n\n\tconstructor(is_svg = false, claimed_nodes) {\n\t\tsuper(is_svg);\n\t\tthis.e = this.n = null;\n\t\tthis.l = claimed_nodes;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tif (this.l) {\n\t\t\tthis.n = this.l;\n\t\t} else {\n\t\t\tsuper.c(html);\n\t\t}\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert_hydration(this.t, this.n[i], anchor);\n\t\t}\n\t}\n}\n\n/**\n * @param {NamedNodeMap} attributes\n * @returns {{}}\n */\nexport function attribute_to_object(attributes) {\n\tconst result = {};\n\tfor (const attribute of attributes) {\n\t\tresult[attribute.name] = attribute.value;\n\t}\n\treturn result;\n}\n\nconst escaped = {\n\t'\"': '"',\n\t'&': '&',\n\t'<': '<'\n};\n\nconst regex_attribute_characters_to_escape = /[\"&<]/g;\n\n/**\n * Note that the attribute itself should be surrounded in double quotes\n * @param {any} attribute\n */\nfunction escape_attribute(attribute) {\n\treturn String(attribute).replace(regex_attribute_characters_to_escape, (match) => escaped[match]);\n}\n\n/**\n * @param {Record<string, string>} attributes\n */\nexport function stringify_spread(attributes) {\n\tlet str = ' ';\n\tfor (const key in attributes) {\n\t\tif (attributes[key] != null) {\n\t\t\tstr += `${key}=\"${escape_attribute(attributes[key])}\" `;\n\t\t}\n\t}\n\n\treturn str;\n}\n\n/**\n * @param {HTMLElement} element\n * @returns {{}}\n */\nexport function get_custom_elements_slots(element) {\n\tconst result = {};\n\telement.childNodes.forEach(\n\t\t/** @param {Element} node */ (node) => {\n\t\t\tresult[node.slot || 'default'] = true;\n\t\t}\n\t);\n\treturn result;\n}\n\nexport function construct_svelte_component(component, props) {\n\treturn new component(props);\n}\n\n/**\n * @typedef {Node & {\n * \tclaim_order?: number;\n * \thydrate_init?: true;\n * \tactual_end_child?: NodeEx;\n * \tchildNodes: NodeListOf<NodeEx>;\n * }} NodeEx\n */\n\n/** @typedef {ChildNode & NodeEx} ChildNodeEx */\n\n/** @typedef {NodeEx & { claim_order: number }} NodeEx2 */\n\n/**\n * @typedef {ChildNodeEx[] & {\n * \tclaim_info?: {\n * \t\tlast_index: number;\n * \t\ttotal_claimed: number;\n * \t};\n * }} ChildNodeArray\n */\n","import { append_empty_stylesheet, detach, get_root_for_style } from './dom.js';\nimport { raf } from './environment.js';\n\n// we need to store the information for multiple documents because a Svelte application could also contain iframes\n// https://github.com/sveltejs/svelte/issues/3624\n/** @type {Map<Document | ShadowRoot, import('./private.d.ts').StyleInformation>} */\nconst managed_styles = new Map();\n\nlet active = 0;\n\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\n/**\n * @param {string} str\n * @returns {number}\n */\nfunction hash(str) {\n\tlet hash = 5381;\n\tlet i = str.length;\n\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n\treturn hash >>> 0;\n}\n\n/**\n * @param {Document | ShadowRoot} doc\n * @param {Element & ElementCSSInlineStyle} node\n * @returns {{ stylesheet: any; rules: {}; }}\n */\nfunction create_style_information(doc, node) {\n\tconst info = { stylesheet: append_empty_stylesheet(node), rules: {} };\n\tmanaged_styles.set(doc, info);\n\treturn info;\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {number} a\n * @param {number} b\n * @param {number} duration\n * @param {number} delay\n * @param {(t: number) => number} ease\n * @param {(t: number, u: number) => string} fn\n * @param {number} uid\n * @returns {string}\n */\nexport function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n\tconst step = 16.666 / duration;\n\tlet keyframes = '{\\n';\n\tfor (let p = 0; p <= 1; p += step) {\n\t\tconst t = a + (b - a) * ease(p);\n\t\tkeyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n\t}\n\tconst rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n\tconst name = `__svelte_${hash(rule)}_${uid}`;\n\tconst doc = get_root_for_style(node);\n\tconst { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);\n\tif (!rules[name]) {\n\t\trules[name] = true;\n\t\tstylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n\t}\n\tconst animation = node.style.animation || '';\n\tnode.style.animation = `${\n\t\tanimation ? `${animation}, ` : ''\n\t}${name} ${duration}ms linear ${delay}ms 1 both`;\n\tactive += 1;\n\treturn name;\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {string} [name]\n * @returns {void}\n */\nexport function delete_rule(node, name) {\n\tconst previous = (node.style.animation || '').split(', ');\n\tconst next = previous.filter(\n\t\tname\n\t\t\t? (anim) => anim.indexOf(name) < 0 // remove specific animation\n\t\t\t: (anim) => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n\t);\n\tconst deleted = previous.length - next.length;\n\tif (deleted) {\n\t\tnode.style.animation = next.join(', ');\n\t\tactive -= deleted;\n\t\tif (!active) clear_rules();\n\t}\n}\n\n/** @returns {void} */\nexport function clear_rules() {\n\traf(() => {\n\t\tif (active) return;\n\t\tmanaged_styles.forEach((info) => {\n\t\t\tconst { ownerNode } = info.stylesheet;\n\t\t\t// there is no ownerNode if it runs on jsdom.\n\t\t\tif (ownerNode) detach(ownerNode);\n\t\t});\n\t\tmanaged_styles.clear();\n\t});\n}\n","import { custom_event } from './dom.js';\n\nexport let current_component;\n\n/** @returns {void} */\nexport function set_current_component(component) {\n\tcurrent_component = component;\n}\n\nexport function get_current_component() {\n\tif (!current_component) throw new Error('Function called outside component initialization');\n\treturn current_component;\n}\n\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#beforeupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function beforeUpdate(fn) {\n\tget_current_component().$$.before_update.push(fn);\n}\n\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted.\n *\n * `onMount` does not run inside a [server-side component](https://svelte.dev/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs/svelte#onmount\n * @template T\n * @param {() => import('./private.js').NotFunction<T> | Promise<import('./private.js').NotFunction<T>> | (() => any)} fn\n * @returns {void}\n */\nexport function onMount(fn) {\n\tget_current_component().$$.on_mount.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#afterupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function afterUpdate(fn) {\n\tget_current_component().$$.after_update.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs/svelte#ondestroy\n * @param {() => any} fn\n * @returns {void}\n */\nexport function onDestroy(fn) {\n\tget_current_component().$$.on_destroy.push(fn);\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n * loaded: never; // does not take a detail argument\n * change: string; // takes a detail argument of type string, which is required\n * optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * https://svelte.dev/docs/svelte#createeventdispatcher\n * @template {Record<string, any>} [EventMap=any]\n * @returns {import('./public.js').EventDispatcher<EventMap>}\n */\nexport function createEventDispatcher() {\n\tconst component = get_current_component();\n\treturn (type, detail, { cancelable = false } = {}) => {\n\t\tconst callbacks = component.$$.callbacks[type];\n\t\tif (callbacks) {\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = custom_event(/** @type {string} */ (type), detail, { cancelable });\n\t\t\tcallbacks.slice().forEach((fn) => {\n\t\t\t\tfn.call(component, event);\n\t\t\t});\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\t\treturn true;\n\t};\n}\n\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#setcontext\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nexport function setContext(key, context) {\n\tget_current_component().$$.context.set(key, context);\n\treturn context;\n}\n\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#getcontext\n * @template T\n * @param {any} key\n * @returns {T}\n */\nexport function getContext(key) {\n\treturn get_current_component().$$.context.get(key);\n}\n\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * https://svelte.dev/docs/svelte#getallcontexts\n * @template {Map<any, any>} [T=Map<any, any>]\n * @returns {T}\n */\nexport function getAllContexts() {\n\treturn get_current_component().$$.context;\n}\n\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#hascontext\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\treturn get_current_component().$$.context.has(key);\n}\n\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\n/**\n * @param component\n * @param event\n * @returns {void}\n */\nexport function bubble(component, event) {\n\tconst callbacks = component.$$.callbacks[event.type];\n\tif (callbacks) {\n\t\t// @ts-ignore\n\t\tcallbacks.slice().forEach((fn) => fn.call(this, event));\n\t}\n}\n","import { run_all } from './utils.js';\nimport { current_component, set_current_component } from './lifecycle.js';\n\nexport const dirty_components = [];\nexport const intros = { enabled: false };\nexport const binding_callbacks = [];\n\nlet render_callbacks = [];\n\nconst flush_callbacks = [];\n\nconst resolved_promise = /* @__PURE__ */ Promise.resolve();\n\nlet update_scheduled = false;\n\n/** @returns {void} */\nexport function schedule_update() {\n\tif (!update_scheduled) {\n\t\tupdate_scheduled = true;\n\t\tresolved_promise.then(flush);\n\t}\n}\n\n/** @returns {Promise<void>} */\nexport function tick() {\n\tschedule_update();\n\treturn resolved_promise;\n}\n\n/** @returns {void} */\nexport function add_render_callback(fn) {\n\trender_callbacks.push(fn);\n}\n\n/** @returns {void} */\nexport function add_flush_callback(fn) {\n\tflush_callbacks.push(fn);\n}\n\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\n\nlet flushidx = 0; // Do *not* move this inside the flush() function\n\n/** @returns {void} */\nexport function flush() {\n\t// Do not reenter flush while dirty components are updated, as this can\n\t// result in an infinite loop. Instead, let the inner flush handle it.\n\t// Reentrancy is ok afterwards for bindings etc.\n\tif (flushidx !== 0) {\n\t\treturn;\n\t}\n\tconst saved_component = current_component;\n\tdo {\n\t\t// first, call beforeUpdate functions\n\t\t// and update components\n\t\ttry {\n\t\t\twhile (flushidx < dirty_components.length) {\n\t\t\t\tconst component = dirty_components[flushidx];\n\t\t\t\tflushidx++;\n\t\t\t\tset_current_component(component);\n\t\t\t\tupdate(component.$$);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// reset dirty state to not end up in a deadlocked state and then rethrow\n\t\t\tdirty_components.length = 0;\n\t\t\tflushidx = 0;\n\t\t\tthrow e;\n\t\t}\n\t\tset_current_component(null);\n\t\tdirty_components.length = 0;\n\t\tflushidx = 0;\n\t\twhile (binding_callbacks.length) binding_callbacks.pop()();\n\t\t// then, once components are updated, call\n\t\t// afterUpdate functions. This may cause\n\t\t// subsequent updates...\n\t\tfor (let i = 0; i < render_callbacks.length; i += 1) {\n\t\t\tconst callback = render_callbacks[i];\n\t\t\tif (!seen_callbacks.has(callback)) {\n\t\t\t\t// ...so guard against infinite loops\n\t\t\t\tseen_callbacks.add(callback);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t\trender_callbacks.length = 0;\n\t} while (dirty_components.length);\n\twhile (flush_callbacks.length) {\n\t\tflush_callbacks.pop()();\n\t}\n\tupdate_scheduled = false;\n\tseen_callbacks.clear();\n\tset_current_component(saved_component);\n}\n\n/** @returns {void} */\nfunction update($$) {\n\tif ($$.fragment !== null) {\n\t\t$$.update();\n\t\trun_all($$.before_update);\n\t\tconst dirty = $$.dirty;\n\t\t$$.dirty = [-1];\n\t\t$$.fragment && $$.fragment.p($$.ctx, dirty);\n\t\t$$.after_update.forEach(add_render_callback);\n\t}\n}\n\n/**\n * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function flush_render_callbacks(fns) {\n\tconst filtered = [];\n\tconst targets = [];\n\trender_callbacks.forEach((c) => (fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)));\n\ttargets.forEach((c) => c());\n\trender_callbacks = filtered;\n}\n","import { identity as linear, is_function, noop, run_all } from './utils.js';\nimport { now } from './environment.js';\nimport { loop } from './loop.js';\nimport { create_rule, delete_rule } from './style_manager.js';\nimport { custom_event } from './dom.js';\nimport { add_render_callback } from './scheduler.js';\n\n/**\n * @type {Promise<void> | null}\n */\nlet promise;\n\n/**\n * @returns {Promise<void>}\n */\nfunction wait() {\n\tif (!promise) {\n\t\tpromise = Promise.resolve();\n\t\tpromise.then(() => {\n\t\t\tpromise = null;\n\t\t});\n\t}\n\treturn promise;\n}\n\n/**\n * @param {Element} node\n * @param {INTRO | OUTRO | boolean} direction\n * @param {'start' | 'end'} kind\n * @returns {void}\n */\nfunction dispatch(node, direction, kind) {\n\tnode.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\n\nconst outroing = new Set();\n\n/**\n * @type {Outro}\n */\nlet outros;\n\n/**\n * @returns {void} */\nexport function group_outros() {\n\toutros = {\n\t\tr: 0,\n\t\tc: [],\n\t\tp: outros // parent group\n\t};\n}\n\n/**\n * @returns {void} */\nexport function check_outros() {\n\tif (!outros.r) {\n\t\trun_all(outros.c);\n\t}\n\toutros = outros.p;\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} [local]\n * @returns {void}\n */\nexport function transition_in(block, local) {\n\tif (block && block.i) {\n\t\toutroing.delete(block);\n\t\tblock.i(local);\n\t}\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} local\n * @param {0 | 1} [detach]\n * @param {() => void} [callback]\n * @returns {void}\n */\nexport function transition_out(block, local, detach, callback) {\n\tif (block && block.o) {\n\t\tif (outroing.has(block)) return;\n\t\toutroing.add(block);\n\t\toutros.c.push(() => {\n\t\t\toutroing.delete(block);\n\t\t\tif (callback) {\n\t\t\t\tif (detach) block.d(1);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t});\n\t\tblock.o(local);\n\t} else if (callback) {\n\t\tcallback();\n\t}\n}\n\n/**\n * @type {import('../transition/public.js').TransitionConfig}\n */\nconst null_transition = { duration: 0 };\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ start(): void; invalidate(): void; end(): void; }}\n */\nexport function create_in_transition(node, fn, params) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'in' };\n\tlet config = fn(node, params, options);\n\tlet running = false;\n\tlet animation_name;\n\tlet task;\n\tlet uid = 0;\n\n\t/**\n\t * @returns {void} */\n\tfunction cleanup() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\t\tif (css) animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n\t\ttick(0, 1);\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tif (task) task.abort();\n\t\trunning = true;\n\t\tadd_render_callback(() => dispatch(node, true, 'start'));\n\t\ttask = loop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(1, 0);\n\t\t\t\t\tdispatch(node, true, 'end');\n\t\t\t\t\tcleanup();\n\t\t\t\t\treturn (running = false);\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\tlet started = false;\n\treturn {\n\t\tstart() {\n\t\t\tif (started) return;\n\t\t\tstarted = true;\n\t\t\tdelete_rule(node);\n\t\t\tif (is_function(config)) {\n\t\t\t\tconfig = config(options);\n\t\t\t\twait().then(go);\n\t\t\t} else {\n\t\t\t\tgo();\n\t\t\t}\n\t\t},\n\t\tinvalidate() {\n\t\t\tstarted = false;\n\t\t},\n\t\tend() {\n\t\t\tif (running) {\n\t\t\t\tcleanup();\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ end(reset: any): void; }}\n */\nexport function create_out_transition(node, fn, params) {\n\t/** @type {TransitionOptions} */\n\tconst options = { direction: 'out' };\n\tlet config = fn(node, params, options);\n\tlet running = true;\n\tlet animation_name;\n\tconst group = outros;\n\tgroup.r += 1;\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\tif (css) animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tadd_render_callback(() => dispatch(node, false, 'start'));\n\n\t\tif ('inert' in node) {\n\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\tnode.inert = true;\n\t\t}\n\n\t\tloop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(0, 1);\n\t\t\t\t\tdispatch(node, false, 'end');\n\t\t\t\t\tif (!--group.r) {\n\t\t\t\t\t\t// this will result in `end()` being called,\n\t\t\t\t\t\t// so we don't need to clean up here\n\t\t\t\t\t\trun_all(group.c);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(1 - t, t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\n\tif (is_function(config)) {\n\t\twait().then(() => {\n\t\t\t// @ts-ignore\n\t\t\tconfig = config(options);\n\t\t\tgo();\n\t\t});\n\t} else {\n\t\tgo();\n\t}\n\n\treturn {\n\t\tend(reset) {\n\t\t\tif (reset && 'inert' in node) {\n\t\t\t\tnode.inert = original_inert_value;\n\t\t\t}\n\t\t\tif (reset && config.tick) {\n\t\t\t\tconfig.tick(1, 0);\n\t\t\t}\n\t\t\tif (running) {\n\t\t\t\tif (animation_name) delete_rule(node, animation_name);\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @param {boolean} intro\n * @returns {{ run(b: 0 | 1): void; end(): void; }}\n */\nexport function create_bidirectional_transition(node, fn, params, intro) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'both' };\n\tlet config = fn(node, params, options);\n\tlet t = intro ? 0 : 1;\n\n\t/**\n\t * @type {Program | null} */\n\tlet running_program = null;\n\n\t/**\n\t * @type {PendingProgram | null} */\n\tlet pending_program = null;\n\tlet animation_name = null;\n\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction clear_animation() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @param {PendingProgram} program\n\t * @param {number} duration\n\t * @returns {Program}\n\t */\n\tfunction init(program, duration) {\n\t\tconst d = /** @type {Program['d']} */ (program.b - t);\n\t\tduration *= Math.abs(d);\n\t\treturn {\n\t\t\ta: t,\n\t\t\tb: program.b,\n\t\t\td,\n\t\t\tduration,\n\t\t\tstart: program.start,\n\t\t\tend: program.start + duration,\n\t\t\tgroup: program.group\n\t\t};\n\t}\n\n\t/**\n\t * @param {INTRO | OUTRO} b\n\t * @returns {void}\n\t */\n\tfunction go(b) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\t/**\n\t\t * @type {PendingProgram} */\n\t\tconst program = {\n\t\t\tstart: now() + delay,\n\t\t\tb\n\t\t};\n\n\t\tif (!b) {\n\t\t\t// @ts-ignore todo: improve typings\n\t\t\tprogram.group = outros;\n\t\t\toutros.r += 1;\n\t\t}\n\n\t\tif ('inert' in node) {\n\t\t\tif (b) {\n\t\t\t\tif (original_inert_value !== undefined) {\n\t\t\t\t\t// aborted/reversed outro — restore previous inert value\n\t\t\t\t\tnode.inert = original_inert_value;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\t\tnode.inert = true;\n\t\t\t}\n\t\t}\n\n\t\tif (running_program || pending_program) {\n\t\t\tpending_program = program;\n\t\t} else {\n\t\t\t// if this is an intro, and there's a delay, we need to do\n\t\t\t// an initial tick and/or apply CSS animation immediately\n\t\t\tif (css) {\n\t\t\t\tclear_animation();\n\t\t\t\tanimation_name = create_rule(node, t, b, duration, delay, easing, css);\n\t\t\t}\n\t\t\tif (b) tick(0, 1);\n\t\t\trunning_program = init(program, duration);\n\t\t\tadd_render_callback(() => dispatch(node, b, 'start'));\n\t\t\tloop((now) => {\n\t\t\t\tif (pending_program && now > pending_program.start) {\n\t\t\t\t\trunning_program = init(pending_program, duration);\n\t\t\t\t\tpending_program = null;\n\t\t\t\t\tdispatch(node, running_program.b, 'start');\n\t\t\t\t\tif (css) {\n\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\tanimation_name = create_rule(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tt,\n\t\t\t\t\t\t\trunning_program.b,\n\t\t\t\t\t\t\trunning_program.duration,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\teasing,\n\t\t\t\t\t\t\tconfig.css\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (running_program) {\n\t\t\t\t\tif (now >= running_program.end) {\n\t\t\t\t\t\ttick((t = running_program.b), 1 - t);\n\t\t\t\t\t\tdispatch(node, running_program.b, 'end');\n\t\t\t\t\t\tif (!pending_program) {\n\t\t\t\t\t\t\t// we're done\n\t\t\t\t\t\t\tif (running_program.b) {\n\t\t\t\t\t\t\t\t// intro — we can tidy up immediately\n\t\t\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// outro — needs to be coordinated\n\t\t\t\t\t\t\t\tif (!--running_program.group.r) run_all(running_program.group.c);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trunning_program = null;\n\t\t\t\t\t} else if (now >= running_program.start) {\n\t\t\t\t\t\tconst p = now - running_program.start;\n\t\t\t\t\t\tt = running_program.a + running_program.d * easing(p / running_program.duration);\n\t\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!(running_program || pending_program);\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\trun(b) {\n\t\t\tif (is_function(config)) {\n\t\t\t\twait().then(() => {\n\t\t\t\t\tconst opts = { direction: b ? 'in' : 'out' };\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconfig = config(opts);\n\t\t\t\t\tgo(b);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tgo(b);\n\t\t\t}\n\t\t},\n\t\tend() {\n\t\t\tclear_animation();\n\t\t\trunning_program = pending_program = null;\n\t\t}\n\t};\n}\n\n/** @typedef {1} INTRO */\n/** @typedef {0} OUTRO */\n/** @typedef {{ direction: 'in' | 'out' | 'both' }} TransitionOptions */\n/** @typedef {(node: Element, params: any, options: TransitionOptions) => import('../transition/public.js').TransitionConfig} TransitionFn */\n\n/**\n * @typedef {Object} Outro\n * @property {number} r\n * @property {Function[]} c\n * @property {Object} p\n */\n\n/**\n * @typedef {Object} PendingProgram\n * @property {number} start\n * @property {INTRO|OUTRO} b\n * @property {Outro} [group]\n */\n\n/**\n * @typedef {Object} Program\n * @property {number} a\n * @property {INTRO|OUTRO} b\n * @property {1|-1} d\n * @property {number} duration\n * @property {number} start\n * @property {number} end\n * @property {Outro} [group]\n */\n","import { transition_in, transition_out } from './transitions.js';\nimport { run_all } from './utils.js';\n\n// general each functions:\n\nexport function ensure_array_like(array_like_or_iterator) {\n\treturn array_like_or_iterator?.length !== undefined\n\t\t? array_like_or_iterator\n\t\t: Array.from(array_like_or_iterator);\n}\n\n// keyed each functions:\n\n/** @returns {void} */\nexport function destroy_block(block, lookup) {\n\tblock.d(1);\n\tlookup.delete(block.key);\n}\n\n/** @returns {void} */\nexport function outro_and_destroy_block(block, lookup) {\n\ttransition_out(block, 1, 1, () => {\n\t\tlookup.delete(block.key);\n\t});\n}\n\n/** @returns {void} */\nexport function fix_and_destroy_block(block, lookup) {\n\tblock.f();\n\tdestroy_block(block, lookup);\n}\n\n/** @returns {void} */\nexport function fix_and_outro_and_destroy_block(block, lookup) {\n\tblock.f();\n\toutro_and_destroy_block(block, lookup);\n}\n\n/** @returns {any[]} */\nexport function update_keyed_each(\n\told_blocks,\n\tdirty,\n\tget_key,\n\tdynamic,\n\tctx,\n\tlist,\n\tlookup,\n\tnode,\n\tdestroy,\n\tcreate_each_block,\n\tnext,\n\tget_context\n) {\n\tlet o = old_blocks.length;\n\tlet n = list.length;\n\tlet i = o;\n\tconst old_indexes = {};\n\twhile (i--) old_indexes[old_blocks[i].key] = i;\n\tconst new_blocks = [];\n\tconst new_lookup = new Map();\n\tconst deltas = new Map();\n\tconst updates = [];\n\ti = n;\n\twhile (i--) {\n\t\tconst child_ctx = get_context(ctx, list, i);\n\t\tconst key = get_key(child_ctx);\n\t\tlet block = lookup.get(key);\n\t\tif (!block) {\n\t\t\tblock = create_each_block(key, child_ctx);\n\t\t\tblock.c();\n\t\t} else if (dynamic) {\n\t\t\t// defer updates until all the DOM shuffling is done\n\t\t\tupdates.push(() => block.p(child_ctx, dirty));\n\t\t}\n\t\tnew_lookup.set(key, (new_blocks[i] = block));\n\t\tif (key in old_indexes) deltas.set(key, Math.abs(i - old_indexes[key]));\n\t}\n\tconst will_move = new Set();\n\tconst did_move = new Set();\n\t/** @returns {void} */\n\tfunction insert(block) {\n\t\ttransition_in(block, 1);\n\t\tblock.m(node, next);\n\t\tlookup.set(block.key, block);\n\t\tnext = block.first;\n\t\tn--;\n\t}\n\twhile (o && n) {\n\t\tconst new_block = new_blocks[n - 1];\n\t\tconst old_block = old_blocks[o - 1];\n\t\tconst new_key = new_block.key;\n\t\tconst old_key = old_block.key;\n\t\tif (new_block === old_block) {\n\t\t\t// do nothing\n\t\t\tnext = new_block.first;\n\t\t\to--;\n\t\t\tn--;\n\t\t} else if (!new_lookup.has(old_key)) {\n\t\t\t// remove old block\n\t\t\tdestroy(old_block, lookup);\n\t\t\to--;\n\t\t} else if (!lookup.has(new_key) || will_move.has(new_key)) {\n\t\t\tinsert(new_block);\n\t\t} else if (did_move.has(old_key)) {\n\t\t\to--;\n\t\t} else if (deltas.get(new_key) > deltas.get(old_key)) {\n\t\t\tdid_move.add(new_key);\n\t\t\tinsert(new_block);\n\t\t} else {\n\t\t\twill_move.add(old_key);\n\t\t\to--;\n\t\t}\n\t}\n\twhile (o--) {\n\t\tconst old_block = old_blocks[o];\n\t\tif (!new_lookup.has(old_block.key)) destroy(old_block, lookup);\n\t}\n\twhile (n) insert(new_blocks[n - 1]);\n\trun_all(updates);\n\treturn new_blocks;\n}\n\n/** @returns {void} */\nexport function validate_each_keys(ctx, list, get_context, get_key) {\n\tconst keys = new Map();\n\tfor (let i = 0; i < list.length; i++) {\n\t\tconst key = get_key(get_context(ctx, list, i));\n\t\tif (keys.has(key)) {\n\t\t\tlet value = '';\n\t\t\ttry {\n\t\t\t\tvalue = `with value '${String(key)}' `;\n\t\t\t} catch (e) {\n\t\t\t\t// can't stringify\n\t\t\t}\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot have duplicate keys in a keyed each: Keys at index ${keys.get(\n\t\t\t\t\tkey\n\t\t\t\t)} and ${i} ${value}are duplicates`\n\t\t\t);\n\t\t}\n\t\tkeys.set(key, i);\n\t}\n}\n","import {\n\tadd_render_callback,\n\tflush,\n\tflush_render_callbacks,\n\tschedule_update,\n\tdirty_components\n} from './scheduler.js';\nimport { current_component, set_current_component } from './lifecycle.js';\nimport { blank_object, is_empty, is_function, run, run_all, noop } from './utils.js';\nimport {\n\tchildren,\n\tdetach,\n\tstart_hydrating,\n\tend_hydrating,\n\tget_custom_elements_slots,\n\tinsert,\n\telement,\n\tattr\n} from './dom.js';\nimport { transition_in } from './transitions.js';\n\n/** @returns {void} */\nexport function bind(component, name, callback) {\n\tconst index = component.$$.props[name];\n\tif (index !== undefined) {\n\t\tcomponent.$$.bound[index] = callback;\n\t\tcallback(component.$$.ctx[index]);\n\t}\n}\n\n/** @returns {void} */\nexport function create_component(block) {\n\tblock && block.c();\n}\n\n/** @returns {void} */\nexport function claim_component(block, parent_nodes) {\n\tblock && block.l(parent_nodes);\n}\n\n/** @returns {void} */\nexport function mount_component(component, target, anchor) {\n\tconst { fragment, after_update } = component.$$;\n\tfragment && fragment.m(target, anchor);\n\t// onMount happens before the initial afterUpdate\n\tadd_render_callback(() => {\n\t\tconst new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n\t\t// if the component was destroyed immediately\n\t\t// it will update the `$$.on_destroy` reference to `null`.\n\t\t// the destructured on_destroy may still reference to the old array\n\t\tif (component.$$.on_destroy) {\n\t\t\tcomponent.$$.on_destroy.push(...new_on_destroy);\n\t\t} else {\n\t\t\t// Edge case - component was destroyed immediately,\n\t\t\t// most likely as a result of a binding initialising\n\t\t\trun_all(new_on_destroy);\n\t\t}\n\t\tcomponent.$$.on_mount = [];\n\t});\n\tafter_update.forEach(add_render_callback);\n}\n\n/** @returns {void} */\nexport function destroy_component(component, detaching) {\n\tconst $$ = component.$$;\n\tif ($$.fragment !== null) {\n\t\tflush_render_callbacks($$.after_update);\n\t\trun_all($$.on_destroy);\n\t\t$$.fragment && $$.fragment.d(detaching);\n\t\t// TODO null out other refs, including component.$$ (but need to\n\t\t// preserve final state?)\n\t\t$$.on_destroy = $$.fragment = null;\n\t\t$$.ctx = [];\n\t}\n}\n\n/** @returns {void} */\nfunction make_dirty(component, i) {\n\tif (component.$$.dirty[0] === -1) {\n\t\tdirty_components.push(component);\n\t\tschedule_update();\n\t\tcomponent.$$.dirty.fill(0);\n\t}\n\tcomponent.$$.dirty[(i / 31) | 0] |= 1 << i % 31;\n}\n\n// TODO: Document the other params\n/**\n * @param {SvelteComponent} component\n * @param {import('./public.js').ComponentConstructorOptions} options\n *\n * @param {import('./utils.js')['not_equal']} not_equal Used to compare props and state values.\n * @param {(target: Element | ShadowRoot) => void} [append_styles] Function that appends styles to the DOM when the component is first initialised.\n * This will be the `add_css` function from the compiled component.\n *\n * @returns {void}\n */\nexport function init(\n\tcomponent,\n\toptions,\n\tinstance,\n\tcreate_fragment,\n\tnot_equal,\n\tprops,\n\tappend_styles = null,\n\tdirty = [-1]\n) {\n\tconst parent_component = current_component;\n\tset_current_component(component);\n\t/** @type {import('./private.js').T$$} */\n\tconst $$ = (component.$$ = {\n\t\tfragment: null,\n\t\tctx: [],\n\t\t// state\n\t\tprops,\n\t\tupdate: noop,\n\t\tnot_equal,\n\t\tbound: blank_object(),\n\t\t// lifecycle\n\t\ton_mount: [],\n\t\ton_destroy: [],\n\t\ton_disconnect: [],\n\t\tbefore_update: [],\n\t\tafter_update: [],\n\t\tcontext: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n\t\t// everything else\n\t\tcallbacks: blank_object(),\n\t\tdirty,\n\t\tskip_bound: false,\n\t\troot: options.target || parent_component.$$.root\n\t});\n\tappend_styles && append_styles($$.root);\n\tlet ready = false;\n\t$$.ctx = instance\n\t\t? instance(component, options.props || {}, (i, ret, ...rest) => {\n\t\t\t\tconst value = rest.length ? rest[0] : ret;\n\t\t\t\tif ($$.ctx && not_equal($$.ctx[i], ($$.ctx[i] = value))) {\n\t\t\t\t\tif (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);\n\t\t\t\t\tif (ready) make_dirty(component, i);\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t })\n\t\t: [];\n\t$$.update();\n\tready = true;\n\trun_all($$.before_update);\n\t// `false` as a special case of no DOM component\n\t$$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n\tif (options.target) {\n\t\tif (options.hydrate) {\n\t\t\tstart_hydrating();\n\t\t\t// TODO: what is the correct type here?\n\t\t\t// @ts-expect-error\n\t\t\tconst nodes = children(options.target);\n\t\t\t$$.fragment && $$.fragment.l(nodes);\n\t\t\tnodes.forEach(detach);\n\t\t} else {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t$$.fragment && $$.fragment.c();\n\t\t}\n\t\tif (options.intro) transition_in(component.$$.fragment);\n\t\tmount_component(component, options.target, options.anchor);\n\t\tend_hydrating();\n\t\tflush();\n\t}\n\tset_current_component(parent_component);\n}\n\nexport let SvelteElement;\n\nif (typeof HTMLElement === 'function') {\n\tSvelteElement = class extends HTMLElement {\n\t\t/** The Svelte component constructor */\n\t\t$$ctor;\n\t\t/** Slots */\n\t\t$$s;\n\t\t/** The Svelte component instance */\n\t\t$$c;\n\t\t/** Whether or not the custom element is connected */\n\t\t$$cn = false;\n\t\t/** Component props data */\n\t\t$$d = {};\n\t\t/** `true` if currently in the process of reflecting component props back to attributes */\n\t\t$$r = false;\n\t\t/** @type {Record<string, CustomElementPropDefinition>} Props definition (name, reflected, type etc) */\n\t\t$$p_d = {};\n\t\t/** @type {Record<string, Function[]>} Event listeners */\n\t\t$$l = {};\n\t\t/** @type {Map<Function, Function>} Event listener unsubscribe functions */\n\t\t$$l_u = new Map();\n\n\t\tconstructor($$componentCtor, $$slots, use_shadow_dom) {\n\t\t\tsuper();\n\t\t\tthis.$$ctor = $$componentCtor;\n\t\t\tthis.$$s = $$slots;\n\t\t\tif (use_shadow_dom) {\n\t\t\t\tthis.attachShadow({ mode: 'open' });\n\t\t\t}\n\t\t}\n\n\t\taddEventListener(type, listener, options) {\n\t\t\t// We can't determine upfront if the event is a custom event or not, so we have to\n\t\t\t// listen to both. If someone uses a custom event with the same name as a regular\n\t\t\t// browser event, this fires twice - we can't avoid that.\n\t\t\tthis.$$l[type] = this.$$l[type] || [];\n\t\t\tthis.$$l[type].push(listener);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t}\n\t\t\tsuper.addEventListener(type, listener, options);\n\t\t}\n\n\t\tremoveEventListener(type, listener, options) {\n\t\t\tsuper.removeEventListener(type, listener, options);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$l_u.get(listener);\n\t\t\t\tif (unsub) {\n\t\t\t\t\tunsub();\n\t\t\t\t\tthis.$$l_u.delete(listener);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tasync connectedCallback() {\n\t\t\tthis.$$cn = true;\n\t\t\tif (!this.$$c) {\n\t\t\t\t// We wait one tick to let possible child slot elements be created/mounted\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (!this.$$cn || this.$$c) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfunction create_slot(name) {\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tlet node;\n\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\tc: function create() {\n\t\t\t\t\t\t\t\tnode = element('slot');\n\t\t\t\t\t\t\t\tif (name !== 'default') {\n\t\t\t\t\t\t\t\t\tattr(node, 'name', name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * @param {HTMLElement} target\n\t\t\t\t\t\t\t * @param {HTMLElement} [anchor]\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tm: function mount(target, anchor) {\n\t\t\t\t\t\t\t\tinsert(target, node, anchor);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\td: function destroy(detaching) {\n\t\t\t\t\t\t\t\tif (detaching) {\n\t\t\t\t\t\t\t\t\tdetach(node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst $$slots = {};\n\t\t\t\tconst existing_slots = get_custom_elements_slots(this);\n\t\t\t\tfor (const name of this.$$s) {\n\t\t\t\t\tif (name in existing_slots) {\n\t\t\t\t\t\t$$slots[name] = [create_slot(name)];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const attribute of this.attributes) {\n\t\t\t\t\t// this.$$data takes precedence over this.attributes\n\t\t\t\t\tconst name = this.$$g_p(attribute.name);\n\t\t\t\t\tif (!(name in this.$$d)) {\n\t\t\t\t\t\tthis.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, 'toProp');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Port over props that were set programmatically before ce was initialized\n\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\tif (!(key in this.$$d) && this[key] !== undefined) {\n\t\t\t\t\t\tthis.$$d[key] = this[key]; // don't transform, these were set through JavaScript\n\t\t\t\t\t\tdelete this[key]; // remove the property that shadows the getter/setter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$c = new this.$$ctor({\n\t\t\t\t\ttarget: this.shadowRoot || this,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...this.$$d,\n\t\t\t\t\t\t$$slots,\n\t\t\t\t\t\t$$scope: {\n\t\t\t\t\t\t\tctx: []\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Reflect component props as attributes\n\t\t\t\tconst reflect_attributes = () => {\n\t\t\t\t\tthis.$$r = true;\n\t\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\t\tthis.$$d[key] = this.$$c.$$.ctx[this.$$c.$$.props[key]];\n\t\t\t\t\t\tif (this.$$p_d[key].reflect) {\n\t\t\t\t\t\t\tconst attribute_value = get_custom_element_value(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tthis.$$d[key],\n\t\t\t\t\t\t\t\tthis.$$p_d,\n\t\t\t\t\t\t\t\t'toAttribute'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (attribute_value == null) {\n\t\t\t\t\t\t\t\tthis.removeAttribute(this.$$p_d[key].attribute || key);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setAttribute(this.$$p_d[key].attribute || key, attribute_value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.$$r = false;\n\t\t\t\t};\n\t\t\t\tthis.$$c.$$.after_update.push(reflect_attributes);\n\t\t\t\treflect_attributes(); // once initially because after_update is added too late for first render\n\n\t\t\t\tfor (const type in this.$$l) {\n\t\t\t\t\tfor (const listener of this.$$l[type]) {\n\t\t\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$l = {};\n\t\t\t}\n\t\t}\n\n\t\t// We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte\n\t\t// and setting attributes through setAttribute etc, this is helpful\n\t\tattributeChangedCallback(attr, _oldValue, newValue) {\n\t\t\tif (this.$$r) return;\n\t\t\tattr = this.$$g_p(attr);\n\t\t\tthis.$$d[attr] = get_custom_element_value(attr, newValue, this.$$p_d, 'toProp');\n\t\t\tthis.$$c?.$set({ [attr]: this.$$d[attr] });\n\t\t}\n\n\t\tdisconnectedCallback() {\n\t\t\tthis.$$cn = false;\n\t\t\t// In a microtask, because this could be a move within the DOM\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\tif (!this.$$cn) {\n\t\t\t\t\tthis.$$c.$destroy();\n\t\t\t\t\tthis.$$c = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t$$g_p(attribute_name) {\n\t\t\treturn (\n\t\t\t\tObject.keys(this.$$p_d).find(\n\t\t\t\t\t(key) =>\n\t\t\t\t\t\tthis.$$p_d[key].attribute === attribute_name ||\n\t\t\t\t\t\t(!this.$$p_d[key].attribute && key.toLowerCase() === attribute_name)\n\t\t\t\t) || attribute_name\n\t\t\t);\n\t\t}\n\t};\n}\n\n/**\n * @param {string} prop\n * @param {any} value\n * @param {Record<string, CustomElementPropDefinition>} props_definition\n * @param {'toAttribute' | 'toProp'} [transform]\n */\nfunction get_custom_element_value(prop, value, props_definition, transform) {\n\tconst type = props_definition[prop]?.type;\n\tvalue = type === 'Boolean' && typeof value !== 'boolean' ? value != null : value;\n\tif (!transform || !props_definition[prop]) {\n\t\treturn value;\n\t} else if (transform === 'toAttribute') {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value == null ? null : JSON.stringify(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value ? '' : null;\n\t\t\tcase 'Number':\n\t\t\t\treturn value == null ? null : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t} else {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value && JSON.parse(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value; // conversion already handled above\n\t\t\tcase 'Number':\n\t\t\t\treturn value != null ? +value : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t}\n}\n\n/**\n * @internal\n *\n * Turn a Svelte component into a custom element.\n * @param {import('./public.js').ComponentType} Component A Svelte component constructor\n * @param {Record<string, CustomElementPropDefinition>} props_definition The props to observe\n * @param {string[]} slots The slots to create\n * @param {string[]} accessors Other accessors besides the ones for props the component has\n * @param {boolean} use_shadow_dom Whether to use shadow DOM\n * @param {(ce: new () => HTMLElement) => new () => HTMLElement} [extend]\n */\nexport function create_custom_element(\n\tComponent,\n\tprops_definition,\n\tslots,\n\taccessors,\n\tuse_shadow_dom,\n\textend\n) {\n\tlet Class = class extends SvelteElement {\n\t\tconstructor() {\n\t\t\tsuper(Component, slots, use_shadow_dom);\n\t\t\tthis.$$p_d = props_definition;\n\t\t}\n\t\tstatic get observedAttributes() {\n\t\t\treturn Object.keys(props_definition).map((key) =>\n\t\t\t\t(props_definition[key].attribute || key).toLowerCase()\n\t\t\t);\n\t\t}\n\t};\n\tObject.keys(props_definition).forEach((prop) => {\n\t\tObject.defineProperty(Class.prototype, prop, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c && prop in this.$$c ? this.$$c[prop] : this.$$d[prop];\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tvalue = get_custom_element_value(prop, value, props_definition);\n\t\t\t\tthis.$$d[prop] = value;\n\t\t\t\tthis.$$c?.$set({ [prop]: value });\n\t\t\t}\n\t\t});\n\t});\n\taccessors.forEach((accessor) => {\n\t\tObject.defineProperty(Class.prototype, accessor, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c?.[accessor];\n\t\t\t}\n\t\t});\n\t});\n\tif (extend) {\n\t\t// @ts-expect-error - assigning here is fine\n\t\tClass = extend(Class);\n\t}\n\tComponent.element = /** @type {any} */ (Class);\n\treturn Class;\n}\n\n/**\n * Base class for Svelte components. Used when dev=false.\n *\n * @template {Record<string, any>} [Props=any]\n * @template {Record<string, any>} [Events=any]\n */\nexport class SvelteComponent {\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$ = undefined;\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$set = undefined;\n\n\t/** @returns {void} */\n\t$destroy() {\n\t\tdestroy_component(this, 1);\n\t\tthis.$destroy = noop;\n\t}\n\n\t/**\n\t * @template {Extract<keyof Events, string>} K\n\t * @param {K} type\n\t * @param {((e: Events[K]) => void) | null | undefined} callback\n\t * @returns {() => void}\n\t */\n\t$on(type, callback) {\n\t\tif (!is_function(callback)) {\n\t\t\treturn noop;\n\t\t}\n\t\tconst callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n\t\tcallbacks.push(callback);\n\t\treturn () => {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index !== -1) callbacks.splice(index, 1);\n\t\t};\n\t}\n\n\t/**\n\t * @param {Partial<Props>} props\n\t * @returns {void}\n\t */\n\t$set(props) {\n\t\tif (this.$$set && !is_empty(props)) {\n\t\t\tthis.$$.skip_bound = true;\n\t\t\tthis.$$set(props);\n\t\t\tthis.$$.skip_bound = false;\n\t\t}\n\t}\n}\n\n/**\n * @typedef {Object} CustomElementPropDefinition\n * @property {string} [attribute]\n * @property {boolean} [reflect]\n * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]\n */\n","// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n *\n * https://svelte.dev/docs/svelte-compiler#svelte-version\n * @type {string}\n */\nexport const VERSION = '4.2.11';\nexport const PUBLIC_VERSION = '4';\n","import { PUBLIC_VERSION } from '../../../shared/version.js';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte || (window.__svelte = { v: new Set() })).v.add(PUBLIC_VERSION);\n","type NumericSpacing =\n | \"0\"\n | \"1\"\n | \"2\"\n | \"3\"\n | \"4\"\n | \"5\"\n | \"6\"\n | \"7\"\n | \"8\"\n | \"9\"\n | \"10\";\n\ntype TShirtSpacing =\n | \"none\"\n | \"3xs\"\n | \"2xs\"\n | \"xs\"\n | \"s\"\n | \"m\"\n | \"l\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\";\n\nexport type Spacing = NumericSpacing | TShirtSpacing | null;\n\nconst conversions: Record<string, TShirtSpacing> = {\n \"0\": \"none\",\n \"1\": \"3xs\",\n \"2\": \"2xs\",\n \"3\": \"xs\",\n \"4\": \"s\",\n \"5\": \"m\",\n \"6\": \"l\",\n \"7\": \"xl\",\n \"8\": \"2xl\",\n \"9\": \"3xl\",\n \"10\": \"4xl\",\n \"none\": \"none\",\n \"3xs\": \"3xs\",\n \"2xs\": \"2xs\",\n \"xs\": \"xs\",\n \"s\": \"s\",\n \"m\": \"m\",\n \"l\": \"l\",\n \"xl\": \"xl\",\n \"2xl\": \"2xl\",\n \"3xl\": \"3xl\",\n \"4xl\": \"4xl\",\n};\n\n/**\n * Allow for 0-10 values to be used along side the existing Spacing values\n */\nfunction convertSpacing(size: Spacing): Spacing {\n if (!size) return \"none\";\n if (!Number.isInteger(+size)) {\n return size;\n }\n return conversions[size] || \"none\";\n}\n\n/**\n * import type { Spacing } from \"../../common/types\";\n * import { calculateMargin } from \"../../common/types\";\n *\n * export let mt: Spacing = null;\n * export let mr: Spacing = null;\n * export let mb: Spacing = null;\n * export let ml: Spacing = null;\n *\n * // add the following style attribute to the root element\n * style={calculateMargin(mt, mr, mb, ml)}\n */\nexport function calculateMargin(\n mt: Spacing,\n mr: Spacing,\n mb: Spacing,\n ml: Spacing,\n) {\n mt = convertSpacing(mt);\n mb = convertSpacing(mb);\n ml = convertSpacing(ml);\n mr = convertSpacing(mr);\n return [\n mt && mt !== \"none\" && `margin-top:var(--goa-space-${mt});` || \"\",\n mr && mr !== \"none\" && `margin-right:var(--goa-space-${mr});` || \"\",\n mb && mb !== \"none\" && `margin-bottom:var(--goa-space-${mb});` || \"\",\n ml && ml !== \"none\" && `margin-left:var(--goa-space-${ml});` || \"\",\n ].join(\" \");\n}\n\nexport function injectCss(\n el: HTMLElement,\n rootSelector: string,\n css: Record<string, string | number>,\n media?: string,\n) {\n if (!el) return;\n const style = document.createElement(\"style\");\n const _css = Object.entries(css)\n .map((entry) => `${entry[0]}: ${entry[1]};`)\n .join(\" \");\n if (media) {\n style.innerHTML = `@media (${media}) { ${rootSelector} {${_css}} }`;\n } else {\n style.innerHTML = `${rootSelector} {${_css}}`;\n }\n el.appendChild(style);\n}\n","export function toBoolean(value: string): boolean {\n // this is how false will need to be represented\n if (value === \"false\") {\n return false;\n }\n // for element props empty strings are also a true value\n // ex. <input type=\"text\" disabled /> /* is a disabled input */\n if (value === \"\") {\n return true;\n }\n return !!value;\n}\n\nexport function fromBoolean(value: boolean): string {\n return value ? \"true\" : \"false\";\n}\n\nexport function isValidDate(d: Date): boolean {\n return !isNaN(d.getDate());\n}\n\nexport function validateRequired(componentName: string, props: Record<string, unknown>) {\n Object.entries(props).forEach(prop => {\n if (!prop[1]) {\n console.warn(`${componentName}: ${prop[0]} is required`);\n }\n });\n}\n\n// To avoid console errors due to late binding, we need to use setTimeout before calling typeValidator\nexport function typeValidator(\n message: string,\n values: string[],\n required = false,\n): [string[], (value: string | null) => void] {\n const validator = (value: string | null): void => {\n if (!required && !value) {\n return;\n }\n if (required && !value) {\n console.error(`[${value}] is an invalid ${message.toLowerCase()}`);\n return;\n }\n if (!values.includes(value || \"\")) {\n console.error(`[${value}] is an invalid ${message.toLowerCase()}`);\n }\n };\n return [values, validator];\n}\n\nexport function getTimestamp(val?: Date) {\n const months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n const now = val || new Date();\n const hour24 = now.getHours();\n const min0 = now.getMinutes();\n\n const date = now.getDate();\n const month = months[now.getMonth()];\n const year = now.getFullYear();\n const hour = (hour24 === 0 && 12) || (hour24 > 12 && hour24 - 12) || hour24;\n const meridium = (hour24 === 0 && \"AM\") || (hour24 >= 12 && \"PM\") || \"AM\";\n const min = (min0 < 10 && `0${min0}`) || min0;\n const ordinal =\n (date % 10 === 1 && date !== 11 && \"st\") ||\n (date % 10 === 2 && date !== 12 && \"nd\") ||\n (date % 10 === 3 && date !== 13 && \"rd\") ||\n \"th\";\n\n return `${month} ${date}${ordinal} ${year}, ${hour}:${min} ${meridium}`;\n}\n\nexport function cssVar(name: string, value: string | number): string {\n return value ? `${name}: ${value};` : \"\";\n}\n\nexport function pluralize(word: string, count: number) {\n if (count === 1) return word;\n return `${word}s`;\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return value > max\n ? max\n : value < min\n ? min\n : value\n}\n","<svelte:options customElement=\"goa-accordion\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { calculateMargin } from \"../../common/styling\";\n import {\n typeValidator,\n toBoolean,\n validateRequired,\n } from \"../../common/utils\";\n import type { Spacing } from \"../../common/styling\";\n\n // Validator\n const [HeadingSizes, validateHeadingSize] = typeValidator(\n \"Accordion heading size\",\n [\"small\", \"medium\"],\n );\n\n // Types\n type HeadingSize = (typeof HeadingSizes)[number];\n\n export let open: string = \"false\";\n export let heading: string = \"\";\n export let secondarytext: string = \"\";\n export let headingsize: HeadingSize = \"small\";\n export let testid: string = \"\";\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = \"xs\";\n export let ml: Spacing = null;\n\n // Private\n\n let _hovering: boolean = false;\n let _titleEl: HTMLElement;\n let _headingContentSlotChildren: Element[] = [];\n\n // Reactive\n\n $: isOpen = toBoolean(open);\n\n // Functions\n\n onMount(() => {\n validateRequired(\"GoAAccordion\", { heading });\n validateHeadingSize(headingsize);\n _headingContentSlotChildren = getChildren();\n });\n\n function getChildren(): Element[] {\n if (_titleEl) {\n const slot = _titleEl.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n return slot.assignedElements();\n } else {\n // @ts-expect-error\n return [..._titleEl.children] as Element[]; // unit tests\n }\n }\n return [];\n }\n</script>\n\n<!-- HTML -->\n<div\n style={calculateMargin(mt, mr, mb, ml)}\n class=\"goa-accordion\"\n data-testid={testid}\n>\n <details open={isOpen}>\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <summary\n class={`container-${headingsize}`}\n on:mouseover={() => (_hovering = true)}\n on:mouseout={() => (_hovering = false)}\n on:focus={() => (_hovering = false)}\n on:blur={() => (_hovering = false)}\n >\n <goa-icon\n type=\"chevron-forward\"\n fillcolor={_hovering\n ? \"var(--goa-color-interactive-hover)\"\n : \"var(--goa-color-interactive-default)\"}\n ></goa-icon>\n <div class=\"title\" bind:this={_titleEl}>\n <span\n class=\"heading heading-{headingsize}\"\n data-testid={`${testid}-heading`}>{heading}</span\n >\n <span class=\"secondary-text\">{secondarytext}</span>\n <div\n class=\"heading-content\"\n class:heading-content-top={_headingContentSlotChildren.length}\n >\n <slot name=\"headingcontent\" />\n </div>\n </div>\n </summary>\n <div class=\"content\">\n <slot />\n </div>\n </details>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n font-size: var(--goa-font-size-4);\n }\n\n .goa-accordion,\n .goa-accordion * {\n box-sizing: border-box;\n }\n\n .goa-accordion {\n container: self / inline-size;\n }\n\n summary {\n min-height: 3.5rem;\n border-width: var(--goa-border-width-s);\n border-style: solid;\n border-radius: var(--goa-border-radius-m);\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-200);\n color: var(--goa-color-text-default);\n cursor: pointer;\n list-style: none;\n display: flex;\n align-items: center;\n\n /* safari hack (see below) */\n position: relative;\n }\n\n summary:hover {\n background-color: var(--goa-color-greyscale-200);\n }\n summary:focus,\n summary:active {\n background-color: var(--goa-color-greyscale-100);\n outline: none;\n }\n\n /* Hack to make outline radius work on Safari */\n summary:active::before,\n summary:focus::before {\n content: \"\";\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n left: -1px;\n border: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n border-radius: 4px;\n }\n\n summary::marker, /* Latest Chrome, Edge, Firefox */\n summary::-webkit-details-marker /* Safari */ {\n display: none;\n }\n\n summary goa-icon {\n padding: 0.125rem 1rem;\n }\n\n .title {\n display: flex;\n flex: 1;\n }\n\n .title span {\n padding-bottom: var(--goa-space-3xs, 0);\n }\n\n .heading {\n font: var(--goa-typography-heading-s);\n padding-right: 1rem;\n }\n\n .secondary-text {\n font: var(--goa-typography-body-s);\n line-height: 1.5rem;\n padding-right: 1rem;\n }\n\n .heading-content {\n flex: 1;\n }\n\n goa-icon {\n padding: 0.125rem 1rem;\n }\n\n .container-medium {\n min-height: 4rem;\n }\n\n .container-medium goa-icon {\n padding: 0.375rem 1rem;\n }\n\n .content {\n border-bottom: var(--goa-border-width-s) solid\n var(--goa-color-greyscale-200);\n border-left: var(--goa-border-width-s) solid var(--goa-color-greyscale-200);\n border-right: var(--goa-border-width-s) solid var(--goa-color-greyscale-200);\n border-bottom-left-radius: var(--goa-border-radius-m);\n border-bottom-right-radius: var(--goa-border-radius-m);\n }\n\n .content :global(::slotted(*:last-child)) {\n margin-bottom: 0 !important;\n }\n \n details[open] goa-icon {\n transform: rotate(90deg);\n }\n\n details[open] summary {\n border-bottom-left-radius: var(--goa-border-radius-none);\n border-bottom-right-radius: var(--goa-border-radius-none);\n }\n\n /* Sizes */\n .heading-medium {\n line-height: 2rem;\n font: var(--goa-typography-heading-m);\n }\n\n @container self (--mobile) {\n .content {\n padding: 1.5rem;\n }\n summary {\n padding-bottom: 1rem;\n align-items: flex-start;\n }\n .title {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n }\n\n @container self (--not-mobile) {\n .content {\n padding: 1.5rem 2rem 1.5rem 3.5rem;\n }\n .title {\n align-items: center;\n }\n }\n</style>\n","export const MOBILE_BP = 624;\nexport const TABLET_BP = 1024;\n","<!-- svelte-ignore missing-custom-element-compile-options -->\n<svelte:options customElement=\"goa-app-header\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { MOBILE_BP, TABLET_BP } from \"../../common/breakpoints\";\n\n // optional\n export let heading: string = \"\";\n export let url: string = \"\";\n export let testid: string = \"\";\n export let maxcontentwidth = \"\";\n export let fullmenubreakpoint: number = TABLET_BP; // minimum window width to show all menu links\n\n // Private\n\n const _mobileLogo =\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='32' height='32' viewBox='0 0 16 16'%3E%3Cdefs%3E%3Cstyle%3E.a%7Bfill:none;%7D.b%7Bfill:%2300aad2;%7D.c%7Bclip-path:url(%23a);%7D.d%7Bfill:%23fff;%7D%3C/style%3E%3CclipPath id='a'%3E%3Crect class='a' width='14' height='14' transform='translate(-0.345 -0.21)'/%3E%3C/clipPath%3E%3C/defs%3E%3Cg transform='translate(0 -0.135)'%3E%3Ccircle class='b' cx='8' cy='8' r='8' transform='translate(0 0.135)'/%3E%3Cg transform='translate(1.345 1.344)'%3E%3Cg class='c' transform='translate(0 0)'%3E%3Cpath class='d' d='M12.612,13.636a16.24,16.24,0,0,1-1.86-.822,13.436,13.436,0,0,0,1.6-.708,11.312,11.312,0,0,0,.264,1.53M16.032,7.3c-.266-.034-.128.091-.2.442a5.465,5.465,0,0,1-2.8,3.338,16.141,16.141,0,0,1,.249-4.84c.275-1,.6-.813.2-1.022-.427-.22-.887.071-1.258.813A27.247,27.247,0,0,1,7.4,13.522a2.141,2.141,0,0,1-2.918.461c-.206-.174-.282.095-.026.37a2.412,2.412,0,0,0,3.387-.082A32.715,32.715,0,0,0,12.219,7.51a23.541,23.541,0,0,0,.063,3.971,11.464,11.464,0,0,1-1.964.749c-.388.1-.628.26-.635.439-.007.2.253.363.63.541.67.318,2.633,1.246,3.117,1.527.414.24.616.053.739-.207.16-.338-.279-.533-.7-.661a13.175,13.175,0,0,1-.382-2.179,7.143,7.143,0,0,0,2.547-2.454,4.7,4.7,0,0,0,.4-1.133,2.125,2.125,0,0,0,.048-.742s-.007-.054-.048-.059' transform='translate(-3.51 -3.943)'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E\";\n const _desktopLogo =\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='149.351' height='42' viewBox='0 0 149.351 42'%3E%3Cdefs%3E%3Cstyle%3E.a%7Bfill:none;%7D.b%7Bclip-path:url(%23a);%7D.c%7Bfill:%2300aad2;%7D.d%7Bfill:%235f6a72;%7D%3C/style%3E%3CclipPath id='a'%3E%3Crect class='a' width='149.351' height='42'/%3E%3C/clipPath%3E%3C/defs%3E%3Cg class='b'%3E%3Crect class='c' width='13.555' height='13.555' transform='translate(135.796 21.524)'/%3E%3Cpath class='d' d='M63.082,33.088c-1.383.138-2.835.277-4.357.346.553-4.357,2.835-10.373,5.671-9.405,1.66.553.761,5.671-1.314,9.059m-3.527,2.974a3.761,3.761,0,0,1-1.245,0,.851.851,0,0,0,.346-.692v-.553c.761,0,1.936-.138,3.389-.277a4.327,4.327,0,0,1-2.49,1.521M76.844,25.688c1.8-1.66,2.7-1.521,2.9-1.106.484.968-1.591,4.357-5.671,6.224a10.328,10.328,0,0,1,2.766-5.118m66.736,1.66c-.207-3.389-3.181-3.942-3.6-2.974-.138.346,1.106.207,1.106,2.628,0,3.942-4.011,9.129-9.129,9.129-5.532,0-6.985-4.357-7.261-6.432-.207-1.452.138-3.458-2.351-3.181-1.729.207-3.25,3.527-5.463,6.362-1.867,2.42-2.7,2.213-2.282.138.553-2.628,2.7-8.714,5.187-9.129,1.176-.207,1.591,1.8,2.075.553s.069-4.011-2.559-4.011c-1.8,0-3.942,1.936-5.74,4.08-1.521,1.936-9.336,13.416-12.656,10.927-1.521-1.176-1.383-5.878-.415-11.411,3.873-1.521,7.123-1.037,8.921-.138.9.415,1.037.346.622-.622-.553-1.452-3.665-3.734-8.575-2.7-.138,0-.207.069-.346.069.415-1.8.83-3.665,1.383-5.463.484-1.66,1.8-4.5-1.729-4.979-1.106-.207-.622.346-1.037,1.867-.692,2.766-1.521,6.362-2.144,10.028a19.745,19.745,0,0,0-7.538,8.091,38.59,38.59,0,0,0,.9-4.772,1.589,1.589,0,0,0-1.245-1.729c-.761-.207-1.729.138-2.628,1.452-2.144,3.043-4.841,7.815-8.99,9.82-2.974,1.452-4.288,0-4.357-2.282a9.869,9.869,0,0,0,1.521-.553c5.394-2.351,7.192-5.947,5.878-8.16-1.314-2.075-4.979-1.452-7.953,1.66a11.175,11.175,0,0,0-2.7,6.5c-1.245.277-2.628.484-4.219.692,2.49-4.08,2.282-9.613-1.383-10.581-4.288-1.106-6.432,3.043-7.331,6.5.346-3.873.9-7.745,1.591-11.549.346-1.66,1.452-4.5-2.075-4.979-1.106-.207-.968.346-.9,1.867.138,2.075-2.144,14.454-.968,19.848-1.521.484-2.144,1.66-.207,2.835,1.383.83,4.357,1.106,7.331-.346a9.3,9.3,0,0,0,2.766-2.144c1.8-.207,3.665-.553,5.394-.83.277,2.42,1.867,4.219,5.463,3.873,5.118-.484,9.682-6.777,11.411-9.82-.346,3.25-2.42,10.373,1.176,10.028,1.383-.138.83-.346.9-1.591.346-4.288,3.873-7.953,7.4-10.166-.622,5.256-.415,9.958,2.006,11.411,4.426,2.766,10.581-4.5,14.039-8.921-1.729,3.942-2.7,8.921-.138,9.682,3.043.9,5.463-4.219,8.3-8.091.346,2.766,2.213,7.607,9.682,7.607,8.022-.069,13.071-4.91,12.863-10.1m-108.3,8.645A66.439,66.439,0,0,1,27.4,32.534a59.168,59.168,0,0,0,6.777-2.974,54.453,54.453,0,0,0,1.106,6.432m20.4,3.873c-.069-.207-.622.069-1.106,0-1.452-.207-3.389-2.213-3.942-5.463-1.037-5.878-.415-11.687,1.314-20.332.346-1.66,1.452-4.5-2.075-5.048-1.106-.138-.553.415-.83,1.867C47.66,17.32,42.4,21.954,37.149,25.066,36.6,17.735,36.8,9.505,38.186,4.526c1.176-4.219,2.559-3.458.83-4.357s-3.734.277-5.325,3.458S24.839,23.89,13.221,35.439C7.273,41.317,1.879,38.274.842,37.375c-.9-.761-1.176.415-.138,1.591,4.772,5.256,11.826,2.282,14.384-.277,7.054-7.054,15.283-22.268,18.6-28.7a98.251,98.251,0,0,0,.277,16.874,50.129,50.129,0,0,1-8.3,3.181c-1.66.415-2.7,1.106-2.7,1.867s1.106,1.521,2.7,2.282c2.835,1.383,11.2,5.256,13.209,6.5,1.729,1.037,2.628.207,3.112-.9.692-1.452-1.176-2.282-2.974-2.766a60.545,60.545,0,0,1-1.66-9.267c4.219-2.628,8.437-6.086,10.788-10.443C47.522,20.916,46,33.3,49.873,38.482a5.451,5.451,0,0,0,4.564,2.213c.968-.069,1.383-.692,1.245-.83' transform='translate(-0.038 0.124)'/%3E%3C/g%3E%3C/svg%3E\";\n\n let _slotParentEl: HTMLElement;\n let _windowWidth = window.innerWidth;\n let _showToggleMenu = false;\n let _showMenu = false;\n\n // Reactive\n\n $: _mobile = _windowWidth < MOBILE_BP;\n $: _tablet = _windowWidth >= MOBILE_BP && _windowWidth < fullmenubreakpoint;\n $: _desktop = _windowWidth >= +fullmenubreakpoint;\n // @ts-expect-error\n $: (async () => (_showToggleMenu = _desktop ? false : await hasChildren()))();\n\n // Functions\n\n const toggleMenu = () => (_showMenu = !_showMenu);\n const hideMenu = () => (_showMenu = false);\n\n // Hooks\n\n onMount(() => {\n window.addEventListener(\"popstate\", onRouteChange, true);\n setCurrentLink();\n });\n\n onDestroy(() => {\n window.removeEventListener(\"popstate\", onRouteChange, true);\n });\n\n function onRouteChange() {\n setCurrentLink();\n hideMenu();\n }\n\n // Update component if the current browser url matches one of this element's child links\n function setCurrentLink() {\n if (!_slotParentEl) return;\n\n const slot = _slotParentEl.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot) return;\n\n const link = slot\n .assignedElements()\n .filter((el) => el.tagName === \"A\")\n .map((el) => {\n el.classList.remove(\"current\");\n return el;\n })\n .find((el) => {\n const href = (el as HTMLLinkElement).href;\n const url = `${window.location.pathname}${window.location.search}${window.location.hash}`;\n return href.endsWith(url);\n });\n if (link) {\n link.classList.add(\"current\");\n }\n }\n\n // *Menu* children count\n // When in mobile mode, while the children are not visible the children are rendered in a div[display: none]\n // element to allow for the children count to be obtained.\n async function hasChildren() {\n await tick();\n\n if (!_slotParentEl) return;\n\n const slot = _slotParentEl?.childNodes[0] as HTMLSlotElement;\n const children = slot.assignedElements?.();\n if (children) {\n return children.length > 0;\n } else {\n // testing\n // @ts-expect-error\n return [..._slotParentEl.querySelectorAll(\"a\")].length > 0;\n }\n }\n</script>\n\n<svelte:window bind:innerWidth={_windowWidth} />\n\n<!-- HTML -->\n<div\n class=\"container\"\n data-testid={testid}\n style={`--max-content-width: ${maxcontentwidth || \"100%\"}`}\n class:show-menu={_showMenu}\n class:mobile={_mobile}\n class:tablet={_tablet}\n class:desktop={_desktop}\n>\n <div class=\"layout\">\n <!-- Logo and optional heading link -->\n {#if url}\n <a href={url} class=\"header-logo-title-area\" data-testid=\"url\">\n <img alt=\"GoA Logo\" class=\"image-mobile\" src={_mobileLogo} />\n <img alt=\"GoA Logo\" class=\"image-desktop\" src={_desktopLogo} />\n {#if heading}\n <span data-testid=\"title\" class=\"title\">{heading}</span>\n {/if}\n </a>\n {:else}\n <div class=\"header-logo-title-area\">\n <img alt=\"GoA Logo\" class=\"image-mobile\" src={_mobileLogo} />\n <img alt=\"GoA Logo\" class=\"image-desktop\" src={_desktopLogo} />\n {#if heading}\n <span data-testid=\"title\" class=\"title\">{heading}</span>\n {/if}\n </div>\n {/if}\n\n <!-- Menu button for mobile -->\n {#if _showToggleMenu && _mobile}\n <button\n on:click={toggleMenu}\n class=\"menu-toggle-area\"\n data-testid=\"menu-toggle\"\n >\n Menu <goa-icon\n type={_showMenu ? \"chevron-up\" : \"chevron-down\"}\n mt=\"1\"\n />\n </button>\n {/if}\n\n <!-- Menu and menu button for tablet -->\n {#if _showToggleMenu && _tablet}\n <goa-popover\n class=\"menu\"\n open={_showMenu}\n context=\"app-header-menu\"\n focusborderwidth=\"0\"\n borderradius=\"0\"\n padded=\"false\"\n width=\"16rem\"\n tabindex=\"-1\"\n position=\"below\"\n on:_close={hideMenu}\n >\n <div slot=\"target\">\n <button\n on:click={toggleMenu}\n class=\"menu-toggle-area\"\n data-testid=\"menu-toggle\"\n >\n Menu <goa-icon\n type={_showMenu ? \"chevron-up\" : \"chevron-down\"}\n mt=\"1\"\n />\n </button>\n </div>\n\n {#if _showMenu}\n <div bind:this={_slotParentEl} data-testid=\"slot\">\n <slot />\n </div>\n {/if}\n </goa-popover>\n {/if}\n\n <!--\n Need to render slot content to allow mobile and tablet views to\n know whether or not to show the Menu button. `_slotContainer` provides\n a reference to determine if any slot children exist.\n -->\n {#if !_showMenu && (_mobile || _tablet)}\n <div bind:this={_slotParentEl} style=\"display: none\">\n <slot />\n </div>\n {/if}\n\n <!-- Mobile and desktop slot content -->\n {#if (_showMenu && _mobile) || _desktop}\n <div bind:this={_slotParentEl} data-testid=\"slot\" class=\"content-area\">\n <slot />\n </div>\n {/if}\n </div>\n</div>\n\n<!-- Style -->\n\n<style>\n *,\n :global(::slotted(*)) {\n font: var(--goa-typography-body-s);\n }\n\n /* =============== */\n /* Common */\n /* =============== */\n\n /* spans the full page width */\n .container {\n border-bottom: var(--goa-border-width-s) solid\n var(--goa-color-greyscale-200);\n background-color: var(--goa-color-greyscale-white);\n }\n\n .title {\n margin-left: var(--goa-space-s);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: var(--goa-color-text-default);\n }\n\n /* contains all children within component */\n .layout {\n width: 100%;\n display: grid;\n grid-template-columns: 1fr auto;\n grid-template-rows: 3.375rem auto;\n grid-template-areas:\n \"header menu\"\n \"links links\";\n }\n\n .header-logo-title-area {\n grid-area: header;\n\n display: flex;\n align-items: center;\n padding: 0 1rem;\n text-decoration: none;\n }\n .header-logo-title-area:focus {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n outline-offset: calc(-1 * var(--goa-border-width-l));\n }\n\n .menu-toggle-area {\n grid-area: menu;\n\n color: var(--goa-color-text-default);\n align-items: center;\n background: transparent;\n border: none;\n cursor: pointer;\n display: flex;\n gap: 0.25rem;\n justify-content: right;\n padding: 1rem;\n text-decoration: underline;\n }\n\n .menu-toggle-area goa-icon {\n scale: 0.8;\n }\n\n .menu-toggle-area:focus {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n outline-offset: calc(-1 * var(--goa-border-width-l));\n }\n goa-popover .menu-toggle-area:focus {\n outline-offset: 0;\n }\n\n .image-desktop {\n height: 2rem;\n }\n\n .content-area {\n grid-area: links;\n }\n\n :global(::slotted(a)) {\n display: block;\n margin: 0;\n font: var(--goa-typography-body-m);\n text-decoration: none;\n color: var(--goa-color-text-default);\n padding: calc((3rem - var(--goa-line-height-3)) / 2) 1rem;\n cursor: pointer;\n white-space: nowrap;\n }\n :global(::slotted(a:hover)) {\n background-color: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n }\n :global(::slotted(a:focus)) {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n outline-offset: calc(-1 * var(--goa-border-width-l));\n }\n :global(::slotted(a.interactive)) {\n text-decoration: underline;\n color: var(--goa-color-interactive-default);\n }\n\n .mobile :global(::slotted(a)) {\n box-shadow: inset 0 var(--goa-border-width-s) 0 0\n var(--goa-color-greyscale-200);\n }\n .mobile .image-desktop {\n display: none;\n }\n .mobile .image-mobile {\n display: block;\n }\n .mobile.show-menu {\n border-bottom: var(--goa-border-width-m) solid\n var(--goa-color-greyscale-200);\n }\n\n /* Tablet */\n .tablet *,\n .tablet:global(::slotted(*)) {\n font: var(--goa-typography-body-m);\n }\n .tablet :global(::slotted(a)) {\n box-shadow: inset 0 var(--goa-border-width-s) 0 0\n var(--goa-color-greyscale-200);\n }\n .tablet .image-desktop {\n display: block;\n }\n .tablet .image-mobile {\n display: none;\n }\n .tablet .header-logo-title-area {\n padding: 0 1.5rem;\n min-height: 4rem;\n }\n .tablet .layout {\n grid-template-rows: 4rem auto;\n }\n .tablet .title {\n margin-left: var(--goa-space-m);\n }\n\n /* Desktop */\n .desktop .content-area {\n grid-area: menu;\n display: flex;\n align-items: stretch;\n }\n .desktop .header-logo-title-area {\n grid-area: header;\n display: flex;\n align-items: center;\n grid-template-rows: 3.375rem auto;\n color: inherit;\n flex: 1 1 auto;\n min-height: 4rem;\n }\n .desktop .image-desktop {\n display: block;\n }\n .desktop .image-mobile {\n display: none;\n }\n .desktop .layout {\n display: grid;\n grid-template-columns: auto 1fr auto;\n grid-template-rows: auto;\n grid-template-areas: \"header . menu\";\n margin: 0 auto;\n width: min(var(--max-content-width), 100%);\n }\n .desktop :global(::slotted(goa-app-header-menu)),\n .desktop :global(::slotted(a)),\n .desktop :global(::slotted(a:visited)) {\n color: var(--goa-color-text-default);\n font-weight: var(--goa-font-weight-bold);\n grid-template-rows: 3.375rem auto;\n display: inline-flex;\n align-items: center;\n padding: 0 0.75rem;\n }\n .desktop :global(::slotted(goa-app-header-menu)) {\n padding: 0;\n }\n .desktop :global(::slotted(a:focus-within)),\n .desktop :global(::slotted(goa-app-header-menu:focus-within)),\n .desktop :global(::slotted(a:hover)),\n .desktop :global(::slotted(goa-app-header-menu:hover)) {\n background: var(--goa-color-greyscale-100);\n cursor: pointer;\n color: var(--goa-color-interactive-hover);\n }\n .desktop :global(::slotted(a:focus)),\n .desktop :global(::slotted(goa-app-header-menu:focus)) {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n outline-offset: calc(-1 * var(--goa-border-width-l));\n }\n .desktop :global(::slotted(a.current)) {\n border-top: 4px solid var(--goa-color-interactive-default);\n border-bottom: 4px solid transparent;\n }\n .desktop :global(::slotted(a.current:hover)) {\n border-top: 4px solid var(--goa-color-interactive-hover);\n }\n .desktop :global(::slotted(a.interactive)) {\n font-weight: var(--goa-font-weight-medium);\n text-decoration: underline;\n color: var(--goa-color-interactive-default);\n padding: 0 var(--goa-space-m);\n }\n .desktop :global(::slotted(a.interactive:hover)) {\n color: var(--goa-color-interactive-hover);\n }\n .desktop :global(::slotted(a.interactive.current)) {\n border-color: transparent;\n margin-left: var(--goa-space-m);\n }\n</style>\n","<svelte:options customElement=\"goa-app-header-menu\" />\n\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { validateRequired } from \"../../common/utils\";\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n import { TABLET_BP } from \"../../common/breakpoints\";\n\n // Required\n export let heading: string;\n\n // Optional\n export let leadingicon: GoAIconType;\n export let type: \"primary\" | \"secondary\" = \"primary\";\n\n // Private\n\n // media queries are not sufficient as they don't allow for the same slot\n // to be used in different query selectors\n let _innerWidth: number = window.innerWidth;\n // allows listening to popover events\n let _popoverEl: HTMLElement;\n // allow for finding of contained link elements within slot\n let _slotParentEl: HTMLElement;\n // internal state of when the window location matches with a link within this element's slot\n let _hasCurrentLink = false;\n // open state\n let _open = false;\n\n // Reactive\n $: _desktop = _innerWidth >= TABLET_BP;\n\n // call the method when window changes to desktop size\n $: _desktop && bindToPopoverCloseEvent();\n\n // Hooks\n\n onMount(async () => {\n await tick();\n validateRequired(\"GoaAppHeaderMenu\", { heading });\n\n setCurrentLink();\n window.addEventListener(\"popstate\", setCurrentLink, true);\n });\n\n\n onDestroy(() => {\n window.removeEventListener(\"popstate\", setCurrentLink, true);\n });\n\n // Functions\n\n function setCurrentLink() {\n _hasCurrentLink = hasCurrentLink();\n }\n\n // Determine if the current browser url matches one of this element's child links\n function hasCurrentLink(): boolean {\n if (!_slotParentEl) return false;\n\n const slot = _slotParentEl.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot) return false;\n\n const link = slot\n .assignedElements()\n .filter((el) => el.tagName === \"A\")\n .find((el) => {\n const href = (el as HTMLLinkElement).href;\n const url = `${window.location.pathname}${window.location.search}${window.location.hash}`;\n return href.endsWith(url);\n });\n return !!link;\n }\n\n // Ensures that the Popover _close event has a handler if the window\n // is resized after initial load\n async function bindToPopoverCloseEvent() {\n await tick();\n if (!_popoverEl) return;\n _popoverEl.removeEventListener(\"_close\", closeMenu);\n _popoverEl.removeEventListener(\"_open\", openMenu);\n\n _popoverEl.addEventListener(\"_close\", closeMenu);\n _popoverEl.addEventListener(\"_open\", openMenu);\n }\n\n async function openMenu() {\n _open = true;\n\n await tick();\n\n if (_slotParentEl) {\n _slotParentEl.addEventListener(\"click\", closeMenu);\n }\n }\n\n function closeMenu() {\n if (_slotParentEl) {\n _slotParentEl.removeEventListener(\"click\", closeMenu);\n }\n // timeout is required to allow any other events to fire before DOM is changed\n setTimeout(() => {\n _open = false;\n }, 1);\n }\n\n function toggleMenu() {\n _open ? closeMenu() : openMenu();\n }\n</script>\n\n<svelte:window bind:innerWidth={_innerWidth} />\n\n{#if _desktop}\n <goa-popover\n bind:this={_popoverEl}\n context=\"app-header-menu\"\n focusborderwidth=\"0\"\n borderradius=\"0\"\n padded=\"false\"\n tabindex=\"-1\"\n width=\"16rem\"\n position=\"below\"\n open=\"{_open}\"\n >\n <button\n slot=\"target\"\n style=\"padding: 0 0.75rem;\"\n class={type}\n class:current={_hasCurrentLink}\n >\n {#if leadingicon}\n <goa-icon type={leadingicon} mt=\"1\" />\n {/if}\n {heading}\n <goa-icon type={_open ? \"chevron-up\" : \"chevron-down\"} mt=\"1\" />\n </button>\n\n <div class=\"desktop\" bind:this={_slotParentEl}>\n <slot />\n </div>\n </goa-popover>\n{:else}\n <button class:open={_open} on:click={toggleMenu} class={type}>\n {#if leadingicon}\n <goa-icon type={leadingicon} mt=\"1\" />\n {/if}\n <span class=\"heading\">{heading}</span>\n <goa-spacer hspacing=\"fill\" />\n <goa-icon type={_open ? \"chevron-up\" : \"chevron-down\"} mt=\"1\" />\n </button>\n {#if _open}\n <div class=\"not-desktop\" bind:this={_slotParentEl}>\n <slot />\n </div>\n {/if}\n{/if}\n\n<style>\n * {\n font: var(--goa-typography-body-m);\n }\n\n /* ============= */\n /* Common */\n /* ============= */\n\n button {\n padding: 0;\n border: none;\n background: transparent;\n outline: none;\n color: var(--goa-color-text-default);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n button:active,\n button:hover,\n button:focus-within,\n [slot=\"target\"]:focus-within {\n background: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n }\n button.current {\n border-top: 4px solid var(--goa-color-interactive-default);\n border-bottom: 4px solid transparent;\n }\n button.current:hover {\n border-top: 4px solid var(--goa-color-interactive-hover);\n }\n\n button.open {\n border-bottom: 1px solid var(--goa-color-greyscale-200);\n }\n\n :global(::slotted(a)),\n :global(::slotted(a:visited)) {\n box-shadow: inset 0 1px 0 0 var(--goa-color-greyscale-200);\n color: var(--goa-color-text-default);\n display: block;\n padding: calc((3rem - var(--goa-line-height-3)) / 2) 1rem;\n text-decoration: none;\n }\n .not-desktop :global(::slotted(a)) {\n padding: calc((3rem - var(--goa-line-height-3)) / 2) 2.75rem;\n }\n :global(::slotted(a:first-child)) {\n box-shadow: none;\n }\n :global(::slotted(a:hover)) {\n background: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n }\n :global(::slotted(a:focus-visible)) {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n outline-offset: -3px;\n color: var(--goa-color-interactive-hover);\n }\n :global(::slotted(a.interactive)) {\n text-decoration: underline;\n color: var(--goa-color-interactive-default);\n }\n\n @media not (--desktop) {\n button {\n box-shadow: inset 0 1px 0 0 var(--goa-color-greyscale-200);\n height: 3rem;\n flex: 1 1 auto;\n padding: 0 1rem;\n width: 100%;\n }\n button:focus {\n outline: var(--goa-border-width-l) solid\n var(--goa-color-interactive-focus);\n outline-offset: -3px;\n }\n .heading {\n /* prevent the menu text from line breaking too early */\n flex: 0 0 auto;\n }\n }\n\n @media (--desktop) {\n button[slot=\"target\"] {\n font-weight: var(--goa-font-weight-bold);\n /* ensures that the button spans 100% of the height of the desktop app header bar */\n height: 4rem;\n white-space: nowrap;\n }\n button.secondary {\n font-weight: var(--goa-font-weight-regular);\n }\n }\n</style>\n","<svelte:options customElement=\"goa-badge\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { typeValidator, toBoolean } from \"../../common/utils\";\n\n // Validator\n const [Types, validateType] = typeValidator(\n \"Badge type\",\n [\n \"success\",\n \"important\",\n \"information\",\n \"emergency\",\n \"dark\",\n \"midtone\",\n \"light\",\n ],\n true,\n );\n\n //Type\n type BadgeType = (typeof Types)[number];\n\n export let type: BadgeType;\n\n // optional\n export let testid: string = \"\";\n export let content: string = \"\";\n export let icon: string = \"false\";\n export let arialabel: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // private\n $: showIcon = toBoolean(icon);\n $: showIconOnly = showIcon && !content;\n\n $: iconType = {\n success: \"checkmark-circle\",\n important: \"alert-circle\",\n information: \"information-circle\",\n emergency: \"warning\",\n dark: \"information-circle\",\n midtone: \"information-circle\",\n light: \"information-circle\",\n }[type];\n\n onMount(() => {\n setTimeout(() => validateType(type), 1);\n if (!showIcon && !content) {\n console.warn(\n \"GoABadge must have either then content or icon property set\",\n );\n }\n if (showIconOnly && !arialabel) {\n console.warn(\"GoABadge with icon only requires an arialabel\");\n }\n });\n</script>\n\n<!-- HTML -->\n<div\n style={calculateMargin(mt, mr, mb, ml)}\n data-testid={testid}\n data-type=\"goa-badge\"\n class=\"goa-badge badge-{type}\"\n class:icon-only={showIconOnly}\n>\n {#if showIcon}\n <goa-icon\n arialabel={showIconOnly && arialabel ? arialabel : null}\n role={showIconOnly && arialabel ? \"presentation\" : null}\n type={iconType}\n size=\"small\"\n />\n {:else}\n <div style=\"height: 1.2rem; margin-left:-0.25rem;\" />\n {/if}\n {#if content}\n <div class=\"goa-badge-content\">\n {content}\n </div>\n {/if}\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n .goa-badge {\n display: inline-flex;\n align-items: center;\n border-radius: 0.25rem;\n padding: 3px 0.5rem; /* is calc(3 / 16 * 1rem) better for scaling? */\n gap: 0.25rem;\n font-weight: var(--goa-font-weight-regular);\n }\n\n .icon-only {\n padding: 0.25rem;\n }\n\n .goa-badge-content {\n font-size: var(--goa-font-size-2);\n line-height: var(--goa-line-height-1);\n padding-bottom: var(\n --font-valign-fix,\n 0\n ); /* acumin font requires this to allow for vertical alignment */\n }\n\n .goa-badge.badge-information {\n background-color: var(--goa-color-greyscale-100);\n color: var(--goa-color-info-default);\n }\n\n .goa-badge.badge-success {\n background-color: var(--goa-color-success-default);\n color: var(--goa-color-text-light);\n }\n\n .goa-badge.badge-important {\n background-color: var(--goa-color-warning-default);\n color: var(--goa-color-text-default);\n }\n\n .goa-badge.badge-emergency {\n background-color: var(--goa-color-emergency-default);\n color: var(--goa-color-text-light);\n }\n\n .goa-badge.badge-dark {\n background-color: var(--goa-color-greyscale-black);\n color: var(--goa-color-text-light);\n }\n\n .goa-badge.badge-midtone {\n background-color: var(--goa-color-greyscale-700);\n color: var(--goa-color-text-light);\n }\n\n .goa-badge.badge-light {\n background-color: var(--goa-color-greyscale-white);\n color: var(--goa-color-text-default);\n }\n</style>\n","<svelte:options customElement=\"goa-block\" />\n\n<script lang=\"ts\">\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n\n export let gap: Spacing = \"m\";\n export let direction: \"row\" | \"column\" = \"row\";\n export let alignment: \"center\" | \"start\" | \"end\" = \"start\";\n\n $: _alignment =\n alignment === \"start\"\n ? \"flex-start\"\n : alignment === \"end\"\n ? \"flex-end\"\n : \"center\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n</script>\n\n<div\n class=\"block\"\n style={`\n ${calculateMargin(mt, mr, mb, ml)};\n --gap: var(--goa-space-${gap});\n --alignment: ${_alignment};\n --direction: ${direction};\n `}\n>\n <slot />\n</div>\n\n<style>\n .block {\n display: flex;\n flex-direction: var(--direction);\n align-items: var(--alignment);\n gap: var(--gap);\n }\n</style>\n","<svelte:options customElement=\"goa-button\" />\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { typeValidator, toBoolean } from \"../../common/utils\";\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n\n // Validators\n const [Types, validateType] = typeValidator(\n \"Button type\",\n [\"primary\", \"submit\", \"secondary\", \"tertiary\", \"start\"],\n true,\n );\n const [Sizes, validateSize] = typeValidator(\n \"Button size\",\n [\"normal\", \"compact\"],\n true,\n );\n const [Variants, validateVariant] = typeValidator(\n \"Button variant\",\n [\"normal\", \"destructive\"],\n true,\n );\n\n // Types\n type ButtonType = (typeof Types)[number];\n type Size = (typeof Sizes)[number];\n type Variant = (typeof Variants)[number];\n\n // optional\n export let type: ButtonType = \"primary\";\n export let size: Size = \"normal\";\n export let variant: Variant = \"normal\";\n export let disabled: string = \"false\";\n export let leadingicon: GoAIconType | null = null;\n export let trailingicon: GoAIconType | null = null;\n export let testid: string = \"\";\n\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n $: isDisabled = toBoolean(disabled);\n $: isButtonDark = type === \"primary\" || type === \"start\";\n\n function clickHandler(_e: Event) {\n // TODO: use e.target??\n if (!isDisabled) {\n // @ts-expect-error\n this.dispatchEvent(\n new CustomEvent(\"_click\", { composed: true, bubbles: true }),\n );\n }\n }\n\n onMount(() => {\n validateType(type);\n validateSize(size);\n validateVariant(variant);\n });\n</script>\n\n<button\n class=\"{type} {size} {variant}\"\n class:leading={leadingicon}\n class:trailing={trailingicon || type === \"start\"}\n style={calculateMargin(mt, mr, mb, ml)}\n on:click={clickHandler}\n disabled={isDisabled}\n on:click={clickHandler}\n data-testid={testid}\n type={type == \"submit\" ? type : \"button\"}\n>\n {#if type === \"start\"}\n <span class=\"text\">\n <slot />\n </span>\n <goa-icon id=\"trailing-icon\" type=\"arrow-forward\" inverted=\"true\" />\n {:else}\n {#if leadingicon}\n <goa-icon id=\"leading-icon\" type={leadingicon} inverted={isButtonDark} />\n {/if}\n <span class=\"text\">\n <slot />\n </span>\n {#if trailingicon}\n <goa-icon\n id=\"trailing-icon\"\n type={trailingicon}\n inverted={isButtonDark}\n />\n {/if}\n {/if}\n</button>\n\n<style>\n :host {\n --button-height: 2.625rem; /* 42px */\n --button-height-compact: 2rem; /* 32px */\n --button-height-tall: 3.25rem; /* 52px */\n\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n button {\n display: inline-flex;\n box-sizing: border-box;\n border-radius: 0.25rem;\n border: 2px solid var(--goa-color-interactive-default);\n box-sizing: border-box;\n cursor: pointer;\n font-family: var(--goa-font-family-sans);\n font-size: var(--goa-font-size-5);\n font-weight: 400;\n height: var(--button-height);\n letter-spacing: var(--goa-letter-spacing-button);\n line-height: 100%;\n padding: 0 0.75rem;\n white-space: nowrap;\n\n /* for leading and trailing icon vertical alignment */\n gap: 0.5rem;\n align-items: center;\n justify-content: center;\n transition:\n transform 0.1s ease-in-out,\n background-color 0.2s ease-in-out,\n border-color 0.2s ease-in-out;\n }\n\n @media (--mobile) {\n :host {\n width: 100%;\n }\n button {\n width: 100%;\n display: flex;\n }\n }\n\n .text {\n padding-bottom: var(\n --font-valign-fix,\n 0\n ); /* acumin font requires this to allow for vertical alignment */\n }\n\n button:disabled {\n pointer-events: none;\n opacity: 0.5;\n }\n\n button.compact {\n height: var(--button-height-compact);\n font-size: var(--goa-font-size-4);\n padding-left: var(--goa-space-xs);\n padding-right: var(--goa-space-xs);\n }\n\n button.start {\n height: var(--button-height-tall);\n font-weight: var(--goa-font-weight-bold);\n }\n\n /* Primary */\n button.start,\n button.submit,\n button.primary {\n border: 2px solid var(--goa-color-interactive-default);\n background-color: var(--goa-color-interactive-default);\n color: var(--goa-color-text-light);\n }\n\n button.start:hover,\n button.submit:hover,\n button.primary:hover {\n border-color: var(--goa-color-interactive-hover);\n background-color: var(--goa-color-interactive-hover);\n }\n\n button.start:focus,\n button.start:active,\n button.submit:focus,\n button.submit:active,\n button.primary:focus,\n button.primary:active {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n border-color: var(--goa-color-interactive-hover);\n background-color: var(--goa-color-interactive-hover);\n outline: none;\n }\n\n /* Secondary */\n\n button.secondary {\n border: 2px solid var(--goa-color-interactive-default);\n background-color: var(--goa-color-greyscale-white);\n color: var(--goa-color-interactive-default);\n }\n\n button.secondary:hover {\n border-color: var(--goa-color-interactive-hover);\n color: var(--goa-color-interactive-hover);\n background-color: var(--goa-color-greyscale-100);\n }\n\n button.secondary:focus,\n button.secondary:active {\n border-color: var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n background-color: var(--goa-color-greyscale-100);\n outline: none;\n }\n\n /* Tertiary */\n\n button.tertiary {\n border: 1px solid transparent;\n background-color: transparent;\n color: var(--goa-color-interactive-default);\n text-decoration: underline;\n }\n\n button.tertiary:hover {\n border-color: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n background-color: var(--goa-color-greyscale-100);\n }\n\n button.tertiary:focus,\n button.tertiary:active {\n border-color: var(--goa-color-greyscale-100);\n background-color: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n outline: none;\n }\n\n .submit.destructive,\n .primary.destructive {\n color: var(--goa-color-greyscale-white);\n background-color: var(--goa-color-emergency-default);\n border-color: var(--goa-color-emergency-default);\n }\n .submit.destructive:hover,\n .primary.destructive:hover {\n background-color: var(--goa-color-emergency-dark);\n border-color: var(--goa-color-emergency-dark);\n }\n .submit.destructive:focus,\n .primary.destructive:focus,\n .primary.destructive:active {\n background-color: var(--goa-color-emergency-dark);\n border-color: var(--goa-color-emergency-dark);\n }\n\n .secondary.destructive {\n color: var(--goa-color-emergency-default);\n border-color: var(--goa-color-emergency-default);\n background-color: var(--goa-color-greyscale-white);\n }\n .secondary.destructive:hover {\n border-color: var(--goa-color-emergency-dark);\n color: var(--goa-color-emergency-dark);\n background-color: var(--goa-color-greyscale-white);\n }\n .secondary.destructive:focus,\n .secondary.destructive:active {\n color: var(--goa-color-emergency-dark);\n border-color: var(--goa-color-emergency-dark);\n background-color: var(--goa-color-greyscale-white);\n }\n\n .tertiary.destructive {\n color: var(--goa-color-emergency-default);\n border-color: transparent;\n }\n .tertiary.destructive:hover {\n color: var(--goa-color-emergency-dark);\n }\n .tertiary.destructive:focus,\n .tertiary.destructive:active {\n color: var(--goa-color-emergency-dark);\n }\n</style>\n","<svelte:options customElement=\"goa-button-group\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n\n export let alignment: ButtonAlignment = \"start\";\n export let gap: Gap = \"relaxed\";\n export let testid: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n const [BUTTON_ALIGNMENTS, validateAlignment] = typeValidator(\"alignment\", [\n \"start\",\n \"end\",\n \"center\",\n ]);\n type ButtonAlignment = (typeof BUTTON_ALIGNMENTS)[number];\n\n const [GAPS, validateGap] = typeValidator(\"gap\", [\"relaxed\", \"compact\"]);\n type Gap = (typeof GAPS)[number];\n\n $: _alignment = {\n start: \"flex-start\",\n end: \"flex-end\",\n center: \"center\",\n }[alignment];\n\n onMount(() => {\n validateAlignment(alignment);\n validateGap(gap);\n });\n</script>\n\n<!-- HTML -->\n<div\n data-testid={testid}\n style=\"{calculateMargin(\n mt,\n mr,\n mb,\n ml,\n )}; --alignment: {_alignment}; --gap-size: {gap === 'relaxed'\n ? '1rem'\n : '0.75rem'}\"\n>\n <slot />\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n div {\n display: flex;\n flex-direction: row;\n justify-content: var(--alignment);\n align-items: center;\n flex-wrap: wrap;\n gap: var(--gap-size);\n padding: 3px 0; /* prevent button box shadow from being cut off */\n }\n</style>\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date(date: DateType): DateType {\n * return constructFrom(\n * date, // Use contrustor from the given date\n * date.getTime() // Use the date value to create a new date\n * )\n * }\n */\nexport function constructFrom(date, value) {\n if (date instanceof Date) {\n return new date.constructor(value);\n } else {\n return new Date(value);\n }\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n const _date = toDate(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n\n const timestampLeft =\n +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight =\n +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { addMonths } from \"./addMonths.mjs\";\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount) {\n return addMonths(date, amount * 12);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","import { startOfDay } from \"./startOfDay.mjs\";\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(dateLeft, dateRight) {\n const dateLeftStartOfDay = startOfDay(dateLeft);\n const dateRightStartOfDay = startOfDay(dateRight);\n\n return +dateLeftStartOfDay === +dateRightStartOfDay;\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate(date);\n return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n const cleanDate = toDate(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date) {\n const _date = toDate(date);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n const _date = toDate(date);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n const _date = toDate(date);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = constructFrom(date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The last day of a month\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * const result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport function lastDayOfMonth(date) {\n const _date = toDate(date);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default lastDayOfMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return _date.getTime() > _dateToCompare.getTime();\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return +_date < +_dateToCompare;\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport function isSameMonth(dateLeft, dateRight) {\n const _dateLeft = toDate(dateLeft);\n const _dateRight = toDate(dateRight);\n return (\n _dateLeft.getFullYear() === _dateRight.getFullYear() &&\n _dateLeft.getMonth() === _dateRight.getMonth()\n );\n}\n\n// Fallback for modularized imports:\nexport default isSameMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param dayOfMonth - The day of the month of the new date\n *\n * @returns The new date with the day of the month set\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * const result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport function setDate(date, dayOfMonth) {\n const _date = toDate(date);\n _date.setDate(dayOfMonth);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setDate;\n","<svelte:options customElement=\"goa-calendar\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n import {\n addMonths,\n addDays,\n format,\n getDaysInMonth,\n isSameDay,\n lastDayOfMonth,\n setDate,\n isSameMonth,\n startOfDay,\n addYears,\n isBefore,\n isAfter,\n } from \"date-fns\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { isValidDate } from \"../../common/utils\";\n\n // ******\n // Public\n // ******\n\n export let name: string = \"\";\n export let value: string = \"\";\n export let min: string = \"\";\n export let max: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // ****************\n // Exposed Privates\n // ****************\n\n export let bordered: string = \"true\";\n\n // ********\n // Privates\n // ********\n\n let _selectedDate: Date | null; // date set by the user\n let _calendarDate: Date; // date that the calendar is synced to (days of month, month/year dropdowns)\n let _min: Date;\n let _max: Date;\n let _monthDays: Date[] = [];\n let _previousMonthDays: Date[] = [];\n let _nextMonthDays: Date[] = [];\n let _nextMonthDayCount: number;\n let _months = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n let _years: string[] = [];\n let _calendarEl: HTMLElement;\n\n // *****\n // Hooks\n // *****\n\n onMount(async () => {\n _calendarDate = _selectedDate = value\n ? startOfDay(new Date(value))\n : startOfDay(new Date());\n _min = (min && new Date(min)) || addYears(_selectedDate, -5);\n _max = (max && new Date(max)) || addYears(_selectedDate, 5);\n\n // define year range to show in dropdown\n const yearCount = _max.getFullYear() - _min.getFullYear() + 1;\n let yearStart = _min.getFullYear();\n _years = new Array(yearCount)\n .fill(undefined)\n .map((_, i) => `${yearStart + i}`)\n .sort();\n\n initKeybindings();\n\n await tick();\n renderCalendar({ type: \"date\", value: _selectedDate });\n });\n\n // *********\n // Functions\n // *********\n\n type DateChange = { type: \"date\"; value: Date };\n type MonthChange = { type: \"month\"; value: number };\n type YearChange = { type: \"year\"; value: number };\n\n function renderCalendar(change: DateChange | MonthChange | YearChange) {\n switch (change.type) {\n case \"date\":\n _calendarDate = change.value;\n break;\n case \"month\":\n _calendarDate.setMonth(change.value);\n break;\n case \"year\":\n _calendarDate.setFullYear(change.value);\n break;\n }\n\n if (!isValidDate(_calendarDate)) {\n return;\n }\n\n // day count\n const dayCount = getDaysInMonth(_calendarDate);\n _monthDays = new Array(dayCount)\n .fill(undefined)\n .map(\n (_, i) =>\n new Date(\n _calendarDate.getFullYear(),\n _calendarDate.getMonth(),\n i + 1,\n ),\n );\n\n // previous month days to fill the start of the calendar\n const prevMonthEnd = lastDayOfMonth(addMonths(_calendarDate, -1));\n const selectedMonthStart = setDate(_calendarDate, 1);\n _previousMonthDays = [];\n for (let i = 0; i < selectedMonthStart.getDay(); i++) {\n _previousMonthDays = [..._previousMonthDays, addDays(prevMonthEnd, -i)];\n }\n _previousMonthDays.reverse();\n\n // next month days to fill the end of the calendar\n _nextMonthDays = [];\n _nextMonthDayCount =\n 7 - ((_previousMonthDays.length + _monthDays.length) % 7);\n // ensure a full week is not appended to the end\n if (_nextMonthDayCount < 7) {\n const nextMonthStart = setDate(addMonths(_calendarDate, 1), 1);\n for (let i = 0; i < _nextMonthDayCount; i++) {\n _nextMonthDays = [..._nextMonthDays, addDays(nextMonthStart, i)];\n }\n }\n }\n\n function initKeybindings() {\n const handleKeyClick = async (e: KeyboardEvent, newDate: Date) => {\n e.stopPropagation();\n e.preventDefault();\n\n // prevent selection outsite min/max boundies\n if (newDate < _min || newDate > _max) {\n return;\n }\n\n // re-initialize calendar days if arrow keys move to a different month\n if (!isSameMonth(newDate, _calendarDate)) {\n renderCalendar({ type: \"date\", value: newDate });\n }\n _calendarDate = newDate;\n\n await tick();\n const focusedDateEl = _calendarEl.querySelector(\n `[data-date=\"${newDate.getTime()}\"]`,\n ) as HTMLButtonElement;\n focusedDateEl?.focus();\n };\n\n _calendarEl.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n switch (e.key) {\n case \"ArrowUp\":\n handleKeyClick(e, addDays(_calendarDate, -7));\n break;\n case \"ArrowDown\":\n handleKeyClick(e, addDays(_calendarDate, 7));\n break;\n case \"ArrowLeft\":\n handleKeyClick(e, addDays(_calendarDate, -1));\n break;\n case \"ArrowRight\":\n handleKeyClick(e, addDays(_calendarDate, 1));\n break;\n case \"Delete\":\n case \"Backspace\":\n _selectedDate = null;\n break;\n case \"Home\": {\n let homeDate = new Date(_calendarDate);\n homeDate.setDate(1);\n handleKeyClick(e, homeDate);\n break;\n }\n case \"End\":\n handleKeyClick(e, lastDayOfMonth(_calendarDate));\n break;\n case \"PageUp\":\n if (e.shiftKey) {\n handleKeyClick(e, addYears(_calendarDate, -1));\n } else {\n handleKeyClick(e, addMonths(_calendarDate, -1));\n }\n break;\n case \"PageDown\":\n if (e.shiftKey) {\n handleKeyClick(e, addYears(_calendarDate, 1));\n } else {\n handleKeyClick(e, addMonths(_calendarDate, 1));\n }\n break;\n case \"Enter\":\n _selectedDate = _calendarDate;\n dispatchValue();\n e.stopPropagation();\n e.preventDefault();\n break;\n case \"Escape\":\n e.stopPropagation();\n e.preventDefault();\n break;\n }\n });\n }\n\n function dispatchValue() {\n if (!_selectedDate) return;\n if (!isValidDate(_selectedDate)) return;\n\n value = _selectedDate.toISOString();\n _calendarEl.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n detail: {\n type: \"date\",\n name: name,\n value: _selectedDate,\n },\n }),\n );\n }\n\n // **************\n // Event Handlers\n // **************\n\n function setMonth(e: CustomEvent) {\n renderCalendar({ type: \"month\", value: +e.detail.value });\n e.preventDefault();\n e.stopPropagation();\n }\n\n function setYear(e: CustomEvent) {\n renderCalendar({ type: \"year\", value: +e.detail.value });\n e.preventDefault();\n e.stopPropagation();\n }\n\n function onDateClick(e: Event) {\n const el = e.target as HTMLElement;\n const raw = parseInt(el.dataset[\"date\"] || \"0\");\n if (!raw) return;\n\n const newDate = new Date(raw);\n\n if (newDate < _min || newDate > _max) {\n return;\n }\n\n // re-initialize calendar days if user clicked on day outside current month\n if (!isSameMonth(newDate, _calendarDate)) {\n renderCalendar({ type: \"date\", value: newDate });\n }\n\n _selectedDate = _calendarDate = newDate;\n dispatchValue();\n }\n</script>\n\n<div\n style={calculateMargin(mt, mr, mb, ml)}\n class:bordered={bordered === \"true\"}\n>\n <goa-block mb=\"m\">\n <goa-form-item label=\"Month\" mt=\"0\">\n <goa-dropdown\n name=\"month\"\n arialabel={`${name} month`}\n data-testid=\"months\"\n width=\"calc(314px / 2 - 1.5rem)\"\n relative=\"true\"\n value={_calendarDate?.getMonth()}\n on:_change={setMonth}\n >\n {#each _months as month, i}\n <goa-dropdown-item value={i} label={month} />\n {/each}\n </goa-dropdown>\n </goa-form-item>\n\n <goa-form-item label=\"Year\" mt=\"0\">\n <goa-dropdown\n name=\"year\"\n arialabel={`${name} year`}\n data-testid=\"years\"\n width=\"calc(314px / 2 - 1.5rem)\"\n relative=\"true\"\n value={_calendarDate?.getFullYear()}\n on:_change={setYear}\n >\n {#each _years as year}\n <goa-dropdown-item value={year} />\n {/each}\n </goa-dropdown>\n </goa-form-item>\n </goa-block>\n\n <div data-testid=\"calendar\" class=\"calendar\" bind:this={_calendarEl}>\n <h5>Sun</h5>\n <h5>Mon</h5>\n <h5>Tue</h5>\n <h5>Wed</h5>\n <h5>Thu</h5>\n <h5>Fri</h5>\n <h5>Sat</h5>\n {#each _previousMonthDays as d}\n <button\n on:click={onDateClick}\n aria-label={format(d, \"PPPP\")}\n data-date={format(d, \"T\")}\n data-day={format(d, \"eee\")}\n class=\"day other-month\"\n class:disabled={isBefore(d, _min) || isAfter(d, _max)}\n tabindex={isSameDay(d, _calendarDate) ? 0 : -1}\n >\n <div class=\"day-num\" data-testid=\"date\">{d.getDate()}</div>\n </button>\n {/each}\n {#each _monthDays as d}\n <button\n on:click={onDateClick}\n aria-label={format(d, \"PPPP\")}\n data-date={format(d, \"T\")}\n data-day={format(d, \"eee\")}\n class=\"day\"\n class:today={isSameDay(d, new Date())}\n class:selected={value && isSameDay(d, _selectedDate)}\n class:disabled={isBefore(d, _min) || isAfter(d, _max)}\n tabindex={isSameDay(d, _calendarDate) ? 0 : -1}\n >\n <div class=\"day-num\" data-testid=\"date\">{d.getDate()}</div>\n </button>\n {/each}\n {#each _nextMonthDays as d}\n <button\n on:click={onDateClick}\n aria-label={format(d, \"PPPP\")}\n data-date={format(d, \"T\")}\n data-day={format(d, \"eee\")}\n class=\"day other-month\"\n class:disabled={isBefore(d, _min) || isAfter(d, _max)}\n tabindex={isSameDay(d, _calendarDate) ? 0 : -1}\n >\n <div class=\"day-num\" data-testid=\"date\">{d.getDate()}</div>\n </button>\n {/each}\n </div>\n</div>\n\n<style>\n :host {\n font: var(--goa-typography-body-s);\n }\n\n .bordered {\n display: inline-block;\n border: 1px solid var(--goa-color-greyscale-700);\n border-radius: var(--goa-border-radius-m);\n padding: 1rem;\n }\n\n .calendar {\n display: grid;\n justify-items: center;\n grid-template-columns: repeat(7, 1fr);\n gap: 2px 0;\n width: 280px;\n font: var(--goa-typography-body-s);\n }\n\n h5 {\n margin: 0;\n font: var(--goa-typography-heading-xs);\n }\n\n .day {\n align-items: center;\n background: var(--goa-color-white);\n border: none;\n border-radius: var(--goa-border-radius-m);\n color: var(--goa-color-greyscale-black);\n display: inline-flex;\n font: var(--goa-typography-body-s);\n height: 2.5rem;\n justify-content: center;\n margin: 0;\n width: 2.5rem;\n }\n\n .day.other-month {\n color: var(--goa-color-greyscale-400);\n }\n\n .day.today {\n font-weight: var(--goa-font-weight-bold);\n }\n\n .day:focus-within {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n }\n\n .day.selected {\n background: var(--goa-color-interactive-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .day:hover {\n background: var(--goa-color-greyscale-200);\n color: var(--goa-color-greyscale-black);\n cursor: pointer;\n }\n\n .day.selected:hover {\n background: var(--goa-color-interactive-hover);\n text-decoration-color: var(--goa-color-white);\n color: var(--goa-color-greyscale-white);\n }\n\n .day.today.selected:hover {\n background: var(--goa-color-interactive-hover);\n text-decoration-color: var(--goa-color-white);\n color: var(--goa-color-greyscale-white);\n }\n\n .day.disabled {\n color: var(--goa-color-greyscale-400);\n cursor: default;\n }\n\n .day.disabled:hover {\n background: var(--goa-color-white);\n }\n\n .day-num {\n width: 100%;\n margin: 0 6px;\n pointer-events: none;\n padding-bottom: 2px;\n }\n\n .selected .day-num {\n border-bottom: none;\n padding-bottom: 0;\n width: 1.5rem;\n }\n\n .today .day-num {\n border-bottom: 3px solid var(--goa-color-interactive-default);\n }\n\n .today.selected .day-num {\n border-bottom: 3px solid var(--goa-color-greyscale-white);\n }\n</style>\n","<svelte:options customElement=\"goa-callout\" />\n\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n import { MOBILE_BP } from \"../../common/breakpoints\";\n\n // Validators\n\n const [Types, validateType] = typeValidator(\n \"Callout type\",\n [\"emergency\", \"important\", \"information\", \"event\", \"success\"],\n true,\n );\n const [CalloutSizes, validateCalloutSize] = typeValidator(\"Callout size\", [\n \"medium\",\n \"large\",\n ]);\n\n // Types\n\n type CalloutType = (typeof Types)[number];\n type CalloutSize = (typeof CalloutSizes)[number];\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = \"l\";\n export let ml: Spacing = null;\n export let size: CalloutSize = \"large\";\n export let type: CalloutType;\n export let heading: string = \"\";\n export let testid: string = \"\";\n\n // Private\n\n let screenSize = 0;\n let iconSize = \"medium\";\n\n // Reactive\n\n $: isMediumCallout = screenSize < MOBILE_BP || size === \"medium\";\n\n $: iconType =\n type === \"emergency\"\n ? \"warning\"\n : type === \"important\"\n ? \"alert-circle\"\n : type === \"information\"\n ? \"information-circle\"\n : type === \"success\"\n ? \"checkmark-circle\"\n : type === \"event\"\n ? \"calendar\"\n : \"\";\n\n onMount(() => {\n validateCalloutSize(size);\n setTimeout(() => {\n validateType(type);\n iconSize = isMediumCallout ? \"small\" : \"medium\";\n });\n });\n</script>\n\n<!-- HTML -->\n<svelte:window bind:innerWidth={screenSize} />\n<div\n style={calculateMargin(mt, mr, mb, ml)}\n class=\"notification\"\n class:medium={isMediumCallout}\n data-testid={testid}\n>\n <span class=\"icon {type}\">\n <goa-icon\n type={iconType}\n size={iconSize}\n inverted={type === \"important\" ? \"false\" : \"true\"}\n />\n </span>\n <span class=\"content\">\n {#if heading}\n <h3 class:medium={isMediumCallout}>{heading}</h3>\n {/if}\n <slot />\n </span>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .notification {\n display: flex;\n align-items: stretch;\n overflow: hidden;\n font: var(--goa-typography-body-m);\n }\n\n h3 {\n font-size: var(--goa-font-size-7);\n line-height: var(--goa-line-height-2);\n font-weight: var(--goa-font-weight-regular);\n margin-top: var(--goa-space-none);\n margin-bottom: var(--goa-space-m);\n }\n\n .emergency {\n background-color: var(--goa-color-emergency-default);\n }\n .important {\n background-color: var(--goa-color-warning-default);\n }\n .information {\n background-color: var(--goa-color-info-default);\n }\n .event {\n background-color: var(--goa-color-info-default);\n }\n .success {\n background-color: var(--goa-color-success-default);\n }\n\n .icon {\n text-align: center;\n padding-top: var(--goa-space-l);\n padding-left: var(--goa-space-s);\n padding-right: var(--goa-space-s);\n }\n .content {\n flex: 1 1 auto;\n background-color: var(--goa-color-greyscale-100);\n padding: var(--goa-space-l);\n }\n /*Medium callout style*/\n .notification.medium {\n font: var(--goa-typography-body-s);\n }\n h3.medium {\n font: var(--goa-typography-heading-xs);\n margin-bottom: var(--goa-space-2xs);\n }\n .notification.medium .content {\n padding: var(--goa-space-s);\n margin-top: calc(-1 * var(--goa-space-3xs));\n }\n .notification.medium .icon {\n padding-top: var(--goa-space-s);\n padding-left: var(--goa-space-2xs);\n padding-right: var(--goa-space-2xs);\n }\n</style>\n","<svelte:options customElement=\"goa-card-actions\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n</script>\n\n<!-- HTML -->\n<goa-card-content>\n <goa-button-group alignment=\"end\">\n <slot />\n </goa-button-group>\n</goa-card-content>\n\n<!-- Style -->\n<style>\n</style>\n","<svelte:options customElement=\"goa-card-content\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n</script>\n\n<!-- HTML -->\n<div class=\"card-content\">\n <slot />\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .card-content {\n padding: 1rem;\n }\n</style>\n","<svelte:options customElement=\"goa-card\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n\n export let elevation: number = 0;\n export let width: string = \"100%\";\n export let height: \"auto\" | \"max\" = \"auto\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n //optional\n export let testid: string = \"\";\n</script>\n\n<!-- HTML -->\n<div id=\"container\">\n <div\n data-testid={testid}\n class=\"card\"\n style=\"\n --width: {width};\n --height: {height === 'auto' ? 'auto' : '100%'};\n {calculateMargin(mt, mr, mb, ml)}\n {elevation === 0\n ? `border: 1px solid var(--goa-color-greyscale-200);`\n : `box-shadow: var(--shadow-${elevation});`}\n \"\n >\n <slot />\n </div>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n #container {\n container: self / inline-size;\n }\n\n .card {\n background-color: var(--goa-color-greyscale-white);\n border-radius: 4px;\n overflow: hidden;\n height: var(--height);\n }\n\n @container self (--not-mobile) {\n .card {\n margin: 0 auto;\n }\n }\n</style>\n","<svelte:options customElement=\"goa-card-group\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n</script>\n\n<!-- HTML -->\n<div class=\"card-group\">\n <slot />\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .card-group {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n gap: 1rem;\n width: 100%;\n }\n</style>\n","<svelte:options customElement=\"goa-card-image\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n export let src: string;\n export let height: string = \"100%\";\n</script>\n\n<!-- HTML -->\n<div\n style={`\n background-image: url({src}); \n height: {height}; \n background-size: cover; \n background-position: center;\n `}\n/>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n</style>\n","<svelte:options customElement=\"goa-checkbox\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n\n import { fromBoolean, toBoolean } from \"../../common/utils\";\n // Required\n export let name: string;\n\n // Optional values\n export let checked: string = \"false\";\n export let text: string = \"\";\n export let value: string = \"\";\n export let disabled: string = \"false\";\n export let error: string = \"false\";\n export let testid: string = \"\";\n export let arialabel: string = \"\";\n export let description: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Private\n let _value: string;\n let _checkboxRef: HTMLElement;\n let _descriptionId: string;\n\n // Binding\n $: isDisabled = toBoolean(disabled);\n $: isError = toBoolean(error);\n $: isChecked = toBoolean(checked);\n $: isIndeterminate = false; // Design review. To be built with TreeView Later\n\n onMount(() => {\n // hold on to the initial value to prevent losing it on check changes\n _value = value;\n _descriptionId = `description_${name}`;\n });\n\n function onChange(e: Event) {\n // Manually set the focus back to the checkbox after the state change\n _checkboxRef.focus();\n // An empty string is required as setting the second value to `null` caused the data to get\n // out of sync with the events.\n const newCheckStatus = !isChecked;\n const newValue = newCheckStatus ? `${_value || \"checked\"}` : \"\";\n\n // set the local state\n checked = fromBoolean(newCheckStatus);\n\n e.target?.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n detail: { name, checked: newCheckStatus, value: newValue },\n }),\n );\n }\n</script>\n\n<!-- View -->\n\n<div style={calculateMargin(mt, mr, mb, ml)} class=\"goa-checkbox\">\n <label\n class=\"goa-checkbox-label\"\n data-testid={testid}\n for={name}\n class:goa-checkbox--disabled={isDisabled}\n class:goa-checkbox--error={isError}\n >\n <div\n class=\"goa-checkbox-container\"\n class:goa-checkbox--selected={isChecked}\n >\n <input\n bind:this={_checkboxRef}\n id={name}\n {name}\n checked={isChecked}\n disabled={isDisabled}\n type=\"checkbox\"\n value={`${value}`}\n aria-label={arialabel || name}\n aria-describedby={description ? _descriptionId : null}\n on:change={onChange}\n />\n {#if isIndeterminate}\n <svg\n id=\"dashmark\"\n data-testid=\"dashmark\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 15 2\"\n >\n <rect width=\"15\" height=\"2\" />\n </svg>\n {:else if isChecked}\n <svg\n id=\"checkmark\"\n data-testid=\"checkmark\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 12.18\"\n >\n <path d=\"M5.09,9.64,1.27,5.82,0,7.09l5.09,5.09L16,1.27,14.73,0Z\" />\n </svg>\n {/if}\n </div>\n <div class=\"goa-checkbox-text\">\n <div class=\"label-text\" data-testid=\"text\">\n <slot>\n {text}\n </slot>\n </div>\n </div>\n </label>\n {#if $$slots.description || description}\n <div class=\"description-text\" id={_descriptionId} data-testid=\"description\">\n <slot name=\"description\"/>\n {description}\n </div>\n {/if}\n</div>\n\n<!-- Styles -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n display: block;\n }\n .goa-checkbox-label {\n display: flex;\n cursor: pointer;\n }\n\n .goa-checkbox {\n min-height: calc(3rem - 0.25rem);\n }\n .goa-checkbox input[type=\"checkbox\"] {\n /* hide the input, but still make it tab-able */\n opacity: 0;\n position: absolute;\n cursor: pointer;\n }\n\n .goa-checkbox-container {\n box-sizing: border-box;\n border: var(--goa-border-width-s) solid var(--goa-color-greyscale-700);\n border-radius: 2px;\n background-color: var(--goa-color-greyscale-white);\n height: 1.5rem;\n width: 1.5rem;\n display: flex;\n justify-content: center;\n padding: 3px;\n\n /* prevent squishing of checkbox */\n flex: 0 0 auto;\n }\n .goa-checkbox-container svg {\n fill: var(--goa-color-greyscale-white);\n }\n\n .goa-checkbox-container.goa-checkbox--selected {\n background-color: var(--goa-color-interactive-default);\n border: none;\n }\n\n .goa-checkbox-container.goa-checkbox--selected:hover {\n background-color: var(--goa-color-interactive-hover);\n }\n\n .goa-checkbox-container:hover {\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n border: none;\n }\n\n .goa-checkbox-container:focus-within,\n .goa-checkbox-container:focus,\n .goa-checkbox-container:active {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n border: var(--goa-border-width-s) solid var(--goa-color-greyscale-700);\n outline: none;\n }\n\n .goa-checkbox-container.goa-checkbox--selected:focus-within {\n background-color: var(--goa-color-interactive-default);\n border: none;\n }\n\n .goa-checkbox-text {\n padding-left: 0.5rem;\n user-select: none;\n font-weight: var(--goa-font-weight-regular);\n }\n\n /* Error state */\n .goa-checkbox--error .goa-checkbox-container,\n .goa-checkbox--error .goa-checkbox-container:hover {\n border: var(--goa-border-width-s) solid var(--goa-color-emergency-default);\n box-shadow: inset 0 0 0 1px var(--goa-color-emergency-default);\n background-color: var(--goa-color-greyscale-white);\n }\n\n .goa-checkbox--error .goa-checkbox-container:focus-within {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n background-color: var(--goa-color-greyscale-white);\n border: var(--goa-border-width-s) solid var(--goa-color-emergency-default);\n }\n\n .goa-checkbox--error .goa-checkbox-container svg {\n fill: var(--goa-color-emergency-default);\n }\n\n /* disabled state */\n .goa-checkbox--disabled .goa-checkbox-text {\n opacity: 40%;\n }\n\n .goa-checkbox--disabled .goa-checkbox-container,\n .goa-checkbox--disabled .goa-checkbox-container:hover {\n border: var(--goa-border-width-s) solid var(--goa-color-greyscale-400);\n box-shadow: none;\n opacity: 40%;\n }\n\n .goa-checkbox--disabled .goa-checkbox-container.goa-checkbox--selected,\n .goa-checkbox--disabled .goa-checkbox-container.goa-checkbox--selected:hover {\n border: none;\n background-color: var(--goa-color-interactive-default);\n }\n\n .goa-checkbox--disabled.goa-checkbox--error\n .goa-checkbox-container.goa-checkbox--selected {\n border: var(--goa-border-width-s) solid var(--goa-color-emergency-default);\n box-shadow: inset 0 0 0 1px var(--goa-color-emergency-default);\n }\n\n .goa-checkbox--disabled,\n input[type=\"checkbox\"][disabled]:hover {\n cursor: default;\n }\n\n .description-text {\n font: var(--goa-typography-body-xs);\n margin-left: var(--goa-space-xl);\n margin-top: var(--goa-space-2xs);\n }\n</style>\n","<svelte:options customElement=\"goa-chip\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { toBoolean } from \"../../common/utils\";\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n\n type ChipVariant = \"filter\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n export let leadingicon: GoAIconType | null = null;\n export let error: string = \"false\";\n export let deletable: string = \"false\";\n export let content: string;\n export let variant: ChipVariant;\n export let testid: string = \"\";\n\n let el: HTMLElement;\n let _hovering: boolean = false;\n\n // booleans\n let _error: boolean;\n let _deletable: boolean;\n\n $: _error = toBoolean(error);\n $: _deletable = toBoolean(deletable);\n\n function onDelete(e: Event) {\n el.dispatchEvent(\n new CustomEvent(\"_click\", { composed: true, bubbles: true }),\n );\n e.stopPropagation();\n }\n</script>\n\n<!-- HTML -->\n<!-- svelte-ignore a11y-no-noninteractive-tabindex -->\n<!-- svelte-ignore a11y-click-events-have-key-events -->\n<!-- svelte-ignore a11y-no-static-element-interactions -->\n<div\n bind:this={el}\n data-testid={testid}\n class=\"chip\"\n class:deletable={_deletable}\n class:error={_error}\n class:variant\n style={calculateMargin(mt, mr, mb, ml)}\n tabindex=\"0\"\n on:click={(e) => _deletable && onDelete(e)}\n on:mouseover={() => (_hovering = true)}\n on:mouseout={() => (_hovering = false)}\n on:focus={() => (_hovering = false)}\n on:blur={() => (_hovering = false)}\n>\n {#if leadingicon}\n <goa-icon class=\"leading-icon\" size=\"medium\" type={leadingicon} />\n {/if}\n <div class=\"text\">\n {content}\n </div>\n {#if _deletable}\n <goa-icon\n class=\"delete-icon\"\n size=\"medium\"\n theme=\"filled\"\n type=\"close-circle\"\n fillcolor={_error\n ? \"var(--goa-color-emergency-default)\"\n : _hovering\n ? \"var(--goa-color-interactive-hover)\"\n : \"var(--goa-color-greyscale-700)\"}\n opacity={_error ? (_hovering ? 1 : 0.5) : 1}\n />\n {/if}\n</div>\n\n<!-- Style -->\n<style>\n .leading-icon {\n margin-left: -0.25rem;\n }\n\n .chip {\n vertical-align: middle;\n align-items: center;\n background-color: var(--goa-color-greyscale-white);\n border-radius: 99px;\n border: 1px solid #949494; /* TODO: change this to a defined color value when one is defined in the design specs */\n box-sizing: border-box;\n color: var(--goa-color-text-default);\n display: inline-flex;\n flex-direction: row;\n font-size: var(--goa-font-size-3);\n font-weight: var(--goa-font-weight-regular);\n gap: 0.25rem;\n height: 2rem;\n justify-content: center;\n padding: 0 0.75rem;\n cursor: default;\n }\n\n .text {\n padding-bottom: var(\n --font-valign-fix,\n 0\n ); /* acumin font requires this to allow for vertical alignment */\n }\n\n .chip:focus {\n outline: 2px solid var(--goa-color-interactive-focus);\n background-color: var(--goa-color-greyscale-white);\n }\n\n .chip:hover {\n background-color: var(--goa-color-greyscale-200);\n }\n\n .deletable {\n cursor: pointer;\n }\n\n .delete-icon {\n margin-right: -0.25rem;\n }\n\n .error,\n .error:hover {\n background-color: var(--goa-color-emergency-light);\n }\n</style>\n","/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nexport { identity as linear } from '../internal/index.js';\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backInOut(t) {\n\tconst s = 1.70158 * 1.525;\n\tif ((t *= 2) < 1) return 0.5 * (t * t * ((s + 1) * t - s));\n\treturn 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backIn(t) {\n\tconst s = 1.70158;\n\treturn t * t * ((s + 1) * t - s);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backOut(t) {\n\tconst s = 1.70158;\n\treturn --t * t * ((s + 1) * t + s) + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceOut(t) {\n\tconst a = 4.0 / 11.0;\n\tconst b = 8.0 / 11.0;\n\tconst c = 9.0 / 10.0;\n\tconst ca = 4356.0 / 361.0;\n\tconst cb = 35442.0 / 1805.0;\n\tconst cc = 16061.0 / 1805.0;\n\tconst t2 = t * t;\n\treturn t < a\n\t\t? 7.5625 * t2\n\t\t: t < b\n\t\t? 9.075 * t2 - 9.9 * t + 3.4\n\t\t: t < c\n\t\t? ca * t2 - cb * t + cc\n\t\t: 10.8 * t * t - 20.52 * t + 10.72;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceInOut(t) {\n\treturn t < 0.5 ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceIn(t) {\n\treturn 1.0 - bounceOut(1.0 - t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circInOut(t) {\n\tif ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1);\n\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circIn(t) {\n\treturn 1.0 - Math.sqrt(1.0 - t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circOut(t) {\n\treturn Math.sqrt(1 - --t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicInOut(t) {\n\treturn t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicIn(t) {\n\treturn t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicOut(t) {\n\tconst f = t - 1.0;\n\treturn f * f * f + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticInOut(t) {\n\treturn t < 0.5\n\t\t? 0.5 * Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n\t\t: 0.5 *\n\t\t\t\tMath.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n\t\t\t\tMath.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n\t\t\t\t1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticIn(t) {\n\treturn Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticOut(t) {\n\treturn Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoInOut(t) {\n\treturn t === 0.0 || t === 1.0\n\t\t? t\n\t\t: t < 0.5\n\t\t? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n\t\t: -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoIn(t) {\n\treturn t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoOut(t) {\n\treturn t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadInOut(t) {\n\tt /= 0.5;\n\tif (t < 1) return 0.5 * t * t;\n\tt--;\n\treturn -0.5 * (t * (t - 2) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadIn(t) {\n\treturn t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadOut(t) {\n\treturn -t * (t - 2.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartInOut(t) {\n\treturn t < 0.5 ? +8.0 * Math.pow(t, 4.0) : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartIn(t) {\n\treturn Math.pow(t, 4.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartOut(t) {\n\treturn Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintInOut(t) {\n\tif ((t *= 2) < 1) return 0.5 * t * t * t * t * t;\n\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintIn(t) {\n\treturn t * t * t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintOut(t) {\n\treturn --t * t * t * t * t + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineInOut(t) {\n\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineIn(t) {\n\tconst v = Math.cos(t * Math.PI * 0.5);\n\tif (Math.abs(v) < 1e-14) return 1;\n\telse return 1 - v;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineOut(t) {\n\treturn Math.sin((t * Math.PI) / 2);\n}\n","import { cubicOut, cubicInOut, linear } from '../easing/index.js';\nimport { assign, split_css_unit, is_function } from '../internal/index.js';\n\n/**\n * Animates a `blur` filter alongside an element's opacity.\n *\n * https://svelte.dev/docs/svelte-transition#blur\n * @param {Element} node\n * @param {import('./public').BlurParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function blur(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst f = style.filter === 'none' ? '' : style.filter;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [value, unit] = split_css_unit(amount);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `opacity: ${target_opacity - od * u}; filter: ${f} blur(${u * value}${unit});`\n\t};\n}\n\n/**\n * Animates the opacity of an element from 0 to the current opacity for `in` transitions and from the current opacity to 0 for `out` transitions.\n *\n * https://svelte.dev/docs/svelte-transition#fade\n * @param {Element} node\n * @param {import('./public').FadeParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n\tconst o = +getComputedStyle(node).opacity;\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) => `opacity: ${t * o}`\n\t};\n}\n\n/**\n * Animates the x and y positions and the opacity of an element. `in` transitions animate from the provided values, passed as parameters to the element's default values. `out` transitions animate from the element's default values to the provided values.\n *\n * https://svelte.dev/docs/svelte-transition#fly\n * @param {Element} node\n * @param {import('./public').FlyParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fly(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [xValue, xUnit] = split_css_unit(x);\n\tconst [yValue, yUnit] = split_css_unit(y);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * xValue}${xUnit}, ${(1 - t) * yValue}${yUnit});\n\t\t\topacity: ${target_opacity - od * u}`\n\t};\n}\n\n/**\n * Slides an element in and out.\n *\n * https://svelte.dev/docs/svelte-transition#slide\n * @param {Element} node\n * @param {import('./public').SlideParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function slide(node, { delay = 0, duration = 400, easing = cubicOut, axis = 'y' } = {}) {\n\tconst style = getComputedStyle(node);\n\tconst opacity = +style.opacity;\n\tconst primary_property = axis === 'y' ? 'height' : 'width';\n\tconst primary_property_value = parseFloat(style[primary_property]);\n\tconst secondary_properties = axis === 'y' ? ['top', 'bottom'] : ['left', 'right'];\n\tconst capitalized_secondary_properties = secondary_properties.map(\n\t\t(e) => `${e[0].toUpperCase()}${e.slice(1)}`\n\t);\n\tconst padding_start_value = parseFloat(style[`padding${capitalized_secondary_properties[0]}`]);\n\tconst padding_end_value = parseFloat(style[`padding${capitalized_secondary_properties[1]}`]);\n\tconst margin_start_value = parseFloat(style[`margin${capitalized_secondary_properties[0]}`]);\n\tconst margin_end_value = parseFloat(style[`margin${capitalized_secondary_properties[1]}`]);\n\tconst border_width_start_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[0]}Width`]\n\t);\n\tconst border_width_end_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[1]}Width`]\n\t);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) =>\n\t\t\t'overflow: hidden;' +\n\t\t\t`opacity: ${Math.min(t * 20, 1) * opacity};` +\n\t\t\t`${primary_property}: ${t * primary_property_value}px;` +\n\t\t\t`padding-${secondary_properties[0]}: ${t * padding_start_value}px;` +\n\t\t\t`padding-${secondary_properties[1]}: ${t * padding_end_value}px;` +\n\t\t\t`margin-${secondary_properties[0]}: ${t * margin_start_value}px;` +\n\t\t\t`margin-${secondary_properties[1]}: ${t * margin_end_value}px;` +\n\t\t\t`border-${secondary_properties[0]}-width: ${t * border_width_start_value}px;` +\n\t\t\t`border-${secondary_properties[1]}-width: ${t * border_width_end_value}px;`\n\t};\n}\n\n/**\n * Animates the opacity and scale of an element. `in` transitions animate from an element's current (default) values to the provided values, passed as parameters. `out` transitions animate from the provided values to an element's default values.\n *\n * https://svelte.dev/docs/svelte-transition#scale\n * @param {Element} node\n * @param {import('./public').ScaleParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function scale(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst sd = 1 - start;\n\tconst od = target_opacity * (1 - opacity);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - sd * u});\n\t\t\topacity: ${target_opacity - od * u}\n\t\t`\n\t};\n}\n\n/**\n * Animates the stroke of an SVG element, like a snake in a tube. `in` transitions begin with the path invisible and draw the path to the screen over time. `out` transitions start in a visible state and gradually erase the path. `draw` only works with elements that have a `getTotalLength` method, like `<path>` and `<polyline>`.\n *\n * https://svelte.dev/docs/svelte-transition#draw\n * @param {SVGElement & { getTotalLength(): number }} node\n * @param {import('./public').DrawParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n\tlet len = node.getTotalLength();\n\tconst style = getComputedStyle(node);\n\tif (style.strokeLinecap !== 'butt') {\n\t\tlen += parseInt(style.strokeWidth);\n\t}\n\tif (duration === undefined) {\n\t\tif (speed === undefined) {\n\t\t\tduration = 800;\n\t\t} else {\n\t\t\tduration = len / speed;\n\t\t}\n\t} else if (typeof duration === 'function') {\n\t\tduration = duration(len);\n\t}\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_, u) => `\n\t\t\tstroke-dasharray: ${len};\n\t\t\tstroke-dashoffset: ${u * len};\n\t\t`\n\t};\n}\n\n/**\n * The `crossfade` function creates a pair of [transitions](https://svelte.dev/docs#template-syntax-element-directives-transition-fn) called `send` and `receive`. When an element is 'sent', it looks for a corresponding element being 'received', and generates a transition that transforms the element to its counterpart's position and fades it out. When an element is 'received', the reverse happens. If there is no counterpart, the `fallback` transition is used.\n *\n * https://svelte.dev/docs/svelte-transition#crossfade\n * @param {import('./public').CrossfadeParams & {\n * \tfallback?: (node: Element, params: import('./public').CrossfadeParams, intro: boolean) => import('./public').TransitionConfig;\n * }} params\n * @returns {[(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig, (node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig]}\n */\nexport function crossfade({ fallback, ...defaults }) {\n\t/** @type {Map<any, Element>} */\n\tconst to_receive = new Map();\n\t/** @type {Map<any, Element>} */\n\tconst to_send = new Map();\n\t/**\n\t * @param {Element} from_node\n\t * @param {Element} node\n\t * @param {import('./public').CrossfadeParams} params\n\t * @returns {import('./public').TransitionConfig}\n\t */\n\tfunction crossfade(from_node, node, params) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = (d) => Math.sqrt(d) * 30,\n\t\t\teasing = cubicOut\n\t\t} = assign(assign({}, defaults), params);\n\t\tconst from = from_node.getBoundingClientRect();\n\t\tconst to = node.getBoundingClientRect();\n\t\tconst dx = from.left - to.left;\n\t\tconst dy = from.top - to.top;\n\t\tconst dw = from.width / to.width;\n\t\tconst dh = from.height / to.height;\n\t\tconst d = Math.sqrt(dx * dx + dy * dy);\n\t\tconst style = getComputedStyle(node);\n\t\tconst transform = style.transform === 'none' ? '' : style.transform;\n\t\tconst opacity = +style.opacity;\n\t\treturn {\n\t\t\tdelay,\n\t\t\tduration: is_function(duration) ? duration(d) : duration,\n\t\t\teasing,\n\t\t\tcss: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${\n\t\t\t\tt + (1 - t) * dh\n\t\t\t});\n\t\t\t`\n\t\t};\n\t}\n\n\t/**\n\t * @param {Map<any, Element>} items\n\t * @param {Map<any, Element>} counterparts\n\t * @param {boolean} intro\n\t * @returns {(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig}\n\t */\n\tfunction transition(items, counterparts, intro) {\n\t\treturn (node, params) => {\n\t\t\titems.set(params.key, node);\n\t\t\treturn () => {\n\t\t\t\tif (counterparts.has(params.key)) {\n\t\t\t\t\tconst other_node = counterparts.get(params.key);\n\t\t\t\t\tcounterparts.delete(params.key);\n\t\t\t\t\treturn crossfade(other_node, node, params);\n\t\t\t\t}\n\t\t\t\t// if the node is disappearing altogether\n\t\t\t\t// (i.e. wasn't claimed by the other list)\n\t\t\t\t// then we need to supply an outro\n\t\t\t\titems.delete(params.key);\n\t\t\t\treturn fallback && fallback(node, params, intro);\n\t\t\t};\n\t\t};\n\t}\n\treturn [transition(to_send, to_receive, false), transition(to_receive, to_send, true)];\n}\n","export default function (_node: HTMLElement, opts: { enable: boolean }) {\n let toggledScrolling = false;\n\n function hideScrollbars() {\n if (!isScrollable()) {\n return;\n }\n const scrollbarWidth = calculateScrollbarWidth();\n toggledScrolling = true;\n document.body.style.overflow = \"hidden\";\n document.body.style.borderRight = `${scrollbarWidth}px solid #eee`;\n }\n\n function isScrollable() {\n return document.body.style.overflow !== \"hidden\";\n }\n\n function resetScrollbars() {\n if (!toggledScrolling) {\n return;\n }\n\n toggledScrolling = false;\n // need to perform on the next render cycle to allow the css transitions to take place\n setTimeout(() => {\n document.body.style.overflow = \"\";\n document.body.style.borderRight = \"\";\n }, 200);\n }\n\n function calculateScrollbarWidth() {\n // no scrollbars present\n if (document.body.clientHeight <= document.documentElement.clientHeight) {\n return 0;\n }\n\n const outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.overflow = \"scroll\";\n document.body.appendChild(outer);\n\n // Creating inner element and placing it in the container\n const inner = document.createElement(\"div\");\n outer.appendChild(inner);\n\n // Calculating difference between container's full width and the child width\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n\n // Removing temporary elements from the DOM\n outer.parentNode?.removeChild(outer);\n\n return scrollbarWidth;\n }\n\n if (opts.enable) {\n hideScrollbars();\n }\n\n return {\n update() {\n if (!opts.enable) {\n resetScrollbars();\n }\n },\n\n destroy() {\n resetScrollbars();\n },\n };\n}\n","<svelte:options customElement=\"goa-circular-progress\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { fade } from \"svelte/transition\";\n import noScroll from \"../../common/no-scroll\";\n import { typeValidator, toBoolean } from \"../../common/utils\";\n\n // Validators\n const [Variants, validateVariant] = typeValidator(\n \"Circular progress variant\",\n [\"fullscreen\", \"inline\"],\n );\n const [Sizes, validateSize] = typeValidator(\"Button size\", [\n \"small\",\n \"large\",\n ]);\n\n // Types\n type Size = (typeof Sizes)[number];\n type Variant = (typeof Variants)[number];\n\n // Optional\n export let variant: Variant = \"inline\";\n export let size: Size = \"large\";\n export let message: string = \"\";\n export let progress: number = -1;\n export let visible: string = \"false\";\n\n $: isVisible = toBoolean(visible);\n\n let spinnerSize: \"large\" | \"xlarge\";\n let fullscreen: boolean;\n let inline: boolean;\n\n onMount(async () => {\n validateVariant(variant);\n validateSize(size);\n spinnerSize = size === \"small\" ? \"large\" : \"xlarge\";\n fullscreen = variant === \"fullscreen\";\n inline = variant === \"inline\";\n });\n</script>\n\n<!-- HTML -->\n{#if isVisible}\n {#if fullscreen}\n <div\n transition:fade={{ duration: 300 }}\n use:noScroll={{ enable: true }}\n class:fullscreen\n >\n <goa-spinner size={spinnerSize} {progress} />\n {#if message}\n <div class=\"message\">{message}</div>\n {/if}\n </div>\n {:else if inline}\n <div class:inline class={\"spinner-\" + spinnerSize}>\n <goa-spinner size={spinnerSize} {progress} />\n {#if message}\n <div class=\"message\">{message}</div>\n {/if}\n </div>\n {/if}\n{/if}\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .fullscreen {\n position: fixed;\n inset: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n background-color: rgba(255, 255, 255, 0.9);\n }\n\n .inline {\n margin: 3.5rem;\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n\n .spinner-large .message {\n margin-top: 1.5rem;\n font-size: 1.2rem;\n }\n .spinner-xlarge .message {\n margin-top: 2rem;\n font-size: 1.5rem;\n }\n</style>\n","<svelte:options customElement=\"goa-container\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n import { typeValidator } from \"../../common/utils\";\n import { onMount } from \"svelte\";\n\n // Validator\n const [Types, validateType] = typeValidator(\"Container type\", [\n \"interactive\",\n \"info\",\n \"error\",\n \"success\",\n \"important\",\n \"non-interactive\",\n ]);\n const [Accents, validateAccent] = typeValidator(\"Container accent\", [\n \"thick\",\n \"thin\",\n \"filled\",\n ]);\n const [Paddings, validatePadding] = typeValidator(\"Container padding\", [\n \"relaxed\",\n \"compact\",\n ]);\n\n // Types\n type Type = (typeof Types)[number];\n type Accent = (typeof Accents)[number];\n type Padding = (typeof Paddings)[number];\n\n export let type: Type = \"interactive\";\n export let accent: Accent = \"filled\";\n export let padding: Padding = \"relaxed\";\n export let testid: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = \"m\";\n export let ml: Spacing = null;\n\n onMount(() => {\n validateType(type);\n validateAccent(accent);\n validatePadding(padding);\n });\n</script>\n\n<!-- HTML -->\n\n<div\n data-testid={testid}\n style={calculateMargin(mt, mr, mb, ml)}\n class={`\n goa-container\n goa-container--${type}\n padding--${padding}\n accent--${accent}\n `}\n>\n <header class=\"heading--{accent}\">\n <div class=\"title\">\n <slot name=\"title\" />\n </div>\n\n <div class=\"actions\">\n <slot name=\"actions\" />\n </div>\n </header>\n <div class=\"content\">\n <slot />\n </div>\n</div>\n\n<!-- Style -->\n\n<style> \n :host {\n display: flex;\n flex: 1 1 auto;\n }\n \n .goa-container {\n box-sizing: border-box;\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n }\n\n .goa-container * {\n box-sizing: border-box;\n }\n\n header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-weight: 700;\n\n font-size: var(--goa-font-size-4);\n border-width: 1px;\n border-style: solid;\n border-top-left-radius: var(--goa-border-radius-m);\n border-top-right-radius: var(--goa-border-radius-m);\n }\n\n .content {\n border-bottom: 1px solid var(--goa-color-greyscale-200);\n border-left: 1px solid var(--goa-color-greyscale-200);\n border-right: 1px solid var(--goa-color-greyscale-200);\n border-bottom-left-radius: var(--goa-border-radius-m);\n border-bottom-right-radius: var(--goa-border-radius-m);\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n }\n\n .content :global(::slotted(*:last-child)) {\n margin-bottom: 0 !important;\n }\n\n /* Background Colour */\n\n .goa-container--non-interactive.accent--filled .content {\n border-color: var(--goa-color-greyscale-200);\n background-color: var(--goa-color-greyscale-100);\n }\n .goa-container--important.accent--filled .content {\n border-color: var(--goa-color-warning-default);\n background-color: var(--goa-color-warning-background);\n }\n .goa-container--error.accent--filled .content {\n border-color: var(--goa-color-emergency-default);\n background-color: var(--goa-color-emergency-background);\n }\n .goa-container--success.accent--filled .content {\n border-color: var(--goa-color-success-default);\n background-color: var(--goa-color-success-background);\n }\n .goa-container--info.accent--filled .content {\n border-color: var(--goa-color-info-default);\n background-color: var(--goa-color-info-background);\n }\n\n .title,\n .actions {\n padding: 0.5rem 0;\n }\n\n /* Padding variants */\n\n .padding--relaxed header {\n padding: 0 1.5rem;\n }\n\n .padding--relaxed .content {\n padding: 1.5rem;\n }\n\n .padding--compact header,\n .padding--compact .content {\n padding: 0 1rem;\n }\n\n .padding--compact header {\n padding: 0 1rem;\n }\n\n .padding--compact .content {\n padding: 1rem;\n }\n\n /* Override padding in small screens to the compact value */\n @media (--mobile) {\n .padding--relaxed header {\n padding: 0 1rem;\n }\n .padding--relaxed .content {\n padding: 1rem;\n }\n }\n\n /* colors */\n\n .goa-container--non-interactive header {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-200);\n color: var(--goa-color-greyscale-black);\n }\n\n .goa-container--interactive header {\n background-color: var(--goa-color-brand-default);\n border-color: var(--goa-color-brand-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .goa-container--info header {\n background-color: var(--goa-color-info-default);\n border-color: var(--goa-color-info-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .goa-container--error header {\n /* TODO: need a better color name here */\n background-color: var(--goa-color-emergency-default);\n border-color: var(--goa-color-emergency-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .goa-container--success header {\n /* TODO: need a better color name here */\n background-color: var(--goa-color-success-default);\n border-color: var(--goa-color-success-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .goa-container--important header {\n background-color: var(--goa-color-warning-default);\n border-color: var(--goa-color-warning-default);\n color: var(--goa-color-greyscale-white);\n }\n\n /* Sizes */\n .heading--thick {\n padding: 0.5rem 1.5rem;\n max-height: 3rem;\n min-height: 1rem;\n }\n\n .heading--thick .title {\n line-height: 2rem;\n }\n\n .heading--thin {\n height: 0.5rem;\n }\n\n .heading--filled {\n display: none;\n }\n .heading--filled ~ .content {\n border-top: 1px solid var(--goa-color-greyscale-200);\n border-top-left-radius: var(--goa-border-radius-m);\n border-top-right-radius: var(--goa-border-radius-m);\n }\n\n .heading--thin .title,\n .heading--thin .actions {\n display: none;\n }\n\n .actions {\n display: flex;\n align-items: center;\n }\n</style>\n","<svelte:options customElement=\"goa-date-picker\" />\n\n<script lang=\"ts\">\n import { afterUpdate, onMount } from \"svelte\";\n import {\n addDays,\n addMonths,\n addYears,\n format,\n isValid,\n startOfDay,\n } from \"date-fns\";\n import type { Spacing } from \"../../common/styling\";\n\n type DateValue = {\n type: \"date\";\n value: Date;\n };\n\n export let value: string = \"\";\n export let min: string = \"\";\n export let max: string = \"\";\n export let relative: string = \"false\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // re-initializes the date if the value is changed externally\n // $: value && initDate();\n\n let _oldValue: Date;\n let _rootEl: Element;\n let _date: Date | null;\n let _showPopover: boolean = false;\n\n onMount(async () => {\n await initDate();\n });\n\n // FIXME: This breaks keyboard entry\n afterUpdate(() => {\n // @ts-expect-error: string / int comparison is performed here\n if (_oldValue != value) {\n initDate();\n }\n });\n\n async function initDate() {\n _date = (value && startOfDay(new Date(value))) || null;\n if (value && !isValid(_date)) {\n console.error(`${value} is not a valid date`);\n }\n }\n\n function onCalendarChange(e: CustomEvent) {\n _date = e.detail.value;\n if (_date) {\n value = _date.toISOString();\n hideCalendar();\n dispatchValue(_date);\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n function dispatchValue(date: Date | null) {\n if (!date) return;\n _oldValue = date;\n _rootEl.dispatchEvent(\n new CustomEvent<DateValue>(\"_change\", {\n composed: true,\n bubbles: true,\n detail: {\n type: \"date\",\n value: date,\n },\n }),\n );\n }\n\n function formatDate(d: Date | string | null): string {\n if (!d) return \"\";\n\n if (typeof d === \"string\") {\n return format(new Date(d), \"PPP\");\n }\n return format(d, \"PPP\");\n }\n\n function hideCalendar() {\n _showPopover = false;\n }\n\n function showCalendar() {\n _showPopover = true;\n }\n\n function handleKeyDown(e: KeyboardEvent) {\n if ([\"Space\", \"Enter\"].includes(e.key)) {\n showCalendar();\n return;\n }\n\n // in the key event handling below the first line `_date ||= ...` is to initialize the date, if\n // it hasn't yet been set to 1 unit opposite of what the keybinding does ex. if ArrowDown is\n // clicked, which moves the datepicker one week ahead, the date is initialize one week before.\n // This is to allow the starting date displayed to be that of today no matter what key is\n // pressed.\n\n switch (e.key) {\n case \"ArrowLeft\":\n _date ||= addDays(new Date(), 1);\n _date = addDays(_date, -1);\n break;\n case \"ArrowRight\":\n _date ||= addDays(new Date(), -1);\n _date = addDays(_date, 1);\n break;\n case \"ArrowDown\":\n _date ||= addDays(new Date(), -7);\n _date = addDays(_date, 7);\n break;\n case \"ArrowUp\":\n _date ||= addDays(new Date(), 7);\n _date = addDays(_date, -7);\n break;\n case \"PageUp\":\n _date ||= e.shiftKey\n ? addYears(new Date(), 1)\n : addMonths(new Date(), 1);\n _date = e.shiftKey ? addYears(_date, -1) : addMonths(_date, -1);\n break;\n case \"PageDown\":\n _date ||= e.shiftKey\n ? addYears(new Date(), -1)\n : addMonths(new Date(), -1);\n _date = e.shiftKey ? addYears(_date, 1) : addMonths(_date, 1);\n break;\n default:\n return;\n }\n\n dispatchValue(_date);\n\n e.preventDefault();\n e.stopPropagation();\n }\n</script>\n\n<goa-popover\n bind:this={_rootEl}\n tabindex=\"-1\"\n {relative}\n {mt}\n {mb}\n {ml}\n {mr}\n open={_showPopover}\n on:_close={() => dispatchValue(_date)}\n>\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <goa-input\n slot=\"target\"\n readonly=\"true\"\n trailingicon=\"calendar\"\n value={formatDate(_date)}\n on:click={showCalendar}\n on:keydown={handleKeyDown}\n />\n <goa-calendar\n {value}\n {min}\n {max}\n bordered=\"false\"\n on:_change={onCalendarChange}\n />\n</goa-popover>\n","<svelte:options customElement=\"goa-details\" />\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { calculateMargin } from \"../../common/styling\";\n import { toBoolean, validateRequired} from \"../../common/utils\";\n import type { Spacing } from \"../../common/styling\";\n\n export let heading: string;\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n export let open: string = \"false\";\n\n let _isMouseOver: boolean = false\n let _summaryEl: HTMLElement;\n let _detailsEl: HTMLElement;\n\n $: _isOpen = toBoolean(open);\n\n\n onMount(() => {\n validateRequired(\"Details\", { heading });\n\n _summaryEl.addEventListener(\"mouseover\", () => {\n _isMouseOver = true;\n });\n\n _summaryEl.addEventListener(\"mouseout\", () => {\n _isMouseOver = false;\n });\n });\n</script>\n\n<style>\n :host {\n font-family: var(--goa-font-family-sans);\n }\n\n details {\n max-width: 75ch;\n position: relative;\n }\n\n details :global(::slotted(*)) {\n font: var(--goa-typography-body-m);\n }\n\n summary {\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n cursor: pointer;\n list-style: none;\n display: flex;\n align-items: flex-start;\n }\n\n goa-icon {\n /* transition: transform 80ms ease; */\n position: absolute;\n }\n\n details[open] goa-icon {\n transform: translateX(-1px) rotate(90deg);\n top: 0.75rem;\n }\n\n /* Hide native icon on iOS */\n details summary::-webkit-details-marker {\n display:none;\n }\n\n summary {\n border-radius: var(--goa-border-radius-m);\n }\n summary:focus,\n summary:active {\n outline: 3px solid var(--goa-color-interactive-focus);\n border-radius: var(--goa-border-radius-m);\n color: var(--goa-color-interactive-hover);\n background-color: var(--goa-color-greyscale-100);\n }\n summary:hover {\n background-color: var(--goa-color-greyscale-100);\n }\n\n summary span {\n margin-left: 2rem;\n text-decoration: underline;\n color: var(--goa-color-interactive-default);\n padding-bottom: var(--font-valign-fix);\n line-height: var(--goa-line-height-3);\n }\n summary:hover span {\n color: var(--goa-color-interactive-hover);\n }\n\n .content {\n border-left: 4px solid var(--goa-color-greyscale-200);\n padding: 1rem;\n margin-left: 1.1rem;\n margin-bottom: var(--goa-space-s);\n }\n\n .content :global(::slotted(p:last-child)) {\n margin-bottom: 0 !important;\n }\n</style>\n\n<details\n bind:this={_detailsEl}\n open={_isOpen}\n on:toggle={({target}) => open = `${target.open}`}\n style={calculateMargin(mt, mr, mb, ml)}>\n <summary bind:this={_summaryEl}>\n <goa-icon\n mt=\"1\"\n mr=\"2\"\n type=\"chevron-forward\"\n fillcolor={_isMouseOver ? \"var(--goa-color-interactive-hover)\" : \"var(--goa-color-interactive-default)\"}\n />\n <span>{heading}</span>\n </summary>\n <div class=\"content\">\n <slot />\n </div>\n</details>\n\n","<svelte:options customElement=\"goa-divider\" />\n\n<script lang=\"ts\">\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n\n export let testid: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n</script>\n\n<hr data-testid={testid} style={calculateMargin(mt, mr, mb, ml)} />\n\n<style>\n hr {\n padding: 0;\n margin: 0;\n height: 1px;\n background-color: var(--goa-color-greyscale-200);\n border: none;\n }\n</style>\n","<svelte:options customElement=\"goa-dropdown\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { fromBoolean, toBoolean } from \"../../common/utils\";\n import { calculateMargin } from \"../../common/styling\";\n\n interface Option {\n label: string;\n value: string;\n filter: string;\n }\n\n interface EventHandler {\n handleKeyUp: (e: KeyboardEvent) => void;\n handleKeyDown: (e: KeyboardEvent) => void;\n }\n\n // Props\n\n export let name: string;\n export let arialabel: string = \"\";\n export let arialabelledby: string = \"\";\n export let value: string = \"\";\n export let filterable: string = \"false\";\n export let leadingicon: GoAIconType | null = null;\n export let maxheight: string = \"276px\";\n export let placeholder: string = \"\";\n export let width: string = \"\";\n export let disabled: string = \"false\";\n export let error: string = \"false\";\n export let multiselect: string = \"false\";\n export let native: string = \"false\";\n export let relative: string = \"false\";\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n //\n // Private\n //\n\n let _options: Option[] = [];\n let _isMenuVisible = false;\n let _highlightedIndex: number = -1;\n let _width: string;\n\n let _wrapperEl: HTMLElement;\n let _rootEl: HTMLElement;\n let _menuEl: HTMLElement;\n let _selectEl: HTMLSelectElement;\n let _inputEl: HTMLInputElement;\n let _eventHandler: EventHandler;\n\n let _isDirty: boolean = false;\n let _filteredOptions: Option[] = [];\n let _values: string[] = [];\n\n //\n // Reactive\n //\n\n $: _disabled = toBoolean(disabled);\n $: _error = toBoolean(error);\n $: _multiselect = toBoolean(multiselect);\n $: _native = toBoolean(native);\n $: _filterable = toBoolean(filterable) && !_native;\n\n // To keep track of active descendant for the accessibility\n $: _activeDescendantId = _filteredOptions[_highlightedIndex]\n ? _filteredOptions[_highlightedIndex].value\n : undefined;\n\n $: {\n _values = parseValues(value);\n // updating _inputEl.value is done within seperate function\n // to prevent unwanted reactive updates.\n setDisplayedValue();\n }\n\n //\n // Hooks\n //\n\n onMount(async () => {\n await tick();\n _eventHandler = _filterable\n ? new ComboboxKeyUpHandler(_inputEl)\n : new DropdownKeyUpHandler(_inputEl);\n\n // the following is required to appease the unit testing gods in that they don't respond\n // to the slotchange event\n _options = getOptions();\n\n if (!_native) {\n _inputEl.value = _options.find((o) => o.value === value)?.label ?? \"\";\n\n if (width) {\n _width = width;\n if (width.endsWith(\"%\")) {\n calculatePercentWidth();\n } else {\n _width = width;\n }\n }\n\n // This is only here to allow the tests to pass :(\n if (!width && _options.length > 0) {\n _width = getLongestChildWidth(_options);\n }\n }\n\n syncFilteredOptions();\n\n // watch for DOM changes within the slot => dynamic binding\n const slot = _rootEl.querySelector(\"slot\");\n slot?.addEventListener(\"slotchange\", () => {\n if (!_rootEl) return;\n\n _options = getOptions();\n syncFilteredOptions();\n\n if (!width) {\n _width = getLongestChildWidth(_options);\n }\n\n if (!_native) {\n setDisplayedValue();\n }\n });\n });\n\n //\n // Functions\n //\n\n function calculatePercentWidth() {\n const rootWidth = _wrapperEl.getBoundingClientRect()?.width;\n const percent = parseInt(width) / 100;\n _width = percent * rootWidth + \"px\";\n }\n\n // prevents unwanted reactive updates.\n function setDisplayedValue() {\n if (_inputEl) {\n const option = _options.find((o) => o.value == _values[0]); // possible string number comparison\n _inputEl.value = option?.label ?? option?.value ?? \"\";\n }\n }\n\n // parse and convert values to strings to avoid later type comparison issues\n function parseValues(selectedValue: string) {\n let rawValue: string[];\n try {\n rawValue = JSON.parse(selectedValue || `[\"\"]`);\n } catch (e) {\n rawValue = [selectedValue];\n }\n const rawValues = typeof rawValue === \"object\" ? rawValue : [rawValue];\n // convert all values to strings to avoid later type comparison issues\n return rawValues.map((val: unknown) => `${val}`);\n }\n\n function getChildren(): Element[] {\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n // default\n return slot.assignedElements();\n }\n // unit tests\n const el = _native ? _selectEl : _rootEl;\n // @ts-expect-error\n return [...el.children] as Element[];\n }\n\n // Create a list of the options based on the children within the slot\n // The children don't have to be goa-dropdown-item elements. Any child element\n // work as long as it has a value and label content\n function getOptions(): Option[] {\n return getChildren()\n .filter((child: Element) => child.tagName === \"GOA-DROPDOWN-ITEM\")\n .map((el: Element) => {\n const option = el as unknown as Option;\n const value = el.getAttribute(\"value\") || option.value || \"\";\n const label =\n el.getAttribute(\"label\") || option.label || el.innerHTML || value;\n const filter = el.getAttribute(\"filter\") || label || value || \"\";\n\n return { value, label, filter } as Option;\n });\n }\n\n // compute the required width to ensure all children fit\n function getLongestChildWidth(options: Option[]): string {\n // set width to longest item\n const optionsWidth = options\n .map((option: Option) => {\n const label = `${option.label}` || `${option.value}` || \"\";\n return label.length;\n })\n .sort((a: number, b: number) => (a > b ? 1 : -1))\n .pop();\n\n // longest one defines the width\n let maxWidth = Math.max(optionsWidth || 0, placeholder.length) + 8;\n\n // compensate for icon width\n if (leadingicon) {\n maxWidth += 2;\n }\n\n return `${maxWidth}ch`;\n }\n\n // Change the direction of highlighted options for Arrow up and down\n function changeHighlightedOption(offset: number) {\n let index = _highlightedIndex + offset;\n let items = !_filteredOptions?.length ? _options : _filteredOptions;\n if (items.length === 0) return;\n\n // if index is out of scope\n if (index < 0) {\n index = _filterable ? items.length - 1 : 0;\n } else if (index >= items.length) {\n index = _filterable ? 0 : items.length - 1;\n }\n _highlightedIndex = index;\n scrollToOption(index);\n }\n\n function scrollToOption(index: number) {\n const liNode = _menuEl.querySelector(\n `li[data-index=\"${index}\"]`,\n ) as HTMLLIElement;\n if (!liNode) return;\n\n const liOptionRect = liNode.getBoundingClientRect();\n const ulRect = _menuEl.getBoundingClientRect();\n const isInView =\n liOptionRect.top >= 0 &&\n liOptionRect.left >= 0 &&\n liOptionRect.bottom <= ulRect.height &&\n liOptionRect.right <= ulRect.width;\n\n if (isInView) return;\n\n liNode.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n }\n\n function syncFilteredOptions() {\n _filteredOptions = _filterable\n ? _options.filter((option) => isFilterMatch(option, _inputEl.value))\n : _options;\n }\n\n function showMenu() {\n if (_disabled) {\n return;\n }\n\n setTimeout(() => {\n syncFilteredOptions();\n _isMenuVisible = true;\n _inputEl?.focus();\n }, 0);\n }\n\n function hideMenu() {\n _isMenuVisible = false;\n }\n\n function isFilterMatch(option: Option, filter: string) {\n if (filter.length === 0) return true;\n\n let value = option.filter || option.label || option.value;\n value = value.toLowerCase();\n filter = filter.toLowerCase();\n\n return value.startsWith(filter) || value.includes(\" \" + filter);\n }\n\n function dispatchValue(value?: string) {\n const detail = _multiselect\n ? { name, values: [value, ..._values] }\n : { name, value: value };\n\n setTimeout(() => {\n _rootEl.dispatchEvent(\n new CustomEvent(\"_change\", { composed: true, detail }),\n );\n _isDirty = false;\n }, 1);\n }\n\n //\n // Event handlers\n //\n\n function onSelect(option: Option) {\n if (_disabled) return;\n if (!_native) {\n _isDirty = true;\n hideMenu();\n _inputEl.value = option.label;\n }\n dispatchValue(option.value);\n }\n\n /**\n * When website autofill value without user keyboard\n */\n async function onChange() {\n await tick();\n syncFilteredOptions();\n if (_filteredOptions.length === 1) {\n dispatchValue(_filteredOptions[0].value);\n setTimeout(() => {\n hideMenu();\n }, 100);\n }\n }\n\n function onInputKeyUp(e: KeyboardEvent) {\n if (_disabled) return;\n _eventHandler.handleKeyUp(e);\n }\n\n function onInputKeyDown(e: KeyboardEvent) {\n if (_disabled) return;\n _eventHandler.handleKeyDown(e);\n }\n\n function onClearIconKeyDown(e: KeyboardEvent) {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n reset();\n showMenu();\n }\n }\n\n function onClearIconClick(e: Event) {\n reset();\n showMenu();\n e.stopPropagation();\n }\n\n function onNativeSelect(e: Event) {\n const target = e.currentTarget as HTMLSelectElement;\n const option = _options[target.selectedIndex];\n onSelect(option);\n }\n\n function reset() {\n if (_disabled) return;\n\n _activeDescendantId = undefined;\n _highlightedIndex = -1;\n _inputEl.value = \"\";\n _isDirty = false;\n syncFilteredOptions();\n\n dispatchValue(\"\");\n }\n\n function onChevronClick(e: Event) {\n showMenu();\n e.stopPropagation();\n }\n\n class ComboboxKeyUpHandler implements EventHandler {\n constructor(private input: HTMLInputElement) {\n input.addEventListener(\"blur\", async (e) => {\n if (!_isDirty) return;\n if (!_filterable) return;\n\n const input = e.target as HTMLInputElement;\n const selectedOption = _filteredOptions.find(\n (o) => o.label === input.value,\n );\n\n if (!selectedOption) {\n dispatchValue(\"\");\n input.value = \"\";\n }\n });\n }\n\n onEscape(e: KeyboardEvent) {\n reset();\n _inputEl.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n\n onEnter(e: KeyboardEvent) {\n const option = _filteredOptions[_highlightedIndex];\n if (option) {\n onSelect(option);\n }\n\n if (_inputEl.value) {\n hideMenu();\n } else {\n showMenu();\n }\n\n e.stopPropagation();\n }\n\n onArrow(e: KeyboardEvent, direction: \"up\" | \"down\") {\n if (!_isMenuVisible) showMenu();\n changeHighlightedOption(direction === \"up\" ? -1 : 1);\n e.stopPropagation();\n }\n\n onTab(_: KeyboardEvent) {\n const matchedOption = _filteredOptions.find(\n (option) =>\n option.label.toLowerCase() === this.input.value.toLowerCase(),\n );\n if (matchedOption) {\n onSelect(matchedOption);\n }\n hideMenu();\n }\n\n onKeyUp(_: KeyboardEvent) {\n showMenu();\n _isDirty = true;\n }\n\n handleKeyUp(e: KeyboardEvent) {\n switch (e.key) {\n case \"Enter\":\n this.onEnter(e);\n break;\n case \"ArrowUp\":\n this.onArrow(e, \"up\");\n break;\n case \"ArrowDown\":\n this.onArrow(e, \"down\");\n break;\n case \"Home\":\n this.input.setSelectionRange(0, 0);\n break;\n case \"End\":\n this.input.setSelectionRange(\n this.input.value.length,\n this.input.value.length,\n );\n break;\n default:\n this.onKeyUp(e);\n break;\n }\n }\n\n handleKeyDown(e: KeyboardEvent) {\n switch (e.key) {\n case \"Escape\":\n this.onEscape(e);\n break;\n case \"Tab\":\n this.onTab(e);\n break;\n }\n }\n }\n\n class DropdownKeyUpHandler implements EventHandler {\n constructor(_input: HTMLInputElement) {}\n\n onEnter(e: KeyboardEvent) {\n if (_isMenuVisible) {\n const option = _filteredOptions[_highlightedIndex];\n if (option) {\n onSelect(option);\n }\n hideMenu();\n } else {\n showMenu();\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n\n onArrow(e: KeyboardEvent, direction: \"up\" | \"down\") {\n if (!_isMenuVisible) showMenu();\n changeHighlightedOption(direction === \"up\" ? -1 : 1);\n e.preventDefault();\n e.stopPropagation();\n }\n\n handleKeyDown(e: KeyboardEvent) {\n switch (e.key) {\n case \" \":\n case \"Enter\":\n this.onEnter(e);\n break;\n case \"ArrowUp\":\n this.onArrow(e, \"up\");\n break;\n case \"ArrowDown\":\n this.onArrow(e, \"down\");\n break;\n case \"Tab\":\n hideMenu();\n break;\n }\n\n return false;\n }\n\n handleKeyUp(e: KeyboardEvent) {\n switch (e.key) {\n case \"ArrowUp\":\n case \"ArrowDown\":\n case \" \":\n case \"Enter\":\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }\n</script>\n\n<!-- Template -->\n<div bind:this={_wrapperEl}>\n <div\n data-testid={`${name}-dropdown`}\n class=\"dropdown\"\n class:dropdown-native={_native}\n style={`\n ${calculateMargin(mt, mr, mb, ml)};\n --width: ${_width};\n `}\n bind:this={_rootEl}\n >\n {#if _native}\n <select\n {name}\n aria-label={arialabel || name}\n aria-labelledby={arialabelledby}\n class:error={_error}\n disabled={_disabled}\n id={name}\n bind:this={_selectEl}\n on:change={onNativeSelect}\n >\n <slot />\n {#each _options as option}\n <option selected={value === option.value} value={option.value}>\n {option.label}\n </option>\n {/each}\n </select>\n {:else}\n <!-- list and filter -->\n <slot />\n <goa-popover\n {disabled}\n {relative}\n data-testid=\"option-list\"\n maxwidth={_width}\n open={_isMenuVisible}\n padded=\"false\"\n tabindex=\"-1\"\n width={_width}\n on:_open={showMenu}\n on:_close={hideMenu}\n >\n <div\n slot=\"target\"\n class=\"dropdown-input-group\"\n class:dropdown-input-group--disabled={_disabled}\n class:error={_error}\n >\n {#if leadingicon}\n <goa-icon\n class=\"dropdown-input--leading-icon\"\n data-testid=\"leading-icon\"\n type={leadingicon}\n />\n {/if}\n\n <input\n style={`\n cursor: ${!_disabled ? (_filterable ? \"auto\" : \"pointer\") : \"default\"};\n `}\n data-testid=\"input\"\n bind:this={_inputEl}\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n aria-autocomplete=\"list\"\n aria-controls={`menu-${name}`}\n aria-expanded={_isMenuVisible}\n aria-label={arialabel || name}\n aria-labelledby={arialabelledby}\n id={name}\n aria-activedescendant={_activeDescendantId}\n aria-disabled={_disabled}\n aria-owns={_isMenuVisible ? `menu-${name}` : undefined}\n aria-haspopup=\"listbox\"\n disabled={_disabled}\n readonly={!_filterable}\n {placeholder}\n {name}\n on:keydown={onInputKeyDown}\n on:keyup={onInputKeyUp}\n on:change={onChange}\n />\n\n {#if _inputEl?.value && _filterable}\n <goa-icon\n id={name}\n tabindex={_disabled ? -1 : 0}\n role=\"button\"\n arialabel={`clear ${arialabel || name}`}\n ariacontrols={`menu-${name}`}\n ariaexpanded={fromBoolean(_isMenuVisible)}\n on:click|stopPropagation={onClearIconClick}\n on:keydown={onClearIconKeyDown}\n class=\"dropdown-icon--clear\"\n class:disabled={_disabled}\n size=\"medium\"\n type=\"close\"\n />\n {:else}\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <goa-icon\n role=\"button\"\n tabindex=\"-1\"\n id={name}\n arialabel={arialabel || name}\n ariacontrols={`menu-${name}`}\n ariaexpanded={fromBoolean(_isMenuVisible)}\n class=\"dropdown-icon--arrow\"\n size=\"medium\"\n type={_isMenuVisible ? \"chevron-up\" : \"chevron-down\"}\n on:click={onChevronClick}\n />\n {/if}\n </div>\n\n <!--Menu-->\n <ul\n id={`menu-${name}`}\n role=\"listbox\"\n tabindex=\"-1\"\n data-testid=\"dropdown-menu\"\n bind:this={_menuEl}\n aria-label={arialabel || name}\n aria-labelledby={arialabelledby}\n style={`\n outline: none;\n overflow-y: auto;\n max-height: ${maxheight};\n `}\n >\n {#each _filteredOptions as option, index (index)}\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <li\n id={option.value}\n aria-selected={_inputEl.value === (option.label || option.value)}\n class=\"dropdown-item\"\n class:dropdown-item--highlighted={index === _highlightedIndex}\n class:selected={_inputEl.value === (option.label || option.value)}\n data-index={index}\n data-testid={`dropdown-item-${option.value}`}\n data-value={option.value}\n role=\"option\"\n style=\"display: block\"\n on:click={() => onSelect(option)}\n >\n {option.label || option.value}\n </li>\n {:else}\n {#if _filterable}\n <li class=\"dropdown-item\" data-testid=\"dropdown-item-not-found\">\n No matches found\n </li>\n {/if}\n {/each}\n </ul>\n </goa-popover>\n {/if}\n </div>\n</div>\n\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n .dropdown {\n cursor: pointer;\n width: var(--width, 100%);\n }\n\n @media (--mobile) {\n .dropdown {\n width: 100%;\n }\n }\n\n @media (--not-mobile) {\n .dropdown {\n width: var(--width, 100%);\n }\n }\n\n .dropdown-input-group {\n box-sizing: border-box;\n outline: none;\n transition: box-shadow 0.1s ease-in;\n border: 1px solid var(--goa-color-greyscale-700);\n border-radius: var(--goa-border-radius-m);\n display: inline-flex;\n align-items: stretch;\n\n /* The vertical align fixes inputs with a leading icon to not be vertically offset */\n vertical-align: middle;\n background-color: var(--goa-color-greyscale-white);\n cursor: pointer;\n width: var(--width, 100%);\n }\n\n .dropdown-input-group:hover {\n border-color: var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n }\n\n .dropdown-input-group:focus,\n .dropdown-input-group:focus-within {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n }\n\n @container not (--mobile) {\n .dropdown-input-group {\n width: var(--width);\n }\n }\n\n .dropdown-input-group.error,\n .dropdown-input-group.error:hover {\n border: 2px solid var(--goa-color-interactive-error);\n box-shadow: 0 0 0 1px var(--goa-color-interactive-error);\n }\n\n .dropdown-input-group.error:focus-within,\n .dropdown-input-group.error:focus {\n border: 2px solid var(--goa-color-interactive-error);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n }\n\n .dropdown-icon--arrow,\n .dropdown-icon--clear {\n margin-right: var(--goa-space-s);\n }\n\n .dropdown-icon--clear:focus:not(.disabled),\n .dropdown-icon--clear:active:not(.disabled) {\n color: var(--goa-color-interactive-focus);\n outline: none;\n }\n\n .dropdown-input--leading-icon {\n margin-left: 0.75rem;\n }\n\n .dropdown-input--leading-icon + input {\n padding-left: 0.5rem;\n }\n\n input {\n display: inline-block;\n color: var(--goa-color-text-default);\n font-size: var(--goa-font-size-4);\n padding: var(--goa-space-xs);\n padding-left: var(--goa-space-s);\n line-height: calc(40px - calc(var(--goa-space-xs) * 2));\n background-color: transparent;\n width: 100%;\n flex: 1 1 auto;\n font-family: var(--goa-font-family-sans);\n z-index: 1;\n }\n\n input,\n input:focus,\n input:hover,\n input:active {\n outline: none;\n border: none;\n }\n\n input[aria-disabled=\"true\"] {\n color: var(--goa-color-text-secondary);\n }\n\n .dropdown-input-group--disabled,\n .dropdown-input-group--disabled:hover,\n .dropdown-input-group--disabled:active,\n .dropdown-input-group--disabled:focus {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-200) !important;\n cursor: default;\n box-shadow: none !important;\n }\n\n /** menu **/\n ul[role=\"listbox\"] {\n border-radius: var(--goa-border-radius-m);\n padding: 0;\n margin: 0;\n }\n\n /* dropdown items */\n\n .dropdown-item {\n margin: 0;\n padding: 0.5rem;\n cursor: pointer;\n color: var(--goa-color-greyscale-black);\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .dropdown-item:hover,\n .dropdown-item--highlighted {\n background: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n }\n\n .dropdown-item[aria-selected=\"true\"] {\n background: var(--goa-color-interactive-default);\n color: var(--goa-color-greyscale-white);\n }\n\n .dropdown-item[aria-selected=\"true\"]:hover,\n .dropdown-item[aria-selected=\"true\"].dropdown-item--highlighted {\n background: var(--goa-color-interactive-hover);\n color: var(--goa-color-greyscale-white);\n }\n\n /* Native styling */\n .dropdown-native {\n position: relative;\n border: 1px solid var(--goa-color-greyscale-700);\n border-radius: var(--goa-border-radius-m);\n background-color: var(--goa-color-greyscale-white);\n transition: box-shadow 0.1s ease-in;\n }\n\n .dropdown-native:has(select:disabled) {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-200);\n box-shadow: none;\n color: var(--goa-color-text-secondary);\n cursor: default;\n }\n\n .dropdown-native:has(select.error) {\n border: 2px solid var(--goa-color-interactive-error);\n }\n\n .dropdown-native:hover {\n border-color: var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n }\n\n select {\n border: none;\n font: var(--goa-font-family-sans);\n background-color: transparent;\n color: var(--goa-color-text-default);\n font-size: var(--goa-font-size-4);\n appearance: none;\n padding: calc(var(--goa-space-xs) + 1px);\n padding-left: var(--goa-space-s);\n padding-right: 3rem;\n outline: none;\n width: 100%;\n }\n\n .dropdown-native::after {\n content: \"\";\n position: absolute;\n right: 0.6rem;\n top: 0.6rem;\n pointer-events: none;\n width: 1.5rem;\n height: 1.5rem;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path fill='none' stroke='%23333333' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 184l144 144 144-144' /%3E%3C/svg%3E\");\n background-repeat: none;\n }\n\n .dropdown-native:focus-within {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n }\n</style>\n","<svelte:options customElement=\"goa-dropdown-item\" />\n\n<script lang=\"ts\">\n export let filter: string = \"\";\n export let label: string = \"\";\n export let value: string = \"\";\n</script>\n","<svelte:options customElement=\"goa-file-upload-card\" />\n\n<script lang=\"ts\">\n import { getTimestamp } from \"../../common/utils\";\n\n // Public\n\n export let filename: string;\n export let size: number;\n export let type: string = \"\";\n export let progress: number = -1;\n export let error: string = \"\";\n\n // Private\n\n let _status: \"uploading\" | \"uploaded\" | \"error\" = \"uploading\";\n let _rootEl: HTMLElement;\n let _fileIcon: string = \"goa-file\";\n\n // Reactive\n\n $: _status =\n error && \"error\"\n || (progress >= 0 && progress < 100) && \"uploading\"\n || \"uploaded\"\n\n $: _fileIcon = filename && type && getFiletypeIcon(filename, type);\n\n // Functions\n\n function getFiletypeIcon(filename: string, type: string): string {\n // file extensions\n const parts = filename.split(\".\");\n const ext = parts[parts.length - 1];\n const extTypeIcon =\n ext === \"xlxs\" && \"goa-xls\"\n || ext === \"xls\" && \"goa-xls\"\n || ext === \"zip\" && \"goa-zip\"\n || ext === \"docx\" && \"goa-doc\"\n || ext === \"doc\" && \"goa-doc\"\n || ext === \"pptx\" && \"goa-ppt\"\n || ext === \"ppt\" && \"goa-ppt\"\n || ext === \"pdf\" && \"goa-pdf\"\n || ext === \"html\" && \"goa-html\"\n\n\n if (extTypeIcon) return extTypeIcon;\n\n // mimetype\n const mimeTypeIcon =\n type === \"application/vnd.ms-powerpoint\" && \"goa-ppt\"\n || type.includes(\"presentationml\") && \"goa-ppt\"\n || type.includes(\"wordprocessingml\") && \"goa-doc\"\n || type.includes(\"spreadsheet\") && \"goa-xls\"\n || type.startsWith(\"video\") && \"goa-video\"\n || type.startsWith(\"audio\") && \"goa-audio\"\n || type.startsWith(\"image\") && \"goa-image\"\n || type === \"application/msword\" && \"goa-doc\"\n || \"goa-file\"\n\n return mimeTypeIcon;\n }\n\n function dispatch(action: \"_delete\" | \"_cancel\") {\n _rootEl.dispatchEvent(\n new CustomEvent(action, {\n composed: true,\n }),\n );\n }\n\n function formatFileSize(bytes: number): string {\n switch (true) {\n case bytes < 1024:\n return bytes + \"B\";\n case bytes < 1024 * 1024:\n return Math.round(bytes / 1024) + \"KB\";\n case bytes < Math.pow(1024, 3):\n return Math.round(bytes / Math.pow(1024, 2)) + \"MB\";\n default:\n return \"n/a\";\n }\n }\n</script>\n\n<div id=\"container\">\n <div\n data-testid=\"root\"\n bind:this={_rootEl}\n class={`root ${_status}`}\n class:error\n >\n {#if _status === \"uploaded\"}\n <goa-icon\n class=\"fileicon\"\n data-testid=\"icon\"\n type={_fileIcon}\n fillcolor=\"#0070c4\"\n size=\"xlarge\"\n />\n {:else}\n <goa-icon\n class=\"fileicon\"\n data-testid=\"icon\"\n type=\"goa-file\"\n fillcolor=\"#dcdcdc\"\n size=\"xlarge\"\n />\n {/if}\n <div class=\"details\">\n <div class=\"filename\" data-testid=\"filename\">{filename}</div>\n {#if _status !== \"error\"}\n <div class=\"filesize\" data-testid=\"filesize\">{formatFileSize(size)}</div>\n {/if}\n {#if _status === \"uploading\"}\n <div class=\"progress\" data-testid=\"progress\">\n <progress value={progress} max=\"100\" />\n {Math.ceil(progress)}%\n </div>\n {:else if _status === \"uploaded\"}\n <div class=\"timestamp\" data-testid=\"timestamp\">\n Uploaded on {getTimestamp()}\n </div>\n {:else if _status === \"error\"}\n <div class=\"error-msg\" data-testid=\"error\">\n <goa-icon type=\"warning\" size=\"small\" theme=\"filled\" />\n {error}\n </div>\n {/if}\n </div>\n\n <div class=\"actions\" data-testid=\"actions\">\n {#if _status === \"uploading\"}\n <goa-button\n type=\"tertiary\"\n size=\"compact\"\n on:click={() => dispatch(\"_cancel\")}>Cancel</goa-button\n >\n {:else if _status === \"uploaded\"}\n <goa-button\n type=\"tertiary\"\n size=\"compact\"\n on:click={() => dispatch(\"_delete\")}\n leadingicon=\"trash\">Remove</goa-button\n >\n {:else if _status === \"error\"}\n <goa-button\n type=\"tertiary\"\n size=\"compact\"\n on:click={() => dispatch(\"_delete\")}\n variant=\"destructive\">Cancel</goa-button\n >\n {/if}\n </div>\n </div>\n</div>\n\n<style>\n #container {\n container: self / inline-size;\n }\n\n .root {\n display: grid;\n padding: var(--goa-space-l);\n border: var(--goa-border-width-s) solid var(--goa-color-greyscale-200);\n border-radius: var(--goa-border-radius-m);\n margin: 0.5rem 0;\n gap: 1rem;\n align-items: center;\n }\n\n .details {\n grid-area: details;\n\n display: flex;\n flex-direction: column;\n overflow-x: hidden;\n }\n\n .actions {\n grid-area: action;\n }\n\n @container self (--not-mobile) {\n .root {\n grid-template-columns: 38px 1fr auto;\n grid-template-rows: auto;\n grid-template-areas: \"icon details action\";\n }\n\n .details {\n /* To match the design specs of 1.5rem \"gap\" on left side => 1rem gap + 0.5rem margin */\n margin-left: 0.5rem;\n }\n }\n \n @container self (--mobile) {\n .root {\n grid-template-columns: 38px auto;\n grid-template-rows: repeat(2, auto);\n grid-template-areas:\n \"icon details\"\n \"action action\";\n }\n\n .actions {\n display: flex;\n justify-content: center;\n }\n }\n\n .root.error {\n border: var(--goa-border-width-m) solid var(--goa-color-interactive-error);\n }\n\n .fileicon {\n grid-area: icon;\n align-self: center;\n }\n\n .filename {\n grid-area: filename;\n font-size: var(--goa-font-size-4);\n overflow-wrap: anywhere;\n }\n\n .error-msg {\n display: flex;\n align-items: flex-start;\n margin-top: 0.5rem;\n gap: var(--goa-space-2xs);\n color: var(--goa-color-interactive-error);\n font: var(--goa-typography-body-xs);\n }\n\n .timestamp,\n .filesize {\n color: var(--goa-color-greyscale-700);\n font: var(--goa-typography-body-s);\n }\n\n .progress {\n display: flex;\n align-items: center;\n font: var(--goa-typography-body-xs);\n gap: 0.5rem;\n }\n\n progress {\n flex: 1 1 auto;\n\n -webkit-appearance: none;\n appearance: none;\n height: 4px;\n border: none;\n border-radius: var(--goa-border-radius-m);\n background: var(--goa-color-greyscale-200);\n color: var(--goa-color-greyscale-700);\n }\n\n /* iOS tweaks */\n progress::-webkit-progress-value {\n background: var(--goa-color-interactive-default);\n }\n progress::-webkit-progress-bar {\n background: var(--goa-color-greyscale-200);\n }\n progress::-moz-progress-bar {\n background: var(--goa-color-interactive-default);\n }\n</style>\n","<svelte:options customElement=\"goa-file-upload-input\" />\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n\n type Variant = \"dragdrop\" | \"button\";\n type Issue = {\n filename: string;\n error: string;\n }\n\n // Public\n\n export let variant: Variant = \"dragdrop\";\n export let accept: string = \"*\";\n export let maxfilesize: string = \"5MB\";\n\n // Private\n\n let _el: HTMLElement;\n let _fileInput: HTMLInputElement;\n let _state: \"hover\" | \"dragenter\" | \"default\" = \"default\";\n\n let issues: Issue[] = [];\n\n // Hooks\n\n onMount(() => {\n _fileInput.addEventListener(\n \"change\",\n () => {\n issues = []; // reset on every new batch of files\n\n // @ts-expect-error\n [..._fileInput.files].forEach((file) => {\n const error = validate(file);\n if (error) {\n issues = [{ filename: file.name, error }, ...issues];\n return;\n }\n dispatch(file);\n });\n _fileInput.value = \"\";\n },\n true,\n );\n });\n\n // Functions\n\n function validate(file: File): string | null {\n if (!isValidFileType(file)) {\n return \"Invalid file type\";\n }\n if (!isValidFileSize(file)) {\n return `The file must be less than ${maxfilesize}`;\n }\n return null;\n }\n\n function isValidFileType(file: File): boolean {\n const typeMatchers = accept.split(\",\");\n for (const matcher of typeMatchers) {\n const matches =\n file.type.match(matcher.replace(\"*\", \".*\").replace(\"/\", \"/\")) ||\n file.name.endsWith(accept);\n if (matches) {\n return true;\n }\n }\n return false;\n }\n\n function isValidFileSize(file: File): boolean {\n const [_, size, units] = maxfilesize.match(/(\\d*)(\\w*$)/);\n const factor = {\n B: 1,\n KB: 1024,\n MB: Math.pow(1024, 2),\n GB: Math.pow(1024, 3),\n };\n if (file.size / factor[units] > parseInt(size)) {\n return false;\n }\n return true;\n }\n\n function dispatch(file: File) {\n _el.dispatchEvent(\n new CustomEvent(\"_selectFile\", {\n composed: true,\n detail: { file },\n }),\n );\n }\n\n function openFilePicker() {\n _fileInput.click();\n }\n\n // Event handlers\n\n function onDrag(e: DragEvent) {\n e.preventDefault();\n return false;\n }\n\n function onDrop(e: DragEvent) {\n e.preventDefault();\n\n issues = []; // reset on every new batch of files\n\n if (e.dataTransfer?.items) {\n // @ts-expect-error\n [...e.dataTransfer.items].forEach((item) => {\n if (item.kind === \"file\") {\n const file = item.getAsFile();\n const error = validate(file);\n if (error) {\n issues = [{ filename: file.name, error }, ...issues];\n return;\n }\n dispatch(item.getAsFile());\n }\n });\n } else {\n // @ts-expect-error\n [...e.dataTransfer?.files].forEach((file) => {\n const error = validate(file);\n if (error) {\n issues = [{ filename: file.name, error }, ...issues];\n return;\n }\n dispatch(file);\n });\n }\n _fileInput.value = \"\";\n }\n\n function onDragEnter() {\n _state = \"dragenter\";\n }\n\n function onDragLeave(e: DragEvent) {\n // hovering over child components will result in the dragleave event to be fired,\n // so we must validate to whether the mouse pointer is within the bounds of the\n // dropable area\n const rect = _el.getBoundingClientRect();\n const withinBounds =\n e.clientX > rect.x &&\n e.clientX <= rect.x + rect.width &&\n e.clientY > rect.y &&\n e.clientY <= rect.y + rect.height;\n\n if (!withinBounds) {\n _state = \"default\";\n }\n }\n\n function onMouseOver() {\n _state = \"hover\";\n }\n\n function onMouseOut() {\n _state = \"default\";\n }\n</script>\n\n<!-- svelte-ignore\n a11y-click-events-have-key-events\n a11y-mouse-events-have-key-events\n-->\n{#if variant === \"dragdrop\"}\n <div\n bind:this={_el}\n data-testid=\"dragdrop\"\n class={`dragdrop state-${_state}`}\n on:click={openFilePicker}\n on:drop={onDrop}\n on:mouseover={onMouseOver}\n on:mouseout={onMouseOut}\n on:dragenter={onDragEnter}\n on:dragleave={onDragLeave}\n on:dragover={onDrag}\n >\n <div class=\"instructions\">\n <goa-icon type=\"cloud-upload\" size=\"large\" />\n <div>Drag and drop files here</div>\n <em>or</em>\n <div class=\"browse-files\">Browse files</div>\n </div>\n\n {#if maxfilesize}\n <em class=\"max-file-size\" data-testid=\"max-file-size\"\n >Maximum file size is {maxfilesize}.</em\n >\n {/if}\n\n <input\n data-testid=\"input\"\n tabindex=\"0\"\n type=\"file\"\n {accept}\n bind:this={_fileInput}\n />\n </div>\n{/if}\n\n{#if variant === \"button\"}\n <div class=\"button\" bind:this={_el}>\n <goa-button on:click={openFilePicker} type=\"secondary\">\n Choose file\n </goa-button>\n\n {#if maxfilesize}\n <em class=\"max-file-size\" data-testid=\"max-file-size\">\n Maximum file size is {maxfilesize}.\n </em>\n {/if}\n </div>\n\n <input\n bind:this={_fileInput}\n data-testid=\"input\"\n tabindex=\"-1\"\n type=\"file\"\n {accept}\n multiple\n />\n{/if}\n\n{#if issues.length}\n <div class=\"issues\">\n {#each issues as issue}\n <div class=\"issue\">\n {issue.filename}\n <div class=\"error\" data-testid=\"error\">\n <goa-icon type=\"warning\" size=\"small\" theme=\"filled\" />\n {issue.error}\n </div>\n </div>\n {/each}\n </div>\n{/if}\n\n<style>\n .dragdrop {\n border-radius: var(--goa-border-radius-m);\n border: var(--goa-border-width-m) dashed\n var(--goa-color-interactive-default);\n display: flex;\n font: var(--goa-typography-body-m);\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n padding: var(--goa-space-xl) 0;\n color: var(--goa-color-interactive-default);\n text-align: center;\n cursor: pointer;\n\n container: self / inline-size;\n }\n\n .dragdrop:active,\n .dragdrop:focus-within {\n border-style: solid;\n outline: none;\n }\n .dragdrop:hover div {\n color: var(--goa-color-interactive-hover);\n }\n\n /** States **/\n\n .state-default {\n background: var(--goa-color-info-background);\n }\n .state-hover {\n background: var(--goa-color-greyscale-100);\n border-style: dashed;\n }\n .state-dragenter {\n background: var(--goa-color-info-background);\n border-style: solid;\n }\n\n .instructions {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n goa-icon {\n margin-top: 4px;\n margin-right: 4px;\n }\n\n .browse-files {\n text-decoration: underline;\n }\n\n em {\n font-style: normal;\n font: var(--goa-typography-body-s);\n color: var(--goa-color-greyscale-700);\n }\n\n .max-file-size {\n display: block;\n margin-top: 0.5rem;\n }\n\n input[type=\"file\"] {\n position: absolute;\n left: -9999px;\n }\n\n /* issues */\n .issues {\n border-bottom: 1px solid var(--goa-color-greyscale-200);\n margin: 1rem 0;\n }\n .issue {\n margin-bottom: 1rem;\n }\n .error {\n color: var(--goa-color-interactive-error);\n font-size: 0.9em;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n @container self (--mobile) {\n .dragdrop {\n padding-top: 1.75rem;\n }\n .instructions {\n flex-direction: column;\n }\n }\n</style>\n","<svelte:options customElement=\"goa-focus-trap\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n // Private\n\n let rootEl: HTMLElement;\n let boundryStartEl: HTMLElement;\n let boundryEndEl: HTMLElement;\n let isShiftPressed: boolean;\n\n // Hooks\n\n onMount(async () => {\n await tick();\n // event is attached to the rootEl, eliminating the need to remove the listener since it\n // will be removed when the associated element is removed.\n rootEl.addEventListener(\"focus\", onFocus, true);\n rootEl.addEventListener(\"keydown\", onKeydown, true);\n rootEl.addEventListener(\"keyup\", onKeyup, true);\n\n boundryStartEl = rootEl.querySelector(\"[data-tab-boundry=start]\");\n boundryEndEl = rootEl.querySelector(\"[data-tab-boundry=end]\");\n });\n\n function onKeydown(e: KeyboardEvent) {\n if (e.shiftKey) isShiftPressed = true;\n }\n\n function onKeyup(e: KeyboardEvent) {\n if (e.shiftKey) isShiftPressed = false;\n }\n\n // Functions\n\n function isFocusable(node: Node): Node {\n const element = node as HTMLElement;\n const isTabbable =\n element.tabIndex > 0 ||\n (element.tabIndex === 0 && element.getAttribute(\"tabIndex\") !== null);\n\n if (isTabbable) return node;\n if (element[\"disabled\"]) return null;\n if (element.tabIndex < 0 || element.getAttribute?.(\"tabindex\") === \"-1\")\n return null;\n\n switch (element.nodeName) {\n case \"A\": {\n const el = element as HTMLLinkElement;\n if (!!el.href && el.rel !== \"ignore\") return node;\n }\n case \"INPUT\": {\n const el = element as HTMLInputElement;\n if (el.type !== \"hidden\" && el.type !== \"file\") return node;\n }\n case \"BUTTON\":\n case \"SELECT\":\n case \"TEXTAREA\":\n return node;\n default:\n return null;\n }\n }\n\n // Focus event handler\n function onFocus(event: Event): void {\n const el = event.target as HTMLElement;\n\n if (el.dataset.tabBoundry === \"start\") {\n if (isShiftPressed) {\n boundryEndEl.focus();\n return;\n }\n const next = findFirstNode([el.nextElementSibling], false) as HTMLElement;\n next?.focus();\n return;\n }\n\n if (el.dataset.tabBoundry === \"end\") {\n if (!isShiftPressed) {\n boundryStartEl.focus();\n return;\n }\n const next = findFirstNode(\n [el.previousElementSibling],\n true,\n ) as HTMLElement;\n next?.focus();\n return;\n }\n }\n\n function findFirstNode(\n nodes: NodeList | Node[],\n reversed: boolean = false,\n ): Node {\n const nodeList = reversed ? [...nodes].reverse() : nodes;\n for (const node of nodeList) {\n const el = \n isFocusable(node)\n || findFirstNode(node.childNodes, reversed)\n || findFirstNodeOfSlot(node, reversed)\n || findFirstNodeOfShadowDOM(node, reversed);\n if (el) {\n return el;\n }\n }\n return null;\n }\n\n function findFirstNodeOfSlot(node: Node, reversed: boolean): Node {\n if (!(node instanceof HTMLSlotElement)) return null;\n return findFirstNode([...node.assignedNodes()], reversed);\n }\n\n function findFirstNodeOfShadowDOM(node: Node, reversed: boolean): Node {\n if (!(node instanceof HTMLElement)) return null;\n return findFirstNode([...(node.shadowRoot?.childNodes || [])], reversed);\n }\n</script>\n\n<div bind:this={rootEl}>\n <!-- svelte-ignore a11y-no-noninteractive-tabindex -->\n <span data-tab-boundry=\"start\" tabindex=\"0\"></span>\n <slot />\n <!-- svelte-ignore a11y-no-noninteractive-tabindex -->\n <span data-tab-boundry=\"end\" tabindex=\"0\"></span>\n</div>\n\n<style>\n div {\n display: inline;\n }\n</style>\n","<svelte:options customElement=\"goa-app-footer\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n export let maxcontentwidth: string = \"\";\n\n let rootEl: HTMLElement;\n let navLinks: Element[];\n let metaLinks: Element[];\n\n const year = new Date().getFullYear();\n\n onMount(async () => {\n await tick();\n const navSlot = rootEl.querySelector(\"slot[name=nav]\") as HTMLSlotElement;\n const metaSlot = rootEl.querySelector(\"slot[name=meta]\") as HTMLSlotElement;\n\n navLinks = navSlot?.assignedElements();\n metaLinks = metaSlot?.assignedElements();\n });\n</script>\n\n<div\n class=\"app-footer\"\n bind:this={rootEl}\n style={`--max-content-width: ${maxcontentwidth || \"100%\"}`}\n>\n <div class=\"content\">\n <div class=\"nav-links\">\n <slot name=\"nav\" />\n </div>\n\n {#if navLinks && navLinks.length > 0}\n <goa-divider spacing=\"small\" />\n {/if}\n\n <div\n class=\"meta-section\"\n class:with-meta-links={metaLinks && metaLinks.length > 0}\n >\n <div class=\"meta-links\">\n <slot name=\"meta\" />\n </div>\n\n <div\n class=\"abgov\"\n class:with-meta-links={metaLinks && metaLinks.length > 0}\n >\n <a href=\"https://alberta.ca\">\n <img\n alt=\"GoA Logo\"\n class=\"logo\"\n src=\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='149.351' height='42' viewBox='0 0 149.351 42'%3E%3Cdefs%3E%3Cstyle%3E.a%7Bfill:none;%7D.b%7Bclip-path:url(%23a);%7D.c%7Bfill:%2300aad2;%7D.d%7Bfill:%235f6a72;%7D%3C/style%3E%3CclipPath id='a'%3E%3Crect class='a' width='149.351' height='42'/%3E%3C/clipPath%3E%3C/defs%3E%3Cg class='b'%3E%3Crect class='c' width='13.555' height='13.555' transform='translate(135.796 21.524)'/%3E%3Cpath class='d' d='M63.082,33.088c-1.383.138-2.835.277-4.357.346.553-4.357,2.835-10.373,5.671-9.405,1.66.553.761,5.671-1.314,9.059m-3.527,2.974a3.761,3.761,0,0,1-1.245,0,.851.851,0,0,0,.346-.692v-.553c.761,0,1.936-.138,3.389-.277a4.327,4.327,0,0,1-2.49,1.521M76.844,25.688c1.8-1.66,2.7-1.521,2.9-1.106.484.968-1.591,4.357-5.671,6.224a10.328,10.328,0,0,1,2.766-5.118m66.736,1.66c-.207-3.389-3.181-3.942-3.6-2.974-.138.346,1.106.207,1.106,2.628,0,3.942-4.011,9.129-9.129,9.129-5.532,0-6.985-4.357-7.261-6.432-.207-1.452.138-3.458-2.351-3.181-1.729.207-3.25,3.527-5.463,6.362-1.867,2.42-2.7,2.213-2.282.138.553-2.628,2.7-8.714,5.187-9.129,1.176-.207,1.591,1.8,2.075.553s.069-4.011-2.559-4.011c-1.8,0-3.942,1.936-5.74,4.08-1.521,1.936-9.336,13.416-12.656,10.927-1.521-1.176-1.383-5.878-.415-11.411,3.873-1.521,7.123-1.037,8.921-.138.9.415,1.037.346.622-.622-.553-1.452-3.665-3.734-8.575-2.7-.138,0-.207.069-.346.069.415-1.8.83-3.665,1.383-5.463.484-1.66,1.8-4.5-1.729-4.979-1.106-.207-.622.346-1.037,1.867-.692,2.766-1.521,6.362-2.144,10.028a19.745,19.745,0,0,0-7.538,8.091,38.59,38.59,0,0,0,.9-4.772,1.589,1.589,0,0,0-1.245-1.729c-.761-.207-1.729.138-2.628,1.452-2.144,3.043-4.841,7.815-8.99,9.82-2.974,1.452-4.288,0-4.357-2.282a9.869,9.869,0,0,0,1.521-.553c5.394-2.351,7.192-5.947,5.878-8.16-1.314-2.075-4.979-1.452-7.953,1.66a11.175,11.175,0,0,0-2.7,6.5c-1.245.277-2.628.484-4.219.692,2.49-4.08,2.282-9.613-1.383-10.581-4.288-1.106-6.432,3.043-7.331,6.5.346-3.873.9-7.745,1.591-11.549.346-1.66,1.452-4.5-2.075-4.979-1.106-.207-.968.346-.9,1.867.138,2.075-2.144,14.454-.968,19.848-1.521.484-2.144,1.66-.207,2.835,1.383.83,4.357,1.106,7.331-.346a9.3,9.3,0,0,0,2.766-2.144c1.8-.207,3.665-.553,5.394-.83.277,2.42,1.867,4.219,5.463,3.873,5.118-.484,9.682-6.777,11.411-9.82-.346,3.25-2.42,10.373,1.176,10.028,1.383-.138.83-.346.9-1.591.346-4.288,3.873-7.953,7.4-10.166-.622,5.256-.415,9.958,2.006,11.411,4.426,2.766,10.581-4.5,14.039-8.921-1.729,3.942-2.7,8.921-.138,9.682,3.043.9,5.463-4.219,8.3-8.091.346,2.766,2.213,7.607,9.682,7.607,8.022-.069,13.071-4.91,12.863-10.1m-108.3,8.645A66.439,66.439,0,0,1,27.4,32.534a59.168,59.168,0,0,0,6.777-2.974,54.453,54.453,0,0,0,1.106,6.432m20.4,3.873c-.069-.207-.622.069-1.106,0-1.452-.207-3.389-2.213-3.942-5.463-1.037-5.878-.415-11.687,1.314-20.332.346-1.66,1.452-4.5-2.075-5.048-1.106-.138-.553.415-.83,1.867C47.66,17.32,42.4,21.954,37.149,25.066,36.6,17.735,36.8,9.505,38.186,4.526c1.176-4.219,2.559-3.458.83-4.357s-3.734.277-5.325,3.458S24.839,23.89,13.221,35.439C7.273,41.317,1.879,38.274.842,37.375c-.9-.761-1.176.415-.138,1.591,4.772,5.256,11.826,2.282,14.384-.277,7.054-7.054,15.283-22.268,18.6-28.7a98.251,98.251,0,0,0,.277,16.874,50.129,50.129,0,0,1-8.3,3.181c-1.66.415-2.7,1.106-2.7,1.867s1.106,1.521,2.7,2.282c2.835,1.383,11.2,5.256,13.209,6.5,1.729,1.037,2.628.207,3.112-.9.692-1.452-1.176-2.282-2.974-2.766a60.545,60.545,0,0,1-1.66-9.267c4.219-2.628,8.437-6.086,10.788-10.443C47.522,20.916,46,33.3,49.873,38.482a5.451,5.451,0,0,0,4.564,2.213c.968-.069,1.383-.692,1.245-.83' transform='translate(-0.038 0.124)'/%3E%3C/g%3E%3C/svg%3E\"\n />\n </a>\n <a href=\"https://alberta.ca\" class=\"goa-copyright\">\n © {year} Government of Alberta\n </a>\n </div>\n </div>\n </div>\n</div>\n\n<style>\n * {\n box-sizing: border-box;\n }\n\n .app-footer {\n background-color: var(--goa-color-greyscale-100);\n border-top: 2px solid var(--goa-color-greyscale-200);\n border-bottom: 1rem solid var(--goa-color-brand-default);\n\n container: self / inline-size;\n }\n\n .content {\n margin: 0 auto;\n width: min(var(--max-content-width), 100%);\n }\n\n @container self (--mobile) {\n .content {\n padding: 2rem 1rem;\n }\n }\n\n @container self (--tablet) {\n .content {\n padding: 2rem 2rem;\n }\n }\n\n @container self (--desktop) {\n .content {\n padding: 2rem 4.5rem;\n }\n }\n\n .meta-section {\n display: flex;\n flex-direction: column;\n padding: 1rem 0;\n }\n\n /* gap between meta links and goa log when stacked vertically on small screen */\n .meta-section.with-meta-links {\n gap: 2rem;\n justify-content: space-between;\n }\n\n .meta-links {\n display: none;\n }\n .with-meta-links .meta-links {\n display: block;\n }\n\n .nav-links {\n display: flex;\n flex-direction: column;\n gap: 2rem;\n }\n\n .abgov {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 100%;\n }\n\n @container self (--not-mobile) {\n .meta-section {\n flex-direction: row;\n gap: 2rem;\n }\n\n .nav-links {\n flex-direction: row;\n }\n\n .abgov {\n align-items: center;\n flex-direction: row-reverse;\n }\n }\n\n .abgov.with-meta-links {\n gap: 1rem;\n flex-direction: column;\n width: unset;\n }\n\n @container self (--not-mobile) {\n .abgov.with-meta-links {\n align-items: flex-end;\n }\n }\n\n .goa-copyright {\n white-space: nowrap;\n }\n\n a {\n color: var(--goa-color-text-secondary);\n }\n</style>\n","<svelte:options customElement=\"goa-app-footer-meta-section\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n let rootEl: HTMLElement;\n let children: HTMLLinkElement[] = [];\n\n onMount(async () => {\n await tick();\n children = rootEl\n .querySelector(\"slot\")\n .assignedElements() as HTMLLinkElement[];\n\n const isValid = children\n .map((child) => child.hasAttribute(\"href\"))\n .reduce((sum: boolean, valid: boolean) => {\n return sum && valid;\n }, true);\n\n if (!isValid) {\n children = [];\n console.warn(\"GoAFooterMetaSection children must be anchor elements.\");\n return;\n }\n });\n</script>\n\n<!-- Template -->\n<section bind:this={rootEl}>\n <div class=\"hidden\">\n <slot />\n </div>\n\n <ul>\n {#each children as child}\n <li><a href={child.href}>{child.innerHTML}</a></li>\n {/each}\n </ul>\n</section>\n\n<style>\n .hidden {\n display: none;\n }\n\n ul {\n display: flex;\n flex-wrap: wrap;\n gap: var(--goa-space-l);\n padding-left: 0;\n }\n\n li {\n list-style-type: none;\n }\n\n a {\n color: var(--goa-color-text-default);\n white-space: nowrap;\n }\n</style>\n","<svelte:options customElement=\"goa-app-footer-nav-section\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n export let heading: string = \"\";\n export let maxcolumncount: number = 1;\n\n let rootEl: HTMLElement;\n let children: HTMLLinkElement[] = [];\n\n onMount(async () => {\n await tick();\n\n // remap slot content\n children = rootEl\n .querySelector(\"slot\")\n ?.assignedElements() as HTMLLinkElement[];\n\n const isValid = children\n .map((child) => child.hasAttribute(\"href\"))\n .reduce((sum: boolean, valid: boolean) => {\n return sum && valid;\n }, true);\n\n if (!isValid) {\n children = [];\n console.warn(\"GoAFooterNavSection children must be anchor elements.\");\n return;\n }\n });\n</script>\n\n<!-- Template -->\n<section bind:this={rootEl}>\n {#if heading}\n <div class=\"title\">{heading}</div>\n <goa-divider spacing=\"small\" />\n {/if}\n\n <div class=\"hidden\">\n <slot />\n </div>\n\n <ul\n class=\"links\"\n style={`\n --narrow-display-type: ${Math.ceil(maxcolumncount / 2) > 1 ? \"block\" : \"flex\"};\n --narrow-column-count: ${Math.ceil(maxcolumncount / 2)};\n --wide-display-type: ${maxcolumncount > 1 ? \"block\" : \"flex\"};\n --wide-column-count: ${maxcolumncount};\n `}\n >\n {#each children as child}\n <li><a href={child.href}>{child.innerHTML}</a></li>\n {/each}\n </ul>\n</section>\n\n<!-- Styles -->\n<style>\n :host {\n /* The flex-grow is set via code above */\n flex: auto;\n }\n\n .title {\n font-size: var(--goa-font-size-7);\n line-height: var(--goa-line-height-4);\n padding-bottom: var(--goa-space-l);\n }\n\n .hidden {\n display: none;\n }\n\n .links {\n display: block;\n list-style-type: none;\n padding-left: 0;\n }\n\n @media not (--mobile) {\n .links {\n list-style-type: none;\n padding-left: 0;\n flex-direction: column;\n }\n }\n\n @media (--tablet) {\n .links {\n display: var(--narrow-display-type);\n column-count: var(--narrow-column-count);\n }\n }\n\n @media (--desktop) {\n .links {\n display: var(--wide-display-type);\n column-count: var(--wide-column-count);\n }\n }\n\n li {\n padding: 0.75rem 0;\n }\n\n a {\n color: var(--goa-color-text-default);\n }\n</style>\n","<svelte:options customElement=\"goa-form-item\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { typeValidator } from \"../../common/utils\";\n\n // Validators\n const [REQUIREMENT_TYPES, validateRequirementType] = typeValidator(\n \"Requirement type\",\n [\"optional\", \"required\"],\n false,\n );\n const [LABEL_SIZE_TYPES, validateLabelSize] = typeValidator(\n \"Label size type\",\n [\"regular\", \"large\"],\n false,\n );\n\n type RequirementType = (typeof REQUIREMENT_TYPES)[number];\n type LabelSizeType = (typeof LABEL_SIZE_TYPES)[number];\n\n export let testid: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Optional\n export let label: string = \"\";\n export let labelsize: LabelSizeType = \"regular\";\n export let helptext: string = \"\";\n export let error: string = \"\";\n export let requirement: RequirementType = \"\";\n export let id: string = \"\";\n\n onMount(() => {\n validateRequirementType(requirement);\n validateLabelSize(labelsize);\n });\n</script>\n\n<!-- HTML -->\n<div data-testid={testid} style={calculateMargin(mt, mr, mb, ml)}>\n {#if label}\n <div class={`label ${labelsize}`} {id}>\n {label}\n {#if requirement && REQUIREMENT_TYPES.includes(requirement)}\n <em>({requirement})</em>\n {/if}\n </div>\n {/if}\n <div class=\"form-item-input\">\n <slot />\n </div>\n {#if error}\n <div class=\"error-msg\">\n <goa-icon type=\"warning\" size=\"small\" theme=\"filled\" mt=\"2xs\" />\n {error}\n </div>\n {/if}\n {#if helptext}\n <div class=\"help-msg\">{helptext}</div>\n {/if}\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n * {\n box-sizing: border-box;\n }\n\n .label {\n display: block;\n font-weight: var(--goa-font-weight-bold);\n color: var(--goa-color-text-default);\n font-size: var(--goa-font-size-4);\n padding-bottom: 0.5rem;\n }\n\n .label.large {\n font: var(--goa-typography-heading-l);\n }\n\n .label em {\n color: var(--goa-color-greyscale-700);\n font-weight: var(--goa-font-weight-regular);\n font-size: var(--goa-font-size-2);\n line-height: var(--goa-line-height-1);\n font-style: normal;\n }\n\n .form-item-input {\n margin-bottom: 0.25rem;\n }\n\n .help-msg {\n font-size: var(--goa-font-size-2);\n color: var(--goa-color-text-default);\n }\n\n .error-msg {\n display: inline-flex;\n align-items: flex-start;\n gap: 0.25rem;\n font-size: var(--goa-font-size-2);\n color: var(--goa-color-interactive-error);\n margin-bottom: 0.25rem;\n }\n</style>\n","<svelte:options customElement=\"goa-form-step\" />\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { toBoolean, typeValidator } from \"../../common/utils\";\n\n // Validator\n const [StatusTypes, validateStatus] = typeValidator(\n \"Form Step status\",\n [\"incomplete\", \"complete\"],\n false,\n );\n type FormStepStatus = (typeof StatusTypes)[number];\n\n // ======\n // Public\n // ======\n\n export let text: string;\n\n // Set by FormStepper parent component\n export let current: string = \"false\";\n export let enabled: string = \"false\";\n export let childindex: string = \"\";\n export let arialabel: string = \"\";\n export let status: FormStepStatus = \"\";\n\n // =======\n // Private\n // =======\n\n let _stepEl: HTMLElement;\n let _checkbox: HTMLInputElement;\n let _isMobile: boolean;\n\n // ========\n // Reactive\n // ========\n\n $: _isCurrent = toBoolean(current);\n $: _isEnabled = toBoolean(enabled) || status === \"complete\";\n\n onMount(() => {\n validateStatus(status);\n // event binding\n _stepEl.addEventListener(\"click\", () => {\n if (!_isEnabled) return;\n\n _checkbox.checked = !_checkbox.checked;\n _stepEl.dispatchEvent(\n new CustomEvent(\"_click\", {\n composed: true,\n bubbles: true,\n detail: +childindex,\n }),\n );\n });\n\n _stepEl.addEventListener(\"resized\", (e: Event) => {\n const { mobile } = (e as CustomEvent).detail;\n _isMobile = mobile;\n });\n });\n</script>\n\n<label\n id={arialabel}\n bind:this={_stepEl}\n class:mobile={_isMobile}\n class:desktop={!_isMobile}\n role=\"listitem\"\n tabindex=\"-1\"\n for={text}\n data-status={status}\n aria-current={_isCurrent ? \"step\" : \"false\"}\n aria-label={`${arialabel} ${text} ${status || \"\"}`}\n>\n <input\n id={text}\n bind:this={_checkbox}\n type=\"checkbox\"\n checked={_isCurrent}\n aria-disabled={!_isEnabled}\n />\n <div data-testid=\"status\" class=\"status\">\n {#if _isCurrent}\n <goa-icon type=\"pencil\" />\n {:else if status === \"complete\"}\n <goa-icon type=\"checkmark\" inverted />\n {:else if status === \"incomplete\"}\n <goa-icon type=\"remove\" />\n {:else}\n <div data-testid=\"step-number\" class=\"step-number\">{childindex}</div>\n {/if}\n </div>\n <div class=\"details\">\n <div class=\"text\" data-testid=\"text\">{text}</div>\n {#if status === \"incomplete\"}\n <div class=\"subtext\" data-testid=\"subtext\">Partially complete</div>\n {/if}\n </div>\n</label>\n\n<style>\n input[type=\"checkbox\"] {\n position: absolute;\n left: -9999px;\n }\n\n label {\n display: flex;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n padding: var(--goa-space-l);\n }\n\n label:not([aria-disabled=\"true\"]):not([aria-current=\"step\"]):focus-within,\n label:not([aria-disabled=\"true\"]):not([aria-current=\"step\"]):focus,\n label:not([aria-disabled=\"true\"]):not([aria-current=\"step\"]):active {\n outline: var(--goa-color-interactive-focus) solid var(--goa-border-width-l);\n }\n\n label:not([aria-disabled=\"true\"]):not([aria-current=\"step\"]):hover {\n background-color: rgba(0, 0, 0, 0.05);\n cursor: pointer;\n }\n\n label.desktop {\n text-align: center;\n flex-direction: column;\n align-items: center;\n }\n\n label.desktop .details {\n margin-top: 0.75rem;\n }\n\n label.mobile {\n flex-direction: row;\n align-items: center;\n text-align: start;\n }\n\n label.mobile .details {\n margin-left: 1rem;\n }\n\n .status {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n border-radius: 999px;\n border: 4px solid var(--goa-color-interactive-default);\n background: var(--goa-color-greyscale-white);\n height: 2.5rem;\n width: 2.5rem;\n }\n\n .status > * {\n fill: var(--fill-color, var(--goa-color-interactive-default));\n color: var(--fill-color, var(--goa-color-interactive-default));\n }\n\n [aria-current=\"step\"] .text {\n font-weight: var(--goa-font-weight-bold);\n }\n\n [data-status=\"complete\"] .status {\n background: var(--goa-color-interactive-default);\n }\n\n [aria-current=\"step\"][data-status=\"complete\"] .status {\n background: var(--goa-color-greyscale-white);\n }\n\n .step-number {\n margin-bottom: var(--font-valign-fix);\n font-weight: var(--goa-font-weight-bold);\n color: var(--goa-color-text-secondary);\n }\n\n label:not(\n [data-status=\"complete\"],\n [data-status=\"incomplete\"],\n [aria-current=\"step\"]\n )\n .status {\n border-color: var(--goa-color-greyscale-500);\n }\n\n .text {\n font: var(--goa-typography-body-s);\n }\n\n .subtext {\n margin-top: 0.25rem;\n font: var(--goa-typography-body-xs);\n color: var(--goa-color-text-secondary);\n }\n</style>\n","<svelte:options customElement=\"goa-form-stepper\" />\n\n<script lang=\"ts\">\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n import { onDestroy, onMount, tick } from \"svelte\";\n import { MOBILE_BP } from \"../../common/breakpoints\"\n\n // ======\n // Public\n // ======\n\n export let step: number = -1; // this is a 1-based index, -1 is the unset value\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // =======\n // Private\n // =======\n\n let _rootEl: HTMLElement; // events bound to it\n let _gridEl: HTMLElement; // used to obtain component dimensions\n let _steps: Element[] = []; // step DOM elements to allow for width calculations\n let _stepWidth: number; // calculated x distance (px) between each step point\n let _stepHeight: number; // calculated y distance (px) between each step point\n let _progressHeight: number; // allow css calculations for mobile view\n\n let _maxAllowedStep: number = 1; // prevent users from using the stepper to access future steps\n let _maxProgressStep: number = 1; // controls the progress bars value\n\n let _showProgressBars = false; // delays the showing of the progress bars to prevent it from\n // being temporarily visible with an unwanted offset\n\n // ========\n // Reactive\n // ========\n\n // handles the 1-based step value and the number of line segments is one less\n // than the number of steps\n $: _progress = ((_maxProgressStep - 1) / (_steps.length - 1)) * 100;\n $: setCurrentStepStatus(step);\n $: if (_steps.length) {\n // allow access to all steps if not step property is provided\n if (step <= 0) {\n step = 1;\n setTimeout(() => {\n dispatch(step);\n }, 1);\n _maxAllowedStep = _steps.length;\n }\n\n if (step > _maxProgressStep) _maxProgressStep = step;\n if (step > _maxAllowedStep) _maxAllowedStep = step;\n _steps.forEach((stepEl: Element, index: number) => {\n stepEl.setAttribute(\n \"enabled\",\n index > _maxAllowedStep - 1 ? \"false\" : \"true\",\n );\n });\n }\n\n onMount(async () => {\n await tick();\n\n // children steps\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n _steps = slot.assignedElements();\n } else {\n // for unit tests only\n // @ts-expect-error testing\n _steps = [..._rootEl.querySelector(\"goa-grid\").children] as Element[];\n }\n\n // set step a11y label\n _steps.forEach((_step: Element, index: number) => {\n const s = _step as HTMLElement;\n s.setAttribute(\"arialabel\", `Step ${index + 1} of ${_steps.length}`);\n s.setAttribute(\"childindex\", `${index + 1}`);\n });\n\n // handle click events from progress items\n _rootEl.addEventListener(\"_click\", (e: Event) => {\n step = (e as CustomEvent).detail;\n dispatch(step);\n });\n\n setCurrentStepStatus(step);\n calcStepDimensions();\n\n setTimeout(() => {\n _showProgressBars = true;\n }, 10);\n\n // recompute size listeners\n window.addEventListener(\"orientationchange\", calcStepDimensions);\n\n const resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n if (entries.length !== 1) return; \n calcStepDimensions();\n\n const width = entries[0].contentRect.width;\n\n for (const step of _steps) {\n step.shadowRoot\n ?.querySelector(\"label\")\n ?.dispatchEvent(new CustomEvent(\"resized\", { \n bubbles: true, \n composed: true,\n detail: {\n mobile: width < MOBILE_BP,\n }\n }))\n }\n });\n\n resizeObserver.observe(_rootEl)\n\n return () => resizeObserver.unobserve(_rootEl);\n });\n\n onDestroy(() => {\n window.removeEventListener(\"orientationchange\", calcStepDimensions);\n })\n\n function dispatch(step: number) {\n _rootEl?.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n bubbles: true,\n detail: { step },\n }),\n );\n }\n\n function setCurrentStepStatus(step: number) {\n _steps.forEach((stepEl, index) => {\n stepEl.setAttribute(\"current\", index === step - 1 ? \"true\" : \"false\");\n });\n }\n\n async function calcStepDimensions() {\n // tick required, without it the _steps elements width was not yet updated\n await tick();\n const step = _steps?.[0] as HTMLElement;\n _stepWidth = step?.offsetWidth ?? 0;\n _stepHeight = step?.offsetHeight ?? 0;\n _progressHeight = _gridEl?.offsetHeight;\n }\n</script>\n\n<div id=\"container\">\n <div\n class=\"form-stepper\"\n style={`\n ${calculateMargin(mt, mr, mb, ml)};\n --progress: ${_progress}%;\n --step-width: ${_stepWidth}px;\n --step-height: ${_stepHeight}px;\n --height: ${_progressHeight}px;\n `}\n role=\"list\"\n bind:this={_rootEl}\n >\n {#if _steps.length > 0 && _showProgressBars}\n <progress class=\"horizontal\" value={_progress} max=\"100\"></progress>\n <progress class=\"vertical\" value={_progress} max=\"100\"></progress>\n {/if}\n <div class=\"slots\" bind:this={_gridEl}>\n <goa-grid minchildwidth=\"10ch\">\n <slot />\n </goa-grid>\n </div>\n </div>\n</div>\n\n<style>\n .slots {\n position: relative;\n inset: 0;\n z-index: 2;\n }\n\n #container {\n container: self / inline-size;\n }\n\n progress {\n position: absolute;\n z-index: 1;\n -webkit-appearance: none;\n appearance: none;\n height: 4px;\n border: none;\n background: var(--goa-color-greyscale-200);\n pointer-events: none;\n }\n\n /* 2.5rem = 40px where 40px = height of form stepper icons */\n /* 2px = 4px / 2, where 4px is thickness of progress bar */\n /* 1.5rem = 24px = padding as per design specs */\n progress.horizontal {\n top: calc(1.5rem + (2.5rem / 2) - 2px);\n left: calc(var(--step-width) / 2);\n width: calc(100% - var(--step-width));\n }\n\n @container self (--not-mobile) {\n progress.horizontal {\n display: block;\n }\n progress.vertical {\n display: none;\n }\n .form-stepper {\n position: relative;\n }\n }\n\n /* 1.25rem = 20px = 40px / 2, half the height of the 40px stepper */\n progress.vertical {\n width: calc(var(--height) - var(--step-height));\n transform: rotate(90deg)\n translate(\n calc(50% + 1.25rem + 1.75rem),\n calc((var(--height) - var(--step-height)) / 2 - 1.25rem - 1.5rem)\n );\n }\n\n @container self (--mobile) {\n progress.horizontal {\n display: none;\n }\n progress.vertical {\n display: inline-block;\n }\n .form-stepper {\n display: block;\n }\n }\n\n /* iOS tweaks */\n progress::-webkit-progress-value {\n background: var(--goa-color-interactive-default);\n }\n progress::-webkit-progress-bar {\n background: var(--goa-color-greyscale-200);\n }\n progress::-moz-progress-bar {\n background: var(--goa-color-interactive-default);\n }\n\n</style>\n","<svelte:options customElement=\"goa-layout-full-nav\" />\n\n<div class=\"page\">\n <header class=\"header\">\n <slot name=\"header\" />\n </header>\n\n <nav class=\"nav\">\n <slot name=\"nav\" />\n </nav>\n\n <main>\n <slot />\n </main>\n\n <footer class=\"footer\">\n <slot name=\"footer\" />\n </footer>\n</div>\n\n<style>\n .page {\n height: 100vh;\n grid-template-columns: auto;\n grid-template-rows: min-content auto min-content;\n grid-template-areas:\n \"header\"\n \"content\"\n \"nav\"\n \"footer\";\n display: grid;\n place-content: stretch stretch;\n gap: 0 0;\n }\n\n @media (--mobile) {\n .page {\n grid-template-columns: 300px auto;\n grid-template-rows: min-content auto min-content;\n grid-template-areas:\n \"header header\"\n \"nav content\"\n \"footer footer\";\n }\n }\n\n .header {\n grid-area: header;\n }\n .footer {\n grid-area: footer;\n }\n\n main {\n grid-area: content;\n justify-self: stretch;\n padding: 1rem;\n }\n\n .nav {\n grid-area: nav;\n padding: 1rem;\n background-color: var(--goa-color-greyscale-100);\n }\n</style>\n","<svelte:options customElement=\"goa-grid\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { calculateMargin } from \"../../common/styling\";\n import { validateRequired } from \"../../common/utils\";\n import type { Spacing } from \"../../common/styling\";\n\n export let gap: Spacing = \"m\";\n export let minchildwidth: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n onMount(() => {\n validateRequired(\"Grid\", { minchildwidth });\n });\n</script>\n\n<!-- HTML -->\n <div\n class=\"goa-grid\"\n style={`\n ${calculateMargin(mt, mr, mb, ml)}\n --min-child-width: ${minchildwidth || 0};\n gap: var(--goa-space-${gap})\n `}\n >\n <slot />\n </div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n .goa-grid {\n display: flex;\n flex-direction: column;\n gap: var(--gap);\n }\n\n @media (--not-mobile) {\n .goa-grid {\n display: grid;\n grid-template-columns: repeat(\n auto-fit,\n minmax(var(--min-child-width), 1fr)\n );\n }\n }\n</style>\n","<svelte:options customElement=\"goa-hero-banner\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n export let heading: string;\n export let backgroundurl: string;\n export let minheight: string;\n export let maxcontentwidth = \"100%\";\n export let backgroundcolor: string = \"#f8f8f8\";\n export let textcolor: string = \"\";\n\n /* Set minheight to support old default value of 600px */\n $: if (!minheight && backgroundurl) minheight = \"600px\";\n</script>\n\n<!-- HTML -->\n<div\n class=\"goa-hero\"\n class:with-image={backgroundurl}\n data-testid=\"background\"\n style=\"\n min-height: {minheight};\n --hero-banner-background-color: {backgroundcolor};\n --hero-banner-text-color: {textcolor};\n --hero-background-url: url({backgroundurl});\n \"\n>\n <goa-page-block width={maxcontentwidth || \"full\"}>\n <h1>{heading}</h1>\n <div class=\"goa-hero-banner-content\" role=\"note\">\n <slot />\n </div>\n <div class=\"goa-hero-banner-actions\">\n <slot name=\"actions\" />\n </div>\n </goa-page-block>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .goa-hero {\n background: var(--hero-banner-background-color);\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n flex-direction: column;\n color: var(--hero-banner-text-color, var(--goa-color-text-default));\n background-position: center center;\n width: 100%;\n padding: var(--goa-space-3xl) 0;\n }\n\n .goa-hero.with-image {\n border-bottom: 8px solid var(--goa-color-brand-default);\n justify-content: flex-end;\n background: unset;\n background-image: linear-gradient(\n rgba(0, 0, 0, 0) 0%,\n rgba(0, 0, 0, 0.4) 40%,\n rgba(0, 0, 0, 0.6) 100%\n ),\n var(--hero-background-url);\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n color: var(--hero-banner-text-color, var(--goa-color-text-light));\n }\n\n h1 {\n font: var(--goa-typography-heading-xl);\n margin: 0;\n }\n\n .goa-hero-banner-content {\n font: var(--goa-typography-body-l);\n margin: var(--goa-space-l) 0 0;\n }\n\n .goa-hero-banner-actions {\n margin: var(--goa-space-l) 0 0;\n }\n</style>\n","<svelte:options customElement=\"goa-icon-button\" />\n\n<script lang=\"ts\">\n import { typeValidator, toBoolean } from \"../../common/utils\";\n import type { IconSize, IconTheme, GoAIconType } from \"../icon/Icon.svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount } from \"svelte\";\n\n // Validator\n const [Variants, validateVariant] = typeValidator(\n \"Icon Button Variant\",\n [\"color\", \"nocolor\", \"dark\", \"destructive\"],\n true,\n );\n\n type Variant = (typeof Variants)[number];\n\n // required\n export let icon: GoAIconType;\n\n // optional\n export let size: IconSize = \"medium\";\n export let theme: IconTheme = \"outline\";\n export let variant: Variant = \"color\";\n export let title: string = \"\";\n export let testid: string = \"\";\n export let disabled: string = \"false\";\n export let inverted: string = \"false\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // private\n $: css = `${variant} ${isInverted ? \"inverted\" : \"\"}`;\n $: isDisabled = toBoolean(disabled);\n $: isInverted = toBoolean(inverted);\n $: _paddingSize = {\n small: \"0.25rem\",\n medium: \"0.25rem\",\n large: \"0.5rem\",\n }[size];\n\n function handleClick(e) {\n e.target.dispatchEvent(\n new CustomEvent(\"_click\", { composed: true, detail: { event: e } }),\n );\n }\n\n onMount(() => {\n validateVariant(variant);\n });\n</script>\n\n<button\n style=\"{calculateMargin(mt, mr, mb, ml)}; --pading-size: {_paddingSize}\"\n {title}\n disabled={isDisabled}\n class={css}\n data-testid={testid}\n on:click={handleClick}\n>\n <goa-icon {title} type={icon} {size} {theme} inverted={isInverted} />\n</button>\n\n<style>\n :host {\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n button,\n button * {\n box-sizing: border-box;\n }\n\n button {\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n justify-content: center;\n background: transparent;\n cursor: pointer;\n border: none;\n border-radius: var(--goa-border-radius-m);\n padding: var(--pading-size);\n }\n\n /* Primary */\n .color,\n .dark {\n color: var(--goa-color-interactive-default);\n fill: var(--goa-color-interactive-default);\n cursor: pointer;\n transition:\n background-color 100ms ease-in,\n transform 100ms ease-in;\n }\n\n .dark:not(.inverted) {\n color: unset;\n }\n\n button:hover:not(.destructive) {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-100);\n color: var(--goa-color-interactive-hover);\n outline: none;\n }\n\n button:focus:not(.destructive),\n button:active:not(.destructive) {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-interactive-focus);\n color: var(--goa-color-interactive-focus);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n outline: none;\n }\n\n .color.inverted:hover {\n background-color: var(--goa-color-interactive-hover);\n }\n\n .destructive {\n color: var(--goa-color-emergency-dark);\n fill: var(--goa-color-emergency-dark);\n }\n\n .destructive:hover {\n background-color: var(--goa-color-emergency-light);\n border-color: var(--goa-color-emergency-light);\n outline: none;\n }\n\n .destructive:focus,\n .destructive:active {\n background-color: var(--goa-color-emergency-light);\n border-color: var(--goa-color-interactive-focus);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n outline: none;\n }\n\n button:disabled {\n pointer-events: none;\n opacity: 0.5;\n transform: none;\n cursor: default;\n }\n\n button:disabled:hover {\n background-color: transparent;\n }\n\n button.dark:hover {\n background-color: rgba(0, 0, 0, 0.3);\n }\n\n button.dark:focus,\n button.dark:active {\n background-color: rgba(0, 0, 0, 0.3);\n box-shadow: 0 0 0 3px var(--goa-color-greyscale-white);\n }\n</style>\n","<svelte:options customElement=\"goa-icon\" />\n\n<script lang=\"ts\" context=\"module\">\n export type IconSize = \"small\" | \"medium\" | \"large\" | \"xlarge\";\n export type IconVariant = \"primary\" | \"secondary\" | \"tertiary\";\n export type IconTheme = \"outline\" | \"filled\" | \"sharp\";\n\n export type GoAIconType =\n | \"accessibility\"\n | \"add-circle\"\n | \"add\"\n | \"airplane\"\n | \"alarm\"\n | \"albums\"\n | \"alert-circle\"\n | \"alert\"\n | \"american-football\"\n | \"analytics\"\n | \"aperture\"\n | \"apps\"\n | \"archive\"\n | \"arrow-back-circle\"\n | \"arrow-back\"\n | \"arrow-down-circle\"\n | \"arrow-down\"\n | \"arrow-forward-circle\"\n | \"arrow-forward\"\n | \"arrow-redo-circle\"\n | \"arrow-redo\"\n | \"arrow-undo-circle\"\n | \"arrow-undo\"\n | \"arrow-up-circle\"\n | \"arrow-up\"\n | \"at-circle\"\n | \"at\"\n | \"attach\"\n | \"backspace\"\n | \"bag-add\"\n | \"bag-check\"\n | \"bag-handle\"\n | \"bag\"\n | \"bag-remove\"\n | \"balloon\"\n | \"ban\"\n | \"bandage\"\n | \"bar-chart\"\n | \"barbell\"\n | \"barcode\"\n | \"baseball\"\n | \"basket\"\n | \"basketball\"\n | \"battery-charging\"\n | \"battery-dead\"\n | \"battery-full\"\n | \"battery-half\"\n | \"beaker\"\n | \"bed\"\n | \"beer\"\n | \"bicycle\"\n | \"bluetooth\"\n | \"boat\"\n | \"body\"\n | \"bonfire\"\n | \"book\"\n | \"bookmark\"\n | \"bookmarks\"\n | \"bowling-ball\"\n | \"briefcase\"\n | \"browsers\"\n | \"brush\"\n | \"bug\"\n | \"build\"\n | \"bulb\"\n | \"bus\"\n | \"business\"\n | \"cafe\"\n | \"calculator\"\n | \"calendar-clear\"\n | \"calendar-number\"\n | \"calendar\"\n | \"call\"\n | \"camera\"\n | \"camera-reverse\"\n | \"car\"\n | \"car-sport\"\n | \"card\"\n | \"caret-back-circle\"\n | \"caret-back\"\n | \"caret-down-circle\"\n | \"caret-down\"\n | \"caret-forward-circle\"\n | \"caret-forward\"\n | \"caret-up-circle\"\n | \"caret-up\"\n | \"cart\"\n | \"cash\"\n | \"cellular\"\n | \"chatbox-ellipses\"\n | \"chatbox\"\n | \"chatbubble-ellipses\"\n | \"chatbubble\"\n | \"chatbubbles\"\n | \"checkbox\"\n | \"checkmark-circle\"\n | \"checkmark-done-circle\"\n | \"checkmark-done\"\n | \"chevron-back-circle\"\n | \"chevron-back\"\n | \"chevron-down-circle\"\n | \"chevron-down\"\n | \"chevron-forward-circle\"\n | \"chevron-forward\"\n | \"chevron-up-circle\"\n | \"chevron-up\"\n | \"clipboard\"\n | \"close-circle\"\n | \"close\"\n | \"cloud-circle\"\n | \"cloud-done\"\n | \"cloud-download\"\n | \"cloud-offline\"\n | \"cloud\"\n | \"cloud-upload\"\n | \"cloudy-night\"\n | \"cloudy\"\n | \"code-download\"\n | \"code\"\n | \"code-slash\"\n | \"code-working\"\n | \"cog\"\n | \"color-fill\"\n | \"color-filter\"\n | \"color-palette\"\n | \"color-wand\"\n | \"compass\"\n | \"construct\"\n | \"contract\"\n | \"contrast\"\n | \"copy\"\n | \"create\"\n | \"crop\"\n | \"cube\"\n | \"cut\"\n | \"desktop\"\n | \"diamond\"\n | \"dice\"\n | \"disc\"\n | \"document-attach\"\n | \"document-lock\"\n | \"document\"\n | \"document-text\"\n | \"documents\"\n | \"download\"\n | \"duplicate\"\n | \"ear\"\n | \"earth\"\n | \"easel\"\n | \"egg\"\n | \"ellipse\"\n | \"ellipsis-horizontal-circle\"\n | \"ellipsis-horizontal\"\n | \"ellipsis-vertical-circle\"\n | \"ellipsis-vertical\"\n | \"enter\"\n | \"exit\"\n | \"expand\"\n | \"extension-puzzle\"\n | \"eye-off\"\n | \"eye\"\n | \"eyedrop\"\n | \"fast-food\"\n | \"female\"\n | \"file-tray-full\"\n | \"file-tray\"\n | \"file-tray-stacked\"\n | \"filenames.ps1\"\n | \"film\"\n | \"filter-circle\"\n | \"filter\"\n | \"finger-print\"\n | \"fish\"\n | \"fitness\"\n | \"flag\"\n | \"flame\"\n | \"flash-off\"\n | \"flash\"\n | \"flashlight\"\n | \"flask\"\n | \"flower\"\n | \"folder-open\"\n | \"folder\"\n | \"football\"\n | \"footsteps\"\n | \"funnel\"\n | \"game-controller\"\n | \"gift\"\n | \"git-branch\"\n | \"git-commit\"\n | \"git-compare\"\n | \"git-merge\"\n | \"git-network\"\n | \"git-pull-request\"\n | \"glasses\"\n | \"globe\"\n | \"golf\"\n | \"grid\"\n | \"hammer\"\n | \"hand-left\"\n | \"hand-right\"\n | \"happy\"\n | \"hardware-chip\"\n | \"headset\"\n | \"heart-circle\"\n | \"heart-dislike-circle\"\n | \"heart-dislike\"\n | \"heart-half\"\n | \"heart\"\n | \"help-buoy\"\n | \"help-circle\"\n | \"help\"\n | \"home\"\n | \"hourglass\"\n | \"ice-cream\"\n | \"id-card\"\n | \"image\"\n | \"images\"\n | \"infinite\"\n | \"information-circle\"\n | \"information\"\n | \"invert-mode\"\n | \"journal\"\n | \"key\"\n | \"keypad\"\n | \"language\"\n | \"laptop\"\n | \"layers\"\n | \"leaf\"\n | \"library\"\n | \"link\"\n | \"list-circle\"\n | \"list\"\n | \"locate\"\n | \"location\"\n | \"lock-closed\"\n | \"lock-open\"\n | \"log-in\"\n | \"log-out\"\n | \"magnet\"\n | \"mail-open\"\n | \"mail\"\n | \"mail-unread\"\n | \"male-female\"\n | \"male\"\n | \"man\"\n | \"map\"\n | \"medal\"\n | \"medical\"\n | \"medkit\"\n | \"megaphone\"\n | \"menu\"\n | \"mic-circle\"\n | \"mic-off-circle\"\n | \"mic-off\"\n | \"mic\"\n | \"moon\"\n | \"move\"\n | \"musical-note\"\n | \"musical-notes\"\n | \"navigate-circle\"\n | \"navigate\"\n | \"newspaper\"\n | \"notifications-circle\"\n | \"notifications-off-circle\"\n | \"notifications-off\"\n | \"notifications\"\n | \"nuclear\"\n | \"nutrition\"\n | \"open\"\n | \"options\"\n | \"paper-plane\"\n | \"partly-sunny\"\n | \"pause-circle\"\n | \"pause\"\n | \"paw\"\n | \"people-circle\"\n | \"people\"\n | \"person-add\"\n | \"person-circle\"\n | \"person\"\n | \"person-remove\"\n | \"phone-landscape\"\n | \"phone-portrait\"\n | \"pie-chart\"\n | \"pin\"\n | \"pint\"\n | \"pizza\"\n | \"planet\"\n | \"play-back-circle\"\n | \"play-back\"\n | \"play-circle\"\n | \"play-forward-circle\"\n | \"play-forward\"\n | \"play\"\n | \"play-skip-back-circle\"\n | \"play-skip-back\"\n | \"play-skip-forward-circle\"\n | \"play-skip-forward\"\n | \"podium\"\n | \"power\"\n | \"pricetag\"\n | \"pricetags\"\n | \"print\"\n | \"prism\"\n | \"pulse\"\n | \"push\"\n | \"qr-code\"\n | \"radio-button-off\"\n | \"radio-button-on\"\n | \"radio\"\n | \"rainy\"\n | \"reader\"\n | \"receipt\"\n | \"recording\"\n | \"refresh-circle\"\n | \"refresh\"\n | \"reload-circle\"\n | \"reload\"\n | \"remove-circle\"\n | \"reorder-four\"\n | \"reorder-three\"\n | \"reorder-two\"\n | \"repeat\"\n | \"resize\"\n | \"restaurant\"\n | \"return-down-back\"\n | \"return-down-forward\"\n | \"return-up-back\"\n | \"return-up-forward\"\n | \"ribbon\"\n | \"rocket\"\n | \"rose\"\n | \"sad\"\n | \"save\"\n | \"scale\"\n | \"scan-circle\"\n | \"scan\"\n | \"school\"\n | \"search-circle\"\n | \"search\"\n | \"send\"\n | \"server\"\n | \"settings\"\n | \"shapes\"\n | \"share\"\n | \"share-social\"\n | \"shield-checkmark\"\n | \"shield-half\"\n | \"shield\"\n | \"shirt\"\n | \"shuffle\"\n | \"skull\"\n | \"snow\"\n | \"sparkles\"\n | \"speedometer\"\n | \"square\"\n | \"star-half\"\n | \"star\"\n | \"stats-chart\"\n | \"stop-circle\"\n | \"stop\"\n | \"stopwatch\"\n | \"storefront\"\n | \"subway\"\n | \"sunny\"\n | \"swap-horizontal\"\n | \"swap-vertical\"\n | \"sync-circle\"\n | \"sync\"\n | \"tablet-landscape\"\n | \"tablet-portrait\"\n | \"telescope\"\n | \"tennisball\"\n | \"terminal\"\n | \"text\"\n | \"thermometer\"\n | \"thumbs-down\"\n | \"thumbs-up\"\n | \"thunderstorm\"\n | \"ticket\"\n | \"time\"\n | \"timer\"\n | \"today\"\n | \"toggle\"\n | \"trail-sign\"\n | \"train\"\n | \"transgender\"\n | \"trash-bin\"\n | \"trash\"\n | \"trending-down\"\n | \"trending-up\"\n | \"triangle\"\n | \"trophy\"\n | \"tv\"\n | \"umbrella\"\n | \"unlink\"\n | \"videocam-off\"\n | \"videocam\"\n | \"volume-high\"\n | \"volume-low\"\n | \"volume-medium\"\n | \"volume-mute\"\n | \"volume-off\"\n | \"walk\"\n | \"wallet\"\n | \"warning\"\n | \"watch\"\n | \"water\"\n | \"wifi\"\n | \"wine\"\n | \"woman\"\n | \"logo-alipay\"\n | \"logo-amazon\"\n | \"logo-amplify\"\n | \"logo-android\"\n | \"logo-angular\"\n | \"logo-apple\"\n | \"logo-apple-appstore\"\n | \"logo-apple-ar\"\n | \"logo-behance\"\n | \"logo-bitbucket\"\n | \"logo-bitcoin\"\n | \"logo-buffer\"\n | \"logo-capacitor\"\n | \"logo-chrome\"\n | \"logo-closed-captioning\"\n | \"logo-codepen\"\n | \"logo-css3\"\n | \"logo-designernews\"\n | \"logo-deviantart\"\n | \"logo-discord\"\n | \"logo-docker\"\n | \"logo-dribbble\"\n | \"logo-dropbox\"\n | \"logo-edge\"\n | \"logo-electron\"\n | \"logo-euro\"\n | \"logo-facebook\"\n | \"logo-figma\"\n | \"logo-firebase\"\n | \"logo-firefox\"\n | \"logo-flickr\"\n | \"logo-foursquare\"\n | \"logo-github\"\n | \"logo-gitlab\"\n | \"logo-google\"\n | \"logo-google-playstore\"\n | \"logo-hackernews\"\n | \"logo-html5\"\n | \"logo-instagram\"\n | \"logo-ionic\"\n | \"logo-ionitron\"\n | \"logo-javascript\"\n | \"logo-laravel\"\n | \"logo-linkedin\"\n | \"logo-markdown\"\n | \"logo-mastodon\"\n | \"logo-medium\"\n | \"logo-microsoft\"\n | \"logo-no-smoking\"\n | \"logo-nodejs\"\n | \"logo-npm\"\n | \"logo-octocat\"\n | \"logo-paypal\"\n | \"logo-pinterest\"\n | \"logo-playstation\"\n | \"logo-pwa\"\n | \"logo-python\"\n | \"logo-react\"\n | \"logo-reddit\"\n | \"logo-rss\"\n | \"logo-sass\"\n | \"logo-skype\"\n | \"logo-slack\"\n | \"logo-snapchat\"\n | \"logo-soundcloud\"\n | \"logo-stackoverflow\"\n | \"logo-steam\"\n | \"logo-stencil\"\n | \"logo-tableau\"\n | \"logo-tiktok\"\n | \"logo-tumblr\"\n | \"logo-tux\"\n | \"logo-twitch\"\n | \"logo-twitter\"\n | \"logo-usd\"\n | \"logo-venmo\"\n | \"logo-vercel\"\n | \"logo-vimeo\"\n | \"logo-vk\"\n | \"logo-vue\"\n | \"logo-web-component\"\n | \"logo-wechat\"\n | \"logo-whatsapp\"\n | \"logo-windows\"\n | \"logo-wordpress\"\n | \"logo-xbox\"\n | \"logo-xing\"\n | \"logo-yahoo\"\n | \"logo-yen\"\n | \"logo-youtube\";\n\n type GoAIconOverridesType =\n | \"pencil\"\n | \"checkmark\"\n | \"remove\"\n | \"goa-file\"\n | \"goa-text\"\n | \"goa-pdf\"\n | \"goa-doc\"\n | \"goa-ppt\"\n | \"goa-xls\"\n | \"goa-zip\"\n | \"goa-video\"\n | \"goa-audio\"\n | \"goa-image\";\n</script>\n\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { cssVar, toBoolean } from \"../../common/utils\";\n import { calculateMargin } from \"../../common/styling\";\n\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Required\n\n export let type: GoAIconType & GoAIconOverridesType;\n\n // Optional\n\n export let size: IconSize = \"medium\";\n export let theme: IconTheme = \"outline\";\n export let inverted: string = \"false\";\n export let fillcolor: string = \"\";\n export let opacity: number = 1;\n export let title: string = \"\";\n export let testid: string = \"\";\n export let arialabel: string = \"\";\n export let ariacontrols: string = \"\";\n export let ariaexpanded: string = \"\";\n export let role: string = \"img\";\n\n // Reactive\n\n $: _isInverted = toBoolean(inverted);\n $: _ariaExpanded = toBoolean(ariaexpanded);\n\n // Private\n\n const _iconOverrides: Record<GoAIconOverridesType, string> = {\n pencil: `<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M16.1442 5.47956L12.5355 1.87088L13.7196 0.686776C14.0391 0.367257 14.4385 0.212197 14.9178 0.221594C15.3971 0.230992 15.7965 0.39545 16.116 0.714969L17.3283 1.92726C17.6478 2.24678 17.8076 2.64148 17.8076 3.11136C17.8076 3.58124 17.6478 3.97594 17.3283 4.29546L16.1442 5.47956ZM1.03951 17.8424C0.795173 17.8424 0.593125 17.7626 0.433365 17.6028C0.273605 17.443 0.193726 17.241 0.193726 16.9966V14.5721C0.193726 14.4593 0.212521 14.356 0.250112 14.262C0.287702 14.168 0.353485 14.074 0.447461 13.9801L11.4689 2.93435L15.0776 6.54303L4.05615 17.5887C3.96217 17.6827 3.8682 17.7485 3.77422 17.7861C3.68024 17.8236 3.57687 17.8424 3.4641 17.8424H1.03951Z\" fill=\"currentcolor\"/> </svg>`,\n checkmark: `<svg width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.20129 11.5368L15.9974 0.341265C16.3611 -0.0743717 16.9929 -0.116489 17.4085 0.247193C17.8241 0.610875 17.8663 1.24264 17.5026 1.65827L7.00258 13.6583C6.82032 13.8666 6.5599 13.99 6.28328 13.9992C6.00666 14.0084 5.7386 13.9026 5.54289 13.7069L1.04289 9.20688C0.652369 8.81635 0.652369 8.18319 1.04289 7.79266C1.43342 7.40214 2.06658 7.40214 2.45711 7.79266L6.20129 11.5368Z\" fill=\"currentcolor\"/> </svg>`,\n remove: `<svg width=\"16\" height=\"20\" viewBox=\"0 0 16 1\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M1.5 -0.000244141C0.947715 -0.000244141 0.5 0.447471 0.5 0.999756C0.5 1.55204 0.947715 1.99976 1.5 1.99976H15C15.5523 1.99976 16 1.55204 16 0.999756C16 0.447471 15.5523 -0.000244141 15 -0.000244141H1.5Z\" fill=\"currentcolor\"/> </svg>`,\n \"goa-file\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <g clip-path=\"url(#clip0_1357_108691)\"> <path d=\"M38.741 14C38.541 13.07 38.081 12.22 37.401 11.54L36.861 11L27.861 2L27.321 1.46C26.641 0.78 25.781 0.32 24.861 0.12C24.511 0.04 24.151 0 23.791 0H5.86096C3.10096 0 0.860962 2.24 0.860962 5V43C0.860962 45.76 3.10096 48 5.86096 48H33.861C36.621 48 38.861 45.76 38.861 43V15.07C38.861 14.71 38.811 14.35 38.741 14ZM35.041 12H29.871C28.221 12 26.871 10.65 26.871 9V3.83L35.041 12ZM36.871 43C36.871 44.65 35.521 46 33.871 46H5.87097C4.22097 46 2.87097 44.65 2.87097 43V5C2.87097 3.35 4.22097 2 5.87097 2H23.801C24.171 2 24.531 2.07 24.871 2.2V9C24.871 11.76 27.111 14 29.871 14H36.671C36.801 14.34 36.871 14.7 36.871 15.07V43Z\" fill=\"currentcolor\"/> </g> <defs> <clipPath id=\"clip0_1357_108691\"><rect width=\"38\" height=\"48\" fill=\"white\" transform=\"translate(0.861328)\"/></clipPath></defs></svg>`,\n \"goa-text\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.7953 14C38.5953 13.07 38.1353 12.22 37.4553 11.54L36.9153 11L27.9153 2L27.3753 1.46C26.6953 0.78 25.8353 0.32 24.9153 0.12C24.5653 0.04 24.2053 0 23.8453 0H5.91528C3.15528 0 0.915283 2.24 0.915283 5V43C0.915283 45.76 3.15528 48 5.91528 48H33.9153C36.6753 48 38.9153 45.76 38.9153 43V15.07C38.9153 14.71 38.8653 14.35 38.7953 14ZM35.0953 12H29.9253C28.2753 12 26.9253 10.65 26.9253 9V3.83L35.0953 12ZM36.9253 43C36.9253 44.65 35.5753 46 33.9253 46H5.91528C4.26528 46 2.91528 44.65 2.91528 43V5C2.91528 3.35 4.26528 2 5.91528 2H23.8453C24.2153 2 24.5753 2.07 24.9153 2.2V9C24.9153 11.76 27.1553 14 29.9153 14H36.7153C36.8453 14.34 36.9153 14.7 36.9153 15.07V43H36.9253Z\" fill=\"currentcolor\"/> <path d=\"M27.9153 34H11.9153C11.363 34 10.9153 34.4477 10.9153 35C10.9153 35.5523 11.363 36 11.9153 36H27.9153C28.4676 36 28.9153 35.5523 28.9153 35C28.9153 34.4477 28.4676 34 27.9153 34Z\" fill=\"currentcolor\"/> <path d=\"M27.9153 26H11.9153C11.363 26 10.9153 26.4477 10.9153 27C10.9153 27.5523 11.363 28 11.9153 28H27.9153C28.4676 28 28.9153 27.5523 28.9153 27C28.9153 26.4477 28.4676 26 27.9153 26Z\" fill=\"currentcolor\"/> </svg>`,\n \"goa-pdf\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M37.8861 14C37.6861 13.07 37.2261 12.22 36.5461 11.54L36.0061 11L27.0061 2L26.4661 1.46C25.7861 0.78 24.9261 0.32 24.0061 0.12C23.6561 0.04 23.2961 0 22.9361 0H5.0061C2.2461 0 0.00610352 2.24 0.00610352 5V43C0.00610352 45.76 2.2461 48 5.0061 48H33.0061C35.7661 48 38.0061 45.76 38.0061 43V15.07C38.0061 14.71 37.9561 14.35 37.8861 14ZM34.1861 12H29.0161C27.3661 12 26.0161 10.65 26.0161 9V3.83L34.1861 12ZM36.0161 43C36.0161 44.65 34.6661 46 33.0161 46H5.0061C3.3561 46 2.0061 44.65 2.0061 43V5C2.0061 3.35 3.3561 2 5.0061 2H22.9361C23.3061 2 23.6661 2.07 24.0061 2.2V9C24.0061 11.76 26.2461 14 29.0061 14H35.8061C35.9361 14.34 36.0061 14.7 36.0061 15.07V43H36.0161Z\" fill=\"currentcolor\"/> <path d=\"M5.02611 27C5.02611 26.45 5.47611 26 6.02611 26H9.05611C11.1161 26 12.9261 27.06 12.9261 29.28C12.9261 31.5 11.2461 32.74 8.85611 32.74H7.25611V35.85C7.25611 36.47 6.75611 36.97 6.13611 36.97C5.51611 36.97 5.01611 36.47 5.01611 35.85V27.01L5.02611 27ZM7.26611 30.96H8.73611C9.91611 30.96 10.6561 30.53 10.6561 29.31C10.6561 28.22 9.90611 27.77 8.79611 27.77H7.25611V30.96H7.26611Z\" fill=\"currentcolor\"/> <path d=\"M15.0361 27C15.0361 26.45 15.4861 26 16.0361 26H18.8461C22.1761 26 24.0161 28.03 24.0161 31.25C24.0161 34.82 22.0961 36.96 18.7661 36.96H16.0361C15.4861 36.96 15.0361 36.51 15.0361 35.96V27ZM17.2961 35.2H18.7361C20.6861 35.2 21.6961 33.74 21.6961 31.28C21.6961 29.25 20.7861 27.79 18.7461 27.79H17.2861V35.2H17.2961Z\" fill=\"currentcolor\"/> <path d=\"M25.9761 27C25.9761 26.45 26.4261 26 26.9761 26H32.0861C32.5961 26 33.0061 26.41 33.0061 26.92C33.0061 27.43 32.5961 27.84 32.0861 27.84H28.1761V30.63H31.8161C32.3161 30.63 32.7161 31.03 32.7161 31.53C32.7161 32.03 32.3161 32.43 31.8161 32.43H28.1761V35.86C28.1761 36.47 27.6861 36.96 27.0761 36.96C26.4661 36.96 25.9761 36.47 25.9761 35.86V26.99V27Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-doc\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.6134 14C38.4134 13.07 37.9534 12.22 37.2734 11.54L36.7334 11L27.7334 2L27.1934 1.46C26.5134 0.78 25.6534 0.32 24.7334 0.12C24.3834 0.04 24.0234 0 23.6634 0H5.7334C2.9734 0 0.733398 2.24 0.733398 5V43C0.733398 45.76 2.9734 48 5.7334 48H33.7334C36.4934 48 38.7334 45.76 38.7334 43V15.07C38.7334 14.71 38.6834 14.35 38.6134 14ZM34.9134 12H29.7434C28.0934 12 26.7434 10.65 26.7434 9V3.83L34.9134 12ZM36.7434 43C36.7434 44.65 35.3934 46 33.7434 46H5.7334C4.0834 46 2.7334 44.65 2.7334 43V5C2.7334 3.35 4.0834 2 5.7334 2H23.6634C24.0334 2 24.3934 2.07 24.7334 2.2V9C24.7334 11.76 26.9734 14 29.7334 14H36.5334C36.6634 14.34 36.7334 14.7 36.7334 15.07V43H36.7434Z\" fill=\"currentcolor\"/> <path d=\"M13.7834 36.6406L10.9034 24.5806C10.6934 23.7206 11.3534 22.8906 12.2334 22.8906C12.8734 22.8906 13.4334 23.3406 13.5734 23.9706C14.4934 28.2306 15.3434 32.5006 15.6434 34.9706H15.6634C16.0934 32.6806 17.3834 27.7106 18.2434 24.0806C18.4134 23.3806 19.0334 22.8906 19.7534 22.8906C20.4634 22.8906 21.0834 23.3706 21.2534 24.0606C22.0734 27.3606 23.3634 32.5806 23.7534 34.8406H23.7734C24.1834 32.0406 25.4534 26.8306 26.1134 23.8706C26.2434 23.3006 26.7434 22.8906 27.3334 22.8906C28.1534 22.8906 28.7434 23.6606 28.5434 24.4506L25.4134 36.6706C25.2134 37.4606 24.5034 38.0106 23.6934 38.0106C22.8634 38.0106 22.1534 37.4506 21.9634 36.6406C21.1734 33.2806 20.0434 28.8506 19.6434 26.6306H19.6234C19.1834 28.9106 18.0234 33.4506 17.2234 36.6606C17.0234 37.4506 16.3134 38.0006 15.5034 38.0006C14.6834 38.0006 13.9634 37.4406 13.7734 36.6406H13.7834Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-ppt\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.2498 14C38.0498 13.07 37.5898 12.22 36.9098 11.54L36.3698 11L27.3698 2L26.8298 1.46C26.1497 0.78 25.2898 0.32 24.3698 0.12C24.0198 0.04 23.6598 0 23.2998 0H5.36975C2.60975 0 0.369751 2.24 0.369751 5V43C0.369751 45.76 2.60975 48 5.36975 48H33.3698C36.1297 48 38.3698 45.76 38.3698 43V15.07C38.3698 14.71 38.3198 14.35 38.2498 14ZM34.5498 12H29.3798C27.7298 12 26.3798 10.65 26.3798 9V3.83L34.5498 12ZM36.3797 43C36.3797 44.65 35.0298 46 33.3797 46H5.36975C3.71975 46 2.36975 44.65 2.36975 43V5C2.36975 3.35 3.71975 2 5.36975 2H23.2998C23.6698 2 24.0298 2.07 24.3698 2.2V9C24.3698 11.76 26.6098 14 29.3698 14H36.1698C36.2998 14.34 36.3698 14.7 36.3698 15.07V43H36.3797Z\" fill=\"currentcolor\"/> <path d=\"M14.0798 24.8906C14.0798 23.7906 14.9798 22.8906 16.0798 22.8906H19.4698C22.3098 22.8906 24.6598 24.3406 24.6598 27.2906C24.6598 30.2406 22.4198 31.9306 19.2298 31.9306H16.7698V36.6606C16.7698 37.4006 16.1698 38.0006 15.4298 38.0006C14.6898 38.0006 14.0898 37.4006 14.0898 36.6606V24.8906H14.0798ZM16.7598 29.8206H19.0698C20.8098 29.8206 21.9498 29.1806 21.9498 27.3606C21.9498 25.7306 20.7798 25.0306 19.1298 25.0306H16.7498V29.8306L16.7598 29.8206Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-xls\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.3407 14C38.1407 13.07 37.6807 12.22 37.0007 11.54L36.4607 11L27.4607 2L26.9207 1.46C26.2407 0.78 25.3807 0.32 24.4607 0.12C24.1107 0.04 23.7507 0 23.3907 0H5.46069C2.70069 0 0.460693 2.24 0.460693 5V43C0.460693 45.76 2.70069 48 5.46069 48H33.4607C36.2207 48 38.4607 45.76 38.4607 43V15.07C38.4607 14.71 38.4107 14.35 38.3407 14ZM34.6407 12H29.4707C27.8207 12 26.4707 10.65 26.4707 9V3.83L34.6407 12ZM36.4707 43C36.4707 44.65 35.1207 46 33.4707 46H5.46069C3.81069 46 2.46069 44.65 2.46069 43V5C2.46069 3.35 3.81069 2 5.46069 2H23.3907C23.7607 2 24.1207 2.07 24.4607 2.2V9C24.4607 11.76 26.7007 14 29.4607 14H36.2607C36.3907 14.34 36.4607 14.7 36.4607 15.07V43H36.4707Z\" fill=\"currentcolor\"/> <path d=\"M23.4107 38.0006C22.9407 38.0006 22.5107 37.7506 22.2707 37.3406L19.3907 32.2806H19.3707L16.4607 37.3906C16.2507 37.7706 15.8407 38.0006 15.4107 38.0006C14.4707 38.0006 13.8907 36.9706 14.3807 36.1606L17.9207 30.3906L14.5807 24.8606C14.0607 23.9906 14.6807 22.8906 15.6907 22.8906C16.1607 22.8906 16.5907 23.1406 16.8207 23.5406L19.5307 28.2806L19.5507 28.2606L22.3507 23.4806C22.5607 23.1206 22.9507 22.8906 23.3807 22.8906C24.3107 22.8906 24.8807 23.9106 24.3907 24.7006L21.0307 30.1206L24.5407 36.0206C25.0607 36.8906 24.4307 38.0006 23.4207 38.0006H23.4107Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-zip\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.7043 14C38.5043 13.07 38.0443 12.22 37.3643 11.54L36.8243 11L27.8243 2L27.2843 1.46C26.6043 0.78 25.7443 0.32 24.8243 0.12C24.4743 0.04 24.1143 0 23.7543 0H5.82434C3.06434 0 0.824341 2.24 0.824341 5V43C0.824341 45.76 3.06434 48 5.82434 48H33.8243C36.5843 48 38.8243 45.76 38.8243 43V15.07C38.8243 14.71 38.7743 14.35 38.7043 14ZM35.0043 12H29.8343C28.1843 12 26.8343 10.65 26.8343 9V3.83L35.0043 12ZM36.8343 43C36.8343 44.65 35.4843 46 33.8343 46H5.82434C4.17434 46 2.82434 44.65 2.82434 43V5C2.82434 3.35 4.17434 2 5.82434 2H23.7543C24.1243 2 24.4843 2.07 24.8243 2.2V9C24.8243 11.76 27.0643 14 29.8243 14H36.6243C36.7543 14.34 36.8243 14.7 36.8243 15.07V43H36.8343Z\" fill=\"currentcolor\"/> <path d=\"M14.8243 20H12.8243V22H14.8243V20Z\" fill=\"currentcolor\"/> <path d=\"M12.8243 18H10.8243V20H12.8243V18Z\" fill=\"currentcolor\"/> <path d=\"M14.8243 16H12.8243V18H14.8243V16Z\" fill=\"currentcolor\"/> <path d=\"M12.8243 14H10.8243V16H12.8243V14Z\" fill=\"currentcolor\"/> <path d=\"M14.8243 12H12.8243V14H14.8243V12Z\" fill=\"currentcolor\"/> <path d=\"M12.8243 10H10.8243V12H12.8243V10Z\" fill=\"currentcolor\"/> <path d=\"M14.8243 8H12.8243V10H14.8243V8Z\" fill=\"currentcolor\"/> <path d=\"M12.8243 6H10.8243V8H12.8243V6Z\" fill=\"currentcolor\"/> <path d=\"M14.8243 4H12.8243V6H14.8243V4Z\" fill=\"currentcolor\"/> <path d=\"M12.8243 2H10.8243V4H12.8243V2Z\" fill=\"currentcolor\"/> <path d=\"M17.7244 32.14L15.4744 23.69C15.3644 23.29 15.0044 23 14.5844 23H11.0644C10.6444 23 10.2744 23.28 10.1744 23.69L7.92435 32.14C7.30435 35.17 9.62435 37.97 12.8244 38C16.0144 37.98 18.3444 35.18 17.7244 32.14ZM15.1944 34.89C14.6244 35.58 13.7644 35.98 12.8244 35.99C11.8844 35.98 11.0244 35.58 10.4544 34.89C9.92435 34.24 9.71435 33.42 9.87435 32.59L11.8944 25H13.7544L15.7744 32.59C15.9344 33.42 15.7244 34.24 15.1944 34.89Z\" fill=\"currentcolor\"/> <path d=\"M13.8243 32H11.8243C11.2721 32 10.8243 32.4477 10.8243 33C10.8243 33.5523 11.2721 34 11.8243 34H13.8243C14.3766 34 14.8243 33.5523 14.8243 33C14.8243 32.4477 14.3766 32 13.8243 32Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-video\": `<svg width=\"39\" height=\"48\" viewBox=\"0 0 39 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M37.977 14C37.777 13.07 37.317 12.22 36.637 11.54L36.097 11L27.097 2L26.557 1.46C25.877 0.78 25.017 0.32 24.097 0.12C23.747 0.04 23.387 0 23.027 0H5.09705C2.33705 0 0.0970459 2.24 0.0970459 5V43C0.0970459 45.76 2.33705 48 5.09705 48H33.097C35.857 48 38.097 45.76 38.097 43V15.07C38.097 14.71 38.047 14.35 37.977 14ZM34.277 12H29.107C27.457 12 26.107 10.65 26.107 9V3.83L34.277 12ZM36.107 43C36.107 44.65 34.757 46 33.107 46H5.09705C3.44705 46 2.09705 44.65 2.09705 43V5C2.09705 3.35 3.44705 2 5.09705 2H23.027C23.397 2 23.757 2.07 24.097 2.2V9C24.097 11.76 26.337 14 29.097 14H35.897C36.027 14.34 36.097 14.7 36.097 15.07V43H36.107Z\" fill=\"currentcolor\"/> <path d=\"M22.097 26.0002V29.0102C22.097 29.7802 22.927 30.2602 23.587 29.8802L25.077 29.0302L28.087 27.3202V34.6902L25.077 32.9802L23.587 32.1302C22.917 31.7502 22.097 32.2302 22.097 33.0002V35.9902H10.097V25.9902H22.097M22.097 23.9902H10.097C8.99705 23.9902 8.09705 24.8902 8.09705 25.9902V35.9902C8.09705 37.0902 8.99705 37.9902 10.097 37.9902H22.097C23.197 37.9902 24.097 37.0902 24.097 35.9902V34.7202L27.107 36.4302C27.427 36.6102 27.767 36.6902 28.087 36.6902C29.137 36.6902 30.087 35.8502 30.087 34.6902V27.3202C30.087 26.1502 29.127 25.3202 28.087 25.3202C27.757 25.3202 27.417 25.4002 27.107 25.5802L24.097 27.2902V25.9902C24.097 24.8902 23.197 23.9902 22.097 23.9902Z\" fill=\"currentcolor\"/> </svg> `,\n \"goa-audio\": `<svg width=\"39\" height=\"49\" viewBox=\"0 0 39 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.0679 14.2305C37.8679 13.3005 37.4079 12.4505 36.7279 11.7705L36.1879 11.2305L27.1879 2.23047L26.6479 1.69047C25.9679 1.01047 25.1079 0.550469 24.1879 0.350469C23.8379 0.270469 23.4779 0.230469 23.1179 0.230469H5.18793C2.42793 0.230469 0.187927 2.47047 0.187927 5.23047V43.2305C0.187927 45.9905 2.42793 48.2305 5.18793 48.2305H33.1879C35.9479 48.2305 38.1879 45.9905 38.1879 43.2305V15.3005C38.1879 14.9405 38.1379 14.5805 38.0679 14.2305ZM34.3679 12.2305H29.1979C27.5479 12.2305 26.1979 10.8805 26.1979 9.23047V4.06047L34.3679 12.2305ZM36.1979 43.2305C36.1979 44.8805 34.8479 46.2305 33.1979 46.2305H5.19792C3.54792 46.2305 2.19792 44.8805 2.19792 43.2305V5.23047C2.19792 3.58047 3.54792 2.23047 5.19792 2.23047H23.1279C23.4979 2.23047 23.8579 2.30047 24.1979 2.43047V9.23047C24.1979 11.9905 26.4379 14.2305 29.1979 14.2305H35.9979C36.1279 14.5705 36.1979 14.9305 36.1979 15.3005V43.2305Z\" fill=\"currentcolor\"/> <path d=\"M20.1879 25.1189V37.3489L16.3479 34.6089L15.8279 34.2389H10.1879V28.2389H15.8279L16.3479 27.8689L20.1879 25.1289M20.1879 23.1289C19.7979 23.1289 19.3979 23.2489 19.0279 23.5089L15.1879 26.2489H10.1879C9.08793 26.2489 8.18793 27.1489 8.18793 28.2489V34.2489C8.18793 35.3489 9.08793 36.2489 10.1879 36.2489H15.1879L19.0279 38.9889C19.3879 39.2489 19.7879 39.3689 20.1879 39.3689C21.2279 39.3689 22.1979 38.5489 22.1979 37.3689V25.1389C22.1979 23.9589 21.2279 23.1389 20.1879 23.1389V23.1289Z\" fill=\"currentcolor\"/> <path d=\"M26.1381 23.707C26.6381 24.037 27.1081 24.417 27.5481 24.857C27.9881 25.297 28.3681 25.767 28.6981 26.267C29.0281 26.767 29.2981 27.287 29.5181 27.837C29.7381 28.387 29.8981 28.937 30.0081 29.507C30.1181 30.077 30.1681 30.647 30.1681 31.227C30.1681 31.807 30.1181 32.377 30.0081 32.947C29.8981 33.517 29.7381 34.077 29.5181 34.617C29.2981 35.157 29.0281 35.687 28.6981 36.187C28.3681 36.687 27.9881 37.157 27.5481 37.597C27.1081 38.037 26.6381 38.417 26.1381 38.747\" stroke=\"currentcolor\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\"/> </svg> `,\n \"goa-image\": `<svg width=\"39\" height=\"49\" viewBox=\"0 0 39 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M38.1588 14.2305C37.9588 13.3005 37.4988 12.4505 36.8188 11.7705L36.2788 11.2305L27.2788 2.23047L26.7388 1.69047C26.0588 1.01047 25.1988 0.550469 24.2788 0.350469C23.9288 0.270469 23.5688 0.230469 23.2088 0.230469H5.27881C2.51881 0.230469 0.278809 2.47047 0.278809 5.23047V43.2305C0.278809 45.9905 2.51881 48.2305 5.27881 48.2305H33.2788C36.0388 48.2305 38.2788 45.9905 38.2788 43.2305V15.3005C38.2788 14.9405 38.2288 14.5805 38.1588 14.2305ZM34.4588 12.2305H29.2888C27.6388 12.2305 26.2888 10.8805 26.2888 9.23047V4.06047L34.4588 12.2305ZM36.2888 43.2305C36.2888 44.8805 34.9388 46.2305 33.2888 46.2305H5.2888C3.6388 46.2305 2.2888 44.8805 2.2888 43.2305V5.23047C2.2888 3.58047 3.6388 2.23047 5.2888 2.23047H23.2188C23.5888 2.23047 23.9488 2.30047 24.2888 2.43047V9.23047C24.2888 11.9905 26.5288 14.2305 29.2888 14.2305H36.0888C36.2188 14.5705 36.2888 14.9305 36.2888 15.3005V43.2305Z\" fill=\"currentcolor\"/> <path d=\"M20.9985 28.2305C21.3585 28.2305 21.6485 28.4405 21.7885 28.7305L27.1085 36.7305C27.3185 37.0205 27.3185 37.4405 27.1785 37.7305C27.0385 38.0905 26.6785 38.2305 26.3185 38.2305H12.2385C11.8785 38.2305 11.5885 38.0905 11.3785 37.7305C11.2385 37.4405 11.2385 37.0205 11.4485 36.7305L14.8285 31.7305C14.9685 31.4405 15.3285 31.2305 15.6185 31.2305C15.9785 31.2305 16.2685 31.4405 16.4785 31.7305L17.3385 32.9405L20.1385 28.7305C20.3585 28.4405 20.6385 28.2305 20.9985 28.2305ZM20.9985 26.2305C20.0485 26.2305 19.1685 26.6905 18.5385 27.5305L18.4985 27.5805L18.4685 27.6305L17.1185 29.6605C16.6585 29.3805 16.1485 29.2405 15.6085 29.2405C14.6085 29.2405 13.6185 29.8205 13.1085 30.6905L9.79851 35.5905C9.17851 36.4505 9.08851 37.6705 9.57851 38.6305L9.60851 38.7005L9.6485 38.7705C10.2085 39.7005 11.1485 40.2405 12.2285 40.2405H26.3085C27.5185 40.2405 28.5385 39.6005 28.9985 38.5605C29.4385 37.6105 29.3385 36.4405 28.7485 35.6005L23.5085 27.7105C22.9885 26.8005 22.0485 26.2405 21.0085 26.2405L20.9985 26.2305Z\" fill=\"currentcolor\"/> <path d=\"M12.7788 23.2305C13.6088 23.2305 14.2788 23.9005 14.2788 24.7305C14.2788 25.5605 13.6088 26.2305 12.7788 26.2305C11.9488 26.2305 11.2788 25.5605 11.2788 24.7305C11.2788 23.9005 11.9488 23.2305 12.7788 23.2305ZM12.7788 21.2305C10.8488 21.2305 9.27881 22.8005 9.27881 24.7305C9.27881 26.6605 10.8488 28.2305 12.7788 28.2305C14.7088 28.2305 16.2788 26.6605 16.2788 24.7305C16.2788 22.8005 14.7088 21.2305 12.7788 21.2305Z\" fill=\"currentcolor\"/> </svg> `,\n } as const;\n\n function iconName(type: GoAIconType): string {\n const name =\n theme === \"filled\" || (type as string).indexOf(\"logo\") === 0\n ? type\n : `${type}-${theme}`;\n\n return name;\n }\n</script>\n\n<div\n {role}\n aria-label={arialabel}\n aria-controls={ariacontrols}\n aria-expanded={_ariaExpanded}\n class={`goa-icon goa-icon--${size}`}\n class:inverted={_isInverted}\n data-testid={testid}\n {title}\n style={`\n ${calculateMargin(mt, mr, mb, ml)}\n ${cssVar(\"--fill-color\", fillcolor)};\n ${cssVar(\"--opacity\", opacity)};\n `}\n>\n {#if type}\n {#if type in _iconOverrides}\n <div class=\"icon-override\">\n {@html _iconOverrides[type]}\n </div>\n {:else}\n <ion-icon name={iconName(type)} />\n {/if}\n {/if}\n</div>\n\n<style>\n :host {\n display: inline-flex;\n align-items: center;\n }\n\n ion-icon {\n pointer-events: none;\n width: 100%;\n height: 100%;\n }\n\n .goa-icon {\n fill: var(--fill-color);\n color: var(--fill-color);\n opacity: var(--opacity);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .goa-icon--small {\n width: var(--goa-icon-size-m);\n height: var(--goa-icon-size-m);\n }\n .goa-icon--medium {\n width: var(--goa-icon-size-l);\n height: var(--goa-icon-size-l);\n }\n .goa-icon--large {\n width: 2rem;\n height: 2rem;\n }\n .goa-icon--xlarge {\n width: 2.5rem;\n height: 2.5rem;\n }\n\n /* override height when a custom svg icon is used to ensure svg retains dims */\n .goa-icon:has(.icon-override) {\n height: fit-content;\n }\n\n .icon-override {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .inverted * {\n color: #fff;\n fill: #fff;\n }\n</style>\n","<svelte:options customElement=\"goa-input\" />\n\n<script lang=\"ts\" context=\"module\">\n export type GoAInputVariant = \"goa\" | \"bare\";\n</script>\n\n<script lang=\"ts\">\n import { typeValidator, toBoolean } from \"../../common/utils\";\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount, tick } from \"svelte\";\n\n // Validators\n const [Types, validateType] = typeValidator(\"Input type\", [\n \"text\",\n \"number\",\n \"password\",\n \"email\",\n \"date\",\n \"datetime-local\",\n \"month\",\n \"range\",\n \"search\",\n \"tel\",\n \"time\",\n \"url\",\n \"week\",\n ]);\n\n const [AutoCapitalize, validateAutoCapitalize] = typeValidator(\n \"Input auto capitalize\",\n [\"on\", \"off\", \"none\", \"sentences\", \"words\", \"characters\"],\n );\n\n // Types\n type Type = (typeof Types)[number];\n type AutoCapitalize = (typeof AutoCapitalize)[number];\n\n export let type: Type = \"text\";\n export let name: string = \"\";\n export let value: string = \"\";\n export let autocapitalize: AutoCapitalize = \"off\";\n export let placeholder: string = \"\";\n export let leadingicon: GoAIconType | null = null;\n export let trailingicon: GoAIconType | null = null;\n export let variant: GoAInputVariant = \"goa\";\n export let disabled: string = \"false\";\n export let handletrailingiconclick: string = \"false\";\n export let focused: string = \"false\";\n export let readonly: string = \"false\";\n export let error: string = \"false\";\n export let testid: string = \"\";\n export let width: string = \"30ch\";\n export let arialabel: string = \"\";\n export let arialabelledby: string = \"\";\n export let min: string = \"\";\n export let max: string = \"\";\n export let step: number = 1;\n export let prefix: string = \"\";\n export let suffix: string = \"\";\n export let debounce: number = 0;\n export let maxlength: number | null = null;\n export let id: string = \"\";\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n let _leadingContentSlot = false;\n let _trailingContentSlot = false;\n let _debounceId: any;\n let inputEl: HTMLElement;\n let _rootEl: HTMLElement;\n\n $: handlesTrailingIconClick = toBoolean(handletrailingiconclick);\n $: isFocused = toBoolean(focused);\n $: isReadonly = toBoolean(readonly);\n $: isError = toBoolean(error);\n $: isDisabled = toBoolean(disabled);\n\n // TODO: determine if this and the next reactive statement need to be reactive, as they are both\n // things that should only be run once\n $: if (isFocused && inputEl) {\n setTimeout(() => inputEl.focus(), 2);\n }\n\n $: if (inputEl && type === \"search\") {\n inputEl.addEventListener(\"search\", (e) => {\n onKeyUp(e);\n });\n }\n\n function onKeyUp(e: Event) {\n const input = e.target as HTMLInputElement;\n\n if (!input) return;\n if (isReadonly) return;\n\n if (_debounceId != null) {\n clearTimeout(_debounceId);\n }\n\n _debounceId = setTimeout(() => {\n input.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n bubbles: false,\n cancelable: true,\n detail: { name, value: input.value },\n }),\n );\n }, debounce);\n\n input.dispatchEvent(\n new CustomEvent(\"_keyPress\", {\n composed: true,\n detail: { name, value: input.value, key: (e as KeyboardEvent).key },\n }),\n );\n value = input.value;\n }\n\n function onFocus(e: Event) {\n const input = e.target as HTMLInputElement;\n input.dispatchEvent(\n new CustomEvent(\"_focus\", {\n composed: true,\n detail: { name, value: input.value },\n }),\n );\n }\n\n function onBlur(e: Event) {\n const input = e.target as HTMLInputElement;\n input.dispatchEvent(\n new CustomEvent(\"_blur\", {\n composed: true,\n detail: { name, value: input.value },\n }),\n );\n }\n\n function doClick() {\n // @ts-ignore\n this.dispatchEvent(\n new CustomEvent(\"_trailingIconClick\", { composed: true }),\n );\n }\n\n onMount(async () => {\n await tick();\n\n validateType(type);\n validateAutoCapitalize(autocapitalize);\n\n if (prefix != \"\" || suffix != \"\") {\n console.warn(\n \"GoAInput [prefix] and [suffix] properties are deprecated. Instead use leadingContent and trailingContent.\",\n );\n }\n\n const leadingContentSlot = _rootEl.querySelector(\n \"slot[name=leadingContent]\",\n ) as HTMLSlotElement;\n\n if (leadingContentSlot && leadingContentSlot.assignedNodes().length > 0) {\n _leadingContentSlot = true;\n }\n\n const trailingContentSlot = _rootEl.querySelector(\n \"slot[name=trailingContent]\",\n ) as HTMLSlotElement;\n\n if (trailingContentSlot && trailingContentSlot.assignedNodes().length > 0) {\n _trailingContentSlot = true;\n }\n });\n</script>\n\n<!-- HTML -->\n\n<div\n class=\"container\"\n style={`--width: ${width};${calculateMargin(mt, mr, mb, ml)}`}\n bind:this={_rootEl}\n>\n <div\n class=\"goa-input variant--{variant} type--{type}\"\n class:input--disabled={isDisabled}\n class:leading-content={_leadingContentSlot}\n class:trailing-content={_trailingContentSlot}\n class:error={isError}\n >\n {#if prefix}\n <div class=\"prefix\">\n {prefix}\n </div>\n {/if}\n\n <div class=\"leading-content-slot\">\n <slot name=\"leadingContent\" />\n </div>\n\n {#if leadingicon}\n <goa-icon\n class=\"leading-icon\"\n data-testid=\"leading-icon\"\n type={leadingicon}\n />\n {/if}\n\n <input\n bind:this={inputEl}\n class=\"input--{variant}\"\n class:input-leading-content={_leadingContentSlot && !isDisabled}\n class:input-trailing-content={_trailingContentSlot && !isDisabled}\n style={`--search-icon-offset: ${trailingicon ? \"-0.5rem\" : \"0\"}`}\n readonly={isReadonly}\n disabled={isDisabled}\n data-testid={testid}\n {autocapitalize}\n {name}\n {type}\n {value}\n {placeholder}\n {min}\n {max}\n {step}\n {maxlength}\n id={id || name}\n role=\"textbox\"\n aria-label={arialabel || name}\n aria-labelledby={arialabelledby}\n on:keyup={onKeyUp}\n on:change={onKeyUp}\n on:focus={onFocus}\n on:blur={onBlur}\n />\n\n <!-- Trailing Icon -->\n {#if trailingicon && !handlesTrailingIconClick}\n <goa-icon\n class=\"trailing-icon\"\n data-testid=\"trailing-icon\"\n size=\"medium\"\n type={trailingicon}\n />\n {/if}\n\n <!-- Trailing Icon Button -->\n {#if trailingicon && handlesTrailingIconClick}\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <goa-icon-button\n on:click={doClick}\n disabled={isDisabled}\n variant=\"nocolor\"\n size=\"medium\"\n icon={trailingicon}\n data-testid=\"trailing-icon-button\"\n class=\"trailing-icon-button\"\n />\n {/if}\n\n {#if suffix}\n <span class=\"suffix\">{suffix}</span>\n {/if}\n <div class=\"trailing-content-slot\">\n <slot name=\"trailingContent\" />\n </div>\n </div>\n</div>\n\n<!-- Styles -->\n<style>\n :host {\n box-sizing: border-box;\n }\n\n .container {\n position: relative;\n width: 100%;\n display: inline-block;\n }\n\n @media not (--mobile) {\n .container {\n width: var(--width);\n }\n }\n\n .goa-input,\n .goa-input * {\n box-sizing: border-box;\n line-height: normal;\n }\n\n .goa-input {\n box-sizing: border-box;\n outline: none;\n transition: box-shadow 0.1s ease-in;\n border: 1px solid var(--goa-color-greyscale-700);\n border-radius: var(--goa-border-radius-m);\n display: inline-flex;\n align-items: stretch;\n /* The vertical align fixes inputs with a leading icon to not be vertically offset */\n vertical-align: middle;\n min-width: 100%;\n background-color: var(--goa-color-greyscale-white);\n }\n\n .goa-input:not(.leading-content):not(.trailing-content):hover{\n border-color: var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n }\n .goa-input:active:not(.leading-content):not(.trailing-content),\n .goa-input:focus:not(.leading-content):not(.trailing-content),\n .goa-input:focus-within:not(.leading-content):not(.trailing-content) {\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n }\n\n /* type=range does not have an outline/box-shadow */\n .goa-input.type--range {\n border: none;\n }\n\n .goa-input.type--range:active,\n .goa-input.type--range:focus,\n .goa-input.type--range:focus-within {\n box-shadow: none;\n }\n\n .leading-icon {\n margin-left: 0.75rem;\n }\n\n .trailing-icon {\n margin-right: var(--goa-space-s);\n }\n\n .trailing-icon-button {\n margin-right: var(--goa-space-xs);\n }\n\n input {\n display: inline-block;\n color: var(--goa-color-text-default);\n font-size: var(--goa-font-size-4);\n padding: var(--goa-space-xs) var(--goa-space-s);\n line-height: calc(40px - calc(var(--goa-space-xs) * 2));\n background-color: transparent;\n width: 100%;\n flex: 1 1 auto;\n font-family: var(--goa-font-family-sans);\n z-index: 1;\n }\n\n input[readonly] {\n cursor: pointer;\n }\n\n .leading-icon + input {\n padding-left: 0.5rem;\n }\n\n input,\n input:focus,\n input:hover,\n input:active {\n outline: none;\n border: none;\n }\n\n .input--disabled,\n .input--disabled:hover,\n .input--disabled:active,\n .input--disabled:focus {\n background-color: var(--goa-color-greyscale-100);\n border-color: var(--goa-color-greyscale-200) !important;\n cursor: default;\n box-shadow: none !important;\n }\n\n .input--disabled input,\n .input--disabled input:hover,\n .input--disabled input:active,\n .input--disabled input:focus {\n color: var(--goa-color-text-secondary);\n }\n\n .input--disabled input:hover {\n cursor: default !important;\n }\n\n .prefix,\n .suffix,\n .leading-content-slot :global(::slotted(div)),\n .trailing-content-slot :global(::slotted(div)) {\n background-color: var(--goa-color-greyscale-100);\n padding: 0 0.75rem;\n display: flex;\n align-items: center;\n }\n\n .leading-content-slot :global(::slotted(div)),\n .trailing-content-slot :global(::slotted(div)) {\n padding: 0.5rem 0.75rem;\n }\n\n .prefix,\n .leading-content-slot :global(::slotted(div)){\n /* background-clip doesn't want to work */\n border-top-left-radius: var(--goa-border-radius-m);\n border-bottom-left-radius: var(--goa-border-radius-m);\n border-right: 1px solid var(--goa-color-greyscale-700);\n }\n\n .suffix,\n .trailing-content-slot :global(::slotted(div)) {\n /* background-clip doesn't want to work */\n border-top-right-radius: var(--goa-border-radius-m);\n border-bottom-right-radius: var(--goa-border-radius-m);\n border-left: 1px solid var(--goa-color-greyscale-700);\n }\n\n .input--disabled .prefix,\n .input--disabled .leading-content-slot :global(::slotted(div)) {\n border-right: 1px solid var(--goa-color-greyscale-200);\n }\n\n .input--disabled .suffix,\n .input--disabled .trailing-content-slot :global(::slotted(div)) {\n border-left: 1px solid var(--goa-color-greyscale-200);\n }\n\n /* Themes */\n input.input--goa {\n display: block;\n border: none;\n flex: 1 1 auto;\n }\n\n .variant--bare {\n border: none;\n }\n\n .variant--bare:focus,\n .variant--bare:active,\n .variant--bare:focus-within {\n box-shadow: none;\n }\n\n .error:not(.leading-content):not(.trailing-content),\n .error:not(.leading-content):not(.trailing-content):hover{\n border: 2px solid var(--goa-color-interactive-error);\n box-shadow: 0 0 0 1px var(--goa-color-interactive-error);\n }\n\n .error:not(.leading-content):not(.trailing-content):focus-within:hover{\n border: 2px solid var(--goa-color-interactive-error);\n box-shadow: 0 0 0 3px var(--goa-color-interactive-focus);\n }\n\n .error .input-leading-content,\n .error .input-leading-content:hover,\n .error .input-trailing-content,\n .error .input-trailing-content:hover {\n outline: var(--goa-border-width-s) solid var(--goa-color-interactive-error);\n box-shadow: inset 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-error);\n }\n\n .error .input-leading-content:focus,\n .error .input-trailing-content:focus,\n .error .input-leading-content:active,\n .error .input-trailing-content:active {\n outline: var(--goa-border-width-s) solid var(--goa-color-interactive-error);\n box-shadow: 0 0 0 var(--goa-border-width-l)\n var(--goa-color-interactive-focus);\n }\n\n .input-leading-content:hover,\n .input-trailing-content:hover {\n box-shadow: inset 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n outline: var(--goa-border-width-s) solid var(--goa-color-interactive-hover);\n }\n\n .input-leading-content:active,\n .input-leading-content:focus,\n .input-leading-content:focus-within,\n .input-trailing-content:active,\n .input-trailing-content:focus,\n .input-trailing-content:focus-within {\n box-shadow: 0 0 0 var(--goa-border-width-l)\n var(--goa-color-interactive-focus);\n outline: var(--goa-border-width-s) solid var(--goa-color-greyscale-700);\n }\n\n .error .input-trailing-content,\n .input-trailing-content:hover,\n .input-trailing-content:active,\n .input-trailing-content:focus,\n .input-trailing-content:focus-within {\n border-top-left-radius: var(--goa-border-radius-m);\n border-bottom-left-radius: var(--goa-border-radius-m);\n }\n\n .error .input-leading-content,\n .input-leading-content:hover,\n .input-leading-content:active,\n .input-leading-content:focus,\n .input-leading-content:focus-within{\n border-top-right-radius: var(--goa-border-radius-m);\n border-bottom-right-radius: var(--goa-border-radius-m);\n }\n\n .leading-content .input-trailing-content,\n .leading-content .input-trailing-content:hover,\n .leading-content .input-trailing-content:active,\n .leading-content .input-trailing-content:focus,\n .leading-content .input-trailing-content:focus-within {\n border-radius: 0;\n }\n\n input[type=\"search\"]:enabled:read-write:-webkit-any(\n :focus,\n :hover\n )::-webkit-search-cancel-button {\n position: relative;\n right: var(--search-icon-offset);\n cursor: pointer;\n -webkit-appearance: none;\n height: 1.2rem;\n width: 1.2rem;\n background: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"%23333\" d=\"M405 136.798L375.202 107 256 226.202 136.798 107 107 136.798 226.202 256 107 375.202 136.798 405 256 285.798 375.202 405 405 375.202 285.798 256z\"/></svg>')\n center center no-repeat;\n }\n\n ::-ms-reveal {\n display: none;\n }\n</style>\n","<svelte:options customElement=\"goa-microsite-header\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n\n // Validator\n const [Types, validateType] = typeValidator(\n \"Microsite header type\",\n [\"live\", \"alpha\", \"beta\"],\n true,\n );\n // Type\n type Type = (typeof Types)[number];\n\n export let type: Type;\n export let version: string = \"\";\n export let feedbackurl: string = \"\";\n export let maxcontentwidth = \"100%\";\n export let headerurltarget: UrlTargetType = \"blank\";\n export let feedbackurltarget: UrlTargetType = \"blank\";\n\n // Validator\n const [UrlTarget, validateUrlTargetType] = typeValidator(\n \"URL target values\",\n [\"self\", \"blank\"],\n );\n\n // Types\n type UrlTargetType = (typeof UrlTarget)[number];\n\n function capitalize(val: string): string {\n if (!val || (val && val.length === 0)) return \"\";\n return val[0].toUpperCase() + val.slice(1);\n }\n\n onMount(() => {\n setTimeout(() => validateType(type), 1);\n validateUrlTargetType(headerurltarget);\n validateUrlTargetType(feedbackurltarget);\n });\n</script>\n\n<!-- HTML -->\n<div id=\"container\">\n <div\n class=\"content-container\"\n style={`--max-content-width: ${maxcontentwidth}`}\n >\n {#if type === \"live\"}\n <div data-testid=\"type\" class=\"site-text\">\n An official site of the <a\n href=\"https://www.alberta.ca/index.aspx\"\n target={`_${headerurltarget}`}>Alberta Government</a\n >\n </div>\n {/if}\n\n {#if [\"alpha\", \"beta\"].includes(type)}\n <div\n data-testid=\"type\"\n class=\"service-type service-type--{type.toLowerCase()}\"\n >\n {capitalize(type)}\n </div>\n <div data-testid=\"site-text\" class=\"site-text\">\n This is a new <a\n href=\"https://www.alberta.ca/index.aspx\"\n target={`_${headerurltarget}`}>Alberta Government</a\n >\n service\n {#if feedbackurl}\n <span data-testid=\"feedback\"\n >— help us improve it by giving <a\n href={feedbackurl}\n target={`_${feedbackurltarget}`}>feedback</a\n ></span\n >\n {/if}\n </div>\n {/if}\n <div class=\"spacer\" />\n {#if version}\n <div data-testid=\"version\" class=\"version\">\n {version}\n </div>\n {/if}\n </div>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n #container {\n container: self / inline-size;\n background-color: var(--goa-color-greyscale-100);\n }\n\n a {\n color: var(--goa-color-interactive-default);\n cursor: pointer;\n }\n\n a:hover {\n color: var(--goa-color-interactive-hover);\n }\n\n a:focus {\n outline-width: thin;\n outline-style: solid;\n outline-color: var(--goa-color-interactive-hover);\n outline-offset: 0px;\n }\n\n a[target=\"_blank\"]::after {\n content: \"\";\n width: var(--goa-icon-size-s);\n height: var(--goa-icon-size-s);\n background-color: var(--goa-color-interactive-default);\n display: inline-block;\n margin-left: var(--goa-space-2xs);\n vertical-align: sub;\n mask: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20class%3D%22ionicon%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20d%3D%22M384%20224v184a40%2040%200%200%201-40%2040H104a40%2040%200%200%201-40-40V168a40%2040%200%200%201%2040-40h167.48M336%2064h112v112M224%20288%20440%2072%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%2232%22%2F%3E%3C%2Fsvg%3E\")\n center bottom no-repeat;\n -webkit-mask: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20class%3D%22ionicon%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20d%3D%22M384%20224v184a40%2040%200%200%201-40%2040H104a40%2040%200%200%201-40-40V168a40%2040%200%200%201%2040-40h167.48M336%2064h112v112M224%20288%20440%2072%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%2232%22%2F%3E%3C%2Fsvg%3E\")\n center bottom no-repeat;\n }\n a[target=\"_blank\"]:hover:after {\n background-color: var(--goa-color-interactive-hover);\n }\n\n .content-container {\n\n font-size: var(--goa-font-size-2);\n padding: 0.5rem 1rem;\n\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n max-width: min(var(--max-content-width), 100%);\n margin: 0 auto;\n }\n\n @container self (--not-mobile) {\n .content-container {\n align-items: center;\n padding: 0.25rem 2rem;\n }\n }\n\n @container self (--desktop) {\n .content-container {\n padding: 0.25rem 4.5rem;\n }\n }\n\n .spacer {\n flex: 1 1 auto;\n }\n\n .version {\n color: var(--goa-color-text-secondary);\n padding-left: 1rem;\n line-height: 1.25rem;\n }\n\n .service-type {\n font-weight: bold;\n padding: 0.125rem 0.25rem;\n display: flex;\n margin-right: 1rem;\n line-height: initial;\n }\n\n .service-type--alpha {\n background-color: var(--goa-color-warning-default);\n color: var(--goa-color-text-default);\n }\n\n .service-type--beta {\n background-color: var(--goa-color-brand-default);\n color: var(--goa-color-text-light);\n }\n\n .site-text {\n color: var(--goa-color-text-default);\n line-height: 1.25rem;\n }\n</style>\n","<svelte:options customElement=\"goa-modal\" />\n\n<script lang=\"ts\">\n import { fade, fly } from \"svelte/transition\";\n import noscroll from \"../../common/no-scroll\";\n import { toBoolean, typeValidator } from \"../../common/utils\";\n import { onDestroy, onMount, tick } from \"svelte\";\n\n type CalloutVariant = (typeof CALLOUT_VARIANT)[number];\n type Transition = (typeof Transitions)[number];\n\n // ******\n // Public\n // ******\n\n export let heading: string = \"\";\n export let closable: string = \"false\";\n export let open: string = \"false\";\n export let transition: Transition = \"none\";\n export let calloutvariant: CalloutVariant | null = null;\n export let maxwidth: string = \"60ch\";\n\n // @deprecated: use maxwidth\n export let width: string = \"\";\n\n // *******\n // Private\n // *******\n\n let _rootEl: HTMLElement | null = null;\n let _scrollPos: \"top\" | \"middle\" | \"bottom\" = \"top\";\n let _scrollEl: HTMLElement | null = null;\n let _headerEl: HTMLElement | null = null;\n let _isOpen: boolean = false;\n let _requiresTopPadding: boolean;\n\n // Type verification\n const [CALLOUT_VARIANT, validateCalloutVariant] = typeValidator(\n \"Callout variant\",\n [\"emergency\", \"important\", \"information\", \"success\", \"event\"],\n );\n\n const [Transitions, validateTransition] = typeValidator(\"Modal transition\", [\n \"fast\",\n \"slow\",\n \"none\",\n ]);\n\n // ********\n // Reactive\n // ********\n\n $: _isClosable = toBoolean(closable);\n\n // Moving the reactive var into a timeout prevents accessing null stylesheet\n // reference to allow for creation of the @keyframes for the in:fade and out:fade transitions.\n // DDIDS-1288\n $: setTimeout(() => (_isOpen = toBoolean(open)), 1);\n\n // Show the shadow at the top of the content after scrolling down\n $: if (_isOpen && _scrollEl) {\n const hasScroll = _scrollEl.scrollHeight > _scrollEl.offsetHeight;\n if (hasScroll) {\n _scrollPos = \"top\";\n }\n }\n\n $: if (_isOpen && _rootEl) {\n _requiresTopPadding =\n !!_headerEl?.querySelector(\"div.modal-title\")?.textContent ||\n !!_headerEl?.querySelector(\"div.modal-close\") ||\n getChildren().length > 0;\n }\n\n $: _transitionTime =\n transition === \"none\" ? 0 : transition === \"slow\" ? 400 : 200;\n\n $: _iconType =\n calloutvariant === \"emergency\"\n ? \"warning\"\n : calloutvariant === \"important\"\n ? \"alert-circle\"\n : calloutvariant === \"information\"\n ? \"information-circle\"\n : calloutvariant === \"success\"\n ? \"checkmark-circle\"\n : calloutvariant === \"event\"\n ? \"calendar\"\n : \"\";\n\n // *****\n // Hooks\n // *****\n\n onMount(async () => {\n await tick();\n validateCalloutVariant(calloutvariant);\n validateTransition(transition);\n\n // event listenerts\n window.addEventListener(\"keydown\", onInputKeyDown);\n\n if (width) {\n maxwidth = width;\n console.warn(\"`width` is deprecated. Please use `maxwidth` instead.\");\n }\n });\n\n onDestroy(() => {\n window.removeEventListener(\"keydown\", onInputKeyDown);\n });\n\n // *********\n // Functions\n // *********\n\n function close(e: Event) {\n if (!_isClosable) {\n return;\n }\n _rootEl?.dispatchEvent(new CustomEvent(\"_close\", { composed: true }));\n e.stopPropagation();\n }\n\n const onInputKeyDown = (e: KeyboardEvent) => {\n if (!_isOpen) {\n return;\n }\n switch (e.key) {\n case \"Escape\":\n close(e);\n e.preventDefault();\n break;\n }\n };\n\n function handleScroll(e: CustomEvent) {\n const hasScroll = e.detail.scrollHeight > e.detail.offsetHeight;\n if (!_isOpen || !hasScroll) return;\n\n // top\n if (e.detail.scrollTop == 0) {\n _scrollPos = \"top\";\n return;\n }\n\n // bottom\n if (\n Math.abs(\n e.detail.scrollHeight - e.detail.scrollTop - e.detail.offsetHeight,\n ) < 1\n ) {\n _scrollPos = \"bottom\";\n return;\n }\n\n _scrollPos = \"middle\";\n }\n\n function getChildren(): Element[] {\n const slot = _headerEl?.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n return [...slot.assignedElements()];\n } else {\n // @ts-expect-error\n return [..._headerEl.children] as Element[]; // unit tests\n }\n }\n</script>\n\n{#if _isOpen}\n <goa-focus-trap {open}>\n <div\n use:noscroll={{ enable: _isOpen }}\n in:fade={{ duration: _transitionTime }}\n out:fade={{ delay: _transitionTime, duration: _transitionTime }}\n data-testid=\"modal\"\n class={`modal ${_scrollPos}`}\n style={`--maxwidth: ${maxwidth};`}\n bind:this={_rootEl}\n >\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <div data-testid=\"modal-overlay\" class=\"modal-overlay\" on:click={close} />\n <div\n in:fly={{ duration: _transitionTime, y: 200 }}\n out:fly={{ delay: _transitionTime, duration: _transitionTime, y: -100 }}\n class=\"modal-pane\"\n >\n {#if calloutvariant !== null}\n <div class=\"callout-bar {calloutvariant}\">\n <goa-icon\n type={_iconType}\n inverted={calloutvariant === \"important\" ? \"false\" : \"true\"}\n />\n </div>\n {/if}\n <div class=\"content\">\n <header bind:this={_headerEl} class:has-content={_requiresTopPadding}>\n <div data-testid=\"modal-title\" class=\"modal-title\">\n {#if heading}\n {heading}\n {:else}\n <slot name=\"heading\" />\n {/if}\n </div>\n {#if _isClosable}\n <div class=\"modal-close\">\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <goa-icon-button\n data-testid=\"modal-close-button\"\n icon=\"close\"\n on:click={close}\n variant=\"nocolor\"\n />\n </div>\n {/if}\n </header>\n <div data-testid=\"modal-content\" class=\"modal-content\">\n <goa-scrollable\n direction=\"vertical\"\n hpadding=\"1.9rem\"\n maxheight=\"70vh\"\n bind:this={_scrollEl}\n on:_scroll={handleScroll}\n >\n <slot />\n </goa-scrollable>\n </div>\n <div class=\"modal-actions\" data-testid=\"modal-actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n </div>\n </goa-focus-trap>\n{/if}\n\n<!-- ======================================================================= -->\n<!-- Css -->\n<!-- ======================================================================= -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n position: relative;\n z-index: 99999;\n }\n\n :host * {\n box-sizing: border-box;\n }\n\n .modal {\n font-family: var(--goa-font-family-sans);\n position: fixed;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100vh;\n width: 100%;\n z-index: 3;\n }\n\n .modal-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.2);\n z-index: 1;\n }\n\n .emergency {\n background-color: var(--goa-color-emergency-default);\n }\n .important {\n background-color: var(--goa-color-warning-default);\n }\n .information {\n background-color: var(--goa-color-info-default);\n }\n .event {\n background-color: var(--goa-color-info-default);\n }\n .success {\n background-color: var(--goa-color-success-default);\n }\n\n .callout-bar {\n flex: 0 0 3rem;\n text-align: center;\n padding-top: 2rem;\n border-radius: 4px 0px 0px 4px;\n }\n .content {\n flex: 1 1 auto;\n width: 100%;\n margin: var(--goa-space-xl);\n }\n\n .content header {\n display: flex;\n justify-content: space-between;\n }\n\n header.has-content {\n margin-bottom: var(--goa-space-l);\n }\n\n @media (--mobile) {\n .content {\n margin: var(--goa-space-l);\n }\n header.has-content {\n margin-bottom: var(--goa-space-m);\n }\n\n .modal-actions :global(::slotted(*)) {\n padding: var(--goa-space-l) 0 0;\n }\n }\n\n @media (--desktop) {\n .modal-pane {\n max-width: var(--maxwidth);\n }\n }\n\n .modal-pane {\n background-color: #fff;\n z-index: 2;\n width: 90%;\n display: flex;\n box-shadow: var(--goa-shadow-modal);\n border-radius: 4px;\n border: 1px solid var(--goa-color-greyscale-700);\n }\n\n .modal-actions :global(::slotted(*)) {\n padding: var(--goa-space-xl) 0 0;\n }\n\n .modal-content {\n margin: 0 -2rem;\n line-height: 1.75rem;\n }\n\n .modal-content :global(::slotted(:last-child)) {\n margin-bottom: 0 !important;\n }\n\n .modal-title {\n font: var(--goa-typography-heading-m);\n }\n\n .modal-close {\n padding-left: var(--goa-space-m);\n margin-top: var(--goa-space-2xs);\n }\n\n .scroll-top {\n box-shadow: inset 0px -8px 6px -6px rgba(0, 0, 0, 0.1);\n }\n\n .scroll-middle {\n box-shadow:\n inset 0px -8px 6px -6px rgba(0, 0, 0, 0.1),\n inset 0px 8px 6px -6px rgba(0, 0, 0, 0.1);\n }\n\n .scroll-bottom {\n box-shadow: inset 0px 8px 6px -6px rgba(0, 0, 0, 0.1);\n }\n</style>\n","<svelte:options customElement=\"goa-notification\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { fade } from \"svelte/transition\";\n import { onMount } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n\n // Validator\n const [Types, validateType] = typeValidator(\n \"Notification type\",\n [\"emergency\", \"important\", \"information\", \"event\"] as const,\n true,\n );\n const [AriaLiveTypes, validateAriaLiveType] = typeValidator(\n \"Aria-Live type\",\n [\"assertive\", \"off\", \"polite\"] as const,\n true,\n );\n\n // Type\n type NotificationType = (typeof Types)[number];\n type AriaLiveType = (typeof AriaLiveTypes)[number];\n\n export let type: NotificationType = \"\";\n export let maxcontentwidth = \"100%\";\n export let arialive: AriaLiveType = \"polite\";\n\n let show = true;\n $: iconType =\n type === \"emergency\"\n ? \"warning\"\n : type === \"important\"\n ? \"alert-circle\"\n : type === \"information\"\n ? \"information-circle\"\n : type === \"event\"\n ? \"calendar\"\n : \"\";\n\n onMount(() => {\n validateAriaLiveType(arialive);\n setTimeout(() => validateType(type), 1);\n });\n\n function close(e: Event) {\n show = false;\n e.target?.dispatchEvent(new CustomEvent(\"_dismiss\", { composed: true }));\n e.stopPropagation();\n }\n</script>\n\n<!-- HTML -->\n{#if show}\n <div id=\"container\">\n <div\n transition:fade\n class=\"notification {type}\"\n style={`--max-content-width: ${maxcontentwidth}`}\n >\n <div\n class=\"content-container\"\n role=\"alert\"\n aria-live={arialive}\n aria-atomic=\"true\"\n >\n <div class=\"icon\">\n <goa-icon\n type={iconType}\n inverted={type === \"important\" ? \"false\" : \"true\"}\n />\n </div>\n <div class=\"content\">\n <slot />\n </div>\n <div class=\"close\">\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <button class={type} on:click={close}>\n <goa-icon\n type=\"close\"\n inverted={type === \"important\" ? \"false\" : \"true\"}\n />\n </button>\n </div>\n </div>\n </div>\n </div>\n{/if}\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n #container {\n container: self / inline-size;\n }\n \n .notification {\n padding: var(--goa-space-l) var(--goa-space-m);\n display: flex;\n }\n\n @container self (--not-mobile) {\n .notification {\n padding: var(--goa-space-l) var(--goa-space-xl);\n }\n }\n\n @container self (--desktop) {\n .notification {\n padding: var(--goa-space-l) calc(3 * var(--goa-space-l));\n }\n }\n\n .emergency {\n background-color: var(--goa-color-emergency-default);\n color: var(--goa-color-text-light);\n }\n\n .important {\n background-color: var(--goa-color-warning-default);\n color: var(--goa-color-text-default);\n }\n\n .information,\n .event {\n background-color: var(--goa-color-info-default);\n color: var(--goa-color-text-light);\n }\n\n .icon {\n flex: 0 0 auto;\n }\n\n .content-container {\n display: flex;\n flex-direction: row;\n flex: 1 1 auto;\n gap: var(--goa-space-m);\n margin: 0 auto;\n max-width: min(var(--max-content-width), 100%);\n }\n\n .content {\n flex: 1 1 auto;\n }\n\n :global(::slotted(a)) {\n color: unset !important;\n outline: unset !important;\n }\n :global(::slotted(a:focus)) {\n outline: auto !important;\n border-radius: var(--goa-border-radius-m);\n }\n .notification.important :global(::slotted(a:focus)) {\n outline: unset !important;\n box-shadow: 0 0 0 3px var(--goa-color-greyscale-black);\n border-radius: var(--goa-border-radius-m);\n }\n\n .close {\n flex: 0 0 auto;\n }\n /*Close button*/\n .close button {\n background-color: transparent;\n border: none;\n cursor: pointer;\n padding: var(--goa-space-2xs);\n margin: 0;\n outline: none;\n border-radius: var(--goa-border-radius-m);\n display: inline-flex;\n }\n /*Information & Event Close Button*/\n .close button.information:hover,\n .close button.information:focus,\n .close button.event:hover,\n .close button.event:focus {\n background-color: var(--goa-color-info-dark);\n }\n .close button.information:focus,\n .close button.event:focus {\n box-shadow: 0 0 0 3px var(--goa-color-greyscale-white);\n }\n /*Important close button*/\n .close button.important:hover,\n .close button.important:focus {\n background-color: var(--goa-color-warning-dark);\n }\n .close button.important:focus {\n box-shadow: 0 0 0 3px var(--goa-color-greyscale-black);\n }\n /*Emergency close button*/\n .close button.emergency:hover,\n .close button.emergency:focus {\n background-color: var(--goa-color-emergency-dark);\n }\n .close button.emergency:focus {\n box-shadow: 0 0 0 3px var(--goa-color-greyscale-white);\n }\n</style>\n","<svelte:options customElement=\"goa-one-column-layout\" />\n\n<script lang=\"ts\">\n</script>\n\n<div class=\"page\">\n <section class=\"header\">\n <slot name=\"header\" />\n </section>\n\n <main>\n <slot />\n </main>\n\n <section class=\"footer\">\n <slot name=\"footer\" />\n </section>\n</div>\n\n<style>\n .page {\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n .header,\n .footer {\n flex: 0 0 auto;\n }\n main {\n flex: 1 1 auto;\n }\n</style>\n","const dimensionRegex = /^[1-9]+[0-9]*(px|em|rem|ch|vh|vw|%)$/\nexport function isValidDimension(value: string): boolean {\n return dimensionRegex.test(value)\n}\n","<svelte:options customElement=\"goa-page-block\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { isValidDimension } from \"../../common/validators\";\n\n type Size = \"full\" | string;\n const Sizes = {\n full: \"100%\",\n };\n\n // Required\n export let width: Size;\n\n // Private\n export let _width: string;\n\n function isValidSize(value: string) {\n if ([\"full\"].includes(width)) return true;\n if (isValidDimension(value)) return true;\n\n return false;\n }\n\n onMount(() => {\n if (!isValidSize(width)) {\n console.error(\"Invalid PageBlock width\");\n }\n\n _width = Sizes[width] || width;\n });\n</script>\n\n<!-- HTML -->\n<div class=\"page-content\" style={`--max-width: ${_width}`}>\n <slot />\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .page-content {\n max-width: var(--max-width);\n margin: 0 auto;\n padding: 0 1rem;\n }\n @media not (--mobile) {\n .page-content {\n padding: 0 2rem;\n }\n }\n @media (--desktop) {\n .page-content {\n padding: 0 4.5rem;\n }\n }\n</style>\n","<svelte:options customElement=\"goa-pages\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n\n // Public\n export let current: number = 1; // 1-based\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Private\n let _rootEl: HTMLElement;\n\n // Hooks\n onMount(async () => {\n await tick();\n setCurrentPage(current);\n });\n\n // Reactive\n $: setCurrentPage(current);\n\n function setCurrentPage(current: number) {\n if (!_rootEl) return;\n\n const children = getChildren();\n children.forEach((child: Element, index: number) => {\n const _child = child as HTMLElement;\n _child.style.display = index + 1 === +current ? \"block\" : \"none\";\n });\n }\n\n function getChildren(): Element[] {\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n return [...slot.assignedElements()];\n } else {\n return [..._rootEl.children] as Element[]; // unit tests\n }\n }\n</script>\n\n<div bind:this={_rootEl} style={calculateMargin(mt, mr, mb, ml)} class=\"pages\">\n <slot />\n</div>\n","<svelte:options customElement=\"goa-pagination\" />\n\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { onMount, tick } from \"svelte\";\n import { typeValidator, validateRequired } from \"../../common/utils\";\n\n // Types\n\n const [Variants, validateVariant] = typeValidator(\"Pagination variant\", [\n \"all\",\n \"links-only\",\n ]);\n type Variant = (typeof Variants)[number];\n\n // public\n\n export let pagenumber: number;\n export let itemcount: number;\n export let perpagecount: number = 10;\n export let variant: Variant = \"all\";\n export let mt: Spacing = \"none\";\n export let mr: Spacing = \"none\";\n export let mb: Spacing = \"m\";\n export let ml: Spacing = \"none\";\n\n // reactive\n\n $: _pageCount = Math.ceil(itemcount / perpagecount);\n\n // private\n\n let pageDropdownEl: HTMLElement;\n let hiddenEl: HTMLInputElement; // needed to allow the inputEl's event to be cancelled\n\n // hooks\n\n onMount(async () => {\n await tick();\n validateRequired(\"GoAPagination\", { itemcount, pagenumber });\n validateVariant(variant);\n\n // prevent event propagation\n if (!pageDropdownEl) {\n console.error(\"Missing pageDropdownEl\");\n return;\n }\n pageDropdownEl?.addEventListener(\"_change\", (e: Event) => {\n const ce = e as CustomEvent;\n const page = Number.parseInt(ce.detail.value);\n e.stopPropagation();\n\n hiddenEl.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n bubbles: true,\n detail: { page },\n }),\n );\n });\n });\n\n // functions\n\n function goto(e: Event, offset: number) {\n const newPage = Number.parseInt(pagenumber + \"\") + offset;\n\n if (newPage > 0 && newPage <= _pageCount) {\n e.target?.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n bubbles: true,\n detail: { page: newPage },\n }),\n );\n }\n e.preventDefault();\n }\n</script>\n\n<goa-block id=\"root\" {ml} {mr} {mb} {mt}>\n <div class=\"controls\">\n {#if variant === \"all\"}\n <goa-block data-testid=\"page-selector\" alignment=\"center\" gap=\"s\">\n <span>Page</span>\n <input bind:this={hiddenEl} type=\"hidden\" />\n <goa-dropdown bind:this={pageDropdownEl} value={pagenumber}>\n {#each { length: _pageCount } as _, i}\n <goa-dropdown-item value={i + 1} label={i + 1} />\n {/each}\n </goa-dropdown>\n <span>of {_pageCount}</span>\n </goa-block>\n {/if}\n <goa-block alignment=\"center\" gap=\"m\" data-testid=\"page-links\">\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <goa-button\n on:click={(e) => goto(e, -1)}\n type=\"tertiary\"\n leadingicon=\"arrow-back\"\n disabled={pagenumber == 1 ? \"true\" : \"false\"}>Previous</goa-button\n >\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <goa-button\n on:click={(e) => goto(e, 1)}\n type=\"tertiary\"\n trailingicon=\"arrow-forward\"\n disabled={pagenumber == _pageCount ? \"true\" : \"false\"}>Next</goa-button\n >\n </goa-block>\n </div>\n</goa-block>\n\n<style>\n span {\n white-space: nowrap;\n }\n\n .controls {\n display: flex;\n gap: 1rem;\n flex-direction: column;\n align-items: center;\n width: 100%;\n }\n\n @media (--not-mobile) {\n .controls {\n flex-direction: row;\n justify-content: space-between;\n }\n }\n</style>\n","<svelte:options customElement=\"goa-popover\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n import { calculateMargin } from \"../../common/styling\";\n import { cssVar, toBoolean } from \"../../common/utils\";\n import type { Spacing } from \"../../common/styling\";\n\n // Public\n\n // to allow for data-testid queries within tests\n export let testid: string = \"popover\";\n // prevents the popover from exceeding this width\n export let maxwidth: string = \"320px\";\n // allow width to be hardcoded\n export let width: string = \"\";\n // allows to override the default padding when content needs to be flush with boundries\n export let padded: string = \"true\";\n // provides control to where the popover content is positioned\n export let position: \"above\" | \"below\" | \"auto\" = \"auto\";\n // ajust positioning when popover component is contained within a relative positioned parent\n export let relative: string = \"false\";\n\n // margins\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Exposed privates\n // **Required only to allow popover position to be customized when used within\n // other components. These props should _not_ be documented.**\n\n // allow for outside control of whether popover is open/closed (see AppHeaderMenu)\n export let open: string = \"false\";\n // allows outside control of the `open` property ex. when used within dropdown\n export let disabled: string = \"false\";\n // allows tabindex to be set to -1 to skip tabbing if a parent is handling events\n export let tabindex: string = \"0\";\n // additional vertical offset that is added to popover's position\n export let voffset = \"\";\n // additional horizontal offset that is added to popover's position\n export let hoffset = \"\";\n // width of outline seen when focused\n export let focusborderwidth = \"var(--goa-border-width-l)\";\n // border radius of popover window\n export let borderradius = \"var(--goa-border-radius-m)\";\n\n // Private\n\n let _rootEl: HTMLElement;\n let _targetEl: HTMLElement;\n let _popoverEl: HTMLElement;\n let _focusTrapEl: HTMLElement;\n let _initFocusedEl: HTMLElement;\n let _sectionHeight: number;\n\n // Reactive\n\n $: _padded = toBoolean(padded);\n $: _open = toBoolean(open);\n $: _disabled = toBoolean(disabled);\n $: _relative = toBoolean(relative);\n\n $: (async () => _open && (await setPopoverPosition()))();\n $: (async () => _sectionHeight && (await setPopoverPosition()))();\n $: {\n if (_open) {\n window.addEventListener(\"popstate\", handleUrlChange, true);\n } else {\n window.removeEventListener(\"popstate\", handleUrlChange, true);\n }\n }\n\n // Hooks\n\n onMount(async () => {\n await tick();\n _targetEl.addEventListener(\"keydown\", onTargetEvent);\n\n const slot = _targetEl.querySelector(\"slot\");\n let children: Element[];\n if (slot) {\n children = slot.assignedElements();\n } else {\n // for unit tests only\n // @ts-expect-error\n children = [..._targetEl.children] as Element[];\n }\n\n _initFocusedEl =\n (children.find(\n (el) => (el as HTMLElement).tabIndex >= 0,\n ) as HTMLElement) || _targetEl;\n });\n\n // Functions\n\n // Called on window popstate changes. This allows for clicking links within\n // the popover to close the popover\n function handleUrlChange(_e: Event) {\n closePopover();\n }\n\n // Handles events when the targetEl has focus\n function onTargetEvent(e: KeyboardEvent) {\n switch (e.key) {\n case \" \":\n case \"Enter\":\n openPopover();\n break;\n case \"Escape\":\n closePopover();\n break;\n }\n }\n\n // Event binding when the focusTrapEl has focus. This is required since the\n // popover exists within the slot of the FocusTrap which prevents the existing\n // targetEl eventing binding from \"hearing\" the events\n function onFocusTrapEvent(e: KeyboardEvent) {\n switch (e.key) {\n case \"Escape\":\n closePopover();\n break;\n }\n }\n\n // Opens the popover and adds the required binding to the new slot element\n function openPopover() {\n if (_disabled) return;\n (async () => {\n _open = true;\n await tick();\n _focusTrapEl.addEventListener(\"keydown\", onFocusTrapEvent, true);\n _rootEl.dispatchEvent(new CustomEvent(\"_open\", { composed: true }));\n })();\n }\n\n // Ensures that upon closing of the popover that the element that triggered\n // the popover to be shown re-attains focus and that any window event binding\n // is removed (it may not have been added if target was clicked)\n function closePopover() {\n _initFocusedEl.focus();\n _open = false;\n window.removeEventListener(\"popstate\", handleUrlChange, true);\n _rootEl.dispatchEvent(new CustomEvent(\"_close\", { composed: true }));\n }\n\n function getBoundingClientRectWithMargins(\n el: Element,\n ): Omit<DOMRect, \"toJSON\"> {\n const rect = el.getBoundingClientRect();\n const style = window.getComputedStyle(el);\n const mTop = parseInt(style.marginTop, 10) || 0;\n const mRight = parseInt(style.marginRight, 10) || 0;\n const mBottom = parseInt(style.marginBottom, 10) || 0;\n const mLeft = parseInt(style.marginLeft, 10) || 0;\n\n return {\n top: rect.top - mTop,\n right: rect.right + mRight,\n bottom: rect.bottom + mBottom,\n left: rect.left - mLeft,\n width: rect.width + mLeft + mRight,\n height: rect.height + mTop + mBottom,\n x: rect.x - mLeft,\n y: rect.y - mTop,\n };\n }\n\n async function setPopoverPosition() {\n await tick();\n\n // Get target and content rectangles\n const targetRect = getBoundingClientRectWithMargins(_targetEl);\n const popoverRect = getBoundingClientRectWithMargins(_popoverEl);\n\n // exit if the popover hasn't yet been filled\n if (popoverRect.height < 20) return;\n\n // Calculate available space above and below the target element\n const spaceAbove = targetRect.top;\n const spaceBelow = window.innerHeight - targetRect.bottom;\n\n // Determine if there's more space above or below the target element\n const displayOnTop =\n position === \"auto\"\n ? spaceBelow < popoverRect.height &&\n spaceAbove > popoverRect.height &&\n spaceAbove > spaceBelow\n : position === \"above\";\n\n if (displayOnTop) {\n _popoverEl.style.top = _relative\n ? `${-popoverRect.height}px`\n : `${targetRect.y - popoverRect.height + window.scrollY}px`;\n }\n\n // Move the popover to the left if it is too far to the right and only if there is space to the left\n const rightAligned =\n document.body.clientWidth - targetRect.left < popoverRect.width &&\n targetRect.left > popoverRect.width;\n\n if (rightAligned) {\n _popoverEl.style.left = `${targetRect.x - (popoverRect.width - targetRect.width)}px`;\n }\n }\n</script>\n\n<!-- HTML -->\n\n<div\n bind:this={_rootEl}\n data-testid={testid}\n style={`\n ${(_relative && \"position: relative;\") || \"\"}\n ${calculateMargin(mt, mr, mb, ml)}\n ${cssVar(\"--offset-top\", voffset)}\n ${cssVar(\"--offset-bottom\", voffset)}\n ${cssVar(\"--offset-left\", hoffset)}\n ${cssVar(\"--offset-right\", hoffset)}\n ${cssVar(\"--focus-border-width\", focusborderwidth)}\n ${cssVar(\"--border-radius\", borderradius)}\n`}\n>\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <!-- svelte-ignore a11y-no-noninteractive-tabindex -->\n <div\n class=\"popover-target\"\n tabindex={+tabindex}\n bind:this={_targetEl}\n on:click={openPopover}\n data-testid=\"popover-target\"\n >\n <slot name=\"target\" />\n </div>\n\n {#if _open}\n <!-- svelte-ignore a11y-no-static-element-interactions -->\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <div\n data-testid=\"popover-background\"\n class=\"popover-background\"\n on:click={closePopover}\n />\n <div class=\"popover-container\">\n <section\n bind:clientHeight={_sectionHeight}\n bind:this={_popoverEl}\n data-testid=\"popover-content\"\n class=\"popover-content\"\n style={`\n ${cssVar(\"width\", width)}\n max-width: ${maxwidth};\n padding: ${_padded ? \"var(--goa-space-m)\" : \"0\"};\n `}\n >\n <goa-focus-trap open=\"true\">\n <div bind:this={_focusTrapEl}>\n <slot />\n </div>\n </goa-focus-trap>\n </section>\n </div>\n {/if}\n</div>\n\n<!-- Style -->\n\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n font-size: var(--goa-font-size-4);\n display: flex;\n align-items: center;\n }\n\n .popover-target {\n cursor: pointer;\n }\n\n .popover-target:focus {\n outline: var(--focus-border-width) solid var(--goa-color-interactive-focus);\n }\n\n .popover-content {\n color: var(--goa-color-text-default);\n position: absolute;\n width: fit-content;\n list-style-type: none;\n background: var(--goa-color-greyscale-white);\n border-radius: var(--border-radius);\n outline: none;\n filter: drop-shadow(0px 2px 4px rgba(0, 0, 0, 0.2));\n z-index: 99;\n width: max-content;\n\n margin-top: var(--offset-top, 3px);\n margin-bottom: var(--offset-bottom, 3px);\n margin-left: var(--offset-left, 0);\n margin-right: var(--offset-right, 0);\n }\n\n :global(::slotted(ul)) {\n display: block;\n padding: 0;\n margin: 0;\n list-style-type: none;\n line-height: 2rem;\n }\n\n .popover-background {\n cursor: default;\n position: fixed;\n z-index: 98;\n inset: 0;\n }\n</style>\n","<svelte:options customElement=\"goa-radio-group\" />\n\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { typeValidator, toBoolean } from \"../../common/utils\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount, tick } from \"svelte\";\n\n // Validator\n const [Orientations, validateOrientation] = typeValidator(\n \"Radio group orientation\",\n [\"vertical\", \"horizontal\"],\n );\n\n // Type\n type Orientation = (typeof Orientations)[number];\n\n interface RadioOption {\n label: string;\n value: string;\n description?: string;\n }\n\n // Public\n\n export let name: string;\n export let value: string;\n export let orientation: Orientation = \"vertical\";\n export let disabled: string = \"false\";\n export let error: string = \"false\";\n export let testid: string = \"\";\n export let arialabel: string = \"\";\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Reactive\n\n $: isDisabled = toBoolean(disabled);\n $: isError = toBoolean(error);\n\n // Private\n\n let el: HTMLElement;\n let options: RadioOption[] = [];\n let _options: Element[] = [];\n\n // Hooks\n\n onMount(async () => {\n await tick();\n validateOrientation(orientation);\n\n if (!el) return;\n\n _options = getChildren();\n bindOptions(_options);\n\n el.addEventListener(\"_click\",(e: Event) => {\n onChange((e as CustomEvent).detail);\n });\n });\n\n // Functions\n\n /**\n * Allows the child elements to be obtainable within unit tests\n * @returns List of child elements\n */\n function getChildren(): Element[] {\n const slot = el.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n // default\n return [...slot.assignedElements()];\n } else {\n // unit tests\n // @ts-expect-error\n return [...el.children] as Element[];\n }\n }\n function bindOptions(children: Element[]) {\n children.forEach((el, index) => {\n const option = el as unknown as RadioOption & { innerText: string };\n const optionValue = el.getAttribute(\"value\") || option.value;\n option.setAttribute(\"disabled\", isDisabled);\n option.setAttribute(\"error\", isError);\n option.setAttribute(\"name\", name);\n option.setAttribute(\"checked\", optionValue === value);\n option.setAttribute(\"arialabel\", arialabel || name);\n option.setAttribute(\"ariadescribedby\", `description-${name}-${index}`);\n option.setAttribute(\"data-testid\", `radio-option-${index}`);\n });\n }\n\n /**\n * Handles changing of the radio items\n * @param newValue Selected value\n */\n function onChange(newValue: string) {\n if (newValue === value) return;\n\n value = newValue;\n el.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n bubbles: true,\n detail: { name, value: value },\n }),\n );\n setCurrentSelectedOption();\n }\n\n function setCurrentSelectedOption() {\n _options.forEach((el) => {\n const option = el as unknown as RadioOption & { innerText: string };\n const optionValue = el.getAttribute(\"value\") || option.value;\n option.setAttribute(\"checked\", optionValue === value);\n });\n }\n</script>\n\n<!-- Html -->\n<div\n bind:this={el}\n style={calculateMargin(mt, mr, mb, ml)}\n class={`goa-radio-group--${orientation}`}\n data-testid={testid}\n>\n <slot />\n</div>\n\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n .goa-radio-group--horizontal {\n display: flex;\n flex-direction: row;\n }\n\n .goa-radio-group--vertical {\n display: inline-block;\n }\n</style>\n","<svelte:options customElement=\"goa-radio-item\"/>\n\n<script lang=\"ts\">\n import {toBoolean} from \"../../common/utils\";\n\n export let value: string;\n export let label: string;\n export let description: string = \"\";\n export let disabled: string = \"false\";\n export let error: string = \"false\";\n export let name: string;\n export let checked: string = \"false\";\n export let arialabel: string;\n export let ariadescribedby: string;\n\n let _radioItemEl: HTMLElement;\n\n // Reactive\n $: isDisabled = toBoolean(disabled);\n $: isError = toBoolean(error);\n $: isChecked = toBoolean(checked);\n\n function onChange() {\n if (isDisabled) return;\n if (isChecked) return;\n\n const event = new CustomEvent('_click', {\n detail: value,\n composed: true,\n bubbles: true\n });\n _radioItemEl.dispatchEvent(event);\n }\n</script>\n\n<div class=\"goa-radio-container\">\n <label\n bind:this={_radioItemEl}\n data-testid=\"radio-option-{value}\"\n class=\"goa-radio\"\n class:goa-radio--disabled={isDisabled}\n class:goa-radio--error={isError}\n >\n <input\n type=\"radio\"\n {name}\n value={value}\n disabled={isDisabled}\n checked={isChecked}\n aria-label={arialabel}\n aria-describedby={ariadescribedby}\n on:click={onChange}\n />\n <div class=\"goa-radio-icon\"/>\n <span class=\"goa-radio-label\">\n {label || value}\n </span>\n </label>\n {#if $$slots.description || description}\n <div class=\"goa-radio-description\">\n <slot name=\"description\"/>\n {description}\n </div>\n {/if}\n</div>\n\n<style>\n label.goa-radio {\n --goa-radio-outline-width: 3px;\n --goa-radio-diameter: 1.5rem;\n --goa-radio-border-width: 1px;\n --goa-radio-border-width--checked: 7px;\n box-sizing: border-box;\n display: flex;\n }\n\n .goa-radio-container {\n padding-bottom: 1rem;\n }\n\n .goa-radio:hover {\n cursor: pointer;\n }\n\n .goa-radio *,\n .goa-radio *:before,\n .goa-radio *:after {\n box-sizing: border-box;\n }\n\n .goa-radio input[type=\"radio\"] {\n width: 0;\n height: 0;\n margin: 0;\n opacity: 0;\n }\n\n .goa-radio-label {\n padding: 0 var(--goa-space-xs);\n font-weight: var(--goa-font-weight-regular);\n }\n\n .goa-radio-group--horizontal .goa-radio-label {\n padding-right: var(--goa-space-xl);\n }\n\n .goa-radio-label {\n padding-right: var(--goa-space-xl);\n }\n\n .goa-radio-description {\n font: var(--goa-typography-body-xs);\n margin-left: var(--goa-space-xl);\n margin-top: var(--goa-space-2xs);\n }\n\n .goa-radio-icon {\n display: inline-block;\n height: var(--goa-radio-diameter);\n width: var(--goa-radio-diameter);\n border-radius: 50%;\n background-color: #fff;\n transition: box-shadow 100ms ease-in-out;\n\n /* prevent squishing of radio button */\n flex: 0 0 auto;\n margin-top: var(--font-valign-fix);\n }\n\n /* What is this? */\n .goa-radio:focus > input:not(:disabled) ~ .goa-radio-icon {\n box-shadow: 0 0 0 var(--goa-radio-outline-width) var(--goa-color-interactive-focus);\n }\n\n .goa-radio--disabled .goa-radio-label {\n opacity: 0.4;\n }\n\n .goa-radio--disabled:hover {\n cursor: default;\n }\n\n /* States */\n\n /* Default */\n input[type=\"radio\"]:not(:checked) ~ .goa-radio-icon {\n border: var(--goa-radio-border-width) solid var(--goa-color-greyscale-700);\n }\n\n /* Default:hover */\n input[type=\"radio\"]:hover ~ .goa-radio-icon {\n border: 1px solid var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 1px var(--goa-color-interactive-hover);\n }\n\n /* Checked:hover */\n input[type=\"radio\"]:checked:hover ~ .goa-radio-icon {\n border: 7px solid var(--goa-color-interactive-hover);\n box-shadow: 0 0 0 1px var(--goa-color-interactive-hover);\n }\n\n /* Default:focus */\n input[type=\"radio\"]:focus ~ .goa-radio-icon,\n input[type=\"radio\"]:hover:active ~ .goa-radio-icon,\n input[type=\"radio\"]:hover:focus ~ .goa-radio-icon,\n input[type=\"radio\"]:active ~ .goa-radio-icon {\n box-shadow: 0 0 0 var(--goa-radio-outline-width) var(--goa-color-interactive-focus);\n }\n\n /* Checked */\n input[type=\"radio\"]:checked ~ .goa-radio-icon {\n border: var(--goa-radio-border-width--checked) solid var(--goa-color-interactive-default);\n }\n\n /* Disabled */\n input[type=\"radio\"]:disabled ~ .goa-radio-icon,\n input[type=\"radio\"]:disabled:focus ~ .goa-radio-icon,\n input[type=\"radio\"]:disabled:active ~ .goa-radio-icon {\n border: var(--goa-radio-border-width) solid var(--goa-color-greyscale-700);\n box-shadow: none;\n opacity: 40%;\n }\n\n /* Disabled and checked */\n input[type=\"radio\"]:disabled:checked ~ .goa-radio-icon,\n input[type=\"radio\"]:disabled:checked:focus ~ .goa-radio-icon,\n input[type=\"radio\"]:disabled:checked:active ~ .goa-radio-icon {\n border: var(--goa-radio-border-width--checked) solid var(--goa-color-interactive-hover);\n box-shadow: none;\n }\n\n /* Error */\n .goa-radio--error input[type=\"radio\"]:checked ~ .goa-radio-icon,\n .goa-radio--error input[type=\"radio\"]:disabled:checked ~ .goa-radio-icon {\n border: 7px solid var(--goa-color-emergency-default);\n }\n\n .goa-radio--error input[type=\"radio\"]:hover ~ .goa-radio-icon {\n box-shadow: 0 0 0 1px var(--goa-color-emergency-default);\n }\n\n .goa-radio--error input[type=\"radio\"]:hover:active ~ .goa-radio-icon,\n .goa-radio--error input[type=\"radio\"]:hover:focus ~ .goa-radio-icon {\n box-shadow: 0 0 0 var(--goa-radio-outline-width) var(--goa-color-interactive-focus);\n }\n\n .goa-radio--error input[type=\"radio\"]:disabled:hover ~ .goa-radio-icon {\n box-shadow: none;\n }\n\n .goa-radio--error input[type=\"radio\"]:not(:checked) ~ .goa-radio-icon {\n border: 2px solid var(--goa-color-emergency-default);\n }\n</style>\n","<svelte:options customElement=\"goa-scrollable\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n\n // Public\n export let direction: \"vertical\" | \"horizontal\" = \"vertical\";\n export let hpadding: string = \"\";\n export let vpadding: string = \"\";\n export let maxheight: string = \"\";\n export let offsetHeight: number;\n export let scrollHeight: number;\n\n // Private\n let _el: HTMLElement;\n\n function onScroll(e: Event) {\n e.target.dispatchEvent(\n new CustomEvent(\"_scroll\", {\n composed: true,\n detail: {\n offsetHeight: _el.offsetHeight,\n scrollHeight: _el.scrollHeight,\n scrollTop: _el.scrollTop,\n },\n }),\n );\n e.stopPropagation();\n }\n\n onMount(async () => {\n await tick();\n offsetHeight = _el.offsetHeight;\n scrollHeight = _el.scrollHeight;\n });\n</script>\n\n<div\n class=\"goa-scrollable\"\n bind:this={_el}\n on:scroll={onScroll}\n style={`\n max-height: ${maxheight || \"50vh\"};\n overflow-y: ${direction === \"vertical\" ? \"auto\" : \"hidden\"};\n overflow-x: ${direction === \"horizontal\" ? \"auto\" : \"hidden\"};\n margin: ${vpadding} 0;\n padding: 0 ${hpadding};\n`}\n>\n <slot />\n</div>\n\n<style>\n .goa-scrollable {\n scroll-behavior: smooth;\n }\n\n .goa-scrollable::-webkit-scrollbar {\n width: 6px;\n }\n\n .goa-scrollable::-webkit-scrollbar-track {\n background: #f1f1f1;\n }\n\n .goa-scrollable::-webkit-scrollbar-thumb {\n background: #888;\n }\n\n .goa-scrollable::-webkit-scrollbar-thumb:hover {\n background: #555;\n }\n</style>\n","export function isUrlMatch(windowUrl: URL | Location, testUrl: string): number {\n // path match\n if (testUrl === undefined) return -1;\n\n const windowUrlParts = windowUrl.pathname.replace(/^\\//, \"\").split(\"/\");\n const urlParts = testUrl.replace(/^\\//, \"\").split(\"/\");\n\n if (windowUrlParts.length < urlParts.length) {\n return -1;\n }\n\n // hash\n if (windowUrl.hash.length > 0 && windowUrl.hash === testUrl) {\n return 1;\n }\n\n // root url\n if (urlParts.length === 1 && urlParts[0] === \"\") {\n return 0;\n }\n\n let weight = -1;\n let index = 0;\n\n for (const part of windowUrlParts) {\n if (urlParts[index] !== part) {\n break;\n }\n weight += 1;\n index++;\n }\n\n // if weight was incremented once, then it actually has a value of 1, not 0\n return weight >= 0 ? weight + 1 : weight;\n}\n","<svelte:options customElement=\"goa-side-menu\" />\n\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { isUrlMatch } from \"../../common/urls\";\n\n let _rootEl: HTMLElement;\n\n onMount(async () => {\n await tick();\n setCurrentUrl();\n addEventListeners();\n });\n\n onDestroy(() => {\n removeEventListeners();\n });\n\n function setCurrentUrl() {\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot) {\n return;\n }\n\n const links = slot\n .assignedElements()\n .filter((el: Element) => el.tagName === \"A\");\n\n let currentEl: Element | undefined = undefined;\n let maxWeight = 0;\n links.forEach((child: Element) => {\n const weight = isUrlMatch(\n document.location,\n child.getAttribute(\"href\") || \"\",\n );\n\n if (weight > maxWeight) {\n maxWeight = weight;\n currentEl = child;\n }\n child.classList.remove(\"current\");\n });\n\n if (!!currentEl) {\n // @ts-expect-error\n currentEl?.classList.add(\"current\");\n }\n }\n\n function addEventListeners() {\n // watch path changes\n let currentLocation = document.location.href;\n const observer = new MutationObserver((_mutationList) => {\n if (isUrlMatch(document.location, currentLocation)) {\n currentLocation = document.location.href;\n setCurrentUrl();\n }\n });\n observer.observe(document.body, { childList: true, subtree: true });\n\n // watch hash / browser history changes\n window.addEventListener(\"popstate\", setCurrentUrl);\n }\n\n function removeEventListeners() {\n window.removeEventListener(\"popstate\", setCurrentUrl);\n }\n</script>\n\n<div bind:this={_rootEl} class=\"side-menu\">\n <slot />\n</div>\n\n<style>\n :global(::slotted(a)),\n :global(::slotted(a:visited)) {\n /* required to override base styles */\n color: var(--goa-color-text-default) !important;\n\n display: block;\n font: var(--goa-typography-body-m);\n padding: 0.5rem 1rem 0.5rem 2rem;\n text-decoration: none;\n }\n\n :global(::slotted(a.current)) {\n font: var(--goa-typography-heading-s);\n background: #cedfee;\n }\n :global(::slotted(a:hover:not(.current))) {\n background: #cedfee;\n }\n :global(::slotted(a:focus-visible)) {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n }\n\n .side-menu {\n display: block;\n }\n</style>\n","<svelte:options customElement=\"goa-side-menu-group\" />\n\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { isUrlMatch } from \"../../common/urls\";\n\n type SideMenuGroupElement = HTMLElement & { heading?: string };\n\n export let heading: string;\n\n let _open = false;\n let _current = false;\n let _rootEl: HTMLElement;\n\n $: _slug = toSlug(heading);\n\n onMount(async () => {\n await tick(); // needed to allow for window location to be read\n checkUrlMatches();\n setCurrent();\n addEventListeners();\n });\n\n onDestroy(() => {\n removeEventListeners();\n });\n\n function checkUrlMatches() {\n _open = matchesMenu() || matchesChild(_rootEl);\n if (_open) {\n notifyParent(true);\n }\n }\n\n function addEventListeners() {\n // listen to events by children (if child is open the parent also has to be open)\n _rootEl.addEventListener(\"_open\", () => {\n _open = true;\n _current = true;\n });\n\n // watch path changes\n let currentLocation = document.location.href;\n const observer = new MutationObserver((_mutationList) => {\n // if path change occurs\n if (currentLocation !== document.location.href) {\n currentLocation = document.location.href;\n setCurrent();\n }\n });\n observer.observe(document.body, { childList: true, subtree: true });\n\n // watch hash / browser history changes\n window.addEventListener(\"popstate\", setCurrent);\n }\n\n function removeEventListeners() {\n window.removeEventListener(\"popstate\", setCurrent);\n }\n\n function toSlug(path: string): string {\n return path?.toLowerCase().replace(/ /g, \"-\");\n }\n\n function matchesMenu(): boolean {\n return isUrlMatch(document.location, _slug) >= 0;\n }\n\n function matchesChild(el: SideMenuGroupElement): boolean {\n if (isUrlMatch(document.location, toSlug(el.heading)) >= 0) {\n return true;\n }\n\n const slot = el.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot) {\n return false;\n }\n const children = slot.assignedElements();\n return !!children.find((child: Element) => {\n return isUrlMatch(document.location, child.getAttribute(\"href\")) >= 0;\n });\n }\n\n function setCurrent() {\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot) {\n return false;\n }\n\n const children = slot.assignedElements();\n let maxMatchWeight = -1;\n let matchedChild = null;\n\n _current = false;\n children.forEach((child: Element) => {\n const url = child.getAttribute(\"href\");\n const weight = isUrlMatch(document.location, url);\n if (weight > maxMatchWeight) {\n maxMatchWeight = weight;\n matchedChild = child;\n }\n child.classList.remove(\"current\");\n\n // get side-menu-group (level >= 2) marked as children\n if (child.tagName === \"GOA-SIDE-MENU-GROUP\") {\n child.setAttribute(\"child\", \"true\");\n }\n });\n\n if (matchedChild) {\n _current = true;\n matchedChild.classList.add(\"current\");\n notifyParent(true);\n }\n }\n\n function handleClick(e: Event) {\n _open = !_open;\n e.preventDefault();\n }\n\n function notifyParent(current: boolean) {\n _rootEl.dispatchEvent(\n new CustomEvent(\"_open\", {\n bubbles: true,\n composed: true,\n detail: { current },\n }),\n );\n }\n</script>\n\n<div bind:this={_rootEl} class=\"side-menu-group\" class:current={_current}>\n <a href={`#${_slug}`} class=\"heading\" on:click={handleClick}>\n {heading}\n {#if _open}\n <goa-icon type=\"chevron-down\" />\n {:else}\n <goa-icon type=\"chevron-forward\" />\n {/if}\n </a>\n <div class:hidden={!_open} class=\"group\" data-testid=\"group\">\n <slot />\n </div>\n</div>\n\n<style>\n :global(::slotted(a)),\n :global(::slotted(goa-side-menu-heading)),\n :global(::slotted(a:visited)) {\n /* required to override base styles */\n color: var(--goa-color-text-default) !important;\n display: block;\n font: var(--goa-typography-body-m);\n margin-left: 1rem;\n }\n\n :global(::slotted(a)),\n :global(::slotted(a:visited)) {\n padding: 0.5rem 1rem;\n text-decoration: none;\n border-left: 4px solid var(--goa-color-greyscale-100);\n }\n\n :global(::slotted(a.current)) {\n font: var(--goa-typography-heading-s);\n border-left: 4px solid var(--goa-color-interactive-disabled);\n background: var(--goa-color-info-background);\n }\n :global(::slotted(a:hover:not(.current))) {\n background: var(--goa-color-info-background);\n border-color: var(--goa-color-greyscale-200);\n }\n :global(::slotted(a:focus-visible)),\n .heading:focus-visible {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n }\n\n /**\n * .heading: the heading of a level 1 side-menu-group\n * :host([child=true]) a.heading: the heading of a level >=2 side-menu-group\n */\n :host([child=\"true\"]) a.heading,\n .heading {\n color: var(--goa-color-text-default);\n display: flex;\n align-items: center;\n justify-content: space-between;\n line-height: 2rem;\n padding: 0.5rem 1rem 0.5rem 2rem;\n text-decoration: none;\n }\n\n :host([child=\"true\"]) a.heading {\n margin-left: 1rem;\n border-left: 4px solid var(--goa-color-greyscale-100);\n padding: 0.5rem 1rem 0.5rem 1rem;\n }\n\n :host([child=\"true\"]) a.heading:hover {\n border-color: var(--goa-color-greyscale-200);\n background: var(--goa-color-info-background);\n }\n\n :host([child=\"true\"]) .side-menu-group.current a.heading {\n background: var(--goa-color-info-background);\n border-left: 4px solid var(--goa-color-interactive-disabled);\n }\n\n .side-menu-group.current .heading {\n background: #cedfee;\n }\n .heading:hover {\n background: #cedfee;\n }\n\n .hidden {\n display: none;\n }\n\n .group {\n padding-left: 1rem;\n }\n</style>\n","<svelte:options customElement=\"goa-side-menu-heading\" />\n\n<script lang=\"ts\">\n import type { GoAIconType } from \"../icon/Icon.svelte\";\n\n export let icon: GoAIconType = null;\n</script>\n\n<h2 data-testid=\"section-heading\" class:icon>\n {#if icon}\n <goa-icon id=\"heading-icon\" type={icon} theme=\"filled\" />\n {/if}\n <slot />\n <slot name=\"meta\" />\n</h2>\n\n<style>\n h2 {\n border-top: var(--goa-border-width-m) solid\n var(--goa-color-greyscale-200, #dcdcdc);\n background: var(--goa-color-greyscale-100, #f1f1f1);\n padding: 0.75rem 0.75rem 0.5rem 1.5rem;\n margin: 0;\n color: var(--goa-color-text-secondary, #666);\n font: var(--goa-typography-heading-s);\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n }\n</style>\n","<svelte:options customElement=\"goa-skeleton\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n import { onMount } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n\n // Validator\n const [Types, validateType] = typeValidator(\n \"Skeleton type\",\n [\n \"image\",\n \"text\",\n \"title\",\n \"text-small\",\n \"avatar\",\n \"header\",\n \"paragraph\",\n \"thumbnail\",\n \"card\",\n \"lines\",\n \"profile\",\n \"article\",\n ],\n true,\n );\n const [Sizes, validateSize] = typeValidator(\"Skeleton size\", [\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n ]);\n\n // Type\n type SkeletonType = (typeof Types)[number];\n type SkeletonSize = (typeof Sizes)[number];\n\n export let maxwidth: string = \"300px\";\n export let size: SkeletonSize = \"1\";\n export let linecount: number = 3;\n export let type: SkeletonType;\n export let testid: string = \"\";\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n onMount(() => {\n setTimeout(() => validateType(type), 1);\n validateSize(size);\n });\n</script>\n\n<!-- HTML -->\n<div \n id=\"container\"\n data-testid={testid} \n style={calculateMargin(mt, mr, mb, ml)}>\n {#if type === \"card\"}\n <div class=\"card card-{size}\" style=\"--max-width: {maxwidth};\">\n <svelte:self type=\"image\" {size} />\n <div class=\"card-content\">\n <svelte:self type=\"header\" {size} />\n <svelte:self type=\"lines\" {size} {linecount} />\n </div>\n </div>\n {:else if type === \"profile\"}\n <div class=\"profile profile-{size}\">\n <div class=\"profile-avatar\">\n <svelte:self type=\"avatar\" {size} />\n </div>\n <div class=\"profile-name\">\n <svelte:self type=\"title\" {size} />\n <svelte:self type=\"text-small\" {size} />\n </div>\n </div>\n {:else if type === \"lines\"}\n {#each Array(Number.parseInt(linecount + \"\")) as _item}\n <svelte:self type=\"text\" {size} {linecount} />\n {/each}\n {:else if type === \"article\"}\n <div>\n <div style=\"display: flex; gap: 1rem;\">\n <div style=\"flex: 1 1 auto\">\n <svelte:self type=\"image\" {size} />\n </div>\n <div style=\"flex: 2 2 auto\">\n <svelte:self type=\"header\" size=\"4\" />\n <svelte:self type=\"header\" size=\"1\" />\n </div>\n </div>\n <svelte:self type=\"lines\" {size} />\n </div>\n {:else}\n <div class=\"skeleton {type} {`${type}-${size}`}\"></div>\n {/if}\n</div>\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n #container {\n container: self / inline-size;\n }\n \n @keyframes pulse {\n 0% {\n opacity: 0.5;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0.5;\n }\n }\n\n .skeleton {\n background-color: var(--goa-color-greyscale-100);\n animation: pulse 2s infinite ease-in-out;\n overflow: hidden;\n margin: 10px 0;\n }\n\n .image,\n .image-1 {\n background-color: var(--goa-color-greyscale-100);\n flex: 1 1 100px;\n height: 100px;\n margin: 0;\n }\n .image-2 {\n height: 140px;\n }\n .image-3 {\n height: 200px;\n }\n .image-4 {\n height: 300px;\n }\n\n .text,\n .text-1,\n .text-2,\n .text-3,\n .text-4 {\n width: 100%;\n height: 0.75rem;\n border-radius: 0.25rem;\n margin: 6px 0;\n }\n\n .title,\n .title-1,\n .title-2 {\n width: 100%;\n height: 0.75rem;\n border-radius: 0.25rem;\n }\n .title-3 {\n height: 0.8rem;\n }\n .title-4 {\n height: 1rem;\n }\n\n .text-small,\n .text-small-1 {\n width: 30%;\n height: 6px;\n border-radius: 2px;\n }\n .text-small-2 {\n width: 40%;\n height: 8px;\n border-radius: 2px;\n }\n .text-small-3 {\n width: 50%;\n height: 10px;\n border-radius: 3px;\n }\n .text-small-4 {\n width: 70%;\n height: 12px;\n border-radius: 4px;\n }\n\n .paragraph {\n width: 100%;\n height: 70px;\n border-radius: 4px;\n }\n\n .header,\n .header-1 {\n width: 50%;\n height: 18px;\n margin: 12px 0;\n border-radius: 0.25rem;\n }\n .header-2 {\n width: 60%;\n height: 20px;\n margin: 14px 0;\n border-radius: 0.25rem;\n }\n .header-3 {\n width: 70%;\n height: 22px;\n margin: 16px 0;\n border-radius: 0.25rem;\n }\n .header-4 {\n width: 80%;\n height: 24px;\n margin: 18px 0;\n border-radius: 0.3rem;\n }\n\n .avatar {\n display: inline-block;\n }\n .avatar,\n .avatar-1 {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n }\n .avatar-2 {\n width: 60px;\n height: 60px;\n border-radius: 50%;\n }\n .avatar-3 {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n }\n .avatar-4 {\n width: 120px;\n height: 120px;\n border-radius: 50%;\n }\n\n .thumbnail {\n display: inline-block;\n }\n .thumbnail,\n .thumbnail-1 {\n width: 40px;\n height: 40px;\n border-radius: 4px;\n }\n .thumbnail-2 {\n width: 60px;\n height: 60px;\n border-radius: 4px;\n }\n .thumbnail-3 {\n width: 80px;\n height: 80px;\n border-radius: 4px;\n }\n .thumbnail-4 {\n width: 120px;\n height: 120px;\n border-radius: 4px;\n }\n\n .card {\n display: inline-block;\n }\n .card,\n .card-1,\n .card-2,\n .card-3,\n .card-4 {\n border: 1px solid var(--goa-color-greyscale-100);\n border-radius: 4px;\n }\n\n @container self (--mobile) {\n .card {\n width: 100%;\n }\n }\n @container self (--not-mobile) {\n .card {\n width: var(--max-width);\n }\n }\n\n /* helpers */\n\n .card-content {\n flex: 1 1 auto;\n padding: 1rem;\n }\n\n .profile {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n .profile-1 {\n max-width: 280px;\n gap: 1rem;\n }\n .profile-2 {\n max-width: 360px;\n gap: 1rem;\n }\n .profile-3 {\n max-width: 480px;\n gap: 1rem;\n }\n .profile-4 {\n max-width: 560px;\n gap: 1rem;\n }\n\n .profile .profile-avatar {\n flex-shrink: 0;\n }\n .profile .profile-name {\n flex: 1 1 auto;\n }\n</style>\n","<svelte:options customElement=\"goa-spacer\" />\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n import { injectCss, type Spacing } from \"../../common/styling\";\n\n export let hspacing: Spacing | \"fill\" = \"none\";\n export let vspacing: Spacing = \"none\";\n\n let rootEl: HTMLElement;\n onMount(() => {\n const height = `var(--goa-space-${vspacing})`;\n const width = hspacing === \"fill\" \n ? \"100%\" \n : `var(--goa-space-${hspacing})`;\n injectCss(rootEl, \":host\", { width, height });\n });\n</script>\n\n<div \n bind:this={rootEl}\n style={`\n height: var(--goa-space-${vspacing});\n width: var(--goa-space-${hspacing});\n `}\n/>\n","import {\n\trun_all,\n\tsubscribe,\n\tnoop,\n\tsafe_not_equal,\n\tis_function,\n\tget_store_value\n} from '../internal/index.js';\n\nconst subscriber_queue = [];\n\n/**\n * Creates a `Readable` store that allows reading by subscription.\n *\n * https://svelte.dev/docs/svelte-store#readable\n * @template T\n * @param {T} [value] initial value\n * @param {import('./public.js').StartStopNotifier<T>} [start]\n * @returns {import('./public.js').Readable<T>}\n */\nexport function readable(value, start) {\n\treturn {\n\t\tsubscribe: writable(value, start).subscribe\n\t};\n}\n\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n *\n * https://svelte.dev/docs/svelte-store#writable\n * @template T\n * @param {T} [value] initial value\n * @param {import('./public.js').StartStopNotifier<T>} [start]\n * @returns {import('./public.js').Writable<T>}\n */\nexport function writable(value, start = noop) {\n\t/** @type {import('./public.js').Unsubscriber} */\n\tlet stop;\n\t/** @type {Set<import('./private.js').SubscribeInvalidateTuple<T>>} */\n\tconst subscribers = new Set();\n\t/** @param {T} new_value\n\t * @returns {void}\n\t */\n\tfunction set(new_value) {\n\t\tif (safe_not_equal(value, new_value)) {\n\t\t\tvalue = new_value;\n\t\t\tif (stop) {\n\t\t\t\t// store is ready\n\t\t\t\tconst run_queue = !subscriber_queue.length;\n\t\t\t\tfor (const subscriber of subscribers) {\n\t\t\t\t\tsubscriber[1]();\n\t\t\t\t\tsubscriber_queue.push(subscriber, value);\n\t\t\t\t}\n\t\t\t\tif (run_queue) {\n\t\t\t\t\tfor (let i = 0; i < subscriber_queue.length; i += 2) {\n\t\t\t\t\t\tsubscriber_queue[i][0](subscriber_queue[i + 1]);\n\t\t\t\t\t}\n\t\t\t\t\tsubscriber_queue.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {import('./public.js').Updater<T>} fn\n\t * @returns {void}\n\t */\n\tfunction update(fn) {\n\t\tset(fn(value));\n\t}\n\n\t/**\n\t * @param {import('./public.js').Subscriber<T>} run\n\t * @param {import('./private.js').Invalidator<T>} [invalidate]\n\t * @returns {import('./public.js').Unsubscriber}\n\t */\n\tfunction subscribe(run, invalidate = noop) {\n\t\t/** @type {import('./private.js').SubscribeInvalidateTuple<T>} */\n\t\tconst subscriber = [run, invalidate];\n\t\tsubscribers.add(subscriber);\n\t\tif (subscribers.size === 1) {\n\t\t\tstop = start(set, update) || noop;\n\t\t}\n\t\trun(value);\n\t\treturn () => {\n\t\t\tsubscribers.delete(subscriber);\n\t\t\tif (subscribers.size === 0 && stop) {\n\t\t\t\tstop();\n\t\t\t\tstop = null;\n\t\t\t}\n\t\t};\n\t}\n\treturn { set, update, subscribe };\n}\n\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * https://svelte.dev/docs/svelte-store#derived\n * @template {import('./private.js').Stores} S\n * @template T\n * @overload\n * @param {S} stores - input stores\n * @param {(values: import('./private.js').StoresValues<S>, set: (value: T) => void, update: (fn: import('./public.js').Updater<T>) => void) => import('./public.js').Unsubscriber | void} fn - function callback that aggregates the values\n * @param {T} [initial_value] - initial value\n * @returns {import('./public.js').Readable<T>}\n */\n\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * https://svelte.dev/docs/svelte-store#derived\n * @template {import('./private.js').Stores} S\n * @template T\n * @overload\n * @param {S} stores - input stores\n * @param {(values: import('./private.js').StoresValues<S>) => T} fn - function callback that aggregates the values\n * @param {T} [initial_value] - initial value\n * @returns {import('./public.js').Readable<T>}\n */\n\n/**\n * @template {import('./private.js').Stores} S\n * @template T\n * @param {S} stores\n * @param {Function} fn\n * @param {T} [initial_value]\n * @returns {import('./public.js').Readable<T>}\n */\nexport function derived(stores, fn, initial_value) {\n\tconst single = !Array.isArray(stores);\n\t/** @type {Array<import('./public.js').Readable<any>>} */\n\tconst stores_array = single ? [stores] : stores;\n\tif (!stores_array.every(Boolean)) {\n\t\tthrow new Error('derived() expects stores as input, got a falsy value');\n\t}\n\tconst auto = fn.length < 2;\n\treturn readable(initial_value, (set, update) => {\n\t\tlet started = false;\n\t\tconst values = [];\n\t\tlet pending = 0;\n\t\tlet cleanup = noop;\n\t\tconst sync = () => {\n\t\t\tif (pending) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcleanup();\n\t\t\tconst result = fn(single ? values[0] : values, set, update);\n\t\t\tif (auto) {\n\t\t\t\tset(result);\n\t\t\t} else {\n\t\t\t\tcleanup = is_function(result) ? result : noop;\n\t\t\t}\n\t\t};\n\t\tconst unsubscribers = stores_array.map((store, i) =>\n\t\t\tsubscribe(\n\t\t\t\tstore,\n\t\t\t\t(value) => {\n\t\t\t\t\tvalues[i] = value;\n\t\t\t\t\tpending &= ~(1 << i);\n\t\t\t\t\tif (started) {\n\t\t\t\t\t\tsync();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tpending |= 1 << i;\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\tstarted = true;\n\t\tsync();\n\t\treturn function stop() {\n\t\t\trun_all(unsubscribers);\n\t\t\tcleanup();\n\t\t\t// We need to set this to false because callbacks can still happen despite having unsubscribed:\n\t\t\t// Callbacks might already be placed in the queue which doesn't know it should no longer\n\t\t\t// invoke this derived store.\n\t\t\tstarted = false;\n\t\t};\n\t});\n}\n\n/**\n * Takes a store and returns a new one derived from the old one that is readable.\n *\n * https://svelte.dev/docs/svelte-store#readonly\n * @template T\n * @param {import('./public.js').Readable<T>} store - store to make readonly\n * @returns {import('./public.js').Readable<T>}\n */\nexport function readonly(store) {\n\treturn {\n\t\tsubscribe: store.subscribe.bind(store)\n\t};\n}\n\nexport { get_store_value as get };\n","/**\n * @param {any} obj\n * @returns {boolean}\n */\nexport function is_date(obj) {\n\treturn Object.prototype.toString.call(obj) === '[object Date]';\n}\n","import { writable } from '../store/index.js';\nimport { assign, loop, now } from '../internal/index.js';\nimport { linear } from '../easing/index.js';\nimport { is_date } from './utils.js';\n\n/** @returns {(t: any) => any} */\nfunction get_interpolator(a, b) {\n\tif (a === b || a !== a) return () => a;\n\tconst type = typeof a;\n\tif (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) {\n\t\tthrow new Error('Cannot interpolate values of different type');\n\t}\n\tif (Array.isArray(a)) {\n\t\tconst arr = b.map((bi, i) => {\n\t\t\treturn get_interpolator(a[i], bi);\n\t\t});\n\t\treturn (t) => arr.map((fn) => fn(t));\n\t}\n\tif (type === 'object') {\n\t\tif (!a || !b) throw new Error('Object cannot be null');\n\t\tif (is_date(a) && is_date(b)) {\n\t\t\ta = a.getTime();\n\t\t\tb = b.getTime();\n\t\t\tconst delta = b - a;\n\t\t\treturn (t) => new Date(a + t * delta);\n\t\t}\n\t\tconst keys = Object.keys(b);\n\t\tconst interpolators = {};\n\t\tkeys.forEach((key) => {\n\t\t\tinterpolators[key] = get_interpolator(a[key], b[key]);\n\t\t});\n\t\treturn (t) => {\n\t\t\tconst result = {};\n\t\t\tkeys.forEach((key) => {\n\t\t\t\tresult[key] = interpolators[key](t);\n\t\t\t});\n\t\t\treturn result;\n\t\t};\n\t}\n\tif (type === 'number') {\n\t\tconst delta = b - a;\n\t\treturn (t) => a + t * delta;\n\t}\n\tthrow new Error(`Cannot interpolate ${type} values`);\n}\n\n/**\n * A tweened store in Svelte is a special type of store that provides smooth transitions between state values over time.\n *\n * https://svelte.dev/docs/svelte-motion#tweened\n * @template T\n * @param {T} [value]\n * @param {import('./private.js').TweenedOptions<T>} [defaults]\n * @returns {import('./public.js').Tweened<T>}\n */\nexport function tweened(value, defaults = {}) {\n\tconst store = writable(value);\n\t/** @type {import('../internal/private.js').Task} */\n\tlet task;\n\tlet target_value = value;\n\t/**\n\t * @param {T} new_value\n\t * @param {import('./private.js').TweenedOptions<T>} [opts]\n\t */\n\tfunction set(new_value, opts) {\n\t\tif (value == null) {\n\t\t\tstore.set((value = new_value));\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\ttarget_value = new_value;\n\t\tlet previous_task = task;\n\t\tlet started = false;\n\t\tlet {\n\t\t\tdelay = 0,\n\t\t\tduration = 400,\n\t\t\teasing = linear,\n\t\t\tinterpolate = get_interpolator\n\t\t} = assign(assign({}, defaults), opts);\n\t\tif (duration === 0) {\n\t\t\tif (previous_task) {\n\t\t\t\tprevious_task.abort();\n\t\t\t\tprevious_task = null;\n\t\t\t}\n\t\t\tstore.set((value = target_value));\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\tconst start = now() + delay;\n\t\tlet fn;\n\t\ttask = loop((now) => {\n\t\t\tif (now < start) return true;\n\t\t\tif (!started) {\n\t\t\t\tfn = interpolate(value, new_value);\n\t\t\t\tif (typeof duration === 'function') duration = duration(value, new_value);\n\t\t\t\tstarted = true;\n\t\t\t}\n\t\t\tif (previous_task) {\n\t\t\t\tprevious_task.abort();\n\t\t\t\tprevious_task = null;\n\t\t\t}\n\t\t\tconst elapsed = now - start;\n\t\t\tif (elapsed > /** @type {number} */ (duration)) {\n\t\t\t\tstore.set((value = new_value));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// @ts-ignore\n\t\t\tstore.set((value = fn(easing(elapsed / duration))));\n\t\t\treturn true;\n\t\t});\n\t\treturn task.promise;\n\t}\n\treturn {\n\t\tset,\n\t\tupdate: (fn, opts) => set(fn(target_value, value), opts),\n\t\tsubscribe: store.subscribe\n\t};\n}\n","<svelte:options customElement=\"goa-spinner\" />\n\n<script lang=\"ts\" context=\"module\">\n export type SpinnerSize = \"small\" | \"medium\" | \"large\" | \"xlarge\";\n export type SpinnerType = \"infinite\" | \"progress\";\n</script>\n\n<!-- Script -->\n<script lang=\"ts\">\n import { tweened } from \"svelte/motion\";\n import { quartOut } from \"svelte/easing\";\n\n // required\n export let size: SpinnerSize;\n\n // optional\n export let invert: boolean = false;\n export let progress: number = -1;\n export let testid: string = \"\";\n\n let type: SpinnerType = \"infinite\";\n\n const _progress = tweened(0, {\n duration: 500,\n easing: quartOut,\n });\n\n // Reactive\n\n $: {\n // Typescript recognizes `progress` as a number, but once compiled, due to it being a web component, progress is a string.\n // This line makes both sides happy.\n const p = parseFloat(progress + \"\");\n\n if (p >= 0) {\n _progress.set(p || 1); // start at 1 to prevent incorrect arc calculations\n type = \"progress\";\n }\n }\n\n $: diameter =\n size &&\n {\n small: 16,\n medium: 32,\n large: 64,\n xlarge: 100,\n }[size];\n\n $: strokewidth =\n size &&\n {\n small: 2,\n medium: 4,\n large: 7,\n xlarge: 9,\n }[size];\n\n $: radius = diameter / 2;\n $: pathRadius = radius - strokewidth / 2;\n\n $: ready = type === \"infinite\" ? pathRadius : pathRadius && progress;\n\n // Functions\n\n function getCoords(radians: number): string {\n const x = radius + pathRadius * Math.cos(radians);\n const y = radius + pathRadius * Math.sin(radians);\n return x + \" \" + y;\n }\n\n function getArc(progress: number): string {\n switch (type) {\n case \"progress\": {\n const start = getCoords(-Math.PI / 2);\n const end = getCoords(-Math.PI / 2 + 2 * Math.PI * (progress / 100));\n const largeArcFlag = progress % 100 < 50 ? 0 : 1;\n\n return `M ${start} A ${pathRadius} ${pathRadius} 0 ${largeArcFlag} 1 ${end}`;\n }\n case \"infinite\": {\n const start = getCoords(Math.PI * 1.5);\n const end = getCoords(0);\n\n return `M ${start} A ${pathRadius} ${pathRadius} 0 1 0 ${end}`;\n }\n }\n }\n</script>\n\n<!-- HTML -->\n{#if ready}\n <svg\n class={`spinner-${type}`}\n fill=\"none\"\n viewBox=\"0 0 {diameter} {diameter}\"\n width={diameter}\n height={diameter}\n data-testid={testid}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx={radius}\n cy={radius}\n stroke={invert\n ? \"var(--goa-color-info-hover)\"\n : \"var(--goa-color-brand-light)\"}\n stroke-width={strokewidth}\n r={radius - strokewidth / 2}\n />\n <path\n d={getArc($_progress)}\n stroke-width={strokewidth}\n stroke={invert\n ? \"var(--goa-color-brand-light)\"\n : \"var(--goa-color-info-default)\"}\n stroke-linecap=\"round\"\n />\n </svg>\n{/if}\n\n<!-- Style -->\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n .spinner-infinite {\n animation: rotate 2s linear infinite;\n }\n</style>\n","<svelte:options customElement=\"goa-tab\" />\n\n<script lang=\"ts\">\n import { toBoolean } from \"../../common/utils\";\n\n // ======\n // Public\n // ======\n\n export let heading: string = \"\";\n\n // =======\n // Private\n // =======\n\n export let open: string = \"false\";\n\n let _isOpen: boolean;\n $: _isOpen = toBoolean(open);\n</script>\n\n<div style=\"display:none\" data-heading={heading} />\n<slot style=\"display:none\" name=\"heading\" />\n{#if _isOpen}\n <div role=\"tabpanel\">\n <slot />\n </div>\n{/if}\n\n<style>\n [role=\"tabpanel\"] {\n padding-top: 2rem;\n }\n</style>\n","<svelte:options customElement=\"goa-table\" />\n\n<script lang=\"ts\">\n import { onMount, tick } from \"svelte\";\n import { calculateMargin } from \"../../common/styling\";\n import { typeValidator, toBoolean } from \"../../common/utils\";\n import type { GoATableSortDirection } from \"./TableSortHeader.svelte\";\n import type { Spacing } from \"../../common/styling\";\n\n // Validators\n const [Variants, validateVariant] = typeValidator(\n \"Table variant\",\n [\"normal\", \"relaxed\"],\n true,\n );\n type Variant = (typeof Variants)[number];\n\n // Public\n\n export let width: string = \"\";\n export let stickyheader: string = \"false\";\n export let variant: Variant = \"normal\";\n\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Private\n\n let _rootEl: HTMLElement;\n let _isTableRoot: boolean = false;\n\n // Reactive\n\n $: _stickyHeader = toBoolean(stickyheader);\n\n // Hooks\n\n onMount(() => {\n validateVariant(variant);\n\n // without setTimeout it won't properly sort in Safari\n setTimeout(attachSortEventHandling, 0);\n\n // exit here if when running tests (tests don't have assignedElements)\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (!slot || slot.assignedElements().length === 0) {\n return;\n }\n\n // React has everything nested in a table to prevent invalid DOM errors\n _isTableRoot = slot.assignedElements()[0].tagName === \"TABLE\";\n });\n\n // Functions\n\n async function attachSortEventHandling() {\n await tick();\n const contentSlot = _rootEl?.querySelector(\"slot\") as HTMLSlotElement;\n const headings = contentSlot\n ?.assignedElements()\n .find((el) => el.tagName === \"THEAD\" || el.tagName === \"TABLE\")\n ?.querySelectorAll(\"goa-table-sort-header\");\n\n headings?.forEach((heading) => {\n heading.addEventListener(\"click\", () => {\n const sortBy = heading.getAttribute(\"name\");\n let sortDir: number = 0;\n\n // relay state to all children\n headings.forEach((child) => {\n if (child.getAttribute(\"name\") === sortBy) {\n // @ts-expect-error\n const direction = child[\"direction\"] as GoATableSortDirection;\n // starting direction is asc\n const newDirection = direction === \"asc\" ? \"desc\" : \"asc\";\n\n sortDir = newDirection === \"asc\" ? 1 : -1;\n child.setAttribute(\"direction\", newDirection);\n } else {\n child.setAttribute(\"direction\", \"none\");\n }\n });\n\n if (sortBy && sortDir !== 0) {\n dispatch(heading, { sortBy, sortDir });\n }\n });\n\n // dispatch the default sort params if initially set\n const initialSortBy = heading.getAttribute(\"name\");\n // @ts-ignore\n const initialDirection = heading[\"direction\"] as GoATableSortDirection;\n if (initialSortBy && initialDirection && initialDirection !== \"none\") {\n setTimeout(() => {\n dispatch(heading, {\n sortBy: initialSortBy,\n sortDir: initialDirection === \"asc\" ? 1 : -1,\n });\n }, 10);\n }\n });\n }\n\n function dispatch(el: Element, params: { sortBy: string; sortDir: number }) {\n el.dispatchEvent(\n new CustomEvent(\"_sort\", {\n composed: true,\n bubbles: true,\n cancelable: false,\n detail: params,\n }),\n );\n }\n</script>\n\n<div\n bind:this={_rootEl}\n class={`goatable ${variant}`}\n class:sticky={_stickyHeader}\n style={`\n ${`width: ${width || \"100%\"};`}\n ${calculateMargin(mt, mr, mb, ml)}\n `}\n>\n {#if _isTableRoot}\n <slot />\n {:else}\n <table style={width && \"width: 100%;\"}>\n <slot />\n </table>\n {/if}\n</div>\n\n<style>\n /* other styles can be found in the assets/css/components.css file */\n :host {\n overflow-x: auto;\n }\n .goatable {\n width: 0;\n }\n\n table {\n border-collapse: collapse;\n }\n</style>\n","<svelte:options customElement=\"goa-table-sort-header\" />\n\n<script context=\"module\" lang=\"ts\">\n export type GoATableSortDirection = \"asc\" | \"desc\" | \"none\";\n</script>\n\n<script lang=\"ts\">\n import { onMount } from \"svelte\";\n export let direction: GoATableSortDirection = \"none\";\n\n // Private\n let _rootEl: HTMLElement;\n onMount(() => {\n if (_rootEl) {\n // Add styling if an ancestor has a class to style number columns,\n const hostEl = _rootEl.getRootNode().host;\n const ancestor = hostEl?.closest(\"th.goa-table-number-header\");\n if (ancestor) {\n _rootEl.style.setProperty(\"--header-text-align\", \"flex-end\");\n }\n }\n });\n</script>\n\n<button bind:this={_rootEl}>\n <slot />\n {#if direction === \"desc\"}\n <goa-icon type=\"caret-down\" size=\"small\" />\n {:else if direction === \"asc\"}\n <goa-icon type=\"caret-up\" size=\"small\" />\n {:else}\n <div class=\"direction--none\">\n <goa-icon type=\"caret-up\" size=\"small\" />\n <goa-icon type=\"caret-down\" size=\"small\" />\n </div>\n {/if}\n</button>\n\n<style>\n :host {\n display: flex;\n align-items: flex-end;\n }\n\n button {\n border: none;\n background: none;\n display: flex;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n color: inherit;\n width: 100%;\n height: 3.75rem;\n padding: 0 1rem;\n justify-content: var(--header-text-align, flex-start);\n gap: 0.25rem;\n align-items: center;\n }\n\n /* User set classes */\n button:hover {\n background-color: var(--goa-color-greyscale-100);\n cursor: pointer;\n color: var(--goa-color-interactive-hover);\n }\n\n button goa-icon {\n color: var(--goa-color-interactive-default);\n }\n button:hover goa-icon {\n color: var(--goa-color-interactive-hover);\n }\n button .direction--none goa-icon {\n color: var(--goa-color-greyscale-400);\n }\n button:hover .direction--none goa-icon {\n color: var(--goa-color-greyscale-400);\n }\n\n goa-icon {\n scale: 0.8;\n }\n\n .direction--none goa-icon {\n height: 0.625rem;\n }\n\n .direction--none {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n }\n</style>\n","<svelte:options customElement=\"goa-tabs\" />\n\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { clamp, fromBoolean } from \"../../common/utils\";\n\n export let initialtab: number = 1; // 1-based\n\n // Private\n let _rootEl: HTMLElement;\n let _tabs: Element[] = [];\n let _tabsEl: HTMLElement;\n let _panelEl: HTMLElement;\n let _currentTab: number = 1;\n\n // ========\n // Hooks\n // ========\n\n onMount(async () => {\n // init listeners\n addKeyboardEventListeners();\n\n // setup tabs\n const slot = _rootEl.querySelector(\"slot\") as HTMLSlotElement;\n if (slot) {\n slot.addEventListener(\"slotchange\", () => {\n _tabs = slot.assignedElements();\n bindTabs(_tabs);\n });\n } else {\n // @ts-expect-error\n _tabs = [..._rootEl.querySelectorAll(\"goa-tab\")] as Element[]; // for unit tests\n bindTabs(_tabs);\n }\n\n setTimeout(() => {\n // HACK: this is done to get the initial tab set when using angular\n setCurrentTab(+initialtab);\n }, 1);\n setCurrentTab(+initialtab);\n });\n\n function bindTabs(tabs: Element[]) {\n const path = window.location.pathname;\n\n // create buttons (tabs) for each of the tab contents elements\n tabs.forEach((tab, index) => {\n // @ts-expect-error\n let headingEl = [...tab.children].find(\n (child) => child.getAttribute(\"slot\") === \"heading\",\n ) as HTMLElement;\n\n let tabSlug: string;\n\n if (headingEl) {\n // slot exists\n headingEl?.classList.add(\"tab\");\n } else {\n // heading prop is set\n const headingDataEl = (tab.shadowRoot || tab)?.querySelector(\n \"[data-heading]\",\n ) as HTMLElement;\n\n const heading =\n headingDataEl?.dataset[\"heading\"] || tab.getAttribute(\"heading\");\n if (heading) {\n headingEl = document.createElement(\"div\");\n headingEl.classList.add(\"tab\");\n headingEl.textContent = heading;\n tabSlug = heading;\n } \n }\n\n tabSlug ||= \"tab-\" + index;\n if (headingEl) {\n const link = document.createElement(\"a\");\n link.setAttribute(\"id\", `tab-${index + 1}`);\n link.setAttribute(\"data-testid\", `tab-${index + 1}`);\n link.setAttribute(\"role\", \"tab\");\n link.setAttribute(\"href\", path + \"#\" + tabSlug);\n link.addEventListener(\"click\", () => setCurrentTab(index + 1));\n link.setAttribute(\"aria-controls\", `tabpanel-${index + 1}`);\n link.appendChild(headingEl);\n\n _tabsEl.appendChild(link);\n }\n });\n }\n\n onDestroy(() => {\n removeKeyboardEventListeners();\n });\n\n // =========\n // Functions\n // =========\n\n function addKeyboardEventListeners() {\n _rootEl.addEventListener(\"focus\", handleKeydownEvents, true);\n }\n\n function removeKeyboardEventListeners() {\n // TODO: determine if this is ever being called\n _rootEl.removeEventListener(\"focus\", handleKeydownEvents, true);\n }\n\n function setCurrentTab(tab: number) {\n // prevent tab from exceeding limits\n _currentTab = clamp(tab, 1, _tabs.length);\n\n // HACK: this only exists due to the `setTimeout` on line , which is required to allow the\n // initialtab to be properly set in Angular, causes null errors.\n if (!_tabsEl) return;\n\n let currentLocation = \"\";\n // @ts-expect-error\n [..._tabsEl.querySelectorAll(\"[role=tab]\")].map((el, index) => {\n const isCurrent = index + 1 === _currentTab; // currentTab is 1-based\n _tabs[index].setAttribute(\"open\", \"false\");\n el.setAttribute(\"aria-selected\", fromBoolean(isCurrent));\n el.setAttribute(\"tabindex\", isCurrent ? \"0\" : \"-1\");\n if (isCurrent) {\n currentLocation = (el as HTMLLinkElement).href;\n el.focus();\n _tabs[index].setAttribute(\"open\", \"true\"); // display tab content\n }\n });\n\n _panelEl.setAttribute(\"aria-labelledby\", `tab-${_currentTab}`);\n _panelEl.setAttribute(\"id\", `tabpanel-${_currentTab}`);\n\n // update the browswers url with the new hash\n if (currentLocation) {\n document.location = currentLocation\n }\n }\n\n function handleKeydownEvents() {\n _rootEl.addEventListener(\"keydown\", onKeyDown);\n }\n\n function onKeyDown(e: KeyboardEvent) {\n let isHandled = false;\n const isTabButtonFocused = e.target && _tabsEl.contains(e.target as Node);\n\n if (!isTabButtonFocused) {\n return;\n }\n\n switch (e.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n if (_currentTab === 1) {\n setCurrentTab(_tabs.length);\n } else {\n setCurrentTab(_currentTab - 1);\n }\n isHandled = true;\n break;\n case \"ArrowDown\":\n case \"ArrowRight\":\n if (_currentTab === _tabs.length) {\n setCurrentTab(1);\n } else {\n setCurrentTab(_currentTab + 1);\n }\n isHandled = true;\n break;\n case \"Home\":\n setCurrentTab(1);\n isHandled = true;\n break;\n case \"End\":\n setCurrentTab(_tabs.length);\n isHandled = true;\n break;\n default:\n break;\n }\n\n if (isHandled) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n</script>\n\n<!--HTML-->\n\n<div role=\"tablist\" bind:this={_rootEl}>\n <div class=\"tabs\" bind:this={_tabsEl}></div>\n <div class=\"tabpanel\" tabindex=\"0\" bind:this={_panelEl} role=\"tabpanel\">\n <slot />\n </div>\n</div>\n\n<style>\n :host {\n box-sizing: border-box;\n font: var(--goa-typography-body-m);\n }\n\n :global(.tab) {\n display: flex;\n gap: var(--goa-space-xs);\n }\n\n :global([role=\"tab\"]) {\n display: block;\n background: none;\n overflow: hidden;\n white-space: nowrap;\n cursor: pointer;\n border: none;\n font: var(--goa-typography-body-m);\n color: var(--goa-color-text-default);\n text-decoration: none;\n letter-spacing: 0.03125rem;\n }\n\n :global([role=\"tab\"][aria-selected=\"true\"]) {\n font: var(--goa-typography-heading-s);\n }\n\n :global([role=\"tab\"]:focus-visible) {\n outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus);\n }\n\n :global([role=\"tab\"]:hover:not([aria-selected=\"true\"])),\n :global([role=\"tab\"]:focus:not([aria-selected=\"true\"])),\n :global([role=\"tab\"]:focus-visible:not([aria-selected=\"true\"])) {\n border-color: var(--goa-color-greyscale-200);\n }\n\n @media (--not-mobile) {\n :global([role=\"tablist\"]) {\n border-bottom: none;\n }\n .tabs {\n border-bottom: var(--goa-border-width-s) solid\n var(--goa-color-greyscale-200);\n display: flex;\n gap: var(--goa-space-xl);\n }\n :global([role=\"tab\"]) {\n padding: var(--goa-space-s) var(--goa-space-m);\n border-bottom: 4px solid transparent;\n }\n :global([role=\"tab\"][aria-selected=\"true\"]) {\n border-color: var(--goa-color-interactive-default);\n }\n }\n\n @media (--mobile) {\n :global([role=\"tab\"]) {\n width: 100%;\n padding: var(--goa-space-xs) 0;\n padding-left: 12px;\n border-left: 4px solid transparent;\n }\n :global([role=\"tab\"][aria-selected=\"true\"]) {\n border-color: var(--goa-color-interactive-default);\n background: var(--goa-color-info-background);\n }\n }\n</style>\n","<svelte:options customElement=\"goa-textarea\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n import { pluralize, toBoolean } from \"../../common/utils\";\n import type { Spacing } from \"../../common/styling\";\n import { calculateMargin } from \"../../common/styling\";\n\n export let name: string;\n export let value: string = \"\";\n export let placeholder: string = \"\";\n export let rows: number = 3;\n export let testid: string = \"\";\n export let width: string = \"60ch\";\n export let error: string = \"false\";\n export let readonly: string = \"false\";\n export let disabled: string = \"false\";\n export let arialabel: string = \"\";\n export let countby: \"character\" | \"word\" | \"\" = \"\";\n export let maxcount: number = -1;\n\n // margin\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // reactive\n\n $: isError = toBoolean(error);\n $: isDisabled = toBoolean(disabled);\n $: isReadonly = toBoolean(readonly);\n $: count =\n countby === \"character\"\n ? value.length\n : value.split(\" \").filter((word) => word.trim().length > 0).length;\n\n // privates\n\n let _textareaEl: HTMLTextAreaElement;\n\n // functions\n\n function onChange(e: KeyboardEvent) {\n if (isDisabled) return;\n dispatchChange(e);\n }\n\n function onKeyPress(e: KeyboardEvent) {\n if (isDisabled) return;\n dispatchKeyPress(e);\n dispatchChange(e);\n }\n\n function dispatchChange(_: KeyboardEvent) {\n _textareaEl.dispatchEvent(\n new CustomEvent(\"_change\", {\n composed: true,\n detail: { name, value: _textareaEl.value },\n }),\n );\n }\n\n function dispatchKeyPress(e: KeyboardEvent) {\n _textareaEl.dispatchEvent(\n new CustomEvent(\"_keyPress\", {\n composed: true,\n detail: { name, value, key: e.key },\n }),\n );\n }\n</script>\n\n<!-- HTML -->\n<div id=\"container\">\n <div\n data-testid=\"root\"\n class=\"root\"\n class:error={isError || (maxcount > 0 && count > maxcount)}\n class:disabled={isDisabled}\n style={`\n ${calculateMargin(mt, mr, mb, ml)};\n --width: ${width};\n --char-count-padding: ${countby ? \"2rem\" : \"0\"};\n `}\n >\n <textarea\n bind:this={_textareaEl}\n {name}\n {placeholder}\n {rows}\n aria-label={arialabel || name}\n disabled={isDisabled}\n readonly={isReadonly}\n data-testid={testid}\n bind:value\n on:keyup={onKeyPress}\n on:change={onChange}\n />\n\n {#if maxcount > 0 && !isDisabled}\n <div class=\"counter\" class:counter-error={count > maxcount}>\n {#if countby && count > maxcount}\n {count - maxcount} {pluralize(countby, count - maxcount)} too many\n {:else if countby && count < maxcount}\n {maxcount - count} {pluralize(countby, maxcount - count)} remaining\n {/if}\n </div>\n {/if}\n\n {#if countby && maxcount < 0 && count > 0 && !isDisabled}\n <div class=\"counter\">\n {count}\n {pluralize(countby, count)}\n </div>\n {/if}\n </div>\n</div>\n\n<!-- Style -->\n<style>\n :host {\n --textarea-padding-vertical: 0.625rem;\n --textarea-padding-horizontal: var(--goa-space-s);\n\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n #container {\n container: self / inline-size;\n }\n\n .root {\n position: relative;\n width: 100%;\n padding-bottom: var(--char-count-padding);\n border: var(--goa-border-width-s) solid var(--goa-color-greyscale-700);\n border-radius: 3px;\n }\n\n textarea {\n display: block;\n box-sizing: border-box;\n outline: none;\n border: none;\n border-radius: 3px;\n color: var(--goa-color-greyscale-black, #ccc);\n padding: var(--textarea-padding-vertical) var(--textarea-padding-horizontal);\n font-size: var(--goa-font-size-4);\n font-family: var(--goa-font-family-sans);\n min-width: 100%;\n resize: vertical;\n }\n\n @container self (--mobile) {\n textarea {\n width: 100%;\n min-width: 100%;\n }\n }\n\n @container self (--not-mobile) {\n .root {\n max-width: var(--width);\n }\n textarea {\n min-width: 0;\n width: var(--width);\n }\n }\n\n textarea[readonly] {\n cursor: pointer;\n }\n\n .root:hover {\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-hover);\n }\n\n .root:focus-within {\n box-shadow: 0 0 0 var(--goa-border-width-l)\n var(--goa-color-interactive-focus);\n }\n\n .counter-error {\n color: var(--goa-color-interactive-error);\n }\n\n .counter {\n position: absolute;\n right: 0.75rem;\n font-size: var(--goa-font-size-2);\n }\n\n textarea {\n resize: none;\n scroll-behavior: smooth;\n max-height: calc(100vh * var(--max-height, 100) / 100);\n }\n\n textarea::-webkit-scrollbar {\n width: 6px;\n }\n\n textarea::-webkit-scrollbar-track {\n background: #f1f1f1;\n }\n\n textarea::-webkit-scrollbar-thumb {\n background: #888;\n }\n\n textarea::-webkit-scrollbar-thumb:hover {\n background: #555;\n }\n\n .error {\n border-color: var(--goa-color-interactive-error);\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-error);\n }\n .error:hover {\n box-shadow: 0 0 0 var(--goa-border-width-m)\n var(--goa-color-interactive-error);\n }\n .error:active,\n .error:focus {\n box-shadow: 0 0 0 var(--goa-border-width-l)\n var(--goa-color-interactive-focus);\n }\n</style>\n","<svelte:options customElement=\"goa-three-column-layout\" />\n\n<!-- Script -->\n<script lang=\"ts\">\n export let leftcolumnwidth: string;\n export let rightcolumnwidth: string;\n export let maxcontentwidth: string;\n</script>\n\n<!-- HTML -->\n<div\n class=\"page\"\n style={`\n --max-content-width: ${maxcontentwidth || \"100%\"};\n --nav-column-width: ${leftcolumnwidth || \"256px\"};\n --side-menu-column-width: ${rightcolumnwidth || \"256px\"}\n `}\n>\n <header class=\"header\">\n <slot name=\"header\" />\n </header>\n\n <section class=\"content\">\n <nav class=\"nav\">\n <slot name=\"nav\" />\n </nav>\n\n <main>\n <slot />\n </main>\n\n <nav class=\"nav side-menu\">\n <!-- DEPRECATED: sidebar is deprecated -->\n <slot name=\"sidebar\" />\n <slot name=\"side-menu\" />\n </nav>\n </section>\n\n <footer class=\"footer\">\n <slot name=\"footer\" />\n </footer>\n</div>\n\n<!-- Style -->\n<style>\n * {\n box-sizing: border-box;\n }\n .page {\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n .content {\n flex: 1 1 auto;\n display: flex;\n flex-direction: column;\n gap: 2rem;\n }\n\n .header,\n .footer {\n flex: 0 0 auto;\n }\n\n main {\n flex: 1 1 auto;\n padding: 0 1rem;\n }\n\n .nav {\n padding: 0 1rem;\n transition: transform 200ms ease-in-out;\n background-color: var(--goa-color-greyscale-white);\n }\n\n .nav > * {\n display: block;\n padding: 0.5rem 0;\n }\n\n @media not (--mobile) {\n .page {\n gap: 2rem;\n }\n .content {\n display: flex;\n flex-direction: row;\n justify-content: center;\n width: min(var(--max-content-width), 100vw);\n margin: 0 auto;\n }\n\n .nav {\n padding: 0 2rem;\n transform: translateX(0);\n }\n\n .nav:not(.side-menu) {\n flex: 0 0 var(--nav-column-width);\n }\n .nav.side-menu {\n flex: 0 0 var(--side-menu-column-width);\n }\n main {\n padding-right: 2rem;\n }\n }\n\n @media (--desktop) {\n main {\n padding-right: 4.5rem;\n }\n }\n</style>\n","<svelte:options customElement=\"goa-tooltip\" />\n\n<script lang=\"ts\">\n import { onDestroy, onMount, tick } from \"svelte\";\n import { typeValidator } from \"../../common/utils\";\n import { calculateMargin } from \"../../common/styling\";\n import type { Spacing } from \"../../common/styling\";\n\n // Public\n\n export let content = \"\";\n export let testid: string = \"\";\n export let position: Position = \"top\";\n export let halign: Alignment = \"center\";\n export let mt: Spacing = null;\n export let mr: Spacing = null;\n export let mb: Spacing = null;\n export let ml: Spacing = null;\n\n // Types\n\n type Position = (typeof Positions)[number];\n type Alignment = (typeof Alignment)[number];\n\n // Validator\n\n const [Positions, validatePosition] = typeValidator(\n \"Tooltip positions\",\n [\"top\", \"bottom\", \"left\", \"right\"],\n false,\n );\n\n const [Alignment, validateAlignment] = typeValidator(\n \"Tooltip alignment\",\n [\"left\", \"right\", \"center\"],\n false,\n );\n\n const validator = (position: Position, align: Alignment) => {\n if (position === \"left\" || position === \"right\") {\n if (align !== \"center\") {\n console.error(\n `[${align}] is an invalid option for position ${position}`,\n );\n }\n }\n };\n\n // Private\n\n let _screenSize = 0;\n let _rootEl: HTMLElement;\n let _tooltipEl: HTMLElement;\n let _initialPosition: Position;\n let _tooltipVisible = false;\n let _showTooltipTimeout: string | number | NodeJS.Timeout | undefined;\n let _hideTooltipTimeout: string | number | NodeJS.Timeout | undefined;\n\n // Use a unique id for each tooltip instance.\n // So screen readers can identify the tooltip instance when\n // there are multiple tooltips on the same page\n let _tooltipInstanceId: string;\n\n // Reactive\n\n $: {\n if (_rootEl && _tooltipEl) {\n _rootEl.style.setProperty(\n \"--target-width\",\n `${_rootEl.getBoundingClientRect().width / 2}px`,\n );\n }\n }\n\n // call checkAndAdjustPosition function when content changes\n $: {\n content && checkAndAdjustPosition();\n }\n\n // Hooks\n\n onMount(() => {\n setTimeout(() => {\n validatePosition(position);\n validateAlignment(halign);\n validator(position, halign);\n }, 1);\n\n _initialPosition = position;\n _tooltipInstanceId = Math.random().toString(36);\n\n window.addEventListener(\"resize\", checkAndAdjustPosition);\n checkAndAdjustPosition();\n });\n\n onDestroy(() => {\n window.removeEventListener(\"resize\", checkAndAdjustPosition);\n clearTimeout(_showTooltipTimeout);\n clearTimeout(_hideTooltipTimeout);\n });\n\n // Functions\n\n const showTooltip = () => {\n _showTooltipTimeout = setTimeout(() => {\n _tooltipVisible = true;\n checkAndAdjustPosition();\n }, 300);\n };\n\n const hideTooltip = () => {\n clearTimeout(_showTooltipTimeout);\n\n _hideTooltipTimeout = setTimeout(() => {\n _tooltipVisible = false;\n position = _initialPosition;\n }, 500);\n };\n\n async function checkAndAdjustPosition() {\n // angular needs time to render the _tooltipEl\n await tick();\n\n if (!_tooltipEl || !_rootEl) {\n return;\n }\n\n // determine the bounding rectangle of the tooltip and root element\n const tooltipRect = _tooltipEl.getBoundingClientRect();\n const rootRect = _rootEl.getBoundingClientRect();\n\n const spaceTop = rootRect.top;\n const spaceBottom = window.innerHeight - rootRect.bottom;\n const spaceLeft = rootRect.left;\n const spaceRight = window.innerWidth - rootRect.right;\n\n const newWidth = Math.min(\n _screenSize * 0.8,\n 400,\n tooltipRect.width,\n Math.max(spaceLeft, spaceRight) - 10,\n );\n const shouldWrapContent =\n newWidth > rootRect.width ||\n newWidth > spaceLeft ||\n newWidth > spaceRight;\n _tooltipEl.style.width = `${newWidth - 32}px`;\n\n if (shouldWrapContent) {\n _tooltipEl.style.whiteSpace = \"normal\";\n } else {\n _tooltipEl.style.whiteSpace = \"nowrap\";\n }\n\n let newPosition = position; // use a local variable to determine the new position\n let newAlign = halign; // use a local variable to determine the new position\n\n // check if there is enough space for the tooltip in the initial position\n if (position === \"bottom\" && tooltipRect.height > spaceBottom) {\n newPosition = \"top\";\n } else if (position === \"top\" && tooltipRect.height > spaceTop) {\n newPosition = \"bottom\";\n }\n\n // similar check for left and right position\n if (position === \"right\" && tooltipRect.width > spaceRight) {\n newPosition = \"left\";\n } else if (position === \"left\" && tooltipRect.width > spaceLeft) {\n newPosition = \"right\";\n }\n\n // similar check for left and right alignmewnt\n if (halign === \"right\" && tooltipRect.width > spaceRight) {\n newAlign = \"left\";\n } else if (halign === \"left\" && tooltipRect.width > spaceLeft) {\n newAlign = \"right\";\n } else if (\n halign === \"center\" &&\n (position === \"top\" || position === \"bottom\") &&\n (tooltipRect.width / 2 > spaceLeft || tooltipRect.width / 2 > spaceRight)\n ) {\n newAlign = spaceLeft > spaceRight ? \"left\" : \"right\";\n }\n\n // update tooltip position\n position = newPosition;\n halign = newAlign;\n }\n</script>\n\n<svelte:window bind:innerWidth={_screenSize} />\n\n<!-- svelte-ignore a11y-no-noninteractive-tabindex -->\n<div\n class=\"tooltip align-{halign}\"\n bind:this={_rootEl}\n on:mouseenter={() => {\n clearTimeout(_hideTooltipTimeout);\n showTooltip();\n }}\n on:mouseleave={hideTooltip}\n on:focus={() => {\n clearTimeout(_hideTooltipTimeout);\n showTooltip();\n }}\n on:blur={hideTooltip}\n data-testid={testid}\n role=\"tooltip\"\n aria-describedby=\"{_tooltipInstanceId}-tooltip\"\n tabindex=\"0\"\n style={calculateMargin(mt, mr, mb, ml)}\n>\n <div class=\"tooltip-target\">\n <slot />\n </div>\n <span\n id=\"{_tooltipInstanceId}-tooltip\"\n class=\"tooltip-text {position} align-{halign}\"\n bind:this={_tooltipEl}\n style=\"visibility: {_tooltipVisible ? 'visible' : 'hidden'}\">{content}</span\n >\n</div>\n\n<style>\n :host {\n box-sizing: border-box;\n font-family: var(--goa-font-family-sans);\n }\n\n .tooltip {\n position: relative;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n }\n\n .tooltip-text {\n visibility: hidden;\n font: var(--goa-typography-body-s);\n background-color: var(--goa-color-greyscale-700);\n color: var(--goa-color-text-light);\n text-align: center;\n border-radius: var(--goa-border-radius-m);\n position: absolute;\n z-index: 1;\n opacity: 0;\n transition: opacity 0.3s;\n padding: var(--goa-space-xs) var(--goa-space-m);\n text-align: left;\n white-space: nowrap;\n display: flex;\n flex-direction: column;\n }\n\n .tooltip-target {\n margin: 4px;\n }\n\n .tooltip-text.bottom {\n top: calc(100% + 10px);\n }\n\n .tooltip-text.top {\n bottom: calc(100% + 10px);\n }\n\n .tooltip-text.right {\n left: calc(100% + 10px);\n }\n\n .tooltip-text.left {\n right: calc(100% + 10px);\n }\n\n .tooltip:hover .tooltip-text,\n .tooltip:focus .tooltip-text {\n opacity: 1;\n }\n\n .tooltip-text.bottom::before,\n .tooltip-text.top::before,\n .tooltip-text.left::before,\n .tooltip-text.right::before {\n content: \"\";\n position: absolute;\n border-style: solid;\n }\n\n .tooltip-text.bottom::before {\n top: -10px;\n left: 50%;\n border-width: 0 10px 10px 10px;\n transform: translateX(-50%);\n border-color: transparent transparent var(--goa-color-greyscale-700)\n transparent;\n }\n .tooltip-text.top::before {\n bottom: -10px;\n left: 50%;\n transform: translateX(-50%);\n border-width: 10px 10px 0 10px;\n border-color: var(--goa-color-greyscale-700) transparent transparent\n transparent;\n }\n .tooltip-text.left::before {\n top: 50%;\n right: -10px;\n transform: translateY(-50%);\n border-width: 10px 0 10px 10px;\n border-color: transparent transparent transparent\n var(--goa-color-greyscale-700);\n }\n .tooltip-text.right::before {\n top: 50%;\n left: -10px;\n transform: translateY(-50%);\n border-width: 10px 10px 10px 0;\n border-style: solid;\n border-color: transparent var(--goa-color-greyscale-700) transparent\n transparent;\n }\n\n .tooltip-text.bottom.align-left::before,\n .tooltip-text.top.align-left::before {\n left: calc(100% - (var(--target-width) + 1rem));\n }\n\n .tooltip-text.bottom.align-right::before,\n .tooltip-text.top.align-right::before {\n left: calc(var(--target-width) + 1rem);\n }\n\n .tooltip.align-right {\n justify-content: flex-start;\n }\n .tooltip.align-left {\n justify-content: flex-end;\n }\n\n .tooltip-text.align-right {\n left: 0;\n margin-left: -1rem;\n }\n .tooltip-text.align-left {\n right: 0;\n margin-right: -1rem;\n }\n</style>\n","<svelte:options customElement=\"goa-two-column-layout\" />\n\n<script lang=\"ts\">\n export let navcolumnwidth: string = \"\"; // blank values falls back to the css var\n export let maxcontentwidth: string = \"\";\n</script>\n\n<div\n class=\"page\"\n style={`\n --max-content-width: ${maxcontentwidth || \"100%\"};\n --nav-column-width: ${navcolumnwidth || \"256px\"};\n `}\n>\n <header class=\"header\">\n <slot name=\"header\" />\n </header>\n\n <section class=\"content\">\n <nav class=\"nav\">\n <slot name=\"nav\" />\n </nav>\n\n <main>\n <slot />\n </main>\n </section>\n\n <footer class=\"footer\">\n <slot name=\"footer\" />\n </footer>\n</div>\n\n<style>\n * {\n box-sizing: border-box;\n }\n .page {\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n .content {\n flex: 1 1 auto;\n\n display: flex;\n flex-direction: column;\n gap: 2rem;\n }\n\n .header,\n .footer {\n flex: 0 0 auto;\n }\n\n main {\n flex: 1 1 auto;\n padding: 0 1rem;\n }\n\n .nav {\n padding: 0 1rem;\n transition: transform 200ms ease-in-out;\n background-color: var(--goa-color-greyscale-white);\n }\n\n .nav > * {\n display: block;\n padding: 0.5rem 0;\n }\n\n @media not (--mobile) {\n .page {\n gap: 2rem;\n }\n .content {\n display: flex;\n flex-direction: row;\n justify-content: center;\n width: min(var(--max-content-width), 100vw);\n margin: 0 auto;\n }\n\n .nav {\n padding: 0 2rem;\n transform: translateX(0);\n flex: 0 0 var(--nav-column-width);\n }\n\n main {\n padding-right: 2rem;\n }\n }\n\n @media (--desktop) {\n main {\n padding-right: 4.5rem;\n }\n }\n</style>\n"],"names":["noop","identity","x","assign","tar","src","k","run","fn","blank_object","run_all","fns","is_function","thing","safe_not_equal","a","b","src_url_equal_anchor","src_url_equal","element_src","url","is_empty","obj","subscribe","store","callbacks","callback","unsub","component_subscribe","component","create_slot","definition","ctx","$$scope","slot_ctx","get_slot_context","get_slot_changes","dirty","lets","merged","len","i","update_slot_base","slot","slot_definition","slot_changes","get_slot_context_fn","slot_context","get_all_dirty_from_scope","length","compute_slots","slots","result","key","null_to_empty","value","action_destroyer","action_result","split_css_unit","split","is_client","now","raf","cb","tasks","run_tasks","task","loop","fulfill","globals","append","target","node","append_styles","style_sheet_id","styles","append_styles_to","get_root_for_style","style","element","append_stylesheet","root","append_empty_stylesheet","style_element","insert","anchor","detach","destroy_each","iterations","detaching","name","svg_element","text","data","space","empty","listen","event","handler","options","stop_propagation","attr","attribute","set_custom_element_data","prop","lower","children","set_data","set_input_value","input","set_style","important","crossorigin","is_crossorigin","add_iframe_resize_listener","iframe","unsubscribe","toggle_class","toggle","custom_event","type","detail","bubbles","cancelable","get_custom_elements_slots","managed_styles","active","hash","str","create_style_information","doc","info","create_rule","duration","delay","ease","uid","step","keyframes","p","t","rule","stylesheet","rules","animation","delete_rule","previous","next","anim","deleted","clear_rules","ownerNode","current_component","set_current_component","get_current_component","onMount","afterUpdate","onDestroy","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","schedule_update","flush","tick","add_render_callback","seen_callbacks","flushidx","saved_component","update","$$","flush_render_callbacks","filtered","targets","c","promise","wait","dispatch","direction","kind","outroing","outros","group_outros","check_outros","transition_in","block","local","transition_out","null_transition","create_in_transition","params","config","running","animation_name","cleanup","go","easing","linear","css","start_time","end_time","started","create_out_transition","group","original_inert_value","reset","create_bidirectional_transition","intro","running_program","pending_program","clear_animation","init","program","d","ensure_array_like","array_like_or_iterator","destroy_block","lookup","update_keyed_each","old_blocks","get_key","dynamic","list","destroy","create_each_block","get_context","o","n","old_indexes","new_blocks","new_lookup","deltas","updates","child_ctx","will_move","did_move","new_block","old_block","new_key","old_key","create_component","mount_component","fragment","after_update","new_on_destroy","destroy_component","make_dirty","instance","create_fragment","not_equal","props","parent_component","ready","ret","rest","nodes","SvelteElement","$$componentCtor","$$slots","use_shadow_dom","__publicField","listener","existing_slots","get_custom_element_value","reflect_attributes","attribute_value","_oldValue","newValue","_a","attribute_name","props_definition","transform","create_custom_element","Component","accessors","extend","Class","accessor","SvelteComponent","index","PUBLIC_VERSION","conversions","convertSpacing","size","calculateMargin","mt","mr","mb","ml","injectCss","el","rootSelector","media","_css","entry","toBoolean","fromBoolean","isValidDate","validateRequired","componentName","typeValidator","message","values","required","getTimestamp","val","months","hour24","min0","date","month","year","hour","meridium","min","ordinal","cssVar","pluralize","word","count","clamp","max","goa_icon","goa_icon_fillcolor_value","div0","div3","div3_style_value","details","summary","div1","span0","span1","div2","current","HeadingSizes","validateHeadingSize","open","$$props","heading","secondarytext","headingsize","testid","_hovering","_titleEl","_headingContentSlotChildren","getChildren","$$value","mouseover_handler","$$invalidate","mouseout_handler","focus_handler","blur_handler","isOpen","MOBILE_BP","TABLET_BP","create_if_block_7","_mobileLogo","img0","img0_src_value","_desktopLogo","img1","img1_src_value","div","create_if_block_6","span","button","create_if_block_3","goa_popover","create_if_block_5","if_block1","create_if_block_4","if_block2","create_if_block_2","create_if_block_1","create_if_block","div1_style_value","maxcontentwidth","fullmenubreakpoint","_slotParentEl","_windowWidth","_showToggleMenu","_showMenu","toggleMenu","hideMenu","onRouteChange","setCurrentLink","link","href","hasChildren","_mobile","_tablet","_desktop","goa_spacer","leadingicon","_innerWidth","_popoverEl","_hasCurrentLink","_open","hasCurrentLink","bindToPopoverCloseEvent","closeMenu","openMenu","goa_icon_arialabel_value","goa_icon_role_value","div_style_value","Types","validateType","content","icon","arialabel","showIcon","showIconOnly","iconType","gap","alignment","_alignment","button_style_value","button_type_value","Sizes","validateSize","Variants","validateVariant","variant","disabled","trailingicon","clickHandler","_e","isDisabled","isButtonDark","BUTTON_ALIGNMENTS","validateAlignment","GAPS","validateGap","toDate","argument","argStr","constructFrom","addDays","amount","_date","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","millisecondsInWeek","millisecondsInDay","defaultOptions","getDefaultOptions","startOfWeek","_b","_c","_d","weekStartsOn","day","diff","startOfISOWeek","getISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfDay","getTimezoneOffsetInMilliseconds","utcDate","differenceInCalendarDays","dateLeft","dateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","startOfISOWeekYear","fourthOfJanuary","addYears","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isDate","isValid","startOfYear","cleanDate","formatDistanceLocale","formatDistance","token","tokenValue","buildFormatLongFn","args","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","context","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","quarter","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","sign","output","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","offset","delimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","format","_message","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","_f","_g","_h","locale","defaultLocale","originalDate","parts","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","part","formatter","matched","getDaysInMonth","monthIndex","lastDayOfMonth","isAfter","dateToCompare","_dateToCompare","isBefore","isSameMonth","_dateLeft","_dateRight","setDate","goa_dropdown_item","t_value","t0_value","t0","goa_dropdown0","goa_dropdown0_value_value","goa_dropdown1","goa_dropdown1_value_value","goa_block","goa_form_item0","goa_form_item1","h50","h51","h52","h53","h54","h55","h56","bordered","_selectedDate","_calendarDate","_min","_max","_monthDays","_previousMonthDays","_nextMonthDays","_nextMonthDayCount","_months","_years","_calendarEl","yearCount","yearStart","_","initKeybindings","renderCalendar","change","dayCount","prevMonthEnd","selectedMonthStart","nextMonthStart","handleKeyClick","e","newDate","focusedDateEl","homeDate","dispatchValue","setMonth","setYear","onDateClick","raw","h3","goa_icon_inverted_value","CalloutSizes","validateCalloutSize","screenSize","iconSize","isMediumCallout","goa_card_content","goa_button_group","elevation","height","svg","path","rect","input_aria_label_value","label","checked","error","description","_value","_checkboxRef","_descriptionId","onChange","newCheckStatus","isChecked","isError","isIndeterminate","goa_icon_opacity_value","deletable","_error","_deletable","onDelete","click_handler","cubicOut","f","quartOut","fade","fly","y","opacity","target_opacity","od","xValue","xUnit","yValue","yUnit","u","noscroll","_node","opts","toggledScrolling","hideScrollbars","isScrollable","scrollbarWidth","calculateScrollbarWidth","resetScrollbars","outer","inner","div_class_value","goa_spinner","dispose","noScroll","div_transition","progress","visible","spinnerSize","fullscreen","inline","isVisible","header","Accents","validateAccent","Paddings","validatePadding","accent","padding","goa_input","goa_input_value_value","goa_calendar","relative","_rootEl","_showPopover","initDate","onCalendarChange","hideCalendar","formatDate","showCalendar","handleKeyDown","close_handler","details_style_value","_isMouseOver","_summaryEl","_detailsEl","toggle_handler","_isOpen","hr","hr_style_value","ul","ul_aria_label_value","each_1_else","select","select_aria_label_value","goa_icon_ariaexpanded_value","li","li_id_value","li_data_testid_value","li_data_value_value","option_1","option_1_value_value","parseValues","selectedValue","rawValue","isFilterMatch","option","filter","arialabelledby","filterable","maxheight","placeholder","multiselect","native","_isMenuVisible","_highlightedIndex","_width","_wrapperEl","_menuEl","_selectEl","_inputEl","_eventHandler","_isDirty","_filteredOptions","_values","_filterable","ComboboxKeyUpHandler","DropdownKeyUpHandler","getOptions","_native","calculatePercentWidth","getLongestChildWidth","syncFilteredOptions","setDisplayedValue","rootWidth","percent","child","optionsWidth","maxWidth","changeHighlightedOption","items","scrollToOption","liNode","liOptionRect","ulRect","showMenu","_disabled","_multiselect","onSelect","onInputKeyUp","onInputKeyDown","onClearIconKeyDown","onClearIconClick","onNativeSelect","_activeDescendantId","onChevronClick","matchedOption","_input","formatFileSize","progress_1","t1","t1_value","goa_button","div4","getFiletypeIcon","filename","ext","extTypeIcon","bytes","_status","_fileIcon","action","click_handler_1","click_handler_2","onDrag","em","t3_value","t3","if_block0","accept","maxfilesize","_el","_fileInput","_state","issues","file","validate","isValidFileType","isValidFileSize","typeMatchers","matcher","units","factor","openFilePicker","onDrop","item","onDragEnter","onDragLeave","onMouseOver","onMouseOut","isFocusable","rootEl","boundryStartEl","boundryEndEl","isShiftPressed","onFocus","onKeydown","onKeyup","findFirstNode","reversed","nodeList","findFirstNodeOfSlot","findFirstNodeOfShadowDOM","goa_divider","if_block","div5","div5_style_value","a0","a1","navLinks","metaLinks","navSlot","metaSlot","a_href_value","section","sum","valid","maxcolumncount","show_if","REQUIREMENT_TYPES","validateRequirementType","LABEL_SIZE_TYPES","validateLabelSize","labelsize","helptext","requirement","id","label_aria_label_value","StatusTypes","validateStatus","enabled","childindex","status","_stepEl","_checkbox","_isMobile","_isEnabled","mobile","_isCurrent","progress0","progress1","goa_grid","_gridEl","_steps","_stepWidth","_stepHeight","_progressHeight","_maxAllowedStep","_maxProgressStep","_showProgressBars","_step","s","setCurrentStepStatus","calcStepDimensions","resizeObserver","entries","stepEl","_progress","nav","main","footer","minchildwidth","goa_page_block","goa_page_block_width_value","h1","backgroundurl","minheight","backgroundcolor","textcolor","handleClick","theme","title","inverted","isInverted","_paddingSize","ion_icon","ion_icon_name_value","raw_value","fillcolor","ariacontrols","ariaexpanded","role","_iconOverrides","iconName","_isInverted","_ariaExpanded","goa_icon_button","doClick","if_block3","input_id_value","div2_class_value","AutoCapitalize","validateAutoCapitalize","autocapitalize","handletrailingiconclick","focused","readonly","prefix","suffix","debounce","maxlength","_leadingContentSlot","_trailingContentSlot","_debounceId","inputEl","onKeyUp","isReadonly","onBlur","leadingContentSlot","trailingContentSlot","handlesTrailingIconClick","isFocused","capitalize","div0_class_value","version","feedbackurl","headerurltarget","feedbackurltarget","UrlTarget","validateUrlTargetType","goa_focus_trap","div6","goa_scrollable","noscroll_action","div6_intro","closable","transition","calloutvariant","maxwidth","_scrollPos","_scrollEl","_headerEl","_requiresTopPadding","CALLOUT_VARIANT","validateCalloutVariant","Transitions","validateTransition","close","_isClosable","handleScroll","hasScroll","_transitionTime","_iconType","goa_icon0","goa_icon0_inverted_value","goa_icon1","goa_icon1_inverted_value","AriaLiveTypes","validateAriaLiveType","arialive","show","section0","section1","dimensionRegex","isValidDimension","isValidSize","setCurrentPage","_child","each_value","goa_dropdown","goa_button0","goa_button0_disabled_value","goa_button1","goa_button1_disabled_value","goa_block1","goa_block0","pagenumber","itemcount","perpagecount","pageDropdownEl","hiddenEl","ce","page","goto","newPage","_pageCount","getBoundingClientRectWithMargins","mTop","mRight","mBottom","mLeft","padded","position","tabindex","voffset","hoffset","focusborderwidth","borderradius","_targetEl","_focusTrapEl","_initFocusedEl","_sectionHeight","onTargetEvent","handleUrlChange","closePopover","openPopover","onFocusTrapEvent","setPopoverPosition","targetRect","popoverRect","spaceAbove","spaceBelow","_relative","_padded","Orientations","validateOrientation","orientation","bindOptions","optionValue","setCurrentSelectedOption","t2_value","label_1","t2","ariadescribedby","_radioItemEl","hpadding","vpadding","offsetHeight","scrollHeight","onScroll","isUrlMatch","windowUrl","testUrl","windowUrlParts","urlParts","weight","setCurrentUrl","addEventListeners","removeEventListeners","links","currentEl","maxWeight","currentLocation","_mutationList","toSlug","_current","checkUrlMatches","setCurrent","matchesMenu","matchesChild","notifyParent","_slug","maxMatchWeight","matchedChild","h2","each_blocks","linecount","hspacing","vspacing","subscriber_queue","writable","start","stop","subscribers","set","new_value","run_queue","subscriber","invalidate","is_date","get_interpolator","arr","bi","delta","keys","interpolators","tweened","defaults","target_value","previous_task","interpolate","elapsed","circle","circle_stroke_value","path_d_value","path_stroke_value","svg_viewBox_value","invert","getCoords","radians","radius","pathRadius","getArc","end","largeArcFlag","diameter","strokewidth","table","table_style_value","stickyheader","_isTableRoot","attachSortEventHandling","contentSlot","headings","sortBy","sortDir","newDirection","initialSortBy","initialDirection","_stickyHeader","hostEl","initialtab","_tabs","_tabsEl","_panelEl","_currentTab","addKeyboardEventListeners","bindTabs","setCurrentTab","tabs","tab","headingEl","tabSlug","headingDataEl","removeKeyboardEventListeners","handleKeydownEvents","isCurrent","onKeyDown","isHandled","textarea","textarea_aria_label_value","rows","countby","maxcount","_textareaEl","dispatchChange","onKeyPress","dispatchKeyPress","nav0","nav1","leftcolumnwidth","rightcolumnwidth","span_class_value","halign","Positions","validatePosition","Alignment","validator","align","_screenSize","_tooltipEl","_initialPosition","_tooltipVisible","_showTooltipTimeout","_hideTooltipTimeout","_tooltipInstanceId","checkAndAdjustPosition","showTooltip","hideTooltip","tooltipRect","rootRect","spaceTop","spaceBottom","spaceLeft","spaceRight","newWidth","shouldWrapContent","newPosition","newAlign","navcolumnwidth"],"mappings":";;;AACO,SAASA,KAAO;AAAE;AAElB,MAAMC,KAAW,CAACC,MAAMA;AASxB,SAASC,GAAOC,GAAKC,GAAK;AAEhC,aAAWC,KAAKD;AAAK,IAAAD,EAAIE,CAAC,IAAID,EAAIC,CAAC;AACnC;AAAA;AAAA,IAA6BF;AAAA;AAC9B;AAuBO,SAASG,GAAIC,GAAI;AACvB,SAAOA,EAAE;AACV;AAEO,SAASC,KAAe;AAC9B,SAAO,uBAAO,OAAO,IAAI;AAC1B;AAMO,SAASC,GAAQC,GAAK;AAC5B,EAAAA,EAAI,QAAQJ,EAAG;AAChB;AAMO,SAASK,GAAYC,GAAO;AAClC,SAAO,OAAOA,KAAU;AACzB;AAGO,SAASC,GAAeC,GAAGC,GAAG;AACpC,SAAOD,KAAKA,IAAIC,KAAKA,IAAID,MAAMC,KAAMD,KAAK,OAAOA,KAAM,YAAa,OAAOA,KAAM;AAClF;AAEA,IAAIE;AAOG,SAASC,GAAcC,GAAaC,GAAK;AAC/C,SAAID,MAAgBC,IAAY,MAC3BH,OACJA,KAAuB,SAAS,cAAc,GAAG,IAGlDA,GAAqB,OAAOG,GACrBD,MAAgBF,GAAqB;AAC7C;AAqCO,SAASI,GAASC,GAAK;AAC7B,SAAO,OAAO,KAAKA,CAAG,EAAE,WAAW;AACpC;AASO,SAASC,GAAUC,MAAUC,GAAW;AAC9C,MAAID,KAAS,MAAM;AAClB,eAAWE,KAAYD;AACtB,MAAAC,EAAS,MAAS;AAEnB,WAAO1B;AAAA,EACP;AACD,QAAM2B,IAAQH,EAAM,UAAU,GAAGC,CAAS;AAC1C,SAAOE,EAAM,cAAc,MAAMA,EAAM,YAAW,IAAKA;AACxD;AAiBO,SAASC,GAAoBC,GAAWL,GAAOE,GAAU;AAC/D,EAAAG,EAAU,GAAG,WAAW,KAAKN,GAAUC,GAAOE,CAAQ,CAAC;AACxD;AAEO,SAASI,EAAYC,GAAYC,GAAKC,GAASzB,GAAI;AACzD,MAAIuB,GAAY;AACf,UAAMG,IAAWC,GAAiBJ,GAAYC,GAAKC,GAASzB,CAAE;AAC9D,WAAOuB,EAAW,CAAC,EAAEG,CAAQ;AAAA,EAC7B;AACF;AAEA,SAASC,GAAiBJ,GAAYC,GAAKC,GAASzB,GAAI;AACvD,SAAOuB,EAAW,CAAC,KAAKvB,IAAKL,GAAO8B,EAAQ,IAAI,MAAK,GAAIF,EAAW,CAAC,EAAEvB,EAAGwB,CAAG,CAAC,CAAC,IAAIC,EAAQ;AAC5F;AAEO,SAASG,EAAiBL,GAAYE,GAASI,GAAO7B,GAAI;AAChE,MAAIuB,EAAW,CAAC,KAAKvB,GAAI;AACxB,UAAM8B,IAAOP,EAAW,CAAC,EAAEvB,EAAG6B,CAAK,CAAC;AACpC,QAAIJ,EAAQ,UAAU;AACrB,aAAOK;AAER,QAAI,OAAOA,KAAS,UAAU;AAC7B,YAAMC,IAAS,CAAA,GACTC,IAAM,KAAK,IAAIP,EAAQ,MAAM,QAAQK,EAAK,MAAM;AACtD,eAASG,IAAI,GAAGA,IAAID,GAAKC,KAAK;AAC7B,QAAAF,EAAOE,CAAC,IAAIR,EAAQ,MAAMQ,CAAC,IAAIH,EAAKG,CAAC;AAEtC,aAAOF;AAAA,IACP;AACD,WAAON,EAAQ,QAAQK;AAAA,EACvB;AACD,SAAOL,EAAQ;AAChB;AAGO,SAASS,EACfC,GACAC,GACAZ,GACAC,GACAY,GACAC,GACC;AACD,MAAID,GAAc;AACjB,UAAME,IAAeZ,GAAiBS,GAAiBZ,GAAKC,GAASa,CAAmB;AACxF,IAAAH,EAAK,EAAEI,GAAcF,CAAY;AAAA,EACjC;AACF;AAiBO,SAASG,EAAyBf,GAAS;AACjD,MAAIA,EAAQ,IAAI,SAAS,IAAI;AAC5B,UAAMI,IAAQ,CAAA,GACRY,IAAShB,EAAQ,IAAI,SAAS;AACpC,aAASQ,IAAI,GAAGA,IAAIQ,GAAQR;AAC3B,MAAAJ,EAAMI,CAAC,IAAI;AAEZ,WAAOJ;AAAA,EACP;AACD,SAAO;AACR;AAkBO,SAASa,GAAcC,GAAO;AACpC,QAAMC,IAAS,CAAA;AACf,aAAWC,KAAOF;AACjB,IAAAC,EAAOC,CAAG,IAAI;AAEf,SAAOD;AACR;AAYO,SAASE,GAAcC,GAAO;AACpC,SAAOA,KAAgB;AACxB;AASO,SAASC,GAAiBC,GAAe;AAC/C,SAAOA,KAAiB7C,GAAY6C,EAAc,OAAO,IAAIA,EAAc,UAAUzD;AACtF;AAKO,SAAS0D,GAAeH,GAAO;AACrC,QAAMI,IAAQ,OAAOJ,KAAU,YAAYA,EAAM,MAAM,4BAA4B;AACnF,SAAOI,IAAQ,CAAC,WAAWA,EAAM,CAAC,CAAC,GAAGA,EAAM,CAAC,KAAK,IAAI,IAAI;AAAA;AAAA,IAAwBJ;AAAA,IAAQ;AAAA,EAAI;AAC/F;AC9RO,MAAMK,KAAY,OAAO,SAAW;AAGpC,IAAIC,KAAMD,KAAY,MAAM,OAAO,YAAY,QAAQ,MAAM,KAAK,OAE9DE,KAAMF,KAAY,CAACG,MAAO,sBAAsBA,CAAE,IAAI/D;ACLjE,MAAMgE,KAAQ,oBAAI;AAMlB,SAASC,GAAUJ,GAAK;AACvB,EAAAG,GAAM,QAAQ,CAACE,MAAS;AACvB,IAAKA,EAAK,EAAEL,CAAG,MACdG,GAAM,OAAOE,CAAI,GACjBA,EAAK,EAAC;AAAA,EAET,CAAE,GACGF,GAAM,SAAS,KAAGF,GAAIG,EAAS;AACpC;AAgBO,SAASE,GAAKzC,GAAU;AAE9B,MAAIwC;AACJ,SAAIF,GAAM,SAAS,KAAGF,GAAIG,EAAS,GAC5B;AAAA,IACN,SAAS,IAAI,QAAQ,CAACG,MAAY;AACjC,MAAAJ,GAAM,IAAKE,IAAO,EAAE,GAAGxC,GAAU,GAAG0C,EAAO;IAC9C,CAAG;AAAA,IACD,QAAQ;AACP,MAAAJ,GAAM,OAAOE,CAAI;AAAA,IACjB;AAAA,EACH;AACA;AC3CO,MAAMG,KACZ,OAAO,SAAW,MACf,SACA,OAAO,aAAe,MACtB;AAAA;AAAA,EAEA;AAAA;ACuIG,SAASC,EAAOC,GAAQC,GAAM;AACpC,EAAAD,EAAO,YAAYC,CAAI;AACxB;AAQO,SAASC,GAAcF,GAAQG,GAAgBC,GAAQ;AAC7D,QAAMC,IAAmBC,GAAmBN,CAAM;AAClD,MAAI,CAACK,EAAiB,eAAeF,CAAc,GAAG;AACrD,UAAMI,IAAQC,EAAQ,OAAO;AAC7B,IAAAD,EAAM,KAAKJ,GACXI,EAAM,cAAcH,GACpBK,GAAkBJ,GAAkBE,CAAK;AAAA,EACzC;AACF;AAMO,SAASD,GAAmBL,GAAM;AACxC,MAAI,CAACA;AAAM,WAAO;AAClB,QAAMS,IAAOT,EAAK,cAAcA,EAAK,YAAa,IAAGA,EAAK;AAC1D,SAAIS;AAAA,EAAmCA,EAAM;AAAA;AAAA,IACVA;AAAA,MAE5BT,EAAK;AACb;AAMO,SAASU,GAAwBV,GAAM;AAC7C,QAAMW,IAAgBJ,EAAQ,OAAO;AAMrC,SAAAI,EAAc,cAAc,eAC5BH,GAAkBH,GAAmBL,CAAI,GAAGW,CAAa,GAClDA,EAAc;AACtB;AAOA,SAASH,GAAkBR,GAAMM,GAAO;AACvC,SAAAR;AAAA;AAAA,IAAgCE,EAAM,QAAQA;AAAA,IAAMM;AAAA,EAAK,GAClDA,EAAM;AACd;AAuCO,SAASM,EAAOb,GAAQC,GAAMa,GAAQ;AAC5C,EAAAd,EAAO,aAAaC,GAAMa,KAAU,IAAI;AACzC;AAoBO,SAASC,EAAOd,GAAM;AAC5B,EAAIA,EAAK,cACRA,EAAK,WAAW,YAAYA,CAAI;AAElC;AAIO,SAASe,GAAaC,GAAYC,GAAW;AACnD,WAAShD,IAAI,GAAGA,IAAI+C,EAAW,QAAQ/C,KAAK;AAC3C,IAAI+C,EAAW/C,CAAC,KAAG+C,EAAW/C,CAAC,EAAE,EAAEgD,CAAS;AAE9C;AAOO,SAASV,EAAQW,GAAM;AAC7B,SAAO,SAAS,cAAcA,CAAI;AACnC;AAuCO,SAASC,GAAYD,GAAM;AACjC,SAAO,SAAS,gBAAgB,8BAA8BA,CAAI;AACnE;AAMO,SAASE,EAAKC,GAAM;AAC1B,SAAO,SAAS,eAAeA,CAAI;AACpC;AAIO,SAASC,IAAQ;AACvB,SAAOF,EAAK,GAAG;AAChB;AAIO,SAASG,KAAQ;AACvB,SAAOH,EAAK,EAAE;AACf;AAiBO,SAASI,EAAOxB,GAAMyB,GAAOC,GAASC,GAAS;AACrD,SAAA3B,EAAK,iBAAiByB,GAAOC,GAASC,CAAO,GACtC,MAAM3B,EAAK,oBAAoByB,GAAOC,GAASC,CAAO;AAC9D;AAcO,SAASC,GAAiB5F,GAAI;AACpC,SAAO,SAAUyF,GAAO;AACvB,WAAAA,EAAM,gBAAe,GAEdzF,EAAG,KAAK,MAAMyF,CAAK;AAAA,EAC5B;AACA;AAoCO,SAASI,EAAK7B,GAAM8B,GAAW/C,GAAO;AAC5C,EAAIA,KAAS,OAAMiB,EAAK,gBAAgB8B,CAAS,IACxC9B,EAAK,aAAa8B,CAAS,MAAM/C,KAAOiB,EAAK,aAAa8B,GAAW/C,CAAK;AACpF;AA4DO,SAASgD,EAAwB/B,GAAMgC,GAAMjD,GAAO;AAC1D,QAAMkD,IAAQD,EAAK;AACnB,EAAIC,KAASjC,IACZA,EAAKiC,CAAK,IAAI,OAAOjC,EAAKiC,CAAK,KAAM,aAAalD,MAAU,KAAK,KAAOA,IAC9DiD,KAAQhC,IAClBA,EAAKgC,CAAI,IAAI,OAAOhC,EAAKgC,CAAI,KAAM,aAAajD,MAAU,KAAK,KAAOA,IAEtE8C,EAAK7B,GAAMgC,GAAMjD,CAAK;AAExB;AA2HO,SAASmD,GAAS3B,GAAS;AACjC,SAAO,MAAM,KAAKA,EAAQ,UAAU;AACrC;AAiNO,SAAS4B,GAASf,GAAMC,GAAM;AAEpC,EADAA,IAAO,KAAKA,GACRD,EAAK,SAASC,MAClBD,EAAK;AAAA,EAA8BC;AACpC;AA6BO,SAASe,GAAgBC,GAAOtD,GAAO;AAC7C,EAAAsD,EAAM,QAAQtD,KAAgB;AAC/B;AAcO,SAASuD,GAAUtC,GAAMnB,GAAKE,GAAOwD,GAAW;AACtD,EAAIxD,KAAS,OACZiB,EAAK,MAAM,eAAenB,CAAG,IAE7BmB,EAAK,MAAM,YAAYnB,GAAKE,GAAOwD,IAAY,cAAc,EAAE;AAEjE;AAuCA,IAAIC;AAIG,SAASC,KAAiB;AAChC,MAAID,OAAgB,QAAW;AAC9B,IAAAA,KAAc;AACd,QAAI;AACH,MAAI,OAAO,SAAW,OAAe,OAAO,UACtC,OAAO,OAAO;AAAA,IAEpB,QAAe;AACf,MAAAA,KAAc;AAAA,IACd;AAAA,EACD;AACD,SAAOA;AACR;AAOO,SAASE,GAA2B1C,GAAMhE,GAAI;AAEpD,EADuB,iBAAiBgE,CAAI,EACzB,aAAa,aAC/BA,EAAK,MAAM,WAAW;AAEvB,QAAM2C,IAASpC,EAAQ,QAAQ;AAC/B,EAAAoC,EAAO;AAAA,IACN;AAAA,IACA;AAAA,EAEF,GACCA,EAAO,aAAa,eAAe,MAAM,GACzCA,EAAO,WAAW;AAClB,QAAMH,IAAcC;AAKpB,MAAIG;AACJ,SAAIJ,KACHG,EAAO,MAAM,mFACbC,IAAcpB;AAAA,IACb;AAAA,IACA;AAAA;AAAA,IACmC,CAACC,MAAU;AAC7C,MAAIA,EAAM,WAAWkB,EAAO,iBAAe3G,EAAE;AAAA,IAC7C;AAAA,EACJ,MAEE2G,EAAO,MAAM,eACbA,EAAO,SAAS,MAAM;AACrB,IAAAC,IAAcpB,EAAOmB,EAAO,eAAe,UAAU3G,CAAE,GAGvDA;EACH,IAEC8D,EAAOE,GAAM2C,CAAM,GACZ,MAAM;AACZ,KAAIH,KAEOI,KAAeD,EAAO,kBAChCC,KAED9B,EAAO6B,CAAM;AAAA,EACf;AACA;AAcO,SAASE,EAAatC,GAASW,GAAM4B,GAAQ;AAEnD,EAAAvC,EAAQ,UAAU,OAAOW,GAAM,CAAC,CAAC4B,CAAM;AACxC;AASO,SAASC,GAAaC,GAAMC,GAAQ,EAAE,SAAAC,IAAU,IAAO,YAAAC,IAAa,GAAO,IAAG,IAAI;AACxF,SAAO,IAAI,YAAYH,GAAM,EAAE,QAAAC,GAAQ,SAAAC,GAAS,YAAAC,EAAU,CAAE;AAC7D;AAyMO,SAASC,GAA0B7C,GAAS;AAClD,QAAM3B,IAAS,CAAA;AACf,SAAA2B,EAAQ,WAAW;AAAA;AAAA,IACW,CAACP,MAAS;AACtC,MAAApB,EAAOoB,EAAK,QAAQ,SAAS,IAAI;AAAA,IACjC;AAAA,EACH,GACQpB;AACR;AClsCA,MAAMyE,KAAiB,oBAAI;AAE3B,IAAIC,KAAS;AAOb,SAASC,GAAKC,GAAK;AAClB,MAAID,IAAO,MACPtF,IAAIuF,EAAI;AACZ,SAAOvF;AAAK,IAAAsF,KAASA,KAAQ,KAAKA,IAAQC,EAAI,WAAWvF,CAAC;AAC1D,SAAOsF,MAAS;AACjB;AAOA,SAASE,GAAyBC,GAAK1D,GAAM;AAC5C,QAAM2D,IAAO,EAAE,YAAYjD,GAAwBV,CAAI,GAAG,OAAO,CAAA;AACjE,SAAAqD,GAAe,IAAIK,GAAKC,CAAI,GACrBA;AACR;AAaO,SAASC,GAAY5D,GAAMzD,GAAGC,GAAGqH,GAAUC,GAAOC,GAAM/H,GAAIgI,IAAM,GAAG;AAC3E,QAAMC,IAAO,SAASJ;AACtB,MAAIK,IAAY;AAAA;AAChB,WAASC,IAAI,GAAGA,KAAK,GAAGA,KAAKF,GAAM;AAClC,UAAMG,IAAI7H,KAAKC,IAAID,KAAKwH,EAAKI,CAAC;AAC9B,IAAAD,KAAaC,IAAI,MAAM,KAAKnI,EAAGoI,GAAG,IAAIA,CAAC,CAAC;AAAA;AAAA,EACxC;AACD,QAAMC,IAAOH,IAAY,SAASlI,EAAGQ,GAAG,IAAIA,CAAC,CAAC;AAAA,IACxC0E,IAAO,YAAYqC,GAAKc,CAAI,CAAC,IAAIL,CAAG,IACpCN,IAAMrD,GAAmBL,CAAI,GAC7B,EAAE,YAAAsE,GAAY,OAAAC,EAAO,IAAGlB,GAAe,IAAIK,CAAG,KAAKD,GAAyBC,GAAK1D,CAAI;AAC3F,EAAKuE,EAAMrD,CAAI,MACdqD,EAAMrD,CAAI,IAAI,IACdoD,EAAW,WAAW,cAAcpD,CAAI,IAAImD,CAAI,IAAIC,EAAW,SAAS,MAAM;AAE/E,QAAME,IAAYxE,EAAK,MAAM,aAAa;AAC1C,SAAAA,EAAK,MAAM,YAAY,GACtBwE,IAAY,GAAGA,CAAS,OAAO,EACjC,GAAItD,CAAI,IAAI2C,CAAQ,aAAaC,CAAK,aACrCR,MAAU,GACHpC;AACR;AAOO,SAASuD,GAAYzE,GAAMkB,GAAM;AACvC,QAAMwD,KAAY1E,EAAK,MAAM,aAAa,IAAI,MAAM,IAAI,GAClD2E,IAAOD,EAAS;AAAA,IACrBxD,IACG,CAAC0D,MAASA,EAAK,QAAQ1D,CAAI,IAAI,IAC/B,CAAC0D,MAASA,EAAK,QAAQ,UAAU,MAAM;AAAA;AAAA,EAC5C,GACOC,IAAUH,EAAS,SAASC,EAAK;AACvC,EAAIE,MACH7E,EAAK,MAAM,YAAY2E,EAAK,KAAK,IAAI,GACrCrB,MAAUuB,GACLvB,MAAQwB;AAEf;AAGO,SAASA,KAAc;AAC7B,EAAAxF,GAAI,MAAM;AACT,IAAIgE,OACJD,GAAe,QAAQ,CAACM,MAAS;AAChC,YAAM,EAAE,WAAAoB,EAAS,IAAKpB,EAAK;AAE3B,MAAIoB,KAAWjE,EAAOiE,CAAS;AAAA,IAClC,CAAG,GACD1B,GAAe,MAAK;AAAA,EACtB,CAAE;AACF;AChGO,IAAI2B;AAGJ,SAASC,GAAsB5H,GAAW;AAChD,EAAA2H,KAAoB3H;AACrB;AAEO,SAAS6H,KAAwB;AACvC,MAAI,CAACF;AAAmB,UAAM,IAAI,MAAM,kDAAkD;AAC1F,SAAOA;AACR;AA6BO,SAASG,GAAQnJ,GAAI;AAC3B,EAAAkJ,GAAuB,EAAC,GAAG,SAAS,KAAKlJ,CAAE;AAC5C;AAWO,SAASoJ,GAAYpJ,GAAI;AAC/B,EAAAkJ,GAAuB,EAAC,GAAG,aAAa,KAAKlJ,CAAE;AAChD;AAYO,SAASqJ,GAAUrJ,GAAI;AAC7B,EAAAkJ,GAAuB,EAAC,GAAG,WAAW,KAAKlJ,CAAE;AAC9C;ACnEO,MAAMsJ,KAAmB,CAAA,GAEnBC,KAAoB,CAAA;AAEjC,IAAIC,KAAmB,CAAA;AAEvB,MAAMC,KAAkB,CAAA,GAElBC,KAAmC,wBAAQ;AAEjD,IAAIC,KAAmB;AAGhB,SAASC,KAAkB;AACjC,EAAKD,OACJA,KAAmB,IACnBD,GAAiB,KAAKG,CAAK;AAE7B;AAGO,SAASC,KAAO;AACtB,SAAAF,MACOF;AACR;AAGO,SAASK,GAAoB/J,GAAI;AACvC,EAAAwJ,GAAiB,KAAKxJ,CAAE;AACzB;AAyBA,MAAMgK,KAAiB,oBAAI;AAE3B,IAAIC,KAAW;AAGR,SAASJ,IAAQ;AAIvB,MAAII,OAAa;AAChB;AAED,QAAMC,IAAkBlB;AACxB,KAAG;AAGF,QAAI;AACH,aAAOiB,KAAWX,GAAiB,UAAQ;AAC1C,cAAMjI,IAAYiI,GAAiBW,EAAQ;AAC3C,QAAAA,MACAhB,GAAsB5H,CAAS,GAC/B8I,GAAO9I,EAAU,EAAE;AAAA,MACnB;AAAA,IACD,SAAQ,GAAG;AAEX,YAAAiI,GAAiB,SAAS,GAC1BW,KAAW,GACL;AAAA,IACN;AAID,SAHAhB,GAAsB,IAAI,GAC1BK,GAAiB,SAAS,GAC1BW,KAAW,GACJV,GAAkB;AAAQ,MAAAA,GAAkB,IAAK,EAAA;AAIxD,aAAStH,IAAI,GAAGA,IAAIuH,GAAiB,QAAQvH,KAAK,GAAG;AACpD,YAAMf,IAAWsI,GAAiBvH,CAAC;AACnC,MAAK+H,GAAe,IAAI9I,CAAQ,MAE/B8I,GAAe,IAAI9I,CAAQ,GAC3BA;IAED;AACD,IAAAsI,GAAiB,SAAS;AAAA,EAC5B,SAAUF,GAAiB;AAC1B,SAAOG,GAAgB;AACtB,IAAAA,GAAgB,IAAG;AAEpB,EAAAE,KAAmB,IACnBK,GAAe,MAAK,GACpBf,GAAsBiB,CAAe;AACtC;AAGA,SAASC,GAAOC,GAAI;AACnB,MAAIA,EAAG,aAAa,MAAM;AACzB,IAAAA,EAAG,OAAM,GACTlK,GAAQkK,EAAG,aAAa;AACxB,UAAMvI,IAAQuI,EAAG;AACjB,IAAAA,EAAG,QAAQ,CAAC,EAAE,GACdA,EAAG,YAAYA,EAAG,SAAS,EAAEA,EAAG,KAAKvI,CAAK,GAC1CuI,EAAG,aAAa,QAAQL,EAAmB;AAAA,EAC3C;AACF;AAOO,SAASM,GAAuBlK,GAAK;AAC3C,QAAMmK,IAAW,CAAA,GACXC,IAAU,CAAA;AAChB,EAAAf,GAAiB,QAAQ,CAACgB,MAAOrK,EAAI,QAAQqK,CAAC,MAAM,KAAKF,EAAS,KAAKE,CAAC,IAAID,EAAQ,KAAKC,CAAC,CAAE,GAC5FD,EAAQ,QAAQ,CAACC,MAAMA,EAAG,CAAA,GAC1BhB,KAAmBc;AACpB;AC5HA,IAAIG;AAKJ,SAASC,KAAO;AACf,SAAKD,OACJA,KAAU,QAAQ,WAClBA,GAAQ,KAAK,MAAM;AAClB,IAAAA,KAAU;AAAA,EACb,CAAG,IAEKA;AACR;AAQA,SAASE,GAAS3G,GAAM4G,GAAWC,GAAM;AACxC,EAAA7G,EAAK,cAAc+C,GAAa,GAAG6D,IAAY,UAAU,OAAO,GAAGC,CAAI,EAAE,CAAC;AAC3E;AAEA,MAAMC,KAAW,oBAAI;AAKrB,IAAIC;AAIG,SAASC,KAAe;AAC9B,EAAAD,KAAS;AAAA,IACR,GAAG;AAAA,IACH,GAAG,CAAE;AAAA,IACL,GAAGA;AAAA;AAAA,EACL;AACA;AAIO,SAASE,KAAe;AAC9B,EAAKF,GAAO,KACX7K,GAAQ6K,GAAO,CAAC,GAEjBA,KAASA,GAAO;AACjB;AAOO,SAASG,EAAcC,GAAOC,GAAO;AAC3C,EAAID,KAASA,EAAM,MAClBL,GAAS,OAAOK,CAAK,GACrBA,EAAM,EAAEC,CAAK;AAEf;AASO,SAASC,EAAeF,GAAOC,GAAOtG,GAAQ5D,GAAU;AAC9D,MAAIiK,KAASA,EAAM,GAAG;AACrB,QAAIL,GAAS,IAAIK,CAAK;AAAG;AACzB,IAAAL,GAAS,IAAIK,CAAK,GAClBJ,GAAO,EAAE,KAAK,MAAM;AACnB,MAAAD,GAAS,OAAOK,CAAK,GACjBjK,MACC4D,KAAQqG,EAAM,EAAE,CAAC,GACrBjK;IAEJ,CAAG,GACDiK,EAAM,EAAEC,CAAK;AAAA,EACb;AAAM,IAAIlK,KACVA;AAEF;AAKA,MAAMoK,KAAkB,EAAE,UAAU;AAQ7B,SAASC,GAAqBvH,GAAMhE,GAAIwL,GAAQ;AAGtD,QAAM7F,IAAU,EAAE,WAAW;AAC7B,MAAI8F,IAASzL,EAAGgE,GAAMwH,GAAQ7F,CAAO,GACjC+F,IAAU,IACVC,GACAjI,GACAsE,IAAM;AAIV,WAAS4D,IAAU;AAClB,IAAID,KAAgBlD,GAAYzE,GAAM2H,CAAc;AAAA,EACpD;AAID,WAASE,IAAK;AACb,UAAM;AAAA,MACL,OAAA/D,IAAQ;AAAA,MACR,UAAAD,IAAW;AAAA,MACX,QAAAiE,IAASC;AAAAA,MACT,MAAAjC,IAAOtK;AAAA,MACP,KAAAwM;AAAA,IACH,IAAMP,KAAUH;AACd,IAAIU,MAAKL,IAAiB/D,GAAY5D,GAAM,GAAG,GAAG6D,GAAUC,GAAOgE,GAAQE,GAAKhE,GAAK,IACrF8B,EAAK,GAAG,CAAC;AACT,UAAMmC,IAAa5I,GAAK,IAAGyE,GACrBoE,IAAWD,IAAapE;AAC9B,IAAInE,KAAMA,EAAK,SACfgI,IAAU,IACV3B,GAAoB,MAAMY,GAAS3G,GAAM,IAAM,OAAO,CAAC,GACvDN,IAAOC,GAAK,CAACN,MAAQ;AACpB,UAAIqI,GAAS;AACZ,YAAIrI,KAAO6I;AACV,iBAAApC,EAAK,GAAG,CAAC,GACTa,GAAS3G,GAAM,IAAM,KAAK,GAC1B4H,KACQF,IAAU;AAEnB,YAAIrI,KAAO4I,GAAY;AACtB,gBAAM7D,IAAI0D,GAAQzI,IAAM4I,KAAcpE,CAAQ;AAC9C,UAAAiC,EAAK1B,GAAG,IAAIA,CAAC;AAAA,QACb;AAAA,MACD;AACD,aAAOsD;AAAA,IACV,CAAG;AAAA,EACD;AACD,MAAIS,IAAU;AACd,SAAO;AAAA,IACN,QAAQ;AACP,MAAIA,MACJA,IAAU,IACV1D,GAAYzE,CAAI,GACZ5D,GAAYqL,CAAM,KACrBA,IAASA,EAAO9F,CAAO,GACvB+E,GAAM,EAAC,KAAKmB,CAAE,KAEdA;IAED;AAAA,IACD,aAAa;AACZ,MAAAM,IAAU;AAAA,IACV;AAAA,IACD,MAAM;AACL,MAAIT,MACHE,KACAF,IAAU;AAAA,IAEX;AAAA,EACH;AACA;AAQO,SAASU,GAAsBpI,GAAMhE,GAAIwL,GAAQ;AAEvD,QAAM7F,IAAU,EAAE,WAAW;AAC7B,MAAI8F,IAASzL,EAAGgE,GAAMwH,GAAQ7F,CAAO,GACjC+F,IAAU,IACVC;AACJ,QAAMU,IAAQtB;AACd,EAAAsB,EAAM,KAAK;AAEX,MAAIC;AAIJ,WAAST,IAAK;AACb,UAAM;AAAA,MACL,OAAA/D,IAAQ;AAAA,MACR,UAAAD,IAAW;AAAA,MACX,QAAAiE,IAASC;AAAAA,MACT,MAAAjC,IAAOtK;AAAA,MACP,KAAAwM;AAAA,IACH,IAAMP,KAAUH;AAEd,IAAIU,MAAKL,IAAiB/D,GAAY5D,GAAM,GAAG,GAAG6D,GAAUC,GAAOgE,GAAQE,CAAG;AAE9E,UAAMC,IAAa5I,GAAK,IAAGyE,GACrBoE,IAAWD,IAAapE;AAC9B,IAAAkC,GAAoB,MAAMY,GAAS3G,GAAM,IAAO,OAAO,CAAC,GAEpD,WAAWA,MACdsI;AAAA,IAAmDtI,EAAM,OACzDA,EAAK,QAAQ,KAGdL,GAAK,CAACN,MAAQ;AACb,UAAIqI,GAAS;AACZ,YAAIrI,KAAO6I;AACV,iBAAApC,EAAK,GAAG,CAAC,GACTa,GAAS3G,GAAM,IAAO,KAAK,GACtB,EAAEqI,EAAM,KAGZnM,GAAQmM,EAAM,CAAC,GAET;AAER,YAAIhJ,KAAO4I,GAAY;AACtB,gBAAM7D,IAAI0D,GAAQzI,IAAM4I,KAAcpE,CAAQ;AAC9C,UAAAiC,EAAK,IAAI1B,GAAGA,CAAC;AAAA,QACb;AAAA,MACD;AACD,aAAOsD;AAAA,IACV,CAAG;AAAA,EACD;AAED,SAAItL,GAAYqL,CAAM,IACrBf,GAAI,EAAG,KAAK,MAAM;AAEjB,IAAAe,IAASA,EAAO9F,CAAO,GACvBkG;EACH,CAAG,IAEDA,KAGM;AAAA,IACN,IAAIU,GAAO;AACV,MAAIA,KAAS,WAAWvI,MACvBA,EAAK,QAAQsI,IAEVC,KAASd,EAAO,QACnBA,EAAO,KAAK,GAAG,CAAC,GAEbC,MACCC,KAAgBlD,GAAYzE,GAAM2H,CAAc,GACpDD,IAAU;AAAA,IAEX;AAAA,EACH;AACA;AASO,SAASc,GAAgCxI,GAAMhE,GAAIwL,GAAQiB,GAAO;AAIxE,MAAIhB,IAASzL,EAAGgE,GAAMwH,GADN,EAAE,WAAW,QACQ,GACjCpD,IAAIqE,IAAQ,IAAI,GAIhBC,IAAkB,MAIlBC,IAAkB,MAClBhB,IAAiB,MAGjBW;AAIJ,WAASM,IAAkB;AAC1B,IAAIjB,KAAgBlD,GAAYzE,GAAM2H,CAAc;AAAA,EACpD;AAOD,WAASkB,EAAKC,GAASjF,GAAU;AAChC,UAAMkF;AAAA;AAAA,MAAiCD,EAAQ,IAAI1E;AAAA;AACnD,WAAAP,KAAY,KAAK,IAAIkF,CAAC,GACf;AAAA,MACN,GAAG3E;AAAA,MACH,GAAG0E,EAAQ;AAAA,MACX,GAAAC;AAAA,MACA,UAAAlF;AAAA,MACA,OAAOiF,EAAQ;AAAA,MACf,KAAKA,EAAQ,QAAQjF;AAAA,MACrB,OAAOiF,EAAQ;AAAA,IAClB;AAAA,EACE;AAMD,WAASjB,EAAGrL,GAAG;AACd,UAAM;AAAA,MACL,OAAAsH,IAAQ;AAAA,MACR,UAAAD,IAAW;AAAA,MACX,QAAAiE,IAASC;AAAAA,MACT,MAAAjC,IAAOtK;AAAA,MACP,KAAAwM;AAAA,IACH,IAAMP,KAAUH,IAIRwB,IAAU;AAAA,MACf,OAAOzJ,GAAG,IAAKyE;AAAA,MACf,GAAAtH;AAAA,IACH;AAEE,IAAKA,MAEJsM,EAAQ,QAAQ/B,IAChBA,GAAO,KAAK,IAGT,WAAW/G,MACVxD,IACC8L,MAAyB,WAE5BtI,EAAK,QAAQsI,MAGdA;AAAA,IAAmDtI,EAAM,OACzDA,EAAK,QAAQ,MAIX0I,KAAmBC,IACtBA,IAAkBG,KAIdd,MACHY,KACAjB,IAAiB/D,GAAY5D,GAAMoE,GAAG5H,GAAGqH,GAAUC,GAAOgE,GAAQE,CAAG,IAElExL,KAAGsJ,EAAK,GAAG,CAAC,GAChB4C,IAAkBG,EAAKC,GAASjF,CAAQ,GACxCkC,GAAoB,MAAMY,GAAS3G,GAAMxD,GAAG,OAAO,CAAC,GACpDmD,GAAK,CAACN,MAAQ;AAkBb,UAjBIsJ,KAAmBtJ,IAAMsJ,EAAgB,UAC5CD,IAAkBG,EAAKF,GAAiB9E,CAAQ,GAChD8E,IAAkB,MAClBhC,GAAS3G,GAAM0I,EAAgB,GAAG,OAAO,GACrCV,MACHY,KACAjB,IAAiB/D;AAAA,QAChB5D;AAAA,QACAoE;AAAA,QACAsE,EAAgB;AAAA,QAChBA,EAAgB;AAAA,QAChB;AAAA,QACAZ;AAAA,QACAL,EAAO;AAAA,MACd,KAGQiB;AACH,YAAIrJ,KAAOqJ,EAAgB;AAC1B,UAAA5C,EAAM1B,IAAIsE,EAAgB,GAAI,IAAItE,CAAC,GACnCuC,GAAS3G,GAAM0I,EAAgB,GAAG,KAAK,GAClCC,MAEAD,EAAgB,IAEnBE,MAGK,EAAEF,EAAgB,MAAM,KAAGxM,GAAQwM,EAAgB,MAAM,CAAC,IAGjEA,IAAkB;AAAA,iBACRrJ,KAAOqJ,EAAgB,OAAO;AACxC,gBAAMvE,IAAI9E,IAAMqJ,EAAgB;AAChC,UAAAtE,IAAIsE,EAAgB,IAAIA,EAAgB,IAAIZ,EAAO3D,IAAIuE,EAAgB,QAAQ,GAC/E5C,EAAK1B,GAAG,IAAIA,CAAC;AAAA,QACb;AAAA;AAEF,aAAO,CAAC,EAAEsE,KAAmBC;AAAA,IACjC,CAAI;AAAA,EAEF;AACD,SAAO;AAAA,IACN,IAAInM,GAAG;AACN,MAAIJ,GAAYqL,CAAM,IACrBf,GAAI,EAAG,KAAK,MAAM;AAGjB,QAAAe,IAASA,EAFI,EAAE,WAAWjL,IAAI,OAAO,MAAK,CAEtB,GACpBqL,EAAGrL,CAAC;AAAA,MACT,CAAK,IAEDqL,EAAGrL,CAAC;AAAA,IAEL;AAAA,IACD,MAAM;AACL,MAAAoM,KACAF,IAAkBC,IAAkB;AAAA,IACpC;AAAA,EACH;AACA;ACzaO,SAASK,GAAkBC,GAAwB;AACzD,UAAOA,KAAA,gBAAAA,EAAwB,YAAW,SACvCA,IACA,MAAM,KAAKA,CAAsB;AACrC;AAKO,SAASC,GAAc/B,GAAOgC,GAAQ;AAC5C,EAAAhC,EAAM,EAAE,CAAC,GACTgC,EAAO,OAAOhC,EAAM,GAAG;AACxB;AAsBO,SAASiC,GACfC,GACAxL,GACAyL,GACAC,GACA/L,GACAgM,GACAL,GACAnJ,GACAyJ,GACAC,GACA/E,GACAgF,GACC;AACD,MAAIC,IAAIP,EAAW,QACfQ,IAAIL,EAAK,QACTvL,IAAI2L;AACR,QAAME,IAAc,CAAA;AACpB,SAAO7L;AAAK,IAAA6L,EAAYT,EAAWpL,CAAC,EAAE,GAAG,IAAIA;AAC7C,QAAM8L,IAAa,CAAA,GACbC,IAAa,oBAAI,OACjBC,IAAS,oBAAI,OACbC,IAAU,CAAA;AAEhB,OADAjM,IAAI4L,GACG5L,OAAK;AACX,UAAMkM,IAAYR,EAAYnM,GAAKgM,GAAMvL,CAAC,GACpCY,IAAMyK,EAAQa,CAAS;AAC7B,QAAIhD,IAAQgC,EAAO,IAAItK,CAAG;AAC1B,IAAKsI,IAGMoC,KAEVW,EAAQ,KAAK,MAAM/C,EAAM,EAAEgD,GAAWtM,CAAK,CAAC,KAJ5CsJ,IAAQuC,EAAkB7K,GAAKsL,CAAS,GACxChD,EAAM,EAAC,IAKR6C,EAAW,IAAInL,GAAMkL,EAAW9L,CAAC,IAAIkJ,IACjCtI,KAAOiL,KAAaG,EAAO,IAAIpL,GAAK,KAAK,IAAIZ,IAAI6L,EAAYjL,CAAG,CAAC,CAAC;AAAA,EACtE;AACD,QAAMuL,IAAY,oBAAI,OAChBC,IAAW,oBAAI;AAErB,WAASzJ,EAAOuG,GAAO;AACtB,IAAAD,EAAcC,GAAO,CAAC,GACtBA,EAAM,EAAEnH,GAAM2E,CAAI,GAClBwE,EAAO,IAAIhC,EAAM,KAAKA,CAAK,GAC3BxC,IAAOwC,EAAM,OACb0C;AAAA,EACA;AACD,SAAOD,KAAKC,KAAG;AACd,UAAMS,IAAYP,EAAWF,IAAI,CAAC,GAC5BU,IAAYlB,EAAWO,IAAI,CAAC,GAC5BY,IAAUF,EAAU,KACpBG,IAAUF,EAAU;AAC1B,IAAID,MAAcC,KAEjB5F,IAAO2F,EAAU,OACjBV,KACAC,OACWG,EAAW,IAAIS,CAAO,IAIvB,CAACtB,EAAO,IAAIqB,CAAO,KAAKJ,EAAU,IAAII,CAAO,IACvD5J,EAAO0J,CAAS,IACND,EAAS,IAAII,CAAO,IAC9Bb,MACUK,EAAO,IAAIO,CAAO,IAAIP,EAAO,IAAIQ,CAAO,KAClDJ,EAAS,IAAIG,CAAO,GACpB5J,EAAO0J,CAAS,MAEhBF,EAAU,IAAIK,CAAO,GACrBb,QAXAH,EAAQc,GAAWpB,CAAM,GACzBS;AAAA,EAYD;AACD,SAAOA,OAAK;AACX,UAAMW,IAAYlB,EAAWO,CAAC;AAC9B,IAAKI,EAAW,IAAIO,EAAU,GAAG,KAAGd,EAAQc,GAAWpB,CAAM;AAAA,EAC7D;AACD,SAAOU;AAAG,IAAAjJ,EAAOmJ,EAAWF,IAAI,CAAC,CAAC;AAClC,SAAA3N,GAAQgO,CAAO,GACRH;AACR;ACzFO,SAASW,GAAiBvD,GAAO;AACvC,EAAAA,KAASA,EAAM;AAChB;AAQO,SAASwD,GAAgBtN,GAAW0C,GAAQc,GAAQ;AAC1D,QAAM,EAAE,UAAA+J,GAAU,cAAAC,MAAiBxN,EAAU;AAC7C,EAAAuN,KAAYA,EAAS,EAAE7K,GAAQc,CAAM,GAErCkF,GAAoB,MAAM;AACzB,UAAM+E,IAAiBzN,EAAU,GAAG,SAAS,IAAItB,EAAG,EAAE,OAAOK,EAAW;AAIxE,IAAIiB,EAAU,GAAG,aAChBA,EAAU,GAAG,WAAW,KAAK,GAAGyN,CAAc,IAI9C5O,GAAQ4O,CAAc,GAEvBzN,EAAU,GAAG,WAAW;EAC1B,CAAE,GACDwN,EAAa,QAAQ9E,EAAmB;AACzC;AAGO,SAASgF,GAAkB1N,GAAW4D,GAAW;AACvD,QAAMmF,IAAK/I,EAAU;AACrB,EAAI+I,EAAG,aAAa,SACnBC,GAAuBD,EAAG,YAAY,GACtClK,GAAQkK,EAAG,UAAU,GACrBA,EAAG,YAAYA,EAAG,SAAS,EAAEnF,CAAS,GAGtCmF,EAAG,aAAaA,EAAG,WAAW,MAC9BA,EAAG,MAAM;AAEX;AAGA,SAAS4E,GAAW3N,GAAWY,GAAG;AACjC,EAAIZ,EAAU,GAAG,MAAM,CAAC,MAAM,OAC7BiI,GAAiB,KAAKjI,CAAS,GAC/BuI,MACAvI,EAAU,GAAG,MAAM,KAAK,CAAC,IAE1BA,EAAU,GAAG,MAAOY,IAAI,KAAM,CAAC,KAAK,KAAKA,IAAI;AAC9C;AAaO,SAAS4K,GACfxL,GACAsE,GACAsJ,GACAC,GACAC,GACAC,GACAnL,IAAgB,MAChBpC,IAAQ,CAAC,EAAE,GACV;AACD,QAAMwN,IAAmBrG;AACzB,EAAAC,GAAsB5H,CAAS;AAE/B,QAAM+I,IAAM/I,EAAU,KAAK;AAAA,IAC1B,UAAU;AAAA,IACV,KAAK,CAAE;AAAA;AAAA,IAEP,OAAA+N;AAAA,IACA,QAAQ5P;AAAA,IACR,WAAA2P;AAAA,IACA,OAAOlP,GAAc;AAAA;AAAA,IAErB,UAAU,CAAE;AAAA,IACZ,YAAY,CAAE;AAAA,IACd,eAAe,CAAE;AAAA,IACjB,eAAe,CAAE;AAAA,IACjB,cAAc,CAAE;AAAA,IAChB,SAAS,IAAI,IAAI0F,EAAQ,YAAY0J,IAAmBA,EAAiB,GAAG,UAAU,CAAA,EAAG;AAAA;AAAA,IAEzF,WAAWpP,GAAc;AAAA,IACzB,OAAA4B;AAAA,IACA,YAAY;AAAA,IACZ,MAAM8D,EAAQ,UAAU0J,EAAiB,GAAG;AAAA,EAC9C;AACC,EAAApL,KAAiBA,EAAcmG,EAAG,IAAI;AACtC,MAAIkF,IAAQ;AAgBZ,MAfAlF,EAAG,MAAM6E,IACNA,EAAS5N,GAAWsE,EAAQ,SAAS,CAAE,GAAE,CAAC1D,GAAGsN,MAAQC,MAAS;AAC9D,UAAMzM,IAAQyM,EAAK,SAASA,EAAK,CAAC,IAAID;AACtC,WAAInF,EAAG,OAAO+E,EAAU/E,EAAG,IAAInI,CAAC,GAAImI,EAAG,IAAInI,CAAC,IAAIc,CAAK,MAChD,CAACqH,EAAG,cAAcA,EAAG,MAAMnI,CAAC,KAAGmI,EAAG,MAAMnI,CAAC,EAAEc,CAAK,GAChDuM,KAAON,GAAW3N,GAAWY,CAAC,IAE5BsN;AAAA,EACX,CAAK,IACD,IACHnF,EAAG,OAAM,GACTkF,IAAQ,IACRpP,GAAQkK,EAAG,aAAa,GAExBA,EAAG,WAAW8E,IAAkBA,EAAgB9E,EAAG,GAAG,IAAI,IACtDzE,EAAQ,QAAQ;AACnB,QAAIA,EAAQ,SAAS;AAIpB,YAAM8J,IAAQvJ,GAASP,EAAQ,MAAM;AACrC,MAAAyE,EAAG,YAAYA,EAAG,SAAS,EAAEqF,CAAK,GAClCA,EAAM,QAAQ3K,CAAM;AAAA,IACvB;AAEG,MAAAsF,EAAG,YAAYA,EAAG,SAAS,EAAC;AAE7B,IAAIzE,EAAQ,SAAOuF,EAAc7J,EAAU,GAAG,QAAQ,GACtDsN,GAAgBtN,GAAWsE,EAAQ,QAAQA,EAAQ,MAAM,GAEzDkE;EACA;AACD,EAAAZ,GAAsBoG,CAAgB;AACvC;AAEO,IAAIK;AAEP,OAAO,eAAgB,eAC1BA,KAAgB,cAAc,YAAY;AAAA,EAoBzC,YAAYC,GAAiBC,GAASC,GAAgB;AACrD;AAnBD;AAAA,IAAAC,GAAA;AAEA;AAAA,IAAAA,GAAA;AAEA;AAAA,IAAAA,GAAA;AAEA;AAAA,IAAAA,GAAA,cAAO;AAEP;AAAA,IAAAA,GAAA,aAAM,CAAA;AAEN;AAAA,IAAAA,GAAA,aAAM;AAEN;AAAA,IAAAA,GAAA,eAAQ,CAAA;AAER;AAAA,IAAAA,GAAA,aAAM,CAAA;AAEN;AAAA,IAAAA,GAAA,eAAQ,oBAAI;AAIX,SAAK,SAASH,GACd,KAAK,MAAMC,GACPC,KACH,KAAK,aAAa,EAAE,MAAM,OAAQ,CAAA;AAAA,EAEnC;AAAA,EAED,iBAAiB7I,GAAM+I,GAAUpK,GAAS;AAMzC,QAFA,KAAK,IAAIqB,CAAI,IAAI,KAAK,IAAIA,CAAI,KAAK,IACnC,KAAK,IAAIA,CAAI,EAAE,KAAK+I,CAAQ,GACxB,KAAK,KAAK;AACb,YAAM5O,IAAQ,KAAK,IAAI,IAAI6F,GAAM+I,CAAQ;AACzC,WAAK,MAAM,IAAIA,GAAU5O,CAAK;AAAA,IAC9B;AACD,UAAM,iBAAiB6F,GAAM+I,GAAUpK,CAAO;AAAA,EAC9C;AAAA,EAED,oBAAoBqB,GAAM+I,GAAUpK,GAAS;AAE5C,QADA,MAAM,oBAAoBqB,GAAM+I,GAAUpK,CAAO,GAC7C,KAAK,KAAK;AACb,YAAMxE,IAAQ,KAAK,MAAM,IAAI4O,CAAQ;AACrC,MAAI5O,MACHA,KACA,KAAK,MAAM,OAAO4O,CAAQ;AAAA,IAE3B;AAAA,EACD;AAAA,EAED,MAAM,oBAAoB;AAEzB,QADA,KAAK,OAAO,IACR,CAAC,KAAK,KAAK;AAMd,UAASzO,IAAT,SAAqB4D,GAAM;AAC1B,eAAO,MAAM;AACZ,cAAIlB;AAqBJ,iBApBY;AAAA,YACX,GAAG,WAAkB;AACpB,cAAAA,IAAOO,EAAQ,MAAM,GACjBW,MAAS,aACZW,EAAK7B,GAAM,QAAQkB,CAAI;AAAA,YAExB;AAAA;AAAA;AAAA;AAAA;AAAA,YAKD,GAAG,SAAenB,GAAQc,GAAQ;AACjC,cAAAD,EAAOb,GAAQC,GAAMa,CAAM;AAAA,YAC3B;AAAA,YACD,GAAG,SAAiBI,GAAW;AAC9B,cAAIA,KACHH,EAAOd,CAAI;AAAA,YAEZ;AAAA,UACR;AAAA,QAEA;AAAA,MACK;AA5BD,UADA,MAAM,QAAQ,WACV,CAAC,KAAK,QAAQ,KAAK;AACtB;AA4BD,YAAM4L,IAAU,CAAA,GACVI,IAAiB5I,GAA0B,IAAI;AACrD,iBAAWlC,KAAQ,KAAK;AACvB,QAAIA,KAAQ8K,MACXJ,EAAQ1K,CAAI,IAAI,CAAC5D,EAAY4D,CAAI,CAAC;AAGpC,iBAAWY,KAAa,KAAK,YAAY;AAExC,cAAMZ,IAAO,KAAK,MAAMY,EAAU,IAAI;AACtC,QAAMZ,KAAQ,KAAK,QAClB,KAAK,IAAIA,CAAI,IAAI+K,GAAyB/K,GAAMY,EAAU,OAAO,KAAK,OAAO,QAAQ;AAAA,MAEtF;AAED,iBAAWjD,KAAO,KAAK;AACtB,QAAI,EAAEA,KAAO,KAAK,QAAQ,KAAKA,CAAG,MAAM,WACvC,KAAK,IAAIA,CAAG,IAAI,KAAKA,CAAG,GACxB,OAAO,KAAKA,CAAG;AAGjB,WAAK,MAAM,IAAI,KAAK,OAAO;AAAA,QAC1B,QAAQ,KAAK,cAAc;AAAA,QAC3B,OAAO;AAAA,UACN,GAAG,KAAK;AAAA,UACR,SAAA+M;AAAA,UACA,SAAS;AAAA,YACR,KAAK,CAAE;AAAA,UACP;AAAA,QACD;AAAA,MACN,CAAK;AAGD,YAAMM,IAAqB,MAAM;AAChC,aAAK,MAAM;AACX,mBAAWrN,KAAO,KAAK;AAEtB,cADA,KAAK,IAAIA,CAAG,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,MAAMA,CAAG,CAAC,GAClD,KAAK,MAAMA,CAAG,EAAE,SAAS;AAC5B,kBAAMsN,IAAkBF;AAAA,cACvBpN;AAAA,cACA,KAAK,IAAIA,CAAG;AAAA,cACZ,KAAK;AAAA,cACL;AAAA,YACR;AACO,YAAIsN,KAAmB,OACtB,KAAK,gBAAgB,KAAK,MAAMtN,CAAG,EAAE,aAAaA,CAAG,IAErD,KAAK,aAAa,KAAK,MAAMA,CAAG,EAAE,aAAaA,GAAKsN,CAAe;AAAA,UAEpE;AAEF,aAAK,MAAM;AAAA,MAChB;AACI,WAAK,IAAI,GAAG,aAAa,KAAKD,CAAkB,GAChDA;AAEA,iBAAWlJ,KAAQ,KAAK;AACvB,mBAAW+I,KAAY,KAAK,IAAI/I,CAAI,GAAG;AACtC,gBAAM7F,IAAQ,KAAK,IAAI,IAAI6F,GAAM+I,CAAQ;AACzC,eAAK,MAAM,IAAIA,GAAU5O,CAAK;AAAA,QAC9B;AAEF,WAAK,MAAM;IACX;AAAA,EACD;AAAA;AAAA;AAAA,EAID,yBAAyB0E,GAAMuK,GAAWC,GAAU;AVtUtD,QAAAC;AUuUG,IAAI,KAAK,QACTzK,IAAO,KAAK,MAAMA,CAAI,GACtB,KAAK,IAAIA,CAAI,IAAIoK,GAAyBpK,GAAMwK,GAAU,KAAK,OAAO,QAAQ,IAC9EC,IAAA,KAAK,QAAL,QAAAA,EAAU,KAAK,EAAE,CAACzK,CAAI,GAAG,KAAK,IAAIA,CAAI,EAAC;AAAA,EACvC;AAAA,EAED,uBAAuB;AACtB,SAAK,OAAO,IAEZ,QAAQ,UAAU,KAAK,MAAM;AAC5B,MAAK,KAAK,SACT,KAAK,IAAI,YACT,KAAK,MAAM;AAAA,IAEhB,CAAI;AAAA,EACD;AAAA,EAED,MAAM0K,GAAgB;AACrB,WACC,OAAO,KAAK,KAAK,KAAK,EAAE;AAAA,MACvB,CAAC1N,MACA,KAAK,MAAMA,CAAG,EAAE,cAAc0N,KAC7B,CAAC,KAAK,MAAM1N,CAAG,EAAE,aAAaA,EAAI,YAAa,MAAK0N;AAAA,IAC3D,KAASA;AAAA,EAEN;AACH;AASA,SAASN,GAAyBjK,GAAMjD,GAAOyN,GAAkBC,GAAW;AV1W5E,MAAAH;AU2WC,QAAMtJ,KAAOsJ,IAAAE,EAAiBxK,CAAI,MAArB,gBAAAsK,EAAwB;AAErC,MADAvN,IAAQiE,MAAS,aAAa,OAAOjE,KAAU,YAAYA,KAAS,OAAOA,GACvE,CAAC0N,KAAa,CAACD,EAAiBxK,CAAI;AACvC,WAAOjD;AACD,MAAI0N,MAAc;AACxB,YAAQzJ,GAAI;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AACJ,eAAOjE,KAAS,OAAO,OAAO,KAAK,UAAUA,CAAK;AAAA,MACnD,KAAK;AACJ,eAAOA,IAAQ,KAAK;AAAA,MACrB,KAAK;AACJ,eAAOA,KAAgB;AAAA,MACxB;AACC,eAAOA;AAAA,IACR;AAAA;AAED,YAAQiE,GAAI;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AACJ,eAAOjE,KAAS,KAAK,MAAMA,CAAK;AAAA,MACjC,KAAK;AACJ,eAAOA;AAAA,MACR,KAAK;AACJ,eAAOA,KAAS,OAAO,CAACA,IAAQA;AAAA,MACjC;AACC,eAAOA;AAAA,IACR;AAEH;AAaO,SAAS2N,GACfC,GACAH,GACA7N,GACAiO,GACAf,GACAgB,GACC;AACD,MAAIC,IAAQ,cAAcpB,GAAc;AAAA,IACvC,cAAc;AACb,YAAMiB,GAAWhO,GAAOkN,CAAc,GACtC,KAAK,QAAQW;AAAA,IACb;AAAA,IACD,WAAW,qBAAqB;AAC/B,aAAO,OAAO,KAAKA,CAAgB,EAAE;AAAA,QAAI,CAAC3N,OACxC2N,EAAiB3N,CAAG,EAAE,aAAaA,GAAK,YAAa;AAAA,MAC1D;AAAA,IACG;AAAA,EACH;AACC,gBAAO,KAAK2N,CAAgB,EAAE,QAAQ,CAACxK,MAAS;AAC/C,WAAO,eAAe8K,EAAM,WAAW9K,GAAM;AAAA,MAC5C,MAAM;AACL,eAAO,KAAK,OAAOA,KAAQ,KAAK,MAAM,KAAK,IAAIA,CAAI,IAAI,KAAK,IAAIA,CAAI;AAAA,MACpE;AAAA,MACD,IAAIjD,GAAO;AV7ad,YAAAuN;AU8aI,QAAAvN,IAAQkN,GAAyBjK,GAAMjD,GAAOyN,CAAgB,GAC9D,KAAK,IAAIxK,CAAI,IAAIjD,IACjBuN,IAAA,KAAK,QAAL,QAAAA,EAAU,KAAK,EAAE,CAACtK,CAAI,GAAGjD,EAAK;AAAA,MAC9B;AAAA,IACJ,CAAG;AAAA,EACH,CAAE,GACD6N,EAAU,QAAQ,CAACG,MAAa;AAC/B,WAAO,eAAeD,EAAM,WAAWC,GAAU;AAAA,MAChD,MAAM;AVtbT,YAAAT;AUubI,gBAAOA,IAAA,KAAK,QAAL,gBAAAA,EAAWS;AAAA,MAClB;AAAA,IACJ,CAAG;AAAA,EACH,CAAE,GACGF,MAEHC,IAAQD,EAAOC,CAAK,IAErBH,EAAU;AAAA,EAA8BG,GACjCA;AACR;AAQO,MAAME,GAAgB;AAAA,EAAtB;AAQN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAlB,GAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,GAAA;AAAA;AAAA;AAAA,EAGA,WAAW;AACV,IAAAf,GAAkB,MAAM,CAAC,GACzB,KAAK,WAAWvP;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQD,IAAIwH,GAAM9F,GAAU;AACnB,QAAI,CAACd,GAAYc,CAAQ;AACxB,aAAO1B;AAER,UAAMyB,IAAY,KAAK,GAAG,UAAU+F,CAAI,MAAM,KAAK,GAAG,UAAUA,CAAI,IAAI,CAAE;AAC1E,WAAA/F,EAAU,KAAKC,CAAQ,GAChB,MAAM;AACZ,YAAM+P,IAAQhQ,EAAU,QAAQC,CAAQ;AACxC,MAAI+P,MAAU,MAAIhQ,EAAU,OAAOgQ,GAAO,CAAC;AAAA,IAC9C;AAAA,EACE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,KAAK7B,GAAO;AACX,IAAI,KAAK,SAAS,CAACvO,GAASuO,CAAK,MAChC,KAAK,GAAG,aAAa,IACrB,KAAK,MAAMA,CAAK,GAChB,KAAK,GAAG,aAAa;AAAA,EAEtB;AACF;ACrfO,MAAM8B,KAAiB;ACP1B,OAAO,SAAW,QAEpB,OAAO,aAAa,OAAO,WAAW,EAAE,GAAG,oBAAI,IAAK,EAAA,IAAK,EAAE,IAAIA,EAAc;;;;;;;ACwB/E,MAAMC,KAA6C;AAAA,EACjD,GAAK;AAAA,EACL,GAAK;AAAA,EACL,GAAK;AAAA,EACL,GAAK;AAAA,EACL,GAAK;AAAA,EACL,GAAK;AAAA,EACL,GAAK;AAAA,EACL,GAAK;AAAA,EACL,GAAK;AAAA,EACL,GAAK;AAAA,EACL,IAAM;AAAA,EACN,MAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,IAAM;AAAA,EACN,GAAK;AAAA,EACL,GAAK;AAAA,EACL,GAAK;AAAA,EACL,IAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT;AAKA,SAASC,GAAeC,GAAwB;AAC9C,SAAKA,IACA,OAAO,UAAU,CAACA,CAAI,IAGpBF,GAAYE,CAAI,KAAK,SAFnBA,IAFS;AAKpB;AAcO,SAASC,GACdC,GACAC,GACAC,GACAC,GACA;AACA,SAAAH,IAAKH,GAAeG,CAAE,GACtBE,IAAKL,GAAeK,CAAE,GACtBC,IAAKN,GAAeM,CAAE,GACtBF,IAAKJ,GAAeI,CAAE,GACf;AAAA,IACLD,KAAMA,MAAO,UAAU,8BAA8BA,CAAE,QAAQ;AAAA,IAC/DC,KAAMA,MAAO,UAAU,gCAAgCA,CAAE,QAAQ;AAAA,IACjEC,KAAMA,MAAO,UAAU,iCAAiCA,CAAE,QAAQ;AAAA,IAClEC,KAAMA,MAAO,UAAU,+BAA+BA,CAAE,QAAQ;AAAA,EAAA,EAChE,KAAK,GAAG;AACZ;AAEO,SAASC,GACdC,GACAC,GACA7F,GACA8F,GACA;AACA,MAAI,CAACF;AAAI;AACH,QAAAtN,IAAQ,SAAS,cAAc,OAAO,GACtCyN,IAAO,OAAO,QAAQ/F,CAAG,EAC5B,IAAI,CAACgG,MAAU,GAAGA,EAAM,CAAC,CAAC,KAAKA,EAAM,CAAC,CAAC,GAAG,EAC1C,KAAK,GAAG;AACX,EAAIF,IACFxN,EAAM,YAAY,WAAWwN,CAAK,OAAOD,CAAY,KAAKE,CAAI,QAE9DzN,EAAM,YAAY,GAAGuN,CAAY,KAAKE,CAAI,KAE5CH,EAAG,YAAYtN,CAAK;AACtB;AC/GO,SAAS2N,GAAUlP,GAAwB;AAEhD,SAAIA,MAAU,UACL,KAILA,MAAU,KACL,KAEF,CAAC,CAACA;AACX;AAEO,SAASmP,GAAYnP,GAAwB;AAClD,SAAOA,IAAQ,SAAS;AAC1B;AAEO,SAASoP,GAAYpF,GAAkB;AAC5C,SAAO,CAAC,MAAMA,EAAE,QAAS,CAAA;AAC3B;AAEgB,SAAAqF,GAAiBC,GAAuBjD,GAAgC;AACtF,SAAO,QAAQA,CAAK,EAAE,QAAQ,CAAQpJ,MAAA;AAChC,IAACA,EAAK,CAAC,KACT,QAAQ,KAAK,GAAGqM,CAAa,KAAKrM,EAAK,CAAC,CAAC,cAAc;AAAA,EACzD,CACD;AACH;AAGO,SAASsM,GACdC,GACAC,GACAC,IAAW,IACiC;AAarC,SAAA,CAACD,GAZU,CAACzP,MAA+B;AAC5C,QAAA,GAAC0P,KAAY,CAAC1P,IAGd;AAAA,UAAA0P,KAAY,CAAC1P,GAAO;AACtB,gBAAQ,MAAM,IAAIA,CAAK,mBAAmBwP,EAAQ,aAAa,EAAE;AACjE;AAAA,MACF;AACA,MAAKC,EAAO,SAASzP,KAAS,EAAE,KAC9B,QAAQ,MAAM,IAAIA,CAAK,mBAAmBwP,EAAQ,aAAa,EAAE;AAAA;AAAA,EACnE,CAEuB;AAC3B;AAEO,SAASG,GAAaC,GAAY;AACvC,QAAMC,IAAS;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GAEIvP,IAAMsP,KAAO,oBAAI,QACjBE,IAASxP,EAAI,YACbyP,IAAOzP,EAAI,cAEX0P,IAAO1P,EAAI,WACX2P,IAAQJ,EAAOvP,EAAI,SAAU,CAAA,GAC7B4P,IAAO5P,EAAI,eACX6P,IAAQL,MAAW,KAAK,MAAQA,IAAS,MAAMA,IAAS,MAAOA,GAC/DM,IAAYN,MAAW,KAAK,QAAUA,KAAU,MAAM,QAAS,MAC/DO,IAAON,IAAO,MAAM,IAAIA,CAAI,MAAOA,GACnCO,IACHN,IAAO,OAAO,KAAKA,MAAS,MAAM,QAClCA,IAAO,OAAO,KAAKA,MAAS,MAAM,QAClCA,IAAO,OAAO,KAAKA,MAAS,MAAM,QACnC;AAEF,SAAO,GAAGC,CAAK,IAAID,CAAI,GAAGM,CAAO,IAAIJ,CAAI,KAAKC,CAAI,IAAIE,CAAG,IAAID,CAAQ;AACvE;AAEgB,SAAAG,GAAOpO,GAAcnC,GAAgC;AACnE,SAAOA,IAAQ,GAAGmC,CAAI,KAAKnC,CAAK,MAAM;AACxC;AAEgB,SAAAwQ,GAAUC,GAAcC,GAAe;AACrD,SAAIA,MAAU,IAAUD,IACjB,GAAGA,CAAI;AAChB;AAEgB,SAAAE,GAAM3Q,GAAeqQ,GAAaO,GAAqB;AACrE,SAAO5Q,IAAQ4Q,IACXA,IACA5Q,IAAQqQ,IACNA,IACArQ;AACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCX6CvB,EAAO,CAAA;AAAA,MAAA;;QAEdA,EAAa,CAAA;AAAA,MAAA,0GAThCuE,EAAA6N,GAAA,aAAAC;AAAA,MAAArS,EAAA,CAAA,IACP,uCACA,sCAAsC;MAIhBA,EAAW,CAAA,IAAA,iBAAA;MACnBA,EAAM,CAAA,CAAA,UAAA,oGAKKqF;AAAA,QAAAiN;AAAA,QAAA;AAAA;AAAA,QAAAtS,MAA4B;AAAA,MAAM;MApB7CA,EAAW,CAAA,CAAA,EAAA,IAAA,iBAAA;MAHpBA,EAAM,EAAA,oCAJdqE,EAAAkO,GAAA,SAAAC,IAAA1C;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;;;;QAExBA,EAAM,CAAA;AAAA,MAAA;AAAA;;AAHrB,MAAAoD,EAsCKb,GAAAgQ,GAAAlP,CAAA,GAjCHf,EAgCSiQ,GAAAE,CAAA,GA9BPnQ,EA0BSmQ,GAAAC,CAAA,GAnBPpQ,EAKWoQ,GAAAN,CAAA,YACX9P,EAYKoQ,GAAAC,CAAA,GAXHrQ,EAGAqQ,GAAAC,CAAA,qBACAtQ,EAAkDqQ,GAAAE,CAAA,qBAClDvQ,EAKKqQ,GAAAL,CAAA,yCAGThQ,EAEKmQ,GAAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AApBU,OAAA,CAAAC,KAAA1S;AAAA,MAAA,OAAAgS,OAAAA;AAAA,MAAArS,EAAA,CAAA,IACP,uCACA;;;;QAKiCA,EAAO,CAAA;AAAA,MAAA;;MADlBA,EAAW,CAAA,IAAA;;MACnBA,EAAM,CAAA,CAAA;;;;QAEMA,EAAa,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;eAGdqF;AAAA,QAAAiN;AAAA,QAAA;AAAA;AAAA,QAAAtS,MAA4B;AAAA,MAAM;;MApB7CA,EAAW,CAAA,CAAA,EAAA,IAAA;;;;;;;;;;;;;;;;;;;;MAHpBA,EAAM,EAAA,KAJd,CAAA+S,KAAA1S;AAAA,MAAA,OAAAmS,OAAAA,IAAA1C;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;;QAExBA,EAAM,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;AAtDZ,QAAA,CAAAgT,GAAcC,CAAmB,IAAInC,GAC1C,0BAAA,CACC,SAAS,QAAQ,CAAA;QAMT,MAAAoC,IAAe,QAAA,IAAAC,KACf,SAAAC,IAAkB,GAAA,IAAAD,KAClB,eAAAE,IAAwB,GAAA,IAAAF,KACxB,aAAAG,IAA2B,QAAA,IAAAH,KAC3B,QAAAI,IAAiB,GAAA,IAAAJ,KACjB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,GAIrBK,IAAqB,IACrBC,GACAC,IAAA,CAAA;AAQJ,EAAA/L,GAAA,MAAA;AACE,IAAAiJ,GAAiB,gBAAkB,EAAA,SAAAwC,EAAA,CAAA,GACnCH,EAAoBK,CAAW,SAC/BI,IAA8BC,EAAA,CAAA;AAAA;AAGvB,WAAAA,IAAA;AACH,QAAAF,GAAA;YACI9S,IAAO8S,EAAS,cAAc,MAAM;AACtC,aAAA9S,IACKA,EAAK,qBAGD,CAAA,GAAA8S,EAAS,QAAQ;AAAA;;;;;AA4BA,MAAAA,IAAQG;;;AAXjB,QAAAC,IAAA,MAAAC,EAAA,GAAAN,IAAY,EAAI,GACjBO,IAAA,MAAAD,EAAA,GAAAN,IAAY,EAAK,GACpBQ,IAAA,MAAAF,EAAA,GAAAN,IAAY,EAAK,GAClBS,IAAA,MAAAH,EAAA,GAAAN,IAAY,EAAK;;;;;YArClCM,EAAA,IAAAI,IAASzD,GAAUyC,CAAI,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxCrB,MAAMiB,KAAY,KACZC,KAAY;;;;;;;;;;;;IC6HZpU,EAAO,CAAA,KAAAqU,GAAArU,CAAA;AAAA;;;mKAFkCsU,EAAW,KAAAjQ,EAAAkQ,GAAA,OAAAC,CAAA,yFACVC,EAAY,KAAApQ,EAAAqQ,GAAA,OAAAC,CAAA;;;AAF7D,MAAAvR,EAMKb,GAAAqS,GAAAvR,CAAA,GALHf,EAA4DsS,GAAAL,CAAA,YAC5DjS,EAA8DsS,GAAAF,CAAA;;;;MACzD1U,EAAO,CAAA;;;;;;;;;;IARPA,EAAO,CAAA,KAAA6U,GAAA7U,CAAA;AAAA;;;iKAFkCsU,EAAW,KAAAjQ,EAAAkQ,GAAA,OAAAC,CAAA,yFACVC,EAAY,KAAApQ,EAAAqQ,GAAA,OAAAC,CAAA;;;;QAFpD3U,EAAG,CAAA;AAAA,MAAA;;;AAAZ,MAAAoD,EAMGb,GAAAxD,GAAAsE,CAAA,GALDf,EAA4DvD,GAAAwV,CAAA,YAC5DjS,EAA8DvD,GAAA2V,CAAA;;;;MACzD1U,EAAO,CAAA;;;;;QAHLA,EAAG,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;QAYiCA,EAAO,CAAA;AAAA,MAAA;;;AAAhD,MAAAoD,EAAuDb,GAAAuS,GAAAzR,CAAA;;;;;;;QAAdrD,EAAO,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;QARPA,EAAO,CAAA;AAAA,MAAA;;;AAAhD,MAAAoD,EAAuDb,GAAAuS,GAAAzR,CAAA;;;;;;;QAAdrD,EAAO,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;6BAmBpD,OACO;MACGA,EAAS,CAAA,IAAG,eAAe,cAAc;;;AANnD,MAAAoD,EASQb,GAAAwS,GAAA1R,CAAA,YAJDf,EAGJyS,GAAA3C,CAAA;;;;QAPSpS,EAAU,EAAA;AAAA,MAAA;;;;;MAKZA,EAAS,CAAA,IAAG,eAAe;;;;;;;;;;IAiC9BA,EAAS,CAAA,KAAAgV,GAAAhV,CAAA;AAAA;;;iEARZ,OACO;MACGA,EAAS,CAAA,IAAG,eAAe,cAAc;;;;QAjB/CA,EAAS,CAAA;AAAA,MAAA;;;AAFjB,MAAAoD,EA8Bab,GAAA0S,GAAA5R,CAAA,GAlBXf,EAWK2S,GAAAL,CAAA,GAVHtS,EASQsS,GAAAG,CAAA,YAJDzS,EAGJyS,GAAA3C,CAAA;;;;;UAPSpS,EAAU,EAAA;AAAA,QAAA;AAAA;;;;UAJbA,EAAQ,EAAA;AAAA,QAAA;AAAA;;;;;MASPA,EAAS,CAAA,IAAG,eAAe;MAMlCA,EAAS,CAAA;;;;;;;;QAvBRA,EAAS,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBb,MAAAoD,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWT,MAAAD,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKL,MAAAD,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAlFFrD,EAAG,CAAA,IAAAkV;;;0BAmBHC;AAAA;AAAA,IAAAnV;IAAmBA,EAAO,EAAA,KAAAoV,GAAApV,CAAA;AAAA,KAc1BqV;AAAA;AAAA,IAAArV;IAAmBA,EAAO,CAAA,KAAAsV,GAAAtV,CAAA;AAAA;EAuCzBA,EAAS,CAAA;AAAA,GAAKA,EAAO,EAAA;AAAA,EAAIA,EAAO,CAAA,MAAAuV,GAAAvV,CAAA;;KAOhCA,EAAS,CAAA;AAAA,IAAIA,EAAO,EAAA;AAAA,IAAKA,EAAQ,CAAA,MAAAwV,GAAAxV,CAAA;AAAA;;;;;;;QAxF5BA,EAAM,CAAA;AAAA,MAAA,GACYqE,EAAAsO,GAAA,SAAA8C,IAAA;AAAA,MAAAzV,QAAmB,MAAM,EAAA;;;;QACvCA,EAAS,CAAA;AAAA,MAAA;;;;QACZA,EAAO,EAAA;AAAA,MAAA;;;;QACPA,EAAO,CAAA;AAAA,MAAA;;;;QACNA,EAAQ,CAAA;AAAA,MAAA;AAAA;;AAPzB,MAAAoD,EAgGKb,GAAAoQ,GAAAtP,CAAA,GAvFHf,EAsFKqQ,GAAAL,CAAA;;;;;;;;;MAjEEtS;MAAmBA,EAAO,EAAA;MAc1BA;MAAmBA,EAAO,CAAA;;;;MAuCzBA,EAAS,CAAA;AAAA,OAAKA,EAAO,EAAA;AAAA,MAAIA,EAAO,CAAA;;;;MAOhCA,EAAS,CAAA;AAAA,MAAIA,EAAO,EAAA;AAAA,MAAKA,EAAQ,CAAA;;;;;;;;QAxF5BA,EAAM,CAAA;AAAA,MAAA,IACY,CAAA+S,KAAA1S;AAAA,MAAA,KAAAoV,OAAAA,IAAA;AAAA,MAAAzV,QAAmB,MAAM;;;;;QACvCA,EAAS,CAAA;AAAA,MAAA;;;;;QACZA,EAAO,EAAA;AAAA,MAAA;;;;;QACPA,EAAO,CAAA;AAAA,MAAA;;;;;QACNA,EAAQ,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;MA7FjBsU,KACJ,u4CACIG,KACJ;;sDAXS,SAAArB,IAAkB,GAAA,IAAAD,KAClB,KAAA/T,IAAc,GAAA,IAAA+T,KACd,QAAAI,IAAiB,GAAA,IAAAJ,KACjB,iBAAAuC,IAAkB,GAAA,IAAAvC,KAClB,oBAAAwC,IAA6BvB,GAAA,IAAAjB,GASpCyC,GACAC,IAAe,OAAO,YACtBC,IAAkB,IAClBC,IAAY;AAYV,QAAAC,IAAA,MAAAlC,EAAA,GAAoBiC,IAAa,CAAAA,CAAA,GACjCE,IAAA,MAAAnC,EAAA,GAAkBiC,IAAY,EAAA;AAIpC,EAAApO,GAAA,MAAA;AACE,WAAO,iBAAiB,YAAYuO,GAAe,EAAI,GACvDC;MAGFtO,GAAA,MAAA;AACE,WAAO,oBAAoB,YAAYqO,GAAe,EAAI;AAAA;AAGnD,WAAAA,IAAA;AACP,IAAAC,KACAF;;AAIO,WAAAE,IAAA;AACF,QAAA,CAAAP;AAAA;UAECjV,IAAOiV,EAAc,cAAc,MAAM;AAC1C,QAAA,CAAAjV;AAAA;UAECyV,IAAOzV,EACV,mBACA,OAAQ,CAAAyP,MAAOA,EAAG,YAAY,GAAG,EACjC,IAAK,CAAAA,OACJA,EAAG,UAAU,OAAO,SAAS,GACtBA,IAER,KAAM,CAAAA,MAAA;AACC,YAAAiG,IAAQjG,EAAuB,MAC/BhR,IAAS,GAAA,OAAO,SAAS,QAAQ,GAAG,OAAO,SAAS,MAAM,GAAG,OAAO,SAAS,IAAI;AAChF,aAAAiX,EAAK,SAASjX,CAAG;AAAA;AAExB,IAAAgX,KACFA,EAAK,UAAU,IAAI,SAAS;AAAA;AAOjB,iBAAAE,IAAA;AjBnFjB,QAAAxH;AiBsFS,QAFC,MAAAxG,GAAA,GAED,CAAAsN;AAAA;UAECjV,IAAOiV,KAAA,gBAAAA,EAAe,WAAW,IACjClR,KAAWoK,IAAAnO,EAAK,qBAAL,gBAAAmO,EAAA,KAAAnO;AACb,WAAA+D,IACKA,EAAS,SAAS,QAIdkR,EAAc,iBAAiB,GAAG,CAAA,EAAG,SAAS;AAAA;;;;;;AA+ErC,MAAAA,IAAahC;;;;;AAajB,MAAAgC,IAAahC;;;;;AAOb,MAAAgC,IAAahC;;;;;;;UArKjCE,EAAA,IAAGyC,IAAUV,IAAe1B,EAAA;YACzBL,EAAA,GAAA0C,IAAUX,KAAgB1B,MAAa0B,IAAeF,CAAA;YACzD7B,EAAA,GAAG2C,IAAWZ,KAAiB,CAAAF,CAAA;WAEd,YAAA7B,EAAA,GAAAgC,IAAkBW,IAAW,KAAc,MAAAH,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IC+GrDtW,EAAW,CAAA,KAAAgV,GAAAhV,CAAA;AAAA;;IAObA,EAAK,CAAA,KAAAsV,GAAAtV,CAAA;AAAA;;;;;QAJeA,EAAO,CAAA;AAAA,MAAA;MAEdA,EAAK,CAAA,IAAG,eAAe,cAAc;;QANCA,EAAI,CAAA;AAAA,MAAA,IAAA,gBAAA;;;;QAAxCA,EAAK,CAAA;AAAA,MAAA;AAAA;;AAAzB,MAAAoD,EAOQb,GAAAwS,GAAA1R,CAAA,+BAHNf,EAAqCyS,GAAAD,CAAA,qBACrCxS,EAA6ByS,GAAA2B,CAAA,YAC7BpU,EAA+DyS,GAAA3C,CAAA;;;;QAN5BpS,EAAU,CAAA;AAAA,MAAA;;;;MACxCA,EAAW,CAAA;;;;QAGOA,EAAO,CAAA;AAAA,MAAA;;MAEdA,EAAK,CAAA,IAAG,eAAe;;;QANeA,EAAI,CAAA;AAAA,MAAA,IAAA;;;;;QAAxCA,EAAK,CAAA;AAAA,MAAA;AAAA,MAQpBA,EAAK,CAAA;;;;;;;;;;;;;;;;;;;IApBDA,EAAW,CAAA,KAAAuV,GAAAvV,CAAA;AAAA;;;;;;;;;;;;;;;QAGfA,EAAO,CAAA;AAAA,MAAA;MACQA,EAAK,CAAA,IAAG,eAAe,cAAc;;QAP9CA,EAAI,CAAA;AAAA,MAAA,IAAA,gBAAA;;;;QACIA,EAAe,CAAA;AAAA,MAAA;;;;QANzBA,EAAK,CAAA;AAAA,MAAA;;;AATd,MAAAoD,EA2Bab,GAAA0S,GAAA5R,CAAA,GAhBXf,EAWQ2S,GAAAF,CAAA,iDADNzS,EAA+DyS,GAAA3C,CAAA,YAGjE9P,EAEK2S,GAAAL,CAAA;;;;MATE5U,EAAW,CAAA;;;;QAGfA,EAAO,CAAA;AAAA,MAAA;;MACQA,EAAK,CAAA,IAAG,eAAe;;;QAPhCA,EAAI,CAAA;AAAA,MAAA,IAAA;;;;;QACIA,EAAe,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;QANzBA,EAAK,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;QAsBMA,EAAW,CAAA;AAAA,MAAA;;;AAA3B,MAAAoD,EAAqCb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;QAArBrD,EAAW,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;AAO7B,MAAAoD,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAtBerD,EAAW,CAAA;AAAA,MAAA;;;AAA3B,MAAAoD,EAAqCb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;QAArBrD,EAAW,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;;MAnB9BA,EAAQ,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAxGA,EAAA,SAAAoT,EAAA,IAAAD,GAGA,EAAA,aAAAwD,EAAA,IAAAxD,KACA,MAAA3N,IAAgC,UAAA,IAAA2N,GAMvCyD,IAAsB,OAAO,YAE7BC,GAEAjB,GAEAkB,IAAkB,IAElBC,IAAQ;AAUZ,EAAApP,GAAA,YAAA;AACQ,UAAAW,GAAA,GACNsI,GAAiB,oBAAsB,EAAA,SAAAwC,EAAA,CAAA,GAEvC+C,KACA,OAAO,iBAAiB,YAAYA,GAAgB,EAAI;AAAA,MAI1DtO,GAAA,MAAA;AACE,WAAO,oBAAoB,YAAYsO,GAAgB,EAAI;AAAA;AAKpD,WAAAA,IAAA;SACPW,IAAkBE,EAAA,CAAA;AAAA;AAIX,WAAAA,IAAA;SACFpB;AAAsB,aAAA;UAErBjV,IAAOiV,EAAc,cAAc,MAAM;WAC1CjV,IAUI,CAAA,CARIA,EACV,mBACA,OAAQ,CAAAyP,MAAOA,EAAG,YAAY,GAAG,EACjC,KAAM,CAAAA,MAAA;AACC,YAAAiG,IAAQjG,EAAuB,MAC/BhR,IAAS,GAAA,OAAO,SAAS,QAAQ,GAAG,OAAO,SAAS,MAAM,GAAG,OAAO,SAAS,IAAI;AAChF,aAAAiX,EAAK,SAASjX,CAAG;AAAA,SARV;AAAA;AAeL,iBAAA6X,IAAA;AAER,IADC,MAAA3O,GAAA,GACDuO,MACLA,EAAW,oBAAoB,UAAUK,CAAS,GAClDL,EAAW,oBAAoB,SAASM,CAAQ,GAEhDN,EAAW,iBAAiB,UAAUK,CAAS,GAC/CL,EAAW,iBAAiB,SAASM,CAAQ;AAAA;AAGhC,iBAAAA,IAAA;SACbJ,IAAQ,EAAA,GAEF,MAAAzO,GAAA,GAEFsN,KACFA,EAAc,iBAAiB,SAASsB,CAAS;AAAA;AAI5C,WAAAA,IAAA;AACH,IAAAtB,KACFA,EAAc,oBAAoB,SAASsB,CAAS,GAGtD;AAAA;aACEH,IAAQ,EAAA;AAAA;MACP;AAAA;;AAGI,WAAAf,IAAA;AACP,IAAAe,IAAQG,MAAcC;;;;;;;AA+BU,MAAAvB,IAAahC;;;;;AAvBlC,MAAAiD,IAAUjD;;;;;AAqCe,MAAAgC,IAAahC;;;;;;;SA1HnDE,EAAA,GAAG2C,IAAWG,KAAexC,EAAA;UAG1BqC,KAAYQ,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACmDb,MAAA7T,EAAoDb,GAAAqS,GAAAvR,CAAA;AAAA;;;;;;;;;;;yBANvCkB,EAAA6N,GAAA,aAAAgF;AAAA,MAAApX;MAAgBA,EAAS,CAAA;AAAA;AAAA,QAAGA,EAAS,CAAA;AAAA,UAAG,IAAI,GACjDuE,EAAA6N,GAAA,QAAAiF;AAAA,MAAArX;MAAgBA,EAAS,CAAA,IAAG,iBAAiB,IAAI;;;;QACjDA,EAAQ,EAAA;AAAA,MAAA;;;AAHhB,MAAAoD,EAKCb,GAAA6P,GAAA/O,CAAA;AAAA;;AAJY,MAAAhD;AAAA,MAAA,OAAA+W,OAAAA;AAAA,MAAApX;MAAgBA,EAAS,CAAA;AAAA;AAAA,QAAGA,EAAS,CAAA;AAAA,UAAG,+BAC7CK;AAAA,MAAA,OAAAgX,OAAAA;AAAA,MAAArX;MAAgBA,EAAS,CAAA,IAAG,iBAAiB;;;;;QAC7CA,EAAQ,EAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;QAQbA,EAAO,CAAA;AAAA,MAAA;;;AADV,MAAAoD,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;QADFrD,EAAO,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;MAZPA,EAAQ,CAAA,IAAAuV;;;;;IAURvV,EAAO,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;gDAhBLqE,EAAAuQ,GAAA,SAAA0C,IAAAxH;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;;;;QACxBA,EAAM,CAAA;AAAA,MAAA;MAEKA,EAAI,CAAA,IAAA,iBAAA;;;;QACXA,EAAY,CAAA;AAAA,MAAA;AAAA;;AAL/B,MAAAoD,EAsBKb,GAAAqS,GAAAvR,CAAA;;;;MALErD,EAAO,CAAA,gFAhBLK;AAAA,MAAA,OAAAiX,OAAAA,IAAAxH;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;;QACxBA,EAAM,CAAA;AAAA,MAAA;;MAEKA,EAAI,CAAA,IAAA;;;;;QACXA,EAAY,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;SAhEtBuX,GAAOC,CAAY,IAAI1G,GAC5B,cAEE,CAAA,WACA,aACA,eACA,aACA,QACA,WACA,OAEF,GAAA,EAAA;AAMS,MAAA,EAAA,MAAAtL,EAAA,IAAA2N,KAGA,QAAAI,IAAiB,GAAA,IAAAJ,KACjB,SAAAsE,IAAkB,GAAA,IAAAtE,KAClB,MAAAuE,IAAe,QAAA,IAAAvE,KACf,WAAAwE,IAAoB,GAAA,IAAAxE,KAGpB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD;AAgBzB,SAAAxL,GAAA,MAAA;AACE,eAAiB,MAAA6P,EAAahS,CAAI,GAAG,CAAC,IACjCoS,KAAa,CAAAH,KAChB,QAAQ,KACN,6DAAA,GAGAI,KAAiB,CAAAF,KACnB,QAAQ,KAAK,+CAA+C;AAAA;;;;YArB7D7D,EAAA,GAAA8D,IAAWnH,GAAUiH,CAAI,CAAA;WAC5B5D,EAAA,GAAG+D,IAAeD,KAAa,CAAAH,CAAA;SAE5B3D,EAAA,IAAAgE,IAAA;AAAA,MACD,SAAS;AAAA,MACT,WAAW;AAAA,MACX,aAAa;AAAA,MACb,WAAW;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,MACPtS,CAAI,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC1BFsK;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MACPA,EAAG,CAAA,CAAA;AAAA;AAAA,MACbA,EAAU,CAAA,CAAA;AAAA;AAAA,MACVA,EAAS,CAAA,CAAA;AAAA;;;AAN5B,MAAAoD,EAUKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;MAPCyM;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MACPA,EAAG,CAAA,CAAA;AAAA;AAAA,MACbA,EAAU,CAAA,CAAA;AAAA;AAAA,MACVA,EAAS,CAAA,CAAA;AAAA;;;;;;;;;;;;;;gDAxBf,KAAA+X,IAAe,IAAA,IAAA5E,KACf,WAAA/J,IAA8B,MAAA,IAAA+J,KAC9B,WAAA6E,IAAwC,QAAA,IAAA7E,KAUxC,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD;;;;;WAXzBW,EAAA,GAAGmE,IACDD,MAAc,UACV,eACAA,MAAc,QACZ,aACA,QAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICmEDhY,EAAW,CAAA,KAAAsV,GAAAtV,CAAA;AAAA;;;;;;;;;;;;;IAMXA,EAAY,CAAA,KAAAuV,GAAAvV,CAAA;AAAA;;;;;;kCAHjBoD,EAEMb,GAAAuS,GAAAzR,CAAA;;;;MALDrD,EAAW,CAAA;;;;;;;;;;;;;;;;;;;MAMXA,EAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAXjB,MAAAoD,EAEMb,GAAAuS,GAAAzR,CAAA,kCACND,EAAmEb,GAAA6P,GAAA/O,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAG/BrD,EAAW,CAAA;AAAA,MAAA;;;;QAAYA,EAAY,EAAA;AAAA,MAAA;AAAA;;AAArE,MAAAoD,EAAwEb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;QAAtCrD,EAAW,CAAA;AAAA,MAAA;;;;;QAAYA,EAAY,EAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;QAQ7DA,EAAY,CAAA;AAAA,MAAA;;;;QACRA,EAAY,EAAA;AAAA,MAAA;AAAA;;AAHxB,MAAAoD,EAICb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;QAFOrD,EAAY,CAAA;AAAA,MAAA;;;;;QACRA,EAAY,EAAA;AAAA,MAAA;AAAA;;;;;;;;;;AAhBvB;AAAA;AAAA,MAAAA,SAAS,UAAO;;;;;;MAVbA,EAAI,CAAA,IAAA;AAAA,MAAGA,EAAI,CAAA,IAAA;AAAA,MAAGA,EAAO,CAAA,IAAA,gBAAA,GAGtBqE,EAAA0Q,GAAA,SAAAmD,IAAApI;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;MAE3BA,EAAU,EAAA;;;;QAEPA,EAAM,CAAA;AAAA,MAAA,GACbqE,EAAA0Q,GAAA,QAAAoD;AAAA,MAAAnY,EAAQ,CAAA,KAAA;AAAA;AAAA,QAAWA;UAAO,QAAQ;;;;QAPzBA,EAAW,CAAA;AAAA,MAAA;;;;QACVA,EAAY,CAAA;AAAA,QAAIA,EAAI,CAAA,MAAK;AAAA,MAAO;AAAA;;AAHlD,MAAAoD,EA+BQb,GAAAwS,GAAA1R,CAAA;;;;;UA1BIrD,EAAY,EAAA;AAAA,QAAA;AAAA;;;;UAEZA,EAAY,EAAA;AAAA,QAAA;AAAA;;;;;;;;MANdA,EAAI,CAAA,IAAA;AAAA,MAAGA,EAAI,CAAA,IAAA;AAAA,MAAGA,EAAO,CAAA,IAAA,yCAGtB,CAAA+S,KAAA1S;AAAA,MAAA,OAAA6X,OAAAA,IAAApI;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;MAE3BA,EAAU,EAAA;;;;;QAEPA,EAAM,CAAA;AAAA,MAAA,IACb,CAAA+S,KAAA1S;AAAA,MAAA,KAAA8X,OAAAA;AAAA,MAAAnY,EAAQ,CAAA,KAAA;AAAA;AAAA,QAAWA;UAAO;;;;;QAPjBA,EAAW,CAAA;AAAA,MAAA;;;;;QACVA,EAAY,CAAA;AAAA,QAAIA,EAAI,CAAA,MAAK;AAAA,MAAO;AAAA;;;;;;;;;;;;;;SA1DzCuX,GAAOC,CAAY,IAAI1G,GAC5B,eAAA,CACC,WAAW,UAAU,aAAa,YAAY,OAAO,GACtD,EAAA,GAEK,CAAAsH,GAAOC,CAAY,IAAIvH,GAC5B,eACC,CAAA,UAAU,SAAS,GACpB,EAAA,GAEK,CAAAwH,GAAUC,CAAe,IAAIzH,GAClC,kBACC,CAAA,UAAU,aAAa,GACxB,EAAA;QASS,MAAAtL,IAAmB,UAAA,IAAA2N,KACnB,MAAAtD,IAAa,SAAA,IAAAsD,KACb,SAAAqF,IAAmB,SAAA,IAAArF,KACnB,UAAAsF,IAAmB,QAAA,IAAAtF,KACnB,aAAAwD,IAAkC,KAAA,IAAAxD,KAClC,cAAAuF,IAAmC,KAAA,IAAAvF,KACnC,QAAAI,IAAiB,GAAA,IAAAJ,KAEjB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD;WAKhBwF,EAAaC,GAAA;AAEf,IAAAC,KAEH,KAAK,cACC,IAAA,YAAY,UAAY,EAAA,UAAU,IAAM,SAAS,GAAA,CAAA,CAAA;AAAA;AAK3D,SAAAlR,GAAA,MAAA;AACE,IAAA6P,EAAahS,CAAI,GACjB6S,EAAaxI,CAAI,GACjB0I,EAAgBC,CAAO;AAAA;;;;YAhBtB1E,EAAA,IAAA+E,IAAapI,GAAUgI,CAAQ,CAAA;SAC/B3E,EAAA,IAAAgF,IAAetT,MAAS,aAAaA,MAAS,OAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCHpCxF,EAAM,CAAA;AAAA,MAAA,GACXqE,EAAAuQ,GAAA,SAAA0C,IAAAxH;AAAA;AAAA,QACN9P,EAAE,CAAA;AAAA;AAAA,QACFA,EAAE,CAAA;AAAA;AAAA,QACFA,EACA,CAAA;AAAA;AAAA,QAAAA,EACgB,CAAA;AAAA,MAAA,IAAA;AAAA,MAAAA;OAA0BA,EAAG,CAAA,MAAK,YAChD,SACA,UAAS;;;AATf,MAAAoD,EAYKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;QAXUrD,EAAM,CAAA;AAAA,MAAA,IACX,CAAA+S,KAAA1S;AAAA,MAAA,OAAAiX,OAAAA,IAAAxH;AAAA;AAAA,QACN9P,EAAE,CAAA;AAAA;AAAA,QACFA,EAAE,CAAA;AAAA;AAAA,QACFA,EACA,CAAA;AAAA;AAAA,QAAAA,EACgB,CAAA;AAAA,MAAA,IAAA;AAAA,MAAAA;OAA0BA,EAAG,CAAA,MAAK,YAChD,SACA;;;;;;;;;;;;;;gDA1CO,WAAAgY,IAA6B,QAAA,IAAA7E,KAC7B,KAAA4E,IAAW,UAAA,IAAA5E,KACX,QAAAI,IAAiB,GAAA,IAAAJ,KAGjB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD;AAElB,QAAA,CAAA4F,GAAmBC,CAAiB,IAAIlI,GAAc,aAAA,CAC3D,SACA,OACA,QAAA,CAAA,GAIK,CAAAmI,GAAMC,CAAW,IAAIpI,GAAc,OAAA,CAAQ,WAAW,SAAS,CAAA;AAStE,SAAAnJ,GAAA,MAAA;AACE,IAAAqR,EAAkBhB,CAAS,GAC3BkB,EAAYnB,CAAG;AAAA;;;;WARdjE,EAAA,GAAAmE,IAAA;AAAA,MACD,OAAO;AAAA,MACP,KAAK;AAAA,MACL,QAAQ;AAAA,MACRD,CAAS,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDN,SAASmB,GAAOC,GAAU;AAC/B,QAAMC,IAAS,OAAO,UAAU,SAAS,KAAKD,CAAQ;AAGtD,SACEA,aAAoB,QACnB,OAAOA,KAAa,YAAYC,MAAW,kBAGrC,IAAID,EAAS,YAAY,CAACA,CAAQ,IAEzC,OAAOA,KAAa,YACpBC,MAAW,qBACX,OAAOD,KAAa,YACpBC,MAAW,oBAGJ,IAAI,KAAKD,CAAQ,IAGjB,oBAAI,KAAK,GAAG;AAEvB;AC1BO,SAASE,GAAc/H,GAAMhQ,GAAO;AACzC,SAAIgQ,aAAgB,OACX,IAAIA,EAAK,YAAYhQ,CAAK,IAE1B,IAAI,KAAKA,CAAK;AAEzB;ACXO,SAASgY,GAAQhI,GAAMiI,GAAQ;AACpC,QAAMC,IAAQN,GAAO5H,CAAI;AACzB,SAAI,MAAMiI,CAAM,IAAUF,GAAc/H,GAAM,GAAG,KAC5CiI,KAILC,EAAM,QAAQA,EAAM,QAAS,IAAGD,CAAM,GAC/BC;AACT;ACLO,SAASC,GAAUnI,GAAMiI,GAAQ;AACtC,QAAMC,IAAQN,GAAO5H,CAAI;AACzB,MAAI,MAAMiI,CAAM;AAAG,WAAOF,GAAc/H,GAAM,GAAG;AACjD,MAAI,CAACiI;AAEH,WAAOC;AAET,QAAME,IAAaF,EAAM,WAUnBG,IAAoBN,GAAc/H,GAAMkI,EAAM,QAAS,CAAA;AAC7D,EAAAG,EAAkB,SAASH,EAAM,SAAU,IAAGD,IAAS,GAAG,CAAC;AAC3D,QAAMK,IAAcD,EAAkB;AACtC,SAAID,KAAcE,IAGTD,KASPH,EAAM;AAAA,IACJG,EAAkB,YAAa;AAAA,IAC/BA,EAAkB,SAAU;AAAA,IAC5BD;AAAA,EACN,GACWF;AAEX;ACUO,MAAMK,KAAqB,QAOrBC,KAAoB;ACnFjC,IAAIC,KAAiB,CAAA;AAEd,SAASC,KAAoB;AAClC,SAAOD;AACT;AC6BO,SAASE,GAAY3I,GAAMpN,GAAS;A7BjC3C,MAAA2K,GAAAqL,GAAAC,GAAAC;A6BkCE,QAAML,IAAiBC,MACjBK,KACJnW,KAAA,gBAAAA,EAAS,mBACTgW,KAAArL,IAAA3K,KAAA,gBAAAA,EAAS,WAAT,gBAAA2K,EAAiB,YAAjB,gBAAAqL,EAA0B,iBAC1BH,EAAe,kBACfK,KAAAD,IAAAJ,EAAe,WAAf,gBAAAI,EAAuB,YAAvB,gBAAAC,EAAgC,iBAChC,GAEIZ,IAAQN,GAAO5H,CAAI,GACnBgJ,IAAMd,EAAM,UACZe,KAAQD,IAAMD,IAAe,IAAI,KAAKC,IAAMD;AAElD,SAAAb,EAAM,QAAQA,EAAM,QAAS,IAAGe,CAAI,GACpCf,EAAM,SAAS,GAAG,GAAG,GAAG,CAAC,GAClBA;AACT;ACzBO,SAASgB,GAAelJ,GAAM;AACnC,SAAO2I,GAAY3I,GAAM,EAAE,cAAc,EAAG,CAAA;AAC9C;ACAO,SAASmJ,GAAenJ,GAAM;AACnC,QAAMkI,IAAQN,GAAO5H,CAAI,GACnBE,IAAOgI,EAAM,eAEbkB,IAA4BrB,GAAc/H,GAAM,CAAC;AACvD,EAAAoJ,EAA0B,YAAYlJ,IAAO,GAAG,GAAG,CAAC,GACpDkJ,EAA0B,SAAS,GAAG,GAAG,GAAG,CAAC;AAC7C,QAAMC,IAAkBH,GAAeE,CAAyB,GAE1DE,IAA4BvB,GAAc/H,GAAM,CAAC;AACvD,EAAAsJ,EAA0B,YAAYpJ,GAAM,GAAG,CAAC,GAChDoJ,EAA0B,SAAS,GAAG,GAAG,GAAG,CAAC;AAC7C,QAAMC,IAAkBL,GAAeI,CAAyB;AAEhE,SAAIpB,EAAM,QAAO,KAAMmB,EAAgB,QAAO,IACrCnJ,IAAO,IACLgI,EAAM,QAAS,KAAIqB,EAAgB,QAAO,IAC5CrJ,IAEAA,IAAO;AAElB;ACzBO,SAASsJ,GAAWxJ,GAAM;AAC/B,QAAMkI,IAAQN,GAAO5H,CAAI;AACzB,SAAAkI,EAAM,SAAS,GAAG,GAAG,GAAG,CAAC,GAClBA;AACT;ACbO,SAASuB,GAAgCzJ,GAAM;AACpD,QAAMkI,IAAQN,GAAO5H,CAAI,GACnB0J,IAAU,IAAI;AAAA,IAClB,KAAK;AAAA,MACHxB,EAAM,YAAa;AAAA,MACnBA,EAAM,SAAU;AAAA,MAChBA,EAAM,QAAS;AAAA,MACfA,EAAM,SAAU;AAAA,MAChBA,EAAM,WAAY;AAAA,MAClBA,EAAM,WAAY;AAAA,MAClBA,EAAM,gBAAiB;AAAA,IACxB;AAAA,EACL;AACE,SAAAwB,EAAQ,eAAexB,EAAM,YAAa,CAAA,GACnC,CAAClI,IAAO,CAAC0J;AAClB;ACQO,SAASC,GAAyBC,GAAUC,GAAW;AAC5D,QAAMC,IAAiBN,GAAWI,CAAQ,GACpCG,IAAkBP,GAAWK,CAAS,GAEtCG,IACJ,CAACF,IAAiBL,GAAgCK,CAAc,GAC5DG,IACJ,CAACF,IAAkBN,GAAgCM,CAAe;AAKpE,SAAO,KAAK,OAAOC,IAAgBC,KAAkBzB,EAAiB;AACxE;ACtBO,SAAS0B,GAAmBlK,GAAM;AACvC,QAAME,IAAOiJ,GAAenJ,CAAI,GAC1BmK,IAAkBpC,GAAc/H,GAAM,CAAC;AAC7C,SAAAmK,EAAgB,YAAYjK,GAAM,GAAG,CAAC,GACtCiK,EAAgB,SAAS,GAAG,GAAG,GAAG,CAAC,GAC5BjB,GAAeiB,CAAe;AACvC;ACXO,SAASC,GAASpK,GAAMiI,GAAQ;AACrC,SAAOE,GAAUnI,GAAMiI,IAAS,EAAE;AACpC;ACQO,SAASoC,GAAUT,GAAUC,GAAW;AAC7C,QAAMS,IAAqBd,GAAWI,CAAQ,GACxCW,IAAsBf,GAAWK,CAAS;AAEhD,SAAO,CAACS,KAAuB,CAACC;AAClC;ACLO,SAASC,GAAOxa,GAAO;AAC5B,SACEA,aAAiB,QAChB,OAAOA,KAAU,YAChB,OAAO,UAAU,SAAS,KAAKA,CAAK,MAAM;AAEhD;ACFO,SAASya,GAAQzK,GAAM;AAC5B,MAAI,CAACwK,GAAOxK,CAAI,KAAK,OAAOA,KAAS;AACnC,WAAO;AAET,QAAMkI,IAAQN,GAAO5H,CAAI;AACzB,SAAO,CAAC,MAAM,OAAOkI,CAAK,CAAC;AAC7B;ACnBO,SAASwC,GAAY1K,GAAM;AAChC,QAAM2K,IAAY/C,GAAO5H,CAAI,GACvBkI,IAAQH,GAAc/H,GAAM,CAAC;AACnC,SAAAkI,EAAM,YAAYyC,EAAU,YAAW,GAAI,GAAG,CAAC,GAC/CzC,EAAM,SAAS,GAAG,GAAG,GAAG,CAAC,GAClBA;AACT;AC7BA,MAAM0C,KAAuB;AAAA,EAC3B,kBAAkB;AAAA,IAChB,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,UAAU;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,aAAa;AAAA,EAEb,kBAAkB;AAAA,IAChB,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,UAAU;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,OAAO;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,cAAc;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,SAAS;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,YAAY;AAAA,IACV,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AAAA,EAED,cAAc;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,EACR;AACH,GAEaC,KAAiB,CAACC,GAAOpK,GAAO9N,MAAY;AACvD,MAAI/C;AAEJ,QAAMkb,IAAaH,GAAqBE,CAAK;AAS7C,SARI,OAAOC,KAAe,WACxBlb,IAASkb,IACArK,MAAU,IACnB7Q,IAASkb,EAAW,MAEpBlb,IAASkb,EAAW,MAAM,QAAQ,aAAarK,EAAM,SAAQ,CAAE,GAG7D9N,KAAA,QAAAA,EAAS,YACPA,EAAQ,cAAcA,EAAQ,aAAa,IACtC,QAAQ/C,IAERA,IAAS,SAIbA;AACT;ACpGO,SAASmb,GAAkBC,GAAM;AACtC,SAAO,CAACrY,IAAU,OAAO;AAEvB,UAAMsY,IAAQtY,EAAQ,QAAQ,OAAOA,EAAQ,KAAK,IAAIqY,EAAK;AAE3D,WADeA,EAAK,QAAQC,CAAK,KAAKD,EAAK,QAAQA,EAAK,YAAY;AAAA,EAExE;AACA;ACLA,MAAME,KAAc;AAAA,EAClB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT,GAEMC,KAAc;AAAA,EAClB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT,GAEMC,KAAkB;AAAA,EACtB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT,GAEaC,KAAa;AAAA,EACxB,MAAMN,GAAkB;AAAA,IACtB,SAASG;AAAA,IACT,cAAc;AAAA,EAClB,CAAG;AAAA,EAED,MAAMH,GAAkB;AAAA,IACtB,SAASI;AAAA,IACT,cAAc;AAAA,EAClB,CAAG;AAAA,EAED,UAAUJ,GAAkB;AAAA,IAC1B,SAASK;AAAA,IACT,cAAc;AAAA,EAClB,CAAG;AACH,GCtCME,KAAuB;AAAA,EAC3B,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AACT,GAEaC,KAAiB,CAACV,GAAO5C,GAAOuD,GAAWC,MACtDH,GAAqBT,CAAK;AC+BrB,SAASa,GAAgBV,GAAM;AACpC,SAAO,CAACjb,GAAO4C,MAAY;AACzB,UAAMgZ,IAAUhZ,KAAA,QAAAA,EAAS,UAAU,OAAOA,EAAQ,OAAO,IAAI;AAE7D,QAAIiZ;AACJ,QAAID,MAAY,gBAAgBX,EAAK,kBAAkB;AACrD,YAAMa,IAAeb,EAAK,0BAA0BA,EAAK,cACnDC,IAAQtY,KAAA,QAAAA,EAAS,QAAQ,OAAOA,EAAQ,KAAK,IAAIkZ;AAEvD,MAAAD,IACEZ,EAAK,iBAAiBC,CAAK,KAAKD,EAAK,iBAAiBa,CAAY;AAAA,IAC1E,OAAW;AACL,YAAMA,IAAeb,EAAK,cACpBC,IAAQtY,KAAA,QAAAA,EAAS,QAAQ,OAAOA,EAAQ,KAAK,IAAIqY,EAAK;AAE5D,MAAAY,IAAcZ,EAAK,OAAOC,CAAK,KAAKD,EAAK,OAAOa,CAAY;AAAA,IAC7D;AACD,UAAM5N,IAAQ+M,EAAK,mBAAmBA,EAAK,iBAAiBjb,CAAK,IAAIA;AAGrE,WAAO6b,EAAY3N,CAAK;AAAA,EAC5B;AACA;AC7DA,MAAM6N,KAAY;AAAA,EAChB,QAAQ,CAAC,KAAK,GAAG;AAAA,EACjB,aAAa,CAAC,MAAM,IAAI;AAAA,EACxB,MAAM,CAAC,iBAAiB,aAAa;AACvC,GAEMC,KAAgB;AAAA,EACpB,QAAQ,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,EAC3B,aAAa,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,EACpC,MAAM,CAAC,eAAe,eAAe,eAAe,aAAa;AACnE,GAMMC,KAAc;AAAA,EAClB,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACnE,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EAED,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACH,GAEMC,KAAY;AAAA,EAChB,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EAC1C,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,EAChD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC7D,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACH,GAEMC,KAAkB;AAAA,EACtB,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AACH,GAEMC,KAA4B;AAAA,EAChC,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EACD,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AACH,GAEMC,KAAgB,CAACC,GAAaZ,MAAa;AAC/C,QAAMa,IAAS,OAAOD,CAAW,GAS3BE,IAASD,IAAS;AACxB,MAAIC,IAAS,MAAMA,IAAS;AAC1B,YAAQA,IAAS,IAAE;AAAA,MACjB,KAAK;AACH,eAAOD,IAAS;AAAA,MAClB,KAAK;AACH,eAAOA,IAAS;AAAA,MAClB,KAAK;AACH,eAAOA,IAAS;AAAA,IACnB;AAEH,SAAOA,IAAS;AAClB,GAEaE,KAAW;AAAA,EACtB,eAAAJ;AAAA,EAEA,KAAKV,GAAgB;AAAA,IACnB,QAAQI;AAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EAED,SAASJ,GAAgB;AAAA,IACvB,QAAQK;AAAA,IACR,cAAc;AAAA,IACd,kBAAkB,CAACU,MAAYA,IAAU;AAAA,EAC7C,CAAG;AAAA,EAED,OAAOf,GAAgB;AAAA,IACrB,QAAQM;AAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EAED,KAAKN,GAAgB;AAAA,IACnB,QAAQO;AAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EAED,WAAWP,GAAgB;AAAA,IACzB,QAAQQ;AAAA,IACR,cAAc;AAAA,IACd,kBAAkBC;AAAA,IAClB,wBAAwB;AAAA,EAC5B,CAAG;AACH;AC1LO,SAASO,GAAa1B,GAAM;AACjC,SAAO,CAAC2B,GAAQha,IAAU,OAAO;AAC/B,UAAMsY,IAAQtY,EAAQ,OAEhBia,IACH3B,KAASD,EAAK,cAAcC,CAAK,KAClCD,EAAK,cAAcA,EAAK,iBAAiB,GACrC6B,IAAcF,EAAO,MAAMC,CAAY;AAE7C,QAAI,CAACC;AACH,aAAO;AAET,UAAMC,IAAgBD,EAAY,CAAC,GAE7BE,IACH9B,KAASD,EAAK,cAAcC,CAAK,KAClCD,EAAK,cAAcA,EAAK,iBAAiB,GAErCnb,IAAM,MAAM,QAAQkd,CAAa,IACnCC,GAAUD,GAAe,CAACE,MAAYA,EAAQ,KAAKH,CAAa,CAAC;AAAA;AAAA,MAEjEI,GAAQH,GAAe,CAACE,MAAYA,EAAQ,KAAKH,CAAa,CAAC;AAAA;AAEnE,QAAI/c;AAEJ,IAAAA,IAAQib,EAAK,gBAAgBA,EAAK,cAAcnb,CAAG,IAAIA,GACvDE,IAAQ4C,EAAQ;AAAA;AAAA,MAEZA,EAAQ,cAAc5C,CAAK;AAAA,QAC3BA;AAEJ,UAAMyM,IAAOmQ,EAAO,MAAMG,EAAc,MAAM;AAE9C,WAAO,EAAE,OAAA/c,GAAO,MAAAyM;EACpB;AACA;AAEA,SAAS0Q,GAAQC,GAAQC,GAAW;AAClC,aAAWvd,KAAOsd;AAChB,QACE,OAAO,UAAU,eAAe,KAAKA,GAAQtd,CAAG,KAChDud,EAAUD,EAAOtd,CAAG,CAAC;AAErB,aAAOA;AAIb;AAEA,SAASmd,GAAUK,GAAOD,GAAW;AACnC,WAASvd,IAAM,GAAGA,IAAMwd,EAAM,QAAQxd;AACpC,QAAIud,EAAUC,EAAMxd,CAAG,CAAC;AACtB,aAAOA;AAIb;ACxDO,SAASyd,GAAoBtC,GAAM;AACxC,SAAO,CAAC2B,GAAQha,IAAU,OAAO;AAC/B,UAAMka,IAAcF,EAAO,MAAM3B,EAAK,YAAY;AAClD,QAAI,CAAC6B;AAAa,aAAO;AACzB,UAAMC,IAAgBD,EAAY,CAAC,GAE7BU,IAAcZ,EAAO,MAAM3B,EAAK,YAAY;AAClD,QAAI,CAACuC;AAAa,aAAO;AACzB,QAAIxd,IAAQib,EAAK,gBACbA,EAAK,cAAcuC,EAAY,CAAC,CAAC,IACjCA,EAAY,CAAC;AAGjB,IAAAxd,IAAQ4C,EAAQ,gBAAgBA,EAAQ,cAAc5C,CAAK,IAAIA;AAE/D,UAAMyM,IAAOmQ,EAAO,MAAMG,EAAc,MAAM;AAE9C,WAAO,EAAE,OAAA/c,GAAO,MAAAyM;EACpB;AACA;AChBA,MAAMgR,KAA4B,yBAC5BC,KAA4B,QAE5BC,KAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACMC,KAAmB;AAAA,EACvB,KAAK,CAAC,OAAO,SAAS;AACxB,GAEMC,KAAuB;AAAA,EAC3B,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACMC,KAAuB;AAAA,EAC3B,KAAK,CAAC,MAAM,MAAM,MAAM,IAAI;AAC9B,GAEMC,KAAqB;AAAA,EACzB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR,GACMC,KAAqB;AAAA,EACzB,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EAED,KAAK;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACH,GAEMC,KAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AAAA,EACb,MAAM;AACR,GACMC,KAAmB;AAAA,EACvB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EACxD,KAAK,CAAC,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,MAAM;AAC3D,GAEMC,KAAyB;AAAA,EAC7B,QAAQ;AAAA,EACR,KAAK;AACP,GACMC,KAAyB;AAAA,EAC7B,KAAK;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AACH,GAEaC,KAAQ;AAAA,EACnB,eAAed,GAAoB;AAAA,IACjC,cAAcE;AAAA,IACd,cAAcC;AAAA,IACd,eAAe,CAAC1d,MAAU,SAASA,GAAO,EAAE;AAAA,EAChD,CAAG;AAAA,EAED,KAAK2c,GAAa;AAAA,IAChB,eAAegB;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EAED,SAASjB,GAAa;AAAA,IACpB,eAAekB;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAe,CAAC5P,MAAUA,IAAQ;AAAA,EACtC,CAAG;AAAA,EAED,OAAOyO,GAAa;AAAA,IAClB,eAAeoB;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EAED,KAAKrB,GAAa;AAAA,IAChB,eAAesB;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EAED,WAAWvB,GAAa;AAAA,IACtB,eAAewB;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAeC;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AACH,GCrHaE,KAAO;AAAA,EAClB,MAAM;AAAA,EACN,gBAAgBzD;AAAA,EAChB,YAAYS;AAAA,EACZ,gBAAgBE;AAAA,EAChB,UAAUiB;AAAA,EACV,OAAO4B;AAAA,EACP,SAAS;AAAA,IACP,cAAc;AAAA,IACd,uBAAuB;AAAA,EACxB;AACH;ACFO,SAASE,GAAavO,GAAM;AACjC,QAAMkI,IAAQN,GAAO5H,CAAI;AAGzB,SAFa2J,GAAyBzB,GAAOwC,GAAYxC,CAAK,CAAC,IACtC;AAE3B;ACFO,SAASsG,GAAWxO,GAAM;AAC/B,QAAMkI,IAAQN,GAAO5H,CAAI,GACnBiJ,IAAO,CAACC,GAAehB,CAAK,IAAI,CAACgC,GAAmBhC,CAAK;AAK/D,SAAO,KAAK,MAAMe,IAAOV,EAAkB,IAAI;AACjD;ACWO,SAASkG,GAAYzO,GAAMpN,GAAS;ArD7C3C,MAAA2K,GAAAqL,GAAAC,GAAAC;AqD8CE,QAAMZ,IAAQN,GAAO5H,CAAI,GACnBE,IAAOgI,EAAM,eAEbO,IAAiBC,MACjBgG,KACJ9b,KAAA,gBAAAA,EAAS,4BACTgW,KAAArL,IAAA3K,KAAA,gBAAAA,EAAS,WAAT,gBAAA2K,EAAiB,YAAjB,gBAAAqL,EAA0B,0BAC1BH,EAAe,2BACfK,KAAAD,IAAAJ,EAAe,WAAf,gBAAAI,EAAuB,YAAvB,gBAAAC,EAAgC,0BAChC,GAEI6F,IAAsB5G,GAAc/H,GAAM,CAAC;AACjD,EAAA2O,EAAoB,YAAYzO,IAAO,GAAG,GAAGwO,CAAqB,GAClEC,EAAoB,SAAS,GAAG,GAAG,GAAG,CAAC;AACvC,QAAMtF,IAAkBV,GAAYgG,GAAqB/b,CAAO,GAE1Dgc,IAAsB7G,GAAc/H,GAAM,CAAC;AACjD,EAAA4O,EAAoB,YAAY1O,GAAM,GAAGwO,CAAqB,GAC9DE,EAAoB,SAAS,GAAG,GAAG,GAAG,CAAC;AACvC,QAAMrF,IAAkBZ,GAAYiG,GAAqBhc,CAAO;AAEhE,SAAIsV,EAAM,QAAO,KAAMmB,EAAgB,QAAO,IACrCnJ,IAAO,IACLgI,EAAM,QAAS,KAAIqB,EAAgB,QAAO,IAC5CrJ,IAEAA,IAAO;AAElB;AC7BO,SAAS2O,GAAgB7O,GAAMpN,GAAS;AtD7C/C,MAAA2K,GAAAqL,GAAAC,GAAAC;AsD8CE,QAAML,IAAiBC,MACjBgG,KACJ9b,KAAA,gBAAAA,EAAS,4BACTgW,KAAArL,IAAA3K,KAAA,gBAAAA,EAAS,WAAT,gBAAA2K,EAAiB,YAAjB,gBAAAqL,EAA0B,0BAC1BH,EAAe,2BACfK,KAAAD,IAAAJ,EAAe,WAAf,gBAAAI,EAAuB,YAAvB,gBAAAC,EAAgC,0BAChC,GAEI5I,IAAOuO,GAAYzO,GAAMpN,CAAO,GAChCkc,IAAY/G,GAAc/H,GAAM,CAAC;AACvC,SAAA8O,EAAU,YAAY5O,GAAM,GAAGwO,CAAqB,GACpDI,EAAU,SAAS,GAAG,GAAG,GAAG,CAAC,GACfnG,GAAYmG,GAAWlc,CAAO;AAE9C;ACdO,SAASmc,GAAQ/O,GAAMpN,GAAS;AACrC,QAAMsV,IAAQN,GAAO5H,CAAI,GACnBiJ,IAAO,CAACN,GAAYT,GAAOtV,CAAO,IAAI,CAACic,GAAgB3G,GAAOtV,CAAO;AAK3E,SAAO,KAAK,MAAMqW,IAAOV,EAAkB,IAAI;AACjD;ACtDO,SAASyG,GAAgBzC,GAAQ0C,GAAc;AACpD,QAAMC,IAAO3C,IAAS,IAAI,MAAM,IAC1B4C,IAAS,KAAK,IAAI5C,CAAM,EAAE,SAAQ,EAAG,SAAS0C,GAAc,GAAG;AACrE,SAAOC,IAAOC;AAChB;ACWO,MAAMC,KAAkB;AAAA;AAAA,EAE7B,EAAEpP,GAAM8K,GAAO;AAUb,UAAMuE,IAAarP,EAAK,eAElBE,IAAOmP,IAAa,IAAIA,IAAa,IAAIA;AAC/C,WAAOL,GAAgBlE,MAAU,OAAO5K,IAAO,MAAMA,GAAM4K,EAAM,MAAM;AAAA,EACxE;AAAA;AAAA,EAGD,EAAE9K,GAAM8K,GAAO;AACb,UAAM7K,IAAQD,EAAK;AACnB,WAAO8K,MAAU,MAAM,OAAO7K,IAAQ,CAAC,IAAI+O,GAAgB/O,IAAQ,GAAG,CAAC;AAAA,EACxE;AAAA;AAAA,EAGD,EAAED,GAAM8K,GAAO;AACb,WAAOkE,GAAgBhP,EAAK,QAAS,GAAE8K,EAAM,MAAM;AAAA,EACpD;AAAA;AAAA,EAGD,EAAE9K,GAAM8K,GAAO;AACb,UAAMwE,IAAqBtP,EAAK,SAAQ,IAAK,MAAM,IAAI,OAAO;AAE9D,YAAQ8K,GAAK;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AACH,eAAOwE,EAAmB;MAC5B,KAAK;AACH,eAAOA;AAAA,MACT,KAAK;AACH,eAAOA,EAAmB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL;AACE,eAAOA,MAAuB,OAAO,SAAS;AAAA,IACjD;AAAA,EACF;AAAA;AAAA,EAGD,EAAEtP,GAAM8K,GAAO;AACb,WAAOkE,GAAgBhP,EAAK,SAAU,IAAG,MAAM,IAAI8K,EAAM,MAAM;AAAA,EAChE;AAAA;AAAA,EAGD,EAAE9K,GAAM8K,GAAO;AACb,WAAOkE,GAAgBhP,EAAK,SAAU,GAAE8K,EAAM,MAAM;AAAA,EACrD;AAAA;AAAA,EAGD,EAAE9K,GAAM8K,GAAO;AACb,WAAOkE,GAAgBhP,EAAK,WAAY,GAAE8K,EAAM,MAAM;AAAA,EACvD;AAAA;AAAA,EAGD,EAAE9K,GAAM8K,GAAO;AACb,WAAOkE,GAAgBhP,EAAK,WAAY,GAAE8K,EAAM,MAAM;AAAA,EACvD;AAAA;AAAA,EAGD,EAAE9K,GAAM8K,GAAO;AACb,UAAMyE,IAAiBzE,EAAM,QACvB0E,IAAexP,EAAK,mBACpByP,IAAoB,KAAK;AAAA,MAC7BD,IAAe,KAAK,IAAI,IAAID,IAAiB,CAAC;AAAA,IACpD;AACI,WAAOP,GAAgBS,GAAmB3E,EAAM,MAAM;AAAA,EACvD;AACH,GCnFM4E,KAAgB;AAAA,EACpB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,OAAO;AACT,GAgDaC,KAAa;AAAA;AAAA,EAExB,GAAG,SAAU3P,GAAM8K,GAAO2B,GAAU;AAClC,UAAMmD,IAAM5P,EAAK,YAAa,IAAG,IAAI,IAAI;AACzC,YAAQ8K,GAAK;AAAA,MAEX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO2B,EAAS,IAAImD,GAAK,EAAE,OAAO,cAAa,CAAE;AAAA,MAEnD,KAAK;AACH,eAAOnD,EAAS,IAAImD,GAAK,EAAE,OAAO,SAAQ,CAAE;AAAA,MAE9C,KAAK;AAAA,MACL;AACE,eAAOnD,EAAS,IAAImD,GAAK,EAAE,OAAO,OAAM,CAAE;AAAA,IAC7C;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAU5P,GAAM8K,GAAO2B,GAAU;AAElC,QAAI3B,MAAU,MAAM;AAClB,YAAMuE,IAAarP,EAAK,eAElBE,IAAOmP,IAAa,IAAIA,IAAa,IAAIA;AAC/C,aAAO5C,EAAS,cAAcvM,GAAM,EAAE,MAAM,OAAM,CAAE;AAAA,IACrD;AAED,WAAOkP,GAAgB,EAAEpP,GAAM8K,CAAK;AAAA,EACrC;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO2B,GAAU7Z,GAAS;AAC3C,UAAMid,IAAiBpB,GAAYzO,GAAMpN,CAAO,GAE1Ckd,IAAWD,IAAiB,IAAIA,IAAiB,IAAIA;AAG3D,QAAI/E,MAAU,MAAM;AAClB,YAAMiF,IAAeD,IAAW;AAChC,aAAOd,GAAgBe,GAAc,CAAC;AAAA,IACvC;AAGD,WAAIjF,MAAU,OACL2B,EAAS,cAAcqD,GAAU,EAAE,MAAM,OAAM,CAAE,IAInDd,GAAgBc,GAAUhF,EAAM,MAAM;AAAA,EAC9C;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO;AACxB,UAAMkF,IAAc7G,GAAenJ,CAAI;AAGvC,WAAOgP,GAAgBgB,GAAalF,EAAM,MAAM;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWD,GAAG,SAAU9K,GAAM8K,GAAO;AACxB,UAAM5K,IAAOF,EAAK;AAClB,WAAOgP,GAAgB9O,GAAM4K,EAAM,MAAM;AAAA,EAC1C;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO2B,GAAU;AAClC,UAAMC,IAAU,KAAK,MAAM1M,EAAK,SAAU,IAAG,KAAK,CAAC;AACnD,YAAQ8K,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAO4B,CAAO;AAAA,MAEvB,KAAK;AACH,eAAOsC,GAAgBtC,GAAS,CAAC;AAAA,MAEnC,KAAK;AACH,eAAOD,EAAS,cAAcC,GAAS,EAAE,MAAM,UAAS,CAAE;AAAA,MAE5D,KAAK;AACH,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AAAA,MACL;AACE,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAU1M,GAAM8K,GAAO2B,GAAU;AAClC,UAAMC,IAAU,KAAK,MAAM1M,EAAK,SAAU,IAAG,KAAK,CAAC;AACnD,YAAQ8K,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAO4B,CAAO;AAAA,MAEvB,KAAK;AACH,eAAOsC,GAAgBtC,GAAS,CAAC;AAAA,MAEnC,KAAK;AACH,eAAOD,EAAS,cAAcC,GAAS,EAAE,MAAM,UAAS,CAAE;AAAA,MAE5D,KAAK;AACH,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AAAA,MACL;AACE,eAAOD,EAAS,QAAQC,GAAS;AAAA,UAC/B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAU1M,GAAM8K,GAAO2B,GAAU;AAClC,UAAMxM,IAAQD,EAAK;AACnB,YAAQ8K,GAAK;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AACH,eAAOsE,GAAgB,EAAEpP,GAAM8K,CAAK;AAAA,MAEtC,KAAK;AACH,eAAO2B,EAAS,cAAcxM,IAAQ,GAAG,EAAE,MAAM,QAAO,CAAE;AAAA,MAE5D,KAAK;AACH,eAAOwM,EAAS,MAAMxM,GAAO;AAAA,UAC3B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAOwM,EAAS,MAAMxM,GAAO;AAAA,UAC3B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AAAA,MACL;AACE,eAAOwM,EAAS,MAAMxM,GAAO,EAAE,OAAO,QAAQ,SAAS,aAAY,CAAE;AAAA,IACxE;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUD,GAAM8K,GAAO2B,GAAU;AAClC,UAAMxM,IAAQD,EAAK;AACnB,YAAQ8K,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAO7K,IAAQ,CAAC;AAAA,MAEzB,KAAK;AACH,eAAO+O,GAAgB/O,IAAQ,GAAG,CAAC;AAAA,MAErC,KAAK;AACH,eAAOwM,EAAS,cAAcxM,IAAQ,GAAG,EAAE,MAAM,QAAO,CAAE;AAAA,MAE5D,KAAK;AACH,eAAOwM,EAAS,MAAMxM,GAAO;AAAA,UAC3B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAOwM,EAAS,MAAMxM,GAAO;AAAA,UAC3B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AAAA,MACL;AACE,eAAOwM,EAAS,MAAMxM,GAAO,EAAE,OAAO,QAAQ,SAAS,aAAY,CAAE;AAAA,IACxE;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUD,GAAM8K,GAAO2B,GAAU7Z,GAAS;AAC3C,UAAMqd,IAAOlB,GAAQ/O,GAAMpN,CAAO;AAElC,WAAIkY,MAAU,OACL2B,EAAS,cAAcwD,GAAM,EAAE,MAAM,OAAM,CAAE,IAG/CjB,GAAgBiB,GAAMnF,EAAM,MAAM;AAAA,EAC1C;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO2B,GAAU;AAClC,UAAMyD,IAAU1B,GAAWxO,CAAI;AAE/B,WAAI8K,MAAU,OACL2B,EAAS,cAAcyD,GAAS,EAAE,MAAM,OAAM,CAAE,IAGlDlB,GAAgBkB,GAASpF,EAAM,MAAM;AAAA,EAC7C;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO2B,GAAU;AAClC,WAAI3B,MAAU,OACL2B,EAAS,cAAczM,EAAK,QAAS,GAAE,EAAE,MAAM,OAAM,CAAE,IAGzDoP,GAAgB,EAAEpP,GAAM8K,CAAK;AAAA,EACrC;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO2B,GAAU;AAClC,UAAM0D,IAAY5B,GAAavO,CAAI;AAEnC,WAAI8K,MAAU,OACL2B,EAAS,cAAc0D,GAAW,EAAE,MAAM,YAAW,CAAE,IAGzDnB,GAAgBmB,GAAWrF,EAAM,MAAM;AAAA,EAC/C;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO2B,GAAU;AAClC,UAAM2D,IAAYpQ,EAAK;AACvB,YAAQ8K,GAAK;AAAA,MAEX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO2B,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AAAA,MACL;AACE,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUpQ,GAAM8K,GAAO2B,GAAU7Z,GAAS;AAC3C,UAAMwd,IAAYpQ,EAAK,UACjBqQ,KAAkBD,IAAYxd,EAAQ,eAAe,KAAK,KAAK;AACrE,YAAQkY,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAOuF,CAAc;AAAA,MAE9B,KAAK;AACH,eAAOrB,GAAgBqB,GAAgB,CAAC;AAAA,MAE1C,KAAK;AACH,eAAO5D,EAAS,cAAc4D,GAAgB,EAAE,MAAM,MAAK,CAAE;AAAA,MAC/D,KAAK;AACH,eAAO5D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AAAA,MACL;AACE,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUpQ,GAAM8K,GAAO2B,GAAU7Z,GAAS;AAC3C,UAAMwd,IAAYpQ,EAAK,UACjBqQ,KAAkBD,IAAYxd,EAAQ,eAAe,KAAK,KAAK;AACrE,YAAQkY,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAOuF,CAAc;AAAA,MAE9B,KAAK;AACH,eAAOrB,GAAgBqB,GAAgBvF,EAAM,MAAM;AAAA,MAErD,KAAK;AACH,eAAO2B,EAAS,cAAc4D,GAAgB,EAAE,MAAM,MAAK,CAAE;AAAA,MAC/D,KAAK;AACH,eAAO5D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AAAA,MACL;AACE,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUpQ,GAAM8K,GAAO2B,GAAU;AAClC,UAAM2D,IAAYpQ,EAAK,UACjBsQ,IAAeF,MAAc,IAAI,IAAIA;AAC3C,YAAQtF,GAAK;AAAA,MAEX,KAAK;AACH,eAAO,OAAOwF,CAAY;AAAA,MAE5B,KAAK;AACH,eAAOtB,GAAgBsB,GAAcxF,EAAM,MAAM;AAAA,MAEnD,KAAK;AACH,eAAO2B,EAAS,cAAc6D,GAAc,EAAE,MAAM,MAAK,CAAE;AAAA,MAE7D,KAAK;AACH,eAAO7D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AACH,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MAEH,KAAK;AAAA,MACL;AACE,eAAO3D,EAAS,IAAI2D,GAAW;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUpQ,GAAM8K,GAAO2B,GAAU;AAElC,UAAM6C,IADQtP,EAAK,aACgB,MAAM,IAAI,OAAO;AAEpD,YAAQ8K,GAAK;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AACH,eAAO2B,EAAS,UAAU6C,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MACH,KAAK;AACH,eAAO7C,EACJ,UAAU6C,GAAoB;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACrB,CAAW,EACA;MACL,KAAK;AACH,eAAO7C,EAAS,UAAU6C,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MACH,KAAK;AAAA,MACL;AACE,eAAO7C,EAAS,UAAU6C,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUtP,GAAM8K,GAAO2B,GAAU;AAClC,UAAM8D,IAAQvQ,EAAK;AACnB,QAAIsP;AASJ,YARIiB,MAAU,KACZjB,IAAqBI,GAAc,OAC1Ba,MAAU,IACnBjB,IAAqBI,GAAc,WAEnCJ,IAAqBiB,IAAQ,MAAM,IAAI,OAAO,MAGxCzF,GAAK;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AACH,eAAO2B,EAAS,UAAU6C,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MACH,KAAK;AACH,eAAO7C,EACJ,UAAU6C,GAAoB;AAAA,UAC7B,OAAO;AAAA,UACP,SAAS;AAAA,QACrB,CAAW,EACA;MACL,KAAK;AACH,eAAO7C,EAAS,UAAU6C,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MACH,KAAK;AAAA,MACL;AACE,eAAO7C,EAAS,UAAU6C,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUtP,GAAM8K,GAAO2B,GAAU;AAClC,UAAM8D,IAAQvQ,EAAK;AACnB,QAAIsP;AAWJ,YAVIiB,KAAS,KACXjB,IAAqBI,GAAc,UAC1Ba,KAAS,KAClBjB,IAAqBI,GAAc,YAC1Ba,KAAS,IAClBjB,IAAqBI,GAAc,UAEnCJ,IAAqBI,GAAc,OAG7B5E,GAAK;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO2B,EAAS,UAAU6C,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MACH,KAAK;AACH,eAAO7C,EAAS,UAAU6C,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,MACH,KAAK;AAAA,MACL;AACE,eAAO7C,EAAS,UAAU6C,GAAoB;AAAA,UAC5C,OAAO;AAAA,UACP,SAAS;AAAA,QACnB,CAAS;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUtP,GAAM8K,GAAO2B,GAAU;AAClC,QAAI3B,MAAU,MAAM;AAClB,UAAIyF,IAAQvQ,EAAK,SAAQ,IAAK;AAC9B,aAAIuQ,MAAU,MAAGA,IAAQ,KAClB9D,EAAS,cAAc8D,GAAO,EAAE,MAAM,OAAM,CAAE;AAAA,IACtD;AAED,WAAOnB,GAAgB,EAAEpP,GAAM8K,CAAK;AAAA,EACrC;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO2B,GAAU;AAClC,WAAI3B,MAAU,OACL2B,EAAS,cAAczM,EAAK,SAAU,GAAE,EAAE,MAAM,OAAM,CAAE,IAG1DoP,GAAgB,EAAEpP,GAAM8K,CAAK;AAAA,EACrC;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO2B,GAAU;AAClC,UAAM8D,IAAQvQ,EAAK,SAAQ,IAAK;AAEhC,WAAI8K,MAAU,OACL2B,EAAS,cAAc8D,GAAO,EAAE,MAAM,OAAM,CAAE,IAGhDvB,GAAgBuB,GAAOzF,EAAM,MAAM;AAAA,EAC3C;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO2B,GAAU;AAClC,QAAI8D,IAAQvQ,EAAK;AAGjB,WAFIuQ,MAAU,MAAGA,IAAQ,KAErBzF,MAAU,OACL2B,EAAS,cAAc8D,GAAO,EAAE,MAAM,OAAM,CAAE,IAGhDvB,GAAgBuB,GAAOzF,EAAM,MAAM;AAAA,EAC3C;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO2B,GAAU;AAClC,WAAI3B,MAAU,OACL2B,EAAS,cAAczM,EAAK,WAAY,GAAE,EAAE,MAAM,SAAQ,CAAE,IAG9DoP,GAAgB,EAAEpP,GAAM8K,CAAK;AAAA,EACrC;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO2B,GAAU;AAClC,WAAI3B,MAAU,OACL2B,EAAS,cAAczM,EAAK,WAAY,GAAE,EAAE,MAAM,SAAQ,CAAE,IAG9DoP,GAAgB,EAAEpP,GAAM8K,CAAK;AAAA,EACrC;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO;AACxB,WAAOsE,GAAgB,EAAEpP,GAAM8K,CAAK;AAAA,EACrC;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO0F,GAAW;AACnC,UAAMC,IAAiBzQ,EAAK;AAE5B,QAAIyQ,MAAmB;AACrB,aAAO;AAGT,YAAQ3F,GAAK;AAAA,MAEX,KAAK;AACH,eAAO4F,GAAkCD,CAAc;AAAA,MAKzD,KAAK;AAAA,MACL,KAAK;AACH,eAAOE,GAAeF,CAAc;AAAA,MAKtC,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AACE,eAAOE,GAAeF,GAAgB,GAAG;AAAA,IAC5C;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUzQ,GAAM8K,GAAO0F,GAAW;AACnC,UAAMC,IAAiBzQ,EAAK;AAE5B,YAAQ8K,GAAK;AAAA,MAEX,KAAK;AACH,eAAO4F,GAAkCD,CAAc;AAAA,MAKzD,KAAK;AAAA,MACL,KAAK;AACH,eAAOE,GAAeF,CAAc;AAAA,MAKtC,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AACE,eAAOE,GAAeF,GAAgB,GAAG;AAAA,IAC5C;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUzQ,GAAM8K,GAAO0F,GAAW;AACnC,UAAMC,IAAiBzQ,EAAK;AAE5B,YAAQ8K,GAAK;AAAA,MAEX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO,QAAQ8F,GAAoBH,GAAgB,GAAG;AAAA,MAExD,KAAK;AAAA,MACL;AACE,eAAO,QAAQE,GAAeF,GAAgB,GAAG;AAAA,IACpD;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUzQ,GAAM8K,GAAO0F,GAAW;AACnC,UAAMC,IAAiBzQ,EAAK;AAE5B,YAAQ8K,GAAK;AAAA,MAEX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO,QAAQ8F,GAAoBH,GAAgB,GAAG;AAAA,MAExD,KAAK;AAAA,MACL;AACE,eAAO,QAAQE,GAAeF,GAAgB,GAAG;AAAA,IACpD;AAAA,EACF;AAAA;AAAA,EAGD,GAAG,SAAUzQ,GAAM8K,GAAO0F,GAAW;AACnC,UAAMK,IAAY,KAAK,MAAM7Q,EAAK,QAAO,IAAK,GAAI;AAClD,WAAOgP,GAAgB6B,GAAW/F,EAAM,MAAM;AAAA,EAC/C;AAAA;AAAA,EAGD,GAAG,SAAU9K,GAAM8K,GAAO0F,GAAW;AACnC,UAAMK,IAAY7Q,EAAK;AACvB,WAAOgP,GAAgB6B,GAAW/F,EAAM,MAAM;AAAA,EAC/C;AACH;AAEA,SAAS8F,GAAoBE,GAAQC,IAAY,IAAI;AACnD,QAAM7B,IAAO4B,IAAS,IAAI,MAAM,KAC1BE,IAAY,KAAK,IAAIF,CAAM,GAC3BP,IAAQ,KAAK,MAAMS,IAAY,EAAE,GACjCC,IAAUD,IAAY;AAC5B,SAAIC,MAAY,IACP/B,IAAO,OAAOqB,CAAK,IAErBrB,IAAO,OAAOqB,CAAK,IAAIQ,IAAY/B,GAAgBiC,GAAS,CAAC;AACtE;AAEA,SAASP,GAAkCI,GAAQC,GAAW;AAC5D,SAAID,IAAS,OAAO,KACLA,IAAS,IAAI,MAAM,OAClB9B,GAAgB,KAAK,IAAI8B,CAAM,IAAI,IAAI,CAAC,IAEjDH,GAAeG,GAAQC,CAAS;AACzC;AAEA,SAASJ,GAAeG,GAAQC,IAAY,IAAI;AAC9C,QAAM7B,IAAO4B,IAAS,IAAI,MAAM,KAC1BE,IAAY,KAAK,IAAIF,CAAM,GAC3BP,IAAQvB,GAAgB,KAAK,MAAMgC,IAAY,EAAE,GAAG,CAAC,GACrDC,IAAUjC,GAAgBgC,IAAY,IAAI,CAAC;AACjD,SAAO9B,IAAOqB,IAAQQ,IAAYE;AACpC;ACvwBA,MAAMC,KAAoB,CAAChE,GAAS5B,MAAe;AACjD,UAAQ4B,GAAO;AAAA,IACb,KAAK;AACH,aAAO5B,EAAW,KAAK,EAAE,OAAO,QAAS,CAAA;AAAA,IAC3C,KAAK;AACH,aAAOA,EAAW,KAAK,EAAE,OAAO,SAAU,CAAA;AAAA,IAC5C,KAAK;AACH,aAAOA,EAAW,KAAK,EAAE,OAAO,OAAQ,CAAA;AAAA,IAC1C,KAAK;AAAA,IACL;AACE,aAAOA,EAAW,KAAK,EAAE,OAAO,OAAQ,CAAA;AAAA,EAC3C;AACH,GAEM6F,KAAoB,CAACjE,GAAS5B,MAAe;AACjD,UAAQ4B,GAAO;AAAA,IACb,KAAK;AACH,aAAO5B,EAAW,KAAK,EAAE,OAAO,QAAS,CAAA;AAAA,IAC3C,KAAK;AACH,aAAOA,EAAW,KAAK,EAAE,OAAO,SAAU,CAAA;AAAA,IAC5C,KAAK;AACH,aAAOA,EAAW,KAAK,EAAE,OAAO,OAAQ,CAAA;AAAA,IAC1C,KAAK;AAAA,IACL;AACE,aAAOA,EAAW,KAAK,EAAE,OAAO,OAAQ,CAAA;AAAA,EAC3C;AACH,GAEM8F,KAAwB,CAAClE,GAAS5B,MAAe;AACrD,QAAMwB,IAAcI,EAAQ,MAAM,WAAW,KAAK,CAAA,GAC5CmE,IAAcvE,EAAY,CAAC,GAC3BwE,IAAcxE,EAAY,CAAC;AAEjC,MAAI,CAACwE;AACH,WAAOJ,GAAkBhE,GAAS5B,CAAU;AAG9C,MAAIiG;AAEJ,UAAQF,GAAW;AAAA,IACjB,KAAK;AACH,MAAAE,IAAiBjG,EAAW,SAAS,EAAE,OAAO,QAAS,CAAA;AACvD;AAAA,IACF,KAAK;AACH,MAAAiG,IAAiBjG,EAAW,SAAS,EAAE,OAAO,SAAU,CAAA;AACxD;AAAA,IACF,KAAK;AACH,MAAAiG,IAAiBjG,EAAW,SAAS,EAAE,OAAO,OAAQ,CAAA;AACtD;AAAA,IACF,KAAK;AAAA,IACL;AACE,MAAAiG,IAAiBjG,EAAW,SAAS,EAAE,OAAO,OAAQ,CAAA;AACtD;AAAA,EACH;AAED,SAAOiG,EACJ,QAAQ,YAAYL,GAAkBG,GAAa/F,CAAU,CAAC,EAC9D,QAAQ,YAAY6F,GAAkBG,GAAahG,CAAU,CAAC;AACnE,GAEakG,KAAiB;AAAA,EAC5B,GAAGL;AAAA,EACH,GAAGC;AACL,GC/DMK,KAAmB,QACnBC,KAAkB,QAElBC,KAAc,CAAC,KAAK,MAAM,MAAM,MAAM;AAErC,SAASC,GAA0B9G,GAAO;AAC/C,SAAO2G,GAAiB,KAAK3G,CAAK;AACpC;AAEO,SAAS+G,GAAyB/G,GAAO;AAC9C,SAAO4G,GAAgB,KAAK5G,CAAK;AACnC;AAEO,SAASgH,GAA0BhH,GAAOiH,GAAQze,GAAO;AAC9D,QAAM0e,IAAWxS,GAAQsL,GAAOiH,GAAQze,CAAK;AAE7C,MADA,QAAQ,KAAK0e,CAAQ,GACjBL,GAAY,SAAS7G,CAAK;AAAG,UAAM,IAAI,WAAWkH,CAAQ;AAChE;AAEA,SAASxS,GAAQsL,GAAOiH,GAAQze,GAAO;AACrC,QAAM2e,IAAUnH,EAAM,CAAC,MAAM,MAAM,UAAU;AAC7C,SAAO,SAASA,EAAM,YAAa,CAAA,mBAAmBA,CAAK,YAAYiH,CAAM,sBAAsBE,CAAO,mBAAmB3e,CAAK;AACpI;ACKA,MAAM4e,KACJ,yDAIIC,KAA6B,qCAE7BC,KAAsB,gBACtBC,KAAoB,OACpBC,KAAgC;AAsS/B,SAASP,GAAO/R,GAAMuS,GAAW3f,GAAS;A7D1UjD,MAAA2K,GAAAqL,GAAAC,GAAAC,GAAAzB,GAAAmL,GAAAC,GAAAC;A6D2UE,QAAMjK,IAAiBC,MACjBiK,KAAS/f,KAAA,gBAAAA,EAAS,WAAU6V,EAAe,UAAUmK,IAErDlE,KACJ9b,KAAA,gBAAAA,EAAS,4BACTgW,KAAArL,IAAA3K,KAAA,gBAAAA,EAAS,WAAT,gBAAA2K,EAAiB,YAAjB,gBAAAqL,EAA0B,0BAC1BH,EAAe,2BACfK,KAAAD,IAAAJ,EAAe,WAAf,gBAAAI,EAAuB,YAAvB,gBAAAC,EAAgC,0BAChC,GAEIC,KACJnW,KAAA,gBAAAA,EAAS,mBACT4f,KAAAnL,IAAAzU,KAAA,gBAAAA,EAAS,WAAT,gBAAAyU,EAAiB,YAAjB,gBAAAmL,EAA0B,iBAC1B/J,EAAe,kBACfiK,KAAAD,IAAAhK,EAAe,WAAf,gBAAAgK,EAAuB,YAAvB,gBAAAC,EAAgC,iBAChC,GAEIG,IAAejL,GAAO5H,CAAI;AAEhC,MAAI,CAACyK,GAAQoI,CAAY;AACvB,UAAM,IAAI,WAAW,oBAAoB;AAG3C,MAAIC,IAAQP,EACT,MAAMJ,EAA0B,EAChC,IAAI,CAACY,MAAc;AAClB,UAAMC,IAAiBD,EAAU,CAAC;AAClC,QAAIC,MAAmB,OAAOA,MAAmB,KAAK;AACpD,YAAMC,IAAgBzB,GAAewB,CAAc;AACnD,aAAOC,EAAcF,GAAWJ,EAAO,UAAU;AAAA,IAClD;AACD,WAAOI;AAAA,EACb,CAAK,EACA,KAAK,EAAE,EACP,MAAMb,EAAsB,EAC5B,IAAI,CAACa,MAAc;AAElB,QAAIA,MAAc;AAChB,aAAO,EAAE,SAAS,IAAO,OAAO,IAAG;AAGrC,UAAMC,IAAiBD,EAAU,CAAC;AAClC,QAAIC,MAAmB;AACrB,aAAO,EAAE,SAAS,IAAO,OAAOE,GAAmBH,CAAS;AAG9D,QAAIpD,GAAWqD,CAAc;AAC3B,aAAO,EAAE,SAAS,IAAM,OAAOD,EAAS;AAG1C,QAAIC,EAAe,MAAMV,EAA6B;AACpD,YAAM,IAAI;AAAA,QACR,mEACEU,IACA;AAAA,MACZ;AAGM,WAAO,EAAE,SAAS,IAAO,OAAOD,EAAS;AAAA,EAC/C,CAAK;AAGH,EAAIJ,EAAO,SAAS,iBAClBG,IAAQH,EAAO,SAAS,aAAaE,GAAcC,CAAK;AAG1D,QAAMK,IAAmB;AAAA,IACvB,uBAAAzE;AAAA,IACA,cAAA3F;AAAA,IACA,QAAA4J;AAAA,EACJ;AAEE,SAAOG,EACJ,IAAI,CAACM,MAAS;AACb,QAAI,CAACA,EAAK;AAAS,aAAOA,EAAK;AAE/B,UAAMtI,IAAQsI,EAAK;AAEnB,KACG,EAACxgB,KAAA,QAAAA,EAAS,gCACTif,GAAyB/G,CAAK,KAC/B,EAAClY,KAAA,QAAAA,EAAS,iCACTgf,GAA0B9G,CAAK,MAEjCgH,GAA0BhH,GAAOyH,GAAW,OAAOvS,CAAI,CAAC;AAG1D,UAAMqT,IAAY1D,GAAW7E,EAAM,CAAC,CAAC;AACrC,WAAOuI,EAAUR,GAAc/H,GAAO6H,EAAO,UAAUQ,CAAgB;AAAA,EAC7E,CAAK,EACA,KAAK,EAAE;AACZ;AAEA,SAASD,GAAmB5f,GAAO;AACjC,QAAMggB,IAAUhgB,EAAM,MAAM8e,EAAmB;AAE/C,SAAKkB,IAIEA,EAAQ,CAAC,EAAE,QAAQjB,IAAmB,GAAG,IAHvC/e;AAIX;AC1ZO,SAASigB,GAAevT,GAAM;AACnC,QAAMkI,IAAQN,GAAO5H,CAAI,GACnBE,IAAOgI,EAAM,eACbsL,IAAatL,EAAM,YACnBuL,IAAiB1L,GAAc/H,GAAM,CAAC;AAC5C,SAAAyT,EAAe,YAAYvT,GAAMsT,IAAa,GAAG,CAAC,GAClDC,EAAe,SAAS,GAAG,GAAG,GAAG,CAAC,GAC3BA,EAAe;AACxB;ACRO,SAASA,GAAezT,GAAM;AACnC,QAAMkI,IAAQN,GAAO5H,CAAI,GACnBC,IAAQiI,EAAM;AACpB,SAAAA,EAAM,YAAYA,EAAM,YAAa,GAAEjI,IAAQ,GAAG,CAAC,GACnDiI,EAAM,SAAS,GAAG,GAAG,GAAG,CAAC,GAClBA;AACT;ACNO,SAASwL,GAAQ1T,GAAM2T,GAAe;AAC3C,QAAMzL,IAAQN,GAAO5H,CAAI,GACnB4T,IAAiBhM,GAAO+L,CAAa;AAC3C,SAAOzL,EAAM,QAAO,IAAK0L,EAAe,QAAO;AACjD;ACJO,SAASC,GAAS7T,GAAM2T,GAAe;AAC5C,QAAMzL,IAAQN,GAAO5H,CAAI,GACnB4T,IAAiBhM,GAAO+L,CAAa;AAC3C,SAAO,CAACzL,IAAQ,CAAC0L;AACnB;ACCO,SAASE,GAAYlK,GAAUC,GAAW;AAC/C,QAAMkK,IAAYnM,GAAOgC,CAAQ,GAC3BoK,IAAapM,GAAOiC,CAAS;AACnC,SACEkK,EAAU,YAAW,MAAOC,EAAW,YAAa,KACpDD,EAAU,SAAQ,MAAOC,EAAW,SAAU;AAElD;ACZO,SAASC,GAAQjU,GAAMoI,GAAY;AACxC,QAAMF,IAAQN,GAAO5H,CAAI;AACzB,SAAAkI,EAAM,QAAQE,CAAU,GACjBF;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCuRoCzZ,EAAC,EAAA;AAAA,MAAA;;;;QAASA,EAAK,EAAA;AAAA,MAAA;AAAA;;AAAzC,MAAAoD,EAA4Cb,GAAAkjB,GAAApiB,CAAA;AAAA;;;;;;;;;;;;MAgBlBrD,EAAI,EAAA,CAAA;AAAA;;AAA9B,MAAAoD,EAAiCb,GAAAkjB,GAAApiB,CAAA;AAAA;;;;MAAPrD,EAAI,EAAA;;;;;;;;YAwBS0lB;AAAA;AAAA,IAAA1lB,MAAE,QAAO,IAAA;AAAA;;;4IAPtCsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAM,CAAA,yBACjBsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAG,CAAA,wBACdsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAK,CAAA,yEAGf4b;AAAA;AAAA,QAAU5b,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAa,CAAA;AAAA,MAAA,IAAI,MAAM,oBAD9BolB;AAAA;AAAA,QAASplB,EAAG,EAAA;AAAA;AAAA,QAAAA;WAASilB;AAAA;AAAA,QAAQjlB,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAI,EAAA;AAAA,MAAA,CAAA;AAAA;;AANtD,MAAAoD,EAUQb,GAAAwS,GAAA1R,CAAA,GADNf,EAA0DyS,GAAAH,CAAA;;;;QARhD5U,EAAW,EAAA;AAAA,MAAA;;;AAQoB,MAAAK,EAAA,CAAA;AAAA,MAAA,QAAAqlB,OAAAA;AAAA,MAAA1lB,MAAE,QAAO,IAAA,OAAA2E,GAAAiC,GAAA8e,CAAA;yBAPtCpC;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAM;yBACjBsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAG;yBACdsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAK;yBAGf4b;AAAA;AAAA,QAAU5b,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAa,CAAA;AAAA,MAAA,IAAI;+BADxBolB;AAAA;AAAA,QAASplB,EAAG,EAAA;AAAA;AAAA,QAAAA;WAASilB;AAAA;AAAA,QAAQjlB,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAI,EAAA;AAAA,MAAA,CAAA;AAAA;;;;;;;YAkBX0lB;AAAA;AAAA,IAAA1lB,MAAE,QAAO,IAAA;AAAA;;;4IATtCsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAM,CAAA,yBACjBsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAG,CAAA,wBACdsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAK,CAAA,6DAKf4b;AAAA;AAAA,QAAU5b,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAa,CAAA;AAAA,MAAA,IAAI,MAAM,iBAHjC4b;AAAA;AAAA,QAAU5b,EAAC,EAAA;AAAA,QAAA,oBAAM,KAAI;AAAA,MAAA,CAAA,GAClBqF;AAAA,QAAA0P;AAAA,QAAA;AAAA;AAAA,QAAA/U,EAAS,CAAA,KAAA4b;AAAA;AAAA,UAAU5b;;UAAGA,EAAa,CAAA;AAAA,QAAA;AAAA,MAAA,oBACnColB;AAAA;AAAA,QAASplB,EAAG,EAAA;AAAA;AAAA,QAAAA;WAASilB;AAAA;AAAA,QAAQjlB,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAI,EAAA;AAAA,MAAA,CAAA;AAAA;;AARtD,MAAAoD,EAYQb,GAAAwS,GAAA1R,CAAA,GADNf,EAA0DyS,GAAAH,CAAA;;;;QAVhD5U,EAAW,EAAA;AAAA,MAAA;;;AAUoB,MAAAK,EAAA,CAAA;AAAA,MAAA,QAAAqlB,OAAAA;AAAA,MAAA1lB,MAAE,QAAO,IAAA,OAAA2E,GAAAiC,GAAA8e,CAAA;yBATtCpC;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAM;yBACjBsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAG;yBACdsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAK;yBAKf4b;AAAA;AAAA,QAAU5b,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAa,CAAA;AAAA,MAAA,IAAI;4BAH3B4b;AAAA;AAAA,QAAU5b,EAAC,EAAA;AAAA,QAAA,oBAAM,KAAI;AAAA,MAAA,CAAA;cAClBqF;AAAA,QAAA0P;AAAA,QAAA;AAAA;AAAA,QAAA/U,EAAS,CAAA,KAAA4b;AAAA;AAAA,UAAU5b;;UAAGA,EAAa,CAAA;AAAA,QAAA;AAAA,MAAA;+BACnColB;AAAA;AAAA,QAASplB,EAAG,EAAA;AAAA;AAAA,QAAAA;WAASilB;AAAA;AAAA,QAAQjlB,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAI,EAAA;AAAA,MAAA,CAAA;AAAA;;;;;;;YAgBX2lB;AAAA;AAAA,IAAA3lB,MAAE,QAAO,IAAA;AAAA;;;qJAPtCsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAM,CAAA,yBACjBsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAG,CAAA,wBACdsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAK,CAAA,yEAGf4b;AAAA;AAAA,QAAU5b,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAa,CAAA;AAAA,MAAA,IAAI,MAAM,oBAD9BolB;AAAA;AAAA,QAASplB,EAAG,EAAA;AAAA;AAAA,QAAAA;WAASilB;AAAA;AAAA,QAAQjlB,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAI,EAAA;AAAA,MAAA,CAAA;AAAA;;AANtD,MAAAoD,EAUQb,GAAAwS,GAAA1R,CAAA,GADNf,EAA0DyS,GAAAH,CAAA;;;;QARhD5U,EAAW,EAAA;AAAA,MAAA;;;AAQoB,MAAAK,EAAA,CAAA;AAAA,MAAA,QAAAslB,OAAAA;AAAA,MAAA3lB,MAAE,QAAO,IAAA,OAAA2E,GAAAihB,GAAAD,CAAA;yBAPtCrC;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAM;yBACjBsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAG;yBACdsjB;AAAA;AAAA,QAAOtjB,EAAC,EAAA;AAAA,QAAE;AAAA,MAAK;yBAGf4b;AAAA;AAAA,QAAU5b,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAa,CAAA;AAAA,MAAA,IAAI;+BADxBolB;AAAA;AAAA,QAASplB,EAAG,EAAA;AAAA;AAAA,QAAAA;WAASilB;AAAA;AAAA,QAAQjlB,EAAC,EAAA;AAAA;AAAA,QAAEA,EAAI,EAAA;AAAA,MAAA,CAAA;AAAA;;;;;;;;;IAlE7CA,EAAO,EAAA;AAAA,EAAA;yBAAZ,QAAIS,KAAA;;;;IAgBCT,EAAM,EAAA;AAAA,EAAA;yBAAX,QAAIS,KAAA;;;;IAeHT,EAAkB,EAAA;AAAA,EAAA;yBAAvB,QAAIS,KAAA;;;;IAaCT,EAAU,EAAA;AAAA,EAAA;yBAAf,QAAIS,KAAA;;;;IAeCT,EAAc,EAAA;AAAA,EAAA;yBAAnB,QAAIS,KAAA;;;;ApE3WV,UAAAqO,GAAAqL;;;;;;;;;;;;;;;;;MoEySsBna,EAAI,CAAA,CAAA,QAAA,uGAIXuE,EAAAshB,GAAA,SAAAC;AAAA,OAAAhX,IAAA9O,SAAA,gBAAA8O,EAAe,UAAQ;MAYhB9O,EAAI,CAAA,CAAA,OAAA,sGAIXuE,EAAAwhB,GAAA,SAAAC;AAAA,OAAA7L,KAAAna,SAAA,gBAAAma,GAAe,aAAW,8WA3BhC9V,EAAAsO,GAAA,SAAA8C,IAAA3F;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA,oCACrBqF;AAAA,QAAAsN;AAAA,QAAA;AAAA;AAAA,QAAA3S,SAAa;AAAA,MAAM;AAAA;;AAFrC,MAAAoD,EAwFKb,GAAAoQ,GAAAtP,EAAA,GApFHf,EAgCWqQ,GAAAsT,CAAA,GA/BT3jB,EAce2jB,GAAAC,CAAA,GAbb5jB,EAYc4jB,GAAAL,CAAA;;;eAGhBvjB,EAce2jB,GAAAE,CAAA,GAbb7jB,EAYc6jB,GAAAJ,CAAA;;;eAIlBzjB,EAiDKqQ,GAAAL,CAAA,GAhDHhQ,EAAWgQ,GAAA8T,CAAA,YACX9jB,EAAWgQ,GAAA+T,CAAA,YACX/jB,EAAWgQ,GAAAgU,CAAA,YACXhkB,EAAWgQ,GAAAiU,CAAA,YACXjkB,EAAWgQ,GAAAkU,CAAA,YACXlkB,EAAWgQ,GAAAmU,CAAA,YACXnkB,EAAWgQ,GAAAoU,CAAA;;;;;;;;;;;;;;UAhCK1mB,EAAQ,EAAA;AAAA,QAAA;AAAA;;;;UAgBRA,EAAO,EAAA;AAAA,QAAA;AAAA;;;ApE9T3B,UAAA8O,IAAAqL;;;;;UoEgTena,EAAO,EAAA;AAAA,QAAA;;6BAAZ,QAAIS,MAAA,GAAA;;;;;;sBAAJ;AAAA;;;MAPYT,EAAI,CAAA,CAAA,mCAIXK,GAAA,CAAA;AAAA,MAAA,OAAAylB,OAAAA;AAAA,OAAAhX,KAAA9O,SAAA,gBAAA8O,GAAe;;;;UAmBf9O,EAAM,EAAA;AAAA,QAAA;;6BAAX,QAAIS,MAAA,GAAA;;;;;;uBAAJ;AAAA;;;MAPYT,EAAI,CAAA,CAAA,kCAIXK,GAAA,CAAA;AAAA,MAAA,OAAA2lB,OAAAA;AAAA,OAAA7L,KAAAna,SAAA,gBAAAma,GAAe;;;;UAkBnBna,EAAkB,EAAA;AAAA,QAAA;;6BAAvB,QAAIS,MAAA,GAAA;;;;;;uBAAJ;AAAA;;;;;UAaKT,EAAU,EAAA;AAAA,QAAA;;6BAAf,QAAIS,MAAA,GAAA;;;;;;uBAAJ;AAAA;;;;;UAeKT,EAAc,EAAA;AAAA,QAAA;;6BAAnB,QAAIS,MAAA,GAAA;;;;;;uBAAJ;AAAA;AAzEG,MAAAJ,GAAA,CAAA;AAAA,MAAA,MAAAoV,OAAAA,IAAA3F;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;YACrBqF;AAAA,QAAAsN;AAAA,QAAA;AAAA;AAAA,QAAA3S,SAAa;AAAA,MAAM;AAAA;;;;;;;;;QAzQxB,MAAA0D,IAAe,GAAA,IAAAyP,KACf,OAAA5R,IAAgB,GAAA,IAAA4R,KAChB,KAAAvB,IAAc,GAAA,IAAAuB,KACd,KAAAhB,IAAc,GAAA,IAAAgB,KAGd,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,KAMd,UAAAwT,IAAmB,OAAA,IAAAxT,GAM1ByT,GACAC,GACAC,GACAC,GACAC,IAAA,CAAA,GACAC,IAAA,CAAA,GACAC,IAAA,CAAA,GACAC,GACAC,IAAA;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,KAEEC,IAAA,CAAA,GACAC;AAMJ,EAAA3f,GAAA,YAAA;AACE,IAAAmM,EAAA,GAAA+S,IAAA/S,EAAA,GAAgB8S,IACZ7L,GAD4BxZ,IAC5B,IAAe,KAAKA,CAAK,IACV,oBAAA,MADU,CACV,CAAA,GACnBuS,EAAA,GAAAgT,IAAQlV,SAAW,KAAKA,CAAG,KAAM+J,GAASiL,KAAiB,CAAA,GAC3D9S,EAAA,IAAAiT,IAAQ5U,SAAW,KAAKA,CAAG,KAAMwJ,GAASiL,GAAe,CAAC,CAAA;UAGpDW,IAAYR,EAAK,YAAgB,IAAAD,EAAK,YAAgB,IAAA;AACxD,QAAAU,IAAYV,EAAK;UACrBO,IAAa,IAAA,MAAME,CAAS,EACzB,KAAK,MAAS,EACd,IAAA,CAAKE,GAAGhnB,OAAA,GAAS+mB,IAAY/mB,EAAC,EAC9B,EAAA,KAAA,CAAA,GAEHinB,KAEM,MAAApf,GAAA,GACNqf,EAAiB,EAAA,MAAM,QAAQ,OAAOf,EAAA,CAAA;AAAA;WAW/Be,EAAeC,GAAA;YACdA,EAAO,MAAA;AAAA,MACR,KAAA;AACH,QAAA9T,EAAA,GAAA+S,IAAgBe,EAAO,KAAA;;MAEpB,KAAA;AACH,QAAAf,EAAc,SAASe,EAAO,KAAK;;MAEhC,KAAA;AACH,QAAAf,EAAc,YAAYe,EAAO,KAAK;;;AAIrC,QAAA,CAAAjX,GAAYkW,CAAa;;AAKxB,UAAAgB,IAAW/C,GAAe+B,CAAa;AAC7C,IAAA/S,EAAA,IAAAkT,IAAA,IAAiB,MAAMa,CAAQ,EAC5B,KAAA,MAAc,EACd,IAAA,CACEJ,GAAGhnB,OAAA,IACE,KACFomB,EAAc,eACdA,EAAc,YACdpmB,KAAI,CAAA,CAAA,CAAA;UAKNqnB,IAAe9C,GAAetL,GAAUmN,GAAA,EAAiB,CAAA,GACzDkB,KAAqBvC,GAAQqB,GAAe,CAAC;AACnD,IAAA/S,EAAA,IAAAmT,IAAA,CAAA,CAAA;aACSxmB,IAAI,GAAGA,IAAIsnB,GAAmB,OAAU,GAAAtnB;YAC/CwmB,IAAyB,CAAA,GAAAA,GAAoB1N,GAAQuO,GAAA,CAAernB,CAAC,CAAA,CAAA;QAEvEwmB,EAAmB,QAAA,GAGnBnT,EAAA,IAAAoT,IAAA,CAAA,CAAA,GACAC,IACE,KAAMF,EAAmB,SAASD,EAAW,UAAU,GAErDG,IAAqB,GAAA;AACjB,YAAAa,IAAiBxC,GAAQ9L,GAAUmN,GAAe,CAAC,GAAG,CAAC;eACpDpmB,KAAI,GAAGA,KAAI0mB,GAAoB1mB;cACtCymB,IAAqB,CAAA,GAAAA,GAAgB3N,GAAQyO,GAAgBvnB,EAAC,CAAA,CAAA;AAAA;;AAK3D,WAAAinB,IAAA;AACD,UAAAO,IAAA,OAAwBC,GAAkBC,MAAA;AAK1C,UAJJD,EAAE,gBAAA,GACFA,EAAE,eAAA,GAGEC,IAAUrB,KAAQqB,IAAUpB;;AAK3B,MAAA1B,GAAY8C,GAAStB,CAAa,KACrCc,EAAiB,EAAA,MAAM,QAAQ,OAAOQ,EAAA,CAAA,QAExCtB,IAAgBsB,CAAA,GAEV,MAAA7f,GAAA;YACA8f,KAAgBd,EAAY,6BACjBa,EAAQ,QAAA,CAAA,IAAA;AAEzB,MAAAC,MAAA,QAAAA,GAAe;AAAA;AAGjB,IAAAd,EAAY,iBAAiB,WAAY,CAAAY,MAAA;cAC/BA,EAAE,KAAA;AAAA,QACH,KAAA;AACH,UAAAD,EAAeC,GAAG3O,GAAQsN,GAAA,EAAiB,CAAA;;QAExC,KAAA;AACH,UAAAoB,EAAeC,GAAG3O,GAAQsN,GAAe,CAAC,CAAA;;QAEvC,KAAA;AACH,UAAAoB,EAAeC,GAAG3O,GAAQsN,GAAA,EAAiB,CAAA;;QAExC,KAAA;AACH,UAAAoB,EAAeC,GAAG3O,GAAQsN,GAAe,CAAC,CAAA;;QAEvC,KAAA;AAAA,QACA,KAAA;eACHD,IAAgB,IAAA;;QAEb,KAAA;AACC,cAAAyB,IAAA,IAAe,KAAKxB,CAAa;AACrC,UAAAwB,EAAS,QAAQ,CAAC,GAClBJ,EAAeC,GAAGG,CAAQ;;;QAGvB,KAAA;AACH,UAAAJ,EAAeC,GAAGlD,GAAe6B,CAAa,CAAA;;QAE3C,KAAA;UACCqB,EAAE,WACJD,EAAeC,GAAGvM,GAASkL,GAAA,EAAiB,CAAA,IAE5CoB,EAAeC,GAAGxO,GAAUmN,GAAA,EAAiB,CAAA;;QAG5C,KAAA;UACCqB,EAAE,WACJD,EAAeC,GAAGvM,GAASkL,GAAe,CAAC,CAAA,IAE3CoB,EAAeC,GAAGxO,GAAUmN,GAAe,CAAC,CAAA;;QAG3C,KAAA;eACHD,IAAgBC,CAAA,GAChByB,KACAJ,EAAE,gBAAA,GACFA,EAAE,eAAA;;QAEC,KAAA;AACH,UAAAA,EAAE,gBAAA,GACFA,EAAE,eAAA;;;;;AAMD,WAAAI,IAAA;AACF,IAAA1B,KACAjW,GAAYiW,CAAa,MAE9B9S,EAAA,GAAAvS,IAAQqlB,EAAc,YAAA,CAAA,GACtBU,EAAY,kBACN;AAAA,MAAY;AAAA;QACd,UAAU;AAAA,QACV,QACE,EAAA,MAAM,QACN,MAAA5jB,GACA,OAAOkjB,EAAA;AAAA;;;WAUN2B,EAASL,GAAA;AAChB,IAAAP,EAAA,EAAiB,MAAM,SAAS,OAAQ,CAAAO,EAAE,OAAO,MAAA,CAAA,GACjDA,EAAE,eAAA,GACFA,EAAE,gBAAA;AAAA;WAGKM,EAAQN,GAAA;AACf,IAAAP,EAAA,EAAiB,MAAM,QAAQ,OAAQ,CAAAO,EAAE,OAAO,MAAA,CAAA,GAChDA,EAAE,eAAA,GACFA,EAAE,gBAAA;AAAA;WAGKO,EAAYP,GAAA;AACb,UAAA9X,IAAK8X,EAAE,QACPQ,IAAM,SAAStY,EAAG,QAAQ,QAAW,GAAG;AACzC,QAAA,CAAAsY;AAAA;AAEC,UAAAP,KAAA,IAAc,KAAKO,CAAG;AAExB,IAAAP,KAAUrB,KAAQqB,KAAUpB,MAK3B1B,GAAY8C,IAAStB,CAAa,KACrCc,EAAiB,EAAA,MAAM,QAAQ,OAAOQ,GAAA,CAAA,GAGxCrU,EAAA,GAAA8S,IAAA9S,EAAA,GAAgB+S,IAAgBsB,EAAA,CAAA,GAChCG;;;;AA0CsD,MAAAhB,IAAW1T;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCnP3B5T,EAAO,CAAA;AAAA,MAAA;;;;QAAzBA,EAAe,CAAA;AAAA,MAAA;AAAA;;AAAjC,MAAAoD,EAAgDb,GAAAomB,GAAAtlB,CAAA;;;;;;;QAAZrD,EAAO,CAAA;AAAA,MAAA;;;;;QAAzBA,EAAe,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;IAD9BA,EAAO,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;;;;;;;;;QANJA,EAAQ,EAAA;AAAA,MAAA;;;;QACRA,EAAQ,CAAA;AAAA,MAAA,GACJuE,EAAA6N,GAAA,YAAAwW;AAAA,MAAA5oB,EAAS,CAAA,MAAA,cAAc,UAAU,MAAM;MAJlCA,EAAI,CAAA,IAAA,gBAAA,2CALhBqE,EAAAuQ,GAAA,SAAA0C,IAAAxH;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;;;;QAGxBA,EAAM,CAAA;AAAA,MAAA;;;;QADLA,EAAe,CAAA;AAAA,MAAA;AAAA;;AAH/B,MAAAoD,EAmBKb,GAAAqS,GAAAvR,CAAA,GAbHf,EAMMsS,GAAAhC,CAAA,GALJtQ,EAICsQ,GAAAR,CAAA,YAEH9P,EAKMsS,GAAA/B,CAAA;;;;;;;;;;;;;QAVI7S,EAAQ,EAAA;AAAA,MAAA;;;;;QACRA,EAAQ,CAAA;AAAA,MAAA,IACJ,CAAA+S,KAAA1S;AAAA,MAAA,MAAAuoB,OAAAA;AAAA,MAAA5oB,EAAS,CAAA,MAAA,cAAc,UAAU;;MAJ5BA,EAAI,CAAA,IAAA;MAQhBA,EAAO,CAAA;;;;;;;;;;;;;;;;;;UAbP,CAAA+S,KAAA1S;AAAA,MAAA,MAAAiX,OAAAA,IAAAxH;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;;QAGxBA,EAAM,CAAA;AAAA,MAAA;;;;;QADLA,EAAe,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;SA7DtBuX,GAAOC,CAAY,IAAI1G,GAC5B,gBAAA,CACC,aAAa,aAAa,eAAe,SAAS,SAAS,GAC5D,EAAA,GAEK,CAAA+X,GAAcC,CAAmB,IAAIhY,GAAc,gBAAA,CACxD,UACA,OAAA,CAAA;QASS,IAAAf,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,IAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,KACd,MAAAtD,IAAoB,QAAA,IAAAsD,GACpB,EAAA,MAAA3N,EAAA,IAAA2N,KACA,SAAAC,IAAkB,GAAA,IAAAD,KAClB,QAAAI,IAAiB,GAAA,IAAAJ,GAIxB4V,IAAa,GACbC,IAAW;AAmBf,EAAArhB,GAAA,MAAA;AACE,IAAAmhB,EAAoBjZ,CAAI,GACxB,WAAA,MAAA;AACE,MAAA2H,EAAahS,CAAI,GACjBsO,EAAA,GAAAkV,IAAWC,IAAkB,UAAU,QAAA;AAAA;;;;;;;;;YAnBxCnV,EAAA,GAAAmV,IAAkBF,IAAa5U,MAAatE,MAAS,QAAA;UAExDiE,EAAA,IAAGgE,IACDtS,MAAS,cACL,YACAA,MAAS,cACP,iBACAA,MAAS,gBACP,uBACAA,MAAS,YACP,qBACAA,MAAS,UACP,aACA,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjDhB,MAAApC,EAIkBb,GAAA2mB,GAAA7lB,CAAA,GAHhBf,EAEkB4mB,GAAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHpB,MAAA/lB,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCeYrD,EAAM,CAAA;AAAA,MAAA;MAGTA,EAAK,CAAA,IAAA;AAAA,OACJA,EAAW,CAAA,MAAA,SAAS,SAAS,UACvC,OAAA8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,IAAA;AAAA,OAC9BA,EAAc,CAAA,MAAA;MAEiBA,EAAS,CAAA,CAAA,KAAA;;;AAV7C,MAAAoD,EAeKb,GAAAoQ,GAAAtP,CAAA,GAdHf,EAaKqQ,GAAAL,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;QAZUtS,EAAM,CAAA;AAAA,MAAA;;MAGTA,EAAK,CAAA,IAAA;AAAA,OACJA,EAAW,CAAA,MAAA,SAAS,SAAS,UACvC,OAAA8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,IAAA;AAAA,OAC9BA,EAAc,CAAA,MAAA;MAEiBA,EAAS,CAAA,CAAA;;;;;;;;;;;;;;6CAzBhC,WAAAopB,IAAoB,EAAA,IAAAjW,KACpB,OAAAsJ,IAAgB,OAAA,IAAAtJ,KAChB,QAAAkW,IAAyB,OAAA,IAAAlW,KAGzB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,KAGd,QAAAI,IAAiB,GAAA,IAAAJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACX9B,MAAA/P,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAL,MAAAD,EAOCb,GAAAqS,GAAAvR,CAAA;AAAA;;;;;;;;;;AAZY,MAAA,EAAA,KAAAhF,EAAA,IAAA8U,KACA,QAAAkW,IAAiB,OAAA,IAAAlW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACgGtB,MAAA/P,EAOKb,GAAA+mB,GAAAjmB,CAAA,GADHf,EAAkEgnB,GAAAC,CAAA;AAAA;;;;;;;;;;;;;AAfpE,MAAAnmB,EAOKb,GAAA+mB,GAAAjmB,CAAA,GADHf,EAA6BgnB,GAAAE,CAAA;AAAA;;;;;;;;;;;;QAgB5BxpB,EAAI,CAAA;AAAA,MAAA;AAAA;;;;;;;;;QAAJA,EAAI,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;QAQRA,EAAW,CAAA;AAAA,MAAA;;;;QAFoBA,EAAc,EAAA;AAAA,MAAA;;;AAAhD,MAAAoD,EAGKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;QADFrD,EAAW,CAAA;AAAA,MAAA;;;;;QAFoBA,EAAc,EAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;MA7BzCA,EAAe,EAAA;AAAA;AAAA,aAAAuV;;;MASVvV,EAAS,EAAA;AAAA;AAAA,aAAAsV;AAAAA;;;;;;;;;;;;;;KAmBlBtV,EAAO,EAAA,EAAC;AAAA,IAAeA,EAAW,CAAA,MAAAwV,GAAAxV,CAAA;AAAA;;;;;;;QAtC7BA,EAAI,CAAA;AAAA,MAAA;;;;;;MAECA,EAAS,EAAA;MACRA,EAAU,EAAA;MAEVA,EAAK,CAAA,CAAA,IACHqE,EAAAQ,GAAA,cAAA4kB;AAAA,MAAAzpB;MAAaA,EAAI,CAAA,CAAA;MACXA,EAAW,CAAA;AAAA;AAAA,QAAGA,EAAc,EAAA;AAAA,UAAG,IAAI;;;;QAXzBA,EAAS,EAAA;AAAA,MAAA;;;;QAP5BA,EAAM,CAAA;AAAA,MAAA;;;;QACdA,EAAI,CAAA;AAAA,MAAA;;;;QACqBA,EAAU,EAAA;AAAA,MAAA;;;;QACbA,EAAO,EAAA;AAAA,MAAA,GAN1BqE,EAAAkO,GAAA,SAAAC,IAAA1C;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;;;AAA1C,MAAAoD,EA0DKb,GAAAgQ,GAAAlP,CAAA,GAzDHf,EAkDOiQ,GAAAmX,CAAA,GA3CLpnB,EAmCKonB,GAAApX,CAAA,GA/BHhQ,EAWCgQ,GAAAzN,CAAA,kDAqBHvC,EAMKonB,GAAA5W,CAAA,GALHxQ,EAIKwQ,GAAAH,CAAA;;;;QA3BQ3S,EAAQ,EAAA;AAAA,MAAA;;;;;;;;QARfA,EAAI,CAAA;AAAA,MAAA;;;;;;;;MAECA,EAAS,EAAA;;MACRA,EAAU,EAAA;;MAEVA,EAAK,CAAA,CAAA,wBACH,CAAA+S,KAAA1S;AAAA,MAAA,MAAAopB,OAAAA;AAAA,MAAAzpB;MAAaA,EAAI,CAAA;;MACXA,EAAW,CAAA;AAAA;AAAA,QAAGA,EAAc,EAAA;AAAA,UAAG;;;;;QAXrBA,EAAS,EAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;QAP5BA,EAAM,CAAA;AAAA,MAAA;;;;;QACdA,EAAI,CAAA;AAAA,MAAA;;;;;QACqBA,EAAU,EAAA;AAAA,MAAA;;;;;QACbA,EAAO,EAAA;AAAA,MAAA;AAAA,MA8C/BA,EAAO,EAAA,EAAC;AAAA,MAAeA,EAAW,CAAA;;;kBApD7B,CAAA+S,KAAA1S;AAAA,MAAA,OAAAmS,OAAAA,IAAA1C;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;AAzD7B,MAAA,EAAA,MAAA0D,EAAA,IAAAyP,KAGA,SAAAwW,IAAkB,QAAA,IAAAxW,KAClB,MAAAvP,IAAe,GAAA,IAAAuP,KACf,OAAA5R,IAAgB,GAAA,IAAA4R,KAChB,UAAAsF,IAAmB,QAAA,IAAAtF,KACnB,OAAAyW,IAAgB,QAAA,IAAAzW,KAChB,QAAAI,IAAiB,GAAA,IAAAJ,KACjB,WAAAwE,IAAoB,GAAA,IAAAxE,KACpB,aAAA0W,IAAsB,GAAA,IAAA1W,KAGtB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,GAGrB2W,GACAC,GACAC;AAQJ,EAAAriB,GAAA,MAAA;AAEE,IAAAmiB,IAASvoB,GACTuS,EAAA,IAAAkW,IAAA,eAAgCtmB,CAAI,EAAA;AAAA;WAG7BumB,EAAS/B,GAAA;A3E7CpB,QAAApZ;A2E+CI,IAAAib,EAAa,MAAA;UAGPG,IAAkB,CAAAC,GAClBtb,IAAWqb,IAAA,GAAoBJ,KAAU,SAAS,KAAK;AAG7D,IAAAhW,EAAA,IAAA6V,IAAUjZ,GAAYwZ,CAAc,CAAA,IAEpCpb,IAAAoZ,EAAE,WAAF,QAAApZ,EAAU,kBACJ;AAAA,MAAY;AAAA;QACd,UAAU;AAAA,QACV,QAAA;AAAA,UAAU,MAAApL;AAAA,UAAM,SAASwmB;AAAA,UAAgB,OAAOrb;AAAA;;;;;;AAqBrC,MAAAkb,IAAYnW;;;;;;;cA9C1BE,EAAA,IAAA+E,IAAapI,GAAUgI,CAAQ,CAAA;eAC/B3E,EAAA,IAAAsW,IAAU3Z,GAAUmZ,CAAK,CAAA;cACzB9V,EAAA,IAAAqW,IAAY1Z,GAAUkZ,CAAO,CAAA;AAAA,KAChC7V,EAAA,IAAGuW,IAAkB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCyBgCrqB,EAAW,CAAA;AAAA,MAAA;AAAA;;AAA9D,MAAAoD,EAAiEb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;QAAdrD,EAAW,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;qJAWjDuE,EAAA6N,GAAA,aAAAC;AAAA,MAAArS,EAAA,EAAA,IACP;AAAA;AAAA,QACAA,EAAA,CAAA,IACE,uCACA;AAAA,OAAgC,GAC7BuE,EAAA6N,GAAA,WAAAkY;AAAA,MAAAtqB;;QAAUA,EAAS,CAAA,IAAG,IAAI;AAAA,UAAO,CAAC;AAAA;;AAV7C,MAAAoD,EAWCb,GAAA6P,GAAA/O,CAAA;AAAA;;AANY,MAAAhD;AAAA,MAAA,QAAAgS,OAAAA;AAAA,MAAArS,EAAA,EAAA,IACP;AAAA;AAAA,QACAA,EAAA,CAAA,IACE,uCACA;AAAA,kCACGK;AAAA,MAAA,QAAAiqB,OAAAA;AAAA,MAAAtqB;;QAAUA,EAAS,CAAA,IAAG,IAAI;AAAA,UAAO;;;;;;;;;;IAjBzCA,EAAW,CAAA,KAAAuV,GAAAvV,CAAA;AAAA;;IAMXA,EAAU,EAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;QAFZA,EAAO,CAAA;AAAA,MAAA;;;;QAjBGA,EAAM,CAAA;AAAA,MAAA,yCAKZqE,EAAAsO,GAAA,SAAA8C,IAAA3F;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;;;;QAHpBA,EAAU,EAAA;AAAA,MAAA;;;;QACdA,EAAM,EAAA;AAAA,MAAA;;;;;;;;AALrB,MAAAoD,EAmCKb,GAAAoQ,GAAAtP,CAAA,+BAjBHf,EAEKqQ,GAAAL,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MALAtS,EAAW,CAAA;;;;QAIbA,EAAO,CAAA;AAAA,MAAA;AAAA,MAELA,EAAU,EAAA;;;;;QAnBFA,EAAM,CAAA;AAAA,MAAA,GAKZK;AAAA,MAAA,MAAAoV,OAAAA,IAAA3F;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;;QAHpBA,EAAU,EAAA;AAAA,MAAA;;;;;QACdA,EAAM,EAAA;AAAA,MAAA;;;;;;;;;;;;;;;;QAvCR,IAAA+P,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,KAEd,aAAAwD,IAAkC,KAAA,IAAAxD,KAClC,OAAAyW,IAAgB,QAAA,IAAAzW,KAChB,WAAAoX,IAAoB,QAAA,IAAApX,GACpB,EAAA,SAAAsE,EAAA,IAAAtE,GACA,EAAA,SAAAqF,EAAA,IAAArF,KACA,QAAAI,IAAiB,GAAA,IAAAJ,GAExB/C,GACAoD,IAAqB,IAGrBgX,GACAC;WAKKC,EAASxC,GAAA;AAChB,IAAA9X,EAAG,cACG,IAAA,YAAY,UAAY,EAAA,UAAU,IAAM,SAAS,GAAA,CAAA,CAAA,GAEvD8X,EAAE,gBAAA;AAAA;;;AASO,MAAA9X,IAAEwD;;;AAQF,QAAA+W,IAAA,CAAAzC,MAAMuC,KAAcC,EAASxC,CAAC,GACpBrU,IAAA,MAAAC,EAAA,GAAAN,IAAY,EAAI,GACjBO,IAAA,MAAAD,EAAA,GAAAN,IAAY,EAAK,GACpBQ,IAAA,MAAAF,EAAA,GAAAN,IAAY,EAAK,GAClBS,IAAA,MAAAH,EAAA,GAAAN,IAAY,EAAK;;;;;YA5B9BM,EAAA,IAAA0W,IAAS/Z,GAAUmZ,CAAK,CAAA;aACxB9V,EAAA,IAAA2W,IAAaha,GAAU8Z,CAAS,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACgG9B,SAASK,GAAS,GAAG;AAC3B,QAAMC,IAAI,IAAI;AACd,SAAOA,IAAIA,IAAIA,IAAI;AACpB;AAsHO,SAASC,GAAS,GAAG;AAC3B,SAAO,KAAK,IAAI,IAAI,GAAK,CAAG,KAAK,IAAM,KAAK;AAC7C;ACvNO,SAASC,GAAKvoB,GAAM,EAAE,OAAA8D,IAAQ,GAAG,UAAAD,IAAW,KAAK,QAAAiE,IAASC,GAAQ,IAAG,IAAI;AAC/E,QAAM6B,IAAI,CAAC,iBAAiB5J,CAAI,EAAE;AAClC,SAAO;AAAA,IACN,OAAA8D;AAAA,IACA,UAAAD;AAAA,IACA,QAAAiE;AAAA,IACA,KAAK,CAAC1D,MAAM,YAAYA,IAAIwF,CAAC;AAAA,EAC/B;AACA;AAUO,SAAS4e,GACfxoB,GACA,EAAE,OAAA8D,IAAQ,GAAG,UAAAD,IAAW,KAAK,QAAAiE,IAASsgB,IAAU,GAAA1sB,IAAI,GAAG,GAAA+sB,IAAI,GAAG,SAAAC,IAAU,EAAG,IAAG,CAAE,GAC/E;AACD,QAAMpoB,IAAQ,iBAAiBN,CAAI,GAC7B2oB,IAAiB,CAACroB,EAAM,SACxBmM,IAAYnM,EAAM,cAAc,SAAS,KAAKA,EAAM,WACpDsoB,IAAKD,KAAkB,IAAID,IAC3B,CAACG,GAAQC,CAAK,IAAI5pB,GAAexD,CAAC,GAClC,CAACqtB,GAAQC,CAAK,IAAI9pB,GAAeupB,CAAC;AACxC,SAAO;AAAA,IACN,OAAA3kB;AAAA,IACA,UAAAD;AAAA,IACA,QAAAiE;AAAA,IACA,KAAK,CAAC1D,GAAG6kB,MAAM;AAAA,gBACDxc,CAAS,eAAe,IAAIrI,KAAKykB,CAAM,GAAGC,CAAK,MAAM,IAAI1kB,KAAK2kB,CAAM,GAAGC,CAAK;AAAA,cAC9EL,IAAiBC,IAAKK,CAAC;AAAA,EACrC;AACA;ACxEA,SAAAC,GAAyBC,GAAoBC,GAA2B;AACtE,MAAIC,IAAmB;AAEvB,WAASC,IAAiB;AACpB,QAAA,CAACC;AACH;AAEF,UAAMC,IAAiBC;AACJ,IAAAJ,IAAA,IACV,SAAA,KAAK,MAAM,WAAW,UAC/B,SAAS,KAAK,MAAM,cAAc,GAAGG,CAAc;AAAA,EACrD;AAEA,WAASD,IAAe;AACf,WAAA,SAAS,KAAK,MAAM,aAAa;AAAA,EAC1C;AAEA,WAASG,IAAkB;AACzB,IAAKL,MAIcA,IAAA,IAEnB,WAAW,MAAM;AACN,eAAA,KAAK,MAAM,WAAW,IACtB,SAAA,KAAK,MAAM,cAAc;AAAA,OACjC,GAAG;AAAA,EACR;AAEA,WAASI,IAA0B;A/E9BrC,QAAAnd;A+EgCI,QAAI,SAAS,KAAK,gBAAgB,SAAS,gBAAgB;AAClD,aAAA;AAGH,UAAAqd,IAAQ,SAAS,cAAc,KAAK;AAC1C,IAAAA,EAAM,MAAM,aAAa,UACzBA,EAAM,MAAM,WAAW,UACd,SAAA,KAAK,YAAYA,CAAK;AAGzB,UAAAC,IAAQ,SAAS,cAAc,KAAK;AAC1C,IAAAD,EAAM,YAAYC,CAAK;AAGjB,UAAAJ,IAAiBG,EAAM,cAAcC,EAAM;AAG3C,YAAAtd,IAAAqd,EAAA,eAAA,QAAArd,EAAY,YAAYqd,IAEvBH;AAAA,EACT;AAEA,SAAIJ,EAAK,UACQE,KAGV;AAAA,IACL,SAAS;AACH,MAACF,EAAK,UACQM;IAEpB;AAAA,IAEA,UAAU;AACQ,MAAAA;IAClB;AAAA,EAAA;AAEJ;;;;;;;;;;MCtBOlsB,EAAU,CAAA,IAAA;AAAA;AAAA,QAWLA,EAAM,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;IAGPA,EAAO,CAAA,KAAAoV,GAAApV,CAAA;AAAA;;;;;;;QADOA,EAAW,CAAA;AAAA,MAAA;;;;;SADPqE,EAAAuQ,GAAA,SAAAyX,IAAA/qB,GAAA;AAAA,MAAatB,EAAW,CAAA,CAAA,IAAA,gBAAA;;;;;;;;AAAjD,MAAAoD,EAKKb,GAAAqS,GAAAvR,CAAA,GAJHf,EAA4CsS,GAAA0X,CAAA;;;;;;;;QAAzBtsB,EAAW,CAAA;AAAA,MAAA;;;;;;;MACzBA,EAAO,CAAA,gFAFWK;AAAA,MAAA,KAAAgsB,OAAAA,IAAA/qB,GAAA;AAAA,MAAatB,EAAW,CAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;IAL1CA,EAAO,CAAA,KAAAsV,GAAAtV,CAAA;AAAA;;;;;;;QADOA,EAAW,CAAA;AAAA,MAAA;;;;;;;;;;;;;AALhC,MAAAoD,EASKb,GAAAqS,GAAAvR,CAAA,GAJHf,EAA4CsS,GAAA0X,CAAA,6CAH5BC,IAAA/qB,GAAAgrB,GAAA,KAAA,MAAA5X,GAAA,EAAA,QAAQ,GAAI,CAAA,CAAA;;;;;;;;QAGT5U,EAAW,CAAA;AAAA,MAAA;;;;;;;MACzBA,EAAO,CAAA;;;;;;;;;;cALOysB,MAAAA,IAAAzhB,GAAA4J,GAAAmW,IAAA,EAAA,UAAU,OAAG,EAAA;;;;YAAb0B,MAAAA,IAAAzhB,GAAA4J,GAAAmW,IAAA,EAAA,UAAU,OAAG,EAAA;;;;;;;;;;;;;QAaR/qB,EAAO,CAAA;AAAA,MAAA;;;AAA7B,MAAAoD,EAAmCb,GAAAqS,GAAAvR,CAAA;;;;;;;QAAbrD,EAAO,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;QAPPA,EAAO,CAAA;AAAA,MAAA;;;AAA7B,MAAAoD,EAAmCb,GAAAqS,GAAAvR,CAAA;;;;;;;QAAbrD,EAAO,CAAA;AAAA,MAAA;AAAA;;;;;;;;;IAThCA,EAAS,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;;MAATA,EAAS,CAAA;;;;;;;;;;;AApCL,QAAA,CAAAsY,GAAUC,CAAe,IAAIzH,GAClC,6BAAA,CACC,cAAc,QAAQ,CAAA,GAElB,CAAAsH,GAAOC,CAAY,IAAIvH,GAAc,eAAA,CAC1C,SACA,OAAA,CAAA;QAQS,SAAA0H,IAAmB,SAAA,IAAArF,KACnB,MAAAtD,IAAa,QAAA,IAAAsD,KACb,SAAApC,IAAkB,GAAA,IAAAoC,KAClB,UAAAuZ,IAAmB,GAAA,IAAAvZ,KACnB,SAAAwZ,IAAkB,QAAA,IAAAxZ,GAIzByZ,GACAC,GACAC;AAEJ,SAAAnlB,GAAA,YAAA;AACE,IAAA4Q,EAAgBC,CAAO,GACvBH,EAAaxI,CAAI,QACjB+c,IAAc/c,MAAS,UAAU,UAAU,QAAA,GAC3CiE,EAAA,GAAA+Y,IAAarU,MAAY,YAAA,GACzB1E,EAAA,GAAAgZ,IAAStU,MAAY,QAAA;AAAA;;;;WAXpB1E,EAAA,GAAAiZ,IAAYtc,GAAUkc,CAAO,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCiCP3sB,EAAM,CAAA,IAAA,iBAAA;;;;QATlBA,EAAM,CAAA;AAAA,MAAA,GACZqE,EAAAkO,GAAA,SAAAC,IAAA1C;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;;;MAGlBA,EAAI,CAAA,CAAA;AAAA;AAAA,MACVA,EAAO,CAAA,CAAA;AAAA;AAAA,MACRA,EAAM,CAAA,CAAA;AAAA;;;AAPpB,MAAAoD,EAsBKb,GAAAgQ,GAAAlP,CAAA,GAZHf,EAQQiQ,GAAAya,CAAA,GAPN1qB,EAEK0qB,GAAA1a,CAAA,+BAELhQ,EAEK0qB,GAAAra,CAAA,+BAEPrQ,EAEKiQ,GAAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAXoB9S,EAAM,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;QATlBA,EAAM,CAAA;AAAA,MAAA,IACZ,CAAA+S,KAAA1S;AAAA,MAAA,OAAAmS,OAAAA,IAAA1C;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;MAGlBA,EAAI,CAAA,CAAA;AAAA;AAAA,MACVA,EAAO,CAAA,CAAA;AAAA;AAAA,MACRA,EAAM,CAAA,CAAA;AAAA;;;;;;;;;;;;;;;SAlDXuX,GAAOC,CAAY,IAAI1G,GAAc,kBAAA,CAC1C,eACA,QACA,SACA,WACA,aACA,iBAAA,CAAA,GAEK,CAAAmc,GAASC,CAAc,IAAIpc,GAAc,oBAAA,CAC9C,SACA,QACA,QAAA,CAAA,GAEK,CAAAqc,GAAUC,CAAe,IAAItc,GAAc,qBAAA,CAChD,WACA,SAAA,CAAA;QAQS,MAAAtL,IAAa,cAAA,IAAA2N,KACb,QAAAka,IAAiB,SAAA,IAAAla,KACjB,SAAAma,IAAmB,UAAA,IAAAna,KACnB,QAAAI,IAAiB,GAAA,IAAAJ,KAGjB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,IAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD;AAEzB,SAAAxL,GAAA,MAAA;AACE,IAAA6P,EAAahS,CAAI,GACjB0nB,EAAeG,CAAM,GACrBD,EAAgBE,CAAO;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oKCyHhB/oB,EAAAgpB,GAAA,SAAAC;AAAA,MAAAxtB;;QAAWA,EAAK,CAAA;AAAA,MAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARnBA,EAAY,EAAA;AAAA,MAAA;AAAA;;AARpB,MAAAoD,EA2Bab,GAAA0S,GAAA5R,CAAA,GAfXf,EAOC2S,GAAAsY,CAAA,YACDjrB,EAMC2S,GAAAwY,CAAA;;;;;UATWztB,EAAY,EAAA;AAAA,QAAA;AAAA;;;;UACVA,EAAa,EAAA;AAAA,QAAA;AAAA;;;;UAObA,EAAgB,EAAA;AAAA,QAAA;AAAA;;;;;;;;;AATrB,MAAAK;AAAA,MAAA,OAAAmtB,OAAAA;AAAA,MAAAxtB;;QAAWA,EAAK,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARnBA,EAAY,EAAA;AAAA,MAAA;AAAA;;;;;;;;;QA7IP,OAAAuB,IAAgB,GAAA,IAAA4R,KAChB,KAAAvB,IAAc,GAAA,IAAAuB,KACd,KAAAhB,IAAc,GAAA,IAAAgB,KACd,UAAAua,IAAmB,QAAA,IAAAva,KAGnB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,GAKrBvE,GACA+e,GACAlU,GACAmU,IAAwB;AAE5B,EAAAjmB,GAAA,YAAA;AACQ,UAAAkmB,EAAA;AAAA,MAIRjmB,GAAA,MAAA;IAEMgH,KAAarN,KACfssB;;AAIW,iBAAAA,IAAA;AACb,IAAA/Z,EAAA,GAAA2F,IAASlY,KAASwZ,GAAA,IAAe,KAAKxZ,CAAK,CAAO,KAAA,IAAA,GAC9CA,KAAA,CAAUya,GAAQvC,CAAK,KACzB,QAAQ,SAASlY,CAAK,sBAAA;AAAA;WAIjBusB,EAAiB5F,GAAA;AACxB,IAAApU,EAAA,GAAA2F,IAAQyO,EAAE,OAAO,KAAA,GACbzO,MACF3F,EAAA,GAAAvS,IAAQkY,EAAM,YAAA,CAAA,GACdsU,KACAzF,EAAc7O,CAAK,GACnByO,EAAE,gBAAA,GACFA,EAAE,eAAA;AAAA;WAIGI,EAAc/W,GAAA;AAChB,IAAAA,MACL3C,IAAY2C,GACZoc,EAAQ,kBACF;AAAA,MAAuB;AAAA;QACzB,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QACE,EAAA,MAAM,QACN,OAAOpc,EAAA;AAAA;;;WAMNyc,EAAWziB,GAAA;WACbA,IAGI+X,UADE/X,KAAM,WACG,IAAA,KAAKA,CAAC,IAEZA,GAFe,KAAK,IAHnB;AAAA;AAQR,WAAAwiB,IAAA;UACPH,IAAe,EAAA;AAAA;AAGR,WAAAK,IAAA;UACPL,IAAe,EAAA;AAAA;WAGRM,EAAchG,GAAA;AAChB,QAAA,CAAA,SAAS,OAAO,EAAE,SAASA,EAAE,GAAG,GAAA;AACnC,MAAA+F;;;YAUM/F,EAAE,KAAA;AAAA,MACH,KAAA;aACHzO,UAAUF;AAAA,UAAY,oBAAA,KAAA;AAAA,UAAQ;AAAA,kBAC9BE,IAAQF,GAAQE,KAAS,CAAA;;MAEtB,KAAA;aACHA,UAAUF;AAAA,UAAY,oBAAA,KAAA;AAAA;kBACtBE,IAAQF,GAAQE,GAAO,CAAC,CAAA;;MAErB,KAAA;aACHA,UAAUF;AAAA,UAAY,oBAAA,KAAA;AAAA;kBACtBE,IAAQF,GAAQE,GAAO,CAAC,CAAA;;MAErB,KAAA;aACHA,UAAUF;AAAA,UAAY,oBAAA,KAAA;AAAA,UAAQ;AAAA,kBAC9BE,IAAQF,GAAQE,KAAS,CAAA;;MAEtB,KAAA;AACH,QAAA3F,EAAA,GAAA2F,UAAUyO,EAAE,WACRvM,GAAA,oBAAa,QAAQ,CAAC,IACtBjC;AAAA,UAAc,oBAAA,KAAA;AAAA,UAAQ;AAAA,kBAC1BD,IAAQyO,EAAE,WAAWvM,GAASlC,GAAA,EAAS,IAAIC,GAAUD,KAAS,CAAA;;MAE3D,KAAA;AACH,QAAA3F,EAAA,GAAA2F,UAAUyO,EAAE,WACRvM,GAAA,oBAAa,UAAU,IACvBjC,GAAA,oBAAc,UAAU,EAAA,QAC5BD,IAAQyO,EAAE,WAAWvM,GAASlC,GAAO,CAAC,IAAIC,GAAUD,GAAO,CAAC,CAAA;;;;;AAMhE,IAAA6O,EAAc7O,CAAK,GAEnByO,EAAE,eAAA,GACFA,EAAE,gBAAA;AAAA;;;AAKO,MAAAyF,IAAO/Z;;;AAQD,QAAAua,IAAA,MAAA7F,EAAc7O,CAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCvC3BzZ,EAAO,CAAA;AAAA,MAAA;MAFDA,EAAY,CAAA,IAAG,uCAAuC,sCAAsC;MARrGA,EAAO,CAAA,GAENqE,EAAAoO,GAAA,SAAA2b,IAAAte;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;;;AAJvC,MAAAoD,EAiBSb,GAAAkQ,GAAApP,CAAA,GAZPf,EAQSmQ,GAAAC,CAAA,GAPPpQ,EAKCoQ,GAAAN,CAAA,YACD9P,EAAqBoQ,GAAAoC,CAAA,+BAEvBxS,EAEKmQ,GAAAmC,CAAA;;;;;;;;;;MANU5U,EAAY,CAAA,IAAG,uCAAuC;;;;QAE5DA,EAAO,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;MAVVA,EAAO,CAAA,KAEN,CAAA+S,KAAA1S;AAAA,MAAA,MAAA+tB,OAAAA,IAAAte;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;;;;;;;;;;;8CA1G1B,EAAA,SAAAoT,EAAA,IAAAD,KACA,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,KACd,MAAAD,IAAe,QAAA,IAAAC,GAEtBkb,IAAwB,IACxBC,GACAC;AAKJ,EAAA5mB,GAAA,MAAA;AACE,IAAAiJ,GAAiB,WAAa,EAAA,SAAAwC,EAAA,CAAA,GAE9Bkb,EAAW,iBAAiB,aAAA,MAAA;WAC1BD,IAAe,EAAA;AAAA,QAGjBC,EAAW,iBAAiB,YAAA,MAAA;WAC1BD,IAAe,EAAA;AAAA;;;;AAqFC,MAAAC,IAAU1a;;;;;AAJnB,MAAA2a,IAAU3a;;;AAER,QAAA4a,IAAA,CAAA,EAAA,QAAAjsB,EAAM,MAAMuR,EAAA,GAAAZ,IAAU,GAAA3Q,EAAO,IAAI,EAAA;;;;;SA9F3CuR,EAAA,GAAA2a,IAAUhe,GAAUyC,CAAI,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCJZlT,EAAM,CAAA;AAAA,MAAA,GAASqE,EAAAqqB,GAAA,SAAAC,IAAA7e;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;;;AAA9D,MAAAoD,EAAkEb,GAAAmsB,GAAArrB,CAAA;AAAA;;;;;;;QAAjDrD,EAAM,CAAA;AAAA,MAAA,GAASK;AAAA,MAAA,MAAAsuB,OAAAA,IAAA7e;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;;;;;;;QATjD,QAAAuT,IAAiB,GAAA,IAAAJ,KAGjB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IC0jBZnT,EAAW,CAAA,KAAAgV,GAAAhV,CAAA;AAAA;;ArFtkB1B,QAAA8O;;;OqF0mBeA,KAAA9O,EAAQ,EAAA,MAAR,QAAA8O,GAAU;AAAA,MAAS9O,EAAW,EAAA,IAAAsV;;;;;IA+C5BtV,EAAgB,EAAA;AAAA,EAAA;;;IAAmBA,EAAK,EAAA;AAAA;wBAA7C,QAAIS,KAAA,GAAA;;;;;WAAJ;;;;;;;MAzEaT,EAAS,EAAA,IAAwC;AAAA;AAAA,QAApCA,EAAW,EAAA,IAAG,SAAS;AAAA,OAAsB;AAAA;MAQhDA,EAAI,CAAA,CAAA,EAAA;;;;QACZA,EAAc,EAAA;AAAA,MAAA,GACjBqE,EAAAQ,GAAA,cAAA4kB;AAAA,MAAAzpB;MAAaA,EAAI,CAAA,CAAA;;;;QACZA,EAAc,CAAA;AAAA,MAAA;;;;QAC3BA,EAAI,CAAA;AAAA,MAAA;;;;QACeA,EAAmB,EAAA;AAAA,MAAA;;;;QAC3BA,EAAS,EAAA;AAAA,MAAA;MACbA,EAAc,EAAA;MAAWA,EAAI,CAAA,CAAA,KAAK,MAAS;MAE5CA,EAAS,EAAA;MACRA,EAAW,EAAA;;;;;;;;;;;;;;QA/BcA,EAAS,EAAA;AAAA,MAAA;;;;QAClCA,EAAM,EAAA;AAAA,MAAA;MAwEPA,EAAI,CAAA,CAAA,EAAA,0FAKJqE,EAAAuqB,GAAA,cAAAC;AAAA,MAAA7uB;MAAaA,EAAI,CAAA,CAAA;;;;QACZA,EAAc,CAAA;AAAA,MAAA;;;;MAIfA,EAAS,CAAA,CAAA;AAAA;;;;;;;;;;;;;;QA9FjBA,EAAM,EAAA;AAAA,MAAA;;;;QACVA,EAAc,EAAA;AAAA,MAAA;;;;QAGbA,EAAM,EAAA;AAAA,MAAA;AAAA;;kCARfoD,EA8Hab,GAAA0S,GAAA5R,CAAA,GAlHXf,EAwEK2S,GAAAL,CAAA,+BA1DHtS,EA0BCsS,GAAA/P,CAAA,6CAmCHvC,EAsCI2S,GAAA2Z,CAAA;;;;;;;;UA5EY5uB,EAAc,EAAA;AAAA,QAAA;AAAA;;;;UAChBA,EAAY,EAAA;AAAA,QAAA;AAAA;;;;UACXA,EAAQ,EAAA;AAAA,QAAA;AAAA;;;;UA1CbA,EAAQ,EAAA;AAAA,QAAA;AAAA;;;;UACPA,EAAQ,EAAA;AAAA,QAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;MAQZA,EAAW,CAAA;;;MAUDA,EAAS,EAAA,IAAwC;AAAA;AAAA,QAApCA,EAAW,EAAA,IAAG,SAAS;AAAA,OAAsB;AAAA;;MAQhDA,EAAI,CAAA,CAAA;;;;;QACZA,EAAc,EAAA;AAAA,MAAA,IACjB,CAAA+S,KAAA1S,EAAA,CAAA;AAAA,MAAA,KAAAopB,OAAAA;AAAA,MAAAzpB;MAAaA,EAAI,CAAA;;;;;QACZA,EAAc,CAAA;AAAA,MAAA;;;;;QAC3BA,EAAI,CAAA;AAAA,MAAA;;;;;QACeA,EAAmB,EAAA;AAAA,MAAA;;;;;QAC3BA,EAAS,EAAA;AAAA,MAAA;;MACbA,EAAc,EAAA;MAAWA,EAAI,CAAA,CAAA,KAAK;;MAEnCA,EAAS,EAAA;;MACRA,EAAW,EAAA;;;;;;;;;;;;;;;;;QA/BcA,EAAS,EAAA;AAAA,MAAA;;;;;QAClCA,EAAM,EAAA;AAAA,MAAA;;;QAqFZA,EAAgB,EAAA;AAAA,MAAA,wDAArB,UAAI8uB,kBAAJ;;MAbU9uB,EAAI,CAAA,CAAA,wBAKJ,CAAA+S,KAAA1S,EAAA,CAAA;AAAA,MAAA,KAAAwuB,OAAAA;AAAA,MAAA7uB;MAAaA,EAAI,CAAA;;;;;QACZA,EAAc,CAAA;AAAA,MAAA;;;;;MAIfA,EAAS,CAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;QA9FjBA,EAAM,EAAA;AAAA,MAAA;;;;;QACVA,EAAc,EAAA;AAAA,MAAA;;;;;QAGbA,EAAM,EAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAjBNA,EAAQ,EAAA;AAAA,EAAA;wBAAb,QAAIS,KAAA;;;;;;;;;;;;SATM4D,EAAA0qB,GAAA,cAAAC;AAAA,MAAAhvB;MAAaA,EAAI,CAAA,CAAA;;;;QACZA,EAAc,CAAA;AAAA,MAAA;MAErBA,EAAS,EAAA;;;;QACfA,EAAI,CAAA;AAAA,MAAA;;;;QAFKA,EAAM,EAAA;AAAA,MAAA;AAAA;;AAJrB,MAAAoD,EAgBQb,GAAAwsB,GAAA1rB,CAAA;;;;;;;QARKrD,EAAc,EAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;UAGlBA,EAAQ,EAAA;AAAA,QAAA;;0BAAb,QAAIS,KAAA,GAAA;;;;;;qBAAJ;AAAA;;;;;;;UATU,CAAAsS,KAAA1S,EAAA,CAAA;AAAA,MAAA,KAAA2uB,OAAAA;AAAA,MAAAhvB;MAAaA,EAAI,CAAA;;;;;QACZA,EAAc,CAAA;AAAA,MAAA;;MAErBA,EAAS,EAAA;;;;;QACfA,EAAI,CAAA;AAAA,MAAA;;;;;QAFKA,EAAM,EAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;QAsCPA,EAAW,CAAA;AAAA,MAAA;AAAA;;AAHnB,MAAAoD,EAICb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;QADOrD,EAAW,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;QAoDbA,EAAI,CAAA;AAAA,MAAA,GACGuE,EAAA6N,GAAA,aAAAgF;AAAA,MAAApX;MAAaA,EAAI,CAAA,CAAA;MACNA,EAAI,CAAA,CAAA,EAAA,GACZuE,EAAA6N,GAAA,gBAAA6c,IAAAve;AAAA;AAAA,QAAY1Q,EAAc,EAAA;AAAA,MAAA,CAAA;MAGlCA,EAAc,EAAA,IAAG,eAAe,cAAc;AAAA;;AATtD,MAAAoD,EAWCb,GAAA6P,GAAA/O,CAAA;;;;QADWrD,EAAc,EAAA;AAAA,MAAA;;;;;;;;QAPpBA,EAAI,CAAA;AAAA,MAAA,GACGK,EAAA,CAAA;AAAA,MAAA,KAAA+W,OAAAA;AAAA,MAAApX;MAAaA,EAAI,CAAA;;MACNA,EAAI,CAAA,CAAA,gCACZK,EAAA,CAAA;AAAA,MAAA,UAAA4uB,OAAAA,IAAAve;AAAA;AAAA,QAAY1Q,EAAc,EAAA;AAAA,MAAA;;MAGlCA,EAAc,EAAA,IAAG,eAAe;;;;;;;;;;;;;;;QAxBlCA,EAAI,CAAA;AAAA,MAAA;MACEA,EAAS,EAAA,IAAA,KAAQ,CAAC,2BAERuE,EAAA6N,GAAA,aAAAgF,IAAA;AAAA,MAAApX;MAAaA,EAAI,CAAA,CAAA,EAAA;MACfA,EAAI,CAAA,CAAA,EAAA,GACZuE,EAAA6N,GAAA,gBAAA6c,IAAAve;AAAA;AAAA,QAAY1Q,EAAc,EAAA;AAAA,MAAA,CAAA;;;;QAIxBA,EAAS,EAAA;AAAA,MAAA;AAAA;;AAV3B,MAAAoD,EAaCb,GAAA6P,GAAA/O,CAAA;;;UAN2BrD,EAAgB,EAAA;AAAA,QAAA,CAAA;AAAA;;;;UAC9BA,EAAkB,EAAA;AAAA,QAAA;AAAA;;;;;;;;QAP1BA,EAAI,CAAA;AAAA,MAAA;;MACEA,EAAS,EAAA,IAAA,KAAQ,2BAEPK,EAAA,CAAA;AAAA,MAAA,KAAA+W,OAAAA,IAAA;AAAA,MAAApX;MAAaA,EAAI,CAAA,CAAA;;MACfA,EAAI,CAAA,CAAA,gCACZK,EAAA,CAAA;AAAA,MAAA,UAAA4uB,OAAAA,IAAAve;AAAA;AAAA,QAAY1Q,EAAc,EAAA;AAAA,MAAA;;;;;QAIxBA,EAAS,EAAA;AAAA,MAAA;AAAA;;;;;;;;;IAsDtBA,EAAW,EAAA,KAAAuV,GAAA;AAAA;;;;;;;;;;MAAXvV,EAAW,EAAA;;;;;;;;;;;;;;;AACd,MAAAoD,EAEIb,GAAA2sB,GAAA7rB,CAAA;AAAA;;;;;;;SANHsiB;AAAA;AAAA,KAAA3lB,EAAO,EAAA,EAAA;AAAA,IAASA,MAAO,SAAK;AAAA;;;;;;;;;;;;;;sCAZzBqE,EAAA6qB,GAAA,MAAAC;AAAA,MAAAnvB,MAAO,KAAK;MACDA,EAAQ,EAAA,EAAC;AAAA,OAAWA,MAAO;AAAA,MAASA,EAAM,EAAA,EAAC,MAAK;MAInDA,EAAK,EAAA,CAAA,GACaqE,EAAA6qB,GAAA,eAAAE,IAAA;AAAA,MAAApvB,MAAO,KAAK,EAAA,GAC9BqE,EAAA6qB,GAAA,cAAAG;AAAA,MAAArvB,MAAO,KAAK,sDAJUqF;AAAA,QAAA6pB;AAAA,QAAA;AAAA;AAAA,QAAAlvB;QAAUA,EAAiB,EAAA;AAAA,MAAA;;;;QAC7CA,EAAQ,EAAA,EAAC;AAAA,SAAWA,MAAO;AAAA,QAASA,EAAM,EAAA,EAAC;AAAA,MAAK;;;AALlE,MAAAoD,EAcIb,GAAA2sB,GAAA7rB,CAAA;;;aADDhD,EAAA,CAAA;AAAA,MAAA,SAAAslB,OAAAA;AAAA,OAAA3lB,EAAO,EAAA,EAAA;AAAA,MAASA,MAAO,SAAK,OAAA2E,GAAAihB,GAAAD,CAAA,GAZzBtlB,EAAA,CAAA;AAAA,MAAA,SAAA8uB,OAAAA;AAAA,MAAAnvB,MAAO;;MACIA,EAAQ,EAAA,EAAC;AAAA,OAAWA,MAAO;AAAA,MAASA,EAAM,EAAA,EAAC;;MAI9CA,EAAK,EAAA,6BACaK,EAAA,CAAA;AAAA,MAAA,SAAA+uB,OAAAA,IAAA;AAAA,MAAApvB,MAAO,KAAK,+BAC9BK,EAAA,CAAA;AAAA,MAAA,SAAAgvB,OAAAA;AAAA,MAAArvB,MAAO;eAJeqF;AAAA,QAAA6pB;AAAA,QAAA;AAAA;AAAA,QAAAlvB;QAAUA,EAAiB,EAAA;AAAA,MAAA;;;;;QAC7CA,EAAQ,EAAA,EAAC;AAAA,SAAWA,MAAO;AAAA,QAASA,EAAM,EAAA,EAAC;AAAA,MAAK;AAAA;;;;;;;SAnHjE2lB;AAAA;AAAA,IAAA3lB,MAAO,QAAK;AAAA;;;;MADGA,EAAK,CAAA;AAAA,MAAKA,EAAM,EAAA,EAAC,OAAcsvB,EAAA,UAAAC;AAAA,MAAAvvB,MAAO;;;AAAxD,MAAAoD,EAEQb,GAAA+sB,GAAAjsB,CAAA;;;AADL,MAAAhD,EAAA,CAAA;AAAA,MAAA,SAAAslB,OAAAA;AAAA,MAAA3lB,MAAO,QAAK,OAAA2E,GAAAihB,GAAAD,CAAA;;MADG3lB,EAAK,CAAA;AAAA,MAAKA,EAAM,EAAA,EAAC,4BAAcK,EAAA,CAAA;AAAA,MAAA,SAAAkvB,OAAAA;AAAA,MAAAvvB,MAAO;;;;;;;;;;;;;MAbzDA,EAAO,EAAA,IAAA;;;;;;MATIA,EAAI,CAAA,CAAA,WAAA;QAIhB8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,EAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,EAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MACrBA,EAAM,EAAA,CAAA;AAAA;;;;QAHIA,EAAO,EAAA;AAAA,MAAA;AAAA;;AAJlC,MAAAoD,EAiKKb,GAAAoQ,GAAAtP,CAAA,GAhKHf,EA+JKqQ,GAAAL,CAAA;;;;;;;;MA9JatS,EAAI,CAAA,CAAA;;QAIhB8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,EAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,EAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MACrBA,EAAM,EAAA,CAAA;AAAA;;;;;QAHIA,EAAO,EAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;SA7XvBwvB,GAAYC,GAAA;AACf,MAAAC;;AAEF,IAAAA,IAAW,KAAK,MAAMD,KAAA,MAAA;AAAA,EACf,QAAA;AACP,IAAAC,IAAA,CAAYD,CAAa;AAAA;UAEF,OAAAC,KAAa,WAAWA,IAAA,CAAYA,CAAQ,GAEpD,IAAK,CAAAve,SAAoBA,CAAG,EAAA;;AA+GtC,SAAAwe,GAAcC,GAAgBC,GAAA;AACjC,MAAAA,EAAO,WAAW;AAAU,WAAA;AAE5BtuB,MAAAA,IAAQquB,EAAO,UAAUA,EAAO,SAASA,EAAO;AACpDruB,SAAAA,IAAQA,EAAM,eACdsuB,IAASA,EAAO,eAETtuB,EAAM,WAAWsuB,CAAM,KAAKtuB,EAAM,SAAS,MAAMsuB,CAAM;;;6DAnQrD,EAAA,MAAAnsB,EAAA,IAAAyP,KACA,WAAAwE,IAAoB,GAAA,IAAAxE,KACpB,gBAAA2c,IAAyB,GAAA,IAAA3c,KACzB,OAAA5R,IAAgB,GAAA,IAAA4R,KAChB,YAAA4c,IAAqB,QAAA,IAAA5c,KACrB,aAAAwD,IAAkC,KAAA,IAAAxD,KAClC,WAAA6c,IAAoB,QAAA,IAAA7c,KACpB,aAAA8c,IAAsB,GAAA,IAAA9c,KACtB,OAAAsJ,IAAgB,GAAA,IAAAtJ,KAChB,UAAAsF,IAAmB,QAAA,IAAAtF,KACnB,OAAAyW,IAAgB,QAAA,IAAAzW,KAChB,aAAA+c,IAAsB,QAAA,IAAA/c,KACtB,QAAAgd,IAAiB,QAAA,IAAAhd,KACjB,UAAAua,IAAmB,QAAA,IAAAva,KACnB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,GAMrB8J,IAAA,CAAA,GACAmT,IAAiB,IACjBC,IAA4B,IAC5BC,GAEAC,IACA5C,GACA6C,IACAC,IACAC,IACAC,IAEAC,KAAoB,IACpBC,KAAA,CAAA,GACAC,KAAA,CAAA;AA4BJ,EAAAnpB,GAAA,YAAA;ArFxFF,QAAAmH;AqFyFU,UAAAxG,GAAA,GACNqoB,KAAgBI,IACR,IAAAC,GAAqBN,EAAQ,IAC7B,IAAAO,GAAqBP,EAAQ,SAIrCzT,IAAWiU,GAAA,CAAA,GAENC,YACHT,GAAS,UAAQ5hB,KAAAmO,EAAS,KAAM,CAAA7Q,OAAMA,GAAE,UAAU7K,CAAK,MAAtC,gBAAAuN,GAAyC,UAAS,IAAA4hB,EAAA,GAE/DjU,YACF6T,IAAS7T,CAAA,GACLA,EAAM,SAAS,GAAG,IACpB2U,aAEAd,IAAS7T,CAAA,IAKR,CAAAA,KAASQ,EAAS,SAAS,KAC9BnJ,EAAA,IAAAwc,IAASe,GAAqBpU,CAAQ,CAAA,IAI1CqU;UAGM3wB,IAAOgtB,EAAQ,cAAc,MAAM;AACzC,IAAAhtB,KAAA,QAAAA,EAAM,iBAAiB,cAAA,MAAA;AAChB,MAAAgtB,YAEL1Q,IAAWiU,GAAA,CAAA,GACXI,MAEK7U,KACH3I,EAAA,IAAAwc,IAASe,GAAqBpU,CAAQ,CAAA,GAGnCkU,KACHI;;;AASG,WAAAH,KAAA;ArF5IX,QAAAtiB;AqF6IU,UAAA0iB,KAAY1iB,KAAAyhB,GAAW,sBAAyB,MAApC,gBAAAzhB,GAAoC,OAChD2iB,KAAU,SAAShV,CAAK,IAAI;AAClC,IAAA3I,EAAA,IAAAwc,IAASmB,KAAUD,IAAY,IAAA;AAAA;AAIxB,WAAAD,IAAA;AACH,QAAAb,IAAA;AACI,YAAAd,IAAS3S,EAAS,KAAM,CAAA7Q,OAAMA,GAAE,SAAS0kB,GAAQ,CAAC,CAAA;AACxD,MAAAhd,EAAA,IAAA4c,GAAS,SAAQd,KAAA,gBAAAA,EAAQ,WAASA,KAAA,gBAAAA,EAAQ,UAAS,IAAAc,EAAA;AAAA;;AAiB9C,WAAA/c,KAAA;UACDhT,IAAOgtB,EAAQ,cAAc,MAAM;AACrC,WAAAhtB,IAEKA,EAAK,qBAKH,CAAA,IAFAwwB,IAAUV,KAAY9C,GAEnB,QAAQ;AAAA;AAMf,WAAAuD,KAAA;AACA,WAAAvd,GAAA,EACJ,OAAQ,CAAA+d,MAAmBA,EAAM,YAAY,mBAAmB,EAChE,IAAK,CAAAthB,MAAA;YACEwf,KAASxf,GACT7O,KAAQ6O,EAAG,aAAa,OAAO,KAAKwf,GAAO,SAAS,IACpDlG,KACJtZ,EAAG,aAAa,OAAO,KAAKwf,GAAO,SAASxf,EAAG,aAAa7O,IACxDsuB,KAASzf,EAAG,aAAa,QAAQ,KAAKsZ,MAASnoB,MAAS;AAErD,aAAA,EAAA,OAAAA,IAAO,OAAAmoB,IAAO,QAAAmG,GAAA;AAAA;;WAKpBwB,GAAqBltB,GAAA;AAEtB,UAAAwtB,KAAextB,EAClB,IAAK,CAAAyrB,QACE,GAAWA,GAAO,KAAK,MAAS,GAAAA,GAAO,KAAK,MAAM,IAC3C,MAEd,EAAA,KAAA,CAAM7wB,IAAWC,OAAeD,KAAIC,KAAI,IAAA,EAAO,EAC/C,IAAA;AAGC,QAAA4yB,KAAW,KAAK,IAAID,MAAgB,GAAG1B,EAAY,MAAM,IAAI;AAG7D,WAAAtZ,MACFib,MAAY,OAGJA,EAAQ;AAAA;WAIXC,GAAwBxP,GAAA;AAC3B,QAAA5S,KAAQ4gB,IAAoBhO,GAC5ByP,KAASjB,MAAA,QAAAA,GAAkB,SAAoBA,KAAX5T;AACpC,IAAA6U,GAAM,WAAW,MAGjBriB,KAAQ,IACVA,KAAQshB,IAAce,GAAM,SAAS,IAAI,IAChCriB,MAASqiB,GAAM,WACxBriB,KAAQshB,IAAc,IAAIe,GAAM,SAAS,UAE3CzB,IAAoB5gB,EAAA,GACpBsiB,GAAetiB,EAAK;AAAA;WAGbsiB,GAAetiB,GAAA;UAChBuiB,KAASxB,GAAQ,gCACH/gB,CAAK,IAAA;AAEpB,QAAA,CAAAuiB;AAAA;AAEC,UAAAC,KAAeD,GAAO,yBACtBE,KAAS1B,GAAQ;AAOnB,IALFyB,GAAa,OAAO,KACpBA,GAAa,QAAQ,KACrBA,GAAa,UAAUC,GAAO,UAC9BD,GAAa,SAASC,GAAO,SAI/BF,GAAO,eAAA,EAAiB,UAAU,UAAU,OAAO,UAAA,CAAA;AAAA;AAG5C,WAAAV,KAAA;UACPT,KAAmBE,IACf9T,EAAS,OAAQ,CAAA2S,MAAWD,GAAcC,GAAQc,GAAS,KAAK,CAAA,IAChEzT,CAAA;AAAA;AAGG,WAAAkV,KAAA;AACH,IAAAC,KAIJ;AAAA;AACE,QAAAd,YACAlB,IAAiB,EAAA,GACjBM,MAAA,QAAAA,GAAU;AAAA;MACT;AAAA;;AAGI,WAAAza,KAAA;UACPma,IAAiB,EAAA;AAAA;WAaV9H,GAAc/mB,GAAAA;UACfkE,KAAS4sB,MACT,MAAA3uB,GAAM,QAAA,CAASnC,MAAUuvB,EAAO,EAAA,IAChC,EAAA,MAAAptB,GAAM,OAAOnC;AAEnB;AAAA;AACE,QAAAosB,EAAQ,cACF,IAAA,YAAY,WAAa,EAAA,UAAU,IAAM,QAAAloB,GAAA,CAAA,CAAA,GAE/CmrB,KAAW;AAAA;MACV;AAAA;;WAOI0B,EAAS1C,GAAA;AACZ,IAAAwC,MACCjB,MACHP,KAAW,IACX3a,MACAnC,EAAA,IAAA4c,GAAS,QAAQd,EAAO,OAAAc,EAAA,IAE1BpI,GAAcsH,EAAO,KAAK;AAAA;AAMb,iBAAA3F,KAAA;AACP,UAAA3hB,GAAA,GACNgpB,MACIT,GAAiB,WAAW,MAC9BvI,GAAcuI,GAAiB,CAAC,EAAE,KAAK,GACvC;AAAA;AACE,QAAA5a;;MACC;AAAA;;WAIEsc,GAAarK,GAAA;AAChB,IAAAkK,KACJzB,GAAc,YAAYzI,CAAC;AAAA;WAGpBsK,GAAetK,GAAA;AAClB,IAAAkK,KACJzB,GAAc,cAAczI,CAAC;AAAA;WAGtBuK,GAAmBvK,GAAA;KACtBA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,gBAAA,GACFnd,MACAonB;;WAIKO,GAAiBxK,GAAA;AACxB,IAAAnd,MACAonB,MACAjK,EAAE,gBAAA;AAAA;WAGKyK,GAAezK,GAAA;AAChB,UAAA3lB,KAAS2lB,EAAE,eACX0H,KAAS3S,EAAS1a,GAAO,aAAa;AAC5C,IAAA+vB,EAAS1C,EAAM;AAAA;AAGR,WAAA7kB,KAAA;AACH,IAAAqnB,YAEJQ,IAAsB,MAAA,SACtBvC,IAAoB,EAAA,GACpBvc,EAAA,IAAA4c,GAAS,QAAQ,IAAAA,EAAA,GACjBE,KAAW,IACXU,MAEAhJ,GAAc,EAAE;AAAA;WAGTuK,GAAe3K,GAAA;AACtB,IAAAiK,MACAjK,EAAE,gBAAA;AAAA;EAGE,MAAA8I,GAAA;AAAA,IACJ,YAAoBnsB,IAAA;AAAA,WAAA,QAAAA,IAClBA,GAAM,iBAAiB,QAAe,OAAAqjB,OAAA;AAE/B,YADA,CAAA0I,MACA,CAAAG;AAAA;AAEClsB,cAAAA,KAAQqjB,GAAE;AAKX,QAJkB2I,GAAiB,KACrC,CAAAzkB,OAAMA,GAAE,UAAUvH,GAAM,KAAA,MAIzByjB,GAAc,EAAE,GAChBzjB,GAAM,QAAQ;AAAA;;IAKpB,SAASqjB,IAAA;AACP,MAAAnd,MACA2lB,GAAS,MAAA,GACTxI,GAAE,eAAA,GACFA,GAAE,gBAAA;AAAA;IAGJ,QAAQA,IAAA;AACA,YAAA0H,KAASiB,GAAiBR,CAAiB;AAC7C,MAAAT,MACF0C,EAAS1C,EAAM,GAGbc,GAAS,QACXza,OAEAkc,MAGFjK,GAAE,gBAAA;AAAA;IAGJ,QAAQA,IAAkB9e,IAAA;MACnBgnB,KAAgB+B,MACrBN,GAAwBzoB,OAAc,OAAO,KAAK,CAAC,GACnD8e,GAAE,gBAAA;AAAA;IAGJ,MAAMT,IAAA;YACEqL,KAAgBjC,GAAiB,KACpC,CAAAjB,OACCA,GAAO,MAAM,YAAkB,MAAA,KAAK,MAAM,MAAM,YAAA,CAAA;AAEhD,MAAAkD,MACFR,EAASQ,EAAa,GAExB7c;;IAGF,QAAQwR,IAAA;AACN,MAAA0K,MACAvB,KAAW;AAAA;IAGb,YAAY1I,IAAA;cACFA,GAAE,KAAA;AAAA,QACH,KAAA;AACH,eAAK,QAAQA,EAAC;;QAEX,KAAA;AACH,eAAK,QAAQA,IAAG,IAAI;;QAEjB,KAAA;AACH,eAAK,QAAQA,IAAG,MAAM;;QAEnB,KAAA;AACH,eAAK,MAAM,kBAAkB,GAAG,CAAC;;QAE9B,KAAA;AACH,eAAK,MAAM,kBACT,KAAK,MAAM,MAAM,QACjB,KAAK,MAAM,MAAM,MAAA;;;AAInB,eAAK,QAAQA,EAAC;;;;IAKpB,cAAcA,IAAA;cACJA,GAAE,KAAA;AAAA,QACH,KAAA;AACH,eAAK,SAASA,EAAC;;QAEZ,KAAA;AACH,eAAK,MAAMA,EAAC;;;;;EAMd,MAAA+I,GAAA;AAAA,IACJ,YAAY8B,IAAA;AAAA;IAEZ,QAAQ7K,IAAA;AACF,UAAAkI,GAAA;AACI,cAAAR,KAASiB,GAAiBR,CAAiB;AAC7C,QAAAT,MACF0C,EAAS1C,EAAM,GAEjB3Z;;AAEA,QAAAkc;AAGF,MAAAjK,GAAE,eAAA,GACFA,GAAE,gBAAA;AAAA;IAGJ,QAAQA,IAAkB9e,IAAA;MACnBgnB,KAAgB+B,MACrBN,GAAwBzoB,OAAc,OAAO,KAAK,CAAC,GACnD8e,GAAE,eAAA,GACFA,GAAE,gBAAA;AAAA;IAGJ,cAAcA,IAAA;cACJA,GAAE,KAAA;AAAA,QACH,KAAA;AAAA,QACA,KAAA;AACH,eAAK,QAAQA,EAAC;;QAEX,KAAA;AACH,eAAK,QAAQA,IAAG,IAAI;;QAEjB,KAAA;AACH,eAAK,QAAQA,IAAG,MAAM;;QAEnB,KAAA;AACH,UAAAjS;;;AAIG,aAAA;AAAA;IAGT,YAAYiS,IAAA;cACFA,GAAE,KAAA;AAAA,QACH,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AACH,UAAAA,GAAE,eAAA,GACFA,GAAE,gBAAA;AAAA;;;;;AA0BO,MAAAuI,KAAS7c;;;;;AA4CL,MAAA8c,KAAQ9c;;;AAmFD,QAAA+W,KAAA,CAAAiF,MAAA0C,EAAS1C,CAAM;;;AAtBxB,MAAAY,KAAO5c;;;;;AAnHb,MAAA+Z,IAAO/Z;;;;;AATN,MAAA2c,KAAU3c;;;;;;;WAldrBE,EAAA,IAAAse,IAAY3hB,GAAUgI,CAAQ,CAAA;WAC9B3E,EAAA,IAAA0W,IAAS/Z,GAAUmZ,CAAK,CAAA;aACxByI,IAAe5hB,GAAUyf,CAAW;YACpCpc,EAAA,IAAAqd,IAAU1gB,GAAU0f,CAAM,CAAA;;WAC1Brc,EAAA,IAAAid,IAActgB,GAAUsf,CAAU,KAAM,CAAAoB,CAAA;aAGxCrd,EAAA,IAAA8e,IAAsB/B,GAAiBR,CAAiB,IACvDQ,GAAiBR,CAAiB,EAAE,QACpC,MAAA;UAGFS,KAAUtB,GAAYjuB,CAAK,GAG3BgwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QC9ES,QAAA1B,IAAiB,GAAA,IAAA1c,KACjB,OAAAuW,IAAgB,GAAA,IAAAvW,KAChB,OAAA5R,IAAgB,GAAA,IAAA4R;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACgGvB,MAAA/P,EAMCb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;;;;;;;;;QAXOrD,EAAS,CAAA;AAAA,MAAA;;;AAHjB,MAAAoD,EAMCb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;QAHOrD,EAAS,CAAA;AAAA,MAAA;AAAA;;;;;;;SAgB+B0lB,IAAAsN;AAAA;AAAA,IAAehzB,EAAI,CAAA;AAAA,EAAA,IAAA;;;;;;AAAjE,MAAAoD,EAAwEb,GAAAqS,GAAAvR,CAAA;;;AAA1B,MAAAhD;AAAA,MAAA,KAAAqlB,OAAAA,IAAAsN;AAAA;AAAA,QAAehzB,EAAI,CAAA;AAAA,MAAA,IAAA,OAAA2E,GAAAiC,GAAA8e,CAAA;AAAA;;;;;;;;;;;;QAc9D1lB,EAAK,CAAA;AAAA,MAAA;;;AAFR,MAAAoD,EAGKb,GAAAqS,GAAAvR,CAAA,GAFHf,EAAsDsS,GAAAxC,CAAA;;;;;;;QACrDpS,EAAK,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;mDALOkR,GAAY,CAAA;;;AAD3B,MAAA9N,EAEKb,GAAAqS,GAAAvR,CAAA;AAAA;;;;;;;;mBALF,KAAK;AAAA;AAAA,IAAKrD,EAAQ,CAAA;AAAA,EAAA,IAAA;;;gEAAE,GACvB;MAFmBA,EAAQ,CAAA;;;AAD3B,MAAAoD,EAGKb,GAAAqS,GAAAvR,CAAA,GAFHf,EAAsCsS,GAAAqe,CAAA;;;;;MAArBjzB,EAAQ,CAAA;sBACxB,KAAK;AAAA;AAAA,QAAKA,EAAQ,CAAA;AAAA,MAAA,IAAA,OAAA2E,GAAAuuB,GAAAC,CAAA;AAAA;;;;;;;;;;;;;AA6BrB,MAAA/vB,EAKAb,GAAA6wB,GAAA/vB,CAAA;;;;;;;;;;;;;;;;;;;;AAZA,MAAAD,EAKAb,GAAA6wB,GAAA/vB,CAAA;;;;;;;;;;;;;;;;;;;;AAXA,MAAAD,EAIAb,GAAA6wB,GAAA/vB,CAAA;;;;;;;;;;;;;;;;AA7CC;AAAA;AAAA,MAAArD,SAAY,aAAUqU;;;0BAmBpBc;AAAA;AAAA,IAAAnV,SAAY,WAAO6U,GAAA7U,CAAA;AAAA;;AAGnB;AAAA;AAAA,MAAAA,SAAY;AAAA;AAAW,aAAAgV;AAKlB;AAAA;AAAA,MAAAhV,SAAY;AAAA;AAAU,aAAAoV;AAItB;AAAA;AAAA,MAAApV,SAAY;AAAA;AAAO,aAAAkV;AAAA;;;AASxB;AAAA;AAAA,MAAAlV,SAAY;AAAA;AAAW,aAAAwV;AAMlB;AAAA;AAAA,MAAAxV,SAAY;AAAA;AAAU,aAAAuV;AAOtB;AAAA;AAAA,MAAAvV,SAAY;AAAA;AAAO,aAAAsV;AAAAA;;;;;;QAnCiBtV,EAAQ,CAAA;AAAA,MAAA;MArBzCA,EAAO,CAAA,CAAA,EAAA,IAAA,gBAAA;;;;;;;;AAJ1B,MAAAoD,EAsEKb,GAAA8wB,GAAAhwB,CAAA,GArEHf,EAoEK+wB,GAAA9gB,CAAA,0BA7CHjQ,EAoBKiQ,GAAAI,CAAA,GAnBHrQ,EAA4DqQ,GAAAL,CAAA,6EAqB9DhQ,EAsBKiQ,GAAAO,CAAA;;;;;;;QA3C2C9S,EAAQ,CAAA;AAAA,MAAA;AAAA,MACjDA,SAAY;;MAtBJA,EAAO,CAAA,CAAA,EAAA,IAAA;;;;;;;;;;;;;;;AA3Df,SAAAszB,GAAgBC,GAAkB/tB,GAAAA;QAEnC6e,IAAQkP,EAAS,MAAM,GAAG,GAC1BC,IAAMnP,EAAMA,EAAM,SAAS,CAAC,GAC5BoP,IACJD,MAAQ,UAAc,aACnBA,MAAQ,SAAW,aACnBA,MAAQ,SAAW,aACnBA,MAAQ,UAAW,aACnBA,MAAQ,SAAW,aACnBA,MAAQ,UAAW,aACnBA,MAAQ,SAAW,aACnBA,MAAQ,SAAW,aACnBA,MAAQ,UAAW;SAGpBC,KAIFjuB,MAAS,mCAAoC,aAC1CA,EAAK,SAAS,gBAAgB,KAAY,aAC1CA,EAAK,SAAS,kBAAkB,KAAU,aAC1CA,EAAK,SAAS,aAAa,KAAe,aAC1CA,EAAK,WAAW,OAAO,KAAmB,eAC1CA,EAAK,WAAW,OAAO,KAAmB,eAC1CA,EAAK,WAAW,OAAO,KAAmB,eAC1CA,MAAS,wBAAiC,aAC1C;;SAaEwtB,GAAeU,GAAA;AACd,UAAA,IAAA;AAAA,SACDA,IAAQ;aACJA,IAAQ;AAAA,IACZ,KAAAA,IAAQ,OAAO;aACX,KAAK,MAAMA,IAAQ,IAAI,IAAI;AAAA,SAC/BA,IAAQ,KAAK,IAAI,MAAM,CAAC;AACpB,aAAA,KAAK,MAAMA,IAAQ,KAAK,IAAI,MAAM,CAAC,CAAK,IAAA;AAAA;AAExC,aAAA;AAAA;;;AAzEF,MAAA,EAAA,UAAAH,EAAA,IAAApgB,GACA,EAAA,MAAAtD,EAAA,IAAAsD,KACA,MAAA3N,IAAe,GAAA,IAAA2N,KACf,UAAAuZ,IAAmB,GAAA,IAAAvZ,KACnB,OAAAyW,IAAgB,GAAA,IAAAzW,GAIvBwgB,IAA8C,aAC9ChG,GACAiG,IAAoB;WA8CfzqB,EAAS0qB,GAAA;AAChB,IAAAlG,EAAQ,cAAA,IACF,YAAYkG,GAAA,EACd,UAAU,GAAA,CAAA,CAAA;AAAA;AAsEQ,QAAAlJ,IAAA,MAAAxhB,EAAS,SAAS,GAMlB2qB,IAAA,MAAA3qB,EAAS,SAAS,GAOlB4qB,IAAA,MAAA5qB,EAAS,SAAS;;;AA7D7B,MAAAwkB,IAAO/Z;;;;;;;UAnEpBE,EAAA,GAAG6f,IACC/J,KAAS,WACL8C,KAAY,KAAKA,IAAW,OAAQ,eACrC,UAAA;WAEP5Y,EAAA,GAAG8f,IAAYL,KAAY/tB,KAAQ8tB,GAAgBC,GAAU/tB,CAAI,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICsK1DxF,EAAW,CAAA,KAAAoV,GAAApV,CAAA;AAAA;;;;;;;;;MAhBSA,EAAM,CAAA,CAAA,EAAA,IAAA,gBAAA;AAAA;;AAHjC,MAAAoD,EAgCKb,GAAAgQ,GAAAlP,CAAA,GApBHf,EAKKiQ,GAAAO,CAAA,wCAQLxQ,EAMCiQ,GAAA1N,CAAA;;;;;UA3BS7E,EAAc,CAAA;AAAA,QAAA;AAAA;;;;UACfA,EAAM,CAAA;AAAA,QAAA;AAAA;;;;UACDA,EAAW,EAAA;AAAA,QAAA;AAAA;;;;UACZA,EAAU,EAAA;AAAA,QAAA;AAAA;;;;UACTA,EAAW,CAAA;AAAA,QAAA;AAAA;;;;UACXA,EAAW,EAAA;AAAA,QAAA;AAAA,yBACZg0B,EAAM;AAAA;;;;MASdh0B,EAAW,CAAA;;;;;;;;MAhBSA,EAAM,CAAA,CAAA,EAAA,IAAA;;;;;;;;;;;yBAkB1B,uBAAqB;;QAACA,EAAW,CAAA;AAAA,MAAA,SAAC,GAAC;;;AADtC,MAAAoD,EAEAb,GAAA0xB,GAAA5wB,CAAA;;;;;;;QADyBrD,EAAW,CAAA;AAAA,MAAA;AAAA;;;;;;;;;IAoBjCA,EAAW,CAAA,KAAAsV,GAAAtV,CAAA;AAAA;;;;;;;;;;;AALlB,MAAAoD,EAUKb,GAAAqS,GAAAvR,CAAA,GATHf,EAEYsS,GAAAwe,CAAA,qDASdhwB,EAOCb,GAAAsC,GAAAxB,CAAA;;;;QAlBuBrD,EAAc,CAAA;AAAA,MAAA;;;;MAI/BA,EAAW,CAAA;;;;;;;;;;;;;;;;;yBACwC,uBAC/B;;QAACA,EAAW,CAAA;AAAA,MAAA,SAAC,GACpC;;;AAFA,MAAAoD,EAEIb,GAAA0xB,GAAA5wB,CAAA;;;;;;;QADoBrD,EAAW,CAAA;AAAA,MAAA;AAAA;;;;;;;;;IAiB9BA,EAAM,CAAA;AAAA,EAAA;wBAAX,QAAI,KAAA;;;;;;;;;;AADR,MAAAoD,EAUKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;UATIrD,EAAM,CAAA;AAAA,QAAA;;0BAAX,QAAIS,KAAA,GAAA;;;;;;qBAAJ;AAAA;;;;;;;;SAEGklB;AAAA;AAAA,IAAA3lB,MAAM,WAAQ;AAAA,oBAGZk0B;AAAA;AAAA,IAAAl0B,MAAM,QAAK;AAAA;;;;;;AAJhB,MAAAoD,EAMKb,GAAAoQ,GAAAtP,CAAA,qBAJHf,EAGKqQ,GAAAL,CAAA,GAFHhQ,EAAsDgQ,GAAAF,CAAA;;;AAFvD,MAAA/R;AAAA,MAAA,MAAAslB,OAAAA;AAAA,MAAA3lB,MAAM,WAAQ,OAAA2E,GAAAihB,GAAAD,CAAA,GAGZtlB;AAAA,MAAA,MAAA6zB,OAAAA;AAAA,MAAAl0B,MAAM,QAAK,OAAA2E,GAAAwvB,GAAAD,CAAA;AAAA;;;;;;;eAlEjBE;AAAA;AAAA,IAAAp0B,SAAY,cAAUgV,GAAAhV,CAAA;AAAA,KAoCtBmV;AAAA;AAAA,IAAAnV,SAAY,YAAQuV,GAAAvV,CAAA;AAAA,KAuBpBqV;AAAA;AAAA,IAAArV,KAAO,UAAMwV,GAAAxV,CAAA;AAAA;;;;;;;;;AA3Db;AAAA,MAAAA,SAAY;MAoCZA,SAAY;MAuBZA,KAAO;;;;;;;;;SAjIDg0B,GAAO9L,GAAA;AACd,SAAAA,EAAE,eAAA,GACK;;;QA3FE,SAAA1P,IAAmB,WAAA,IAAArF,KACnB,QAAAkhB,IAAiB,IAAA,IAAAlhB,KACjB,aAAAmhB,IAAsB,MAAA,IAAAnhB,GAI7BohB,GACAC,GACAC,IAA4C,WAE5CC,IAAA,CAAA;AAIJ,EAAA/sB,GAAA,MAAA;AACE,IAAA6sB,EAAW;AAAA,MACT;AAAA;AAEE,QAAA1gB,EAAA,GAAA4gB,IAAA,CAAA,CAAA,OAGIF,EAAW,KAAK,EAAE,QAAS,CAAAG,MAAA;AACvB,gBAAA/K,IAAQgL,EAASD,CAAI;AACvB,cAAA/K,GAAA;AACF,YAAA9V,EAAA,GAAA4gB,IAAA,CAAA,EAAY,UAAUC,EAAK,MAAM,OAAA/K,EAAA,GAAA,GAAY8K,CAAM,CAAA;;;AAGrD,UAAAvrB,EAASwrB,CAAI;AAAA,YAEf7gB,EAAA,GAAA0gB,EAAW,QAAQ,IAAAA,CAAA;AAAA;MAErB;AAAA;;WAMKI,EAASD,GAAA;AACX,WAAAE,EAAgBF,CAAI,IAGpBG,EAAgBH,CAAI,IAGlB,qCAFgCL,CAAW,KAHzC;AAAA;WAQFO,EAAgBF,GAAA;UACjBI,IAAeV,EAAO,MAAM,GAAG;eAC1BW,KAAWD;AAIhB,UAFFJ,EAAK,KAAK,MAAMK,EAAQ,QAAQ,KAAK,IAAI,EAAE,QAAQ,KAAK,GAAG,CAAA,KAC3DL,EAAK,KAAK,SAASN,CAAM;AAElB,eAAA;AAGJ,WAAA;AAAA;WAGAS,EAAgBH,GAAA;AAChB,UAAA,CAAAlN,GAAG5X,GAAMolB,CAAK,IAAIX,EAAY,MAAM,aAAa,GAClDY,IAAA;AAAA,MACJ,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI,KAAK,IAAI,MAAM,CAAC;AAAA,MACpB,IAAI,KAAK,IAAI,MAAM,CAAC;AAAA;AAElB,WAAA,EAAAP,EAAK,OAAOO,EAAOD,CAAK,IAAI,SAASplB,CAAI;AAAA;WAMtC1G,EAASwrB,GAAA;AAChB,IAAAJ,EAAI,cACE,IAAA,YAAY,eACd,EAAA,UAAU,IACV,QAAU,EAAA,MAAAI,EAAA,EAAA,CAAA,CAAA;AAAA;AAKP,WAAAQ,IAAA;AACP,IAAAX,EAAW,MAAA;AAAA;WAUJY,EAAOlN,GAAA;AxF3GlB,QAAApZ,GAAAqL;AwF4GI,IAAA+N,EAAE,eAAA,GAEFpU,EAAA,GAAA4gB,IAAA,CAAA,CAAA,IAEI5lB,IAAAoZ,EAAE,iBAAF,QAAApZ,EAAgB,YAEdoZ,EAAE,aAAa,KAAK,EAAE,QAAS,CAAAmN,MAAA;AAC7B,UAAAA,EAAK,SAAS,QAAA;AACV,cAAAV,IAAOU,EAAK,aACZzL,IAAQgL,EAASD,CAAI;AACvB,YAAA/K,GAAA;AACF,UAAA9V,EAAA,GAAA4gB,IAAA,CAAA,EAAY,UAAUC,EAAK,MAAM,OAAA/K,EAAA,GAAA,GAAY8K,CAAM,CAAA;;;AAGrD,QAAAvrB,EAASksB,EAAK,UAAA,CAAA;AAAA;cAKdlb,IAAA+N,EAAE,iBAAF,gBAAA/N,EAAgB,KAAK,EAAE,QAAS,CAAAwa,MAAA;AAC5B,YAAA/K,IAAQgL,EAASD,CAAI;AACvB,UAAA/K,GAAA;AACF,QAAA9V,EAAA,GAAA4gB,IAAA,CAAA,EAAY,UAAUC,EAAK,MAAM,OAAA/K,EAAA,GAAA,GAAY8K,CAAM,CAAA;;;AAGrD,MAAAvrB,EAASwrB,CAAI;AAAA,QAGjB7gB,EAAA,GAAA0gB,EAAW,QAAQ,IAAAA,CAAA;AAAA;AAGZ,WAAAc,IAAA;SACPb,IAAS,WAAA;AAAA;WAGFc,EAAYrN,GAAA;AAIb,UAAAsB,IAAO+K,EAAI;AAOZ,IALHrM,EAAE,UAAUsB,EAAK,KACjBtB,EAAE,WAAWsB,EAAK,IAAIA,EAAK,SAC3BtB,EAAE,UAAUsB,EAAK,KACjBtB,EAAE,WAAWsB,EAAK,IAAIA,EAAK,eAG3BiL,IAAS,SAAA;AAAA;AAIJ,WAAAe,IAAA;SACPf,IAAS,OAAA;AAAA;AAGF,WAAAgB,IAAA;SACPhB,IAAS,SAAA;AAAA;;;AAuCI,MAAAD,IAAU5gB;;;;;AA7BZ,MAAA2gB,IAAG3gB;;;;;AAmCe,MAAA2gB,IAAG3gB;;;;;AAarB,MAAA4gB,IAAU5gB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpGzB,MAAAxQ,EAMKb,GAAAqS,GAAAvR,CAAA,GAJHf,EAAkDsS,GAAAhC,CAAA,wCAGlDtQ,EAAgDsS,GAAA/B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA3FvC6iB,GAAYlzB,GAAA;AzFpCvB,MAAAsM;QyFqCU/L,IAAUP;MAEdO,EAAQ,WAAW,KAClBA,EAAQ,aAAa,KAAKA,EAAQ,aAAa,UAAU,MAAM;AAE3C,WAAAP;AAEnB,MADAO,EAAQ,YACRA,EAAQ,WAAW,OAAK+L,IAAA/L,EAAQ,iBAAR,gBAAA+L,EAAA,KAAA/L,GAAuB,iBAAgB;AAC1D,WAAA;UAEDA,EAAQ,UAAA;AAAA,IACT,KAAA;YACGqN,IAAKrN;UACLqN,EAAG,QAAQA,EAAG,QAAQ;AAAiB,eAAA5N;AAAA;IAE1C,KAAA;YACG4N,IAAKrN;AACP,UAAAqN,EAAG,SAAS,YAAYA,EAAG,SAAS;AAAe,eAAA5N;AAAA;IAEpD,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AACI,aAAAA;AAAA;AAEA,aAAA;AAAA;;;2CAtDTmzB,GACAC,GACAC,GACAC;AAIJ,EAAAnuB,GAAA,YAAA;AACQ,UAAAW,GAAA,GAGNqtB,EAAO,iBAAiB,SAASI,GAAS,EAAI,GAC9CJ,EAAO,iBAAiB,WAAWK,GAAW,EAAI,GAClDL,EAAO,iBAAiB,SAASM,GAAS,EAAI,GAE9CL,IAAiBD,EAAO,cAAc,0BAA0B,GAChEE,IAAeF,EAAO,cAAc,wBAAwB;AAAA;WAGrDK,EAAU9N,GAAA;AACb,IAAAA,EAAE,aAAU4N,IAAiB;AAAA;WAG1BG,EAAQ/N,GAAA;AACX,IAAAA,EAAE,aAAU4N,IAAiB;AAAA;WAmC1BC,EAAQ9xB,GAAA;AACT,UAAAmM,IAAKnM,EAAM;AAEb,QAAAmM,EAAG,QAAQ,eAAe,SAAA;AACxB,UAAA0lB,GAAA;AACF,QAAAD,EAAa,MAAA;;;AAGT,YAAA1uB,IAAO+uB,EAAe,CAAA9lB,EAAG,kBAAkB,GAAG,EAAK;AACzD,MAAAjJ,KAAA,QAAAA,EAAM;;;AAIJ,QAAAiJ,EAAG,QAAQ,eAAe,OAAA;AACvB,UAAA,CAAA0lB,GAAA;AACH,QAAAF,EAAe,MAAA;;;YAGXzuB,IAAO+uB,EAAA,CACV9lB,EAAG,sBAAsB,GAC1B,EAAA;AAEF,MAAAjJ,KAAA,QAAAA,EAAM;;;;AAKD,WAAA+uB,EACPjoB,GACAkoB,IAAoB,IAAA;UAEdC,IAAWD,IAAA,CAAA,GAAeloB,CAAK,EAAE,QAAY,IAAAA;eACxCzL,KAAQ4zB,GAAA;AACX,YAAAhmB,IACJslB,GAAYlzB,CAAI,KACb0zB,EAAc1zB,EAAK,YAAY2zB,CAAQ,KACvCE,EAAoB7zB,GAAM2zB,CAAQ,KAClCG,EAAyB9zB,GAAM2zB,CAAQ;AACxC,UAAA/lB;AACK,eAAAA;AAAA;AAGJ,WAAA;AAAA;AAGA,WAAAimB,EAAoB7zB,GAAY2zB,GAAA;AACjC,WAAA3zB,aAAgB,kBACf0zB,EAAkB,CAAA,GAAA1zB,EAAK,kBAAkB2zB,CAAQ,IADT;AAAA;AAIxC,WAAAG,EAAyB9zB,GAAY2zB,GAAA;AzFpHhD,QAAArnB;AyFqHU,WAAAtM,aAAgB,cACf0zB,EAAmB,CAAA,KAAApnB,IAAAtM,EAAK,eAAL,gBAAAsM,EAAiB,eAAA,CAAA,CAAA,GAAoBqnB,CAAQ,IAD5B;AAAA;;;AAK/B,MAAAR,IAAM/hB;;;;;;;;;;;;;;;;;;;;;;;;ACxFhB,MAAAxQ,EAA8Bb,GAAAg0B,GAAAlzB,CAAA;AAAA;;;;;;;;;;;;;;;;;;AAD3B,MAAAmzB;AAAA;AAAA,IAAAx2B,EAAY,CAAA;AAAA,IAAAA,EAAS,CAAA,EAAA,SAAS,KAACwV,GAAA;AAAA;;;;;;;;;;;;;;MAwB3BxV,EAAI,CAAA,CAAA,gTAVcqF;AAAA,QAAAyN;AAAA,QAAA;AAAA;AAAA,QAAA9S,EAAa,CAAA;AAAA,QAAAA,EAAU,CAAA,EAAA,SAAS;AAAA,MAAC,iDARnCqF;AAAA,QAAAkN;AAAA,QAAA;AAAA;AAAA,QAAAvS,EAAa,CAAA;AAAA,QAAAA,EAAU,CAAA,EAAA,SAAS;AAAA,MAAC,wFAb7BqE,EAAAoyB,GAAA,SAAAC,IAAA;AAAA,MAAA12B,QAAmB,MAAM,EAAA;AAAA;;AAH1D,MAAAoD,EAuCKb,GAAAk0B,GAAApzB,CAAA,GAlCHf,EAiCKm0B,GAAApD,CAAA,GAhCH/wB,EAEK+wB,GAAA/gB,CAAA,2DAMLhQ,EAuBK+wB,GAAA9gB,CAAA,GAnBHjQ,EAEKiQ,GAAAI,CAAA,+BAELrQ,EAcKiQ,GAAAO,CAAA,GAVHxQ,EAMGwQ,GAAA6jB,CAAA,YACHr0B,EAEGwQ,GAAA8jB,CAAA;;;;;;;;;;;;;;;;;;;;;;MAzBF52B,EAAY,CAAA;AAAA,MAAAA,EAAS,CAAA,EAAA,SAAS;;;;;;;;;;;;;;;;;;;YAcRqF;AAAA,QAAAyN;AAAA,QAAA;AAAA;AAAA,QAAA9S,EAAa,CAAA;AAAA,QAAAA,EAAU,CAAA,EAAA,SAAS;AAAA,MAAC;YARnCqF;AAAA,QAAAkN;AAAA,QAAA;AAAA;AAAA,QAAAvS,EAAa,CAAA;AAAA,QAAAA,EAAU,CAAA,EAAA,SAAS;AAAA,MAAC,IAb7B,CAAA+S,KAAA1S;AAAA,MAAA,KAAAq2B,OAAAA,IAAA;AAAA,MAAA12B,QAAmB,MAAM;;;;;;;;;;;;;;6CArB7C,iBAAA0V,IAA0B,GAAA,IAAAvC,GAEjCwiB,GACAkB,GACAC;AAEE,QAAArlB,IAAA,qCAAW,KAAO,GAAA,YAAA;AAExB,EAAA9J,GAAA,YAAA;AACQ,UAAAW,GAAA;UACAyuB,IAAUpB,EAAO,cAAc,gBAAgB,GAC/CqB,IAAWrB,EAAO,cAAc,iBAAiB;AAEvD,IAAA7hB,EAAA,GAAA+iB,IAAWE,KAAA,gBAAAA,EAAS,kBAAA,GACpBjjB,EAAA,GAAAgjB,IAAYE,KAAA,gBAAAA,EAAU,kBAAA;AAAA;;;AAMb,MAAArB,IAAM/hB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YCWa8R;AAAA;AAAA,IAAA1lB,KAAM,YAAS;AAAA;;;yCAA5BqE,EAAAtF,GAAA,QAAAk4B;AAAA,MAAAj3B,KAAM,IAAI;;;AAAvB,MAAAoD,EAAkDb,GAAA2sB,GAAA7rB,CAAA,GAA9Cf,EAA0C4sB,GAAAnwB,CAAA;;;AAApB,MAAAsB;AAAA,MAAA,KAAAqlB,OAAAA;AAAA,MAAA1lB,KAAM,YAAS,OAAA2E,GAAAiC,GAAA8e,CAAA,GAA5BrlB;AAAA,MAAA,KAAA42B,OAAAA;AAAA,MAAAj3B,KAAM;;;;;;;;;;;;;;;;;;;;;IADdA,EAAQ,CAAA;AAAA,EAAA;wBAAb,QAAIS,KAAA;;;;;;;;;;AANV,MAAA2C,EAUSb,GAAA20B,GAAA7zB,CAAA,GATPf,EAEK40B,GAAAtiB,CAAA,+BAELtS,EAII40B,GAAAtI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAHK5uB,EAAQ,CAAA;AAAA,QAAA;;0BAAb,QAAIS,KAAA,GAAA;;;;;;qBAAJ;AAAA;;;;;;;;;;;;;;2CA9BAk1B,GACAjxB,IAAA,CAAA;AAEJ,EAAAiD,GAAA,YAAA;AAYO,QAXC,MAAAW,GAAA,QACN5D,IAAWixB,EACR,cAAc,MAAM,EACpB,iBAAA,CAAA,GAQE,CANWjxB,EACb,IAAK,CAAAgtB,MAAUA,EAAM,aAAa,MAAM,CACxC,EAAA;AAAA,OAAQyF,GAAcC,MACdD,KAAOC;AAAA,MACb;AAAA,OAEA;AACH,MAAAtjB,EAAA,GAAApP,IAAA,CAAA,CAAA,GACA,QAAQ,KAAK,wDAAwD;;;;;;AAOvD,MAAAixB,IAAM/hB;;;;;;;;;;;;;;;;;;;;;;;;;;QCOF5T,EAAO,CAAA;AAAA,MAAA;;;AAA3B,MAAAoD,EAAiCb,GAAAqS,GAAAvR,CAAA,wBACjCD,EAA8Bb,GAAAg0B,GAAAlzB,CAAA;AAAA;;;;;;QADVrD,EAAO,CAAA;AAAA,MAAA;AAAA;;;;;;;YAkBC0lB;AAAA;AAAA,IAAA1lB,KAAM,YAAS;AAAA;;;yCAA5BqE,EAAAtF,GAAA,QAAAk4B;AAAA,MAAAj3B,KAAM,IAAI;;;AAAvB,MAAAoD,EAAkDb,GAAA2sB,GAAA7rB,CAAA,GAA9Cf,EAA0C4sB,GAAAnwB,CAAA;;;AAApB,MAAAsB;AAAA,MAAA,KAAAqlB,OAAAA;AAAA,MAAA1lB,KAAM,YAAS,OAAA2E,GAAAiC,GAAA8e,CAAA,GAA5BrlB;AAAA,MAAA,KAAA42B,OAAAA;AAAA,MAAAj3B,KAAM;;;;;;;;;;IAnBlBA,EAAO,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;;;;;IAkBHA,EAAQ,CAAA;AAAA,EAAA;wBAAb,QAAIS,KAAA;;;;;;;;+BANqB,KAAK;AAAA;AAAA,QAAKT,EAAiB,CAAA,IAAA;AAAA,MAAC,IAAI,IAAI,UAAU,MAAM;AAAA,+BACpD,KAAK;AAAA;AAAA,QAAKA,OAAiB;AAAA,MAAC,CAAA;AAAA;AAAA,MAC9BA,EAAiB,CAAA,IAAA,IAAI,UAAU,MAAM;AAAA;AAAA,MACrCA,EAAc,CAAA,CAAA;AAAA;;;AAhB3C,MAAAoD,EAuBSb,GAAA20B,GAAA7zB,CAAA,+BAjBPf,EAEK40B,GAAAtiB,CAAA,+BAELtS,EAYI40B,GAAAtI,CAAA;;;;;;;MArBC5uB,EAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;UAkBHA,EAAQ,CAAA;AAAA,QAAA;;0BAAb,QAAIS,KAAA,GAAA;;;;;;qBAAJ;AAAA;;;+BANyB,KAAK;AAAA;AAAA,QAAKT,EAAiB,CAAA,IAAA;AAAA,MAAC,IAAI,IAAI,UAAU,MAAM;AAAA,+BACpD,KAAK;AAAA;AAAA,QAAKA,OAAiB;AAAA,MAAC,CAAA;AAAA;AAAA,MAC9BA,EAAiB,CAAA,IAAA,IAAI,UAAU,MAAM;AAAA;AAAA,MACrCA,EAAc,CAAA,CAAA;AAAA;;;;;;;;;;;;;;6CA7C9B,SAAAoT,IAAkB,GAAA,IAAAD,KAClB,gBAAAkkB,IAAyB,EAAA,IAAAlkB,GAEhCwiB,GACAjxB,IAAA,CAAA;AAEJ,EAAAiD,GAAA,YAAA;A5FXF,QAAAmH;A4FyBS,QAbC,MAAAxG,GAAA,QAGN5D,KAAWoK,IAAA6mB,EACR,cAAc,MAAM,MADZ,gBAAA7mB,EAEP,kBAAA,GAQC,CANWpK,EACb,IAAK,CAAAgtB,MAAUA,EAAM,aAAa,MAAM,CACxC,EAAA;AAAA,OAAQyF,GAAcC,MACdD,KAAOC;AAAA,MACb;AAAA,OAEA;AACH,MAAAtjB,EAAA,GAAApP,IAAA,CAAA,CAAA,GACA,QAAQ,KAAK,uDAAuD;;;;;;AAOtD,MAAAixB,IAAM/hB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eCiBf0jB;AAAA;AAAA,IAAAt3B,EAAe,CAAA;AAAA,IAAAA,EAAkB,EAAA,EAAA;AAAA;AAAA,MAASA,EAAW,CAAA;AAAA,IAAA;AAAA;;;;;QADzDA,EAAK,CAAA;AAAA,MAAA;MADaA,EAAS,CAAA,CAAA,EAAA,IAAA,gBAAA;;;;;;;;AAA9B,MAAAoD,EAKKb,GAAAqS,GAAAvR,CAAA;;;;;;;QAJFrD,EAAK,CAAA;AAAA,MAAA,GACDK;AAAA,MAAA,QAAAi3B;AAAA,MAAAt3B,EAAe,CAAA;AAAA,MAAAA,EAAkB,EAAA,EAAA;AAAA;AAAA,QAASA,EAAW,CAAA;AAAA,MAAA;;MAFvCA,EAAS,CAAA,CAAA,EAAA,IAAA;;;;;;;;;;;;;;;;;yBAGtB,GAAC;;QAACA,EAAW,CAAA;AAAA,MAAA,SAAC,GAAC;;;AAAnB,MAAAoD,EAAuBb,GAAA0xB,GAAA5wB,CAAA;;;;;;;QAAjBrD,EAAW,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;QAUlBA,EAAK,CAAA;AAAA,MAAA;;;AAFR,MAAAoD,EAGKb,GAAAqS,GAAAvR,CAAA,GAFHf,EAA+DsS,GAAAxC,CAAA;;;;;;;QAC9DpS,EAAK,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;QAIeA,EAAQ,CAAA;AAAA,MAAA;;;AAA/B,MAAAoD,EAAqCb,GAAAqS,GAAAvR,CAAA;;;;;;;QAAdrD,EAAQ,CAAA;AAAA,MAAA;AAAA;;;;;;;;;IAlB5BA,EAAK,CAAA,KAAAsV,GAAAtV,CAAA;AAAA;;;;;;;;;;;;;IAWLA,EAAK,CAAA,KAAAuV,GAAAvV,CAAA;AAAA;;IAMLA,EAAQ,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;QAlBGA,EAAM,CAAA;AAAA,MAAA,GAASqE,EAAAsO,GAAA,SAAA8C,IAAA3F;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;;;AAA/D,MAAAoD,EAqBKb,GAAAoQ,GAAAtP,CAAA,+BAZHf,EAEKqQ,GAAAL,CAAA;;;;MAVAtS,EAAK,CAAA;;;;;;;;;;;;;;;;;;;MAWLA,EAAK,CAAA;MAMLA,EAAQ,CAAA;;;;;QAlBGA,EAAM,CAAA;AAAA,MAAA,IAAS,CAAA+S,KAAA1S;AAAA,MAAA,MAAAoV,OAAAA,IAAA3F;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;AArCtD,QAAA,CAAAu3B,GAAmBC,CAAuB,IAAI1mB,GACnD,oBACC,CAAA,YAAY,UAAU,GACvB,EAAA,GAEK,CAAA2mB,GAAkBC,CAAiB,IAAI5mB,GAC5C,mBACC,CAAA,WAAW,OAAO,GACnB,EAAA;QAMS,QAAAyC,IAAiB,GAAA,IAAAJ,KAGjB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,KAGd,OAAAuW,IAAgB,GAAA,IAAAvW,KAChB,WAAAwkB,IAA2B,UAAA,IAAAxkB,KAC3B,UAAAykB,IAAmB,GAAA,IAAAzkB,KACnB,OAAAyW,IAAgB,GAAA,IAAAzW,KAChB,aAAA0kB,IAA+B,GAAA,IAAA1kB,KAC/B,IAAA2kB,IAAa,GAAA,IAAA3kB;AAExB,SAAAxL,GAAA,MAAA;AACE,IAAA6vB,EAAwBK,CAAW,GACnCH,EAAkBC,CAAS;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCkD2B33B,EAAU,CAAA;AAAA,MAAA;;;AAA9D,MAAAoD,EAAoEb,GAAAqS,GAAAvR,CAAA;;;;;;;QAAhBrD,EAAU,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;AAF9D,MAAAoD,EAAyBb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;;;;;;;;AAFzB,MAAAD,EAAqCb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;;;;;;;;AAFrC,MAAAD,EAAyBb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;;;;;;;;AAYzB,MAAAD,EAAkEb,GAAAqS,GAAAvR,CAAA;AAAA;;;;;;;;;;;MAb/DrD,EAAU,CAAA,IAAAuV;AAAAA;AAAAA,QAELvV,SAAW,aAAUsV;AAAAA;AAAAA,UAErBtV,SAAW,eAAYgV;;;;;0BAQ5BG;AAAA;AAAA,IAAAnV,SAAW,gBAAYwV,GAAA;AAAA;;;;;QADUxV,EAAI,CAAA;AAAA,MAAA;;;;QAlBtCA,EAAI,CAAA;AAAA,MAAA;MAGCA,EAAU,CAAA;MACHA,EAAU,CAAA,CAAA;;;;QAhBxBA,EAAS,CAAA;AAAA,MAAA;;;;QAMRA,EAAI,CAAA;AAAA,MAAA;;;;QACIA,EAAM,CAAA;AAAA,MAAA;MACLA,EAAU,CAAA,IAAG,SAAS,OAAO,GAC5BqE,EAAAqlB,GAAA,cAAAqO,IAAA;AAAA,MAAA/3B,EAAa,CAAA,CAAA;AAAA,MAAAA,EAAQ,CAAA,CAAA;AAAA,MAAAA,QAAU,EAAE,EAAA;;;;QAPlCA,EAAS,CAAA;AAAA,MAAA;MACPA,EAAS,CAAA,CAAA;AAAA;;AAJ3B,MAAAoD,EAoCOb,GAAAmnB,GAAArmB,CAAA,GAxBLf,EAMConB,GAAA7kB,CAAA,sBACDvC,EAUKonB,GAAApX,CAAA,0BACLhQ,EAKKonB,GAAA5W,CAAA,GAJHxQ,EAAgDwQ,GAAAH,CAAA;;;;;;;;QAlB5C3S,EAAI,CAAA;AAAA,MAAA;;MAGCA,EAAU,CAAA;;MACHA,EAAU,CAAA;;;;QAcYA,EAAI,CAAA;AAAA,MAAA;AAAA,MACrCA,SAAW;;;;;QA/BdA,EAAS,CAAA;AAAA,MAAA;;;;;QAMRA,EAAI,CAAA;AAAA,MAAA;;;;;QACIA,EAAM,CAAA;AAAA,MAAA;;MACLA,EAAU,CAAA,IAAG,SAAS,qCACrBK;AAAA,MAAA,MAAA03B,OAAAA,IAAA;AAAA,MAAA/3B,EAAa,CAAA,CAAA;AAAA,MAAAA,EAAQ,CAAA,CAAA;AAAA,MAAAA,QAAU,EAAE;;;;;QAPlCA,EAAS,CAAA;AAAA,MAAA;;MACPA,EAAS,CAAA,CAAA;AAAA;;;;;;;;;;AA9DlB,QAAA,CAAAg4B,GAAaC,CAAc,IAAInnB,GACpC,oBACC,CAAA,cAAc,UAAU,GACzB,EAAA;AAQS,MAAA,EAAA,MAAAlN,EAAA,IAAAuP,KAGA,SAAAJ,IAAkB,QAAA,IAAAI,KAClB,SAAA+kB,IAAkB,QAAA,IAAA/kB,KAClB,YAAAglB,IAAqB,GAAA,IAAAhlB,KACrB,WAAAwE,IAAoB,GAAA,IAAAxE,KACpB,QAAAilB,IAAyB,GAAA,IAAAjlB,GAMhCklB,GACAC,GACAC;AASJ,EAAA5wB,GAAA,MAAA;AACE,IAAAswB,EAAeG,CAAM,GAErBC,EAAQ,iBAAiB,SAAA,MAAA;AAClB,MAAAG,MAEL1kB,EAAA,GAAAwkB,EAAU,WAAWA,EAAU,SAAAA,CAAA,GAC/BD,EAAQ,kBACF;AAAA,QAAY;AAAA;UACd,UAAU;AAAA,UACV,SAAS;AAAA,UACT,QAAS,CAAAF;AAAA;;QAKfE,EAAQ,iBAAiB,WAAY,CAAAnQ,MAAA;AAC3B,YAAA,EAAA,QAAAuQ,EAAA,IAAYvQ,EAAkB;WACtCqQ,IAAYE,CAAA;AAAA;;;;AAmBH,MAAAH,IAAS1kB;;;;;AAZX,MAAAykB,IAAOzkB;;;;;;;WA5BfE,EAAA,GAAA4kB,IAAajoB,GAAUsC,CAAO,CAAA;YACjCe,EAAA,GAAG0kB,IAAa/nB,GAAUynB,CAAO,KAAKE,MAAW,UAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC+HTp4B,EAAS,EAAA;MACXA,EAAS,EAAA;;;AAD3C,MAAAoD,EAAmEb,GAAAo2B,GAAAt1B,CAAA,eACnED,EAAiEb,GAAAq2B,GAAAv1B,CAAA;AAAA;;;;MAD7BrD,EAAS,EAAA;;MACXA,EAAS,EAAA;AAAA;;;;;;;2BAFxCw2B;AAAA;AAAA,IAAAx2B,EAAO,CAAA,EAAA,SAAS;AAAA,IAAKA,EAAiB,EAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;;;;;;QATvC8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MAClBA,EAAS,EAAA,CAAA;AAAA;AAAA,MACPA,EAAU,CAAA,CAAA;AAAA;AAAA,MACTA,EAAW,CAAA,CAAA;AAAA;AAAA,MAChBA,EAAe,CAAA,CAAA;AAAA;;;AARjC,MAAAoD,EAuBKb,GAAAuQ,GAAAzP,CAAA,GAtBHf,EAqBKwQ,GAAAH,CAAA,+BALHrQ,EAIKqQ,GAAAL,CAAA,GAHHhQ,EAEUgQ,GAAAumB,CAAA;;;AAPP;AAAA,MAAA74B,EAAO,CAAA,EAAA,SAAS;AAAA,MAAKA,EAAiB,EAAA;;;;;;;;;;;;;;;;;;;;QATvC8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MAClBA,EAAS,EAAA,CAAA;AAAA;AAAA,MACPA,EAAU,CAAA,CAAA;AAAA;AAAA,MACTA,EAAW,CAAA,CAAA;AAAA;AAAA,MAChBA,EAAe,CAAA,CAAA;AAAA;;;;;;;;;;;;;;gDArJpB,MAAAyG,IAAe,GAAA,IAAA0M,KACf,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,GAMrBwa,GACAmL,GACAC,IAAA,CAAA,GACAC,GACAC,GACAC,GAEAC,IAA0B,GAC1BC,IAA2B,GAE3BC,IAAoB;AA+BxB,EAAA1xB,GAAA,YAAA;AACQ,UAAAW,GAAA;UAGA3H,IAAOgtB,EAAQ,cAAc,MAAM;AACrC,IAAAhtB,IACFmT,EAAA,GAAAilB,IAASp4B,EAAK,iBAAA,CAAA,IAIdmT,EAAA,GAAAilB,IAAA,CAAA,GAAapL,EAAQ,cAAc,UAAU,EAAE,QAAQ,CAAA,GAIzDoL,EAAO,SAASO,GAAgB7pB,MAAA;YACxB8pB,IAAID;AACV,MAAAC,EAAE,aAAa,aAAqB,QAAA9pB,IAAQ,CAAC,OAAOspB,EAAO,MAAM,EAAA,GACjEQ,EAAE,aAAa,cAAiB,GAAA9pB,IAAQ,CAAC,EAAA;AAAA,QAI3Cke,EAAQ,iBAAiB,UAAW,CAAAzF,MAAA;AAClC,MAAApU,EAAA,IAAArN,IAAQyhB,EAAkB,MAAA,GAC1B/e,EAAS1C,CAAI;AAAA,QAGf+yB,EAAqB/yB,CAAI,GACzBgzB,KAEA;AAAA;cACEJ,IAAoB,EAAA;AAAA;MACnB;AAAA,OAGH,OAAO,iBAAiB,qBAAqBI,CAAkB;AAEzD,UAAAC,IAAA,IAAqB,eAAgB,CAAAC,MAAA;A/FnG/C,UAAA7qB,GAAAqL;A+FoGU,UAAAwf,EAAQ,WAAW;AAAA;AACvB,MAAAF;YAEMhd,IAAQkd,EAAQ,CAAC,EAAE,YAAY;iBAE1BlzB,KAAQsyB;AACjBtyB,SAAAA,KAAAA,IAAAA,EAAK,eAALA,gBAAAA,EACI,cAAc,aADlBA,QAAAA,EAEI,kBAAkB;AAAA,UAAY;AAAA;YAC9B,SAAS;AAAA,YACT,UAAU;AAAA,YACV,QAAA,EACE,QAAQgW,IAAQtI,GAAA;AAAA;;;AAM1B,WAAAulB,EAAe,QAAQ/L,CAAO,GAEjB,MAAA+L,EAAe,UAAU/L,CAAO;AAAA,MAG/C9lB,GAAA,MAAA;AACE,WAAO,oBAAoB,qBAAqB4xB,CAAkB;AAAA;WAG3DtwB,EAAS1C,GAAAA;AAChB,IAAAknB,KAAA,QAAAA,EAAS,kBACH;AAAA,MAAY;AAAA;QACd,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QAAA,EAAU,MAAAlnB,EAAAA;AAAAA;;;WAKP+yB,EAAqB/yB,GAAAA;AAC5B,IAAAsyB,EAAO,SAASa,GAAQnqB,MAAA;AACtB,MAAAmqB,EAAO,aAAa,WAAWnqB,MAAUhJ,IAAO,IAAI,SAAS,OAAO;AAAA;;AAIzD,iBAAAgzB,IAAA;AAEP,UAAAnxB,GAAA;AACA7B,UAAAA,IAAOsyB,KAAA,gBAAAA,EAAS;AACtB,IAAAjlB,EAAA,GAAAklB,KAAavyB,KAAAA,gBAAAA,EAAM,gBAAe,CAAA,GAClCqN,EAAA,GAAAmlB,KAAcxyB,KAAAA,gBAAAA,EAAM,iBAAgB,CAAA,GACpCqN,EAAA,GAAAolB,IAAkBJ,KAAA,gBAAAA,EAAS,YAAA;AAAA;;;AAqBG,MAAAA,IAAOllB;;;;;AAN1B,MAAA+Z,IAAO/Z;;;;;;;aAzHbmlB,EAAO,WAERtyB,KAAQ,YACVA,IAAO,CAAA,GACP;AAAA;AACE,QAAA0C,EAAS1C,CAAI;AAAA;MACZ;AAAA,OACHqN,EAAA,IAAAqlB,IAAkBJ,EAAO,MAAA,IAGvBtyB,IAAO2yB,WAAkBA,IAAmB3yB,CAAA,GAC5CA,IAAO0yB,WAAiBA,IAAkB1yB,CAAA,GAC9CsyB,EAAO,SAASa,GAAiBnqB,MAAA;AAC/B,MAAAmqB,EAAO,aACL,WACAnqB,IAAQ0pB,IAAkB,IAAI,UAAU,MAAA;AAAA;aAjB9CrlB,EAAA,IAAG+lB,KAAcT,IAAmB,MAAML,EAAO,SAAS,KAAM,GAAA;YAC7DS,EAAqB/yB,CAAI;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxC9B,MAAArD,EAgBKb,GAAAqS,GAAAvR,CAAA,GAfHf,EAEQsS,GAAAoY,CAAA,+BAER1qB,EAEKsS,GAAAklB,CAAA,+BAELx3B,EAEMsS,GAAAmlB,CAAA,+BAENz3B,EAEQsS,GAAAolB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCUJlqB;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MACXA,QAAiB,CAAC;AAAA;AAAA,MAChBA,EAAG,CAAA,CAAA;AAAA;;;AAL5B,MAAAoD,EASKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;MANDyM;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MACXA,QAAiB,CAAC;AAAA;AAAA,MAChBA,EAAG,CAAA,CAAA;AAAA;;;;;;;;;;;;;;6CApBjB,KAAA+X,IAAe,IAAA,IAAA5E,KACf,eAAA8mB,IAAwB,GAAA,IAAA9mB,KAGxB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD;AAEzB,SAAAxL,GAAA,MAAA;AACE,IAAAiJ,GAAiB,QAAU,EAAA,eAAAqpB,EAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCStBj6B,EAAO,CAAA;AAAA,MAAA,kPADSuE,EAAA21B,GAAA,SAAAC;AAAA,MAAAn6B,QAAmB,MAAM;;;;QANjCA,EAAS,CAAA;AAAA,MAAA;;;;QACWA,EAAe,CAAA;AAAA,MAAA;;;;QACrBA,EAAS,CAAA;AAAA,MAAA;MACRA,EAAa,CAAA,IAAA,GAAA;;;;QANzBA,EAAa,CAAA;AAAA,MAAA;AAAA;;AAFjC,MAAAoD,EAoBKb,GAAAuQ,GAAAzP,CAAA,GATHf,EAQgBwQ,GAAAonB,CAAA,GAPd53B,EAAiB43B,GAAAE,CAAA,qBACjB93B,EAEK43B,GAAA5nB,CAAA,+BACLhQ,EAEK43B,GAAAvnB,CAAA;;;;;;;QANA3S,EAAO,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UADS,CAAA+S,KAAA1S;AAAA,MAAA,KAAA85B,OAAAA;AAAA,MAAAn6B,QAAmB;;;;;QAN3BA,EAAS,CAAA;AAAA,MAAA;;;;;QACWA,EAAe,CAAA;AAAA,MAAA;;;;;QACrBA,EAAS,CAAA;AAAA,MAAA;;MACRA,EAAa,CAAA,IAAA,GAAA;;;;;QANzBA,EAAa,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;2CAdpB,EAAA,SAAAoT,EAAA,IAAAD,GACA,EAAA,eAAAknB,EAAA,IAAAlnB,GACA,EAAA,WAAAmnB,EAAA,IAAAnnB,KACA,iBAAAuC,IAAkB,OAAA,IAAAvC,KAClB,iBAAAonB,IAA0B,UAAA,IAAApnB,KAC1B,WAAAqnB,IAAoB,GAAA,IAAArnB;;;;;SAGvB,CAAAmnB,KAAaD,UAAeC,IAAY,OAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCqDxBt6B,EAAI,CAAA;AAAA,MAAA;;;;;;;;;;;;;;QAA2BA,EAAU,CAAA;AAAA,MAAA,sDAPzD8P;AAAA;AAAA,QAAgB9P,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAE,CAAA;AAAA,MAAA,IAAA;AAAA,MAAoBA,EAAY,EAAA,CAAA;;;;;;MAE5DA,EAAU,EAAA;;QACbA,EAAG,EAAA;AAAA,MAAA,IAAA,iBAAA;;;;QACGA,EAAM,CAAA;AAAA,MAAA;AAAA;;AALrB,MAAAoD,EASQb,GAAAwS,GAAA1R,CAAA,GADNf,EAAoEyS,GAAA3C,CAAA,2BAF1DqoB,EAAW;;;;;;;;;;;;;;QAEGz6B,EAAI,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;QAA2BA,EAAU,CAAA;AAAA,MAAA;yBAPzD8P;AAAA;AAAA,QAAgB9P,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAE,CAAA;AAAA,MAAA,IAAA;AAAA,MAAoBA,EAAY,EAAA;;;;;;;;MAE5DA,EAAU,EAAA;;;QACbA,EAAG,EAAA;AAAA,MAAA,IAAA;;;;;QACGA,EAAM,CAAA;AAAA,MAAA;AAAA;;;;;;;;SAhBVy6B,GAAYvS,GAAA;AACnB,EAAAA,EAAE,OAAO,cACH,IAAA,YAAY,YAAY,UAAU,IAAM,UAAU,OAAOA,EAAA,EAAA,CAAA,CAAA;;;;SAtC1D5P,GAAUC,CAAe,IAAIzH,GAClC,uBAAA,CACC,SAAS,WAAW,QAAQ,aAAa,GAC1C,EAAA;AAMS,MAAA,EAAA,MAAA4G,EAAA,IAAAvE,KAGA,MAAAtD,IAAiB,SAAA,IAAAsD,KACjB,OAAAunB,IAAmB,UAAA,IAAAvnB,KACnB,SAAAqF,IAAmB,QAAA,IAAArF,KACnB,OAAAwnB,IAAgB,GAAA,IAAAxnB,KAChB,QAAAI,IAAiB,GAAA,IAAAJ,KACjB,UAAAsF,IAAmB,QAAA,IAAAtF,KACnB,UAAAynB,IAAmB,QAAA,IAAAznB,KAGnB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD;AAkBzB,SAAAxL,GAAA,MAAA;AACE,IAAA4Q,EAAgBC,CAAO;AAAA;;;;aAdtB1E,EAAA,GAAA+mB,IAAapqB,GAAUmqB,CAAQ,CAAA;YAFlC9mB,EAAA,IAAGtJ,IAAS,GAAAgO,CAAO,IAAIqiB,IAAa,aAAa,EAAE,EAAA;aAChD/mB,EAAA,IAAA+E,IAAapI,GAAUgI,CAAQ,CAAA;SAE/B3E,EAAA,IAAAgnB,IAAA;AAAA,MACD,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACPjrB,CAAI,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACgjBC;AAAA;AAAA,MAAA7P;MAAQA,EAAc,EAAA,IAAAuV;;;;;;;;;;;;;;;;;;;;;;;yBAKThR,EAAAw2B,GAAA,QAAAC;AAAA,MAAAh7B;;QAASA,EAAI,CAAA;AAAA,MAAA,CAAA;;;AAA7B,MAAAoD,EAAiCb,GAAAw4B,GAAA13B,CAAA;AAAA;;AAAjB,MAAAhD;AAAA,MAAA,MAAA26B,OAAAA;AAAA,MAAAh7B;;QAASA,EAAI,CAAA;AAAA,MAAA;;;;;;;;SAHpBi7B;AAAA;AAAA,IAAAj7B;;MAAeA,EAAI,CAAA;AAAA,IAAA,IAAA;AAAA;;;;;;AAD5B,MAAAoD,EAEKb,GAAAqS,GAAAvR,CAAA;;;AADI,MAAAhD;AAAA,MAAA,MAAA46B,OAAAA;AAAA,MAAAj7B;;QAAeA,EAAI,CAAA;AAAA,MAAA,IAAA,QAAA4U,EAAA,YAAAqmB;AAAA;;;;;;;;;IAH3Bj7B,EAAI,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;;;;QAbGA,EAAS,EAAA;AAAA,MAAA;;;;QACNA,EAAY,EAAA;AAAA,MAAA;;;;QACZA,EAAa,EAAA;AAAA,MAAA;MACCA,EAAI,CAAA,CAAA,EAAA,IAAA,gBAAA;;;;QAEpBA,EAAM,CAAA;AAAA,MAAA;;;;;;MAGf8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA,MAC9B8R;AAAA,QAAO;AAAA;AAAA,QAAgB9R,EAAS,CAAA;AAAA,MAAA,CAAA;AAAA,MAChC8R;AAAA,QAAO;AAAA;AAAA,QAAa9R,EAAO,CAAA;AAAA,MAAA,CAAA;AAAA;;;;QANfA,EAAW,EAAA;AAAA,MAAA;AAAA;;AAN7B,MAAAoD,EAwBKb,GAAAqS,GAAAvR,CAAA;;;;MATErD,EAAI,CAAA;;;;;;;;;;;QAbGA,EAAS,EAAA;AAAA,MAAA;;;;;QACNA,EAAY,EAAA;AAAA,MAAA;;;;;QACZA,EAAa,EAAA;AAAA,MAAA;;MACCA,EAAI,CAAA,CAAA,EAAA,IAAA;;;;;QAEpBA,EAAM,CAAA;AAAA,MAAA;;;;;;;;MAGf8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA,MAC9B8R;AAAA,QAAO;AAAA;AAAA,QAAgB9R,EAAS,CAAA;AAAA,MAAA,CAAA;AAAA,MAChC8R;AAAA,QAAO;AAAA;AAAA,QAAa9R,EAAO,CAAA;AAAA,MAAA,CAAA;AAAA;;;;;QANfA,EAAW,EAAA;AAAA,MAAA;AAAA;;;;;;;;;cA9DhB,IAAA+P,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,GAId,EAAA,MAAA3N,EAAA,IAAA2N,KAIA,MAAAtD,IAAiB,SAAA,IAAAsD,KACjB,OAAAunB,IAAmB,UAAA,IAAAvnB,KACnB,UAAAynB,IAAmB,QAAA,IAAAznB,KACnB,WAAA+nB,IAAoB,GAAA,IAAA/nB,KACpB,SAAA+X,IAAkB,EAAA,IAAA/X,KAClB,OAAAwnB,IAAgB,GAAA,IAAAxnB,KAChB,QAAAI,IAAiB,GAAA,IAAAJ,KACjB,WAAAwE,IAAoB,GAAA,IAAAxE,KACpB,cAAAgoB,IAAuB,GAAA,IAAAhoB,KACvB,cAAAioB,IAAuB,GAAA,IAAAjoB,KACvB,MAAAkoB,IAAe,MAAA,IAAAloB;AASpB,QAAAmoB,IAAA;AAAA,IACJ,QAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA;WAGOC,EAAS/1B,GAAAA;AAMT,WAJLk1B,MAAU,YAAal1B,EAAgB,QAAQ,MAAM,MAAM,IACvDA,IACGA,GAAAA,CAAI,IAAIk1B,CAAK;AAAA;;;;;cAzBrB5mB,EAAA,IAAA0nB,IAAc/qB,GAAUmqB,CAAQ,CAAA;cAChC9mB,EAAA,IAAA2nB,IAAgBhrB,GAAU2qB,CAAY,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QC1WlCp7B,EAAM,EAAA;AAAA,MAAA;;;AADT,MAAAoD,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;QADFrD,EAAM,EAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;QAYDA,EAAW,CAAA;AAAA,MAAA;AAAA;;AAHnB,MAAAoD,EAICb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;QADOrD,EAAW,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;QAsCXA,EAAY,CAAA;AAAA,MAAA;AAAA;;AAJpB,MAAAoD,EAKCb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;QADOrD,EAAY,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;QAURA,EAAU,EAAA;AAAA,MAAA;;;;QAGdA,EAAY,CAAA;AAAA,MAAA;;;AALpB,MAAAoD,EAQCb,GAAAm5B,GAAAr4B,CAAA,2BAPWs4B,EAAO;;;;;;;;QACP37B,EAAU,EAAA;AAAA,MAAA;;;;;QAGdA,EAAY,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;QAOEA,EAAM,EAAA;AAAA,MAAA;;;AAA5B,MAAAoD,EAAmCb,GAAAuS,GAAAzR,CAAA;;;;;;;QAAbrD,EAAM,EAAA;AAAA,MAAA;AAAA;;;;;;;;;IAxEzBA,EAAM,EAAA,KAAAoV,GAAApV,CAAA;AAAA;;;;;;;;;;;;;IAUNA,EAAW,CAAA,KAAAgV,GAAAhV,CAAA;AAAA,KAqCXqV;AAAA;AAAA,IAAArV;IAAiBA,EAAwB,EAAA,KAAAsV,GAAAtV,CAAA;AAAA,KAUzC47B;AAAA;AAAA,IAAA57B;IAAgBA,EAAwB,EAAA,KAAAuV,GAAAvV,CAAA;AAAA;;IAcxCA,EAAM,EAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;;;;;;MAnDMA,EAAO,CAAA,IAAA,iBAAA;MAGUA,EAAY,CAAA,IAAG,YAAY,GAAG,EAAA;MACpDA,EAAU,EAAA;MACVA,EAAU,EAAA;;;;QACPA,EAAM,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAUfqE,EAAAQ,GAAA,MAAAg3B;AAAA,MAAA77B;MAAMA,EAAI,CAAA,CAAA,4BAEFqE,EAAAQ,GAAA,cAAA4kB;AAAA,MAAAzpB;MAAaA,EAAI,CAAA,CAAA;;;;QACZA,EAAc,EAAA;AAAA,MAAA,GAlBFqF;AAAA,QAAAR;AAAA,QAAA;AAAA;AAAA,QAAA7E;QAAwBA,EAAU,EAAA;AAAA,MAAA,GACjCqF;AAAA,QAAAR;AAAA,QAAA;AAAA;AAAA,QAAA7E;QAAyBA,EAAU,EAAA;AAAA,MAAA,0DA5BxCqE,EAAAyO,GAAA,SAAAgpB,IAAA;AAAA,MAAA97B;MAAgBA,EAAI,CAAA,IAAA,iBAAA;;;;QACxBA,EAAU,EAAA;AAAA,MAAA;;;;QACVA,EAAmB,EAAA;AAAA,MAAA;;;;QAClBA,EAAoB,EAAA;AAAA,MAAA;;;;QAC/BA,EAAO,EAAA;AAAA,MAAA;MARHA,EAAK,CAAA,CAAA,IAAI8P;AAAA;AAAA,QAAgB9P;;QAAIA,EAAE,EAAA;AAAA;AAAA,QAAEA,EAAE,EAAA;AAAA;AAAA,QAAEA,EAAE,EAAA;AAAA,MAAA,CAAA,EAAA;AAAA;;AAF5D,MAAAoD,EA0FKb,GAAAgQ,GAAAlP,CAAA,GArFHf,EAoFKiQ,GAAAO,CAAA,+BAvEHxQ,EAEKwQ,GAAAR,CAAA,2DAULhQ,EA0BCwQ,GAAAjO,CAAA,0GA8BDvC,EAEKwQ,GAAAH,CAAA;;;;;UApCO3S,EAAO,EAAA;AAAA,QAAA;AAAA;;;;UACNA,EAAO,EAAA;AAAA,QAAA;AAAA;;;;UACRA,EAAO,EAAA;AAAA,QAAA;AAAA;;;;UACRA,EAAM,EAAA;AAAA,QAAA;AAAA;;;;MA3CZA,EAAM,EAAA;;;;;;;;;;;;;;;;;;;MAUNA,EAAW,CAAA;;MAUCA,EAAO,CAAA,IAAA;;MAGUA,EAAY,CAAA,IAAG,YAAY,GAAG;;MACpDA,EAAU,EAAA;;MACVA,EAAU,EAAA;;;;;QACPA,EAAM,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAUf,CAAA+S,KAAA1S,EAAA,CAAA;AAAA,MAAA,UAAAw7B,OAAAA;AAAA,MAAA77B;MAAMA,EAAI,CAAA,uBAEF,CAAA+S,KAAA1S,EAAA,CAAA;AAAA,MAAA,QAAAopB,OAAAA;AAAA,MAAAzpB;MAAaA,EAAI,CAAA;;;;;QACZA,EAAc,EAAA;AAAA,MAAA;oBAlBFqF;AAAA,QAAAR;AAAA,QAAA;AAAA;AAAA,QAAA7E;QAAwBA,EAAU,EAAA;AAAA,MAAA;oBACjCqF;AAAA,QAAAR;AAAA,QAAA;AAAA;AAAA,QAAA7E;QAAyBA,EAAU,EAAA;AAAA,MAAA;AAAA,MAyB9DA;MAAiBA,EAAwB,EAAA;MAUzCA;MAAgBA,EAAwB,EAAA;MAcxCA,EAAM,EAAA;;;;;;;;;;;;;;;;;;UA7EgB,CAAA+S,KAAA1S,EAAA,CAAA;AAAA,MAAA,OAAAy7B,OAAAA,IAAA;AAAA,MAAA97B;MAAgBA,EAAI,CAAA,IAAA;;;;;QACxBA,EAAU,EAAA;AAAA,MAAA;;;;;QACVA,EAAmB,EAAA;AAAA,MAAA;;;;;QAClBA,EAAoB,EAAA;AAAA,MAAA;;;;;QAC/BA,EAAO,EAAA;AAAA,MAAA;;MARHA,EAAK,CAAA,CAAA,IAAI8P;AAAA;AAAA,QAAgB9P;;QAAIA,EAAE,EAAA;AAAA;AAAA,QAAEA,EAAE,EAAA;AAAA;AAAA,QAAEA,EAAE,EAAA;AAAA,MAAA,CAAA;;;;;;;;;;;;;AAzCjD,SAAA27B,KAAA;AAEP,OAAK,cAAA,IACC,YAAY,sBAAA,EAAwB,UAAU,GAAA,CAAA,CAAA;;;;SApI/CpkB,GAAOC,CAAY,IAAI1G,GAAc,cAAA;AAAA,IAC1C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,OAGKirB,GAAgBC,CAAsB,IAAIlrB,GAC/C,yBAAA,CACC,MAAM,OAAO,QAAQ,aAAa,SAAS,YAAY,CAAA;QAO/C,MAAAtL,IAAa,OAAA,IAAA2N,KACb,MAAAzP,IAAe,GAAA,IAAAyP,KACf,OAAA5R,IAAgB,GAAA,IAAA4R,KAChB,gBAAA8oB,IAAiC,MAAA,IAAA9oB,KACjC,aAAA8c,IAAsB,GAAA,IAAA9c,KACtB,aAAAwD,IAAkC,KAAA,IAAAxD,KAClC,cAAAuF,IAAmC,KAAA,IAAAvF,KACnC,SAAAqF,IAA2B,MAAA,IAAArF,KAC3B,UAAAsF,IAAmB,QAAA,IAAAtF,KACnB,yBAAA+oB,IAAkC,QAAA,IAAA/oB,KAClC,SAAAgpB,IAAkB,QAAA,IAAAhpB,KAClB,UAAAipB,IAAmB,QAAA,IAAAjpB,KACnB,OAAAyW,IAAgB,QAAA,IAAAzW,KAChB,QAAAI,IAAiB,GAAA,IAAAJ,KACjB,OAAAsJ,IAAgB,OAAA,IAAAtJ,KAChB,WAAAwE,IAAoB,GAAA,IAAAxE,KACpB,gBAAA2c,IAAyB,GAAA,IAAA3c,KACzB,KAAAvB,IAAc,GAAA,IAAAuB,KACd,KAAAhB,IAAc,GAAA,IAAAgB,KACd,MAAA1M,KAAe,EAAA,IAAA0M,KACf,QAAAkpB,IAAiB,GAAA,IAAAlpB,KACjB,QAAAmpB,KAAiB,GAAA,IAAAnpB,KACjB,UAAAopB,KAAmB,EAAA,IAAAppB,KACnB,WAAAqpB,KAA2B,KAAA,IAAArpB,KAC3B,IAAA2kB,KAAa,GAAA,IAAA3kB,KACb,IAAApD,KAAc,KAAA,IAAAoD,KACd,IAAAnD,KAAc,KAAA,IAAAmD,KACd,IAAAlD,KAAc,KAAA,IAAAkD,KACd,IAAAjD,KAAc,KAAA,IAAAiD,GAErBspB,IAAsB,IACtBC,KAAuB,IACvBC,IACAC,IACAjP;WAoBKkP,GAAQ3U,GAAA;AACT,UAAArjB,KAAQqjB,EAAE;AAEX,IAAArjB,OACDi4B,MAEAH,MAAe,QACjB,aAAaA,EAAW,GAG1BA,KAAc;AAAA;AACZ,QAAA93B,GAAM,kBACA;AAAA,UAAY;AAAA;YACd,UAAU;AAAA,YACV,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,QAAU,EAAA,MAAAnB,GAAM,OAAOmB,GAAM,MAAA;AAAA;;;MAGhC03B;AAAA,OAEH13B,GAAM,kBACA;AAAA,MAAY;AAAA;QACd,UAAU;AAAA,QACV,QAAA,EAAU,MAAAnB,GAAM,OAAOmB,GAAM,OAAO,KAAMqjB,EAAoB,IAAA;AAAA;QAGlEpU,EAAA,GAAAvS,IAAQsD,GAAM,KAAA;AAAA;WAGPkxB,GAAQ7N,GAAA;AACT,UAAArjB,KAAQqjB,EAAE;AAChB,IAAArjB,GAAM,kBACA;AAAA,MAAY;AAAA;QACd,UAAU;AAAA,QACV,QAAU,EAAA,MAAAnB,GAAM,OAAOmB,GAAM,MAAA;AAAA;;;WAK1Bk4B,GAAO7U,GAAA;AACR,UAAArjB,KAAQqjB,EAAE;AAChB,IAAArjB,GAAM,kBACA;AAAA,MAAY;AAAA;QACd,UAAU;AAAA,QACV,QAAU,EAAA,MAAAnB,GAAM,OAAOmB,GAAM,MAAA;AAAA;;;AAYnC,EAAA8C,GAAA,YAAA;AACQ,UAAAW,GAAA,GAENkP,EAAahS,CAAI,GACjBw2B,EAAuBC,CAAc,IAEjCI,KAAU,MAAMC,MAAU,OAC5B,QAAQ,KACN,2GAAA;AAIE,UAAAU,IAAqBrP,GAAQ,cACjC,2BAAA;IAGEqP,KAAsBA,EAAmB,gBAAgB,SAAS,WACpEP,IAAsB,EAAA;AAGlB,UAAAQ,KAAsBtP,GAAQ,cAClC,4BAAA;IAGEsP,MAAuBA,GAAoB,gBAAgB,SAAS,WACtEP,KAAuB,EAAA;AAAA;;;AAsCZ,MAAAE,KAAOhpB;;;;;AA5BX,MAAA+Z,KAAO/Z;;;;;;;UA9GfE,EAAA,IAAAopB,IAA2BzsB,GAAUyrB,CAAuB,CAAA;UAC5DpoB,EAAA,IAAAqpB,IAAY1sB,GAAU0rB,CAAO,CAAA;UAC7BroB,EAAA,IAAAgpB,IAAarsB,GAAU2rB,CAAQ,CAAA;WAC/BtoB,EAAA,IAAAsW,IAAU3Z,GAAUmZ,CAAK,CAAA;SACzB9V,EAAA,IAAA+E,IAAapI,GAAUgI,CAAQ,CAAA;;WAI3B0kB,KAAaP,MAClB,WAAiB,MAAAA,GAAQ,SAAS,CAAC;eAG9BA,MAAWp3B,MAAS,YACzBo3B,GAAQ,iBAAiB,UAAW,CAAA1U,MAAA;AAClC,MAAA2U,GAAQ3U,CAAC;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BCtCgC,0BACf,qBAES,oBAAkB;MAArCloB,EAAe,CAAA,CAAA,EAAA;;;AAH/B,MAAAoD,EAKKb,GAAAqS,GAAAvR,CAAA,YAJqBf,EAGxBsS,GAAA7V,CAAA;;;;;MADciB,EAAe,CAAA,CAAA;;;;;;;;SAU5B2lB,IAAAyX;AAAA;AAAA,IAAWp9B,EAAI,CAAA;AAAA,EAAA,IAAA;;IAQXA,EAAW,CAAA,KAAAsV,GAAAtV,CAAA;AAAA;;;2DAN4B,gBAC9B,qBAEmB,oBAAkB,SACnD;AAAA;AAAA,SAEA,4CAVmCqE,EAAAiO,GAAA,SAAA+qB,IAAA;AAAA,MAAAr9B,KAAK,gBAAW,iBAAA;MAOrCA,EAAe,CAAA,CAAA,EAAA;;;AAT/B,MAAAoD,EAKKb,GAAA+P,GAAAjP,CAAA,wBACLD,EAcKb,GAAAoQ,GAAAtP,CAAA,YAbWf,EAGdqQ,GAAA,CAAA;;;AANC,MAAAtS;AAAA,MAAA,KAAAslB,OAAAA,IAAAyX;AAAA;AAAA,QAAWp9B,EAAI,CAAA;AAAA,MAAA,IAAA,OAAA2E,GAAAihB,GAAAD,CAAA,GAFmBtlB;AAAA,MAAA,KAAAg9B,OAAAA,IAAA;AAAA,MAAAr9B,KAAK,YAAW,IAAA;;MAOrCA,EAAe,CAAA,CAAA;MAGxBA,EAAW,CAAA;;;;;;;;;;;2BAEX,iCAA+B,qBAEG,UAAQ;;;;QADnCA,EAAW,CAAA;AAAA,MAAA;MACLA,EAAiB,CAAA,CAAA,EAAA;;;AAHjC,MAAAoD,EAKAb,GAAAuS,GAAAzR,CAAA,YAJkCf,EAG/BwS,GAAA/V,CAAA;;;;;;;;QAFOiB,EAAW,CAAA;AAAA,MAAA;;MACLA,EAAiB,CAAA,CAAA;;;;;;;;;;;;;QASlCA,EAAO,CAAA;AAAA,MAAA;;;AADV,MAAAoD,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;QADFrD,EAAO,CAAA;AAAA,MAAA;AAAA;;;;;;;eA1BNs3B,IAAA,CAAA,SAAS,MAAM,EAAE;AAAA;AAAA,IAASt3B,EAAI,CAAA;AAAA,EAAA,eAT/Bo0B;AAAA;AAAA,IAAAp0B,SAAS,UAAMgV,GAAAhV,CAAA;AAAA;;IAiCfA,EAAO,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;MAnCmBA,EAAe,CAAA,CAAA,EAAA;;;AAHlD,MAAAoD,EA4CKb,GAAAuQ,GAAAzP,CAAA,GA3CHf,EA0CKwQ,GAAAH,CAAA,2DANHrQ,EAAqBqQ,GAAAL,CAAA;;;AAhChB;AAAA,MAAAtS,SAAS,kFASRK;AAAA,MAAA,MAAAi3B,IAAA,CAAA,SAAS,MAAM,EAAE;AAAA;AAAA,QAASt3B,EAAI,CAAA;AAAA,MAAA;MAwB/BA,EAAO,CAAA;;MAnCmBA,EAAe,CAAA,CAAA;;;;;;;;;SAhBvCo9B,GAAWjsB,GAAA;UACbA,KAAQA,KAAOA,EAAI,WAAW,IAAW,KACvCA,EAAI,CAAC,EAAE,YAAgB,IAAAA,EAAI,MAAM,CAAC;;;AA1BpC,QAAA,CAAAoG,GAAOC,CAAY,IAAI1G,GAC5B,0BACC,QAAQ,SAAS,MAAM,GACxB,EAAA;AAKS,MAAA,EAAA,MAAAtL,EAAA,IAAA2N,KACA,SAAAmqB,IAAkB,GAAA,IAAAnqB,KAClB,aAAAoqB,IAAsB,GAAA,IAAApqB,KACtB,iBAAAuC,IAAkB,OAAA,IAAAvC,KAClB,iBAAAqqB,IAAiC,QAAA,IAAArqB,KACjC,mBAAAsqB,IAAmC,QAAA,IAAAtqB;AAGvC,QAAA,CAAAuqB,GAAWC,CAAqB,IAAI7sB,GACzC,qBAAA,CACC,QAAQ,OAAO,CAAA;AAWlB,SAAAnJ,GAAA,MAAA;AACE,eAAiB,MAAA6P,EAAahS,CAAI,GAAG,CAAC,GACtCm4B,EAAsBH,CAAe,GACrCG,EAAsBF,CAAiB;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFCqJ9BrJ;AAAA;AAAA,IAAAp0B,SAAmB,QAAIgV,GAAAhV,CAAA;AAAA;;;;;MAWjBA,GAAO,CAAA,IAAA;;;;;;IAMTA,EAAW,EAAA,KAAAuV,GAAAvV,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;QAR+BA,EAAmB,CAAA;AAAA,MAAA;MArBxDA,EAAU,CAAA,CAAA,EAAA,IAAA,gBAAA;MACJA,EAAQ,CAAA,CAAA,GAAA;;;;;;;;AAPlC,MAAAoD,EAiEgBb,IAAAq7B,GAAAv6B,EAAA,GAhEdf,EA+DKs7B,GAAAC,CAAA,GApDHv7B,EAAyEu7B,GAAAvrB,CAAA,YACzEhQ,EAkDKu7B,GAAApH,CAAA,+BArCHn0B,EAoCKm0B,GAAApD,CAAA,GAnCH/wB,EAoBQ+wB,GAAArG,CAAA,GAnBN1qB,EAMK0qB,GAAAra,CAAA,mEAcPrQ,EAUK+wB,GAAAvgB,CAAA,GATHxQ,EAQgBwQ,GAAAgrB,CAAA,yCAElBx7B,EAEK+wB,GAAA9gB,CAAA;;;;;UAjDwDvS,EAAK,EAAA;AAAA,QAAA;AAAA;;;;UA0ClDA,EAAY,EAAA;AAAA,QAAA;AAAA,QApDhBwB,GAAAu8B,IAAArS,GAAA,KAAA,MAAAmS,GAAA,EAAA;AAAA;AAAA,UAAQ79B,EAAO,CAAA;AAAA,UAAA,CAAA,CAAA;AAAA;;;;MAgBxBA,SAAmB;;;;;MAiBfA,EAAW,EAAA;;;;;QAR+BA,EAAmB,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MArBxDA,EAAU,CAAA,CAAA,EAAA,IAAA;;MACJA,EAAQ,CAAA,CAAA,2BALd+9B,KAAAn/B,GAAAm/B,EAAA,MAAA,KAAA19B;AAAA,MAAA,OAAA09B,EAAA,OAAA,KAAA,MAAA,EAAA;AAAA;AAAA,QAAQ/9B,EAAO,CAAA;AAAA,QAAA,CAAA;;;;;;;;;;;UAYnB;AAAA;AAAA,YAAUA,EAAe,EAAA;AAAA;AAAA,UAAE,GAAG;AAAA;;6BAX/Bg+B,IAAAj0B,GAAA8zB,GAAA9S,IAAA,EAAA;AAAA;AAAA,UAAU/qB,EAAe,EAAA;AAAA,UAAA,CAAA;;;;;QAYvB;AAAA;AAAA,UAAOA,EAAe,EAAA;AAAA;AAAA,QAAE;AAAA;AAAA,UAAUA,EAAe,EAAA;AAAA;AAAA,QAAE;;QAXpD;AAAA;AAAA,UAAOA,EAAe,EAAA;AAAA;AAAA,QAAE;AAAA;AAAA,UAAUA,EAAe,EAAA;AAAA;AAAA;;;;;;;;;;;;;;;QAiB/CA,EAAS,EAAA;AAAA,MAAA,GACLuE,EAAA6N,GAAA,YAAAwW;AAAA,MAAA5oB,SAAmB,cAAc,UAAU,MAAM;MAHtCA,EAAc,CAAA,IAAA,gBAAA;AAAA;;AAAvC,MAAAoD,EAKKb,GAAAqS,GAAAvR,CAAA,GAJHf,EAGCsS,GAAAxC,CAAA;AAAA;;;;;;;QAFOpS,EAAS,EAAA;AAAA,MAAA,GACLK;AAAA,MAAA,KAAAuoB,OAAAA;AAAA,MAAA5oB,SAAmB,cAAc,UAAU;;MAHhCA,EAAc,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAWhCA,EAAO,CAAA;AAAA,MAAA;AAAA;;;;;;;;;QAAPA,EAAO,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;AAMV,MAAAoD,EASKb,GAAAqS,GAAAvR,CAAA,GANHf,EAKCsS,GAAA8mB,CAAA;;;;QAFW17B,EAAK,EAAA;AAAA,MAAA;;;;;;;;;;;IA3C5BA,EAAO,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;;MAAPA,EAAO,CAAA;;;;;;;;;;;;;;;;;sDA3JC,SAAAoT,IAAkB,GAAA,IAAAD,KAClB,UAAA8qB,IAAmB,QAAA,IAAA9qB,KACnB,MAAAD,IAAe,QAAA,IAAAC,KACf,YAAA+qB,IAAyB,OAAA,IAAA/qB,KACzB,gBAAAgrB,IAAwC,KAAA,IAAAhrB,KACxC,UAAAirB,IAAmB,OAAA,IAAAjrB,KAGnB,OAAAsJ,IAAgB,GAAA,IAAAtJ,GAMvBwa,IAA8B,MAC9B0Q,IAA0C,OAC1CC,IAAgC,MAChCC,IAAgC,MAChC9P,IAAmB,IACnB+P;SAGGC,GAAiBC,CAAsB,IAAI5tB,GAChD,mBAAA,CACC,aAAa,aAAa,eAAe,WAAW,OAAO,CAAA,GAGvD,CAAA6tB,GAAaC,CAAkB,IAAI9tB,GAAc,oBAAA,CACtD,QACA,QACA,MAAA,CAAA;AAiDF,EAAAnJ,GAAA,YAAA;AACQ,UAAAW,GAAA,GACNo2B,EAAuBP,CAAc,GACrCS,EAAmBV,CAAU,GAG7B,OAAO,iBAAiB,WAAW1L,CAAc,GAE7C/V,WACF2hB,IAAW3hB,CAAA,GACX,QAAQ,KAAK,uDAAuD;AAAA,MAIxE5U,GAAA,MAAA;AACE,WAAO,oBAAoB,WAAW2qB,CAAc;AAAA;WAO7CqM,EAAM3W,GAAA;AACR,IAAA4W,MAGLnR,KAAA,QAAAA,EAAS,cAAA,IAAkB,YAAY,UAAA,EAAY,UAAU,GAAA,CAAA,IAC7DzF,EAAE,gBAAA;AAAA;QAGEsK,IAAkB,CAAAtK,MAAA;AACjB,QAAAuG;cAGGvG,EAAE,KAAA;AAAA,QACH,KAAA;AACH,UAAA2W,EAAM3W,CAAC,GACPA,EAAE,eAAA;;;;WAKC6W,EAAa7W,GAAA;AACd,UAAA8W,KAAY9W,EAAE,OAAO,eAAeA,EAAE,OAAO;WAC9CuG,KAAY,CAAAuQ,KAGb;AAAA,UAAA9W,EAAE,OAAO,aAAa,GAAA;aACxBmW,IAAa,KAAA;;;UAMb,KAAK,IACHnW,EAAE,OAAO,eAAeA,EAAE,OAAO,YAAYA,EAAE,OAAO,YACpD,IAAA,GAAA;aAEJmW,IAAa,QAAA;;;WAIfA,IAAa,QAAA;AAAA;AAAA;AAGN,WAAA1qB,IAAA;UACDhT,IAAO49B,KAAA,gBAAAA,EAAW,cAAc;AAClC,WAAA59B,QACSA,EAAK,iBAAA,CAAA,IAGL,CAAA,GAAA49B,EAAU,QAAQ;AAAA;;;AAiCN,MAAAA,IAAS3qB;;;;;AA0Bb,MAAA0qB,IAAS1qB;;;;;AA7CjB,MAAA+Z,IAAO/Z;;;;;;AvGnLxB,QAAA9E;;auGoDKgF,EAAA,IAAAgrB,IAAcruB,GAAUwtB,CAAQ,CAAA;SAKhC,WAAkB,MAAAnqB,EAAA,GAAA2a,IAAUhe,GAAUyC,CAAI,IAAI,CAAC;WAG3Cub,KAAW6P,KACEA,EAAU,eAAeA,EAAU,qBAEnDD,IAAa,KAAA;WAIV5P,KAAWd,UAChB6Q,IACI,CAAA,GAAA1vB,IAAAyvB,KAAA,gBAAAA,EAAW,cAAc,uBAAzB,QAAAzvB,EAA6C,gBAAA,CAAA,EAC7CyvB,KAAA,QAAAA,EAAW,cAAc,uBAC3B5qB,IAAc,SAAS,CAAA;aAG3BG,EAAA,IAAGmrB,IACDf,MAAe,SAAS,IAAIA,MAAe,SAAS,MAAM,GAAA;SAE5DpqB,EAAA,IAAGorB,IACDf,MAAmB,cACf,YACAA,MAAmB,cACjB,iBACAA,MAAmB,gBACjB,uBACAA,MAAmB,YACjB,qBACAA,MAAmB,UACjB,aACA,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCpBEn+B,EAAQ,CAAA;AAAA,MAAA,GACJuE,EAAA46B,GAAA,YAAAC;AAAA,MAAAp/B,EAAS,CAAA,MAAA,cAAc,UAAU,MAAM,uGAWrCuE,EAAA86B,GAAA,YAAAC;AAAA,MAAAt/B,EAAS,CAAA,MAAA,cAAc,UAAU,MAAM;;QAHtCA,EAAI,CAAA;AAAA,MAAA,IAAA,gBAAA;;;;QAdVA,EAAQ,CAAA;AAAA,MAAA;MANAA,EAAI,CAAA,IAAA,gBAAA;MACMA,EAAe,CAAA,CAAA,EAAA;;;AAJlD,MAAAoD,EAgCKb,GAAAk0B,GAAApzB,CAAA,GA/BHf,EA8BKm0B,GAAApD,CAAA,GAzBH/wB,EAwBK+wB,GAAA9gB,CAAA,GAlBHjQ,EAKKiQ,GAAAD,CAAA,GAJHhQ,EAGCgQ,GAAA6sB,CAAA,YAEH78B,EAEKiQ,GAAAI,CAAA,+BACLrQ,EAQKiQ,GAAAO,CAAA,GANHxQ,EAKQwQ,GAAAiC,CAAA,GAJNzS,EAGCyS,GAAAsqB,CAAA;;;;QAJ4Br/B,EAAK,CAAA;AAAA,MAAA;;;;;;;;QAT5BA,EAAQ,CAAA;AAAA,MAAA,IACJ,CAAA+S,KAAA1S;AAAA,MAAA,KAAA++B,OAAAA;AAAA,MAAAp/B,EAAS,CAAA,MAAA,cAAc,UAAU;;;;;;;;;;;;;;;;;;UAW/B,CAAA+S,KAAA1S;AAAA,MAAA,KAAAi/B,OAAAA;AAAA,MAAAt/B,EAAS,CAAA,MAAA,cAAc,UAAU;;;QAHhCA,EAAI,CAAA;AAAA,MAAA,IAAA;;;;;QAdVA,EAAQ,CAAA;AAAA,MAAA;;MANAA,EAAI,CAAA,IAAA;;MACMA,EAAe,CAAA,CAAA;;;;;;;;;;;;;;;;;;IAL/CA,EAAI,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;;MAAJA,EAAI,CAAA;;;;;;;;;;;;;;;;;;SA5CAuX,GAAOC,CAAY,IAAI1G,GAC5B,qBAAA,CACC,aAAa,aAAa,eAAe,OAAO,GACjD,EAAA,GAEK,CAAAyuB,GAAeC,CAAoB,IAAI1uB,GAC5C,mBACC,aAAa,OAAO,QAAQ,GAC7B,EAAA;QAOS,MAAAtL,IAAyB,GAAA,IAAA2N,KACzB,iBAAAuC,IAAkB,OAAA,IAAAvC,KAClB,UAAAssB,IAAyB,SAAA,IAAAtsB,GAEhCusB,IAAO;AAYX,EAAA/3B,GAAA,MAAA;AACE,IAAA63B,EAAqBC,CAAQ,GAC7B,WAAiB,MAAAjoB,EAAahS,CAAI,GAAG,CAAC;AAAA;WAG/Bq5B,EAAM3W,GAAA;AxG7CjB,QAAApZ;SwG8CI4wB,IAAO,EAAA,IACP5wB,IAAAoZ,EAAE,WAAF,QAAApZ,EAAU,cAAA,IAAkB,YAAY,YAAA,EAAc,UAAU,GAAA,CAAA,IAChEoZ,EAAE,gBAAA;AAAA;;;;;SAnBJpU,EAAA,GAAGgE,IACDtS,MAAS,cACL,YACAA,MAAS,cACP,iBACAA,MAAS,gBACP,uBACAA,MAAS,UACP,aACA,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjCd,MAAApC,EAYKb,GAAAqS,GAAAvR,CAAA,GAXHf,EAESsS,GAAA+qB,CAAA,+BAETr9B,EAEMsS,GAAAmlB,CAAA,+BAENz3B,EAESsS,GAAAgrB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBX,MAAMC,KAAiB;AAChB,SAASC,GAAiBv+B,GAAwB;AAChD,SAAAs+B,GAAe,KAAKt+B,CAAK;AAClC;;;;;;;;;;;;;;;;;;;MCgCiDvB,EAAM,CAAA,CAAA,EAAA;AAAA;;AAAvD,MAAAoD,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;MAF4CrD,EAAM,CAAA,CAAA;;;;;;;;;;;;;;;AA3B/C,QAAAoY,IAAA,EACJ,MAAM;AAIG,MAAA,EAAA,OAAAqE,EAAA,IAAAtJ,GAGA,EAAA,QAAAmd,EAAA,IAAAnd;WAEF4sB,EAAYx+B,GAAA;AAEf,eADC,MAAM,EAAE,SAASkb,CAAK,KACvBqjB,GAAiBv+B,CAAK;AAAA;AAK5B,SAAAoG,GAAA,MAAA;AACO,IAAAo4B,EAAYtjB,CAAK,KACpB,QAAQ,MAAM,yBAAyB,QAGzC6T,IAASlY,EAAMqE,CAAK,KAAKA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCCgBGpY,EAAAuQ,GAAA,SAAA0C,IAAAxH;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;;;AAA9D,MAAAoD,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;UAF2B,CAAA0P,KAAA1S;AAAA,MAAA,MAAAiX,OAAAA,IAAAxH;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;;;;;;;;;;;6CAtCjD,SAAA+S,IAAkB,EAAA,IAAAI,KAClB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,GAGrBwa;AAGJ,EAAAhmB,GAAA,YAAA;AACQ,UAAAW,GAAA,GACN03B,EAAejtB,CAAO;AAAA;WAMfitB,EAAejtB,GAAAA;AACjB,QAAA,CAAA4a;AAAA;AAGL,IADiBha,IACR,SAAS+d,GAAgBjiB,MAAA;YAC1BwwB,IAASvO;AACf,MAAAuO,EAAO,MAAM,UAAUxwB,IAAQ,MAAA,CAAOsD,IAAU,UAAU;AAAA;;AAIrD,WAAAY,IAAA;UACDhT,IAAOgtB,EAAQ,cAAc,MAAM;AACrC,WAAAhtB,QACSA,EAAK,iBAAA,CAAA,IAEL,CAAA,GAAAgtB,EAAQ,QAAQ;AAAA;;;AAKjB,MAAAA,IAAO/Z;;;;;;;UAtBlBosB,EAAejtB,CAAO;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCC+DRmtB,IAAA10B,GAAA,EAAA;AAAA;AAAA,IAAQxL,EAAU,CAAA;AAAA,IAAA,CAAA;wBAAzB,QAAIS,KAAA;;;;;;;oCAIF,KAAG;;QAACT,EAAU,CAAA;AAAA,MAAA;;;;QAL4BA,EAAU,CAAA;AAAA,MAAA;;;AAH5D,MAAAoD,EASWb,GAAA0jB,GAAA5iB,CAAA,GARTf,EAAgB2jB,GAAArT,CAAA,YAChBtQ,EAA2C2jB,GAAAphB,CAAA,sBAC3CvC,EAIc2jB,GAAAka,CAAA;;;yBACd79B,EAA2B2jB,GAAApT,CAAA;;;;;AAJhB,QAAAqtB,IAAA10B,GAAA,EAAA;AAAA;AAAA,UAAQxL,EAAU,CAAA;AAAA,UAAA,CAAA;;0BAAzB,QAAIS,KAAA,GAAA;;;;;;qBAAJ;AAAA;;;;;;QAD4CT,EAAU,CAAA;AAAA,MAAA;;;;QAKhDA,EAAU,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;kCAHUuE;AAAA,QAAAkhB;AAAA,QAAA;AAAA;AAAA,QAAAzlB,QAAI;AAAA,MAAC,GAASuE;AAAA,QAAAkhB;AAAA,QAAA;AAAA;AAAA,QAAAzlB,QAAI;AAAA,MAAC;AAAA;;AAA7C,MAAAoD,EAAgDb,GAAAkjB,GAAApiB,CAAA;AAAA;;;;;;;;6CANnDmzB;AAAA;AAAA,IAAAx2B,SAAY,SAAKwV,GAAAxV,CAAA;AAAA;;;4GAmB4B,UAAQ,uCAQC,MAAI,gEARjDuE,EAAA67B,GAAA,YAAAC;AAAA,MAAArgC,EAAc,CAAA,KAAA,IAAI,SAAS,OAAO,oEAQlCuE,EAAA+7B,GAAA,YAAAC;AAAA,MAAAvgC;MAAcA,EAAU,CAAA,IAAG,SAAS,OAAO;;;;;;;;;;;;;;;;;;;;;;;AA7B7D,MAAAoD,EAiCWb,GAAAi+B,GAAAn9B,CAAA,GAhCTf,EA+BKk+B,GAAA5rB,CAAA,+BAlBHtS,EAiBWsS,GAAA6rB,CAAA,GAdTn+B,EAKAm+B,GAAAL,CAAA,qBAGA99B,EAKAm+B,GAAAH,CAAA;;;;;;;;;;;;;;;;AA5BG;AAAA,MAAAtgC,SAAY,iFAmBHK;AAAA,MAAA,KAAAggC,OAAAA;AAAA,MAAArgC,EAAc,CAAA,KAAA,IAAI,SAAS,iCAQ3BK;AAAA,MAAA,OAAAkgC,OAAAA;AAAA,MAAAvgC;MAAcA,EAAU,CAAA,IAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AApG7C,QAAA,CAAAsY,GAAUC,CAAe,IAAIzH,GAAc,sBAAA,CAChD,OACA,YAAA,CAAA;AAMS,MAAA,EAAA,YAAA4vB,EAAA,IAAAvtB,GACA,EAAA,WAAAwtB,EAAA,IAAAxtB,KACA,cAAAytB,IAAuB,GAAA,IAAAztB,KACvB,SAAAqF,IAAmB,MAAA,IAAArF,KACnB,IAAApD,IAAc,OAAA,IAAAoD,KACd,IAAAnD,IAAc,OAAA,IAAAmD,KACd,IAAAlD,IAAc,IAAA,IAAAkD,KACd,IAAAjD,IAAc,OAAA,IAAAiD,GAQrB0tB,GACAC;AAIJ,EAAAn5B,GAAA,YAAA;AAMO,QALC,MAAAW,GAAA,GACNsI,GAAiB,mBAAmB,WAAA+vB,GAAW,YAAAD,EAAA,CAAA,GAC/CnoB,EAAgBC,CAAO,GAGlB,CAAAqoB,GAAA;AACH,cAAQ,MAAM,wBAAwB;;;AAGxC,IAAAA,KAAA,QAAAA,EAAgB,iBAAiB,WAAY,CAAA3Y,MAAA;YACrC6Y,IAAK7Y,GACL8Y,IAAO,OAAO,SAASD,EAAG,OAAO,KAAK;AAC5C,MAAA7Y,EAAE,gBAAA,GAEF4Y,EAAS,kBACH;AAAA,QAAY;AAAA;UACd,UAAU;AAAA,UACV,SAAS;AAAA,UACT,QAAU,EAAA,MAAAE,EAAA;AAAA;;;;AAQT,WAAAC,EAAK/Y,GAAU7F,GAAA;A7GhE1B,QAAAvT;A6GiEU,UAAAoyB,IAAU,OAAO,SAASR,IAAa,EAAE,IAAIre;AAE/C,IAAA6e,IAAU,KAAKA,KAAWC,OAC5BryB,IAAAoZ,EAAE,WAAF,QAAApZ,EAAU,kBACJ;AAAA,MAAY;AAAA;QACd,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QAAA,EAAU,MAAMoyB,EAAA;AAAA;SAItBhZ,EAAE,eAAA;AAAA;;;AASoB,MAAA4Y,IAAQltB;;;;;AACD,MAAAitB,IAAcjtB;;;AAY5B,QAAA+W,IAAA,CAAAzC,MAAM+Y,EAAK/Y,KAAK,GAQhB4L,IAAA,CAAA5L,MAAM+Y,EAAK/Y,GAAG,CAAC;;;;;YA9EhCpU,EAAA,GAAGqtB,IAAa,KAAK,KAAKR,IAAYC,CAAY,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YCmOxC9uB;AAAA,QAAO;AAAA;AAAA,QAAS9R,EAAK,CAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MACVA,EAAQ,CAAA,CAAA;AAAA;AAAA,MACVA,EAAO,EAAA,IAAG,uBAAuB,GAAG;AAAA;;;;;;AAdrD,MAAAoD,EAICb,GAAA+P,GAAAjP,CAAA,eACDD,EAkBKb,GAAAuQ,GAAAzP,CAAA,GAjBHf,EAgBSwQ,GAAAokB,CAAA,GALP50B,EAIgB40B,GAAA0G,CAAA,GAHdt7B,EAEKs7B,GAAAjrB,CAAA;;;;;;;;QAjBC3S,EAAY,EAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;YAShB8R;AAAA,QAAO;AAAA;AAAA,QAAS9R,EAAK,CAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MACVA,EAAQ,CAAA,CAAA;AAAA;AAAA,MACVA,EAAO,EAAA,IAAG,uBAAuB,GAAG;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;IAjBlDA,EAAK,EAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;MARGA,EAAQ,CAAA,CAAA;;;;QAjBRA,EAAM,CAAA;AAAA,MAAA;;MAEdA,EAAS,EAAA,KAAI,yBAA0B,EAAE;AAAA,MAC1C8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA,MAC9B8R;AAAA,QAAO;AAAA;AAAA,QAAgB9R,EAAO,CAAA;AAAA,MAAA,CAAA;AAAA,MAC9B8R;AAAA,QAAO;AAAA;AAAA,QAAmB9R,EAAO,CAAA;AAAA,MAAA,CAAA;AAAA,MACjC8R;AAAA,QAAO;AAAA;AAAA,QAAiB9R,EAAO,CAAA;AAAA,MAAA,CAAA;AAAA,MAC/B8R;AAAA,QAAO;AAAA;AAAA,QAAkB9R,EAAO,CAAA;AAAA,MAAA,CAAA;AAAA,MAChC8R;AAAA,QAAO;AAAA;AAAA,QAAwB9R,EAAgB,EAAA;AAAA,MAAA,CAAA;AAAA,MAC/C8R;AAAA,QAAO;AAAA;AAAA,QAAmB9R,EAAY,EAAA;AAAA,MAAA,CAAA;AAAA;;;AAX5C,MAAAoD,EAuDKb,GAAAoQ,GAAAtP,CAAA,GAtCHf,EAQKqQ,GAAAL,CAAA;;;;QAJOtS,EAAW,EAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;MAFVA,EAAQ,CAAA;MAQhBA,EAAK,EAAA;;;;;;;;QAzBGA,EAAM,CAAA;AAAA,MAAA;;;MAEdA,EAAS,EAAA,KAAI,yBAA0B,EAAE;AAAA,MAC1C8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA,MAC9B8R;AAAA,QAAO;AAAA;AAAA,QAAgB9R,EAAO,CAAA;AAAA,MAAA,CAAA;AAAA,MAC9B8R;AAAA,QAAO;AAAA;AAAA,QAAmB9R,EAAO,CAAA;AAAA,MAAA,CAAA;AAAA,MACjC8R;AAAA,QAAO;AAAA;AAAA,QAAiB9R,EAAO,CAAA;AAAA,MAAA,CAAA;AAAA,MAC/B8R;AAAA,QAAO;AAAA;AAAA,QAAkB9R,EAAO,CAAA;AAAA,MAAA,CAAA;AAAA,MAChC8R;AAAA,QAAO;AAAA;AAAA,QAAwB9R,EAAgB,EAAA;AAAA,MAAA,CAAA;AAAA,MAC/C8R;AAAA,QAAO;AAAA;AAAA,QAAmB9R,EAAY,EAAA;AAAA,MAAA,CAAA;AAAA;;;;;;;;;;;;;SA1EjCohC,GACPhxB,GAAA;AAEM,QAAAoZ,IAAOpZ,EAAG,yBACVtN,IAAQ,OAAO,iBAAiBsN,CAAE,GAClCixB,IAAO,SAASv+B,EAAM,WAAW,EAAE,KAAK,GACxCw+B,IAAS,SAASx+B,EAAM,aAAa,EAAE,KAAK,GAC5Cy+B,IAAU,SAASz+B,EAAM,cAAc,EAAE,KAAK,GAC9C0+B,IAAQ,SAAS1+B,EAAM,YAAY,EAAE,KAAK;;IAG9C,KAAK0mB,EAAK,MAAM6X;AAAA,IAChB,OAAO7X,EAAK,QAAQ8X;AAAA,IACpB,QAAQ9X,EAAK,SAAS+X;AAAA,IACtB,MAAM/X,EAAK,OAAOgY;AAAA,IAClB,OAAOhY,EAAK,QAAQgY,IAAQF;AAAA,IAC5B,QAAQ9X,EAAK,SAAS6X,IAAOE;AAAA,IAC7B,GAAG/X,EAAK,IAAIgY;AAAA,IACZ,GAAGhY,EAAK,IAAI6X;AAAA;;;yDA5JL,QAAA9tB,IAAiB,UAAA,IAAAJ,KAEjB,UAAAirB,IAAmB,QAAA,IAAAjrB,KAEnB,OAAAsJ,IAAgB,GAAA,IAAAtJ,KAEhB,QAAAsuB,IAAiB,OAAA,IAAAtuB,KAEjB,UAAAuuB,IAAuC,OAAA,IAAAvuB,KAEvC,UAAAua,IAAmB,QAAA,IAAAva,KAGnB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,KAOd,MAAAD,IAAe,QAAA,IAAAC,KAEf,UAAAsF,IAAmB,QAAA,IAAAtF,KAEnB,UAAAwuB,IAAmB,IAAA,IAAAxuB,KAEnB,SAAAyuB,IAAU,GAAA,IAAAzuB,KAEV,SAAA0uB,IAAU,GAAA,IAAA1uB,KAEV,kBAAA2uB,IAAmB,4BAAA,IAAA3uB,KAEnB,cAAA4uB,IAAe,6BAAA,IAAA5uB,GAItBwa,GACAqU,GACAnrB,GACAorB,GACAC,GACAC;AAqBJ,EAAAx6B,GAAA,YAAA;AACQ,UAAAW,GAAA,GACN05B,EAAU,iBAAiB,WAAWI,EAAa;UAE7CzhC,IAAOqhC,EAAU,cAAc,MAAM;AACvC,QAAAt9B;AACA,IAAA/D,IACF+D,KAAW/D,EAAK,qBAIhB+D,KAAA,CAAA,GAAes9B,EAAU,QAAQ,GAGnCE,IACGx9B,GAAS,KACP,CAAA0L,OAAQA,GAAmB,YAAY,CACrB,KAAA4xB;AAAA;WAOhBK,EAAgBzpB,GAAA;AACvB,IAAA0pB;;WAIOF,GAAcla,GAAA;YACbA,EAAE,KAAA;AAAA,MACH,KAAA;AAAA,MACA,KAAA;AACH,QAAAqa;;MAEG,KAAA;AACH,QAAAD;;;;WAQGE,EAAiBta,GAAA;YAChBA,EAAE,KAAA;AAAA,MACH,KAAA;AACH,QAAAoa;;;;AAMG,WAAAC,KAAA;AACH,IAAAnQ,yBAEFrb,IAAQ,EAAA,GACF,MAAAzO,GAAA,GACN25B,EAAa,iBAAiB,WAAWO,GAAkB,EAAI,GAC/D7U,EAAQ,cAAA,IAAkB,YAAY,SAAA,EAAW,UAAU,GAAA,CAAA,CAAA;AAAA;AAOtD,WAAA2U,KAAA;AACP,IAAAJ,EAAe,MAAA,SACfnrB,IAAQ,EAAA,GACR,OAAO,oBAAoB,YAAYsrB,GAAiB,EAAI,GAC5D1U,EAAQ,cAAA,IAAkB,YAAY,UAAA,EAAY,UAAU,GAAA,CAAA,CAAA;AAAA;AAyB/C,iBAAA8U,KAAA;AACP,UAAAn6B,GAAA;AAGA,UAAAo6B,IAAatB,GAAiCY,CAAS,GACvDW,KAAcvB,GAAiCvqB,CAAU;AAG3D,QAAA8rB,GAAY,SAAS;AAAA;AAGnB,UAAAC,KAAaF,EAAW,KACxBG,KAAa,OAAO,cAAcH,EAAW;AAU/C,KANFhB,MAAa,SACTmB,KAAaF,GAAY,UACzBC,KAAaD,GAAY,UACzBC,KAAaC,KACbnB,MAAa;;MAGjB7qB,EAAW,MAAM,MAAMisB,IACf,GAAA,CAAAH,GAAY,MAAM,OACnB,GAAAD,EAAW,IAAIC,GAAY,SAAS,OAAO,OAAO;AAAA;OAKzD,SAAS,KAAK,cAAcD,EAAW,OAAOC,GAAY,SAC1DD,EAAW,OAAOC,GAAY,SAG9B7uB,EAAA,IAAA+C,EAAW,MAAM,OAAU,GAAA6rB,EAAW,KAAKC,GAAY,QAAQD,EAAW,MAAA,MAAA7rB,CAAA;AAAA;;;AA2BjE,MAAAmrB,IAASpuB;;;;;AA4BE,MAAAquB,IAAYruB;;;;AAXX,IAAAuuB,IAAc,KAAA;;;;AACtB,MAAAtrB,IAAUjD;;;;;AArChB,MAAA+Z,IAAO/Z;;;;;;;eA1JfE,EAAA,IAAAivB,IAAUtyB,GAAUgxB,CAAM,CAAA;gBAC1B3tB,EAAA,IAAAiD,IAAQtG,GAAUyC,CAAI,CAAA;iBACtBkf,IAAY3hB,GAAUgI,CAAQ;gBAC9B3E,EAAA,IAAAgvB,IAAYryB,GAAUid,CAAQ,CAAA;aAEjC,YAAgB3W,KAAgB,MAAA0rB,GAAA;aAChC,YAAgBN,KAAyB,MAAAM,GAAA;aAEnC1rB,IACF,OAAO,iBAAiB,YAAYsrB,GAAiB,EAAI,IAEzD,OAAO,oBAAoB,YAAYA,GAAiB,EAAI;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCCsDzDh+B,EAAAuQ,GAAA,SAAA0C,IAAAxH;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;MACVA,EAAW,CAAA,CAAA,EAAA,IAAA,iBAAA;;;;QACzBA,EAAM,CAAA;AAAA,MAAA;AAAA;;AAJrB,MAAAoD,EAOKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;UALI,CAAA0P,KAAA1S;AAAA,MAAA,MAAAiX,OAAAA,IAAAxH;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;MACVA,EAAW,CAAA,CAAA,EAAA,IAAA;;;;;QACzBA,EAAM,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;AAtHZ,QAAA,CAAAgjC,GAAcC,CAAmB,IAAInyB,GAC1C,2BAAA,CACC,YAAY,YAAY,CAAA;AAchB,MAAA,EAAA,MAAApN,EAAA,IAAAyP,GACA,EAAA,OAAA5R,EAAA,IAAA4R,KACA,aAAA+vB,IAA2B,WAAA,IAAA/vB,KAC3B,UAAAsF,IAAmB,QAAA,IAAAtF,KACnB,OAAAyW,IAAgB,QAAA,IAAAzW,KAChB,QAAAI,IAAiB,GAAA,IAAAJ,KACjB,WAAAwE,IAAoB,GAAA,IAAAxE,KACpB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,GASrB/C,GAEA6M,IAAA,CAAA;AAIJ,EAAAtV,GAAA,YAAA;AAIO,IAHC,MAAAW,GAAA,GACN26B,EAAoBC,CAAW,GAE1B9yB,MAEL6M,IAAWtJ,EAAA,GACXwvB,EAAYlmB,CAAQ,GAEpB7M,EAAG,iBAAiB,UAAU,CAAA8X,MAAA;AAC5B,MAAA+B,EAAU/B,EAAkB,MAAM;AAAA;;AAU7B,WAAAvU,IAAA;UACDhT,IAAOyP,EAAG,cAAc,MAAM;AAChC,WAAAzP,QAESA,EAAK,iBAAA,CAAA,IAIL,CAAA,GAAAyP,EAAG,QAAQ;AAAA;WAGjB+yB,EAAYz+B,GAAA;AACnB,IAAAA,EAAS,SAAS0L,GAAIX,MAAA;YACdmgB,IAASxf,GACTgzB,IAAchzB,EAAG,aAAa,OAAO,KAAKwf,EAAO;AACvD,MAAAA,EAAO,aAAa,YAAY/W,CAAU,GAC1C+W,EAAO,aAAa,SAASxF,CAAO,GACpCwF,EAAO,aAAa,QAAQlsB,CAAI,GAChCksB,EAAO,aAAa,WAAWwT,MAAgB7hC,CAAK,GACpDquB,EAAO,aAAa,aAAajY,KAAajU,CAAI,GAClDksB,EAAO,aAAa,mBAAA,eAAkClsB,CAAI,IAAI+L,CAAK,EAAA,GACnEmgB,EAAO,aAAa,+BAA+BngB,CAAK,EAAA;AAAA;;WAQnDwa,EAASpb,GAAA;IACZA,MAAatN,WAEjBA,IAAQsN,CAAA,GACRuB,EAAG,kBACG;AAAA,MAAY;AAAA;QACd,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QAAA,EAAU,MAAA1M,GAAM,OAAAnC,EAAA;AAAA;QAGpB8hC;;AAGO,WAAAA,IAAA;AACP,IAAApmB,EAAS,QAAS7M,CAAAA,MAAAA;YACVwf,IAASxf,GACTgzB,IAAchzB,EAAG,aAAa,OAAO,KAAKwf,EAAO;AACvD,MAAAA,EAAO,aAAa,WAAWwT,MAAgB7hC,CAAK;AAAA;;;;AAO7C,MAAA6O,IAAEwD;;;;;;;YArFViF,IAAapI,GAAUgI,CAAQ;aAC/B2R,IAAU3Z,GAAUmZ,CAAK;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCqBvB5pB,EAAW,CAAA;AAAA,MAAA;;;AAFd,MAAAoD,EAGKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;QADFrD,EAAW,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;2BANPsjC;AAAA;AAAA,KAAAtjC;IAASA,EAAK,CAAA,KAAA;AAAA;;KAGlBA,EAAO,EAAA,EAAC;AAAA,IAAeA,EAAW,CAAA,MAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;MAZ5BA,EAAK,CAAA;MACFA,EAAU,CAAA;MACXA,EAAS,CAAA;;;;QACNA,EAAS,CAAA;AAAA,MAAA;;;;QACHA,EAAe,CAAA;AAAA,MAAA;MAZRA,EAAK,CAAA,CAAA;;;;QAELA,EAAU,CAAA;AAAA,MAAA;;;;QACbA,EAAO,CAAA;AAAA,MAAA;;;AANnC,MAAAoD,EA6BKb,GAAAoQ,GAAAtP,CAAA,GA5BHf,EAqBOqQ,GAAA4wB,CAAA,GAdLjhC,EASCihC,GAAA1+B,CAAA,YACDvC,EAA4BihC,GAAAjxB,CAAA,YAC5BhQ,EAEUihC,GAAAzuB,CAAA;;;;QALE9U,EAAQ,EAAA;AAAA,MAAA;;;;;;;;;;;MALXA,EAAK,CAAA;;MACFA,EAAU,CAAA;;MACXA,EAAS,CAAA;;;;;QACNA,EAAS,CAAA;AAAA,MAAA;;;;;QACHA,EAAe,CAAA;AAAA,MAAA,IAK5B,CAAA+S,KAAA1S;AAAA,MAAA,MAAAijC,OAAAA;AAAA,OAAAtjC;MAASA,EAAK,CAAA,KAAA,OAAA2E,GAAA6+B,GAAAF,CAAA;;MAjBMtjC,EAAK,CAAA;;;;;QAELA,EAAU,CAAA;AAAA,MAAA;;;;;QACbA,EAAO,CAAA;AAAA,MAAA;AAAA,MAiB5BA,EAAO,EAAA,EAAC;AAAA,MAAeA,EAAW,CAAA;;;;;;;;;;;;;;;;;;;AArD5B,MAAA,EAAA,OAAAuB,EAAA,IAAA4R,GACA,EAAA,OAAAuW,EAAA,IAAAvW,KACA,aAAA0W,IAAsB,GAAA,IAAA1W,KACtB,UAAAsF,IAAmB,QAAA,IAAAtF,KACnB,OAAAyW,IAAgB,QAAA,IAAAzW,GAChB,EAAA,MAAAzP,EAAA,IAAAyP,KACA,SAAAwW,IAAkB,QAAA,IAAAxW,GAClB,EAAA,WAAAwE,EAAA,IAAAxE,GACA,EAAA,iBAAAswB,EAAA,IAAAtwB,GAEPuwB;AAOK,WAAAzZ,IAAA;AAEH,QADApR,KACAsR;AAAA;AAEE,UAAAlmB,IAAA,IAAY;AAAA,MAAY;AAAA;QAC5B,QAAQ1C;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA;;AAEX,IAAAmiC,EAAa,cAAcz/B,CAAK;AAAA;;;AAMrB,MAAAy/B,IAAY9vB;;;;;;;YAnBtBE,EAAA,GAAA+E,IAAapI,GAAUgI,CAAQ,CAAA;YAC/B3E,EAAA,GAAAsW,IAAU3Z,GAAUmZ,CAAK,CAAA;aACzB9V,EAAA,GAAAqW,IAAY1Z,GAAUkZ,CAAO,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCsBlB3pB,QAAa,MAAM;AAAA;AAAA,MACnBA,EAAc,CAAA,MAAA,aAAa,SAAS,QAAQ;AAAA;AAAA,MAC5CA,SAAc,eAAe,SAAS,QAAQ;AAAA;AAAA,MAClDA,EAAQ,CAAA,CAAA;AAAA;AAAA,MACLA,EAAQ,CAAA,CAAA;AAAA;;;AATvB,MAAAoD,EAaKb,GAAAqS,GAAAvR,CAAA;;;;QAVQrD,EAAQ,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;MAELA,QAAa,MAAM;AAAA;AAAA,MACnBA,EAAc,CAAA,MAAA,aAAa,SAAS,QAAQ;AAAA;AAAA,MAC5CA,SAAc,eAAe,SAAS,QAAQ;AAAA;AAAA,MAClDA,EAAQ,CAAA,CAAA;AAAA;AAAA,MACLA,EAAQ,CAAA,CAAA;AAAA;;;;;;;;;;;;;;6CAxCV,WAAAoJ,IAAuC,WAAA,IAAA+J,KACvC,UAAAwwB,IAAmB,GAAA,IAAAxwB,KACnB,UAAAywB,IAAmB,GAAA,IAAAzwB,KACnB,WAAA6c,IAAoB,GAAA,IAAA7c,GACpB,EAAA,cAAA0wB,EAAA,IAAA1wB,GACA,EAAA,cAAA2wB,EAAA,IAAA3wB,GAGPohB;WAEKwP,EAAS7b,GAAA;AAChB,IAAAA,EAAE,OAAO,kBACH;AAAA,MAAY;AAAA;QACd,UAAU;AAAA,QACV,QAAA;AAAA,UACE,cAAcqM,EAAI;AAAA,UAClB,cAAcA,EAAI;AAAA,UAClB,WAAWA,EAAI;AAAA;;QAIrBrM,EAAE,gBAAA;AAAA;AAGJ,EAAAvgB,GAAA,YAAA;AACQ,UAAAW,GAAA,GACNwL,EAAA,GAAA+vB,IAAetP,EAAI,YAAA,GACnBzgB,EAAA,GAAAgwB,IAAevP,EAAI,YAAA;AAAA;;;AAMV,MAAAA,IAAG3gB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvCA,SAAAowB,GAAWC,GAA2BC,GAAyB;AAE7E,MAAIA,MAAY;AAAkB,WAAA;AAE5B,QAAAC,IAAiBF,EAAU,SAAS,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,GAChEG,IAAWF,EAAQ,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG;AAEjD,MAAAC,EAAe,SAASC,EAAS;AAC5B,WAAA;AAIT,MAAIH,EAAU,KAAK,SAAS,KAAKA,EAAU,SAASC;AAC3C,WAAA;AAIT,MAAIE,EAAS,WAAW,KAAKA,EAAS,CAAC,MAAM;AACpC,WAAA;AAGT,MAAIC,IAAS,IACT50B,IAAQ;AAEZ,aAAWkV,KAAQwf,GAAgB;AAC7B,QAAAC,EAAS30B,CAAK,MAAMkV;AACtB;AAEQ,IAAA0f,KAAA,GACV50B;AAAA,EACF;AAGO,SAAA40B,KAAU,IAAIA,IAAS,IAAIA;AACpC;;;;;;;;;;;;;;;;;;;;;ACmCA,MAAAjhC,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAjECsqB;AAEJ,EAAAhmB,GAAA,YAAA;AACQ,UAAAW,GAAA,GACNg8B,KACAC;MAGF18B,GAAA,MAAA;AACE,IAAA28B;;AAGO,WAAAF,IAAA;UACD3jC,IAAOgtB,EAAQ,cAAc,MAAM;AACpC,QAAA,CAAAhtB;;AAIC,UAAA8jC,IAAQ9jC,EACX,mBACA,OAAQ,CAAAyP,MAAgBA,EAAG,YAAY,GAAG;QAEzCs0B,GACAC,IAAY;AAChB,IAAAF,EAAM,QAAS,CAAA/S,MAAA;AACP,YAAA2S,IAASL,GACb,SAAS,UACTtS,EAAM,aAAa,MAAM,KAAK,EAAA;MAG5B2S,IAASM,MACXA,IAAYN,GACZK,IAAYhT,IAEdA,EAAM,UAAU,OAAO,SAAS;AAAA,QAG5BgT,MAEJA,KAAA,QAAAA,EAAW,UAAU,IAAI;AAAA;AAIpB,WAAAH,IAAA;AAEH,QAAAK,IAAkB,SAAS,SAAS;AAOxC,IANM,IAAe,iBAAkB,CAAAC,MAAA;MACjCb,GAAW,SAAS,UAAUY,CAAe,MAC/CA,IAAkB,SAAS,SAAS,MACpCN;OAGK,QAAQ,SAAS,MAAQ,EAAA,WAAW,IAAM,SAAS,GAAA,CAAA,GAG5D,OAAO,iBAAiB,YAAYA,CAAa;AAAA;AAG1C,WAAAE,IAAA;AACP,WAAO,oBAAoB,YAAYF,CAAa;AAAA;;;AAIxC,MAAA3W,IAAO/Z;;;;;;;;;;;;;;;;;;;;;;;ACqEjB,MAAAxQ,EAAkCb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;;;;;;;AAFlC,MAAAD,EAA+Bb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;;;;;MAD5BrD,EAAK,CAAA,IAAAwV;;;;;;;;;;;;;;;;;;QADTxV,EAAO,CAAA;AAAA,MAAA;MADGA,EAAK,CAAA,CAAA,EAAA;MAQEA,EAAK,CAAA,CAAA;;;;QATqCA,EAAQ,CAAA;AAAA,MAAA;AAAA;;AAAxE,MAAAoD,EAYKb,GAAAoQ,GAAAtP,CAAA,GAXHf,EAOGqQ,GAAA5T,CAAA,4CACHuD,EAEKqQ,GAAAL,CAAA;;;;QAV2CtS,EAAW,CAAA;AAAA,MAAA;;;;;;;QACxDA,EAAO,CAAA;AAAA,MAAA;;MADGA,EAAK,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;MAQEA,EAAK,CAAA,CAAA;;;;;QATqCA,EAAQ,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;SAxE7D8kC,GAAOvb,GAAA;SACPA,KAAA,gBAAAA,EAAM,cAAc,QAAQ,MAAM;;;8CArDhC,EAAA,SAAAnW,EAAA,IAAAD,GAEP4D,IAAQ,IACRguB,IAAW,IACXpX;AAIJ,EAAAhmB,GAAA,YAAA;AACQ,UAAAW,GAAA,GACN08B,KACAC,KACAV;MAGF18B,GAAA,MAAA;AACE,IAAA28B;;AAGO,WAAAQ,IAAA;SACPjuB,IAAQmuB,EAAA,KAAiBC,EAAaxX,CAAO,CAAA,GACzC5W,KACFquB,EAAa,EAAI;AAAA;AAIZ,WAAAb,IAAA;AAEP,IAAA5W,EAAQ,iBAAiB,SAAA,MAAA;WACvB5W,IAAQ,EAAA,QACRguB,IAAW,EAAA;AAAA;AAIT,QAAAH,IAAkB,SAAS,SAAS;AAQxC,IAPM,IAAe,iBAAkB,CAAAC,MAAA;AAEjC,MAAAD,MAAoB,SAAS,SAAS,SACxCA,IAAkB,SAAS,SAAS,MACpCK;OAGK,QAAQ,SAAS,MAAQ,EAAA,WAAW,IAAM,SAAS,GAAA,CAAA,GAG5D,OAAO,iBAAiB,YAAYA,CAAU;AAAA;AAGvC,WAAAT,IAAA;AACP,WAAO,oBAAoB,YAAYS,CAAU;AAAA;AAO1C,WAAAC,IAAA;WACAlB,GAAW,SAAS,UAAUqB,CAAK,KAAK;AAAA;WAGxCF,EAAa/0B,GAAA;AAChB,QAAA4zB,GAAW,SAAS,UAAUc,GAAO10B,EAAG,OAAO,CAAM,KAAA;AAChD,aAAA;UAGHzP,IAAOyP,EAAG,cAAc,MAAM;AAC/B,WAAAzP,IAII,CAAA,CADQA,EAAK,mBACJ,KAAM,CAAA+wB,MACfsS,GAAW,SAAS,UAAUtS,EAAM,aAAa,MAAM,CAAM,KAAA,KAJ7D;AAAA;AAQF,WAAAuT,IAAA;UACDtkC,IAAOgtB,EAAQ,cAAc,MAAM;AACpC,QAAA,CAAAhtB;AACI,aAAA;AAGH,UAAA+D,IAAW/D,EAAK;QAClB2kC,IAAiB,IACjBC,IAAe;SAEnBR,IAAW,EAAA,GACXrgC,EAAS,QAAS,CAAAgtB,MAAA;YACVtyB,IAAMsyB,EAAM,aAAa,MAAM,GAC/B2S,IAASL,GAAW,SAAS,UAAU5kC,CAAG;MAC5CilC,IAASiB,MACXA,IAAiBjB,GACjBkB,IAAe7T,IAEjBA,EAAM,UAAU,OAAO,SAAS,GAG5BA,EAAM,YAAY,yBACpBA,EAAM,aAAa,SAAS,MAAM;AAAA,QAIlC6T,WACFR,IAAW,EAAA,GACXQ,EAAa,UAAU,IAAI,SAAS,GACpCH,EAAa,EAAI;AAAA;WAIZ3K,EAAYvS,GAAA;SACnBnR,IAAS,CAAAA,CAAA,GACTmR,EAAE,eAAA;AAAA;WAGKkd,EAAaryB,GAAA;AACpB,IAAA4a,EAAQ,kBACF;AAAA,MAAY;AAAA;QACd,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAU,EAAA,SAAA5a,EAAA;AAAA;;;;;AAMF,MAAA4a,IAAO/Z;;;;;;;SAtHlBE,EAAA,GAAAuxB,IAAQP,GAAO1xB,CAAO,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCJWpT,EAAI,CAAA;AAAA,MAAA;;;AAAtC,MAAAoD,EAAwDb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;QAAtBrD,EAAI,CAAA;AAAA,MAAA;AAAA;;;;;;;;;IADnCA,EAAI,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AADX,MAAAoD,EAMIb,GAAAijC,GAAAniC,CAAA;;;;MALGrD,EAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAJE,MAAA0X,IAAoB,KAAA,IAAAvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC6FPnT,EAAI,CAAA,IAAA;AAAA,MAAMA,EAAI,CAAA,CAAA;AAAA,MAAIA,EAAI,CAAA,CAAA,gBAAA;AAAA;;AAA5C,MAAAoD,EAAsDb,GAAAqS,GAAAvR,CAAA;AAAA;;;;MAAhCrD,EAAI,CAAA,IAAA;AAAA,MAAMA,EAAI,CAAA,CAAA;AAAA,MAAIA,EAAI,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AAb5C,MAAAoD,EAWKb,GAAAgQ,GAAAlP,CAAA,GAVHf,EAQKiQ,GAAAO,CAAA,GAPHxQ,EAEKwQ,GAAAR,CAAA,4BACLhQ,EAGKwQ,GAAAH,CAAA;;;;;;;;;;;;;;;;;;;;;;;;YAZFutB,IAAA10B,GAAA,MAAM,OAAO;AAAA;AAAA,IAASxL,OAAY;AAAA,EAAE,CAAA,CAAA;wBAAzC,QAAIS,KAAA;;;;;;;;;;;;;;;;;;;AAAC,QAAAy/B,IAAA10B,GAAA,MAAM,OAAO;AAAA;AAAA,UAASxL,OAAY;AAAA,QAAE,CAAA,CAAA;;0BAAzC,QAAIS,KAAA,GAAA;;;;yBAAJ,QAAIA,IAAAglC,EAAA,QAAAhlC,KAAA;;;;;;;8BAAJ,QAAIA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAVuBT,EAAI,CAAA,IAAA,gBAAA;AAAA;;AAAjC,MAAAoD,EAQKb,GAAAuQ,GAAAzP,CAAA,GAPHf,EAEKwQ,GAAAR,CAAA,4BACLhQ,EAGKwQ,GAAAH,CAAA;;;;;;;;;;;;;;;;MAPsB3S,EAAI,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MARVA,EAAI,CAAA,IAAA,gBAAA;;;;QAAwBA,EAAQ,CAAA;AAAA,MAAA;AAAA;;AAA3D,MAAAoD,EAMKb,GAAAoQ,GAAAtP,CAAA,4BAJHf,EAGKqQ,GAAAL,CAAA;;;;;;;;;;;;;;;;;;MALgBtS,EAAI,CAAA,IAAA;;;;;QAAwBA,EAAQ,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AADxD;AAAA;AAAA,MAAAA,SAAS,SAAM;AAAA;AAAA,QAQVA,SAAS,YAAS;AAAA;AAAA,UAUlBA,SAAS,UAAO;AAAA;AAAA,YAIhBA,SAAS,YAAS;;;;;;;;;;;;QAxBfA,EAAM,CAAA;AAAA,MAAA,GACZqE,EAAAuQ,GAAA,SAAA0C,IAAAxH;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;;;AAHvC,MAAAoD,EA0CKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;QAxCUrD,EAAM,CAAA;AAAA,MAAA,IACZ,CAAA+S,KAAA1S;AAAA,MAAA,OAAAiX,OAAAA,IAAAxH;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;;;;;;;;;;;AAnD9B,QAAA,CAAAuX,GAAOC,CAAY,IAAI1G;AAAA,IAC5B;AAAA;MAEE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;IAEF;AAAA,KAEK,CAAAsH,GAAOC,CAAY,IAAIvH,GAAc,iBAC1C,CAAA,KACA,KACA,KACA,GAAA,CAAA;QAOS,UAAAstB,IAAmB,QAAA,IAAAjrB,KACnB,MAAAtD,IAAqB,IAAA,IAAAsD,KACrB,WAAAuyB,IAAoB,EAAA,IAAAvyB,GACpB,EAAA,MAAA3N,EAAA,IAAA2N,KACA,QAAAI,IAAiB,GAAA,IAAAJ,KAGjB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD;AAEzB,SAAAxL,GAAA,MAAA;AACE,eAAiB,MAAA6P,EAAahS,CAAI,GAAG,CAAC,GACtC6S,EAAaxI,CAAI;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC/BS7P,EAAQ,CAAA,CAAA;AAAA;AAAA,MACTA,EAAQ,CAAA,CAAA;AAAA;;;AAJrC,MAAAoD,EAMCb,GAAAqS,GAAAvR,CAAA;;;;;;MAH6BrD,EAAQ,CAAA,CAAA;AAAA;AAAA,MACTA,EAAQ,CAAA,CAAA;AAAA;;;;;;;;;;QAjBxB,UAAA2lC,IAA6B,OAAA,IAAAxyB,KAC7B,UAAAyyB,IAAoB,OAAA,IAAAzyB,GAE3BwiB;AACJ,EAAAhuB,GAAA,MAAA;AACQ,UAAA0hB,IAAA,mBAA4Buc,CAAQ,KACpCnpB,IAAQkpB,MAAa,SACvB,4BACmBA,CAAQ;AAC/B,IAAAx1B,GAAUwlB,GAAQ,WAAW,OAAAlZ,GAAO,QAAA4M,EAAA,CAAA;AAAA;;;AAK3B,MAAAsM,IAAM/hB;;;;;;;;;;;;;;;;;;;;;;;;;ACXnB,MAAMiyB,KAAmB,CAAA;AA0BlB,SAASC,GAASvkC,GAAOwkC,IAAQ/nC,IAAM;AAE7C,MAAIgoC;AAEJ,QAAMC,IAAc,oBAAI;AAIxB,WAASC,EAAIC,GAAW;AACvB,QAAIrnC,GAAeyC,GAAO4kC,CAAS,MAClC5kC,IAAQ4kC,GACJH,IAAM;AAET,YAAMI,IAAY,CAACP,GAAiB;AACpC,iBAAWQ,KAAcJ;AACxB,QAAAI,EAAW,CAAC,KACZR,GAAiB,KAAKQ,GAAY9kC,CAAK;AAExC,UAAI6kC,GAAW;AACd,iBAAS3lC,IAAI,GAAGA,IAAIolC,GAAiB,QAAQplC,KAAK;AACjD,UAAAolC,GAAiBplC,CAAC,EAAE,CAAC,EAAEolC,GAAiBplC,IAAI,CAAC,CAAC;AAE/C,QAAAolC,GAAiB,SAAS;AAAA,MAC1B;AAAA,IACD;AAAA,EAEF;AAMD,WAASl9B,EAAOnK,GAAI;AACnB,IAAA0nC,EAAI1nC,EAAG+C,CAAK,CAAC;AAAA,EACb;AAOD,WAAShC,EAAUhB,GAAK+nC,IAAatoC,IAAM;AAE1C,UAAMqoC,IAAa,CAAC9nC,GAAK+nC,CAAU;AACnC,WAAAL,EAAY,IAAII,CAAU,GACtBJ,EAAY,SAAS,MACxBD,IAAOD,EAAMG,GAAKv9B,CAAM,KAAK3K,KAE9BO,EAAIgD,CAAK,GACF,MAAM;AACZ,MAAA0kC,EAAY,OAAOI,CAAU,GACzBJ,EAAY,SAAS,KAAKD,MAC7BA,KACAA,IAAO;AAAA,IAEX;AAAA,EACE;AACD,SAAO,EAAE,KAAAE,GAAK,QAAAv9B,GAAQ,WAAApJ;AACvB;ACzFO,SAASgnC,GAAQjnC,GAAK;AAC5B,SAAO,OAAO,UAAU,SAAS,KAAKA,CAAG,MAAM;AAChD;ACAA,SAASknC,GAAiBznC,GAAGC,GAAG;AAC/B,MAAID,MAAMC,KAAKD,MAAMA;AAAG,WAAO,MAAMA;AACrC,QAAMyG,IAAO,OAAOzG;AACpB,MAAIyG,MAAS,OAAOxG,KAAK,MAAM,QAAQD,CAAC,MAAM,MAAM,QAAQC,CAAC;AAC5D,UAAM,IAAI,MAAM,6CAA6C;AAE9D,MAAI,MAAM,QAAQD,CAAC,GAAG;AACrB,UAAM0nC,IAAMznC,EAAE,IAAI,CAAC0nC,GAAIjmC,MACf+lC,GAAiBznC,EAAE0B,CAAC,GAAGimC,CAAE,CAChC;AACD,WAAO,CAAC9/B,MAAM6/B,EAAI,IAAI,CAACjoC,MAAOA,EAAGoI,CAAC,CAAC;AAAA,EACnC;AACD,MAAIpB,MAAS,UAAU;AACtB,QAAI,CAACzG,KAAK,CAACC;AAAG,YAAM,IAAI,MAAM,uBAAuB;AACrD,QAAIunC,GAAQxnC,CAAC,KAAKwnC,GAAQvnC,CAAC,GAAG;AAC7B,MAAAD,IAAIA,EAAE,WACNC,IAAIA,EAAE;AACN,YAAM2nC,IAAQ3nC,IAAID;AAClB,aAAO,CAAC6H,MAAM,IAAI,KAAK7H,IAAI6H,IAAI+/B,CAAK;AAAA,IACpC;AACD,UAAMC,IAAO,OAAO,KAAK5nC,CAAC,GACpB6nC,IAAgB,CAAA;AACtB,WAAAD,EAAK,QAAQ,CAACvlC,MAAQ;AACrB,MAAAwlC,EAAcxlC,CAAG,IAAImlC,GAAiBznC,EAAEsC,CAAG,GAAGrC,EAAEqC,CAAG,CAAC;AAAA,IACvD,CAAG,GACM,CAACuF,MAAM;AACb,YAAMxF,IAAS,CAAA;AACf,aAAAwlC,EAAK,QAAQ,CAACvlC,MAAQ;AACrB,QAAAD,EAAOC,CAAG,IAAIwlC,EAAcxlC,CAAG,EAAEuF,CAAC;AAAA,MACtC,CAAI,GACMxF;AAAA,IACV;AAAA,EACE;AACD,MAAIoE,MAAS,UAAU;AACtB,UAAMmhC,IAAQ3nC,IAAID;AAClB,WAAO,CAAC6H,MAAM7H,IAAI6H,IAAI+/B;AAAA,EACtB;AACD,QAAM,IAAI,MAAM,sBAAsBnhC,CAAI,SAAS;AACpD;AAWO,SAASshC,GAAQvlC,GAAOwlC,IAAW,IAAI;AAC7C,QAAMvnC,IAAQsmC,GAASvkC,CAAK;AAE5B,MAAIW,GACA8kC,IAAezlC;AAKnB,WAAS2kC,EAAIC,GAAWva,GAAM;AAC7B,QAAIrqB,KAAS;AACZ,aAAA/B,EAAM,IAAK+B,IAAQ4kC,IACZ,QAAQ;AAEhB,IAAAa,IAAeb;AACf,QAAIc,IAAgB/kC,GAChByI,IAAU,IACV;AAAA,MACH,OAAArE,IAAQ;AAAA,MACR,UAAAD,IAAW;AAAA,MACX,QAAAiE,IAASC;AAAAA,MACT,aAAA28B,IAAcV;AAAA,IACjB,IAAMroC,GAAOA,GAAO,CAAA,GAAI4oC,CAAQ,GAAGnb,CAAI;AACrC,QAAIvlB,MAAa;AAChB,aAAI4gC,MACHA,EAAc,MAAK,GACnBA,IAAgB,OAEjBznC,EAAM,IAAK+B,IAAQylC,IACZ,QAAQ;AAEhB,UAAMjB,IAAQlkC,GAAK,IAAGyE;AACtB,QAAI9H;AACJ,WAAA0D,IAAOC,GAAK,CAACN,MAAQ;AACpB,UAAIA,IAAMkkC;AAAO,eAAO;AACxB,MAAKp7B,MACJnM,IAAK0oC,EAAY3lC,GAAO4kC,CAAS,GAC7B,OAAO9/B,KAAa,eAAYA,IAAWA,EAAS9E,GAAO4kC,CAAS,IACxEx7B,IAAU,KAEPs8B,MACHA,EAAc,MAAK,GACnBA,IAAgB;AAEjB,YAAME,IAAUtlC,IAAMkkC;AACtB,aAAIoB;AAAA,MAAiC9gC,KACpC7G,EAAM,IAAK+B,IAAQ4kC,IACZ,OAGR3mC,EAAM,IAAK+B,IAAQ/C,EAAG8L,EAAO68B,IAAU9gC,CAAQ,CAAC,IACzC;AAAA,IACV,CAAG,GACMnE,EAAK;AAAA,EACZ;AACD,SAAO;AAAA,IACN,KAAAgkC;AAAA,IACA,QAAQ,CAAC1nC,GAAIotB,MAASsa,EAAI1nC,EAAGwoC,GAAczlC,CAAK,GAAGqqB,CAAI;AAAA,IACvD,WAAWpsB,EAAM;AAAA,EACnB;AACA;;;;;;;;;;;;QCbUQ,EAAM,CAAA;AAAA,MAAA;;;;QACNA,EAAM,CAAA;AAAA,MAAA,GACFqE,EAAA+iC,GAAA,UAAAC;AAAA,MAAArnC,EAAA,CAAA,IACJ,gCACA,8BAA8B;;;;QACpBA,EAAW,CAAA;AAAA,MAAA;MACtBA,EAAM,CAAA;AAAA,MAAGA,EAAW,CAAA,IAAG,CAAC,GAGxBqE,EAAAklB,GAAA,KAAA+d;AAAA,MAAAtnC;;QAAOA,EAAU,CAAA;AAAA,MAAA,CAAA;;;;QACNA,EAAW,CAAA;AAAA,MAAA,GACjBqE,EAAAklB,GAAA,UAAAge;AAAA,MAAAvnC,EAAA,CAAA,IACJ,iCACA,+BAA+B;MAtBnBA,EAAI,CAAA,CAAA,EAAA,IAAA,iBAAA,yBAERqE,EAAAilB,GAAA,WAAAke,IAAA;AAAA,MAAAxnC;MAAWA,EAAQ,CAAA,CAAA;;;;QAC1BA,EAAQ,CAAA;AAAA,MAAA;;;;QACPA,EAAQ,CAAA;AAAA,MAAA;;;;QACHA,EAAM,CAAA;AAAA,MAAA;;;AANrB,MAAAoD,EA0BKb,GAAA+mB,GAAAjmB,CAAA,GAjBHf,EAQCgnB,GAAA8d,CAAA,GACD9kC,EAOCgnB,GAAAC,CAAA;AAAA;;;;;;;QAfKvpB,EAAM,CAAA;AAAA,MAAA;;;;;QACNA,EAAM,CAAA;AAAA,MAAA,GACFK;AAAA,MAAA,KAAAgnC,OAAAA;AAAA,MAAArnC,EAAA,CAAA,IACJ,gCACA;;;;;QACUA,EAAW,CAAA;AAAA,MAAA;;MACtBA,EAAM,CAAA;AAAA,MAAGA,EAAW,CAAA,IAAG,oBAGvBK;AAAA,MAAA,OAAAinC,OAAAA;AAAA,MAAAtnC;;QAAOA,EAAU,CAAA;AAAA,MAAA;;;;;QACNA,EAAW,CAAA;AAAA,MAAA,GACjBK;AAAA,MAAA,KAAAknC,OAAAA;AAAA,MAAAvnC,EAAA,CAAA,IACJ,iCACA;;MAtBYA,EAAI,CAAA,CAAA,EAAA,IAAA,wCAERK;AAAA,MAAA,MAAAmnC,OAAAA,IAAA;AAAA,MAAAxnC;MAAWA,EAAQ,CAAA;;;;;QAC1BA,EAAQ,CAAA;AAAA,MAAA;;;;;QACPA,EAAQ,CAAA;AAAA,MAAA;;;;;QACHA,EAAM,CAAA;AAAA,MAAA;AAAA;;;;;;;;;IAPlBA,EAAK,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;;MAALA,EAAK,CAAA;;;;;;;;;;wBA9EG,EAAA,MAAA6P,EAAA,IAAAsD,KAGA,QAAAs0B,IAAkB,GAAA,IAAAt0B,KAClB,UAAAuZ,IAAmB,GAAA,IAAAvZ,KACnB,QAAAI,IAAiB,GAAA,IAAAJ,GAExB3N,IAAoB;AAElB,QAAAq0B,IAAYiN,GAAQ,GAAA,EACxB,UAAU,KACV,QAAQhc,GAAA,CAAA;;WAyCD4c,EAAUC,GAAA;AACX,UAAAzpC,IAAI0pC,IAASC,IAAa,KAAK,IAAIF,CAAO,GAC1C1c,IAAI2c,IAASC,IAAa,KAAK,IAAIF,CAAO;AACzC,WAAAzpC,IAAI,MAAM+sB;AAAA;WAGV6c,EAAOpb,GAAAA;AACN,YAAAlnB,GAAA;AAAA,MACD,KAAA;cACGugC,IAAQ2B,EAAA,CAAW,KAAK,KAAK,CAAC,GAC9BK,IAAML,GAAW,KAAK,KAAK,IAAI,IAAI,KAAK,MAAMhb,IAAW,IAAA,GACzDsb,IAAetb,IAAW,MAAM,KAAK,IAAI;AAEnC,eAAA,KAAAqZ,CAAK,MAAM8B,CAAU,IAAIA,CAAU,MAAMG,CAAY,MAAMD,CAAG;AAAA;MAEvE,KAAA;cACGhC,IAAQ2B,EAAU,KAAK,KAAK,GAAG,GAC/BK,IAAML,EAAU,CAAC;AAEX,eAAA,KAAA3B,CAAK,MAAM8B,CAAU,IAAIA,CAAU,UAAUE,CAAG;AAAA;;;;;;;UAvDlE;YAGQ,IAAI,WAAWrb,IAAW,EAAE;MAE9B,KAAK,MACPmN,EAAU,IAAI,KAAK,CAAC,QACpBr0B,IAAO,UAAA;AAAA;;YAIXsO,EAAA,GAAGm0B,IACDp4B,KAAA;AAAA,MAEE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACRA,CAAI,CAAA;YAELiE,EAAA,GAAAo0B,IACDr4B,KAEE,EAAA,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,EAAA,EACRA,CAAI,CAAA;UAERiE,EAAA,GAAG8zB,IAASK,IAAW,CAAA;UACpBn0B,EAAA,IAAA+zB,IAAaD,IAASM,IAAc,CAAA;YAEvCp0B,EAAA,GAAGhG,IAAQtI,MAAS,aAAaqiC,IAAaA,KAAcnb,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrC5D,MAAAtpB,EAEKb,GAAAqS,GAAAvR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAHFrD,EAAO,CAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;QAF4BA,EAAO,CAAA;AAAA,MAAA;AAAA;;AAA/C,MAAAoD,EAAkDb,GAAAqS,GAAAvR,CAAA;;;;;;;;QAAVrD,EAAO,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;MAE1CA,EAAO,CAAA;;;;;;;;;;;;;;;;;6CAdC,SAAAoT,IAAkB,GAAA,IAAAD,KAMlB,MAAAD,IAAe,QAAA,IAAAC,GAEtBsb;;;;;SACD3a,EAAA,GAAA2a,IAAUhe,GAAUyC,CAAI,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCC+GX7O,EAAA8jC,GAAA,SAAAC;AAAA,MAAApoC,QAAS,cAAc;;;AAArC,MAAAoD,EAEOb,GAAA4lC,GAAA9kC,CAAA;;;;;;;;;;;;;;;;;;;;;UAFO,CAAA0P,KAAA1S;AAAA,MAAA,KAAA+nC,OAAAA;AAAA,MAAApoC,QAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAHpBA,EAAY,CAAA,IAAA;;;;;;MAPEA,EAAO,CAAA,CAAA,EAAA,IAAA,iBAAA;MAGZ;AAAA,MAAAA,QAAS,MAAM,GAAA;AAAA,MACzB8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA;;;;QAHpBA,EAAa,CAAA;AAAA,MAAA;AAAA;;AAH7B,MAAAoD,EAgBKb,GAAAqS,GAAAvR,CAAA;;;;;;;;MAdgBrD,EAAO,CAAA,CAAA,EAAA,IAAA;;MAGZ;AAAA,MAAAA,QAAS,MAAM,GAAA;AAAA,MACzB8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA;;;;;QAHpBA,EAAa,CAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;AAflB,SAAAmJ,GAASiH,GAAapG,GAAA;AAC7B,EAAAoG,EAAG,kBACG;AAAA,IAAY;AAAA;MACd,UAAU;AAAA,MACV,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQpG;AAAA;;;;;AArGP,QAAA,CAAAsO,GAAUC,CAAe,IAAIzH,GAClC,iBACC,CAAA,UAAU,SAAS,GACpB,EAAA;QAMS,OAAA2L,IAAgB,GAAA,IAAAtJ,KAChB,cAAAk1B,IAAuB,QAAA,IAAAl1B,KACvB,SAAAqF,IAAmB,SAAA,IAAArF,KAEnB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,GAIrBwa,GACA2a,IAAwB;AAQ5B,EAAA3gC,GAAA,MAAA;AACE,IAAA4Q,EAAgBC,CAAO,GAGvB,WAAW+vB,GAAyB,CAAC;UAG/B5nC,IAAOgtB,EAAQ,cAAc,MAAM;KACpChtB,KAAQA,EAAK,mBAAmB,WAAW,KAKhDmT,EAAA,GAAAw0B,IAAe3nC,EAAK,iBAAA,EAAmB,CAAC,EAAE,YAAY,OAAA;AAAA;AAKzC,iBAAA4nC,IAAA;A7HzDjB,QAAAz5B;A6H0DU,UAAAxG,GAAA;UACAkgC,IAAc7a,KAAA,gBAAAA,EAAS,cAAc,SACrC8a,KAAW35B,IAAA05B,KAAA,gBAAAA,EACb,mBACD,KAAM,CAAAp4B,MAAOA,EAAG,YAAY,WAAWA,EAAG,YAAY,aAFxC,gBAAAtB,EAGb,iBAAiB;AAErB,IAAA25B,KAAA,QAAAA,EAAU,QAAS,CAAAr1B,MAAA;AACjB,MAAAA,EAAQ,iBAAiB,SAAA,MAAA;cACjBs1B,IAASt1B,EAAQ,aAAa,MAAM;YACtCu1B,IAAkB;AAGtB,QAAAF,EAAS,QAAS,CAAA/W,MAAA;cACZA,EAAM,aAAa,MAAM,MAAMgX,GAAA;kBAI3BE,IAFYlX,EAAM,cAEW,QAAQ,SAAS;AAEpD,YAAAiX,IAAUC,MAAiB,QAAQ,IAAI,IACvClX,EAAM,aAAa,aAAakX,CAAY;AAAA;AAE5C,YAAAlX,EAAM,aAAa,aAAa,MAAM;AAAA,YAItCgX,KAAUC,MAAY,KACxBx/B,GAASiK,KAAW,QAAAs1B,GAAQ,SAAAC,EAAA,CAAA;AAAA;YAK1BE,IAAgBz1B,EAAQ,aAAa,MAAM,GAE3C01B,IAAmB11B,EAAQ;AAC7B,MAAAy1B,KAAiBC,KAAoBA,MAAqB,UAC5D;AAAA;AACE,UAAA3/B,GAASiK,GAAA;AAAA,YACP,QAAQy1B;AAAA,YACR,SAASC,MAAqB,QAAQ,IAAI;AAAA;;QAE3C;AAAA;;;;;AAkBE,MAAAnb,IAAO/Z;;;;;;;WAnFfE,EAAA,GAAAi1B,IAAgBt4B,GAAU43B,CAAY,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJvC,MAAAjlC,EAGKb,GAAAqS,GAAAvR,CAAA;AAAA;;;;;;;;;;;;;AALL,MAAAD,EAAwCb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;;;;;;;AAFxC,MAAAD,EAA0Cb,GAAA6P,GAAA/O,CAAA;AAAA;;;;;;;;;;;;;;;;;;;AADvC;AAAA;AAAA,MAAArD,SAAc,SAAMwV;AAAAA;AAAAA,QAEfxV,SAAc,QAAKuV;;;;;;;;;;AAJ/B,MAAAnS,EAYQb,GAAAwS,GAAA1R,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA5BK,WAAA+F,IAAmC,OAAA,IAAA+J,GAG1Cwa;AACJ,EAAAhmB,GAAA,MAAA;AACM,QAAAgmB,GAAA;AAEI,YAAAqb,IAASrb,EAAQ,YAAc,EAAA;AAEjC,OADaqb,KAAA,gBAAAA,EAAQ,QAAQ,kCAE/Brb,EAAQ,MAAM,YAAY,uBAAuB,UAAU;AAAA;;;;AAMhD,MAAAA,IAAO/Z;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACsK1B,MAAAxQ,EAKKb,GAAAuQ,GAAAzP,CAAA,GAJHf,EAA2CwQ,GAAAR,CAAA,qBAC3ChQ,EAEKwQ,GAAAH,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA5LM,YAAAs2B,IAAqB,EAAA,IAAA91B,GAG5Bwa,GACAub,IAAA,CAAA,GACAC,GACAC,GACAC,IAAsB;AAM1B,EAAA1hC,GAAA,YAAA;AAEE,IAAA2hC;UAGM3oC,IAAOgtB,EAAQ,cAAc,MAAM;AACrC,IAAAhtB,IACFA,EAAK,iBAAiB,cAAA,MAAA;AACpB,MAAAuoC,IAAQvoC,EAAK,oBACb4oC,EAASL,CAAK;AAAA,UAIhBA,IAAY,CAAA,GAAAvb,EAAQ,iBAAiB,SAAS,CAAA,GAC9C4b,EAASL,CAAK,IAGhB;AAAA;AAEE,QAAAM,EAAA,CAAeP,CAAU;AAAA;MACxB;AAAA,OACHO,EAAA,CAAeP,CAAU;AAAA;WAGlBM,EAASE,GAAA;AACV,UAAAlgB,IAAO,OAAO,SAAS;AAG7B,IAAAkgB,EAAK,SAASC,GAAKj6B,MAAA;A/H/CvB,UAAAX;U+HiDU66B,IAAgB,CAAA,GAAAD,EAAI,QAAQ,EAAE,KAC/B,CAAAhY,MAAUA,EAAM,aAAa,MAAM,MAAM,SAAA,GAGxCkY;AAEA,UAAAD;AAEF,QAAAA,KAAA,QAAAA,EAAW,UAAU,IAAI;AAAA;cAGnBE,KAAiB/6B,IAAA46B,EAAI,cAAcA,MAAlB,gBAAA56B,EAAwB,cAC7C,mBAGIsE,KACJy2B,KAAA,gBAAAA,EAAe,QAAQ,YAAcH,EAAI,aAAa,SAAS;AAC7D,QAAAt2B,MACFu2B,IAAY,SAAS,cAAc,KAAK,GACxCA,EAAU,UAAU,IAAI,KAAK,GAC7BA,EAAU,cAAcv2B,GACxBw2B,IAAUx2B;AAAA;AAKV,UADJw2B,UAAY,SAASn6B,IACjBk6B,GAAA;cACIvzB,IAAO,SAAS,cAAc,GAAG;AACvC,QAAAA,EAAK,aAAa,MAAa,OAAA3G,IAAQ,CAAC,EAAA,GACxC2G,EAAK,aAAa,eAAsB,OAAA3G,IAAQ,CAAC,EAAA,GACjD2G,EAAK,aAAa,QAAQ,KAAK,GAC/BA,EAAK,aAAa,QAAQmT,IAAO,MAAMqgB,CAAO,GAC9CxzB,EAAK,iBAAiB,SAAA,MAAeozB,EAAc/5B,IAAQ,CAAC,CAAA,GAC5D2G,EAAK,aAAa,iBAA6B,YAAA3G,IAAQ,CAAC,EAAA,GACxD2G,EAAK,YAAYuzB,CAAS,GAE1BR,EAAQ,YAAY/yB,CAAI;AAAA;;;AAK9B,EAAAvO,GAAA,MAAA;AACE,IAAAiiC;;AAOO,WAAAR,IAAA;AACP,IAAA3b,EAAQ,iBAAiB,SAASoc,GAAqB,EAAI;AAAA;AAGpD,WAAAD,IAAA;AAEP,IAAAnc,EAAQ,oBAAoB,SAASoc,GAAqB,EAAI;AAAA;WAGvDP,EAAcE,GAAA;AAMhB,QAJLL,IAAcn3B,GAAMw3B,GAAK,GAAGR,EAAM,MAAM,GAInC,CAAAC;AAAA;QAEDvE,IAAkB;AAElB,KAAA,GAAAuE,EAAQ,iBAAiB,YAAY,CAAG,EAAA,IAAA,CAAK/4B,GAAIX,MAAA;AAC7C,YAAAu6B,IAAYv6B,IAAQ,MAAM45B;AAChC,MAAAH,EAAMz5B,CAAK,EAAE,aAAa,QAAQ,OAAO,GACzCW,EAAG,aAAa,iBAAiBM,GAAYs5B,CAAS,CAAA,GACtD55B,EAAG,aAAa,YAAY45B,IAAY,MAAM,IAAI,GAC9CA,MACFpF,IAAmBx0B,EAAuB,MAC1CA,EAAG,MAAA,GACH84B,EAAMz5B,CAAK,EAAE,aAAa,QAAQ,MAAM;AAAA,QAI5C25B,EAAS,aAAa,0BAA0BC,CAAW,EAAA,GAC3DD,EAAS,aAAa,kBAAkBC,CAAW,EAAA,GAG/CzE,MACF,SAAS,WAAWA;AAAA;AAIf,WAAAmF,IAAA;AACP,IAAApc,EAAQ,iBAAiB,WAAWsc,CAAS;AAAA;WAGtCA,EAAU/hB,GAAA;QACbgiB,IAAY;AAGX,QAFsBhiB,EAAE,UAAUihB,EAAQ,SAASjhB,EAAE,MAAc;cAMhEA,EAAE,KAAA;AAAA,QACH,KAAA;AAAA,QACA,KAAA;UAEDshB,EADEH,MAAgB,IACJH,EAAM,SAENG,IAAc,CAFF,GAI5Ba,IAAY;;QAET,KAAA;AAAA,QACA,KAAA;AACC,UAAAb,MAAgBH,EAAM,SACxBM,EAAc,CAAC,IAEfA,EAAcH,IAAc,CAAC,GAE/Ba,IAAY;;QAET,KAAA;AACH,UAAAV,EAAc,CAAC,GACfU,IAAY;;QAET,KAAA;AACH,UAAAV,EAAcN,EAAM,MAAM,GAC1BgB,IAAY;;;AAMZ,MAAAA,MACFhiB,EAAE,gBAAA,GACFA,EAAE,eAAA;AAAA;AAAA;;;AAQuB,MAAAihB,IAAOv1B;;;;;AACU,MAAAw1B,IAAQx1B;;;;;AAFzB,MAAA+Z,IAAO/Z;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCxFzB5T,EAAO,CAAA;AAAA,MAAIA,EAAK,EAAA;AAAA,MAAGA,EAAQ,CAAA;AAAA;AAAA,aAAAsV;;;MAEtBtV,EAAO,CAAA;AAAA,MAAIA,EAAK,EAAA;AAAA,MAAGA,EAAQ,CAAA;AAAA;AAAA,aAAAgV;AAAA;;;;yEAHG3P;AAAA,QAAAuP;AAAA,QAAA;AAAA;AAAA,QAAA5U;QAAQA,EAAQ,CAAA;AAAA,MAAA;AAAA;;AAA1D,MAAAoD,EAMKb,GAAAqS,GAAAvR,CAAA;;;;eANqCgC;AAAA,QAAAuP;AAAA,QAAA;AAAA;AAAA,QAAA5U;QAAQA,EAAQ,CAAA;AAAA,MAAA;AAAA;;;;;;;AAIrD,MAAA2lB;AAAA;AAAA,IAAA3lB;IAAWA,EAAK,EAAA,IAAA;AAAA,WAAGsjC,IAAAvxB;AAAA;AAAA,IAAU/R,EAAS,CAAA;AAAA;AAAA,IAAAA;IAAWA,EAAK,EAAA;AAAA,EAAA,IAAA;;;yCAAE,YAC3D;AAAA;;;;;AADG,MAAAK;AAAA,MAAA,SAAAslB,OAAAA;AAAA,MAAA3lB;MAAWA,EAAK,EAAA,IAAA,OAAA2E,GAAAihB,GAAAD,CAAA,GAAGtlB;AAAA,MAAA,SAAAijC,OAAAA,IAAAvxB;AAAA;AAAA,QAAU/R,EAAS,CAAA;AAAA;AAAA,QAAAA;QAAWA,EAAK,EAAA;AAAA,MAAA,IAAA,OAAA2E,GAAA6+B,GAAAF,CAAA;AAAA;;;;;;;AAFtD,MAAA3d;AAAA;AAAA,IAAA3lB;IAAQA,EAAQ,CAAA,IAAA;AAAA,WAAGsjC,IAAAvxB;AAAA;AAAA,IAAU/R,EAAS,CAAA;AAAA;AAAA,IAAAA;IAAQA,EAAQ,CAAA;AAAA,EAAA,IAAA;;;yCAAE,WAC3D;AAAA;;;;;AADG,MAAAK;AAAA,MAAA,SAAAslB,OAAAA;AAAA,MAAA3lB;MAAQA,EAAQ,CAAA,IAAA,OAAA2E,GAAAihB,GAAAD,CAAA,GAAGtlB;AAAA,MAAA,SAAAijC,OAAAA,IAAAvxB;AAAA;AAAA,QAAU/R,EAAS,CAAA;AAAA;AAAA,QAAAA;QAAQA,EAAQ,CAAA;AAAA,MAAA,IAAA,OAAA2E,GAAA6+B,GAAAF,CAAA;AAAA;;;;;;;mBAUxDvxB;AAAA;AAAA,IAAU/R,EAAO,CAAA;AAAA;AAAA,IAAEA,EAAK,EAAA;AAAA,EAAA,IAAA;;;;;QADxBA,EAAK,EAAA;AAAA,MAAA;;;AADR,MAAAoD,EAGKb,GAAAqS,GAAAvR,CAAA;;;;;;;QAFFrD,EAAK,EAAA;AAAA,MAAA;0BACL+R;AAAA;AAAA,QAAU/R,EAAO,CAAA;AAAA;AAAA,QAAEA,EAAK,EAAA;AAAA,MAAA,IAAA,OAAA2E,GAAA6+B,GAAAF,CAAA;AAAA;;;;;;;;;IAbxBtjC,EAAQ,CAAA,IAAG,KAAC;AAAA,IAAKA,EAAU,EAAA,KAAAuV,GAAAvV,CAAA;AAAA;;IAU3BA,EAAO,CAAA;AAAA,IAAIA,EAAW,CAAA,IAAA;AAAA,IAAKA,EAAK,EAAA,IAAG,KAAC;AAAA,IAAKA,EAAU,EAAA,KAAAwV,GAAAxV,CAAA;AAAA;;;;;;;;;;;;;;;;;;SAnB1CqE,EAAA8lC,GAAA,cAAAC;AAAA,MAAApqC;MAAaA,EAAI,CAAA,CAAA;MACnBA,EAAU,EAAA;MACVA,EAAU,EAAA;;;;QACPA,EAAM,CAAA;AAAA,MAAA;QAbjB8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,EAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,EAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MACrBA,EAAK,CAAA,CAAA;AAAA;AAAA,MACQA,EAAO,CAAA,IAAG,SAAS,GAAG;AAAA,QALnCqF;AAAA,QAAAiN;AAAA,QAAA;AAAA;AAAA,QAAAtS;QAAYA,EAAQ,CAAA,IAAG;AAAA,QAAKA;QAAQA,EAAQ,CAAA;AAAA,MAAA;;;;QACzCA,EAAU,EAAA;AAAA,MAAA;;;AAL9B,MAAAoD,EA2CKb,GAAAoQ,GAAAtP,CAAA,GA1CHf,EAyCKqQ,GAAAL,CAAA,GA9BHhQ,EAYCgQ,GAAA63B,CAAA;;;;;;;;;;;;;;;UAFWnqC,EAAU,EAAA;AAAA,QAAA;AAAA;;;;UACTA,EAAQ,EAAA;AAAA,QAAA;AAAA;;;;;;;;;;;;;;;;;;;;;SANPK;AAAA,MAAA,MAAA+pC,OAAAA;AAAA,MAAApqC;MAAaA,EAAI,CAAA;;MACnBA,EAAU,EAAA;;MACVA,EAAU,EAAA;;;;;QACPA,EAAM,CAAA;AAAA,MAAA;;;;;;MAMhBA,EAAQ,CAAA,IAAG,KAAC;AAAA,MAAKA,EAAU,EAAA;MAU3BA,EAAO,CAAA;AAAA,MAAIA,EAAW,CAAA,IAAA;AAAA,MAAKA,EAAK,EAAA,IAAG,KAAC;AAAA,MAAKA,EAAU,EAAA;;QA7BpD8P;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,EAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,EAAA;AAAA,MAAA,CAAA;AAAA;AAAA,MACrBA,EAAK,CAAA,CAAA;AAAA;AAAA,MACQA,EAAO,CAAA,IAAG,SAAS,GAAG;AAAA;gBALnCqF;AAAA,QAAAiN;AAAA,QAAA;AAAA;AAAA,QAAAtS;QAAYA,EAAQ,CAAA,IAAG;AAAA,QAAKA;QAAQA,EAAQ,CAAA;AAAA,MAAA;;;;;QACzCA,EAAU,EAAA;AAAA,MAAA;AAAA;;;;;;;;;kBAvEjB,EAAA,MAAA0D,EAAA,IAAAyP,KACA,OAAA5R,IAAgB,GAAA,IAAA4R,KAChB,aAAA8c,IAAsB,GAAA,IAAA9c,KACtB,MAAAk3B,IAAe,EAAA,IAAAl3B,KACf,QAAAI,IAAiB,GAAA,IAAAJ,KACjB,OAAAsJ,IAAgB,OAAA,IAAAtJ,KAChB,OAAAyW,IAAgB,QAAA,IAAAzW,KAChB,UAAAipB,IAAmB,QAAA,IAAAjpB,KACnB,UAAAsF,IAAmB,QAAA,IAAAtF,KACnB,WAAAwE,IAAoB,GAAA,IAAAxE,KACpB,SAAAm3B,IAAqC,GAAA,IAAAn3B,KACrC,UAAAo3B,IAAmB,GAAA,IAAAp3B,KAGnB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD,GAcrBq3B;WAIKvgB,EAAS/B,GAAA;AACZ,IAAArP,KACJ4xB,EAAgB;AAAA;WAGTC,EAAWxiB,GAAA;AACd,IAAArP,MACJ8xB,EAAiBziB,CAAC,GAClBuiB,EAAgB;AAAA;WAGTA,EAAehjB,GAAA;AACtB,IAAA+iB,EAAY,kBACN;AAAA,MAAY;AAAA;QACd,UAAU;AAAA,QACV,QAAU,EAAA,MAAA9mC,GAAM,OAAO8mC,EAAY,MAAA;AAAA;;;WAKhCG,EAAiBziB,GAAA;AACxB,IAAAsiB,EAAY,kBACN;AAAA,MAAY;AAAA;QACd,UAAU;AAAA,QACV,QAAU,EAAA,MAAA9mC,GAAM,OAAAnC,GAAO,KAAK2mB,EAAE,IAAA;AAAA;;;;;AAoBrB,MAAAsiB,IAAW52B;;;;;;;;;;eA1DvBE,EAAA,IAAAsW,IAAU3Z,GAAUmZ,CAAK,CAAA;eACzB9V,EAAA,IAAA+E,IAAapI,GAAUgI,CAAQ,CAAA;eAC/B3E,EAAA,IAAAgpB,IAAarsB,GAAU2rB,CAAQ,CAAA;WAClCtoB,EAAA,IAAG7B,IACDq4B,MAAY,cACR/oC,EAAM,SACNA,EAAM,MAAM,GAAG,EAAE,OAAQ,CAAAyQ,MAASA,EAAK,KAAA,EAAO,SAAS,CAAC,EAAE,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCtBvChS,QAAmB,MAAM;AAAA;AAAA,MAC1BA,QAAmB,OAAO;AAAA;AAAA,MACpBA,QAAoB,OAAO;AAAA;;;AAL3D,MAAAoD,EA+BKb,GAAAqS,GAAAvR,CAAA,GAvBHf,EAEQsS,GAAAoY,CAAA,+BAER1qB,EAcSsS,GAAAsiB,CAAA,GAbP50B,EAEK40B,GAAA0T,CAAA,+BAELtoC,EAEM40B,GAAA6C,CAAA,+BAENz3B,EAIK40B,GAAA2T,CAAA,2DAGPvoC,EAEQsS,GAAAolB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA3BiBh6B,QAAmB,MAAM;AAAA;AAAA,MAC1BA,QAAmB,OAAO;AAAA;AAAA,MACpBA,QAAoB,OAAO;AAAA;;;;;;;;;;;;;;2CAX9C,EAAA,iBAAA8qC,EAAA,IAAA33B,GACA,EAAA,kBAAA43B,EAAA,IAAA53B,GACA,EAAA,iBAAAuC,EAAA,IAAAvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCqNqDnT,EAAO,CAAA;AAAA,MAAA;MAHhEA,EAAkB,EAAA,IAAA,UAAA,GACFqE,EAAAyQ,GAAA,SAAAk2B,IAAA;AAAA,MAAAhrC;MAAiBA,EAAM,CAAA,IAAA,iBAAA;;;;QAExBA,EAAe,EAAA,IAAG,YAAY;AAAA,MAAQ;MAzBtCA,EAAM,CAAA,IAAA,iBAAA;;;;QAYfA,EAAM,CAAA;AAAA,MAAA;MAEAA,EAAkB,EAAA,IAAA,UAAA,0BAE9BqE,EAAAsO,GAAA,SAAA8C,IAAA3F;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA,CAAA;AAAA;;AAjBvC,MAAAoD,EA4BKb,GAAAoQ,GAAAtP,CAAA,GATHf,EAEKqQ,GAAAL,CAAA,+BACLhQ,EAKAqQ,GAAAmC,CAAA;;;;;;;;;;;;;;;;;UApBe9U,EAAW,EAAA;AAAA,QAAA;AAAA;;;;;;;;;;UAKjBA,EAAW,EAAA;AAAA,QAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;QAc4CA,EAAO,CAAA;AAAA,MAAA;;MAHhEA,EAAkB,EAAA,IAAA,gCACF,CAAA+S,KAAA1S;AAAA,MAAA,KAAA2qC,OAAAA,IAAA;AAAA,MAAAhrC;MAAiBA,EAAM,CAAA,IAAA;;;;;QAExBA,EAAe,EAAA,IAAG,YAAY;AAAA,MAAQ;;MAzBtCA,EAAM,CAAA,IAAA;;;;;QAYfA,EAAM,CAAA;AAAA,MAAA;;MAEAA,EAAkB,EAAA,IAAA,8CAE9B,CAAA+S,KAAA1S;AAAA,MAAA,OAAAoV,OAAAA,IAAA3F;AAAA;AAAA,QAAgB9P,EAAE,CAAA;AAAA;AAAA,QAAEA,EAAI,CAAA;AAAA;AAAA,QAAAA;;QAAIA,EAAE,CAAA;AAAA,MAAA;;;;;;;;;;;;;;6CAxM1B,SAAAyX,IAAU,GAAA,IAAAtE,KACV,QAAAI,IAAiB,GAAA,IAAAJ,KACjB,UAAAuuB,IAAqB,MAAA,IAAAvuB,KACrB,QAAA83B,IAAoB,SAAA,IAAA93B,KACpB,IAAApD,IAAc,KAAA,IAAAoD,KACd,IAAAnD,IAAc,KAAA,IAAAmD,KACd,IAAAlD,IAAc,KAAA,IAAAkD,KACd,IAAAjD,IAAc,KAAA,IAAAiD;SASlB+3B,GAAWC,CAAgB,IAAIr6B,GACpC,qBAAA,CACC,OAAO,UAAU,QAAQ,OAAO,GACjC,EAAA,GAGK,CAAAs6B,GAAWpyB,CAAiB,IAAIlI,GACrC,sBACC,QAAQ,SAAS,QAAQ,GAC1B,EAAA,GAGIu6B,IAAA,CAAa3J,GAAoB4J,OAAA;AACjC5J,KAAAA,MAAa,UAAUA,MAAa,YAClC4J,OAAU,YACZ,QAAQ,MAAA,IACFA,EAAK,uCAAuC5J,CAAQ,EAAA;AAAA;MAQ5D6J,IAAc,GACd5d,GACA6d,GACAC,GACAC,IAAkB,IAClBC,GACAC,GAKAC;AAoBJ,EAAAlkC,GAAA,MAAA;AACE;AAAA;AACE,QAAAwjC,EAAiBzJ,CAAQ,GACzB1oB,EAAkBiyB,CAAM,GACxBI,EAAU3J,GAAUuJ,CAAM;AAAA;MACzB;AAAA,OAEHQ,IAAmB/J,SACnBmK,IAAqB,KAAK,OAAS,EAAA,SAAS,EAAE,CAAA,GAE9C,OAAO,iBAAiB,UAAUC,CAAsB,GACxDA;MAGFjkC,GAAA,MAAA;AACE,WAAO,oBAAoB,UAAUikC,CAAsB,GAC3D,aAAaH,CAAmB,GAChC,aAAaC,CAAmB;AAAA;AAK5B,QAAAG,IAAA,MAAA;AACJ,IAAAJ,IAAsB;AAAA;cACpBD,IAAkB,EAAA,GAClBI;;MACC;AAAA;KAGCE,IAAA,MAAA;AACJ,iBAAaL,CAAmB,SAEhCC,IAAsB;AAAA;cACpBF,IAAkB,EAAA,QAClBhK,IAAW+J,CAAA;AAAA;MACV;AAAA;;AAGU,iBAAAK,IAAA;QAEP,MAAAxjC,GAAA,IAEDkjC,KAAe,CAAA7d;;AAKd,UAAAse,IAAcT,EAAW,yBACzBU,KAAWve,EAAQ,yBAEnBwe,KAAWD,GAAS,KACpBE,KAAc,OAAO,cAAcF,GAAS,QAC5CG,KAAYH,GAAS,MACrBI,KAAa,OAAO,aAAaJ,GAAS,OAE1CK,KAAW,KAAK,IACpBhB,IAAc,KACd,KACAU,EAAY,OACZ,KAAK,IAAII,IAAWC,EAAU,IAAI,EAAA,GAE9BE,KACJD,KAAWL,GAAS,SACpBK,KAAWF,MACXE,KAAWD;SACbd,EAAW,MAAM,QAAW,GAAAe,KAAW,EAAE,MAAAf,CAAA,GAErCgB,KACF14B,EAAA,GAAA03B,EAAW,MAAM,aAAa,UAAAA,CAAA,IAE9B13B,EAAA,GAAA03B,EAAW,MAAM,aAAa,UAAAA,CAAA;QAG5BiB,KAAc/K,GACdgL,IAAWzB;IAGXvJ,MAAa,YAAYuK,EAAY,SAASG,KAChDK,KAAc,QACL/K,MAAa,SAASuK,EAAY,SAASE,OACpDM,KAAc,WAIZ/K,MAAa,WAAWuK,EAAY,QAAQK,KAC9CG,KAAc,SACL/K,MAAa,UAAUuK,EAAY,QAAQI,OACpDI,KAAc,UAIZxB,MAAW,WAAWgB,EAAY,QAAQK,KAC5CI,IAAW,SACFzB,MAAW,UAAUgB,EAAY,QAAQI,KAClDK,IAAW,UAEXzB,MAAW,aACVvJ,MAAa,SAASA,MAAa,cACnCuK,EAAY,QAAQ,IAAII,MAAaJ,EAAY,QAAQ,IAAIK,QAE9DI,IAAWL,KAAYC,KAAa,SAAS,eAI/C5K,IAAW+K,EAAA,QACXxB,IAASyB,CAAA;AAAA;;;;;;AAgCE,MAAAlB,IAAU53B;;;;;AAvBZ,MAAA+Z,IAAO/Z;;;;AAEhB,iBAAag4B,CAAmB,GAChCG;;AAIA,iBAAaH,CAAmB,GAChCG;;;;;;WAzIIpe,KAAW6d,KACb7d,EAAQ,MAAM,YACZ,kBAAA,GACGA,EAAQ,sBAAA,EAAwB,QAAQ,CAAC,IAAA;SAOhDlW,KAAWq0B,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MClEY9rC,QAAmB,MAAM;AAAA;AAAA,MAC1BA,QAAkB,OAAO;AAAA;;;AAJnD,MAAAoD,EAwBKb,GAAAqS,GAAAvR,CAAA,GAjBHf,EAEQsS,GAAAoY,CAAA,+BAER1qB,EAQSsS,GAAAsiB,CAAA,GAPP50B,EAEK40B,GAAA4C,CAAA,+BAELx3B,EAEM40B,GAAA6C,CAAA,+BAGRz3B,EAEQsS,GAAAolB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MApBiBh6B,QAAmB,MAAM;AAAA;AAAA,MAC1BA,QAAkB,OAAO;AAAA;;;;;;;;;;;;;;6CARtC,gBAAA2sC,IAAyB,GAAA,IAAAx5B,KACzB,iBAAAuC,IAA0B,GAAA,IAAAvC;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,77,78,120,121,122]}
|