@jsenv/humanize 1.8.1 → 1.8.2

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.
@@ -76,7 +76,7 @@
76
76
  "import { interpolateText } from \"./interpolate_text.js\";\nimport { getRuntimeLang } from \"./runtime_lang.js\";\n\n/**\n * Creates a lightweight i18n instance: a central place where an app declares\n * its texts once and reads them back translated into the active language.\n *\n * Worth using even in a single-language app — one registry beats strings\n * scattered across components, and adding a second language later becomes a\n * data change instead of a refactor. See @jsenv/navi's `docs/i18n.md` for how\n * to choose between the two key styles below and how this relates to\n * `humanizeI18n`, the registry the built-in texts live in.\n *\n * @param {object} [options]\n * @param {string} [options.keyLang]\n * When set, each key also serves as its own translation for `keyLang`.\n * This allows writing keys directly in that language (typically the language\n * the app is written in) so only *other* languages need registering:\n *\n * ```js\n * const i18n = createI18n({ keyLang: \"en\" });\n * i18n.add(\"Hello [name]!\", { fr: \"Bonjour [name] !\" });\n * i18n(\"Hello [name]!\", { name: \"Alice\" }, { lang: \"en\" }); // \"Hello Alice!\"\n * i18n(\"Hello [name]!\", { name: \"Alice\" }, { lang: \"fr\" }); // \"Bonjour Alice !\"\n * ```\n *\n * `keyLang` only applies to keys passed to `add()`/`addAll()`; a key never\n * registered stays opaque and comes back as-is.\n *\n * Without `keyLang`, keys are opaque identifiers and every language\n * (including the one the app was written in) must be registered explicitly:\n *\n * ```js\n * const i18n = createI18n();\n * i18n.add(\"greeting\", { en: \"Hello [name]!\", fr: \"Bonjour [name] !\" });\n * i18n(\"greeting\", { name: \"Alice\" }, { lang: \"en\" }); // \"Hello Alice!\"\n * ```\n *\n * @param {string} [options.fallbackLang]\n * Language consulted when the active language has no translation for a key\n * — per key, not per language: a partially translated language falls through\n * to `fallbackLang` only for the keys it is missing. Without it, a missing\n * translation returns the key itself.\n *\n * @param {string|string[]} [options.runtimeLang]\n * The active language (BCP 47 tag or ordered array of tags) — named\n * \"runtime\" rather than \"system\" because there is no actual access to the\n * OS/user's system language from a browser, only `navigator.languages` (or\n * an explicit override) at runtime. Defaults to the shared runtime language\n * source (see runtime_lang.js) — the runtime's own locale, or whatever a\n * frontend installed in its place — read fresh on every `format()`/`has()`\n * call (not frozen at creation time), so overriding the language app-wide\n * is picked up here too.\n * Passing an explicit `runtimeLang` opts out of that and stays fixed for\n * this instance's whole lifetime.\n *\n * ---\n *\n * ## Registration\n *\n * **`i18n.add(key, { lang: \"translation\" })`** — one key, multiple languages.\n *\n * **`i18n.addAll({ key: { lang: \"translation\" }, ... })`** — multiple keys at once.\n *\n * **`i18n.addLangKeys(lang, { key: \"translation\", ... })`** — full language pack\n * (useful when loading a JSON translation file).\n *\n * All three accumulate: registering a key that already exists overwrites that\n * one key and leaves the rest of the language untouched. This is what lets an\n * app override a single built-in text without redeclaring the others.\n *\n * A regional variant (e.g. `\"fr-CA\"`) automatically inherits all keys from its\n * parent (`\"fr\"`) that it does not explicitly override:\n * ```js\n * i18n.addLangKeys(\"fr\", { hello: \"Bonjour !\" });\n * i18n.addLangKeys(\"fr-CA\", { hello: \"Allo !\" }); // other \"fr\" keys inherited\n * ```\n * Inheritance is resolved at registration time, so register the parent first.\n *\n * ---\n *\n * ## Reading\n *\n * **`i18n(key, values?, { lang? })`** — the translation for `key`, with\n * `[placeholder]` occurrences replaced from `values` (see `interpolateText`).\n * Returns `key` itself when nothing matches, so an untranslated string still\n * renders something readable. `i18n.format` is an alias of this call.\n *\n * **`i18n.has(key, { lang? })`** — whether a translation genuinely exists,\n * i.e. how to tell \"no translation\" apart from \"translation equal to the key\".\n *\n * @returns {Function & { add, addAll, addLangKeys, has, format, languageMap }}\n */\nexport const createI18n = ({ keyLang, fallbackLang, runtimeLang } = {}) => {\n const languageMap = new Map();\n // Bumped by addLangKeys — the only thing besides the active lang itself\n // that could change what getActiveLang()/getResolvedFallbackLang() below\n // resolve to, so it's what invalidates their own small caches.\n let languageMapVersion = 0;\n\n // Without an explicit runtimeLang, the runtime language source is re-read\n // fresh on every call rather than frozen here — freezing it would silently\n // ignore an app-wide language change (see runtime_lang.js) for the rest of\n // this instance's life.\n const hasExplicitRuntimeLang = runtimeLang !== undefined;\n\n // matchBestLang does real work (a Map lookup per candidate, a possible\n // \"fr-CA\" → \"fr\" split-and-retry loop) — worth skipping on every single\n // format()/has() call in the common case, since what it resolves to only\n // ever changes when languageMap itself changes (addLangKeys) or, for the\n // non-explicit case, when the runtime lang itself changes (see\n // runtime_lang.js; an installed source is expected to keep its reference\n // stable while nothing changed, and the default one caches its string) —\n // comparing those two cheaply (===) is enough to know the cached result\n // below is still valid.\n let cachedActiveLang;\n let cachedActiveLangRuntimeLang;\n let cachedActiveLangVersion = -1;\n const getActiveLang = () => {\n const currentRuntimeLang = hasExplicitRuntimeLang\n ? runtimeLang\n : getRuntimeLang();\n if (\n cachedActiveLangVersion === languageMapVersion &&\n cachedActiveLangRuntimeLang === currentRuntimeLang\n ) {\n return cachedActiveLang;\n }\n cachedActiveLang = matchBestLang(currentRuntimeLang, languageMap);\n cachedActiveLangVersion = languageMapVersion;\n cachedActiveLangRuntimeLang = currentRuntimeLang;\n return cachedActiveLang;\n };\n\n // fallbackLang is a plain, never-reactive option set once at creation —\n // its own resolution only ever needs recomputing when languageMap does.\n let cachedResolvedFallbackLang;\n let cachedResolvedFallbackLangVersion = -1;\n const getResolvedFallbackLang = () => {\n if (!fallbackLang) {\n return null;\n }\n if (cachedResolvedFallbackLangVersion === languageMapVersion) {\n return cachedResolvedFallbackLang;\n }\n cachedResolvedFallbackLang = matchBestLang(fallbackLang, languageMap);\n cachedResolvedFallbackLangVersion = languageMapVersion;\n return cachedResolvedFallbackLang;\n };\n\n const addLangKeys = (lang, translations) => {\n // Accumulate: merge with any existing translations for this lang\n const existing = languageMap.get(lang);\n if (existing) {\n translations = { ...existing, ...translations };\n }\n // A regional variant inherits all keys not explicitly overridden\n // e.g. \"fr-CA\" inherits from \"fr\"\n const dashIndex = lang.indexOf(\"-\");\n if (dashIndex !== -1) {\n const parentLang = lang.slice(0, dashIndex);\n const parentTranslations = languageMap.get(parentLang);\n if (parentTranslations) {\n translations = { ...parentTranslations, ...translations };\n }\n }\n languageMap.set(lang, translations);\n languageMapVersion++;\n };\n\n const add = (key, langTranslations) => {\n if (keyLang && !(keyLang in langTranslations)) {\n // Auto-register the key itself as the translation for keyLang\n addLangKeys(keyLang, { [key]: key });\n }\n for (const [lang, value] of Object.entries(langTranslations)) {\n addLangKeys(lang, { [key]: value });\n }\n };\n\n const addAll = (keyMap) => {\n for (const [key, langTranslations] of Object.entries(keyMap)) {\n add(key, langTranslations);\n }\n };\n\n const _getTemplate = (key, lang) => {\n // matchBestLang, not matchLang directly: lang can be an ordered array of\n // preferences, and matchLang alone assumes a plain string, throwing on\n // .split() otherwise.\n const resolvedLang = lang ? matchBestLang(lang, languageMap) : null;\n if (resolvedLang) {\n const translations = languageMap.get(resolvedLang);\n const translated = translations[key];\n if (translated !== undefined) {\n return translated;\n }\n }\n const resolvedFallbackLang = getResolvedFallbackLang();\n if (resolvedFallbackLang) {\n const fallbackTranslations = languageMap.get(resolvedFallbackLang);\n const fallbackTranslated = fallbackTranslations[key];\n if (fallbackTranslated !== undefined) {\n return fallbackTranslated;\n }\n }\n // No translation found — return key as-is (opaque fallback)\n return key;\n };\n\n const format = (key, values, { lang = getActiveLang() } = {}) => {\n const template = _getTemplate(key, lang);\n return interpolateText(template, values);\n };\n\n const has = (key, { lang = getActiveLang() } = {}) => {\n const resolvedLang = lang ? matchBestLang(lang, languageMap) : null;\n if (resolvedLang) {\n const translations = languageMap.get(resolvedLang);\n if (translations && key in translations) {\n return true;\n }\n }\n const resolvedFallbackLang = getResolvedFallbackLang();\n if (resolvedFallbackLang) {\n const fallbackTranslations = languageMap.get(resolvedFallbackLang);\n if (fallbackTranslations && key in fallbackTranslations) {\n return true;\n }\n }\n return false;\n };\n\n // The i18n instance is itself a callable function\n const i18n = (key, values, opts) => format(key, values, opts);\n i18n.add = add;\n i18n.addAll = addAll;\n i18n.addLangKeys = addLangKeys;\n i18n.has = has;\n i18n.format = format;\n i18n.languageMap = languageMap;\n\n return i18n;\n};\n\n// Walk \"fr-CA-variant\" → \"fr-CA\" → \"fr\" until a registered lang is found\nconst matchLang = (lang, languageMap) => {\n if (languageMap.has(lang)) {\n return lang;\n }\n const parts = lang.split(\"-\");\n while (parts.length > 1) {\n parts.pop();\n const candidate = parts.join(\"-\");\n if (languageMap.has(candidate)) {\n return candidate;\n }\n }\n return null;\n};\n\n// lang can be a string or an ordered array of preference strings\nconst matchBestLang = (lang, languageMap) => {\n if (!lang) {\n return null;\n }\n const candidates = Array.isArray(lang) ? lang : [lang];\n for (const candidate of candidates) {\n const match = matchLang(candidate, languageMap);\n if (match) {\n return match;\n }\n }\n return null;\n};\n",
77
77
  "import { createI18n } from \"./i18n.js\";\n\n/**\n * The shared registry holding the texts jsenv libraries display on their own:\n * the words this package's formatters need — relative time wording, duration\n * unit symbols, date field placeholders — and, when @jsenv/navi is installed,\n * everything its components say (button labels, validation messages,\n * empty-list messages…).\n *\n * One instance for all of them rather than one per package: a text belongs to\n * whoever displays it, but an app overriding one wants a single handle to do\n * it through. navi registers its own keys here and re-exports this very\n * object as `naviI18n`, so a `time.*` key registered below is overridable\n * from either name.\n *\n * Keys are opaque identifiers (`\"time.ongoing\"`), never the English sentence\n * — the opposite of what an app is advised to do for its own texts; navi's\n * `docs/i18n.md` explains why.\n *\n * @example\n * import { humanizeI18n } from \"@jsenv/humanize\";\n *\n * // Override a built-in text:\n * humanizeI18n.add(\"time.ongoing\", { fr: \"En cours…\" });\n *\n * // Teach a language that is not shipped:\n * humanizeI18n.addLangKeys(\"ja\", { \"time.midnight\": \"真夜中\" });\n */\nexport const humanizeI18n = createI18n();\n\n// What the time formatters in ../time/format_time.js write in words:\n// relative wording, the midnight word, the mark between the two bounds of a\n// span, and the compact duration unit symbols.\nhumanizeI18n.addAll({\n \"time.less_than_minute\": {\n en: \"in less than a minute\",\n fr: \"dans moins d'une minute\",\n de: \"in weniger als einer Minute\",\n es: \"en menos de un minuto\",\n it: \"in meno di un minuto\",\n pt: \"em menos de um minuto\",\n nl: \"over minder dan een minuut\",\n },\n \"time.ongoing\": {\n en: \"Ongoing\",\n fr: \"En cours\",\n de: \"Laufend\",\n es: \"En curso\",\n it: \"In corso\",\n pt: \"Em andamento\",\n nl: \"Bezig\",\n },\n // [day] and [time] are replaced at runtime with the localized day/time strings\n \"time.tomorrow_at\": {\n en: \"[day] at [time]\",\n fr: \"[day] à [time]\",\n de: \"[day] um [time]\",\n es: \"[day] a las [time]\",\n it: \"[day] alle [time]\",\n pt: \"[day] às [time]\",\n nl: \"[day] om [time]\",\n },\n // [duration] is replaced at runtime with the formatted duration string (e.g. \"1h30\", \"45 min\")\n \"time.in_duration\": {\n en: \"in [duration]\",\n fr: \"dans [duration]\",\n de: \"in [duration]\",\n es: \"en [duration]\",\n it: \"tra [duration]\",\n pt: \"em [duration]\",\n nl: \"over [duration]\",\n },\n // The word formatTimeOfDay splices in place of the \"0 heure(s)\" part of a\n // spelled-out time of day — see its own comment for why hour 0 needs a word\n // of its own, and how the swap keeps the rest of the sentence in this\n // language's grammar. A language with no entry here keeps its literal\n // \"0 heure(s)\" wording rather than this key.\n \"time.midnight\": {\n en: \"midnight\",\n fr: \"minuit\",\n de: \"Mitternacht\",\n es: \"medianoche\",\n it: \"mezzanotte\",\n pt: \"meia-noite\",\n nl: \"middernacht\",\n },\n // What formatTimeRange writes between the two bounds of a span — \"8h–10h\",\n // \"11 mai – 14 mai\". An en dash, the mark for a span, not a hyphen.\n \"time.range_separator\": {\n en: \"–\",\n fr: \"–\",\n de: \"–\",\n es: \"–\",\n it: \"–\",\n pt: \"–\",\n nl: \"–\",\n },\n // Compact duration unit symbols used in \"1h30\", \"45min\", \"2d\", etc.\n \"time.duration.year_symbol\": {\n en: \"y\",\n fr: \"a\",\n de: \"J\",\n es: \"a\",\n it: \"a\",\n pt: \"a\",\n nl: \"j\",\n ja: \"年\",\n zh: \"年\",\n ko: \"년\",\n },\n \"time.duration.month_symbol\": {\n en: \"mo\",\n fr: \"mo\",\n de: \"Mo\",\n es: \"mo\",\n it: \"mo\",\n pt: \"mo\",\n nl: \"mo\",\n ja: \"月\",\n zh: \"月\",\n ko: \"월\",\n },\n \"time.duration.week_symbol\": {\n en: \"w\",\n fr: \"sem\",\n de: \"W\",\n es: \"sem\",\n it: \"sett\",\n pt: \"sem\",\n nl: \"w\",\n ja: \"週\",\n zh: \"周\",\n ko: \"주\",\n },\n \"time.duration.day_symbol\": {\n en: \"d\",\n fr: \"j\",\n de: \"T\",\n es: \"d\",\n it: \"g\",\n pt: \"d\",\n nl: \"d\",\n ja: \"日\",\n zh: \"天\",\n ko: \"일\",\n },\n \"time.duration.hour_symbol\": {\n en: \"h\",\n fr: \"h\",\n de: \"h\",\n es: \"h\",\n it: \"h\",\n pt: \"h\",\n nl: \"u\",\n ja: \"時間\",\n zh: \"小时\",\n ko: \"시간\",\n },\n \"time.duration.minute_symbol\": {\n en: \"min\",\n fr: \"min\",\n de: \"min\",\n es: \"min\",\n it: \"min\",\n pt: \"min\",\n nl: \"min\",\n ja: \"分\",\n zh: \"分\",\n ko: \"분\",\n },\n \"time.duration.second_symbol\": {\n en: \"s\",\n fr: \"s\",\n de: \"s\",\n es: \"s\",\n it: \"s\",\n pt: \"s\",\n nl: \"s\",\n ja: \"秒\",\n zh: \"秒\",\n ko: \"초\",\n },\n \"time.duration.millisecond_symbol\": {\n en: \"ms\",\n fr: \"ms\",\n de: \"ms\",\n es: \"ms\",\n it: \"ms\",\n pt: \"ms\",\n nl: \"ms\",\n ja: \"ms\",\n zh: \"ms\",\n ko: \"ms\",\n },\n});\n\n// Date/time placeholder tokens — shown when no value is selected\n// Override any key to adapt to your language conventions\nhumanizeI18n.addAll({\n \"time.placeholder.day\": {\n fr: \"jj\",\n en: \"dd\",\n de: \"TT\",\n es: \"dd\",\n it: \"gg\",\n pt: \"dd\",\n nl: \"dd\",\n },\n \"time.placeholder.month\": {\n fr: \"mm\",\n en: \"mm\",\n de: \"MM\",\n es: \"mm\",\n it: \"mm\",\n pt: \"mm\",\n nl: \"mm\",\n },\n \"time.placeholder.year\": {\n fr: \"aaaa\",\n en: \"yyyy\",\n de: \"JJJJ\",\n es: \"aaaa\",\n it: \"aaaa\",\n pt: \"aaaa\",\n nl: \"jjjj\",\n },\n \"time.placeholder.hour\": {\n fr: \"hh\",\n en: \"hh\",\n de: \"hh\",\n es: \"hh\",\n it: \"hh\",\n pt: \"hh\",\n nl: \"uu\",\n },\n \"time.placeholder.minute\": {\n fr: \"mm\",\n en: \"mm\",\n de: \"mm\",\n es: \"mm\",\n it: \"mm\",\n pt: \"mm\",\n nl: \"mm\",\n },\n \"time.placeholder.week\": {\n fr: \"sem.\",\n en: \"wk\",\n de: \"KW\",\n es: \"sem.\",\n it: \"sett.\",\n pt: \"sem.\",\n nl: \"wk\",\n },\n});\n",
78
78
  "import { getRuntimeLang } from \"../i18n/runtime_lang.js\";\n\nexport const formatNumber = (value, { lang = getRuntimeLang() } = {}) => {\n return new Intl.NumberFormat(lang).format(value);\n};\n",
79
- "/**\n * Locale-aware time formatting: days, months, times of day, spans and\n * durations, worded the way a reader of that language expects them.\n *\n * It lives in a package with no frontend of its own so that a server and a\n * browser word the same instant identically — a notification sentence and the\n * card it points at must read the same date the same way. Nothing here touches\n * the DOM, and nothing it imports may.\n *\n * `lang` defaults to the runtime language source (see ../i18n/runtime_lang.js):\n * the runtime's own locale, or whatever a browser bundle installs in its place\n * (@jsenv/navi points it at the user's live language preference, so reading it\n * during a render subscribes the component). The words around the numbers come\n * from humanizeI18n, their order and shape from Intl.\n *\n * Its neighbour ./time.js writes durations too, in English, for CLI\n * output where readability beats precision — these write for the reader of an\n * app, in their language.\n *\n * All functions accept an optional `{ now }` parameter for testability.\n */\n\nimport { parseDuration } from \"@jsenv/validity\";\n\nimport { humanizeI18n } from \"../i18n/humanize_i18n.js\";\nimport { getRuntimeLang } from \"../i18n/runtime_lang.js\";\n\n// Constructing an Intl formatter dominates the cost of a call (~19µs vs\n// ~0.4µs to format with a kept instance, node 26 on an M-series Mac) and\n// these formatters run in render loops — a card easily writes half a dozen\n// per render — so every instance is memoized by (constructor, lang,\n// options). lang and each option value come from small closed sets, so the\n// cache stays bounded.\nconst intlCache = new Map();\nconst memoIntl = (constructorName, lang, options) => {\n let key = `${constructorName}|${Array.isArray(lang) ? lang.join() : lang}`;\n if (options) {\n for (const optionName of Object.keys(options)) {\n key += `|${optionName}:${options[optionName]}`;\n }\n }\n const cached = intlCache.get(key);\n if (cached) {\n return cached;\n }\n const formatter = new Intl[constructorName](lang, options);\n intlCache.set(key, formatter);\n return formatter;\n};\n\n// Our own compact/custom duration notation interpolates raw numbers\n// directly (unlike Intl.DurationFormat, which groups thousands on its own,\n// e.g. \"5 400 secondes\") — this keeps that consistent without reimplementing\n// locale-aware grouping. Falls back to the raw value as-is for a\n// non-numeric mid-edit value (e.g. \"2a\"), which Intl.NumberFormat can't\n// format anyway.\nconst formatCompactNumber = (value, lang) => {\n const n = Number(value);\n return Number.isFinite(n) ? memoIntl(\"NumberFormat\", lang).format(n) : value;\n};\n\n/**\n * Formats a date as a human-readable day string.\n *\n * @param {Date} date\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"numeric\"|{ weekday?: \"long\"|\"short\"|\"narrow\"|false, day?: boolean, month?: \"long\"|\"short\"|\"narrow\"|\"numeric\"|false }, year?: boolean|\"auto\", now?: Date, timeZone?: string }} [options]\n * A string spells the weekday and the month the same way. An object spells\n * them apart, each key defaulting to `\"long\"`: a narrow card usually wants\n * the weekday whole (it is the reading anchor) and the month abbreviated (it\n * is where the characters are — \"septembre\" is 9 of them, \"sept.\" reads the\n * same). `\"numeric\"` stays a string-only spelling: it drops the weekday and\n * writes the whole date in digits.\n *\n * In the object form, `false` drops a part: `{ day: false, month: false }`\n * writes the weekday alone (\"mardi\"), `{ month: false }` the weekday and\n * day-of-month (\"mardi 18\"), `{ weekday: false }` the date without its\n * anchor (\"18 juillet\"). At least one part must stay — with all three\n * dropped, Intl falls back to its own default date spelling.\n * @param {boolean|\"auto\"} [options.year=true]\n * Whether the `\"numeric\"` spelling writes the year: `false` drops it\n * (\"30/07\", the day/month order still following the locale), `\"auto\"` drops\n * it only when the date is in the current year (`now`'s year). The spelled\n * formats never write the year, so they ignore it.\n * @param {string} [options.timeZone]\n * IANA zone the instant is worded in (\"Europe/Paris\"); defaults to the\n * runtime's own zone. The case is a server wording an instant for readers\n * in a known zone — a game at 00:30 Paris must not be dated the previous\n * day just because the process clock runs on UTC. `year: \"auto\"` reads both\n * years in that zone too.\n *\n * @example\n * formatDay(new Date(), { lang: \"fr\" }) // \"lundi 11 mai\" (long, default)\n * formatDay(new Date(), { lang: \"fr\", format: \"short\" }) // \"lun. 11 mai\"\n * formatDay(new Date(), { lang: \"fr\", format: \"narrow\" }) // \"lu. 11 mai\"\n * formatDay(new Date(), { lang: \"fr\", format: \"numeric\" }) // \"11/05/2026\"\n * formatDay(new Date(), { lang: \"fr\", format: \"numeric\", year: false }) // \"11/05\"\n * formatDay(new Date(), { lang: \"fr\", format: { weekday: \"long\", month: \"short\" } }) // \"mercredi 2 sept.\"\n * formatDay(new Date(), { lang: \"fr\", format: { day: false, month: false } }) // \"mercredi\"\n * formatDay(new Date(), { lang: \"fr\", format: { month: false } }) // \"mercredi 2\"\n */\nexport const formatDay = (\n date,\n {\n lang = getRuntimeLang(),\n format = \"long\",\n year = true,\n now = new Date(),\n timeZone,\n } = {},\n) => {\n if (format === \"numeric\") {\n const yearWritten =\n year === \"auto\"\n ? readYear(date, timeZone) !== readYear(now, timeZone)\n : year !== false;\n return memoIntl(\"DateTimeFormat\", lang, {\n day: \"2-digit\",\n month: \"2-digit\",\n ...(yearWritten ? { year: \"numeric\" } : {}),\n timeZone,\n }).format(date);\n }\n const {\n weekday = \"long\",\n day = true,\n month = \"long\",\n } = typeof format === \"string\" ? { weekday: format, month: format } : format;\n // a `false` part is omitted, not passed: Intl rejects false as a value\n return memoIntl(\"DateTimeFormat\", lang, {\n ...(weekday === false ? {} : { weekday }),\n ...(day === false ? {} : { day: \"numeric\" }),\n ...(month === false ? {} : { month }),\n timeZone,\n }).format(date);\n};\n\n/**\n * Returns the day offset relative to now: -1 (yesterday), 0 (today), 1 (tomorrow), or the\n * actual number of days difference for any other date.\n */\nexport const getRelativeDay = (date, { now = new Date() } = {}) => {\n const dateKey = toLocalDayKey(date);\n\n const yesterdayDate = new Date(now);\n yesterdayDate.setDate(yesterdayDate.getDate() - 1);\n if (dateKey === toLocalDayKey(yesterdayDate)) {\n return -1;\n }\n\n if (dateKey === toLocalDayKey(now)) {\n return 0;\n }\n\n const tomorrowDate = new Date(now);\n tomorrowDate.setDate(tomorrowDate.getDate() + 1);\n if (dateKey === toLocalDayKey(tomorrowDate)) {\n return 1;\n }\n\n const nowMidnight = new Date(now);\n nowMidnight.setHours(0, 0, 0, 0);\n const dateMidnight = new Date(date);\n dateMidnight.setHours(0, 0, 0, 0);\n return Math.round((dateMidnight - nowMidnight) / DAY);\n};\n\n/**\n * Formats a relative day offset (-1/0/1) as a locale-aware label: \"hier\", \"aujourd'hui\", \"demain\".\n */\n// ── Placeholder helpers ────────────────────────────────────────────────────\n// Derive locale-aware format placeholders from Intl.DateTimeFormat.formatToParts\n// using a sentinel date whose parts are unambiguous (day=28, month=11, year=9999).\n// Per-language token tables cover the most common locales; unknown langs fall\n// back to \"dd/mm/yyyy\".\n\nconst SENTINEL_DATE = new Date(9999, 10, 28); // 28 Nov 9999 — day≠month, both 2-digit\n\nconst getToken = (key, lang) =>\n humanizeI18n(`time.placeholder.${key}`, undefined, { lang });\n\nexport const formatDatePlaceholder = ({ lang = getRuntimeLang() } = {}) => {\n const parts = memoIntl(\"DateTimeFormat\", lang, {\n day: \"numeric\",\n month: \"numeric\",\n year: \"numeric\",\n }).formatToParts(SENTINEL_DATE);\n return parts\n .map((p) => {\n if (p.type === \"day\") {\n return getToken(\"day\", lang);\n }\n if (p.type === \"month\") {\n return getToken(\"month\", lang);\n }\n if (p.type === \"year\") {\n return getToken(\"year\", lang);\n }\n return p.value;\n })\n .join(\"\");\n};\n\nexport const formatMonthPlaceholder = ({\n lang = getRuntimeLang(),\n format = \"long\",\n} = {}) => {\n const parts = memoIntl(\"DateTimeFormat\", lang, {\n month: format,\n year: \"numeric\",\n }).formatToParts(SENTINEL_DATE);\n return parts\n .map((p) => {\n if (p.type === \"month\") {\n // Text month formats (long/short/narrow) → dash; numeric → token\n return format === \"numeric\" ? \"–\" : getToken(\"month\", lang);\n }\n if (p.type === \"year\") {\n return getToken(\"year\", lang);\n }\n return p.value;\n })\n .join(\"\");\n};\n\nexport const formatWeekPlaceholder = ({ lang = getRuntimeLang() } = {}) => {\n return `${getToken(\"week\", lang)} xx / ${getToken(lang)}`;\n};\n\nexport const formatDatetimePlaceholder = ({\n lang = getRuntimeLang(),\n format = \"long\",\n} = {}) => {\n const intlOptions =\n format === \"long\"\n ? {\n weekday: \"short\",\n day: \"numeric\",\n month: \"long\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n }\n : format === \"narrow\"\n ? {\n day: \"2-digit\",\n month: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n }\n : {\n day: \"numeric\",\n month: \"short\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n const parts = memoIntl(\"DateTimeFormat\", lang, intlOptions).formatToParts(\n SENTINEL_DATE,\n );\n let skipNext = false;\n return parts\n .map((p) => {\n if (p.type === \"weekday\") {\n skipNext = true;\n return \"\";\n }\n if (p.type === \"literal\" && skipNext) {\n skipNext = false;\n return \"\";\n }\n skipNext = false;\n if (p.type === \"day\") {\n return getToken(\"day\", lang);\n }\n if (p.type === \"month\") {\n return getToken(\"month\", lang);\n }\n if (p.type === \"hour\") {\n return getToken(\"hour\", lang);\n }\n if (p.type === \"minute\") {\n return getToken(\"minute\", lang);\n }\n return p.value;\n })\n .join(\"\")\n .trim();\n};\n\n// ── End placeholder helpers ────────────────────────────────────────────────\n\nexport const formatDayRelative = (offset, { lang = getRuntimeLang() } = {}) => {\n return memoIntl(\"RelativeTimeFormat\", lang, {\n numeric: \"auto\",\n }).format(offset, \"day\");\n};\n\nexport const formatMonth = (\n date,\n { lang = getRuntimeLang(), format = \"long\", timeZone } = {},\n) => {\n return memoIntl(\"DateTimeFormat\", lang, {\n month: format, // \"long\", \"short\", or \"narrow\"\n year: \"numeric\",\n timeZone,\n }).format(date);\n};\n\n/**\n * Formats a date as \"lun. 11 mai, 14:30\" (long), \"11 mai, 14:30\" (short), \"11/05, 14:30\" (narrow).\n * `timeZone` words the instant in that IANA zone instead of the runtime's own.\n */\nexport const formatDatetime = (\n date,\n { lang = getRuntimeLang(), format = \"long\", timeZone } = {},\n) => {\n if (format === \"long\") {\n return memoIntl(\"DateTimeFormat\", lang, {\n weekday: \"short\",\n day: \"numeric\",\n month: \"long\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone,\n }).format(date);\n }\n if (format === \"narrow\") {\n return memoIntl(\"DateTimeFormat\", lang, {\n day: \"2-digit\",\n month: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone,\n }).format(date);\n }\n // \"short\": no weekday\n return memoIntl(\"DateTimeFormat\", lang, {\n day: \"numeric\",\n month: \"short\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone,\n }).format(date);\n};\n\n/**\n * Formats a date as \"14:30\".\n * `timeZone` words the instant in that IANA zone instead of the runtime's own.\n */\nexport const formatTime = (\n date,\n { lang = getRuntimeLang(), timeZone } = {},\n) => {\n return memoIntl(\"DateTimeFormat\", lang, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone,\n }).format(date);\n};\n\n/**\n * Formats a time-of-day the way `<Time type=\"time\">` writes it, as a plain\n * string — for the places a component cannot go (a `title` attribute, a push\n * notification).\n *\n * @param {Date|number|string} value\n * A Date, a ms timestamp, or an \"HH:MM\"/\"HH:MM:SS\" string. Only the clock\n * time is read. A nullish value renders the \"--:--\" placeholder; an\n * unparseable one is returned as-is, stringified.\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\"|\"timestring\", pad?: boolean, precision?: \"hour\"|\"minute\", timeZone?: string }} [options]\n * The options `<Time type=\"time\">` takes: `\"timestring\"` is the clock\n * \"14:30\"; the other formats write the time as a duration-shaped phrase —\n * see {@link formatMinuteDuration}'s `clockStyle` for what `pad` and\n * `precision` shape in `format=\"compact\"`.\n * @param {string} [options.timeZone]\n * IANA zone the instant's clock is read in (\"Europe/Paris\"); defaults to\n * the runtime's own zone. Only applies to a Date/timestamp — an\n * \"HH:MM\" string is already a wall-clock reading, there is nothing to\n * move to another zone, so it ignores this.\n *\n * @example\n * formatTimeOfDay(date, { lang: \"fr\" }) // \"14 heures 30\" (long, default)\n * formatTimeOfDay(date, { lang: \"fr\", format: \"timestring\" }) // \"14:30\"\n * formatTimeOfDay(date, { lang: \"fr\", format: \"compact\" }) // \"14h30\"\n * formatTimeOfDay(date, { lang: \"fr\", format: \"compact\", pad: false }) // \"8h30\", \"8h\"\n */\nexport const formatTimeOfDay = (\n value,\n {\n lang = getRuntimeLang(),\n format = \"long\",\n pad = true,\n precision = pad ? \"minute\" : \"hour\",\n timeZone,\n } = {},\n) => {\n if (value === undefined || value === null) {\n return \"--:--\";\n }\n const date = toTimeOfDay(value);\n // toDate turns a non-finite number into an Invalid Date, which is an object\n if (!date || isNaN(date.getTime())) {\n return String(value);\n }\n // An \"HH:MM\" string is a wall-clock reading, not an instant — re-reading\n // it in another zone would shift what the caller already spelled out.\n const zone = typeof value === \"string\" ? undefined : timeZone;\n if (format === \"timestring\") {\n return formatTime(date, { lang, timeZone: zone });\n }\n const { hours, minutes } = readClock(date, zone);\n const totalMinutes = hours * 60 + minutes;\n // clockStyle: this is always a time-of-day here, never a duration — keeps\n // a zero hour instead of dropping it (midnight would otherwise be\n // indistinguishable from an actual 5-minute duration), and in\n // format=\"compact\" also zero-pads a single-digit hour so \"5h30\"/\"0h05\"\n // read as \"05h30\"/\"00h05\", closer to a \"HH:MM\" clock.\n if (hours !== 0 || format !== \"long\") {\n // At midnight, short/narrow/compact keep the \"0 h\"/\"0h\" hour part —\n // \"0 h et 5 min\"/\"0h 5min\"/\"00h05\" — rather than substituting a\n // translated \"midnight\" word, which would look out of place squeezed\n // into these otherwise terse, symbol-based formats.\n return formatMinuteDuration(totalMinutes, {\n lang,\n format,\n clockStyle: true,\n pad,\n precision,\n });\n }\n // Midnight (hour 0) at format=\"long\" can't go through\n // formatMinuteDuration's own default zero-hour handling: it drops a\n // zero-valued unit entirely (by design — a real 5-minute duration should\n // print as \"5 minutes\", not \"0 hours 5 minutes\"), so \"00:05\" would\n // otherwise render identically to an actual 5-minute duration, silently\n // losing the fact that it's midnight. Every other hour keeps at least its\n // own \"N hour(s)\" wording as a hint that this is a time-of-day — only\n // hour 0 loses that hint entirely.\n const midnightWord = humanizeI18n(\"time.midnight\", undefined, { lang });\n if (midnightWord === \"time.midnight\") {\n // No \"midnight\" translation registered for this language — fall back\n // to this language's own literal \"0 heure(s)\" wording instead (still\n // better than leaking the untranslated key, or substituting an\n // English word that wouldn't grammatically match the rest of the\n // sentence in whatever language this actually is).\n return formatMinuteDuration(totalMinutes, {\n lang,\n format,\n clockStyle: true,\n });\n }\n // Swap just the \"0 heure(s)\" part of the Intl-generated duration\n // string for the translated \"midnight\" word, keeping everything else\n // (the conjunction, the minutes part) exactly as Intl would produce\n // for this locale — formatToParts tags each token with the unit it\n // belongs to, so the swap doesn't need to know the locale's own\n // grammar/word order. Only ever one hour-tagged group per call\n // (hours is always 0 or absent here), but guarded anyway in case a\n // future Intl implementation ever splits it into more parts.\n const parts = memoIntl(\"DurationFormat\", lang, {\n style: \"long\",\n hoursDisplay: \"always\",\n }).formatToParts({ hours: 0, minutes });\n let hourGroupReplaced = false;\n return parts\n .map((part) => {\n if (part.unit !== \"hour\") {\n return part.value;\n }\n if (hourGroupReplaced) {\n return \"\";\n }\n hourGroupReplaced = true;\n return midnightWord;\n })\n .join(\"\");\n};\n\n/**\n * Formats a span between two times-of-day the way `<TimeRange>` writes it, as\n * a plain string — \"8h–10h\", \"11h30–14h00\", \"14 heures 30 – 16 heures\".\n *\n * Applies `<TimeRange>`'s shared-precision rule: the two bounds are written\n * to the same precision, decided by the pair — any bound with minutes gives\n * minutes to both, zero included (\"11h30–14h00\", never \"11h30–14h\").\n *\n * @param {Date|number|string} from\n * @param {Date|number|string} to\n * Each bound accepts what {@link formatTimeOfDay} accepts; a nullish bound\n * renders its \"--:--\" placeholder.\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\"|\"timestring\", pad?: boolean, precision?: \"hour\"|\"minute\", separator?: string, timeZone?: string }} [options]\n * `precision` writes both bounds at this precision instead of the one the\n * pair calls for. `separator` defaults to the `\"time.range_separator\"`\n * registered text (an en dash), tightened against both bounds in\n * `format=\"compact\"` —\n * where the span is one short token — and spaced out otherwise. `timeZone`\n * reads both bounds' clocks in that IANA zone — see {@link formatTimeOfDay}.\n *\n * @example\n * formatTimeRange(\"08:00\", \"10:00\", { lang: \"fr\", format: \"compact\", pad: false }) // \"8h–10h\"\n * formatTimeRange(\"11:30\", \"14:00\", { lang: \"fr\", format: \"compact\", pad: false }) // \"11h30–14h00\"\n */\nexport const formatTimeRange = (\n from,\n to,\n {\n lang = getRuntimeLang(),\n format = \"long\",\n pad = true,\n timeZone,\n precision = resolveTimeRangePrecision(from, to, { format, pad, timeZone }),\n separator = humanizeI18n(\"time.range_separator\", undefined, { lang }),\n } = {},\n) => {\n const boundOptions = { lang, format, pad, precision, timeZone };\n const fromText = formatTimeOfDay(from, boundOptions);\n const toText = formatTimeOfDay(to, boundOptions);\n if (format === \"compact\") {\n return `${fromText}${separator}${toText}`;\n }\n return `${fromText} ${separator} ${toText}`;\n};\n\n// The two bounds of a span are written to the same precision, decided by the\n// pair: \"8h–10h\" as long as neither has minutes, \"11h30–14h00\" as soon as one\n// of them does. Only ever a question for the unpadded compact clock — the\n// padded one always writes \"08h00\", and the spelled-out formats name their\n// units, leaving no shape for the eye to trip on.\nexport const resolveTimeRangePrecision = (\n from,\n to,\n { format, pad, timeZone },\n) => {\n if (pad || format !== \"compact\") {\n return \"minute\";\n }\n const hasMinutes = (value) => {\n const date = toTimeOfDay(value);\n if (!date || isNaN(date.getTime())) {\n return false;\n }\n // Same rule as formatTimeOfDay: a string is a wall-clock reading, only\n // an instant is re-read in `timeZone`.\n const zone = typeof value === \"string\" ? undefined : timeZone;\n return readClock(date, zone).minutes !== 0;\n };\n return hasMinutes(from) || hasMinutes(to) ? \"minute\" : \"hour\";\n};\n\n/**\n * Formats a duration expressed in minutes as a human-readable string.\n * \"long\", \"short\", \"narrow\" delegate to Intl.DurationFormat.\n * \"compact\" uses our own notation that omits the minute symbol when hours are present.\n *\n * @param {number} minutes\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\", clockStyle?: boolean, pad?: boolean, precision?: \"hour\"|\"minute\", forceUnit?: boolean }} [options]\n * @param {boolean} [options.forceUnit=false] - Keep the value in minutes\n * however big it gets (\"2160 minutes\" instead of \"1 jour et 12 heures\").\n * Past 24 hours the default promotes to days, which reads better but hides\n * the unit the caller works in.\n * @param {boolean} [options.clockStyle=false] - Set this when `minutes`\n * represents a time-of-day rather than a real duration (used by\n * `<Time type=\"time\">`, see time.jsx's own TimeTime). A clock's \"0\" is a\n * meaningful hour rather than \"no hours\": a zero-hours component is\n * normally dropped entirely (a real 5-minute duration should print as\n * \"5 minutes\", not \"0 hours 5 minutes\"); this keeps it instead (e.g.\n * \"0 h et 5 min\"/\"0h 5min\"/\"00h05\") so midnight doesn't collapse to\n * something indistinguishable from an actual 5-minute duration.\n * Must not be set for plain duration formatting.\n * @param {boolean} [options.pad=true] - Zero-pad the hour to 2 digits\n * (\"08h30\" rather than \"8h30\"). `clockStyle` + `format: \"compact\"` only.\n * @param {\"hour\"|\"minute\"} [options.precision=\"minute\"] - Whether a zero\n * minute is written: `\"minute\"` keeps it (\"10h00\"), `\"hour\"` drops it\n * (\"10h\"). `clockStyle` + `format: \"compact\"` only.\n *\n * These last two are the clock's two independent shape choices, and only\n * `format: \"compact\"` has to make them — the spelled-out formats put their\n * units in words, so \"10 heures\"/\"10 h\"/\"10h\" already reads as a time of\n * day whatever the padding, and they always write the hour bare and drop a\n * zero minute. Padded + minute (\"08h00\") is the column shape, where every\n * row occupies the same width; bare + hour (\"8h\", \"8h30\") is the shape a\n * person speaks. Bare + minute (\"8h00\") only ever makes sense next to a\n * partner that has minutes of its own — see `<TimeRange>`, which is the\n * only thing that asks for it.\n *\n * @example\n * formatMinuteDuration(90, { lang: \"fr\" }) // \"1 heure 30 minutes\" (long, default)\n * formatMinuteDuration(90, { lang: \"fr\", format: \"short\" }) // \"1 h et 30 min\" (Intl short)\n * formatMinuteDuration(90, { lang: \"fr\", format: \"narrow\" }) // \"1h 30min\" (Intl narrow)\n * formatMinuteDuration(90, { lang: \"fr\", format: \"compact\" }) // \"1h30\" (custom, no minute symbol)\n * formatMinuteDuration(45, { lang: \"en\", format: \"compact\" }) // \"45min\"\n * formatMinuteDuration(5, { lang: \"fr\", format: \"narrow\", clockStyle: true }) // \"0h 5min\"\n * formatMinuteDuration(330, { lang: \"fr\", format: \"compact\", clockStyle: true }) // \"05h30\"\n * formatMinuteDuration(600, { lang: \"fr\", format: \"compact\", clockStyle: true }) // \"10h00\"\n * formatMinuteDuration(600, { lang: \"fr\", format: \"compact\", clockStyle: true, pad: false }) // \"10h00\"\n * formatMinuteDuration(600, { lang: \"fr\", format: \"compact\", clockStyle: true, pad: false, precision: \"hour\" }) // \"10h\"\n * formatMinuteDuration(510, { lang: \"fr\", format: \"compact\", clockStyle: true, pad: false, precision: \"hour\" }) // \"8h30\"\n * formatMinuteDuration(2160, { lang: \"fr\" }) // \"1 jour et 12 heures\"\n * formatMinuteDuration(2160, { lang: \"fr\", forceUnit: true }) // \"2 160 minutes\"\n */\nexport const formatMinuteDuration = (\n minutes,\n {\n lang = getRuntimeLang(),\n format = \"long\",\n clockStyle = false,\n pad = true,\n precision = \"minute\",\n forceUnit = false,\n } = {},\n) => {\n if (minutes < 0) {\n // the d/h/m split below only holds for a positive value; formatting the\n // magnitude and putting the sign back is the only reading that works\n return `-${formatMinuteDuration(-minutes, { lang, format, clockStyle, pad, precision, forceUnit })}`;\n }\n if (forceUnit || (minutes === 0 && !clockStyle)) {\n // a zero has nothing to promote to, and rendering it as an empty string\n // would be indistinguishable from a missing value\n return formatSingleUnit(minutes, \"minute\", { lang, format });\n }\n const totalHours = Math.floor(minutes / 60);\n const m = minutes % 60;\n // a time of day never goes past 24h, and its hour part is the clock hour\n const d = clockStyle ? 0 : Math.floor(totalHours / 24);\n const h = clockStyle ? totalHours : totalHours % 24;\n if (format !== \"compact\" && typeof Intl.DurationFormat !== \"undefined\") {\n const fmt = memoIntl(\"DurationFormat\", lang, {\n style: format, // \"long\", \"short\", or \"narrow\"\n ...(clockStyle ? { hoursDisplay: \"always\" } : {}),\n });\n const duration = {};\n if (d > 0) {\n duration.days = d;\n }\n if (h > 0 || clockStyle || d > 0) {\n duration.hours = h;\n }\n if (m > 0 || (d === 0 && h === 0)) {\n duration.minutes = m;\n }\n return fmt.format(duration);\n }\n // format=\"compact\": \"1j12h\", \"1h30\", \"45min\", \"2h\" — no minute symbol when hours are present\n const dSym = humanizeI18n(\"time.duration.day_symbol\", undefined, { lang });\n const hSym = humanizeI18n(\"time.duration.hour_symbol\", undefined, { lang });\n const mSym = humanizeI18n(\"time.duration.minute_symbol\", undefined, { lang });\n const dStr = d > 0 ? `${formatCompactNumber(d, lang)}${dSym}` : \"\";\n const hStr =\n clockStyle && pad\n ? String(h).padStart(2, \"0\")\n : formatCompactNumber(h, lang);\n if (d === 0 && h === 0 && !clockStyle) {\n return `${m}${mSym}`;\n }\n if (m === 0) {\n if (clockStyle) {\n // \"10h00\" on a clock, \"2h\" for a real 2 hours duration — except at\n // precision \"hour\", where a clock drops the zero minute too (\"10h\"),\n // the way one says it out loud\n return precision === \"minute\" ? `${hStr}${hSym}00` : `${hStr}${hSym}`;\n }\n return h === 0 ? dStr : `${dStr}${hStr}${hSym}`;\n }\n return `${dStr}${hStr}${hSym}${String(m).padStart(2, \"0\")}`;\n};\n\n// \"forceUnit\": stay in the unit the value is expressed in, however big it gets\nconst formatSingleUnit = (value, unit, { lang, format }) => {\n if (format !== \"compact\" && typeof Intl.DurationFormat !== \"undefined\") {\n return memoIntl(\"DurationFormat\", lang, {\n style: format,\n // Intl drops a zero-valued unit, and \"0 minute\" is the whole point here\n [`${unit}sDisplay`]: \"always\",\n }).format({\n [`${unit}s`]: value,\n });\n }\n const symbol = humanizeI18n(`time.duration.${unit}_symbol`, undefined, {\n lang,\n });\n return `${formatCompactNumber(value, lang)}${symbol}`;\n};\n\n/**\n * Formats a duration expressed in hours (possibly fractional) as a human-readable string.\n * Delegates to {@link formatMinuteDuration} after converting hours to minutes.\n *\n * @param {number} hours\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\", forceUnit?: boolean }} [options]\n * @param {boolean} [options.forceUnit=false] - Keep the value in hours however\n * big it gets (\"36 heures\" instead of \"1 jour et 12 heures\"). Ignored for a\n * fractional value, which has no single-unit spelling.\n *\n * @example\n * formatHourDuration(1.5, { lang: \"fr\" }) // \"1 heure 30 minutes\" (long, default)\n * formatHourDuration(1.5, { lang: \"fr\", format: \"compact\" }) // \"1h30\"\n * formatHourDuration(2, { lang: \"en\", format: \"compact\" }) // \"2h\"\n * formatHourDuration(36, { lang: \"fr\" }) // \"1 jour et 12 heures\"\n * formatHourDuration(36, { lang: \"fr\", forceUnit: true }) // \"36 heures\"\n */\nexport const formatHourDuration = (hours, options = {}) => {\n const { lang = getRuntimeLang(), format = \"long\", forceUnit } = options;\n if (hours === 0 || (forceUnit && Number.isInteger(hours))) {\n return formatSingleUnit(hours, \"hour\", { lang, format });\n }\n // a fractional value has no single-unit spelling, it needs its minutes\n const totalMinutes = Math.round(hours * 60);\n return formatMinuteDuration(totalMinutes, { ...options, forceUnit: false });\n};\n\n/**\n * Formats a duration expressed in seconds as a human-readable string.\n * \"long\", \"short\", \"narrow\" delegate to Intl.DurationFormat.\n * \"compact\" uses our own symbol-based notation.\n *\n * @param {number} seconds\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\", forceUnit?: boolean }} [options]\n * @param {boolean} [options.forceUnit=false] - Keep the value in seconds\n * however big it gets (\"90 000 secondes\" instead of \"1 jour et 1 heure\").\n *\n * @example\n * formatSecondDuration(90, { lang: \"fr\" }) // \"1 minute 30 secondes\" (long, default)\n * formatSecondDuration(90, { lang: \"fr\", format: \"short\" }) // \"1 min. et 30 s.\" (Intl short)\n * formatSecondDuration(90, { lang: \"fr\", format: \"narrow\" }) // \"1min 30s\" (Intl narrow)\n * formatSecondDuration(90, { lang: \"fr\", format: \"compact\" }) // \"1m30s\" (custom)\n * formatSecondDuration(45, { lang: \"en\", format: \"compact\" }) // \"45s\"\n */\nexport const formatSecondDuration = (\n seconds,\n { lang = getRuntimeLang(), format = \"long\", forceUnit = false } = {},\n) => {\n if (seconds < 0) {\n // the d/h/m/s split below only holds for a positive value; formatting the\n // magnitude and putting the sign back is the only reading that works\n return `-${formatSecondDuration(-seconds, { lang, format, forceUnit })}`;\n }\n if (forceUnit || seconds === 0) {\n return formatSingleUnit(seconds, \"second\", { lang, format });\n }\n const totalHours = Math.floor(seconds / 3600);\n const d = Math.floor(totalHours / 24);\n const h = totalHours % 24;\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n if (format !== \"compact\" && typeof Intl.DurationFormat !== \"undefined\") {\n const fmt = memoIntl(\"DurationFormat\", lang, { style: format });\n const duration = {};\n if (d > 0) duration.days = d;\n if (h > 0) duration.hours = h;\n if (m > 0) duration.minutes = m;\n if (s > 0 || (d === 0 && h === 0 && m === 0)) duration.seconds = s;\n return fmt.format(duration);\n }\n // compact: \"1d1h30m45s\", \"1h30m45s\", \"1m30s\", \"45s\"\n const dSym = humanizeI18n(\"time.duration.day_symbol\", undefined, { lang });\n const hSym = humanizeI18n(\"time.duration.hour_symbol\", undefined, { lang });\n const mSym = humanizeI18n(\"time.duration.minute_symbol\", undefined, { lang });\n const sSym = humanizeI18n(\"time.duration.second_symbol\", undefined, { lang });\n const parts = [];\n // h/m/s are bounded by construction (never need grouping); d can be\n // arbitrarily large for a long duration.\n if (d > 0) parts.push(`${formatCompactNumber(d, lang)}${dSym}`);\n if (h > 0) parts.push(`${h}${hSym}`);\n if (m > 0) parts.push(`${m}${mSym}`);\n if (s > 0 || parts.length === 0) parts.push(`${s}${sSym}`);\n return parts.join(\"\");\n};\n\n/**\n * Formats a duration object as a human-readable string.\n * Reads the parts directly — no conversion to seconds — so years/months/days\n * are preserved as-is and non-numeric mid-edit values (e.g. \"2a\") are rendered\n * with their unit symbol rather than being stringified.\n *\n * @param {string|number|{ years?: any, months?: any, weeks?: any, days?: any,\n * hours?: any, minutes?: any, seconds?: any, milliseconds?: any }} duration -\n * A string goes through {@link parseDuration} (\"PT1H30M\", \"1h30\"), a number\n * is read as seconds. Each unit is written with the value it carries: 90\n * minutes reads \"90 minutes\", never \"1 heure 30\" — the variants that\n * promote a count into bigger units are {@link formatMinuteDuration},\n * {@link formatHourDuration} and {@link formatSecondDuration}.\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\" }} [options]\n *\n * @example\n * formatDuration({ hours: 2, minutes: 15 }, { lang: \"fr\" }) // \"2 heures 15 minutes\" (long, default)\n * formatDuration({ hours: 2, minutes: 15 }, { lang: \"fr\", format: \"short\" }) // \"2 h et 15 min\" (Intl short)\n * formatDuration({ hours: 2, minutes: 15 }, { lang: \"fr\", format: \"narrow\" }) // \"2h 15min\" (Intl narrow)\n * formatDuration({ hours: 2, minutes: 15 }, { lang: \"fr\", format: \"compact\" }) // \"2h15\" (custom, no minute symbol)\n * formatDuration({ minutes: 45 }, { lang: \"fr\", format: \"compact\" }) // \"45min\"\n * formatDuration({ hours: 0, minutes: 0 }, { lang: \"fr\" }) // \"0 minute\"\n * formatDuration({ hours: \"2a\", minutes: \"15\" }, { lang: \"fr\", format: \"compact\" }) // \"2ah15\"\n */\nexport const formatDuration = (\n duration,\n { lang = getRuntimeLang(), format = \"long\" } = {},\n) => {\n if (typeof duration === \"string\") {\n duration = parseDuration(duration) ?? {};\n } else if (typeof duration === \"number\") {\n duration = { seconds: duration };\n }\n const has = (key) => duration[key] !== undefined && duration[key] !== null;\n\n // \"long\" and \"narrow\" delegate to Intl.DurationFormat when available and all values are numeric.\n //\n // \"short\" always uses our own compact symbols (\"2h15\", \"45min\") because:\n // 1. We omit the minute symbol when hours are also present (\"2h15\" not \"2h 15 min\"),\n // which Intl.DurationFormat style:\"narrow\" does not do.\n // 2. Non-numeric mid-edit values (e.g. { hours: \"2a\" }) must render as-is with their\n // unit symbol — Intl.DurationFormat only accepts integers.\n if (format !== \"compact\" && typeof Intl.DurationFormat !== \"undefined\") {\n const intlDuration = {};\n let allNumeric = true;\n let hasNegative = false;\n let hasPositive = false;\n for (const key of [\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n ]) {\n if (!has(key)) {\n continue;\n }\n const n = Number(duration[key]);\n if (!isFinite(n)) {\n allNumeric = false;\n break;\n }\n if (n < 0) {\n hasNegative = true;\n } else if (n > 0) {\n hasPositive = true;\n }\n intlDuration[key] = n;\n }\n // Temporal requires all components to share the same sign.\n // Mixed-sign values (e.g. { hours: -1, minutes: 15 }) throw a RangeError.\n if (\n allNumeric &&\n Object.keys(intlDuration).length > 0 &&\n !(hasNegative && hasPositive)\n ) {\n if (!hasNegative && !hasPositive) {\n return formatSingleUnit(0, smallestUnitOf(intlDuration), {\n lang,\n format,\n });\n }\n return memoIntl(\"DurationFormat\", lang, { style: format }).format(\n intlDuration,\n );\n }\n // Fall through to compact notation when values are non-numeric or mixed-sign\n }\n\n // A component explicitly present but numerically zero (e.g. the demo's own\n // { hours: 0, minutes: 5 }) conveys no information for a genuine duration\n // — same convention formatMinuteDuration/formatSecondDuration already\n // follow (checking h > 0/m > 0, not merely \"was a value passed\") — so\n // it's dropped here too, regardless of whether the caller included the\n // key at all. Non-numeric mid-edit values (e.g. \"2a\") still count as\n // present — Number(\"2a\") is NaN, never === 0 — so those keep rendering\n // as-is with their own unit symbol. When every component is zero there is\n // nothing left to drop, so the zero itself is rendered — see below.\n const hasNonZero = (key) => has(key) && Number(duration[key]) !== 0;\n\n const sym = (key) =>\n humanizeI18n(`time.duration.${key}_symbol`, undefined, { lang });\n const parts = [];\n\n if (hasNonZero(\"years\")) {\n parts.push(`${formatCompactNumber(duration.years, lang)}${sym(\"year\")}`);\n }\n if (hasNonZero(\"months\")) {\n parts.push(`${formatCompactNumber(duration.months, lang)}${sym(\"month\")}`);\n }\n if (hasNonZero(\"weeks\")) {\n parts.push(`${formatCompactNumber(duration.weeks, lang)}${sym(\"week\")}`);\n }\n if (hasNonZero(\"days\")) {\n parts.push(`${formatCompactNumber(duration.days, lang)}${sym(\"day\")}`);\n }\n\n // Hours + minutes: when both present, pad minutes to 2 digits after the h\n // symbol — minutes stays a plain 2-digit pad (it's always 0-59 by\n // convention), only hours goes through grouping.\n const hSym = sym(\"hour\");\n const mSym = sym(\"minute\");\n if (hasNonZero(\"hours\") && hasNonZero(\"minutes\")) {\n parts.push(\n `${formatCompactNumber(duration.hours, lang)}${hSym}${String(duration.minutes).padStart(2, \"0\")}`,\n );\n } else if (hasNonZero(\"hours\")) {\n parts.push(`${formatCompactNumber(duration.hours, lang)}${hSym}`);\n } else if (hasNonZero(\"minutes\")) {\n parts.push(`${formatCompactNumber(duration.minutes, lang)}${mSym}`);\n }\n\n if (hasNonZero(\"seconds\")) {\n parts.push(\n `${formatCompactNumber(duration.seconds, lang)}${sym(\"second\")}`,\n );\n }\n if (hasNonZero(\"milliseconds\")) {\n parts.push(\n `${formatCompactNumber(duration.milliseconds, lang)}${sym(\"millisecond\")}`,\n );\n }\n if (parts.length > 0) {\n return parts.join(\"\");\n }\n // everything was zero: say so in the smallest unit the caller mentioned,\n // rather than a bare \"0\" whose unit the reader has to guess\n const smallestUnit = smallestUnitOf(duration);\n return smallestUnit ? `0${sym(smallestUnit)}` : \"0\";\n};\n\nconst UNIT_KEYS = [\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\nconst smallestUnitOf = (duration) => {\n for (const key of [...UNIT_KEYS].reverse()) {\n if (duration[key] !== undefined && duration[key] !== null) {\n return key.slice(0, -1); // \"seconds\" -> \"second\"\n }\n }\n return null;\n};\n\n/**\n * Formats a date relative to now: \"il y a 3 jours\", \"dans 2 heures\", etc.\n */\nconst formatTimeAgo = (\n date,\n { lang = getRuntimeLang(), now = new Date(), bare, format = \"long\" } = {},\n) => {\n const rtf = memoIntl(\"RelativeTimeFormat\", lang, {\n numeric: \"auto\",\n style: format,\n });\n const nowMs = now instanceof Date ? now.getTime() : now;\n const diff = date.getTime() - nowMs;\n const absDiff = Math.abs(diff);\n\n let value;\n let unit;\n if (absDiff < MINUTE) {\n value = Math.round(diff / 1000);\n unit = \"second\";\n } else if (absDiff < HOUR) {\n value = Math.round(diff / MINUTE);\n unit = \"minute\";\n } else if (absDiff < DAY) {\n value = Math.round(diff / HOUR);\n unit = \"hour\";\n } else if (absDiff < 7 * DAY) {\n value = Math.round(diff / DAY);\n unit = \"day\";\n } else if (absDiff < 30 * DAY) {\n value = Math.round(diff / (7 * DAY));\n unit = \"week\";\n } else if (absDiff < YEAR) {\n value = Math.round(diff / (30 * DAY));\n unit = \"month\";\n } else {\n value = Math.round(diff / YEAR);\n unit = \"year\";\n }\n\n if (!bare || value >= 0) {\n return rtf.format(value, unit);\n }\n // Drop the leading past-tense literal (\"il y a \", \"ago \") — keep only integer + unit.\n const parts = rtf.formatToParts(value, unit);\n const integerIndex = parts.findIndex((p) => p.type === \"integer\");\n return parts\n .slice(integerIndex)\n .map((p) => p.value)\n .join(\"\")\n .trim();\n};\n\n/**\n * Formats a timed event with an optional duration window.\n *\n * States:\n * - Future (now < start) → \"dans 1 heure et 30 minutes\", \"demain à 15 h\", …\n * - Ongoing (start ≤ now < start+dur) → \"En cours\"\n * - Past (now ≥ start+dur) → relative (\"il y a 2 heures\", …)\n *\n * @param {Date|number} start Start of the event (Date or ms timestamp)\n * @param {number} durationMs Duration in milliseconds (0 = instant event)\n * @param {{ lang?: string, now?: Date|number, bare?: boolean, format?: \"long\"|\"short\"|\"narrow\" }} options\n *\n * @example\n * // 90 min from now\n * formatTimeRelative(Date.now() + 90 * 60_000, 0, { lang: \"fr\" }) // \"dans 1 heure et 30 minutes\"\n * // currently happening (30 min window)\n * formatTimeRelative(Date.now() - 5 * 60_000, 30 * 60_000, { lang: \"fr\" }) // \"En cours\"\n * // ended 2 hours ago\n * formatTimeRelative(Date.now() - 3 * 3_600_000, 3_600_000, { lang: \"fr\" }) // \"il y a 2 heures\"\n * // short format\n * formatTimeRelative(Date.now() - 3 * 3_600_000, 0, { lang: \"fr\", format: \"short\" }) // \"il y a 3 h\"\n */\nexport const formatTimeRelative = (\n start,\n durationMs = 0,\n { lang = getRuntimeLang(), now = new Date(), bare, format = \"long\" } = {},\n) => {\n const startMs = start instanceof Date ? start.getTime() : Number(start);\n const endMs = startMs + durationMs;\n const nowMs = now instanceof Date ? now.getTime() : Number(now);\n\n if (nowMs >= startMs && nowMs < endMs) {\n return getOngoingText(lang);\n }\n if (nowMs >= endMs) {\n const refDate = endMs > startMs ? new Date(endMs) : new Date(startMs);\n return formatTimeAgo(refDate, { lang, now, bare, format });\n }\n\n const diff = startMs - nowMs;\n return formatFuture(new Date(startMs), diff, { lang, now, format });\n};\n\nconst formatFuture = (date, diff, { lang, now, format = \"long\" }) => {\n const rtf = memoIntl(\"RelativeTimeFormat\", lang, {\n numeric: \"auto\",\n style: format,\n });\n const nowDate = now instanceof Date ? now : new Date(now);\n\n // < 1 min\n if (diff < MINUTE) {\n return getLessThanMinuteText(lang);\n }\n\n // < 1 hour → \"dans X minutes\"\n if (diff < HOUR) {\n return rtf.format(Math.ceil(diff / MINUTE), \"minute\");\n }\n\n // 1h to 2h → \"dans 1 heure 30\"\n if (diff < 2 * HOUR) {\n const hours = Math.floor(diff / HOUR);\n const minutes = Math.round((diff % HOUR) / MINUTE);\n if (minutes === 0) {\n return rtf.format(hours, \"hour\");\n }\n const duration = formatMinuteDuration(hours * 60 + minutes, {\n lang,\n format,\n });\n const template = humanizeI18n(\"time.in_duration\", undefined, { lang });\n if (template !== \"time.in_duration\") {\n return template.replace(\"[duration]\", duration);\n }\n return `in ${duration}`;\n }\n\n // < 6h → \"dans X heures\" (precise enough, skip tomorrow label)\n if (diff < 6 * HOUR) {\n return rtf.format(Math.round(diff / HOUR), \"hour\");\n }\n\n // Tomorrow (calendar day) and within ~30h → \"demain à 15h\"\n const tomorrowDate = new Date(nowDate);\n tomorrowDate.setDate(tomorrowDate.getDate() + 1);\n if (diff < 30 * HOUR && toLocalDayKey(date) === toLocalDayKey(tomorrowDate)) {\n return formatTomorrowAt(date, lang);\n }\n\n // < 24h → \"dans X heures\"\n if (diff < DAY) {\n return rtf.format(Math.round(diff / HOUR), \"hour\");\n }\n\n // < 7 days → \"dans X jours\"\n if (diff < 7 * DAY) {\n return rtf.format(Math.round(diff / DAY), \"day\");\n }\n\n // < 30 days → \"dans X semaines\"\n if (diff < 30 * DAY) {\n return rtf.format(Math.round(diff / (7 * DAY)), \"week\");\n }\n\n // months (Intl handles \"le mois prochain\" when value = 1)\n if (diff < YEAR) {\n return rtf.format(Math.round(diff / (30 * DAY)), \"month\");\n }\n\n return rtf.format(Math.round(diff / YEAR), \"year\");\n};\n\nconst formatTomorrowAt = (date, lang) => {\n const dayLabel = memoIntl(\"RelativeTimeFormat\", lang, {\n numeric: \"auto\",\n }).format(1, \"day\");\n const hasMinutes = date.getMinutes() !== 0;\n const timeLabel = memoIntl(\"DateTimeFormat\", lang, {\n hour: \"numeric\",\n ...(hasMinutes ? { minute: \"2-digit\" } : {}),\n }).format(date);\n const atTemplate = humanizeI18n(\"time.tomorrow_at\", undefined, {\n lang,\n });\n // atTemplate is e.g. \"[day] à [time]\" — replace placeholders\n if (atTemplate !== \"time.tomorrow_at\") {\n return atTemplate.replace(\"[day]\", dayLabel).replace(\"[time]\", timeLabel);\n }\n // fallback: concatenate with a space\n return `${dayLabel} ${timeLabel}`;\n};\n\nconst getLessThanMinuteText = (lang) => {\n return humanizeI18n(\"time.less_than_minute\", undefined, { lang });\n};\n\nconst getOngoingText = (lang) => {\n return humanizeI18n(\"time.ongoing\", undefined, { lang });\n};\n\nconst MINUTE = 60_000;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst YEAR = 365 * DAY;\n\n// Compares calendar days in local time (ignores the clock time)\nconst toLocalDayKey = (date) => {\n return `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n};\n\n/**\n * Coerces what `<Time>` accepts as a value — a Date, a ms timestamp, a\n * parseable string — into a Date, or null when it cannot. `parseString`\n * lets a caller claim the string forms it recognizes (\"HH:MM\" for a\n * time-of-day, \"YYYY-MM\" for a month…) before the generic ones apply.\n */\nexport const toDate = (value, parseString) => {\n if (value instanceof Date) {\n return value;\n }\n if (typeof value === \"number\") {\n return new Date(value);\n }\n if (typeof value === \"string\") {\n if (parseString) {\n return parseString(value);\n }\n // \"YYYY-MM-DD\" — use local midnight to avoid UTC shift\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n const d = new Date(`${value}T00:00:00`);\n return isNaN(d.getTime()) ? null : d;\n }\n // ISO / other parseable strings\n const d = new Date(value);\n return isNaN(d.getTime()) ? null : d;\n }\n return null;\n};\n\nexport const toTimeOfDay = (value) => {\n return toDate(value, (string) => {\n if (/^\\d{2}:\\d{2}(?::\\d{2})?$/.test(string)) {\n const d = new Date(`1970-01-01T${string}`);\n return isNaN(d.getTime()) ? null : d;\n }\n return null;\n });\n};\n\n// Reads the wall-clock hour/minute of an instant — in the runtime's own zone\n// by default, in `timeZone` when given. A Date only carries local getters, so\n// another zone's clock has to come out of Intl parts (hourCycle h23 so\n// midnight reads hour 0, never 24).\nconst readClock = (date, timeZone) => {\n if (!timeZone) {\n return { hours: date.getHours(), minutes: date.getMinutes() };\n }\n const parts = memoIntl(\"DateTimeFormat\", \"en\", {\n timeZone,\n hour: \"numeric\",\n minute: \"numeric\",\n hourCycle: \"h23\",\n }).formatToParts(date);\n let hours = 0;\n let minutes = 0;\n for (const part of parts) {\n if (part.type === \"hour\") {\n hours = Number(part.value);\n } else if (part.type === \"minute\") {\n minutes = Number(part.value);\n }\n }\n return { hours, minutes };\n};\n\n// Reads the calendar year of an instant in `timeZone` (the runtime's own zone\n// when not given) — what formatDay's `year: \"auto\"` compares.\nconst readYear = (date, timeZone) => {\n if (!timeZone) {\n return date.getFullYear();\n }\n return Number(\n memoIntl(\"DateTimeFormat\", \"en\", { timeZone, year: \"numeric\" }).format(\n date,\n ),\n );\n};\n",
79
+ "/**\n * Locale-aware time formatting: days, months, times of day, spans and\n * durations, worded the way a reader of that language expects them.\n *\n * It lives in a package with no frontend of its own so that a server and a\n * browser word the same instant identically — a notification sentence and the\n * card it points at must read the same date the same way. Nothing here touches\n * the DOM, and nothing it imports may.\n *\n * `lang` defaults to the runtime language source (see ../i18n/runtime_lang.js):\n * the runtime's own locale, or whatever a browser bundle installs in its place\n * (@jsenv/navi points it at the user's live language preference, so reading it\n * during a render subscribes the component). The words around the numbers come\n * from humanizeI18n, their order and shape from Intl.\n *\n * Its neighbour ./time.js writes durations too, in English, for CLI\n * output where readability beats precision — these write for the reader of an\n * app, in their language.\n *\n * All functions accept an optional `{ now }` parameter for testability.\n */\n\nimport { parseDuration } from \"@jsenv/validity\";\n\nimport { humanizeI18n } from \"../i18n/humanize_i18n.js\";\nimport { getRuntimeLang } from \"../i18n/runtime_lang.js\";\n\n// Constructing an Intl formatter dominates the cost of a call (~19µs vs\n// ~0.4µs to format with a kept instance, node 26 on an M-series Mac) and\n// these formatters run in render loops — a card easily writes half a dozen\n// per render — so every instance is memoized by (constructor, lang,\n// options). lang and each option value come from small closed sets, so the\n// cache stays bounded.\nconst intlCache = new Map();\nconst memoIntl = (constructorName, lang, options) => {\n let key = `${constructorName}|${Array.isArray(lang) ? lang.join() : lang}`;\n if (options) {\n for (const optionName of Object.keys(options)) {\n key += `|${optionName}:${options[optionName]}`;\n }\n }\n const cached = intlCache.get(key);\n if (cached) {\n return cached;\n }\n const formatter = new Intl[constructorName](lang, options);\n intlCache.set(key, formatter);\n return formatter;\n};\n\n// Our own compact/custom duration notation interpolates raw numbers\n// directly (unlike Intl.DurationFormat, which groups thousands on its own,\n// e.g. \"5 400 secondes\") — this keeps that consistent without reimplementing\n// locale-aware grouping. Falls back to the raw value as-is for a\n// non-numeric mid-edit value (e.g. \"2a\"), which Intl.NumberFormat can't\n// format anyway.\nconst formatCompactNumber = (value, lang) => {\n const n = Number(value);\n return Number.isFinite(n) ? memoIntl(\"NumberFormat\", lang).format(n) : value;\n};\n\n/**\n * Formats a date as a human-readable day string.\n *\n * @param {Date} date\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"numeric\"|{ weekday?: \"long\"|\"short\"|\"narrow\"|false, day?: boolean, month?: \"long\"|\"short\"|\"narrow\"|\"numeric\"|false }, year?: boolean|\"auto\", now?: Date, timeZone?: string }} [options]\n * A string spells the weekday and the month the same way. An object spells\n * them apart, each key defaulting to `\"long\"`: a narrow card usually wants\n * the weekday whole (it is the reading anchor) and the month abbreviated (it\n * is where the characters are — \"septembre\" is 9 of them, \"sept.\" reads the\n * same). `\"numeric\"` stays a string-only spelling: it drops the weekday and\n * writes the whole date in digits.\n *\n * In the object form, `false` drops a part: `{ day: false, month: false }`\n * writes the weekday alone (\"mardi\"), `{ month: false }` the weekday and\n * day-of-month (\"mardi 18\"), `{ weekday: false }` the date without its\n * anchor (\"18 juillet\"). At least one part must stay — with all three\n * dropped, Intl falls back to its own default date spelling.\n * @param {boolean|\"auto\"} [options.year=true]\n * Whether the `\"numeric\"` spelling writes the year: `false` drops it\n * (\"30/07\", the day/month order still following the locale), `\"auto\"` drops\n * it only when the date is in the current year (`now`'s year). The spelled\n * formats never write the year, so they ignore it.\n * @param {string} [options.timeZone]\n * IANA zone the instant is worded in (\"Europe/Paris\"); defaults to the\n * runtime's own zone. The case is a server wording an instant for readers\n * in a known zone — a game at 00:30 Paris must not be dated the previous\n * day just because the process clock runs on UTC. `year: \"auto\"` reads both\n * years in that zone too.\n *\n * @example\n * formatDay(new Date(), { lang: \"fr\" }) // \"lundi 11 mai\" (long, default)\n * formatDay(new Date(), { lang: \"fr\", format: \"short\" }) // \"lun. 11 mai\"\n * formatDay(new Date(), { lang: \"fr\", format: \"narrow\" }) // \"lu. 11 mai\"\n * formatDay(new Date(), { lang: \"fr\", format: \"numeric\" }) // \"11/05/2026\"\n * formatDay(new Date(), { lang: \"fr\", format: \"numeric\", year: false }) // \"11/05\"\n * formatDay(new Date(), { lang: \"fr\", format: { weekday: \"long\", month: \"short\" } }) // \"mercredi 2 sept.\"\n * formatDay(new Date(), { lang: \"fr\", format: { day: false, month: false } }) // \"mercredi\"\n * formatDay(new Date(), { lang: \"fr\", format: { month: false } }) // \"mercredi 2\"\n */\nexport const formatDay = (\n date,\n {\n lang = getRuntimeLang(),\n format = \"long\",\n year = true,\n now = new Date(),\n timeZone,\n } = {},\n) => {\n if (format === \"numeric\") {\n const yearWritten =\n year === \"auto\"\n ? readYear(date, timeZone) !== readYear(now, timeZone)\n : year !== false;\n return memoIntl(\"DateTimeFormat\", lang, {\n day: \"2-digit\",\n month: \"2-digit\",\n ...(yearWritten ? { year: \"numeric\" } : {}),\n timeZone,\n }).format(date);\n }\n const {\n weekday = \"long\",\n day = true,\n month = \"long\",\n } = typeof format === \"string\" ? { weekday: format, month: format } : format;\n // a `false` part is omitted, not passed: Intl rejects false as a value\n return memoIntl(\"DateTimeFormat\", lang, {\n ...(weekday === false ? {} : { weekday }),\n ...(day === false ? {} : { day: \"numeric\" }),\n ...(month === false ? {} : { month }),\n timeZone,\n }).format(date);\n};\n\n/**\n * Returns the day offset relative to now: -1 (yesterday), 0 (today), 1 (tomorrow), or the\n * actual number of days difference for any other date.\n */\nexport const getRelativeDay = (date, { now = new Date() } = {}) => {\n const dateKey = toLocalDayKey(date);\n\n const yesterdayDate = new Date(now);\n yesterdayDate.setDate(yesterdayDate.getDate() - 1);\n if (dateKey === toLocalDayKey(yesterdayDate)) {\n return -1;\n }\n\n if (dateKey === toLocalDayKey(now)) {\n return 0;\n }\n\n const tomorrowDate = new Date(now);\n tomorrowDate.setDate(tomorrowDate.getDate() + 1);\n if (dateKey === toLocalDayKey(tomorrowDate)) {\n return 1;\n }\n\n const nowMidnight = new Date(now);\n nowMidnight.setHours(0, 0, 0, 0);\n const dateMidnight = new Date(date);\n dateMidnight.setHours(0, 0, 0, 0);\n return Math.round((dateMidnight - nowMidnight) / DAY);\n};\n\n/**\n * Formats a relative day offset (-1/0/1) as a locale-aware label: \"hier\", \"aujourd'hui\", \"demain\".\n */\n// ── Placeholder helpers ────────────────────────────────────────────────────\n// Derive locale-aware format placeholders from Intl.DateTimeFormat.formatToParts\n// using a sentinel date whose parts are unambiguous (day=28, month=11, year=9999).\n// Per-language token tables cover the most common locales; unknown langs fall\n// back to \"dd/mm/yyyy\".\n\nconst SENTINEL_DATE = new Date(9999, 10, 28); // 28 Nov 9999 — day≠month, both 2-digit\n\nconst getToken = (key, lang) =>\n humanizeI18n(`time.placeholder.${key}`, undefined, { lang });\n\nexport const formatDatePlaceholder = ({ lang = getRuntimeLang() } = {}) => {\n const parts = memoIntl(\"DateTimeFormat\", lang, {\n day: \"numeric\",\n month: \"numeric\",\n year: \"numeric\",\n }).formatToParts(SENTINEL_DATE);\n return parts\n .map((p) => {\n if (p.type === \"day\") {\n return getToken(\"day\", lang);\n }\n if (p.type === \"month\") {\n return getToken(\"month\", lang);\n }\n if (p.type === \"year\") {\n return getToken(\"year\", lang);\n }\n return p.value;\n })\n .join(\"\");\n};\n\nexport const formatMonthPlaceholder = ({\n lang = getRuntimeLang(),\n format = \"long\",\n} = {}) => {\n const parts = memoIntl(\"DateTimeFormat\", lang, {\n month: format,\n year: \"numeric\",\n }).formatToParts(SENTINEL_DATE);\n return parts\n .map((p) => {\n if (p.type === \"month\") {\n // Text month formats (long/short/narrow) → dash; numeric → token\n return format === \"numeric\" ? \"–\" : getToken(\"month\", lang);\n }\n if (p.type === \"year\") {\n return getToken(\"year\", lang);\n }\n return p.value;\n })\n .join(\"\");\n};\n\nexport const formatWeekPlaceholder = ({ lang = getRuntimeLang() } = {}) => {\n return `${getToken(\"week\", lang)} xx / ${getToken(lang)}`;\n};\n\nexport const formatDatetimePlaceholder = ({\n lang = getRuntimeLang(),\n format = \"long\",\n} = {}) => {\n const intlOptions =\n format === \"long\"\n ? {\n weekday: \"short\",\n day: \"numeric\",\n month: \"long\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n }\n : format === \"narrow\"\n ? {\n day: \"2-digit\",\n month: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n }\n : {\n day: \"numeric\",\n month: \"short\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n const parts = memoIntl(\"DateTimeFormat\", lang, intlOptions).formatToParts(\n SENTINEL_DATE,\n );\n let skipNext = false;\n return parts\n .map((p) => {\n if (p.type === \"weekday\") {\n skipNext = true;\n return \"\";\n }\n if (p.type === \"literal\" && skipNext) {\n skipNext = false;\n return \"\";\n }\n skipNext = false;\n if (p.type === \"day\") {\n return getToken(\"day\", lang);\n }\n if (p.type === \"month\") {\n return getToken(\"month\", lang);\n }\n if (p.type === \"hour\") {\n return getToken(\"hour\", lang);\n }\n if (p.type === \"minute\") {\n return getToken(\"minute\", lang);\n }\n return p.value;\n })\n .join(\"\")\n .trim();\n};\n\n// ── End placeholder helpers ────────────────────────────────────────────────\n\nexport const formatDayRelative = (offset, { lang = getRuntimeLang() } = {}) => {\n return memoIntl(\"RelativeTimeFormat\", lang, {\n numeric: \"auto\",\n }).format(offset, \"day\");\n};\n\nexport const formatMonth = (\n date,\n { lang = getRuntimeLang(), format = \"long\", timeZone } = {},\n) => {\n return memoIntl(\"DateTimeFormat\", lang, {\n month: format, // \"long\", \"short\", or \"narrow\"\n year: \"numeric\",\n timeZone,\n }).format(date);\n};\n\n/**\n * Formats a date as \"lun. 11 mai, 14:30\" (long), \"11 mai, 14:30\" (short), \"11/05, 14:30\" (narrow).\n * `timeZone` words the instant in that IANA zone instead of the runtime's own.\n */\nexport const formatDatetime = (\n date,\n { lang = getRuntimeLang(), format = \"long\", timeZone } = {},\n) => {\n if (format === \"long\") {\n return memoIntl(\"DateTimeFormat\", lang, {\n weekday: \"short\",\n day: \"numeric\",\n month: \"long\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone,\n }).format(date);\n }\n if (format === \"narrow\") {\n return memoIntl(\"DateTimeFormat\", lang, {\n day: \"2-digit\",\n month: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone,\n }).format(date);\n }\n // \"short\": no weekday\n return memoIntl(\"DateTimeFormat\", lang, {\n day: \"numeric\",\n month: \"short\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone,\n }).format(date);\n};\n\n/**\n * Formats a date as \"14:30\".\n * `timeZone` words the instant in that IANA zone instead of the runtime's own.\n */\nexport const formatTime = (\n date,\n { lang = getRuntimeLang(), timeZone } = {},\n) => {\n return memoIntl(\"DateTimeFormat\", lang, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone,\n }).format(date);\n};\n\n/**\n * Formats a time-of-day the way `<Time type=\"time\">` writes it, as a plain\n * string — for the places a component cannot go (a `title` attribute, a push\n * notification).\n *\n * @param {Date|number|string} value\n * A Date, a ms timestamp, or an \"HH:MM\"/\"HH:MM:SS\" string. Only the clock\n * time is read. A nullish value renders the \"--:--\" placeholder; an\n * unparseable one is returned as-is, stringified.\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\"|\"timestring\", pad?: boolean, precision?: \"hour\"|\"minute\", timeZone?: string }} [options]\n * The options `<Time type=\"time\">` takes: `\"timestring\"` is the clock\n * \"14:30\"; the other formats write the time as a duration-shaped phrase —\n * see {@link formatMinuteDuration}'s `clockStyle` for what `pad` and\n * `precision` shape in `format=\"compact\"`.\n * @param {string} [options.timeZone]\n * IANA zone the instant's clock is read in (\"Europe/Paris\"); defaults to\n * the runtime's own zone. Only applies to a Date/timestamp — an\n * \"HH:MM\" string is already a wall-clock reading, there is nothing to\n * move to another zone, so it ignores this.\n *\n * @example\n * formatTimeOfDay(date, { lang: \"fr\" }) // \"14 heures 30\" (long, default)\n * formatTimeOfDay(date, { lang: \"fr\", format: \"timestring\" }) // \"14:30\"\n * formatTimeOfDay(date, { lang: \"fr\", format: \"compact\" }) // \"14h30\"\n * formatTimeOfDay(date, { lang: \"fr\", format: \"compact\", pad: false }) // \"8h30\", \"8h\"\n */\nexport const formatTimeOfDay = (\n value,\n {\n lang = getRuntimeLang(),\n format = \"long\",\n pad = true,\n precision = pad ? \"minute\" : \"hour\",\n timeZone,\n } = {},\n) => {\n if (value === undefined || value === null) {\n return \"--:--\";\n }\n const date = toTimeOfDay(value);\n // toDate turns a non-finite number into an Invalid Date, which is an object\n if (!date || isNaN(date.getTime())) {\n return String(value);\n }\n // An \"HH:MM\" string is a wall-clock reading, not an instant — re-reading\n // it in another zone would shift what the caller already spelled out.\n const zone = typeof value === \"string\" ? undefined : timeZone;\n if (format === \"timestring\") {\n return formatTime(date, { lang, timeZone: zone });\n }\n const { hours, minutes } = readClock(date, zone);\n const totalMinutes = hours * 60 + minutes;\n // clockStyle: this is always a time-of-day here, never a duration — keeps\n // a zero hour instead of dropping it (midnight would otherwise be\n // indistinguishable from an actual 5-minute duration), and in\n // format=\"compact\" also zero-pads a single-digit hour so \"5h30\"/\"0h05\"\n // read as \"05h30\"/\"00h05\", closer to a \"HH:MM\" clock.\n if (hours !== 0 || format !== \"long\") {\n // At midnight, short/narrow/compact keep the \"0 h\"/\"0h\" hour part —\n // \"0 h et 5 min\"/\"0h 5min\"/\"00h05\" — rather than substituting a\n // translated \"midnight\" word, which would look out of place squeezed\n // into these otherwise terse, symbol-based formats.\n return formatMinuteDuration(totalMinutes, {\n lang,\n format,\n clockStyle: true,\n pad,\n precision,\n });\n }\n // Midnight (hour 0) at format=\"long\" can't go through\n // formatMinuteDuration's own default zero-hour handling: it drops a\n // zero-valued unit entirely (by design — a real 5-minute duration should\n // print as \"5 minutes\", not \"0 hours 5 minutes\"), so \"00:05\" would\n // otherwise render identically to an actual 5-minute duration, silently\n // losing the fact that it's midnight. Every other hour keeps at least its\n // own \"N hour(s)\" wording as a hint that this is a time-of-day — only\n // hour 0 loses that hint entirely.\n const midnightWord = humanizeI18n(\"time.midnight\", undefined, { lang });\n if (midnightWord === \"time.midnight\") {\n // No \"midnight\" translation registered for this language — fall back\n // to this language's own literal \"0 heure(s)\" wording instead (still\n // better than leaking the untranslated key, or substituting an\n // English word that wouldn't grammatically match the rest of the\n // sentence in whatever language this actually is).\n return formatMinuteDuration(totalMinutes, {\n lang,\n format,\n clockStyle: true,\n });\n }\n // Swap just the \"0 heure(s)\" part of the Intl-generated duration\n // string for the translated \"midnight\" word, keeping everything else\n // (the conjunction, the minutes part) exactly as Intl would produce\n // for this locale — formatToParts tags each token with the unit it\n // belongs to, so the swap doesn't need to know the locale's own\n // grammar/word order. Only ever one hour-tagged group per call\n // (hours is always 0 or absent here), but guarded anyway in case a\n // future Intl implementation ever splits it into more parts.\n const parts = memoIntl(\"DurationFormat\", lang, {\n style: \"long\",\n hoursDisplay: \"always\",\n }).formatToParts({ hours: 0, minutes });\n let hourGroupReplaced = false;\n return parts\n .map((part) => {\n if (part.unit !== \"hour\") {\n return part.value;\n }\n if (hourGroupReplaced) {\n return \"\";\n }\n hourGroupReplaced = true;\n return midnightWord;\n })\n .join(\"\");\n};\n\n/**\n * Formats a span between two times-of-day the way `<TimeRange>` writes it, as\n * a plain string — \"8h–10h\", \"11h30–14h00\", \"14 heures 30 – 16 heures\".\n *\n * Applies `<TimeRange>`'s shared-precision rule: the two bounds are written\n * to the same precision, decided by the pair — any bound with minutes gives\n * minutes to both, zero included (\"11h30–14h00\", never \"11h30–14h\").\n *\n * @param {Date|number|string} from\n * @param {Date|number|string} to\n * Each bound accepts what {@link formatTimeOfDay} accepts; a nullish bound\n * renders its \"--:--\" placeholder.\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\"|\"timestring\", pad?: boolean, precision?: \"hour\"|\"minute\", separator?: string, timeZone?: string }} [options]\n * `precision` writes both bounds at this precision instead of the one the\n * pair calls for. `separator` defaults to the `\"time.range_separator\"`\n * registered text (an en dash), tightened against both bounds in\n * `format=\"compact\"` —\n * where the span is one short token — and spaced out otherwise. `timeZone`\n * reads both bounds' clocks in that IANA zone — see {@link formatTimeOfDay}.\n *\n * @example\n * formatTimeRange(\"08:00\", \"10:00\", { lang: \"fr\", format: \"compact\", pad: false }) // \"8h–10h\"\n * formatTimeRange(\"11:30\", \"14:00\", { lang: \"fr\", format: \"compact\", pad: false }) // \"11h30–14h00\"\n */\nexport const formatTimeRange = (\n from,\n to,\n {\n lang = getRuntimeLang(),\n format = \"long\",\n pad = true,\n timeZone,\n precision = resolveTimeRangePrecision(from, to, { format, pad, timeZone }),\n separator = humanizeI18n(\"time.range_separator\", undefined, { lang }),\n } = {},\n) => {\n const boundOptions = { lang, format, pad, precision, timeZone };\n const fromText = formatTimeOfDay(from, boundOptions);\n const toText = formatTimeOfDay(to, boundOptions);\n if (format === \"compact\") {\n return `${fromText}${separator}${toText}`;\n }\n return `${fromText} ${separator} ${toText}`;\n};\n\n// The two bounds of a span are written to the same precision, decided by the\n// pair: \"8h–10h\" as long as neither has minutes, \"11h30–14h00\" as soon as one\n// of them does. Only ever a question for the unpadded compact clock — the\n// padded one always writes \"08h00\", and the spelled-out formats name their\n// units, leaving no shape for the eye to trip on.\nexport const resolveTimeRangePrecision = (\n from,\n to,\n { format, pad, timeZone },\n) => {\n if (pad || format !== \"compact\") {\n return \"minute\";\n }\n const hasMinutes = (value) => {\n const date = toTimeOfDay(value);\n if (!date || isNaN(date.getTime())) {\n return false;\n }\n // Same rule as formatTimeOfDay: a string is a wall-clock reading, only\n // an instant is re-read in `timeZone`.\n const zone = typeof value === \"string\" ? undefined : timeZone;\n return readClock(date, zone).minutes !== 0;\n };\n return hasMinutes(from) || hasMinutes(to) ? \"minute\" : \"hour\";\n};\n\n/**\n * Formats a duration expressed in minutes as a human-readable string.\n * \"long\", \"short\", \"narrow\" delegate to Intl.DurationFormat.\n * \"compact\" uses our own notation that omits the minute symbol when hours are present.\n *\n * @param {number} minutes\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\", clockStyle?: boolean, pad?: boolean, precision?: \"hour\"|\"minute\", forceUnit?: boolean }} [options]\n * @param {boolean} [options.forceUnit=false] - Keep the value in minutes\n * however big it gets (\"2160 minutes\" instead of \"1 jour et 12 heures\").\n * Past 24 hours the default promotes to days, which reads better but hides\n * the unit the caller works in.\n * @param {boolean} [options.clockStyle=false] - Set this when `minutes`\n * represents a time-of-day rather than a real duration (used by\n * `<Time type=\"time\">`, see time.jsx's own TimeTime). A clock's \"0\" is a\n * meaningful hour rather than \"no hours\": a zero-hours component is\n * normally dropped entirely (a real 5-minute duration should print as\n * \"5 minutes\", not \"0 hours 5 minutes\"); this keeps it instead (e.g.\n * \"0 h et 5 min\"/\"0h 5min\"/\"00h05\") so midnight doesn't collapse to\n * something indistinguishable from an actual 5-minute duration.\n * Must not be set for plain duration formatting.\n * @param {boolean} [options.pad=true] - Zero-pad the hour to 2 digits\n * (\"08h30\" rather than \"8h30\"). `clockStyle` + `format: \"compact\"` only.\n * @param {\"hour\"|\"minute\"} [options.precision=\"minute\"] - Whether a zero\n * minute is written: `\"minute\"` keeps it (\"10h00\"), `\"hour\"` drops it\n * (\"10h\"). `clockStyle` + `format: \"compact\"` only.\n *\n * These last two are the clock's two independent shape choices, and only\n * `format: \"compact\"` has to make them — the spelled-out formats put their\n * units in words, so \"10 heures\"/\"10 h\"/\"10h\" already reads as a time of\n * day whatever the padding, and they always write the hour bare and drop a\n * zero minute. Padded + minute (\"08h00\") is the column shape, where every\n * row occupies the same width; bare + hour (\"8h\", \"8h30\") is the shape a\n * person speaks. Bare + minute (\"8h00\") only ever makes sense next to a\n * partner that has minutes of its own — see `<TimeRange>`, which is the\n * only thing that asks for it.\n *\n * @example\n * formatMinuteDuration(90, { lang: \"fr\" }) // \"1 heure 30 minutes\" (long, default)\n * formatMinuteDuration(90, { lang: \"fr\", format: \"short\" }) // \"1 h et 30 min\" (Intl short)\n * formatMinuteDuration(90, { lang: \"fr\", format: \"narrow\" }) // \"1h 30min\" (Intl narrow)\n * formatMinuteDuration(90, { lang: \"fr\", format: \"compact\" }) // \"1h30\" (custom, no minute symbol)\n * formatMinuteDuration(45, { lang: \"en\", format: \"compact\" }) // \"45min\"\n * formatMinuteDuration(5, { lang: \"fr\", format: \"narrow\", clockStyle: true }) // \"0h 5min\"\n * formatMinuteDuration(330, { lang: \"fr\", format: \"compact\", clockStyle: true }) // \"05h30\"\n * formatMinuteDuration(600, { lang: \"fr\", format: \"compact\", clockStyle: true }) // \"10h00\"\n * formatMinuteDuration(600, { lang: \"fr\", format: \"compact\", clockStyle: true, pad: false }) // \"10h00\"\n * formatMinuteDuration(600, { lang: \"fr\", format: \"compact\", clockStyle: true, pad: false, precision: \"hour\" }) // \"10h\"\n * formatMinuteDuration(510, { lang: \"fr\", format: \"compact\", clockStyle: true, pad: false, precision: \"hour\" }) // \"8h30\"\n * formatMinuteDuration(2160, { lang: \"fr\" }) // \"1 jour et 12 heures\"\n * formatMinuteDuration(2160, { lang: \"fr\", forceUnit: true }) // \"2 160 minutes\"\n */\nexport const formatMinuteDuration = (\n minutes,\n {\n lang = getRuntimeLang(),\n format = \"long\",\n clockStyle = false,\n pad = true,\n precision = \"minute\",\n forceUnit = false,\n } = {},\n) => {\n if (minutes < 0) {\n // the d/h/m split below only holds for a positive value; formatting the\n // magnitude and putting the sign back is the only reading that works\n return `-${formatMinuteDuration(-minutes, { lang, format, clockStyle, pad, precision, forceUnit })}`;\n }\n if (forceUnit || (minutes === 0 && !clockStyle)) {\n // a zero has nothing to promote to, and rendering it as an empty string\n // would be indistinguishable from a missing value\n return formatSingleUnit(minutes, \"minute\", { lang, format });\n }\n const totalHours = Math.floor(minutes / 60);\n const m = minutes % 60;\n // a time of day never goes past 24h, and its hour part is the clock hour\n const d = clockStyle ? 0 : Math.floor(totalHours / 24);\n const h = clockStyle ? totalHours : totalHours % 24;\n if (format !== \"compact\" && typeof Intl.DurationFormat !== \"undefined\") {\n const fmt = memoIntl(\"DurationFormat\", lang, {\n style: format, // \"long\", \"short\", or \"narrow\"\n ...(clockStyle ? { hoursDisplay: \"always\" } : {}),\n });\n const duration = {};\n if (d > 0) {\n duration.days = d;\n }\n if (h > 0 || clockStyle || d > 0) {\n duration.hours = h;\n }\n if (m > 0 || (d === 0 && h === 0)) {\n duration.minutes = m;\n }\n return fmt.format(duration);\n }\n // format=\"compact\": \"1j12h\", \"1h30\", \"45min\", \"2h\" — no minute symbol when hours are present\n const dSym = humanizeI18n(\"time.duration.day_symbol\", undefined, { lang });\n const hSym = humanizeI18n(\"time.duration.hour_symbol\", undefined, { lang });\n const mSym = humanizeI18n(\"time.duration.minute_symbol\", undefined, { lang });\n const dStr = d > 0 ? `${formatCompactNumber(d, lang)}${dSym}` : \"\";\n const hStr =\n clockStyle && pad\n ? String(h).padStart(2, \"0\")\n : formatCompactNumber(h, lang);\n if (d === 0 && h === 0 && !clockStyle) {\n return `${m}${mSym}`;\n }\n if (m === 0) {\n if (clockStyle) {\n // \"10h00\" on a clock, \"2h\" for a real 2 hours duration — except at\n // precision \"hour\", where a clock drops the zero minute too (\"10h\"),\n // the way one says it out loud\n return precision === \"minute\" ? `${hStr}${hSym}00` : `${hStr}${hSym}`;\n }\n return h === 0 ? dStr : `${dStr}${hStr}${hSym}`;\n }\n return `${dStr}${hStr}${hSym}${String(m).padStart(2, \"0\")}`;\n};\n\n// \"forceUnit\": stay in the unit the value is expressed in, however big it gets\nconst formatSingleUnit = (value, unit, { lang, format }) => {\n if (format !== \"compact\" && typeof Intl.DurationFormat !== \"undefined\") {\n return memoIntl(\"DurationFormat\", lang, {\n style: format,\n // Intl drops a zero-valued unit, and \"0 minute\" is the whole point here\n [`${unit}sDisplay`]: \"always\",\n }).format({\n [`${unit}s`]: value,\n });\n }\n const symbol = humanizeI18n(`time.duration.${unit}_symbol`, undefined, {\n lang,\n });\n return `${formatCompactNumber(value, lang)}${symbol}`;\n};\n\n/**\n * Formats a duration expressed in hours (possibly fractional) as a human-readable string.\n * Delegates to {@link formatMinuteDuration} after converting hours to minutes.\n *\n * @param {number} hours\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\", forceUnit?: boolean }} [options]\n * @param {boolean} [options.forceUnit=false] - Keep the value in hours however\n * big it gets (\"36 heures\" instead of \"1 jour et 12 heures\"). Ignored for a\n * fractional value, which has no single-unit spelling.\n *\n * @example\n * formatHourDuration(1.5, { lang: \"fr\" }) // \"1 heure 30 minutes\" (long, default)\n * formatHourDuration(1.5, { lang: \"fr\", format: \"compact\" }) // \"1h30\"\n * formatHourDuration(2, { lang: \"en\", format: \"compact\" }) // \"2h\"\n * formatHourDuration(36, { lang: \"fr\" }) // \"1 jour et 12 heures\"\n * formatHourDuration(36, { lang: \"fr\", forceUnit: true }) // \"36 heures\"\n */\nexport const formatHourDuration = (hours, options = {}) => {\n const { lang = getRuntimeLang(), format = \"long\", forceUnit } = options;\n if (hours === 0 || (forceUnit && Number.isInteger(hours))) {\n return formatSingleUnit(hours, \"hour\", { lang, format });\n }\n // a fractional value has no single-unit spelling, it needs its minutes\n const totalMinutes = Math.round(hours * 60);\n return formatMinuteDuration(totalMinutes, { ...options, forceUnit: false });\n};\n\n/**\n * Formats a duration expressed in seconds as a human-readable string.\n * \"long\", \"short\", \"narrow\" delegate to Intl.DurationFormat.\n * \"compact\" uses our own symbol-based notation.\n *\n * @param {number} seconds\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\", forceUnit?: boolean }} [options]\n * @param {boolean} [options.forceUnit=false] - Keep the value in seconds\n * however big it gets (\"90 000 secondes\" instead of \"1 jour et 1 heure\").\n *\n * @example\n * formatSecondDuration(90, { lang: \"fr\" }) // \"1 minute 30 secondes\" (long, default)\n * formatSecondDuration(90, { lang: \"fr\", format: \"short\" }) // \"1 min. et 30 s.\" (Intl short)\n * formatSecondDuration(90, { lang: \"fr\", format: \"narrow\" }) // \"1min 30s\" (Intl narrow)\n * formatSecondDuration(90, { lang: \"fr\", format: \"compact\" }) // \"1m30s\" (custom)\n * formatSecondDuration(45, { lang: \"en\", format: \"compact\" }) // \"45s\"\n */\nexport const formatSecondDuration = (\n seconds,\n { lang = getRuntimeLang(), format = \"long\", forceUnit = false } = {},\n) => {\n if (seconds < 0) {\n // the d/h/m/s split below only holds for a positive value; formatting the\n // magnitude and putting the sign back is the only reading that works\n return `-${formatSecondDuration(-seconds, { lang, format, forceUnit })}`;\n }\n if (forceUnit || seconds === 0) {\n return formatSingleUnit(seconds, \"second\", { lang, format });\n }\n const totalHours = Math.floor(seconds / 3600);\n const d = Math.floor(totalHours / 24);\n const h = totalHours % 24;\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n if (format !== \"compact\" && typeof Intl.DurationFormat !== \"undefined\") {\n const fmt = memoIntl(\"DurationFormat\", lang, { style: format });\n const duration = {};\n if (d > 0) duration.days = d;\n if (h > 0) duration.hours = h;\n if (m > 0) duration.minutes = m;\n if (s > 0 || (d === 0 && h === 0 && m === 0)) duration.seconds = s;\n return fmt.format(duration);\n }\n // compact: \"1d1h30m45s\", \"1h30m45s\", \"1m30s\", \"45s\"\n const dSym = humanizeI18n(\"time.duration.day_symbol\", undefined, { lang });\n const hSym = humanizeI18n(\"time.duration.hour_symbol\", undefined, { lang });\n const mSym = humanizeI18n(\"time.duration.minute_symbol\", undefined, { lang });\n const sSym = humanizeI18n(\"time.duration.second_symbol\", undefined, { lang });\n const parts = [];\n // h/m/s are bounded by construction (never need grouping); d can be\n // arbitrarily large for a long duration.\n if (d > 0) parts.push(`${formatCompactNumber(d, lang)}${dSym}`);\n if (h > 0) parts.push(`${h}${hSym}`);\n if (m > 0) parts.push(`${m}${mSym}`);\n if (s > 0 || parts.length === 0) parts.push(`${s}${sSym}`);\n return parts.join(\"\");\n};\n\n/**\n * Formats a duration object as a human-readable string.\n * Reads the parts directly — no conversion to seconds — so years/months/days\n * are preserved as-is and non-numeric mid-edit values (e.g. \"2a\") are rendered\n * with their unit symbol rather than being stringified.\n *\n * @param {string|number|{ years?: any, months?: any, weeks?: any, days?: any,\n * hours?: any, minutes?: any, seconds?: any, milliseconds?: any }} duration -\n * A string goes through {@link parseDuration} (\"PT1H30M\", \"1h30\"), a number\n * is read as seconds. Each unit is written with the value it carries: 90\n * minutes reads \"90 minutes\", never \"1 heure 30\" — the variants that\n * promote a count into bigger units are {@link formatMinuteDuration},\n * {@link formatHourDuration} and {@link formatSecondDuration}.\n * @param {{ lang?: string, format?: \"long\"|\"short\"|\"narrow\"|\"compact\" }} [options]\n *\n * @example\n * formatDuration({ hours: 2, minutes: 15 }, { lang: \"fr\" }) // \"2 heures 15 minutes\" (long, default)\n * formatDuration({ hours: 2, minutes: 15 }, { lang: \"fr\", format: \"short\" }) // \"2 h et 15 min\" (Intl short)\n * formatDuration({ hours: 2, minutes: 15 }, { lang: \"fr\", format: \"narrow\" }) // \"2h 15min\" (Intl narrow)\n * formatDuration({ hours: 2, minutes: 15 }, { lang: \"fr\", format: \"compact\" }) // \"2h15\" (custom, no minute symbol)\n * formatDuration({ minutes: 45 }, { lang: \"fr\", format: \"compact\" }) // \"45min\"\n * formatDuration({ hours: 0, minutes: 0 }, { lang: \"fr\" }) // \"0 minute\"\n * formatDuration({ hours: \"2a\", minutes: \"15\" }, { lang: \"fr\", format: \"compact\" }) // \"2ah15\"\n */\nexport const formatDuration = (\n duration,\n { lang = getRuntimeLang(), format = \"long\" } = {},\n) => {\n if (typeof duration === \"string\") {\n duration = parseDuration(duration) ?? {};\n } else if (typeof duration === \"number\") {\n duration = { seconds: duration };\n }\n const has = (key) => duration[key] !== undefined && duration[key] !== null;\n\n // \"long\" and \"narrow\" delegate to Intl.DurationFormat when available and all values are numeric.\n //\n // \"short\" always uses our own compact symbols (\"2h15\", \"45min\") because:\n // 1. We omit the minute symbol when hours are also present (\"2h15\" not \"2h 15 min\"),\n // which Intl.DurationFormat style:\"narrow\" does not do.\n // 2. Non-numeric mid-edit values (e.g. { hours: \"2a\" }) must render as-is with their\n // unit symbol — Intl.DurationFormat only accepts integers.\n if (format !== \"compact\" && typeof Intl.DurationFormat !== \"undefined\") {\n const intlDuration = {};\n let allNumeric = true;\n let hasNegative = false;\n let hasPositive = false;\n for (const key of [\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n ]) {\n if (!has(key)) {\n continue;\n }\n const n = Number(duration[key]);\n if (!isFinite(n)) {\n allNumeric = false;\n break;\n }\n if (n < 0) {\n hasNegative = true;\n } else if (n > 0) {\n hasPositive = true;\n }\n intlDuration[key] = n;\n }\n // Temporal requires all components to share the same sign.\n // Mixed-sign values (e.g. { hours: -1, minutes: 15 }) throw a RangeError.\n if (\n allNumeric &&\n Object.keys(intlDuration).length > 0 &&\n !(hasNegative && hasPositive)\n ) {\n if (!hasNegative && !hasPositive) {\n return formatSingleUnit(0, smallestUnitOf(intlDuration), {\n lang,\n format,\n });\n }\n return memoIntl(\"DurationFormat\", lang, { style: format }).format(\n intlDuration,\n );\n }\n // Fall through to compact notation when values are non-numeric or mixed-sign\n }\n\n // A component explicitly present but numerically zero (e.g. the demo's own\n // { hours: 0, minutes: 5 }) conveys no information for a genuine duration\n // — same convention formatMinuteDuration/formatSecondDuration already\n // follow (checking h > 0/m > 0, not merely \"was a value passed\") — so\n // it's dropped here too, regardless of whether the caller included the\n // key at all. Non-numeric mid-edit values (e.g. \"2a\") still count as\n // present — Number(\"2a\") is NaN, never === 0 — so those keep rendering\n // as-is with their own unit symbol. When every component is zero there is\n // nothing left to drop, so the zero itself is rendered — see below.\n const hasNonZero = (key) => has(key) && Number(duration[key]) !== 0;\n\n const sym = (key) =>\n humanizeI18n(`time.duration.${key}_symbol`, undefined, { lang });\n const parts = [];\n\n if (hasNonZero(\"years\")) {\n parts.push(`${formatCompactNumber(duration.years, lang)}${sym(\"year\")}`);\n }\n if (hasNonZero(\"months\")) {\n parts.push(`${formatCompactNumber(duration.months, lang)}${sym(\"month\")}`);\n }\n if (hasNonZero(\"weeks\")) {\n parts.push(`${formatCompactNumber(duration.weeks, lang)}${sym(\"week\")}`);\n }\n if (hasNonZero(\"days\")) {\n parts.push(`${formatCompactNumber(duration.days, lang)}${sym(\"day\")}`);\n }\n\n // Hours + minutes: when both present, pad minutes to 2 digits after the h\n // symbol — minutes stays a plain 2-digit pad (it's always 0-59 by\n // convention), only hours goes through grouping.\n const hSym = sym(\"hour\");\n const mSym = sym(\"minute\");\n if (hasNonZero(\"hours\") && hasNonZero(\"minutes\")) {\n parts.push(\n `${formatCompactNumber(duration.hours, lang)}${hSym}${String(duration.minutes).padStart(2, \"0\")}`,\n );\n } else if (hasNonZero(\"hours\")) {\n parts.push(`${formatCompactNumber(duration.hours, lang)}${hSym}`);\n } else if (hasNonZero(\"minutes\")) {\n parts.push(`${formatCompactNumber(duration.minutes, lang)}${mSym}`);\n }\n\n if (hasNonZero(\"seconds\")) {\n parts.push(\n `${formatCompactNumber(duration.seconds, lang)}${sym(\"second\")}`,\n );\n }\n if (hasNonZero(\"milliseconds\")) {\n parts.push(\n `${formatCompactNumber(duration.milliseconds, lang)}${sym(\"millisecond\")}`,\n );\n }\n if (parts.length > 0) {\n return parts.join(\"\");\n }\n // everything was zero: say so in the smallest unit the caller mentioned,\n // rather than a bare \"0\" whose unit the reader has to guess\n const smallestUnit = smallestUnitOf(duration);\n return smallestUnit ? `0${sym(smallestUnit)}` : \"0\";\n};\n\nconst UNIT_KEYS = [\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\nconst smallestUnitOf = (duration) => {\n for (const key of [...UNIT_KEYS].reverse()) {\n if (duration[key] !== undefined && duration[key] !== null) {\n return key.slice(0, -1); // \"seconds\" -> \"second\"\n }\n }\n return null;\n};\n\n/**\n * Formats a date relative to now: \"il y a 3 jours\", \"dans 2 heures\", etc.\n */\nconst formatTimeAgo = (\n date,\n { lang = getRuntimeLang(), now = new Date(), bare, format = \"long\" } = {},\n) => {\n const rtf = memoIntl(\"RelativeTimeFormat\", lang, {\n numeric: \"auto\",\n style: format,\n });\n const nowMs = now instanceof Date ? now.getTime() : now;\n const diff = date.getTime() - nowMs;\n const absDiff = Math.abs(diff);\n\n let value;\n let unit;\n if (absDiff < MINUTE) {\n value = Math.round(diff / 1000);\n unit = \"second\";\n } else if (absDiff < HOUR) {\n value = Math.round(diff / MINUTE);\n unit = \"minute\";\n } else if (absDiff < DAY) {\n value = Math.round(diff / HOUR);\n unit = \"hour\";\n } else if (absDiff < 7 * DAY) {\n value = Math.round(diff / DAY);\n unit = \"day\";\n } else if (absDiff < 30 * DAY) {\n value = Math.round(diff / (7 * DAY));\n unit = \"week\";\n } else if (absDiff < YEAR) {\n value = Math.round(diff / (30 * DAY));\n unit = \"month\";\n } else {\n value = Math.round(diff / YEAR);\n unit = \"year\";\n }\n\n if (!bare || value >= 0) {\n return rtf.format(value, unit);\n }\n // Drop the leading past-tense literal (\"il y a \", \"ago \") — keep only integer + unit.\n const parts = rtf.formatToParts(value, unit);\n const integerIndex = parts.findIndex((p) => p.type === \"integer\");\n return parts\n .slice(integerIndex)\n .map((p) => p.value)\n .join(\"\")\n .trim();\n};\n\n/**\n * Formats a timed event with an optional duration window.\n *\n * States:\n * - Future (now < start) → \"dans 1 heure et 30 minutes\", \"demain à 15 h\", …\n * - Ongoing (start ≤ now < start+dur) → \"En cours\"\n * - Past (now ≥ start+dur) → relative (\"il y a 2 heures\", …)\n *\n * @param {Date|number} start Start of the event (Date or ms timestamp)\n * @param {number} durationMs Duration in milliseconds (0 = instant event)\n * @param {{ lang?: string, now?: Date|number, bare?: boolean, format?: \"long\"|\"short\"|\"narrow\" }} options\n *\n * @example\n * // 90 min from now\n * formatTimeRelative(Date.now() + 90 * 60_000, 0, { lang: \"fr\" }) // \"dans 1 heure et 30 minutes\"\n * // currently happening (30 min window)\n * formatTimeRelative(Date.now() - 5 * 60_000, 30 * 60_000, { lang: \"fr\" }) // \"En cours\"\n * // ended 2 hours ago\n * formatTimeRelative(Date.now() - 3 * 3_600_000, 3_600_000, { lang: \"fr\" }) // \"il y a 2 heures\"\n * // short format\n * formatTimeRelative(Date.now() - 3 * 3_600_000, 0, { lang: \"fr\", format: \"short\" }) // \"il y a 3 h\"\n */\nexport const formatTimeRelative = (\n start,\n durationMs = 0,\n { lang = getRuntimeLang(), now = new Date(), bare, format = \"long\" } = {},\n) => {\n const startMs = start instanceof Date ? start.getTime() : Number(start);\n const endMs = startMs + durationMs;\n const nowMs = now instanceof Date ? now.getTime() : Number(now);\n\n if (nowMs >= startMs && nowMs < endMs) {\n return getOngoingText(lang);\n }\n if (nowMs >= endMs) {\n const refDate = endMs > startMs ? new Date(endMs) : new Date(startMs);\n return formatTimeAgo(refDate, { lang, now, bare, format });\n }\n\n const diff = startMs - nowMs;\n return formatFuture(new Date(startMs), diff, { lang, now, format });\n};\n\nconst formatFuture = (date, diff, { lang, now, format = \"long\" }) => {\n const rtf = memoIntl(\"RelativeTimeFormat\", lang, {\n numeric: \"auto\",\n style: format,\n });\n const nowDate = now instanceof Date ? now : new Date(now);\n\n // < 1 min\n if (diff < MINUTE) {\n return getLessThanMinuteText(lang);\n }\n\n // < 1 hour → \"dans X minutes\"\n if (diff < HOUR) {\n return rtf.format(Math.ceil(diff / MINUTE), \"minute\");\n }\n\n // 1h to 2h → \"dans 1 heure 30\"\n if (diff < 2 * HOUR) {\n const hours = Math.floor(diff / HOUR);\n const minutes = Math.round((diff % HOUR) / MINUTE);\n if (minutes === 0) {\n return rtf.format(hours, \"hour\");\n }\n const duration = formatMinuteDuration(hours * 60 + minutes, {\n lang,\n format,\n });\n const template = humanizeI18n(\"time.in_duration\", undefined, { lang });\n if (template !== \"time.in_duration\") {\n return template.replace(\"[duration]\", duration);\n }\n return `in ${duration}`;\n }\n\n // < 6h → \"dans X heures\" (precise enough, skip tomorrow label)\n if (diff < 6 * HOUR) {\n return rtf.format(Math.round(diff / HOUR), \"hour\");\n }\n\n // Tomorrow (calendar day) and within ~30h → \"demain à 15h\"\n const tomorrowDate = new Date(nowDate);\n tomorrowDate.setDate(tomorrowDate.getDate() + 1);\n if (diff < 30 * HOUR && toLocalDayKey(date) === toLocalDayKey(tomorrowDate)) {\n return formatTomorrowAt(date, lang);\n }\n\n // < 24h → \"dans X heures\"\n if (diff < DAY) {\n return rtf.format(Math.round(diff / HOUR), \"hour\");\n }\n\n // < 7 days → \"dans X jours\"\n if (diff < 7 * DAY) {\n return rtf.format(Math.round(diff / DAY), \"day\");\n }\n\n // < 30 days → \"dans X semaines\"\n if (diff < 30 * DAY) {\n return rtf.format(Math.round(diff / (7 * DAY)), \"week\");\n }\n\n // months (Intl handles \"le mois prochain\" when value = 1)\n if (diff < YEAR) {\n return rtf.format(Math.round(diff / (30 * DAY)), \"month\");\n }\n\n return rtf.format(Math.round(diff / YEAR), \"year\");\n};\n\nconst formatTomorrowAt = (date, lang) => {\n const dayLabel = memoIntl(\"RelativeTimeFormat\", lang, {\n numeric: \"auto\",\n }).format(1, \"day\");\n const hasMinutes = date.getMinutes() !== 0;\n const timeLabel = memoIntl(\"DateTimeFormat\", lang, {\n hour: \"numeric\",\n ...(hasMinutes ? { minute: \"2-digit\" } : {}),\n }).format(date);\n const atTemplate = humanizeI18n(\"time.tomorrow_at\", undefined, {\n lang,\n });\n // atTemplate is e.g. \"[day] à [time]\" — replace placeholders\n if (atTemplate !== \"time.tomorrow_at\") {\n return atTemplate.replace(\"[day]\", dayLabel).replace(\"[time]\", timeLabel);\n }\n // fallback: concatenate with a space\n return `${dayLabel} ${timeLabel}`;\n};\n\nconst getLessThanMinuteText = (lang) => {\n return humanizeI18n(\"time.less_than_minute\", undefined, { lang });\n};\n\nconst getOngoingText = (lang) => {\n return humanizeI18n(\"time.ongoing\", undefined, { lang });\n};\n\nconst MINUTE = 60_000;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst YEAR = 365 * DAY;\n\n// Compares calendar days in local time (ignores the clock time)\nconst toLocalDayKey = (date) => {\n return `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n};\n\n/**\n * Coerces what `<Time>` accepts as a value — a Date, a ms timestamp, a\n * parseable string — into a Date, or null when it cannot. `parseString`\n * lets a caller claim the string forms it recognizes (\"HH:MM\" for a\n * time-of-day, \"YYYY-MM\" for a month…) before the generic ones apply; the\n * strings it does not claim (it answers null) still go through them, so a\n * caller shaping one form never has to re-implement ISO parsing.\n */\nexport const toDate = (value, parseString) => {\n if (value instanceof Date) {\n return value;\n }\n if (typeof value === \"number\") {\n return new Date(value);\n }\n if (typeof value === \"string\") {\n if (parseString) {\n const parsed = parseString(value);\n if (parsed) {\n return parsed;\n }\n }\n // \"YYYY-MM-DD\" — use local midnight to avoid UTC shift\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n const d = new Date(`${value}T00:00:00`);\n return isNaN(d.getTime()) ? null : d;\n }\n // ISO / other parseable strings\n const d = new Date(value);\n return isNaN(d.getTime()) ? null : d;\n }\n return null;\n};\n\nexport const toTimeOfDay = (value) => {\n return toDate(value, (string) => {\n if (/^\\d{2}:\\d{2}(?::\\d{2})?$/.test(string)) {\n const d = new Date(`1970-01-01T${string}`);\n return isNaN(d.getTime()) ? null : d;\n }\n return null;\n });\n};\n\n// Reads the wall-clock hour/minute of an instant — in the runtime's own zone\n// by default, in `timeZone` when given. A Date only carries local getters, so\n// another zone's clock has to come out of Intl parts (hourCycle h23 so\n// midnight reads hour 0, never 24).\nconst readClock = (date, timeZone) => {\n if (!timeZone) {\n return { hours: date.getHours(), minutes: date.getMinutes() };\n }\n const parts = memoIntl(\"DateTimeFormat\", \"en\", {\n timeZone,\n hour: \"numeric\",\n minute: \"numeric\",\n hourCycle: \"h23\",\n }).formatToParts(date);\n let hours = 0;\n let minutes = 0;\n for (const part of parts) {\n if (part.type === \"hour\") {\n hours = Number(part.value);\n } else if (part.type === \"minute\") {\n minutes = Number(part.value);\n }\n }\n return { hours, minutes };\n};\n\n// Reads the calendar year of an instant in `timeZone` (the runtime's own zone\n// when not given) — what formatDay's `year: \"auto\"` compares.\nconst readYear = (date, timeZone) => {\n if (!timeZone) {\n return date.getFullYear();\n }\n return Number(\n memoIntl(\"DateTimeFormat\", \"en\", { timeZone, year: \"numeric\" }).format(\n date,\n ),\n );\n};\n",
80
80
  "import { getPrecision, setRoundedPrecision } from \"../utils/decimals.js\";\n\nexport const distributePercentages = (\n namedNumbers,\n { maxPrecisionHint = 2 } = {},\n) => {\n const numberNames = Object.keys(namedNumbers);\n if (numberNames.length === 0) {\n return {};\n }\n if (numberNames.length === 1) {\n const firstNumberName = numberNames[0];\n return { [firstNumberName]: \"100 %\" };\n }\n const numbers = numberNames.map((name) => namedNumbers[name]);\n const total = numbers.reduce((sum, value) => sum + value, 0);\n const ratios = numbers.map((number) => number / total);\n const percentages = {};\n ratios.pop();\n ratios.forEach((ratio, index) => {\n const percentage = ratio * 100;\n percentages[numberNames[index]] = percentage;\n });\n const lowestPercentage = (1 / Math.pow(10, maxPrecisionHint)) * 100;\n let precision = 0;\n Object.keys(percentages).forEach((name) => {\n const percentage = percentages[name];\n if (percentage < lowestPercentage) {\n // check the amout of meaningful decimals\n // and that what we will use\n const percentageRounded = setRoundedPrecision(percentage);\n const percentagePrecision = getPrecision(percentageRounded);\n if (percentagePrecision > precision) {\n precision = percentagePrecision;\n }\n }\n });\n let remainingPercentage = 100;\n\n Object.keys(percentages).forEach((name) => {\n const percentage = percentages[name];\n const percentageAllocated = setRoundedPrecision(percentage, {\n decimals: precision,\n });\n remainingPercentage -= percentageAllocated;\n percentages[name] = percentageAllocated;\n });\n const lastName = numberNames[numberNames.length - 1];\n percentages[lastName] = setRoundedPrecision(remainingPercentage, {\n decimals: precision,\n });\n return percentages;\n};\n",
81
81
  "const formatDefault = (v) => v;\n\nexport const generateContentFrame = ({\n content,\n line,\n column,\n\n linesAbove = 3,\n linesBelow = 0,\n lineMaxWidth = 120,\n lineNumbersOnTheLeft = true,\n lineMarker = true,\n columnMarker = true,\n format = formatDefault,\n} = {}) => {\n const lineStrings = content.split(/\\r?\\n/);\n if (line === 0) line = 1;\n if (column === undefined) {\n columnMarker = false;\n column = 1;\n }\n if (column === 0) column = 1;\n\n let lineStartIndex = line - 1 - linesAbove;\n if (lineStartIndex < 0) {\n lineStartIndex = 0;\n }\n let lineEndIndex = line - 1 + linesBelow;\n if (lineEndIndex > lineStrings.length - 1) {\n lineEndIndex = lineStrings.length - 1;\n }\n if (columnMarker) {\n // human reader deduce the line when there is a column marker\n lineMarker = false;\n }\n if (line - 1 === lineEndIndex) {\n lineMarker = false; // useless because last line\n }\n let lineIndex = lineStartIndex;\n\n let columnsBefore;\n let columnsAfter;\n if (column > lineMaxWidth) {\n columnsBefore = column - Math.ceil(lineMaxWidth / 2);\n columnsAfter = column + Math.floor(lineMaxWidth / 2);\n } else {\n columnsBefore = 0;\n columnsAfter = lineMaxWidth;\n }\n let columnMarkerIndex = column - 1 - columnsBefore;\n\n let source = \"\";\n while (lineIndex <= lineEndIndex) {\n const lineString = lineStrings[lineIndex];\n const lineNumber = lineIndex + 1;\n const isLastLine = lineIndex === lineEndIndex;\n const isMainLine = lineNumber === line;\n lineIndex++;\n\n write_aside: {\n if (lineMarker) {\n if (isMainLine) {\n source += `${format(\">\", \"marker_line\")} `;\n } else {\n source += \" \";\n }\n }\n if (lineNumbersOnTheLeft) {\n // fill with spaces to ensure if line moves from 7,8,9 to 10 the display is still great\n const asideSource = `${fillLeft(lineNumber, lineEndIndex + 1)} |`;\n source += `${format(asideSource, \"line_number_aside\")} `;\n }\n }\n write_line: {\n source += truncateLine(lineString, {\n start: columnsBefore,\n end: columnsAfter,\n prefix: \"…\",\n suffix: \"…\",\n format,\n });\n }\n write_column_marker: {\n if (columnMarker && isMainLine) {\n source += `\\n`;\n if (lineMarker) {\n source += \" \";\n }\n if (lineNumbersOnTheLeft) {\n const asideSpaces = `${fillLeft(lineNumber, lineEndIndex + 1)} | `\n .length;\n source += \" \".repeat(asideSpaces);\n }\n source += \" \".repeat(columnMarkerIndex);\n source += format(\"^\", \"marker_column\");\n }\n }\n if (!isLastLine) {\n source += \"\\n\";\n }\n }\n return source;\n};\n\nconst truncateLine = (line, { start, end, prefix, suffix, format }) => {\n const lastIndex = line.length;\n\n if (line.length === 0) {\n // don't show any ellipsis if the line is empty\n // because it's not truncated in that case\n return \"\";\n }\n\n const startTruncated = start > 0;\n const endTruncated = lastIndex > end;\n\n let from = startTruncated ? start + prefix.length : start;\n let to = endTruncated ? end - suffix.length : end;\n if (to > lastIndex) to = lastIndex;\n\n if (start >= lastIndex || from === to) {\n return \"\";\n }\n let result = \"\";\n while (from < to) {\n result += format(line[from], \"char\");\n from++;\n }\n if (result.length === 0) {\n return \"\";\n }\n if (startTruncated && endTruncated) {\n return `${format(prefix, \"marker_overflow_left\")}${result}${format(\n suffix,\n \"marker_overflow_right\",\n )}`;\n }\n if (startTruncated) {\n return `${format(prefix, \"marker_overflow_left\")}${result}`;\n }\n if (endTruncated) {\n return `${result}${format(suffix, \"marker_overflow_right\")}`;\n }\n return result;\n};\n\nconst fillLeft = (value, biggestValue, char = \" \") => {\n const width = String(value).length;\n const biggestWidth = String(biggestValue).length;\n let missingWidth = biggestWidth - width;\n let padded = \"\";\n while (missingWidth--) {\n padded += char;\n }\n padded += value;\n return padded;\n};\n",
82
82
  "export const createCallOrderer = () => {\n const queue = [];\n const callWhenPreviousExecutionAreDone = (executionIndex, callback) => {\n if (queue[executionIndex]) {\n throw new Error(`${executionIndex} already used`);\n }\n\n let allBeforeAreDone = true;\n if (executionIndex > 0) {\n let beforeIndex = executionIndex - 1;\n do {\n const value = queue[beforeIndex];\n if (!value) {\n allBeforeAreDone = false;\n break;\n }\n } while (beforeIndex--);\n }\n if (!allBeforeAreDone) {\n queue[executionIndex] = callback;\n return;\n }\n queue[executionIndex] = true;\n callback();\n let afterIndex = executionIndex + 1;\n while (afterIndex < queue.length) {\n const value = queue[afterIndex];\n if (value === undefined) {\n break;\n }\n if (typeof value === \"function\") {\n queue[afterIndex] = true;\n value();\n }\n afterIndex++;\n }\n };\n return callWhenPreviousExecutionAreDone;\n};\n",
@@ -87,5 +87,5 @@
87
87
  "formatNumber",
88
88
  "UNIT_KEYS"
89
89
  ],
90
- "mappings": "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E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACnE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACpE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO;AACrE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AACxE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AACxE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,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E,OAAO,YAAY;AACrB,CAAC;;AAEW,MAAC,cAAc,GAAG,MAAM,iBAAiB;;AAErD;AACA;AACA;AACA;AACY,MAAC,oBAAoB,GAAG,CAAC,MAAM,KAAK;AAChD,EAAE,iBAAiB,GAAG,MAAM;AAC5B;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK;AAC3E,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AAC/B;AACA;AACA;AACA,EAAE,IAAI,kBAAkB,GAAG,CAAC;;AAE5B;AACA;AACA;AACA;AACA,EAAE,MAAM,sBAAsB,GAAG,WAAW,KAAK,SAAS;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,gBAAgB;AACtB,EAAE,IAAI,2BAA2B;AACjC,EAAE,IAAI,uBAAuB,GAAG,EAAE;AAClC,EAAE,MAAM,aAAa,GAAG,MAAM;AAC9B,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ;AACR,QAAQ,cAAc,EAAE;AACxB,IAAI;AACJ,MAAM,uBAAuB,KAAK,kBAAkB;AACpD,MAAM,2BAA2B,KAAK;AACtC,MAAM;AACN,MAAM,OAAO,gBAAgB;AAC7B,IAAI;AACJ,IAAI,gBAAgB,GAAG,aAAa,CAAC,kBAAkB,EAAE,WAAW,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"
90
+ "mappings": "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E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACnE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACpE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO;AACrE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AACxE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AACxE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AACxE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AACxE,CAAC;;AC5IM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK;AACzE,EAAE,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACtD,EAAE,MAAM,uBAAuB,GAAG;AAClC,MAAM,cAAc,CAAC,iBAAiB;AACtC,MAAM,EAAE;AACR,EAAE,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC;;AAE3D,EAAE,IAAI,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;AAC3C,EAAE,OAAO,YAAY;AACrB,CAAC;;AAED,MAAM,mBAAmB;AACzB,EAAE,aAAa,IAAI,MAAM,CAAC;AAC1B,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;AACzB,MAAM,CAAC,MAAM,KAAK;AAClB,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE;AAChD,QAAQ,MAAM,uBAAuB,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;AACnE,QAAQ,MAAM,uBAAuB,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;AACnE,QAAQ,MAAM,iBAAiB,GAAG,cAAc,CAAC,KAAK;AACtD,UAAU,uBAAuB,GAAG,CAAC;AACrC,UAAU,uBAAuB;AACjC,SAAS;AACT,QAAQ,OAAO,iBAAiB;AAChC,MAAM,CAAC;;ACvBA,MAAM,gBAAgB,GAAG,MAAM,WAAW;;ACA1C,MAAM,aAAa,GAAG,CAAC,KAAK,KAAK;AACxC,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACpB,CAAC;;ACFW,MAAC,kCAAkC,GAAG;AAClD,EAAE,IAAI;AACN,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE;AAClD,KAAK;AACL,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACnC,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,IAAI,WAAW,KAAK,SAAS,EAAE;AACjC,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,IAAI,CAAC,MAAM;AACX,MAAM,WAAW,GAAG,EAAE;AACtB,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,SAAS;AAC5D,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;AAC3B,IAAI,MAAM,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AACvD,IAAI,CAAC,EAAE;AACP,IAAI,MAAM,IAAI,IAAI,CAAC;AACnB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC;AAChC,QAAQ,YAAY,IAAI,CAAC,KAAK,KAAK,CAAC;AACpC,UAAU;AACV,UAAU,CAAC,EAAE,CAAC;AACd,EAAE;AACF,EAAE,OAAO,MAAM;AACf;;AAEY,MAAC,wBAAwB,GAAG;AACxC,EAAE,KAAK;AACP,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE;AAC3C,KAAK;AACL,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC;AAC7B,IAAI,KAAK,EAAE,KAAK,GAAG,CAAC;AACpB,IAAI,OAAO,EAAE,cAAc;AAC3B,IAAI,IAAI,EAAE,UAAU;AACpB,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACd;;AAEA,MAAM,yBAAyB,GAAG,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK;AAC7E,EAAE,OAAO,gBAAgB,CAAC;AAC1B,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,OAAO,EAAE,cAAc;AAC3B,IAAI,IAAI,EAAE,UAAU;AACpB,GAAG,CAAC;AACJ,CAAC;;AAED,MAAM,gBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK;AACvD,EAAE,IAAI,OAAO,EAAE;AACf;AACA,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,EAAE;AACF;AACA,EAAE,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;AACxC,CAAC;;AAEW,MAAC,yBAAyB,GAAG;AACzC,EAAE,KAAK;AACP,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE;AAC3C,KAAK;AACL,EAAE,OAAO,CAAC,EAAE,wBAAwB,CAAC,KAAK,EAAE;AAC5C,IAAI,KAAK;AACT,IAAI,cAAc;AAClB,IAAI,UAAU;AACd,GAAG,CAAC,CAAC,EAAE,yBAAyB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AACzE;;AChEO,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK;AACtE,EAAE,IAAI,eAAe,GAAG,KAAK;AAC7B,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,eAAe,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAClC,EAAE;AACF,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,eAAe,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAC9C,EAAE;AACF,EAAE,OAAO,eAAe;AACxB,CAAC;;ACHM,MAAM,YAAY,GAAG;AAC5B,EAAE,KAAK;AACP,EAAE;AACF,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,cAAc;AAClB,IAAI,KAAK;AACT,IAAI,cAAc;AAClB,IAAI,UAAU;AACd,IAAI,WAAW;AACf,IAAI,MAAM;AACV,GAAG;AACH,KAAK;AACL,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE;AAChC,IAAI,OAAO,wBAAwB;AACnC,EAAE;AACF,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAElB,EAAE,IAAI,YAAY,GAAG,EAAE;AACvB,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM;;AAExB,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;AAChB,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;AAC9C,QAAQ,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE;AACzC,QAAQ,EAAE;AACV,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,MAAM,YAAY,IAAI,WAAW;AACjC,IAAI,CAAC,MAAM;AACX,MAAM,YAAY,IAAI,CAAC,CAAC,EAAE,wBAAwB,CAAC,WAAW,EAAE;AAChE,QAAQ,KAAK;AACb,QAAQ,cAAc;AACtB,QAAQ,UAAU;AAClB,OAAO,CAAC,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,CAAC,EAAE;AACP,EAAE;;AAEF,EAAE,IAAI,WAAW;AACjB,EAAE,IAAI,YAAY,CAAC,MAAM,EAAE;AAC3B,IAAI,WAAW,GAAG,yBAAyB,CAAC,YAAY,EAAE;AAC1D,MAAM,KAAK;AACX,MAAM,cAAc;AACpB,MAAM,UAAU;AAChB,KAAK,CAAC;AACN,EAAE,CAAC,MAAM;AACT,IAAI,WAAW,GAAG,EAAE;AACpB,EAAE;;AAEF,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;;AAElC,EAAE,OAAO,kBAAkB,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACjE,CAAC;;ACzDM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK;AAClE,EAAE,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;;AAEtD,EAAE,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;AAClC,CAAC;;ACFM,MAAM,oBAAoB,GAAG;AACpC,EAAE,KAAK;AACP,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE;AACzC,KAAK;AACL,EAAE,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACvD,EAAE,OAAO,kBAAkB,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE;AACzD,IAAI,MAAM;AACV,IAAI,WAAW;AACf,GAAG,CAAC;AACJ,CAAC;;ACTM,MAAM,YAAY,GAAG;AAC5B,EAAE,KAAK;AACP,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE;AACzC,KAAK;AACL,EAAE,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC;;AAErD,EAAE,MAAM,WAAW,GAAG,kBAAkB;AACxC,IAAI,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;AACxD,IAAI;AACJ,MAAM,MAAM;AACZ,MAAM,WAAW;AACjB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,WAAW;AACpB,CAAC;;AAED,MAAM,sBAAsB,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK;AAC7C,EAAE,IAAI,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC5C,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,OAAO,OAAO;AAChB,CAAC;;AAED;AACA,MAAM,qBAAqB,GAAG;AAC9B,EAAE,WAAW;AACb,EAAE,YAAY;AACd,EAAE,gBAAgB;AAClB,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,UAAU;AACZ,CAAC;;AC/BM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK;AAC/E,EAAE,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;AACzD,IAAI,gBAAgB,EAAE,KAAK;AAC3B,GAAG,CAAC;AACJ,EAAE,OAAO,kBAAkB,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE;AACnD,IAAI,MAAM;AACV,IAAI,WAAW;AACf,GAAG,CAAC;AACJ,CAAC;;ACVM,MAAM,eAAe,GAAG;AAC/B,EAAE,KAAK;AACP,EAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,EAAE;AAC1C,KAAK;AACL,EAAE,IAAI,cAAc;AACpB,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE;AACrC,EAAE,CAAC,MAAM;AACT,IAAI,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS;AACzD,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ;AACR,QAAQ,CAAC,SAAS,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AACrD,IAAI,cAAc,GAAG,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC;AAC7C,EAAE;;AAEF,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,OAAO,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;AAChC,EAAE;AACF,EAAE,OAAO,cAAc;AACvB,CAAC;;ACjBM,MAAM,mBAAmB,GAAG;AACnC,EAAE,KAAK;AACP,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE;AACzC,KAAK;AACL,EAAE,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACtD,EAAE,OAAO,kBAAkB,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC/E,CAAC;;ACFM,MAAM,aAAa,GAAG;AAC7B,EAAE,KAAK;AACP,EAAE;AACF,IAAI,cAAc;AAClB,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,KAAK;AACT,IAAI,cAAc;AAClB,IAAI,UAAU;AACd,IAAI,iBAAiB;AACrB,IAAI,WAAW;AACf,IAAI,MAAM;AACV,GAAG;AACH,KAAK;AACL,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,wBAAwB;;AAE/D,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAElB,EAAE,MAAM,mBAAmB,GAAG,EAAE;AAChC,EAAE,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK;AAC9D,IAAI,MAAM,oBAAoB,GAAG,MAAM,CAAC,YAAY,CAAC;AACrD,IAAI,MAAM,kBAAkB,GAAG,cAAc;AAC7C,MAAM,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB;AAC3E,UAAU;AACV,UAAU,YAAY;AACtB,KAAK;AACL,IAAI,mBAAmB,CAAC,IAAI,CAAC;AAC7B,MAAM,kBAAkB,EAAE,kBAAkB;AAC5C,MAAM,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;AAChE,KAAK,CAAC;AACN,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC1D,IAAI,mBAAmB,CAAC,IAAI,CAAC;AAC7B,MAAM,kBAAkB,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvD,MAAM,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;AAC1D,KAAK,CAAC;AACN,EAAE,CAAC,CAAC;;AAEJ,EAAE,IAAI,gBAAgB,GAAG,EAAE;AAC3B,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAE,kBAAkB,EAAE,WAAW,EAAE,EAAE,KAAK,KAAK;AAC9E,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,MAAM,gBAAgB,IAAI,CAAC,EAAE,kBAAkB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACjE,IAAI,CAAC,MAAM;AACX,MAAM,gBAAgB,IAAI,CAAC,CAAC,EAAE,wBAAwB;AACtD,QAAQ,CAAC,EAAE,kBAAkB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AAC/C,QAAQ;AACR,UAAU,KAAK;AACf,UAAU,cAAc;AACxB,UAAU,UAAU;AACpB,SAAS;AACT,OAAO,CAAC,CAAC;AACT,IAAI;AACJ,EAAE,CAAC,CAAC;;AAEJ,EAAE,IAAI,YAAY;AAClB,EAAE,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC/B,IAAI,YAAY,GAAG,CAAC,EAAE,yBAAyB,CAAC,gBAAgB,EAAE;AAClE,MAAM,KAAK;AACX,MAAM,cAAc;AACpB,MAAM,UAAU;AAChB,KAAK,CAAC,CAAC,CAAC;AACR,EAAE,CAAC,MAAM;AACT,IAAI,YAAY,GAAG,EAAE;AACrB,EAAE;;AAEF,EAAE,IAAI,iBAAiB,EAAE;AACzB,IAAI,YAAY,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;AAC9C,EAAE,CAAC,MAAM;AACT,IAAI,YAAY,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AACtC,EAAE;;AAEF,EAAE,OAAO,kBAAkB,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAClE,CAAC;;AC7EM,MAAM,aAAa,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE;;ACEjD,MAAM,mBAAmB,GAAG;AACnC,EAAE,KAAK;AACP,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE;AACzC,KAAK;AACL,EAAE,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;;AAEtD,EAAE,OAAO,kBAAkB,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC/E,CAAC;;ACTD;;;AAuBY,MAAC,QAAQ,GAAG;AACxB,EAAE,KAAK;AACP,EAAE;AACF,IAAI,WAAW,GAAG,KAAK;AACvB,IAAI,KAAK,GAAG,MAAM;AAClB,IAAI,oBAAoB,GAAG,IAAI;AAC/B,IAAI,MAAM,GAAG,KAAK;AAClB,IAAI,iBAAiB,GAAG,KAAK;AAC7B,IAAI,gBAAgB,GAAG,KAAK;AAC5B,IAAI,cAAc,GAAG,KAAK;AAC1B,IAAI,UAAU,GAAG,CAAC;AAClB,IAAI,gBAAgB,GAAG,IAAI;AAC3B,IAAI,kBAAkB,GAAG,KAAK;AAC9B,GAAG,GAAG,EAAE;AACR,KAAK;AACL,EAAE,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,aAAa,KAAK;AACzD,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,GAAG,aAAa;AACtB,MAAM,cAAc,EAAE,CAAC,WAAW,EAAE,aAAa,GAAG,EAAE,KAAK;AAC3D,QAAQ,OAAO,cAAc,CAAC,WAAW,EAAE;AAC3C,UAAU,GAAG,aAAa;AAC1B,UAAU,KAAK,EAAE,aAAa,CAAC,KAAK,GAAG,CAAC;AACxC,UAAU,GAAG,aAAa;AAC1B,SAAS,CAAC;AACV,MAAM,CAAC;AACP,KAAK;AACL,IAAI,OAAO,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC;AAC9C,EAAE,CAAC;;AAEH,EAAE,OAAO,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,WAAW;AACf,IAAI,KAAK;AACT,IAAI,oBAAoB;AACxB,IAAI,MAAM;AACV,IAAI,iBAAiB;AACrB,IAAI,gBAAgB;AACpB,IAAI,cAAc;AAClB,IAAI,UAAU;AACd,IAAI,gBAAgB;AACpB,IAAI,kBAAkB;AACtB,IAAI,KAAK,EAAE,CAAC;AACZ,GAAG,CAAC;AACJ;;AAEY,MAAC,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS;;AAExD,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;AAC1C,EAAE,MAAM,cAAc,GAAG,KAAK,IAAI,KAAK,CAAC,oBAAoB,CAAC;AAC7D,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,OAAO,cAAc,CAAC,OAAO,CAAC;AAClC,EAAE;AACF,EAAE,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC;AACrD,EAAE,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,aAAa,CAAC;AACnE,EAAE,IAAI,oBAAoB,EAAE;AAC5B,IAAI,OAAO,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC;AAC/C,EAAE;AACF,EAAE,MAAM,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC;AACtD,EAAE,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,aAAa,CAAC;AACnE,EAAE,IAAI,oBAAoB,EAAE;AAC5B,IAAI,OAAO,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC;AAC/C,EAAE;AACF,EAAE,OAAO,kBAAkB;AAC3B,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACxD,IAAI;AACJ,MAAM,GAAG,OAAO;AAChB,MAAM,WAAW,EAAE,KAAK;AACxB,KAAK;AACL,GAAG;AACH,CAAC;;AAED,MAAM,sBAAsB,GAAG,CAAC,KAAK,KAAK;AAC1C,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE;AACtB,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,IAAI,KAAK,KAAK,SAAS,EAAE;AAC3B,IAAI,OAAO,WAAW;AACtB,EAAE;AACF,EAAE,OAAO,OAAO,KAAK;AACrB,CAAC;AACD,MAAM,qBAAqB,GAAG;AAC9B,EAAE,OAAO,EAAE,cAAc;AACzB,EAAE,QAAQ,EAAE,eAAe;AAC3B,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,MAAM,EAAE,aAAa;AACvB,EAAE,MAAM,EAAE,aAAa;AACvB,EAAE,MAAM,EAAE,aAAa;AACvB,EAAE,SAAS,EAAE,gBAAgB;AAC7B,EAAE,MAAM,EAAE,aAAa;AACvB,CAAC;AACD,MAAM,uBAAuB,GAAG,CAAC,MAAM,KAAK;AAC5C,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;AAC5E,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF,EAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C;AACA;AACA,EAAE,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;AAC7D,EAAE,IAAI,OAAO,KAAK,QAAQ,EAAE;AAC5B,IAAI,MAAM,qBAAqB,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI;AACzD,IAAI,IAAI,qBAAqB,KAAK,QAAQ,EAAE;AAC5C,MAAM,OAAO,qBAAqB;AAClC,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,OAAO;AAChB,CAAC;AACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,SAAS;;AAErC,MAAM,qBAAqB,GAAG;AAC9B,EAAE,KAAK,EAAE,YAAY;AACrB,EAAE,MAAM,EAAE,mBAAmB;AAC7B,EAAE,OAAO,EAAE,oBAAoB;AAC/B,EAAE,KAAK,EAAE,YAAY;AACrB,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,QAAQ,EAAE,eAAe;AAC3B,EAAE,MAAM,EAAE,mBAAmB;AAC7B,EAAE,MAAM,EAAE,aAAa;AACvB,EAAE,MAAM,EAAE,aAAa;AACvB,EAAE,MAAM,EAAE,mBAAmB;AAC7B,CAAC;;AC7IM,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK;AACxC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,OAAO,CAAC;AAC7C,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AACnD,EAAE,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC;AAC7B,CAAC;;AAEM,MAAM,mBAAmB,GAAG;AACnC,EAAE,MAAM;AACR,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,iBAAiB,GAAG,QAAQ,EAAE,GAAG,EAAE;AACrD,KAAK;AACL,EAAE,OAAO,oBAAoB,CAAC,MAAM,EAAE;AACtC,IAAI,QAAQ;AACZ,IAAI,iBAAiB;AACrB,IAAI,SAAS,EAAE,IAAI,CAAC,KAAK;AACzB,GAAG,CAAC;AACJ,CAAC;;AAwBM,MAAM,YAAY,GAAG;AAC5B,EAAE,MAAM;AACR,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,iBAAiB,GAAG,QAAQ,EAAE,GAAG,EAAE;AACrD,KAAK;AACL,EAAE,OAAO,oBAAoB,CAAC,MAAM,EAAE;AACtC,IAAI,QAAQ;AACZ,IAAI,iBAAiB;AACrB,IAAI,SAAS,EAAE,QAAQ;AACvB,GAAG,CAAC;AACJ,CAAC;;AAED,MAAM,oBAAoB,GAAG;AAC7B,EAAE,MAAM;AACR,EAAE;AACF,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,iBAAiB;AACrB,GAAG,GAAG,EAAE;AACR,KAAK;AACL,EAAE,IAAI,MAAM,KAAK,CAAC,EAAE;AACpB,IAAI,OAAO,CAAC;AACZ,EAAE;AACF,EAAE,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACxC,EAAE,IAAI,eAAe,GAAG,CAAC,EAAE;AAC3B,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,iBAAiB,GAAG,CAAC,CAAC;AAC3D,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,IAAI,OAAO,eAAe,GAAG,WAAW,EAAE;AAC1C,MAAM,eAAe,IAAI,EAAE;AAC3B,MAAM,CAAC,IAAI,EAAE;AACb,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC;AAChD,IAAI,MAAM,OAAO,GAAG,SAAS,GAAG,CAAC;AACjC,IAAI,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO;AAC1C,EAAE;AACF,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC;AACrC,EAAE,MAAM,gBAAgB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI;AAC3D,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC;AAC/C,EAAE,MAAM,OAAO,GAAG,SAAS,GAAG,IAAI;AAClC,EAAE,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO;AACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5FA,MAAM,OAAO,GAAG;AAChB,EAAE,IAAI,EAAE,cAAc;AACtB,EAAE,KAAK,EAAE,aAAa;AACtB,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,GAAG,EAAE,UAAU;AACjB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,MAAM,EAAE,MAAM;AAChB,EAAE,MAAM,EAAE,IAAI;AACd,CAAC;AACD,MAAMC,WAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,MAAM,kBAAkB,GAAGA,WAAS,CAACA,WAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1D,MAAM,kBAAkB,GAAG;AAC3B,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;AACrD,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;AACxD,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;AACrD,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;AAClD,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;AACrD,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;AAC3D,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;AAC3D,EAAE,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACrE,CAAC;;AAEW,MAAC,oBAAoB,GAAG;AACpC,EAAE,EAAE;AACJ,EAAE,EAAE,KAAK,EAAE,eAAe,GAAG,kBAAkB,EAAE,GAAG,EAAE;AACtD,KAAK;AACL,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;AACjB,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAI;AACJ,IAAI,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7C,EAAE;AACF,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;AAC5C,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,OAAO,mBAAmB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;AACnE,EAAE;AACF,EAAE,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,EAAE;AACnD,IAAI,KAAK;AACT,IAAI,eAAe;AACnB,GAAG,CAAC;AACJ,EAAE,MAAM,aAAa,GAAG,mBAAmB,CAAC,SAAS,EAAE;AACvD,IAAI,KAAK;AACT,IAAI,eAAe;AACnB,GAAG,CAAC;AACJ,EAAE,OAAO,eAAe,CAAC,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC;AACjE;AACA,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK;AAClE,EAAE,MAAM,KAAK;AACb,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5E,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACxB,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK;AAChD,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChC,EAAE;AACF,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE;AAClB,IAAI,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI;AAC/C,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjC,EAAE;AACF,EAAE,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM;AAC/C,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,gBAAgB,GAAG;AAChC,EAAE,EAAE;AACJ,EAAE;AACF,IAAI,KAAK;AACT,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,QAAQ;AACZ,IAAI,eAAe,GAAG,kBAAkB;AACxC,GAAG,GAAG,EAAE;AACR,KAAK;AACL,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE;AACd,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAI;AACJ,IAAI,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7C,EAAE;AACF,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;AAC5C,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,MAAM,gBAAgB,GAAGA,WAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAC5D,IAAI,MAAM,YAAY,GAAGA,WAAS,CAAC,gBAAgB,GAAG,CAAC,CAAC;AACxD,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI;AACpD,QAAQ,IAAI;AACZ,IAAI,OAAO,oBAAoB,CAAC,OAAO,EAAE;AACzC,MAAM,QAAQ;AACd,QAAQ,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC/E,MAAM,QAAQ;AACd,MAAM,KAAK;AACX,MAAM,OAAO;AACb,MAAM,eAAe;AACrB,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,EAAE;AACpD,IAAI,QAAQ,EAAE,QAAQ,KAAK,SAAS,GAAG,CAAC,GAAG,QAAQ;AACnD,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,eAAe;AACnB,GAAG,CAAC;AACJ,EAAE,MAAM,aAAa,GAAG,oBAAoB,CAAC,SAAS,EAAE;AACxD,IAAI,QAAQ,EAAE,QAAQ,KAAK,SAAS,GAAG,CAAC,GAAG,QAAQ;AACnD,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,eAAe;AACnB,GAAG,CAAC;AACJ,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;AAC3C,EAAE;AACF,EAAE,OAAO,eAAe,CAAC,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC;AACjE;AACA,MAAM,oBAAoB,GAAG;AAC7B,EAAE,IAAI;AACN,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE;AACzD,KAAK;AACL,EAAE,IAAI,KAAK,GAAG;AACd,MAAM,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE;AAClD,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC5C,EAAE,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,IAAI,QAAQ,EAAE;AACxE;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,IAAI,CAAC,CAAC;AAC9C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM;AACpD,EAAE;AACF,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACxB,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK;AAChD,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChC,EAAE;AACF,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE;AAClB,IAAI,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI;AAC/C,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjC,EAAE;AACF,EAAE,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM;AAC/C,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC;;AAED,MAAM,OAAO,GAAG,CAAC,EAAE,KAAK;AACxB,EAAE,IAAI,aAAa,GAAG,kBAAkB;AACxC,EAAE,IAAI,cAAc,GAAG,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACvD,EAAE,MAAM,cAAc,GAAGA,WAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAK;AAC3D,IAAI,IAAI,QAAQ,KAAK,kBAAkB,EAAE;AACzC,MAAM,OAAO,KAAK;AAClB,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;AACvC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC;AAChD,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,aAAa,GAAG,QAAQ;AAC9B,MAAM,cAAc,GAAG,SAAS;AAChC,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC,CAAC;AACJ,EAAE,IAAI,aAAa,KAAK,kBAAkB,EAAE;AAC5C,IAAI,OAAO;AACX,MAAM,OAAO,EAAE;AACf,QAAQ,IAAI,EAAE,aAAa;AAC3B,QAAQ,KAAK,EAAE,cAAc;AAC7B,OAAO;AACP,KAAK;AACL,EAAE;AACF,EAAE,MAAM,WAAW,GAAG,EAAE,GAAG,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;AAClE,EAAE,MAAM,iBAAiB,GAAGA,WAAS,CAAC,cAAc,GAAG,CAAC,CAAC;AACzD,EAAE,MAAM,kBAAkB,GAAG,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;AACrE;AACA;AACA;AACA;AACA,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;AAC1C,IAAI,OAAO;AACX,MAAM,OAAO,EAAE;AACf,QAAQ,IAAI,EAAE,aAAa;AAC3B,QAAQ,KAAK,EAAE,cAAc;AAC7B,OAAO;AACP,KAAK;AACL,EAAE;AACF;AACA;AACA,EAAE,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;AACpD,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;AAC3C,EAAE,MAAM,iBAAiB,GAAG,UAAU,GAAG,eAAe,CAAC;AACzD;AACA;AACA,EAAE,MAAM,oBAAoB;AAC5B,IAAI,kBAAkB,IAAI,iBAAiB,GAAG;AAC9C,QAAQ,iBAAiB,GAAG;AAC5B,QAAQ,kBAAkB;AAC1B;AACA,EAAE,OAAO;AACT,IAAI,OAAO,EAAE;AACb,MAAM,IAAI,EAAE,aAAa;AACzB,MAAM,KAAK,EAAE,cAAc;AAC3B,KAAK;AACL,IAAI,SAAS,EAAE;AACf,MAAM,IAAI,EAAE,iBAAiB;AAC7B,MAAM,KAAK,EAAE,oBAAoB;AACjC,KAAK;AACL,GAAG;AACH,CAAC;;ACxNW,MAAC,gBAAgB,GAAG,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK;AAC7E,EAAE,OAAO,YAAY,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACzD;;AAEY,MAAC,cAAc,GAAG,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK;AACzE,EAAE,OAAO,YAAY,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC5E;;AAEA,MAAM,YAAY,GAAG;AACrB,EAAE,MAAM;AACR,EAAE,EAAE,aAAa,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;AACjD,KAAK;AACL,EAAE,IAAI,MAAM,KAAK,CAAC,EAAE;AACpB,IAAI,OAAO,CAAC,GAAG,CAAC;AAChB,EAAE;AACF,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG;AAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;AACzB,GAAG;AACH,EAAE,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;AACtD,EAAE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;AACvC,EAAE,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC9B,IAAI,IAAI,UAAU,GAAG,GAAG,EAAE;AAC1B,MAAM,QAAQ,GAAG,CAAC;AAClB,IAAI,CAAC,MAAM;AACX,MAAM,QAAQ,GAAG,CAAC;AAClB,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,UAAU,EAAE;AAC5D,IAAI,QAAQ;AACZ,IAAI,iBAAiB,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ,EAAE,MAAM,KAAK,GAAG;AAChB,MAAM,iBAAiB,CAAC,OAAO,CAAC,QAAQ;AACxC,MAAM,iBAAiB;AACvB,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChC,EAAE;AACF,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC;;AAED,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;;AC3CxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,GAAG,IAAI;AACF,MAAC,qBAAqB,GAAG,CAAC,OAAO,KAAK;AAClD,EAAE,GAAG,GAAG,OAAO;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,eAAe,GAAG;AAC/B,EAAE,QAAQ;AACV,EAAE,YAAY;AACd,EAAE,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,EAAE;AAC3B,KAAK;AACL,EAAE,IAAI,CAAC,YAAY,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACrD,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;AAC9C,EAAE,IAAI,QAAQ,GAAG,KAAK;AACtB,EAAE,MAAM,QAAQ,GAAG,EAAE;AACrB,EAAE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC5B,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;AAC9C,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AACxB,IAAI,IAAI,KAAK,GAAG,YAAY,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC;AACrD,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AACrC,MAAM,KAAK,GAAG,KAAK,EAAE;AACrB,IAAI;AACJ,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAC1C,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,QAAQ,GAAG,IAAI;AACvB,MAAM,CAAC,MAAM;AACb,QAAQ,OAAO,CAAC,IAAI;AACpB,UAAU,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,iDAAiD,CAAC;AACvH,SAAS;AACT,MAAM;AACN,IAAI;AACJ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,EAAE;AACF,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5B,EAAE;AACF,EAAE,OAAO,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC;AACrC;;AAEA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,KAAK;AACtD,EAAE,IAAI,GAAG,IAAI,YAAY,EAAE;AAC3B,IAAI,OAAO,YAAY,CAAC,GAAG,CAAC;AAC5B,EAAE;AACF,EAAE,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AACnC,EAAE,IAAI,QAAQ,KAAK,EAAE,EAAE;AACvB,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxC,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;AACrC,IAAI,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9C,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;AACjC,MAAM,IAAI,MAAM,KAAK,SAAS,EAAE;AAChC,QAAQ,OAAO,MAAM;AACrB,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,QAAQ;AACjB,CAAC;;AC5GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,YAAY;AAChB,IAAI,iBAAiB,GAAG,MAAM;AAC9B,EAAE,YAAY,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM;AACrE,EAAE,OAAO,YAAY;AACrB,CAAC;;AAEW,MAAC,cAAc,GAAG,MAAM,iBAAiB;;AAErD;AACA;AACA;AACA;AACY,MAAC,oBAAoB,GAAG,CAAC,MAAM,KAAK;AAChD,EAAE,iBAAiB,GAAG,MAAM;AAC5B;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK;AAC3E,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AAC/B;AACA;AACA;AACA,EAAE,IAAI,kBAAkB,GAAG,CAAC;;AAE5B;AACA;AACA;AACA;AACA,EAAE,MAAM,sBAAsB,GAAG,WAAW,KAAK,SAAS;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,gBAAgB;AACtB,EAAE,IAAI,2BAA2B;AACjC,EAAE,IAAI,uBAAuB,GAAG,EAAE;AAClC,EAAE,MAAM,aAAa,GAAG,MAAM;AAC9B,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ;AACR,QAAQ,cAAc,EAAE;AACxB,IAAI;AACJ,MAAM,uBAAuB,KAAK,kBAAkB;AACpD,MAAM,2BAA2B,KAAK;AACtC,MAAM;AACN,MAAM,OAAO,gBAAgB;AAC7B,IAAI;AACJ,IAAI,gBAAgB,GAAG,aAAa,CAAC,kBAAkB,EAAE,WAAW,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"
91
91
  }