From c8b13286f22d508d37b81731600027e6745deddb Mon Sep 17 00:00:00 2001 From: doxa-maps-88655c70 <88627970+doxa-maps-88655c70@users.noreply.github.com> Date: Fri, 25 Sep 2026 04:22:54 +0000 Subject: [PATCH] Research Gallery: speak the host page's language, and prove the composites' links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language. The gallery fell back to the browser's language and forced it onto every nested map through profile-config.locale, while its own rail stayed English. Measured: a Spanish page viewed in a German browser showed German maps under an English rail. It now follows the ladder every nested map already uses: the `language` attribute, then ?lang=, then (watched live, so a host that switches language switches the gallery), then English. The browser only counts once a visitor has used the gallery's own switcher. Its own words (rail, sections, hints, badges, notice) now ship in all 11 locales, in a private src/strings.js that reuses the library's terms. Rail sweep, 11 locales at 1400px and 390px: 21 of 22 clean. The one clip, Italian 'Avanzamento della preghiera' (191px in a 176px slot), now uses the rail form 'Avanzamento preghiera'. A live switch from en to pt-BR re-renders the rail. Interop (matrix cell D). check:gallery-embed gains a `linked` phase that drives each composite's real control INSIDE a gallery tab: - Big Picture: a facet shows "Showing 1,309" in the grid. - Simple Research: a grid search narrows 2107 → 3. Its halves are independent by design. - Regions: clicking "Africa" in the list retitles the dashboard "Africa". - UPG-100: "Show on map" brings the map. UPG-100's missing zone selection is an owned, printed LINKED_KNOWN entry. Full gate: js 13, iframe 13, neighbour 13, linked 4. --- internal/check-research-gallery-embed.mjs | 74 ++++++- plugin-designs/doxa-maps-spa/EMBED.md | 2 +- .../doxa-maps-spa/doxa-maps-spa.vue | 82 ++++++-- plugin-designs/doxa-maps-spa/src/strings.js | 195 ++++++++++++++++++ .../doxa-maps/doxa-maps-spa/doxa-maps-spa.js | 18 +- .../doxa-maps-spa/app/index.html | 2 +- .../doxa-maps-spa/doxa-maps-spa/index.html | 2 +- public/doxa-maps/index.html | 2 +- public/doxa-maps/manifest.json | 4 +- 9 files changed, 349 insertions(+), 32 deletions(-) create mode 100644 plugin-designs/doxa-maps-spa/src/strings.js diff --git a/internal/check-research-gallery-embed.mjs b/internal/check-research-gallery-embed.mjs index 1022423b6..405d5f1ef 100644 --- a/internal/check-research-gallery-embed.mjs +++ b/internal/check-research-gallery-embed.mjs @@ -68,6 +68,13 @@ const NEIGHBOUR_KNOWN = { 'regions-dashboard:url': 'regions owner (region-dashboards.vue URL_SYNC ignores urlSync:false)', 'regions-dashboard:title': 'regions owner (region-dashboards.vue syncTitle)', } +// KNOWN, ROUTED gaps in a composite's internal link (not measurable as pass/fail yet: no DOM hook). +const LINKED_KNOWN = { + // upg-100-mfe.vue:143-148 answers `doxa-upg-100-list:show-on-map` with go('map') only; it never + // re-dispatches `doxa:select-zone` (the event upg-100-list.vue:1366-1381 isolates a zone on), so + // "Show on map" scrolls to the map without selecting that list's zone. Routed 2026-09-25. + 'upg-100: "Show on map" does not select the zone on the map': 'upg100-plugin (upg-100-mfe.vue:143 re-dispatch doxa:select-zone)', +} const MAPBOX_KNOWN = { // EMPTY ON PURPOSE. The one entry here — my-upg-100-list/upg-100-list.vue:1464 pinning // mapbox-gl.css v3.3.0 regardless of engine — was fixed and the exemption deleted in the SAME @@ -243,6 +250,71 @@ try { } checked.neighbour = ids.length await page.close() + + // ── LINKED PHASE — matrix cell D for the composites: "a filter in one part updates the other", + // driven INSIDE a gallery tab (the composites' own leaf pages are covered by verify:interop; this + // proves the link survives being nested one level deeper, in the gallery's document). Each check + // clicks the composite's REAL control and polls an observable in the OTHER part. Playwright CSS + // pierces open shadow roots, so one locator reaches through the gallery and the composite. + // Mechanics (found 2026-09-25, file:line in each owner's plugin): + // Big Picture dashboard facet → `dashboard-filter` emit → grid props; the grid's count + // line (.repel) is ABSENT until a filter applies, then reads "Showing N". + // Simple Research the two halves are INDEPENDENT BY DESIGN (research-map-plus-grid.vue:49-56), + // so D asserts each half narrows on its own control — the grid's search. + // Regions list `region-selected` → window `doxa-regions-dashboard:select` → the + // dashboard's h1.rd-title becomes the region. + // UPG-100 "Show on map" must bring the map; selecting the ZONE on it is a routed gap. + mode = 'js' + const lp = await browser.newPage({ viewport: { width: 1400, height: 900 } }) + await lp.goto(`http://localhost:${HOST_PORT}/`) + const lbooted = await lp.waitForFunction(() => { const s = document.querySelector('doxa-maps-spa'); return s && s._instance && s._instance.proxy.tabs.some(t => t.resolved) }, null, { timeout: 60000 }).then(() => true, () => false) + const pane = () => lp.locator('doxa-maps-spa section.dms-pane:not([hidden])') + const open = async (id) => { + await lp.evaluate(id => document.querySelector('doxa-maps-spa')._instance.proxy.onSelect(id), id) + await lp.waitForFunction(id => { const vm = document.querySelector('doxa-maps-spa')._instance.proxy; const t = vm.tabs.find(x => x.id === id); return t && t.state === 'ready' }, id, { timeout: 60000 }) + await lp.waitForTimeout(6000) // let the composite fetch + paint its data before touching it + } + const poll = async (fn, ms = 25000) => { const end = Date.now() + ms; let v; while (Date.now() < end) { v = await fn().catch(() => null); if (v && v.ok) return v; await lp.waitForTimeout(700) } return v || { ok: false, why: 'no observation' } } + const LINKS = { + 'dashboard-plus-grid': async () => { + const count = pane().locator('.repel').filter({ hasText: /Showing/ }) + const before = await count.count() + const facet = pane().locator('[data-facet="wagf_region"][data-value]:not(.dash-only)').first() + const val = await facet.getAttribute('data-value', { timeout: 20000 }) + await facet.click() + return poll(async () => { const n = await count.count(); const txt = n ? await count.first().innerText() : ''; return { ok: before === 0 && /Showing\s+[\d,]+/.test(txt), why: `facet wagf_region=${val} → grid count line ${n ? '"' + txt.trim().slice(0, 40) + '"' : 'still absent'}` } }) + }, + 'research-map-plus-grid': async () => { + const total = pane().locator('.repel').first() + const num = async () => Number(((await total.innerText({ timeout: 20000 })).match(/[\d,]+/) || ['0'])[0].replace(/,/g, '')) + const before = await num() + await pane().locator('.pgg-search input').first().fill('Kurd') + return poll(async () => { const after = await num(); return { ok: before > 0 && after > 0 && after < before, why: `grid search "Kurd": ${before} → ${after}` } }) + }, + 'regions-dashboard': async () => { + const btn = pane().locator('button.region-card__link').first() + const name = (await btn.innerText({ timeout: 20000 })).trim() + const title = pane().locator('h1.rd-title').first() + const before = (await title.innerText({ timeout: 20000 }).catch(() => '')).trim() + await btn.click() + return poll(async () => { const t = (await title.innerText()).trim(); return { ok: t !== before && t.includes(name), why: `list "${name}" → dashboard title "${before}" → "${t}"` } }) + }, + 'upg-100': async () => { + const tape = pane().locator('.card[data-list-id] button.tape.tape-h').first() + await tape.click({ timeout: 20000 }) + return poll(async () => { const on = pane().locator('.viewsel button[aria-pressed="true"]'); const txt = (await on.first().innerText()).trim(); return { ok: /map/i.test(txt) || /карт|mapa|carte|地图|خريطة|मानचित्र|karte|mappa|hartă/i.test(txt), why: `"Show on map" → active view "${txt}"` } }) + } + } + if (!lbooted) fails.push('[linked] the gallery did not boot within 60s') + for (const [id, run] of Object.entries(lbooted ? LINKS : {})) { + let r + try { await open(id); r = await run() } catch (e) { r = { ok: false, why: 'threw: ' + String(e.message || e).split('\n')[0].slice(0, 160) } } + console.log(`${r.ok ? 'PASS' : 'FAIL'} [linked] ${id}: ${r.why}`) + if (!r.ok) fails.push(`[linked] ${id}: ${r.why}`) + } + for (const [k, owner] of Object.entries(LINKED_KNOWN)) console.log(`KNOWN [linked] ${k} — owner: ${owner}`) + checked.linked = Object.keys(LINKS).length + await lp.close() } } finally { await browser.close(); cleanup() } @@ -250,7 +322,7 @@ try { // this entry in an inline # comment, so an appended --mode landed inside the comment) must not // read as "both modes green": each requested mode has to have driven at least one tab. for (const m of MODES) if (!checked[m]) fails.push(`[${m}] checked 0 tabs — this mode did not run`) -const tally = [...MODES, ...(checked.neighbour ? ['neighbour'] : [])].map(m => `${m} ${checked[m] || 0} tab(s)`).join(', ') +const tally = [...MODES, ...(checked.neighbour ? ['neighbour'] : []), ...(checked.linked ? ['linked'] : [])].map(m => `${m} ${checked[m] || 0} tab(s)`).join(', ') if (fails.length) { console.log(`\nchecked: ${tally}`) console.log(`\ncheck-research-gallery-embed: FAIL (${fails.length})`); for (const f of fails) console.log(' - ' + f) diff --git a/plugin-designs/doxa-maps-spa/EMBED.md b/plugin-designs/doxa-maps-spa/EMBED.md index 43e947a71..a45381b78 100644 --- a/plugin-designs/doxa-maps-spa/EMBED.md +++ b/plugin-designs/doxa-maps-spa/EMBED.md @@ -37,7 +37,7 @@ Add `?tab=` to the `src` to open a specific map. | Attribute | Default | What it does | |---|---|---| | `tab` | device default (Big Picture on desktop, Simple Research on phones) | Tab id to open first. Changing it later switches tabs. `?tab=` on the page URL works too. | -| `language` | parent page / saved choice | UI language pushed to every tab (`en`, `es`, `fr`, …). | +| `language` | your page's language | UI language for the gallery and every tab. Without it the gallery follows your page: `?lang=` in the URL, then `` (watched live, so a page that switches language switches the gallery), then English. The visitor's browser language is never used on its own. 11 languages ship: `ar de en es fr hi it pt ro ru zh`. | | `api-base-url` | manifest `runtime.apiBaseUrl` | Data API. Only applied when the page has not already set `window.MAP_APP_API_URL`. | | `provider` | each map's own default (Mapbox) | Map engine for every nested map: `maplibre` needs no token and makes no Mapbox requests; `mapbox`. Forwarded to each map and, when the page has not set `window.MAP_PROVIDER`, set there too so maps nested inside composites follow. In the iframe embed use `?provider=maplibre`. | | `tk` | manifest `runtime.token` | Mapbox public token. Only fills `window.MAP_TOKEN` when the page has not set one. | diff --git a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue index 30da7cf2f..3a495b46e 100644 --- a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue +++ b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue @@ -58,7 +58,7 @@ driven by activeIndex. --> - +
- Could not load {{ t.label }}.
+ {{ tr('loadFailed', { label: tabLabel(t) }) }}
{{ manifestError }}
- This tab is composed from manifest.json — build the tree, or serve the built tree, to load it. + {{ tr('manifestHint') }}
@@ -155,6 +155,25 @@ import { defineComponent, inject } from 'vue' import VerticalTabsLayout from '@map/layouts/VerticalTabsLayout.vue' import { SWITCHER_LANGUAGES, loadLocale, saveLocale, getLanguage } from '@map/layouts/app-wrapper-material/languages.js' +import { translate, LOCALES } from './src/strings.js' + +// THE HOST PAGE'S LANGUAGE, by the same ladder every nested map already uses (library/i18n +// detectLocale): ?lang= / ?locale= on the page URL, then . '' when the page says nothing. +// NOT navigator.language: the gallery used to fall back to the BROWSER's language and force it onto +// every child through profile-config.locale — measured 2026-09-25, a Spanish page () +// viewed in a German browser rendered its maps in German and its own rail in English. +function detectHostLocale() { + try { + const q = new URLSearchParams(location.search) + const fromUrl = (q.get('lang') || q.get('locale') || '').split('-')[0].toLowerCase() + if (LOCALES.includes(fromUrl)) return fromUrl + } catch { /* no window */ } + try { + const fromHtml = (document.documentElement.lang || '').split('-')[0].toLowerCase() + if (LOCALES.includes(fromHtml)) return fromHtml + } catch { /* no document */ } + return '' +} // The Driver's section/folder nav model, ported from app-wrapper-material/nav.js (the verified // source of the exact sections the Driver wants). Each entry is a GROUP for VerticalTabsLayout; each @@ -180,7 +199,7 @@ const NAV_MODEL = [ // dev-time gate below); the fix is that Dashboards now owns TWO DISTINCT rows of its own — Big // Picture never appears in Prayer Mobilization again — so it is not a one-row section that begs // to be folded away. - { key: 'dashboards', label: 'Dashboards', icon: 'chart', + { key: 'dashboards', label: 'Dashboards', i18n: 'sec.dashboards', icon: 'chart', tabs: [ // 1. Big Picture — desktop default. Present on EVERY width (the device rule is "same tab // order everywhere"), but DISABLED on mobile rather than hidden — see isBigPictureDisabled / @@ -215,7 +234,7 @@ const NAV_MODEL = [ // "if you're trying to mobilize prayer, UPG-100 list probably comes first because it's a NEW thing // to people — you want them introduced to it first" — hand the newcomer the concrete new artifact, // THEN ask them to pray it. - { key: 'prayer-mobilization', label: 'Prayer Mobilization', icon: 'heart', + { key: 'prayer-mobilization', label: 'Prayer Mobilization', i18n: 'sec.prayer', icon: 'heart', tabs: [ { id: 'upg-100', icon: 'list' }, // 1. UPG-100 List — the NEW thing, introduced first { id: 'prayer-map', icon: 'embed' }, // 2. Prayer Progress — now pray the list @@ -226,7 +245,7 @@ const NAV_MODEL = [ // 2 (Simple Research) — so the standalone map is left OUT of every curated section and falls // through to Experimental automatically (see curatedBundles/experimentalTabsFromManifest); that is // correct, not an omission. - { key: 'gospel-research', label: 'Gospel Research', icon: 'search', + { key: 'gospel-research', label: 'Gospel Research', i18n: 'sec.gospel', icon: 'search', tabs: [ { id: 'cities-internet', icon: 'wifi' }, // renamed label: "Cities with Internet" { id: 'gospel-resources', icon: 'book' }, @@ -243,7 +262,7 @@ const NAV_MODEL = [ // Driver set for the data bundler: handle every plugin generically, or the next author gets // nothing. The named sections above stay curated (they encode the teaching order); Experimental // is the automatic catch-all so nothing can go missing. - { key: 'experimental', label: 'Experimental', icon: 'flask', folder: true, open: false, tabs: [] }, + { key: 'experimental', label: 'Experimental', i18n: 'sec.experimental', icon: 'flask', folder: true, open: false, tabs: [] }, ] // Bundles that are NOT candidates for auto-discovery into Experimental, with the reason each is @@ -786,6 +805,9 @@ export default defineComponent({ runtime: {}, // i18n locale switcher (reuses app-wrapper-material/languages.js — persisted, offline, no dep). locale: loadLocale(), + // The host page's own language (detectHostLocale), kept live by a MutationObserver on + // — a host app that switches language at runtime (Nuxt i18n does) re-drives the whole gallery. + hostLang: detectHostLocale(), localeOpen: false, switcherLangs: SWITCHER_LANGUAGES, // Curated tabs start from TAB_DEFS and are COMPLETED from the manifest (tag + scriptUrl) as @@ -872,8 +894,8 @@ export default defineComponent({ // of a mount. const disabled = this.isBigPictureDisabled(t.id) return { - key: t.id, label: t.label, sub: t.sub, icon: r.icon, - badge: disabled ? 'desktop only' : r.badge, disabled + key: t.id, label: this.tabLabel(t), sub: this.tabSub(t), icon: r.icon, + badge: disabled ? this.tr('desktopOnly') : r.badge, disabled } }), seen) @@ -886,10 +908,10 @@ export default defineComponent({ // routing it through `seen` means even a mis-declared bundle can only ever paint one row. rows = rows.concat(dedupeRows( this.tabs.filter(t => t.discovered) - .map(t => ({ key: t.id, label: t.label, sub: t.sub, icon: 'flask', badge: 'lab' })), + .map(t => ({ key: t.id, label: this.tabLabel(t), sub: this.tabSub(t), icon: 'flask', badge: this.tr('lab') })), seen)) } - return { key: g.key, label: g.label, icon: g.icon, folder: !!g.folder, open: g.open, rows } + return { key: g.key, label: g.i18n ? this.tr(g.i18n) : g.label, icon: g.icon, folder: !!g.folder, open: g.open, rows } }) .filter(g => g.rows.length) }, @@ -904,10 +926,17 @@ export default defineComponent({ // 1. `language` prop / profile-config.language|locale|lang — the parent-page (inherited) value. // 2. the manual switcher's data.locale (only meaningful when a header dropdown is present). // Every tab's element receives THIS via profile-config.locale, so the SPA honors one language prop. + // 1. `language` prop / profile-config.language|locale|lang — what the host SAYS. + // 2. the gallery's own switcher choice — only while that switcher is actually offered. + // 3. the host page's language (?lang= / , see detectHostLocale). + // 4. English. effectiveLocale() { const fromProp = (this.language || this.cfg.language || this.cfg.locale || this.cfg.lang || '').trim() - return (fromProp || this.locale || '').split('-')[0].toLowerCase() + const fromSwitcher = this.showLocaleSwitcher ? this.locale : '' + return (fromProp || fromSwitcher || this.hostLang || 'en').split('-')[0].toLowerCase() }, + // The locale the gallery's OWN words render in: the effective one when it ships, else English. + uiLocale() { return LOCALES.includes(this.effectiveLocale) ? this.effectiveLocale : 'en' }, // The engine a HOST asked for ('' = none; each map keeps its own ladder). effectiveProvider() { const p = String(this.provider || this.cfg.provider || '').trim().toLowerCase() @@ -924,6 +953,7 @@ export default defineComponent({ // then drop the row out from under the active highlight — the tab would be mounted but // unreachable, which reads as a broken app rather than a flicker. this.watchWidth() + this.watchHostLang() // Open the first tab immediately (its map is the one load the SPA pays on open). The shared // VerticalTabsLayout owns rail open/close + narrow-screen collapse now. this.select(this.initialIndex()) @@ -937,6 +967,7 @@ export default defineComponent({ // will (a cap-5 SPA is mounted and unmounted by shells, tabs and the studio), and a live listener // holding a reference to a detached component leaks it for the page's lifetime. beforeUnmount() { + if (this._langObs) { this._langObs.disconnect(); this._langObs = null } if (!this._mql || !this._onMedia) return if (this._mql.removeEventListener) this._mql.removeEventListener('change', this._onMedia) else if (this._mql.removeListener) this._mql.removeListener(this._onMedia) @@ -964,6 +995,18 @@ export default defineComponent({ }, methods: { setSlot(i, el) { if (el) this._slots = Object.assign(this._slots || {}, { [i]: el }) }, + // The gallery's own words in uiLocale (src/strings.js). `t` in the template is shadowed by the + // v-for tab variable inside the panes, so those use `tr`; both are the same function. + tr(key, params) { return translate(this.uiLocale, key, params) }, + t(key, params) { return translate(this.uiLocale, key, params) }, + // A curated tab's label/sub come from the string table; a DISCOVERED (Experimental) tab has only + // its manifest title, which stays as published. Its English manifest description is replaced by + // the translated generic subtitle outside English, so no English prose leaks into the rail. + tabLabel(t) { return t.discovered ? t.label : translate(this.uiLocale, 'tab.' + t.id) }, + tabSub(t) { + if (!t.discovered) return translate(this.uiLocale, 'sub.' + t.id) + return this.uiLocale === 'en' ? t.sub : this.tr('experimentalSub') + }, // ── VIEWPORT WATCH (the device rule: same rail, different default + one disabled row) ──────── // Mirrors the SAME (max-width:760px) query VerticalTabsLayout uses. See the `narrow` note in // data() for why the shell must watch it independently. @@ -971,6 +1014,13 @@ export default defineComponent({ // FAIL-SOFT: if matchMedia is unavailable (an old webview, a non-browser render) `narrow` stays // false and the SPA behaves exactly as it did before this change — desktop rail, Big Picture // first. A viewport feature must never be able to take the app down. + // Follow the host page's live. Fail-soft: without MutationObserver the language read + // at mount stands. + watchHostLang() { + if (typeof MutationObserver === 'undefined' || typeof document === 'undefined') return + this._langObs = new MutationObserver(() => { this.hostLang = detectHostLocale() }) + this._langObs.observe(document.documentElement, { attributes: true, attributeFilter: ['lang'] }) + }, watchWidth() { if (typeof window === 'undefined' || !window.matchMedia) return this._mql = window.matchMedia('(max-width: 760px)') @@ -1151,7 +1201,7 @@ export default defineComponent({ // hide." onSelect(key) { if (this.isBigPictureDisabled(key)) { - this.disabledNotice = 'Big Picture only supports desktop — open this page on a desktop to use it.' + this.disabledNotice = this.tr('desktopNotice') clearTimeout(this._noticeTimer) this._noticeTimer = setTimeout(() => { this.disabledNotice = '' }, 4000) return diff --git a/plugin-designs/doxa-maps-spa/src/strings.js b/plugin-designs/doxa-maps-spa/src/strings.js new file mode 100644 index 000000000..6e159b334 --- /dev/null +++ b/plugin-designs/doxa-maps-spa/src/strings.js @@ -0,0 +1,195 @@ +/** + * strings.js — the Research Gallery's own words, in the 11 shipped locales. + * + * PRIVATE TO THIS PLUGIN, on purpose. These ~25 strings belong to the gallery shell alone (its rail, + * sections and status hints), so they live in this folder rather than in library/i18n, whose engine + * inlines every namespace into every bundle. Each nested map translates ITSELF; this only covers the + * chrome around them. + * + * VOCABULARY FOLLOWS THE LIBRARY. Where a term already has a shipped translation it is reused verbatim, + * so the rail row and the map it opens use the same words: legend.title.prayer (Prayer Progress), + * legend.title.gospelResources (Gospel Resources), tabs.regions / tabs.countries, tabs.upg100Zone + * (UPG-100), and tabs.group for "people group" (Pueblo, Peuple, Volksgruppe, …). + * + * `en` is the source and the fallback: a key missing in a locale renders in English rather than as a + * key name. {n} and {label} are the only placeholders. + */ +export const STRINGS = { + en: { + 'sec.dashboards': 'Dashboards', 'sec.prayer': 'Prayer Mobilization', 'sec.gospel': 'Gospel Research', 'sec.experimental': 'Experimental', + 'tab.dashboard-plus-grid': 'Big Picture', 'sub.dashboard-plus-grid': 'dashboard + people-groups grid, stacked', + 'tab.research-map': 'Research Map', 'sub.research-map': 'prayer · engagement · regions', + 'tab.research-map-plus-grid': 'Simple Research', 'sub.research-map-plus-grid': 'research map + people-groups grid', + 'tab.prayer-map': 'Prayer Progress', 'sub.prayer-map': 'simple world prayer map', + 'tab.cities-internet': 'Cities with Internet', 'sub.cities-internet': 'connectivity of key cities', + 'tab.gospel-resources': 'Gospel Resources', 'sub.gospel-resources': 'resources by place', + 'tab.regions-dashboard': 'Regions', 'sub.regions-dashboard': 'regions and their countries', + 'tab.upg-100': 'UPG-100 List', 'sub.upg-100': 'my unreached list + posters', + navLabel: 'Research maps', meta: '{n} maps', loading: 'Loading {label}…', loadFailed: 'Could not load {label}.', + manifestHint: 'This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.', + desktopOnly: 'desktop only', lab: 'lab', experimentalSub: 'experimental bundle', + desktopNotice: 'Big Picture only supports desktop — open this page on a desktop to use it.' + }, + es: { + 'sec.dashboards': 'Paneles', 'sec.prayer': 'Movilización de oración', 'sec.gospel': 'Investigación del Evangelio', 'sec.experimental': 'Experimental', + 'tab.dashboard-plus-grid': 'Panorama general', 'sub.dashboard-plus-grid': 'panel + cuadrícula de pueblos', + 'tab.research-map': 'Mapa de investigación', 'sub.research-map': 'oración · compromiso · regiones', + 'tab.research-map-plus-grid': 'Investigación simple', 'sub.research-map-plus-grid': 'mapa de investigación + cuadrícula de pueblos', + 'tab.prayer-map': 'Progreso de oración', 'sub.prayer-map': 'mapa mundial de oración', + 'tab.cities-internet': 'Ciudades con Internet', 'sub.cities-internet': 'conectividad de ciudades clave', + 'tab.gospel-resources': 'Recursos del Evangelio', 'sub.gospel-resources': 'recursos por lugar', + 'tab.regions-dashboard': 'Regiones', 'sub.regions-dashboard': 'regiones y sus países', + 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'mi lista de no alcanzados + carteles', + navLabel: 'Mapas de investigación', meta: '{n} mapas', loading: 'Cargando {label}…', loadFailed: 'No se pudo cargar {label}.', + manifestHint: 'Esta pestaña se compone a partir de manifest.json: compila el árbol o sirve el árbol compilado para cargarla.', + desktopOnly: 'solo escritorio', lab: 'beta', experimentalSub: 'mapa experimental', + desktopNotice: 'Panorama general solo funciona en escritorio: abre esta página en una computadora para usarlo.' + }, + fr: { + 'sec.dashboards': 'Tableaux de bord', 'sec.prayer': 'Mobilisation à la prière', 'sec.gospel': "Recherche sur l'Évangile", 'sec.experimental': 'Expérimental', + 'tab.dashboard-plus-grid': "Vue d'ensemble", 'sub.dashboard-plus-grid': 'tableau de bord + grille des peuples', + 'tab.research-map': 'Carte de recherche', 'sub.research-map': 'prière · engagement · régions', + 'tab.research-map-plus-grid': 'Recherche simple', 'sub.research-map-plus-grid': 'carte de recherche + grille des peuples', + 'tab.prayer-map': 'Progression de la prière', 'sub.prayer-map': 'carte mondiale de la prière', + 'tab.cities-internet': 'Villes avec Internet', 'sub.cities-internet': 'connectivité des villes clés', + 'tab.gospel-resources': "Ressources de l'Évangile", 'sub.gospel-resources': 'ressources par lieu', + 'tab.regions-dashboard': 'Régions', 'sub.regions-dashboard': 'régions et leurs pays', + 'tab.upg-100': 'Liste UPG-100', 'sub.upg-100': 'ma liste des non atteints + affiches', + navLabel: 'Cartes de recherche', meta: '{n} cartes', loading: 'Chargement de {label}…', loadFailed: 'Impossible de charger {label}.', + manifestHint: "Cet onglet est composé à partir de manifest.json : construisez l'arborescence ou servez l'arborescence construite pour le charger.", + desktopOnly: 'ordinateur uniquement', lab: 'bêta', experimentalSub: 'carte expérimentale', + desktopNotice: "Vue d'ensemble ne fonctionne que sur ordinateur : ouvrez cette page sur un ordinateur pour l'utiliser." + }, + de: { + 'sec.dashboards': 'Dashboards', 'sec.prayer': 'Gebetsmobilisierung', 'sec.gospel': 'Evangeliumsforschung', 'sec.experimental': 'Experimentell', + 'tab.dashboard-plus-grid': 'Gesamtbild', 'sub.dashboard-plus-grid': 'Dashboard + Raster der Volksgruppen', + 'tab.research-map': 'Forschungskarte', 'sub.research-map': 'Gebet · Engagement · Regionen', + 'tab.research-map-plus-grid': 'Einfache Recherche', 'sub.research-map-plus-grid': 'Forschungskarte + Raster der Volksgruppen', + 'tab.prayer-map': 'Gebetsfortschritt', 'sub.prayer-map': 'einfache Weltkarte des Gebets', + 'tab.cities-internet': 'Städte mit Internet', 'sub.cities-internet': 'Konnektivität wichtiger Städte', + 'tab.gospel-resources': 'Evangeliumsressourcen', 'sub.gospel-resources': 'Ressourcen nach Ort', + 'tab.regions-dashboard': 'Regionen', 'sub.regions-dashboard': 'Regionen und ihre Länder', + 'tab.upg-100': 'UPG-100-Liste', 'sub.upg-100': 'meine Liste der Unerreichten + Poster', + navLabel: 'Forschungskarten', meta: '{n} Karten', loading: '{label} wird geladen…', loadFailed: '{label} konnte nicht geladen werden.', + manifestHint: 'Dieser Tab wird aus manifest.json zusammengesetzt – bauen Sie den Baum oder stellen Sie den gebauten Baum bereit, um ihn zu laden.', + desktopOnly: 'nur Desktop', lab: 'Beta', experimentalSub: 'experimentelle Karte', + desktopNotice: 'Gesamtbild funktioniert nur am Desktop – öffnen Sie diese Seite an einem Computer, um es zu nutzen.' + }, + pt: { + 'sec.dashboards': 'Painéis', 'sec.prayer': 'Mobilização de oração', 'sec.gospel': 'Pesquisa do Evangelho', 'sec.experimental': 'Experimental', + 'tab.dashboard-plus-grid': 'Visão geral', 'sub.dashboard-plus-grid': 'painel + grade de povos', + 'tab.research-map': 'Mapa de pesquisa', 'sub.research-map': 'oração · engajamento · regiões', + 'tab.research-map-plus-grid': 'Pesquisa simples', 'sub.research-map-plus-grid': 'mapa de pesquisa + grade de povos', + 'tab.prayer-map': 'Progresso da oração', 'sub.prayer-map': 'mapa mundial de oração', + 'tab.cities-internet': 'Cidades com Internet', 'sub.cities-internet': 'conectividade das principais cidades', + 'tab.gospel-resources': 'Recursos do Evangelho', 'sub.gospel-resources': 'recursos por lugar', + 'tab.regions-dashboard': 'Regiões', 'sub.regions-dashboard': 'regiões e seus países', + 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'minha lista de não alcançados + cartazes', + navLabel: 'Mapas de pesquisa', meta: '{n} mapas', loading: 'Carregando {label}…', loadFailed: 'Não foi possível carregar {label}.', + manifestHint: 'Esta aba é composta a partir do manifest.json — compile a árvore ou sirva a árvore compilada para carregá-la.', + desktopOnly: 'só no computador', lab: 'beta', experimentalSub: 'mapa experimental', + desktopNotice: 'Visão geral só funciona no computador — abra esta página em um computador para usá-la.' + }, + it: { + 'sec.dashboards': 'Dashboard', 'sec.prayer': 'Mobilitazione alla preghiera', 'sec.gospel': 'Ricerca sul Vangelo', 'sec.experimental': 'Sperimentale', + 'tab.dashboard-plus-grid': "Quadro d'insieme", 'sub.dashboard-plus-grid': 'dashboard + griglia dei popoli', + 'tab.research-map': 'Mappa di ricerca', 'sub.research-map': 'preghiera · impegno · regioni', + 'tab.research-map-plus-grid': 'Ricerca semplice', 'sub.research-map-plus-grid': 'mappa di ricerca + griglia dei popoli', + // Rail-length form. The library's legend title 'Avanzamento della preghiera' measured 191px in the + // 176px rail label at both 1400px and 390px (2026-09-25 locale sweep) and was cut off. + 'tab.prayer-map': 'Avanzamento preghiera', 'sub.prayer-map': 'mappa mondiale della preghiera', + 'tab.cities-internet': 'Città con Internet', 'sub.cities-internet': 'connettività delle città chiave', + 'tab.gospel-resources': 'Risorse del Vangelo', 'sub.gospel-resources': 'risorse per luogo', + 'tab.regions-dashboard': 'Regioni', 'sub.regions-dashboard': 'regioni e i loro paesi', + 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'la mia lista dei non raggiunti + poster', + navLabel: 'Mappe di ricerca', meta: '{n} mappe', loading: 'Caricamento di {label}…', loadFailed: 'Impossibile caricare {label}.', + manifestHint: "Questa scheda è composta da manifest.json: compila l'albero o pubblica l'albero compilato per caricarla.", + desktopOnly: 'solo desktop', lab: 'beta', experimentalSub: 'mappa sperimentale', + desktopNotice: "Quadro d'insieme funziona solo su desktop: apri questa pagina su un computer per usarlo." + }, + ro: { + 'sec.dashboards': 'Panouri', 'sec.prayer': 'Mobilizare la rugăciune', 'sec.gospel': 'Cercetarea Evangheliei', 'sec.experimental': 'Experimental', + 'tab.dashboard-plus-grid': 'Imaginea de ansamblu', 'sub.dashboard-plus-grid': 'panou + grila popoarelor', + 'tab.research-map': 'Hartă de cercetare', 'sub.research-map': 'rugăciune · implicare · regiuni', + 'tab.research-map-plus-grid': 'Cercetare simplă', 'sub.research-map-plus-grid': 'hartă de cercetare + grila popoarelor', + 'tab.prayer-map': 'Progresul rugăciunii', 'sub.prayer-map': 'hartă mondială a rugăciunii', + 'tab.cities-internet': 'Orașe cu internet', 'sub.cities-internet': 'conectivitatea orașelor-cheie', + 'tab.gospel-resources': 'Resurse ale Evangheliei', 'sub.gospel-resources': 'resurse după loc', + 'tab.regions-dashboard': 'Regiuni', 'sub.regions-dashboard': 'regiunile și țările lor', + 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'lista mea de neatinși + afișe', + navLabel: 'Hărți de cercetare', meta: '{n} hărți', loading: 'Se încarcă {label}…', loadFailed: '{label} nu a putut fi încărcat.', + manifestHint: 'Această filă este compusă din manifest.json — construiți arborele sau serviți arborele construit pentru a o încărca.', + desktopOnly: 'doar pe desktop', lab: 'beta', experimentalSub: 'hartă experimentală', + desktopNotice: 'Imaginea de ansamblu funcționează doar pe desktop — deschideți această pagină pe un computer pentru a o folosi.' + }, + ru: { + 'sec.dashboards': 'Панели', 'sec.prayer': 'Молитвенная мобилизация', 'sec.gospel': 'Исследование Евангелия', 'sec.experimental': 'Экспериментальное', + 'tab.dashboard-plus-grid': 'Общая картина', 'sub.dashboard-plus-grid': 'панель + таблица народов', + 'tab.research-map': 'Исследовательская карта', 'sub.research-map': 'молитва · вовлечённость · регионы', + 'tab.research-map-plus-grid': 'Простое исследование', 'sub.research-map-plus-grid': 'исследовательская карта + таблица народов', + 'tab.prayer-map': 'Прогресс молитвы', 'sub.prayer-map': 'простая карта молитвы мира', + 'tab.cities-internet': 'Города с интернетом', 'sub.cities-internet': 'подключённость ключевых городов', + 'tab.gospel-resources': 'Евангельские ресурсы', 'sub.gospel-resources': 'ресурсы по местам', + 'tab.regions-dashboard': 'Регионы', 'sub.regions-dashboard': 'регионы и их страны', + 'tab.upg-100': 'Список UPG-100', 'sub.upg-100': 'мой список недостигнутых + плакаты', + navLabel: 'Исследовательские карты', meta: 'Карт: {n}', loading: 'Загрузка: {label}…', loadFailed: 'Не удалось загрузить: {label}.', + manifestHint: 'Эта вкладка собирается из manifest.json — соберите дерево или разместите собранное дерево, чтобы загрузить её.', + desktopOnly: 'только на компьютере', lab: 'бета', experimentalSub: 'экспериментальная карта', + desktopNotice: '«Общая картина» работает только на компьютере — откройте эту страницу на компьютере.' + }, + ar: { + 'sec.dashboards': 'لوحات المعلومات', 'sec.prayer': 'التعبئة للصلاة', 'sec.gospel': 'أبحاث الإنجيل', 'sec.experimental': 'تجريبي', + 'tab.dashboard-plus-grid': 'الصورة الكاملة', 'sub.dashboard-plus-grid': 'لوحة معلومات + شبكة الشعوب', + 'tab.research-map': 'خريطة البحث', 'sub.research-map': 'الصلاة · الانخراط · المناطق', + 'tab.research-map-plus-grid': 'بحث مبسّط', 'sub.research-map-plus-grid': 'خريطة البحث + شبكة الشعوب', + 'tab.prayer-map': 'تقدم الصلاة', 'sub.prayer-map': 'خريطة عالمية مبسّطة للصلاة', + 'tab.cities-internet': 'مدن متصلة بالإنترنت', 'sub.cities-internet': 'اتصال المدن الرئيسية', + 'tab.gospel-resources': 'موارد الإنجيل', 'sub.gospel-resources': 'الموارد حسب المكان', + 'tab.regions-dashboard': 'المناطق', 'sub.regions-dashboard': 'المناطق ودولها', + 'tab.upg-100': 'قائمة UPG-100', 'sub.upg-100': 'قائمتي لغير المُبشَّرين + ملصقات', + navLabel: 'خرائط البحث', meta: 'عدد الخرائط: {n}', loading: 'جارٍ تحميل {label}…', loadFailed: 'تعذّر تحميل {label}.', + manifestHint: 'تُبنى علامة التبويب هذه من manifest.json — ابنِ الشجرة أو قدّم الشجرة المبنية لتحميلها.', + desktopOnly: 'على الحاسوب فقط', lab: 'تجريبي', experimentalSub: 'خريطة تجريبية', + desktopNotice: 'تعمل «الصورة الكاملة» على الحاسوب فقط — افتح هذه الصفحة على حاسوب لاستخدامها.' + }, + hi: { + 'sec.dashboards': 'डैशबोर्ड', 'sec.prayer': 'प्रार्थना संचालन', 'sec.gospel': 'सुसमाचार शोध', 'sec.experimental': 'प्रायोगिक', + 'tab.dashboard-plus-grid': 'संपूर्ण चित्र', 'sub.dashboard-plus-grid': 'डैशबोर्ड + जनसमूहों की ग्रिड', + 'tab.research-map': 'शोध मानचित्र', 'sub.research-map': 'प्रार्थना · सहभागिता · क्षेत्र', + 'tab.research-map-plus-grid': 'सरल शोध', 'sub.research-map-plus-grid': 'शोध मानचित्र + जनसमूहों की ग्रिड', + 'tab.prayer-map': 'प्रार्थना प्रगति', 'sub.prayer-map': 'सरल विश्व प्रार्थना मानचित्र', + 'tab.cities-internet': 'इंटरनेट वाले शहर', 'sub.cities-internet': 'प्रमुख शहरों की कनेक्टिविटी', + 'tab.gospel-resources': 'सुसमाचार संसाधन', 'sub.gospel-resources': 'स्थान के अनुसार संसाधन', + 'tab.regions-dashboard': 'क्षेत्र', 'sub.regions-dashboard': 'क्षेत्र और उनके देश', + 'tab.upg-100': 'UPG-100 सूची', 'sub.upg-100': 'मेरी अप्राप्त सूची + पोस्टर', + navLabel: 'शोध मानचित्र', meta: '{n} मानचित्र', loading: '{label} लोड हो रहा है…', loadFailed: '{label} लोड नहीं हो सका।', + manifestHint: 'यह टैब manifest.json से बनता है — इसे लोड करने के लिए ट्री बनाएँ या बना हुआ ट्री सर्व करें।', + desktopOnly: 'केवल डेस्कटॉप', lab: 'बीटा', experimentalSub: 'प्रायोगिक मानचित्र', + desktopNotice: 'संपूर्ण चित्र केवल डेस्कटॉप पर काम करता है — इसे उपयोग करने के लिए यह पेज कंप्यूटर पर खोलें।' + }, + zh: { + 'sec.dashboards': '仪表板', 'sec.prayer': '祷告动员', 'sec.gospel': '福音研究', 'sec.experimental': '实验性', + 'tab.dashboard-plus-grid': '全景', 'sub.dashboard-plus-grid': '仪表板 + 民族网格', + 'tab.research-map': '研究地图', 'sub.research-map': '祷告 · 参与 · 区域', + 'tab.research-map-plus-grid': '简易研究', 'sub.research-map-plus-grid': '研究地图 + 民族网格', + 'tab.prayer-map': '祷告进度', 'sub.prayer-map': '简易世界祷告地图', + 'tab.cities-internet': '有互联网的城市', 'sub.cities-internet': '主要城市的网络连接', + 'tab.gospel-resources': '福音资源', 'sub.gospel-resources': '按地点划分的资源', + 'tab.regions-dashboard': '区域', 'sub.regions-dashboard': '区域及其国家', + 'tab.upg-100': 'UPG-100 名单', 'sub.upg-100': '我的未得之民名单 + 海报', + navLabel: '研究地图', meta: '{n} 张地图', loading: '正在加载{label}…', loadFailed: '无法加载{label}。', + manifestHint: '此标签页由 manifest.json 组成——请构建目录树或提供已构建的目录树以加载它。', + desktopOnly: '仅限桌面', lab: '测试版', experimentalSub: '实验性地图', + desktopNotice: '全景仅支持桌面设备——请在电脑上打开此页面使用。' + } +} + +export const LOCALES = Object.keys(STRINGS) + +/** Translate `key` into `locale`, falling back to English, then to the key itself. */ +export function translate(locale, key, params) { + const table = STRINGS[locale] || STRINGS.en + let s = table[key] ?? STRINGS.en[key] ?? key + if (params) for (const k in params) s = s.split('{' + k + '}').join(String(params[k])) + return s +} diff --git a/public/doxa-maps/doxa-maps-spa/doxa-maps-spa.js b/public/doxa-maps/doxa-maps-spa/doxa-maps-spa.js index 174dcdbf0..1c1d50fd5 100644 --- a/public/doxa-maps/doxa-maps-spa/doxa-maps-spa.js +++ b/public/doxa-maps/doxa-maps-spa/doxa-maps-spa.js @@ -2,23 +2,23 @@ * @vue/shared v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function Cs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const W={},nt=[],we=()=>{},wi=()=>!1,Vt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Wt=e=>e.startsWith("onUpdate:"),J=Object.assign,ks=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},ko=Object.prototype.hasOwnProperty,H=(e,t)=>ko.call(e,t),k=Array.isArray,Ke=e=>gt(e)==="[object Map]",Kt=e=>gt(e)==="[object Set]",Si=e=>gt(e)==="[object Date]",P=e=>typeof e=="function",G=e=>typeof e=="string",ve=e=>typeof e=="symbol",$=e=>e!==null&&typeof e=="object",Ei=e=>($(e)||P(e))&&P(e.then)&&P(e.catch),Ti=Object.prototype.toString,gt=e=>Ti.call(e),Oo=e=>gt(e).slice(8,-1),zt=e=>gt(e)==="[object Object]",Os=e=>G(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,mt=Cs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),qt=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Mo=/-\w/g,se=qt(e=>e.replace(Mo,t=>t.slice(1).toUpperCase())),Po=/\B([A-Z])/g,me=qt(e=>e.replace(Po,"-$1").toLowerCase()),Gt=qt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ms=qt(e=>e?`on${Gt(e)}`:""),De=(e,t)=>!Object.is(e,t),Ps=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:s})},Ro=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ci=e=>{const t=G(e)?Number(e):NaN;return isNaN(t)?e:t};let ki;const Yt=()=>ki||(ki=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Rs(e){if(k(e)){const t={};for(let s=0;s{if(s){const i=s.split(Io);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function ze(e){let t="";if(G(e))t=e;else if(k(e))for(let s=0;s!!(e&&e.__v_isRef===!0),j=e=>G(e)?e:e==null?"":k(e)||$(e)&&(e.toString===Ti||!P(e.toString))?Pi(e)?j(e.value):JSON.stringify(e,Ri,2):String(e),Ri=(e,t)=>Pi(t)?Ri(e,t.value):Ke(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[i,n],o)=>(s[Ls(i,o)+" =>"]=n,s),{})}:Kt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Ls(s))}:ve(t)?Ls(t):$(t)&&!k(t)&&!zt(t)?String(t):t,Ls=(e,t="")=>{var s;return ve(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** +**/function Os(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const z={},nt=[],we=()=>{},Ti=()=>!1,Vt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),zt=e=>e.startsWith("onUpdate:"),J=Object.assign,Ls=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Pr=Object.prototype.hasOwnProperty,j=(e,t)=>Pr.call(e,t),A=Array.isArray,We=e=>bt(e)==="[object Map]",Wt=e=>bt(e)==="[object Set]",ki=e=>bt(e)==="[object Date]",P=e=>typeof e=="function",q=e=>typeof e=="string",me=e=>typeof e=="symbol",$=e=>e!==null&&typeof e=="object",Ci=e=>($(e)||P(e))&&P(e.then)&&P(e.catch),Ai=Object.prototype.toString,bt=e=>Ai.call(e),Mr=e=>bt(e).slice(8,-1),Kt=e=>bt(e)==="[object Object]",Ps=e=>q(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,gt=Os(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Gt=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Rr=/-\w/g,se=Gt(e=>e.replace(Rr,t=>t.slice(1).toUpperCase())),Ir=/\B([A-Z])/g,ge=Gt(e=>e.replace(Ir,"-$1").toLowerCase()),qt=Gt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ms=Gt(e=>e?`on${qt(e)}`:""),He=(e,t)=>!Object.is(e,t),Rs=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:s})},Nr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Li=e=>{const t=q(e)?Number(e):NaN;return isNaN(t)?e:t};let Pi;const Yt=()=>Pi||(Pi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Is(e){if(A(e)){const t={};for(let s=0;s{if(s){const i=s.split(Dr);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function Ke(e){let t="";if(q(e))t=e;else if(A(e))for(let s=0;s!!(e&&e.__v_isRef===!0),H=e=>q(e)?e:e==null?"":A(e)||$(e)&&(e.toString===Ai||!P(e.toString))?Ii(e)?H(e.value):JSON.stringify(e,Ni,2):String(e),Ni=(e,t)=>Ii(t)?Ni(e,t.value):We(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[i,n],r)=>(s[Ns(i,r)+" =>"]=n,s),{})}:Wt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Ns(s))}:me(t)?Ns(t):$(t)&&!A(t)&&!Kt(t)?String(t):t,Ns=(e,t="")=>{var s;return me(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** * @vue/reactivity v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let ie;class Fo{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&ie&&(ie.active?(this.parent=ie,this.index=(ie.scopes||(ie.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes){const i=this.scopes.slice();for(t=0,s=i.length;t0&&--this._on===0){if(ie===this)ie=this.prevScope;else{let t=ie;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let s,i;for(s=0,i=this.effects.length;s0)return;if(bt){let t=bt;for(bt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;vt;){let t=vt;for(vt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(i){e||(e=i)}t=s}}if(e)throw e}function Di(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Hi(e){let t,s=e.depsTail,i=s;for(;i;){const n=i.prevDep;i.version===-1?(i===s&&(s=n),js(i),Bo(i)):t=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=n}e.deps=t,e.depsTail=s}function Hs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ji(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ji(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===yt)||(e.globalVersion=yt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Hs(e))))return;e.flags|=2;const t=e.dep,s=z,i=be;z=e,be=!0;try{Di(e);const n=e.fn(e._value);(t.version===0||De(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{z=s,be=i,Hi(e),e.flags&=-3}}function js(e,t=!1){const{dep:s,prevSub:i,nextSub:n}=e;if(i&&(i.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=i,e.nextSub=void 0),s.subs===e&&(s.subs=i,!i&&s.computed)){s.computed.flags&=-5;for(let o=s.computed.deps;o;o=o.nextDep)js(o,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Bo(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let be=!0;const Fi=[];function Se(){Fi.push(be),be=!1}function Ee(){const e=Fi.pop();be=e===void 0?!0:e}function $i(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=z;z=void 0;try{t()}finally{z=s}}}let yt=0;class Uo{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Bi{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!z||!be||z===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==z)s=this.activeLink=new Uo(z,this),z.deps?(s.prevDep=z.depsTail,z.depsTail.nextDep=s,z.depsTail=s):z.deps=z.depsTail=s,Ui(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const i=s.nextDep;i.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=i),s.prevDep=z.depsTail,s.nextDep=void 0,z.depsTail.nextDep=s,z.depsTail=s,z.deps===s&&(z.deps=i)}return s}trigger(t){this.version++,yt++,this.notify(t)}notify(t){Ns();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Ds()}}}function Ui(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let i=t.deps;i;i=i.nextDep)Ui(i)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Fs=new WeakMap,Xe=Symbol(""),$s=Symbol(""),xt=Symbol("");function re(e,t,s){if(be&&z){let i=Fs.get(e);i||Fs.set(e,i=new Map);let n=i.get(s);n||(i.set(s,n=new Bi),n.map=i,n.key=s),n.track()}}function He(e,t,s,i,n,o){const r=Fs.get(e);if(!r){yt++;return}const l=a=>{a&&a.trigger()};if(Ns(),t==="clear")r.forEach(l);else{const a=k(e),u=a&&Os(s);if(a&&s==="length"){const d=Number(i);r.forEach((p,S)=>{(S==="length"||S===xt||!ve(S)&&S>=d)&&l(p)})}else switch((s!==void 0||r.has(void 0))&&l(r.get(s)),u&&l(r.get(xt)),t){case"add":a?u&&l(r.get("length")):(l(r.get(Xe)),Ke(e)&&l(r.get($s)));break;case"delete":a||(l(r.get(Xe)),Ke(e)&&l(r.get($s)));break;case"set":Ke(e)&&l(r.get(Xe));break}}Ds()}function ot(e){const t=F(e);return t===e?t:(re(t,"iterate",xt),ye(e)?t:t.map(Fe))}function Jt(e){return re(e=F(e),"iterate",xt),e}function Te(e,t){return qe(e)?rt(Je(e)?Fe(t):t):Fe(t)}const Vo={__proto__:null,[Symbol.iterator](){return Bs(this,Symbol.iterator,e=>Te(this,e))},concat(...e){return ot(this).concat(...e.map(t=>k(t)?ot(t):t))},entries(){return Bs(this,"entries",e=>(e[1]=Te(this,e[1]),e))},every(e,t){return je(this,"every",e,t,void 0,arguments)},filter(e,t){return je(this,"filter",e,t,s=>s.map(i=>Te(this,i)),arguments)},find(e,t){return je(this,"find",e,t,s=>Te(this,s),arguments)},findIndex(e,t){return je(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return je(this,"findLast",e,t,s=>Te(this,s),arguments)},findLastIndex(e,t){return je(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return je(this,"forEach",e,t,void 0,arguments)},includes(...e){return Us(this,"includes",e)},indexOf(...e){return Us(this,"indexOf",e)},join(e){return ot(this).join(e)},lastIndexOf(...e){return Us(this,"lastIndexOf",e)},map(e,t){return je(this,"map",e,t,void 0,arguments)},pop(){return _t(this,"pop")},push(...e){return _t(this,"push",e)},reduce(e,...t){return Vi(this,"reduce",e,t)},reduceRight(e,...t){return Vi(this,"reduceRight",e,t)},shift(){return _t(this,"shift")},some(e,t){return je(this,"some",e,t,void 0,arguments)},splice(...e){return _t(this,"splice",e)},toReversed(){return ot(this).toReversed()},toSorted(e){return ot(this).toSorted(e)},toSpliced(...e){return ot(this).toSpliced(...e)},unshift(...e){return _t(this,"unshift",e)},values(){return Bs(this,"values",e=>Te(this,e))}};function Bs(e,t,s){const i=Jt(e),n=i[t]();return i!==e&&!ye(e)&&(n._next=n.next,n.next=()=>{const o=n._next();return o.done||(o.value=s(o.value)),o}),n}const Wo=Array.prototype;function je(e,t,s,i,n,o){const r=Jt(e),l=r!==e&&!ye(e),a=r[t];if(a!==Wo[t]){const p=a.apply(e,o);return l?Fe(p):p}let u=s;r!==e&&(l?u=function(p,S){return s.call(this,Te(e,p),S,e)}:s.length>2&&(u=function(p,S){return s.call(this,p,S,e)}));const d=a.call(r,u,i);return l&&n?n(d):d}function Vi(e,t,s,i){const n=Jt(e),o=n!==e&&!ye(e);let r=s,l=!1;n!==e&&(o?(l=i.length===0,r=function(u,d,p){return l&&(l=!1,u=Te(e,u)),s.call(this,u,Te(e,d),p,e)}):s.length>3&&(r=function(u,d,p){return s.call(this,u,d,p,e)}));const a=n[t](r,...i);return l?Te(e,a):a}function Us(e,t,s){const i=F(e);re(i,"iterate",xt);const n=i[t](...s);return(n===-1||n===!1)&&zs(s[0])?(s[0]=F(s[0]),i[t](...s)):n}function _t(e,t,s=[]){Se(),Ns();const i=F(e)[t].apply(e,s);return Ds(),Ee(),i}const Ko=Cs("__proto__,__v_isRef,__isVue"),Wi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ve));function zo(e){ve(e)||(e=String(e));const t=F(this);return re(t,"has",e),t.hasOwnProperty(e)}class Ki{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,i){if(s==="__v_skip")return t.__v_skip;const n=this._isReadonly,o=this._isShallow;if(s==="__v_isReactive")return!n;if(s==="__v_isReadonly")return n;if(s==="__v_isShallow")return o;if(s==="__v_raw")return i===(n?o?Ji:Xi:o?Yi:Gi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const r=k(t);if(!n){let a;if(r&&(a=Vo[s]))return a;if(s==="hasOwnProperty")return zo}const l=Reflect.get(t,s,le(t)?t:i);if((ve(s)?Wi.has(s):Ko(s))||(n||re(t,"get",s),o))return l;if(le(l)){const a=r&&Os(s)?l:l.value;return n&&$(a)?Ks(a):a}return $(l)?n?Ks(l):Ws(l):l}}class zi extends Ki{constructor(t=!1){super(!1,t)}set(t,s,i,n){let o=t[s];const r=k(t)&&Os(s);if(!this._isShallow){const u=qe(o);if(!ye(i)&&!qe(i)&&(o=F(o),i=F(i)),!r&&le(o)&&!le(i))return u||(o.value=i),!0}const l=r?Number(s)e,Zt=e=>Reflect.getPrototypeOf(e);function Jo(e,t,s){return function(...i){const n=this.__v_raw,o=F(n),r=Ke(o),l=e==="entries"||e===Symbol.iterator&&r,a=e==="keys"&&r,u=n[e](...i),d=s?Vs:t?rt:Fe;return!t&&re(o,"iterate",a?$s:Xe),J(Object.create(u),{next(){const{value:p,done:S}=u.next();return S?{value:p,done:S}:{value:l?[d(p[0]),d(p[1])]:d(p),done:S}}})}}function Qt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Zo(e,t){const s={get(n){const o=this.__v_raw,r=F(o),l=F(n);e||(De(n,l)&&re(r,"get",n),re(r,"get",l));const{has:a}=Zt(r),u=t?Vs:e?rt:Fe;if(a.call(r,n))return u(o.get(n));if(a.call(r,l))return u(o.get(l));o!==r&&o.get(n)},get size(){const n=this.__v_raw;return!e&&re(F(n),"iterate",Xe),n.size},has(n){const o=this.__v_raw,r=F(o),l=F(n);return e||(De(n,l)&&re(r,"has",n),re(r,"has",l)),n===l?o.has(n):o.has(n)||o.has(l)},forEach(n,o){const r=this,l=r.__v_raw,a=F(l),u=t?Vs:e?rt:Fe;return!e&&re(a,"iterate",Xe),l.forEach((d,p)=>n.call(o,u(d),u(p),r))}};return J(s,e?{add:Qt("add"),set:Qt("set"),delete:Qt("delete"),clear:Qt("clear")}:{add(n){const o=F(this),r=Zt(o),l=F(n),a=!t&&!ye(n)&&!qe(n)?l:n;return r.has.call(o,a)||De(n,a)&&r.has.call(o,n)||De(l,a)&&r.has.call(o,l)||(o.add(a),He(o,"add",a,a)),this},set(n,o){!t&&!ye(o)&&!qe(o)&&(o=F(o));const r=F(this),{has:l,get:a}=Zt(r);let u=l.call(r,n);u||(n=F(n),u=l.call(r,n));const d=a.call(r,n);return r.set(n,o),u?De(o,d)&&He(r,"set",n,o):He(r,"add",n,o),this},delete(n){const o=F(this),{has:r,get:l}=Zt(o);let a=r.call(o,n);a||(n=F(n),a=r.call(o,n)),l&&l.call(o,n);const u=o.delete(n);return a&&He(o,"delete",n,void 0),u},clear(){const n=F(this),o=n.size!==0,r=n.clear();return o&&He(n,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(n=>{s[n]=Jo(n,e,t)}),s}function es(e,t){const s=Zo(e,t);return(i,n,o)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?i:Reflect.get(H(s,n)&&n in i?s:i,n,o)}const Qo={get:es(!1,!1)},er={get:es(!1,!0)},tr={get:es(!0,!1)},sr={get:es(!0,!0)},Gi=new WeakMap,Yi=new WeakMap,Xi=new WeakMap,Ji=new WeakMap;function ir(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ws(e){return qe(e)?e:ts(e,!1,qo,Qo,Gi)}function nr(e){return ts(e,!1,Yo,er,Yi)}function Ks(e){return ts(e,!0,Go,tr,Xi)}function Ic(e){return ts(e,!0,Xo,sr,Ji)}function ts(e,t,s,i,n){if(!$(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=n.get(e);if(o)return o;const r=ir(Oo(e));if(r===0)return e;const l=new Proxy(e,r===2?i:s);return n.set(e,l),l}function Je(e){return qe(e)?Je(e.__v_raw):!!(e&&e.__v_isReactive)}function qe(e){return!!(e&&e.__v_isReadonly)}function ye(e){return!!(e&&e.__v_isShallow)}function zs(e){return e?!!e.__v_raw:!1}function F(e){const t=e&&e.__v_raw;return t?F(t):e}function or(e){return!H(e,"__v_skip")&&Object.isExtensible(e)&&Ai(e,"__v_skip",!0),e}const Fe=e=>$(e)?Ws(e):e,rt=e=>$(e)?Ks(e):e;function le(e){return e?e.__v_isRef===!0:!1}function Zi(e){return le(e)?e.value:e}const rr={get:(e,t,s)=>t==="__v_raw"?e:Zi(Reflect.get(e,t,s)),set:(e,t,s,i)=>{const n=e[t];return le(n)&&!le(s)?(n.value=s,!0):Reflect.set(e,t,s,i)}};function Qi(e){return Je(e)?e:new Proxy(e,rr)}class lr{constructor(t,s,i){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Bi(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=yt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&z!==this)return Ni(this,!0),!0}get value(){const t=this.dep.track();return ji(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ar(e,t,s=!1){let i,n;return P(e)?i=e:(i=e.get,n=e.set),new lr(i,n,s)}const ss={},is=new WeakMap;let Ze;function cr(e,t=!1,s=Ze){if(s){let i=is.get(s);i||is.set(s,i=[]),i.push(e)}}function fr(e,t,s=W){const{immediate:i,deep:n,once:o,scheduler:r,augmentJob:l,call:a}=s,u=C=>n?C:ye(C)||n===!1||n===0?$e(C,1):$e(C);let d,p,S,E,B=!1,R=!1;if(le(e)?(p=()=>e.value,B=ye(e)):Je(e)?(p=()=>u(e),B=!0):k(e)?(R=!0,B=e.some(C=>Je(C)||ye(C)),p=()=>e.map(C=>{if(le(C))return C.value;if(Je(C))return u(C);if(P(C))return a?a(C,2):C()})):P(e)?t?p=a?()=>a(e,2):e:p=()=>{if(S){Se();try{S()}finally{Ee()}}const C=Ze;Ze=d;try{return a?a(e,3,[E]):e(E)}finally{Ze=C}}:p=we,t&&n){const C=p,te=n===!0?1/0:n;p=()=>$e(C(),te)}const Z=$o(),Y=()=>{d.stop(),Z&&Z.active&&ks(Z.effects,d)};if(o&&t){const C=t;t=(...te)=>{const Me=C(...te);return Y(),Me}}let D=R?new Array(e.length).fill(ss):ss;const U=C=>{if(!(!(d.flags&1)||!d.dirty&&!C))if(t){const te=d.run();if(C||n||B||(R?te.some((Me,Pe)=>De(Me,D[Pe])):De(te,D))){S&&S();const Me=Ze;Ze=d;try{const Pe=[te,D===ss?void 0:R&&D[0]===ss?[]:D,E];D=te,a?a(t,3,Pe):t(...Pe)}finally{Ze=Me}}}else d.run()};return l&&l(U),d=new Li(p),d.scheduler=r?()=>r(U,!1):U,E=C=>cr(C,!1,d),S=d.onStop=()=>{const C=is.get(d);if(C){if(a)a(C,4);else for(const te of C)te();is.delete(d)}},t?i?U(!0):D=d.run():r?r(U.bind(null,!0),!0):d.run(),Y.pause=d.pause.bind(d),Y.resume=d.resume.bind(d),Y.stop=Y,Y}function $e(e,t=1/0,s){if(t<=0||!$(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,le(e))$e(e.value,t,s);else if(k(e))for(let i=0;i{$e(i,t,s)});else if(zt(e)){for(const i in e)$e(e[i],t,s);for(const i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&$e(e[i],t,s)}return e}/** +**/let ie;class Br{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&ie&&(ie.active?(this.parent=ie,this.index=(ie.scopes||(ie.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes){const i=this.scopes.slice();for(t=0,s=i.length;t0&&--this._on===0){if(ie===this)ie=this.prevScope;else{let t=ie;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let s,i;for(s=0,i=this.effects.length;s0)return;if(vt){let t=vt;for(vt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;mt;){let t=mt;for(mt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(i){e||(e=i)}t=s}}if(e)throw e}function Fi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function $i(e){let t,s=e.depsTail,i=s;for(;i;){const n=i.prevDep;i.version===-1?(i===s&&(s=n),$s(i),zr(i)):t=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=n}e.deps=t,e.depsTail=s}function Fs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ui(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ui(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===yt)||(e.globalVersion=yt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Fs(e))))return;e.flags|=2;const t=e.dep,s=K,i=ve;K=e,ve=!0;try{Fi(e);const n=e.fn(e._value);(t.version===0||He(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{K=s,ve=i,$i(e),e.flags&=-3}}function $s(e,t=!1){const{dep:s,prevSub:i,nextSub:n}=e;if(i&&(i.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=i,e.nextSub=void 0),s.subs===e&&(s.subs=i,!i&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)$s(r,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function zr(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let ve=!0;const Bi=[];function Se(){Bi.push(ve),ve=!1}function Ee(){const e=Bi.pop();ve=e===void 0?!0:e}function Vi(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=K;K=void 0;try{t()}finally{K=s}}}let yt=0;class Wr{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class zi{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!K||!ve||K===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==K)s=this.activeLink=new Wr(K,this),K.deps?(s.prevDep=K.depsTail,K.depsTail.nextDep=s,K.depsTail=s):K.deps=K.depsTail=s,Wi(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const i=s.nextDep;i.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=i),s.prevDep=K.depsTail,s.nextDep=void 0,K.depsTail.nextDep=s,K.depsTail=s,K.deps===s&&(K.deps=i)}return s}trigger(t){this.version++,yt++,this.notify(t)}notify(t){Ds();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{js()}}}function Wi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let i=t.deps;i;i=i.nextDep)Wi(i)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Us=new WeakMap,Xe=Symbol(""),Bs=Symbol(""),xt=Symbol("");function oe(e,t,s){if(ve&&K){let i=Us.get(e);i||Us.set(e,i=new Map);let n=i.get(s);n||(i.set(s,n=new zi),n.map=i,n.key=s),n.track()}}function De(e,t,s,i,n,r){const o=Us.get(e);if(!o){yt++;return}const l=a=>{a&&a.trigger()};if(Ds(),t==="clear")o.forEach(l);else{const a=A(e),f=a&&Ps(s);if(a&&s==="length"){const u=Number(i);o.forEach((h,S)=>{(S==="length"||S===xt||!me(S)&&S>=u)&&l(h)})}else switch((s!==void 0||o.has(void 0))&&l(o.get(s)),f&&l(o.get(xt)),t){case"add":a?f&&l(o.get("length")):(l(o.get(Xe)),We(e)&&l(o.get(Bs)));break;case"delete":a||(l(o.get(Xe)),We(e)&&l(o.get(Bs)));break;case"set":We(e)&&l(o.get(Xe));break}}js()}function rt(e){const t=F(e);return t===e?t:(oe(t,"iterate",xt),ye(e)?t:t.map(Fe))}function Jt(e){return oe(e=F(e),"iterate",xt),e}function Te(e,t){return Ge(e)?ot(Je(e)?Fe(t):t):Fe(t)}const Kr={__proto__:null,[Symbol.iterator](){return Vs(this,Symbol.iterator,e=>Te(this,e))},concat(...e){return rt(this).concat(...e.map(t=>A(t)?rt(t):t))},entries(){return Vs(this,"entries",e=>(e[1]=Te(this,e[1]),e))},every(e,t){return je(this,"every",e,t,void 0,arguments)},filter(e,t){return je(this,"filter",e,t,s=>s.map(i=>Te(this,i)),arguments)},find(e,t){return je(this,"find",e,t,s=>Te(this,s),arguments)},findIndex(e,t){return je(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return je(this,"findLast",e,t,s=>Te(this,s),arguments)},findLastIndex(e,t){return je(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return je(this,"forEach",e,t,void 0,arguments)},includes(...e){return zs(this,"includes",e)},indexOf(...e){return zs(this,"indexOf",e)},join(e){return rt(this).join(e)},lastIndexOf(...e){return zs(this,"lastIndexOf",e)},map(e,t){return je(this,"map",e,t,void 0,arguments)},pop(){return _t(this,"pop")},push(...e){return _t(this,"push",e)},reduce(e,...t){return Ki(this,"reduce",e,t)},reduceRight(e,...t){return Ki(this,"reduceRight",e,t)},shift(){return _t(this,"shift")},some(e,t){return je(this,"some",e,t,void 0,arguments)},splice(...e){return _t(this,"splice",e)},toReversed(){return rt(this).toReversed()},toSorted(e){return rt(this).toSorted(e)},toSpliced(...e){return rt(this).toSpliced(...e)},unshift(...e){return _t(this,"unshift",e)},values(){return Vs(this,"values",e=>Te(this,e))}};function Vs(e,t,s){const i=Jt(e),n=i[t]();return i!==e&&!ye(e)&&(n._next=n.next,n.next=()=>{const r=n._next();return r.done||(r.value=s(r.value)),r}),n}const Gr=Array.prototype;function je(e,t,s,i,n,r){const o=Jt(e),l=o!==e&&!ye(e),a=o[t];if(a!==Gr[t]){const h=a.apply(e,r);return l?Fe(h):h}let f=s;o!==e&&(l?f=function(h,S){return s.call(this,Te(e,h),S,e)}:s.length>2&&(f=function(h,S){return s.call(this,h,S,e)}));const u=a.call(o,f,i);return l&&n?n(u):u}function Ki(e,t,s,i){const n=Jt(e),r=n!==e&&!ye(e);let o=s,l=!1;n!==e&&(r?(l=i.length===0,o=function(f,u,h){return l&&(l=!1,f=Te(e,f)),s.call(this,f,Te(e,u),h,e)}):s.length>3&&(o=function(f,u,h){return s.call(this,f,u,h,e)}));const a=n[t](o,...i);return l?Te(e,a):a}function zs(e,t,s){const i=F(e);oe(i,"iterate",xt);const n=i[t](...s);return(n===-1||n===!1)&&qs(s[0])?(s[0]=F(s[0]),i[t](...s)):n}function _t(e,t,s=[]){Se(),Ds();const i=F(e)[t].apply(e,s);return js(),Ee(),i}const qr=Os("__proto__,__v_isRef,__isVue"),Gi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(me));function Yr(e){me(e)||(e=String(e));const t=F(this);return oe(t,"has",e),t.hasOwnProperty(e)}class qi{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,i){if(s==="__v_skip")return t.__v_skip;const n=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!n;if(s==="__v_isReadonly")return n;if(s==="__v_isShallow")return r;if(s==="__v_raw")return i===(n?r?en:Qi:r?Zi:Ji).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const o=A(t);if(!n){let a;if(o&&(a=Kr[s]))return a;if(s==="hasOwnProperty")return Yr}const l=Reflect.get(t,s,le(t)?t:i);if((me(s)?Gi.has(s):qr(s))||(n||oe(t,"get",s),r))return l;if(le(l)){const a=o&&Ps(s)?l:l.value;return n&&$(a)?Gs(a):a}return $(l)?n?Gs(l):Ks(l):l}}class Yi extends qi{constructor(t=!1){super(!1,t)}set(t,s,i,n){let r=t[s];const o=A(t)&&Ps(s);if(!this._isShallow){const f=Ge(r);if(!ye(i)&&!Ge(i)&&(r=F(r),i=F(i)),!o&&le(r)&&!le(i))return f||(r.value=i),!0}const l=o?Number(s)e,Zt=e=>Reflect.getPrototypeOf(e);function eo(e,t,s){return function(...i){const n=this.__v_raw,r=F(n),o=We(r),l=e==="entries"||e===Symbol.iterator&&o,a=e==="keys"&&o,f=n[e](...i),u=s?Ws:t?ot:Fe;return!t&&oe(r,"iterate",a?Bs:Xe),J(Object.create(f),{next(){const{value:h,done:S}=f.next();return S?{value:h,done:S}:{value:l?[u(h[0]),u(h[1])]:u(h),done:S}}})}}function Qt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function to(e,t){const s={get(n){const r=this.__v_raw,o=F(r),l=F(n);e||(He(n,l)&&oe(o,"get",n),oe(o,"get",l));const{has:a}=Zt(o),f=t?Ws:e?ot:Fe;if(a.call(o,n))return f(r.get(n));if(a.call(o,l))return f(r.get(l));r!==o&&r.get(n)},get size(){const n=this.__v_raw;return!e&&oe(F(n),"iterate",Xe),n.size},has(n){const r=this.__v_raw,o=F(r),l=F(n);return e||(He(n,l)&&oe(o,"has",n),oe(o,"has",l)),n===l?r.has(n):r.has(n)||r.has(l)},forEach(n,r){const o=this,l=o.__v_raw,a=F(l),f=t?Ws:e?ot:Fe;return!e&&oe(a,"iterate",Xe),l.forEach((u,h)=>n.call(r,f(u),f(h),o))}};return J(s,e?{add:Qt("add"),set:Qt("set"),delete:Qt("delete"),clear:Qt("clear")}:{add(n){const r=F(this),o=Zt(r),l=F(n),a=!t&&!ye(n)&&!Ge(n)?l:n;return o.has.call(r,a)||He(n,a)&&o.has.call(r,n)||He(l,a)&&o.has.call(r,l)||(r.add(a),De(r,"add",a,a)),this},set(n,r){!t&&!ye(r)&&!Ge(r)&&(r=F(r));const o=F(this),{has:l,get:a}=Zt(o);let f=l.call(o,n);f||(n=F(n),f=l.call(o,n));const u=a.call(o,n);return o.set(n,r),f?He(r,u)&&De(o,"set",n,r):De(o,"add",n,r),this},delete(n){const r=F(this),{has:o,get:l}=Zt(r);let a=o.call(r,n);a||(n=F(n),a=o.call(r,n)),l&&l.call(r,n);const f=r.delete(n);return a&&De(r,"delete",n,void 0),f},clear(){const n=F(this),r=n.size!==0,o=n.clear();return r&&De(n,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(n=>{s[n]=eo(n,e,t)}),s}function es(e,t){const s=to(e,t);return(i,n,r)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?i:Reflect.get(j(s,n)&&n in i?s:i,n,r)}const so={get:es(!1,!1)},io={get:es(!1,!0)},no={get:es(!0,!1)},ro={get:es(!0,!0)},Ji=new WeakMap,Zi=new WeakMap,Qi=new WeakMap,en=new WeakMap;function oo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ks(e){return Ge(e)?e:ts(e,!1,Xr,so,Ji)}function lo(e){return ts(e,!1,Zr,io,Zi)}function Gs(e){return ts(e,!0,Jr,no,Qi)}function jc(e){return ts(e,!0,Qr,ro,en)}function ts(e,t,s,i,n){if(!$(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const r=n.get(e);if(r)return r;const o=oo(Mr(e));if(o===0)return e;const l=new Proxy(e,o===2?i:s);return n.set(e,l),l}function Je(e){return Ge(e)?Je(e.__v_raw):!!(e&&e.__v_isReactive)}function Ge(e){return!!(e&&e.__v_isReadonly)}function ye(e){return!!(e&&e.__v_isShallow)}function qs(e){return e?!!e.__v_raw:!1}function F(e){const t=e&&e.__v_raw;return t?F(t):e}function ao(e){return!j(e,"__v_skip")&&Object.isExtensible(e)&&Oi(e,"__v_skip",!0),e}const Fe=e=>$(e)?Ks(e):e,ot=e=>$(e)?Gs(e):e;function le(e){return e?e.__v_isRef===!0:!1}function tn(e){return le(e)?e.value:e}const co={get:(e,t,s)=>t==="__v_raw"?e:tn(Reflect.get(e,t,s)),set:(e,t,s,i)=>{const n=e[t];return le(n)&&!le(s)?(n.value=s,!0):Reflect.set(e,t,s,i)}};function sn(e){return Je(e)?e:new Proxy(e,co)}class uo{constructor(t,s,i){this.fn=t,this.setter=s,this._value=void 0,this.dep=new zi(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=yt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&K!==this)return ji(this,!0),!0}get value(){const t=this.dep.track();return Ui(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function fo(e,t,s=!1){let i,n;return P(e)?i=e:(i=e.get,n=e.set),new uo(i,n,s)}const ss={},is=new WeakMap;let Ze;function po(e,t=!1,s=Ze){if(s){let i=is.get(s);i||is.set(s,i=[]),i.push(e)}}function ho(e,t,s=z){const{immediate:i,deep:n,once:r,scheduler:o,augmentJob:l,call:a}=s,f=C=>n?C:ye(C)||n===!1||n===0?$e(C,1):$e(C);let u,h,S,E,U=!1,M=!1;if(le(e)?(h=()=>e.value,U=ye(e)):Je(e)?(h=()=>f(e),U=!0):A(e)?(M=!0,U=e.some(C=>Je(C)||ye(C)),h=()=>e.map(C=>{if(le(C))return C.value;if(Je(C))return f(C);if(P(C))return a?a(C,2):C()})):P(e)?t?h=a?()=>a(e,2):e:h=()=>{if(S){Se();try{S()}finally{Ee()}}const C=Ze;Ze=u;try{return a?a(e,3,[E]):e(E)}finally{Ze=C}}:h=we,t&&n){const C=h,te=n===!0?1/0:n;h=()=>$e(C(),te)}const Z=Vr(),Y=()=>{u.stop(),Z&&Z.active&&Ls(Z.effects,u)};if(r&&t){const C=t;t=(...te)=>{const Le=C(...te);return Y(),Le}}let D=M?new Array(e.length).fill(ss):ss;const B=C=>{if(!(!(u.flags&1)||!u.dirty&&!C))if(t){const te=u.run();if(C||n||U||(M?te.some((Le,Pe)=>He(Le,D[Pe])):He(te,D))){S&&S();const Le=Ze;Ze=u;try{const Pe=[te,D===ss?void 0:M&&D[0]===ss?[]:D,E];D=te,a?a(t,3,Pe):t(...Pe)}finally{Ze=Le}}}else u.run()};return l&&l(B),u=new Hi(h),u.scheduler=o?()=>o(B,!1):B,E=C=>po(C,!1,u),S=u.onStop=()=>{const C=is.get(u);if(C){if(a)a(C,4);else for(const te of C)te();is.delete(u)}},t?i?B(!0):D=u.run():o?o(B.bind(null,!0),!0):u.run(),Y.pause=u.pause.bind(u),Y.resume=u.resume.bind(u),Y.stop=Y,Y}function $e(e,t=1/0,s){if(t<=0||!$(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,le(e))$e(e.value,t,s);else if(A(e))for(let i=0;i{$e(i,t,s)});else if(Kt(e)){for(const i in e)$e(e[i],t,s);for(const i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&$e(e[i],t,s)}return e}/** * @vue/runtime-core v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/const wt=[];let qs=!1;function Nc(e,...t){if(qs)return;qs=!0,Se();const s=wt.length?wt[wt.length-1].component:null,i=s&&s.appContext.config.warnHandler,n=dr();if(i)lt(i,s,11,[e+t.map(o=>{var r,l;return(l=(r=o.toString)==null?void 0:r.call(o))!=null?l:JSON.stringify(o)}).join(""),s&&s.proxy,n.map(({vnode:o})=>`at <${eo(s,o.type)}>`).join(` -`),n]);else{const o=[`[Vue warn]: ${e}`,...t];n.length&&o.push(` -`,...ur(n)),console.warn(...o)}Ee(),qs=!1}function dr(){let e=wt[wt.length-1];if(!e)return[];const t=[];for(;e;){const s=t[0];s&&s.vnode===e?s.recurseCount++:t.push({vnode:e,recurseCount:0});const i=e.component&&e.component.parent;e=i&&i.vnode}return t}function ur(e){const t=[];return e.forEach((s,i)=>{t.push(...i===0?[]:[` -`],...hr(s))}),t}function hr({vnode:e,recurseCount:t}){const s=t>0?`... (${t} recursive calls)`:"",i=e.component?e.component.parent==null:!1,n=` at <${eo(e.component,e.type,i)}`,o=">"+s;return e.props?[n,...pr(e.props),o]:[n+o]}function pr(e){const t=[],s=Object.keys(e);return s.slice(0,3).forEach(i=>{t.push(...en(i,e[i]))}),s.length>3&&t.push(" ..."),t}function en(e,t,s){return G(t)?(t=JSON.stringify(t),s?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?s?t:[`${e}=${t}`]:le(t)?(t=en(e,F(t.value),!0),s?t:[`${e}=Ref<`,t,">"]):P(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=F(t),s?t:[`${e}=`,t])}function lt(e,t,s,i){try{return i?e(...i):e()}catch(n){ns(n,t,s)}}function xe(e,t,s,i){if(P(e)){const n=lt(e,t,s,i);return n&&Ei(n)&&n.catch(o=>{ns(o,t,s)}),n}if(k(e)){const n=[];for(let o=0;o>>1,n=ce[i],o=St(n);o=St(s)?ce.push(e):ce.splice(mr(t),0,e),e.flags|=1,nn()}}function nn(){os||(os=tn.then(ln))}function vr(e){if(!k(e))Ge&&e.id===-1?Ge.splice(ct+1,0,e):e.flags&1||(at.push(e),e.flags|=1);else for(let t=0;tSt(s)-St(i));if(at.length=0,Ge){for(let s=0;se.id==null?e.flags&2?-1:1/0:e.id;function ln(e){try{for(Ae=0;Ae{i._d&&Kn(-1);const o=rs(t),r=Ue.length;let l;try{l=e(...n)}finally{for(let a=Ue.length;a>r;a--)fi();rs(o),i._d&&Kn(1)}return l};return i._n=!0,i._c=!0,i._d=!0,i}function Ys(e,t){if(ne===null)return e;const s=vs(ne),i=e.dirs||(e.dirs=[]);for(let n=0;n1)return s&&P(t)?t.call(i&&i.proxy):t}}const yr=Symbol.for("v-scx"),xr=()=>Tt(yr);function Xs(e,t,s){return cn(e,t,s)}function cn(e,t,s=W){const{immediate:i,deep:n,flush:o,once:r}=s,l=J({},s),a=t&&i||!t&&o!=="post";let u;if(It){if(o==="sync"){const E=xr();u=E.__watcherHandles||(E.__watcherHandles=[])}else if(!a){const E=()=>{};return E.stop=we,E.resume=we,E.pause=we,E}}const d=ae;l.call=(E,B,R)=>xe(E,d,B,R);let p=!1;o==="post"?l.scheduler=E=>{he(E,d&&d.suspense)}:o!=="sync"&&(p=!0,l.scheduler=(E,B)=>{B?E():Gs(E)}),l.augmentJob=E=>{t&&(E.flags|=4),p&&(E.flags|=2,d&&(E.id=d.uid,E.i=d))};const S=fr(e,t,l);return It&&(u?u.push(S):a&&S()),S}function _r(e,t,s){const i=this.proxy,n=G(e)?e.includes(".")?fn(i,e):()=>i[e]:e.bind(i,i);let o;P(t)?o=t:(o=t.handler,s=t);const r=Lt(this),l=cn(n,o.bind(i),s);return r(),l}function fn(e,t){const s=t.split(".");return()=>{let i=e;for(let n=0;ne.__isTeleport,Js=Symbol("_leaveCb");function Sr(e){let t=e[0];if(e.length>1){for(const s of e)if(s.type!==Ce){t=s;break}}return t}function dn(e){if(!ei(e))return ls(e.type)&&e.children?Sr(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:s}=e;if(s){if(t&16)return s[0];if(t&32&&P(s.default))return s.default()}}function Zs(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const s=e.component.subTree;Zs(ls(s.type)&&dn(s)||s,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Qs(e,t){return P(e)?J({name:e.name},t,{setup:e}):e}function un(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function hn(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const as=new WeakMap;function At(e,t,s,i,n=!1){if(k(e)){e.forEach((R,Z)=>At(R,t&&(k(t)?t[Z]:t),s,i,n));return}if(ft(i)&&!n){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&At(e,t,s,i.component.subTree);return}const o=i.shapeFlag&4?vs(i.component):i.el,r=n?null:o,{i:l,r:a}=e,u=t&&t.r,d=l.refs===W?l.refs={}:l.refs,p=l.setupState,S=F(p),E=p===W?wi:R=>hn(d,R)?!1:H(S,R),B=(R,Z)=>!(Z&&hn(d,Z));if(u!=null&&u!==a){if(pn(t),G(u))d[u]=null,E(u)&&(p[u]=null);else if(le(u)){const R=t;B(u,R.k)&&(u.value=null),R.k&&(d[R.k]=null)}}if(P(a))lt(a,l,12,[r,d]);else{const R=G(a),Z=le(a);if(R||Z){const Y=()=>{if(e.f){const D=R?E(a)?p[a]:d[a]:B()||!e.k?a.value:d[e.k];if(n)k(D)&&ks(D,o);else if(k(D))D.includes(o)||D.push(o);else if(R)d[a]=[o],E(a)&&(p[a]=d[a]);else{const U=[o];B(a,e.k)&&(a.value=U),e.k&&(d[e.k]=U)}}else R?(d[a]=r,E(a)&&(p[a]=r)):Z&&(B(a,e.k)&&(a.value=r),e.k&&(d[e.k]=r))};if(r){const D=()=>{Y(),as.delete(e)};D.id=-1,as.set(e,D),he(D,s)}else pn(e),Y()}}}function pn(e){const t=as.get(e);t&&(t.flags|=8,as.delete(e))}Yt().requestIdleCallback,Yt().cancelIdleCallback;const ft=e=>!!e.type.__asyncLoader,ei=e=>e.type.__isKeepAlive;function Er(e,t){gn(e,"a",t)}function Tr(e,t){gn(e,"da",t)}function gn(e,t,s=ae){const i=e.__wdc||(e.__wdc=()=>{let n=s;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(cs(t,i,s),s){let n=s.parent;for(;n&&n.parent;)ei(n.parent.vnode)&&Ar(i,t,s,n),n=n.parent}}function Ar(e,t,s,i){const n=cs(t,e,i,!0);vn(()=>{ks(i[t],n)},s)}function cs(e,t,s=ae,i=!1){if(s){const n=s[e]||(s[e]=[]),o=t.__weh||(t.__weh=(...r)=>{Se();const l=Lt(s),a=xe(t,s,e,r);return l(),Ee(),a});return i?n.unshift(o):n.push(o),o}}const Be=e=>(t,s=ae)=>{(!It||e==="sp")&&cs(e,(...i)=>t(...i),s)},Cr=Be("bm"),mn=Be("m"),kr=Be("bu"),Or=Be("u"),Mr=Be("bum"),vn=Be("um"),Pr=Be("sp"),Rr=Be("rtg"),Lr=Be("rtc");function Ir(e,t=ae){cs("ec",e,t)}const Nr="components";function Dr(e,t){return jr(Nr,e,!0,t)||e}const Hr=Symbol.for("v-ndc");function jr(e,t,s=!0,i=!1){const n=ne||ae;if(n){const o=n.type;{const l=Qn(o,!1);if(l&&(l===t||l===se(t)||l===Gt(se(t))))return o}const r=bn(n[e]||o[e],t)||bn(n.appContext[e],t);return!r&&i?o:r}}function bn(e,t){return e&&(e[t]||e[se(t)]||e[Gt(se(t))])}function dt(e,t,s,i){let n;const o=s,r=k(e);if(r||G(e)){const l=r&&Je(e);let a=!1,u=!1;l&&(a=!ye(e),u=qe(e),e=Jt(e)),n=new Array(e.length);for(let d=0,p=e.length;dt(l,a,void 0,o));else{const l=Object.keys(e);n=new Array(l.length);for(let a=0,u=l.length;a{const o=i.fn(...n);return o&&(o.key=i.key),o}:i.fn)}return e}function Ct(e,t,s,i,n,o){if(s==null&&(s={}),ne.ce||ne.parent&&ft(ne.parent)&&ne.parent.ce){const u=o!=null&&s.key==null?J({},s,{key:o}):s,d=Object.keys(u).length>0;return t!=="default"&&(u.name=t),L(),hs(ee,null,[_e("slot",u,i)],d?-2:64)}let r=e[t];r&&r._c&&(r._d=!1);const l=Ue.length;L();let a;try{const u=r&&yn(r(s)),d=s.key||o||u&&u.key;a=hs(ee,{key:(d&&!ve(d)?d:`_${t}`)+(!u&&i?"_fb":"")},u||(i?i():[]),u&&e._===1?64:-2)}catch(u){for(let d=Ue.length;d>l;d--)fi();throw u}finally{r&&r._c&&(r._d=!0)}return a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),a}function yn(e){return e.some(t=>di(t)?!(t.type===Ce||t.type===ee&&!yn(t.children)):!0)?e:null}const ti=e=>e?Xn(e)?vs(e):ti(e.parent):null,kt=J(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ti(e.parent),$root:e=>ti(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Sn(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=sn.bind(e.proxy)),$watch:e=>_r.bind(e)}),si=(e,t)=>e!==W&&!e.__isScriptSetup&&H(e,t),$r={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:i,data:n,props:o,accessCache:r,type:l,appContext:a}=e;if(t[0]!=="$"){const S=r[t];if(S!==void 0)switch(S){case 1:return i[t];case 2:return n[t];case 4:return s[t];case 3:return o[t]}else{if(si(i,t))return r[t]=1,i[t];if(n!==W&&H(n,t))return r[t]=2,n[t];if(H(o,t))return r[t]=3,o[t];if(s!==W&&H(s,t))return r[t]=4,s[t];ii&&(r[t]=0)}}const u=kt[t];let d,p;if(u)return t==="$attrs"&&re(e.attrs,"get",""),u(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(s!==W&&H(s,t))return r[t]=4,s[t];if(p=a.config.globalProperties,H(p,t))return p[t]},set({_:e},t,s){const{data:i,setupState:n,ctx:o}=e;return si(n,t)?(n[t]=s,!0):i!==W&&H(i,t)?(i[t]=s,!0):H(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:i,appContext:n,props:o,type:r}},l){let a;return!!(s[l]||e!==W&&l[0]!=="$"&&H(e,l)||si(t,l)||H(o,l)||H(i,l)||H(kt,l)||H(n.config.globalProperties,l)||(a=r.__cssModules)&&a[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:H(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function xn(e){return k(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let ii=!0;function Br(e){const t=Sn(e),s=e.proxy,i=e.ctx;ii=!1,t.beforeCreate&&_n(t.beforeCreate,e,"bc");const{data:n,computed:o,methods:r,watch:l,provide:a,inject:u,created:d,beforeMount:p,mounted:S,beforeUpdate:E,updated:B,activated:R,deactivated:Z,beforeDestroy:Y,beforeUnmount:D,destroyed:U,unmounted:C,render:te,renderTracked:Me,renderTriggered:Pe,errorCaptured:Ye,serverPrefetch:ws,expose:tt,inheritAttrs:Ft,components:Ss,directives:Es,filters:xi}=t;if(u&&Ur(u,i,null),r)for(const X in r){const q=r[X];P(q)&&(i[X]=q.bind(s))}if(n){const X=n.call(s,s);$(X)&&(e.data=Ws(X))}if(ii=!0,o)for(const X in o){const q=o[X],st=P(q)?q.bind(s,s):P(q.get)?q.get.bind(s,s):we,Ts=!P(q)&&P(q.set)?q.set.bind(s):we,it=Tl({get:st,set:Ts});Object.defineProperty(i,X,{enumerable:!0,configurable:!0,get:()=>it.value,set:Re=>it.value=Re})}if(l)for(const X in l)wn(l[X],i,s,X);if(a){const X=P(a)?a.call(s):a;Reflect.ownKeys(X).forEach(q=>{br(q,X[q])})}d&&_n(d,e,"c");function ue(X,q){k(q)?q.forEach(st=>X(st.bind(s))):q&&X(q.bind(s))}if(ue(Cr,p),ue(mn,S),ue(kr,E),ue(Or,B),ue(Er,R),ue(Tr,Z),ue(Ir,Ye),ue(Lr,Me),ue(Rr,Pe),ue(Mr,D),ue(vn,C),ue(Pr,ws),k(tt))if(tt.length){const X=e.exposed||(e.exposed={});tt.forEach(q=>{Object.defineProperty(X,q,{get:()=>s[q],set:st=>s[q]=st,enumerable:!0})})}else e.exposed||(e.exposed={});te&&e.render===we&&(e.render=te),Ft!=null&&(e.inheritAttrs=Ft),Ss&&(e.components=Ss),Es&&(e.directives=Es),ws&&un(e)}function Ur(e,t,s=we){k(e)&&(e=ni(e));for(const i in e){const n=e[i];let o;$(n)?"default"in n?o=Tt(n.from||i,n.default,!0):o=Tt(n.from||i):o=Tt(n),le(o)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>o.value,set:r=>o.value=r}):t[i]=o}}function _n(e,t,s){xe(k(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,s)}function wn(e,t,s,i){let n=i.includes(".")?fn(s,i):()=>s[i];if(G(e)){const o=t[e];P(o)&&Xs(n,o)}else if(P(e))Xs(n,e.bind(s));else if($(e))if(k(e))e.forEach(o=>wn(o,t,s,i));else{const o=P(e.handler)?e.handler.bind(s):t[e.handler];P(o)&&Xs(n,o,e)}}function Sn(e){const t=e.type,{mixins:s,extends:i}=t,{mixins:n,optionsCache:o,config:{optionMergeStrategies:r}}=e.appContext,l=o.get(t);let a;return l?a=l:!n.length&&!s&&!i?a=t:(a={},n.length&&n.forEach(u=>fs(a,u,r,!0)),fs(a,t,r)),$(t)&&o.set(t,a),a}function fs(e,t,s,i=!1){const{mixins:n,extends:o}=t;o&&fs(e,o,s,!0),n&&n.forEach(r=>fs(e,r,s,!0));for(const r in t)if(!(i&&r==="expose")){const l=Vr[r]||s&&s[r];e[r]=l?l(e[r],t[r]):t[r]}return e}const Vr={data:En,props:Tn,emits:Tn,methods:Ot,computed:Ot,beforeCreate:fe,created:fe,beforeMount:fe,mounted:fe,beforeUpdate:fe,updated:fe,beforeDestroy:fe,beforeUnmount:fe,destroyed:fe,unmounted:fe,activated:fe,deactivated:fe,errorCaptured:fe,serverPrefetch:fe,components:Ot,directives:Ot,watch:Kr,provide:En,inject:Wr};function En(e,t){return t?e?function(){return J(P(e)?e.call(this,this):e,P(t)?t.call(this,this):t)}:t:e}function Wr(e,t){return Ot(ni(e),ni(t))}function ni(e){if(k(e)){const t={};for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${se(t)}Modifiers`]||e[`${me(t)}Modifiers`];function Yr(e,t,...s){if(e.isUnmounted)return;const i=e.vnode.props||W;let n=s;const o=t.startsWith("update:"),r=o&&Gr(i,t.slice(7));r&&(r.trim&&(n=s.map(d=>G(d)?d.trim():d)),r.number&&(n=n.map(Ro)));let l,a=i[l=Ms(t)]||i[l=Ms(se(t))];!a&&o&&(a=i[l=Ms(me(t))]),a&&xe(a,e,6,n);const u=i[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,xe(u,e,6,n)}}const Xr=new WeakMap;function Cn(e,t,s=!1){const i=s?Xr:t.emitsCache,n=i.get(e);if(n!==void 0)return n;const o=e.emits;let r={},l=!1;if(!P(e)){const a=u=>{const d=Cn(u,t,!0);d&&(l=!0,J(r,d))};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!l?($(e)&&i.set(e,null),null):(k(o)?o.forEach(a=>r[a]=null):J(r,o),$(e)&&i.set(e,r),r)}function ds(e,t){return!e||!Vt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),H(e,t[0].toLowerCase()+t.slice(1))||H(e,me(t))||H(e,t))}function Dc(){}function kn(e){const{type:t,vnode:s,proxy:i,withProxy:n,propsOptions:[o],slots:r,attrs:l,emit:a,render:u,renderCache:d,props:p,data:S,setupState:E,ctx:B,inheritAttrs:R}=e,Z=rs(e);let Y,D;try{if(s.shapeFlag&4){const C=n||i,te=C;Y=ke(u.call(te,C,d,p,E,S,B)),D=l}else{const C=t;Y=ke(C.length>1?C(p,{attrs:l,slots:r,emit:a}):C(p,null)),D=t.props?l:Jr(l)}}catch(C){Ue.length=0,ns(C,e,1),Y=_e(Ce)}let U=Y;if(D&&R!==!1){const C=Object.keys(D),{shapeFlag:te}=U;C.length&&te&7&&(o&&C.some(Wt)&&(D=Zr(D,o)),U=ht(U,D,!1,!0))}if(s.dirs&&(U=ht(U,null,!1,!0),U.dirs=U.dirs?U.dirs.concat(s.dirs):s.dirs),s.transition){const C=ls(U.type)&&dn(U)||U;Zs(C,s.transition)}return Y=U,rs(Z),Y}const Jr=e=>{let t;for(const s in e)(s==="class"||s==="style"||Vt(s))&&((t||(t={}))[s]=e[s]);return t},Zr=(e,t)=>{const s={};for(const i in e)(!Wt(i)||!(i.slice(9)in t))&&(s[i]=e[i]);return s};function Qr(e,t,s){const{props:i,children:n,component:o}=e,{props:r,children:l,patchFlag:a}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&a>=0){if(a&1024)return!0;if(a&16)return i?On(i,r,u):!!r;if(a&8){const d=t.dynamicProps;for(let p=0;pObject.create(Pn),Ln=e=>Object.getPrototypeOf(e)===Pn;function tl(e,t,s,i=!1){const n={},o=Rn();e.propsDefaults=Object.create(null),In(e,t,n,o);for(const r in e.propsOptions[0])r in n||(n[r]=void 0);s?e.props=i?n:nr(n):e.type.props?e.props=n:e.props=o,e.attrs=o}function sl(e,t,s,i){const{props:n,attrs:o,vnode:{patchFlag:r}}=e,l=F(n),[a]=e.propsOptions;let u=!1;if((i||r>0)&&!(r&16)){if(r&8){const d=e.vnode.dynamicProps;for(let p=0;p{a=!0;const[S,E]=Nn(p,t,!0);J(r,S),E&&l.push(...E)};!s&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!o&&!a)return $(e)&&i.set(e,nt),nt;if(k(o))for(let d=0;de==="_"||e==="_ctx"||e==="$stable",li=e=>k(e)?e.map(ke):[ke(e)],nl=(e,t,s)=>{if(t._n)return t;const i=Et((...n)=>li(t(...n)),s);return i._c=!1,i},Hn=(e,t,s)=>{const i=e._ctx;for(const n in e){if(ri(n))continue;const o=e[n];if(P(o))t[n]=nl(n,o,i);else if(o!=null){const r=li(o);t[n]=()=>r}}},jn=(e,t)=>{const s=li(t);e.slots.default=()=>s},Fn=(e,t,s)=>{for(const i in t)(s||!ri(i))&&(e[i]=t[i])},ol=(e,t,s)=>{const i=e.slots=Rn();if(e.vnode.shapeFlag&32){const n=t._;n?(Fn(i,t,s),s&&Ai(i,"_",n,!0)):Hn(t,i)}else t&&jn(e,t)},rl=(e,t,s)=>{const{vnode:i,slots:n}=e;let o=!0,r=W;if(i.shapeFlag&32){const l=t._;l?s&&l===1?o=!1:Fn(n,t,s):(o=!t.$stable,Hn(t,n)),r=t}else t&&(jn(e,t),r={default:1});if(o)for(const l in n)!ri(l)&&r[l]==null&&delete n[l]},he=dl;function ll(e){return al(e)}function al(e,t){const s=Yt();s.__VUE__=!0;const{insert:i,remove:n,patchProp:o,createElement:r,createText:l,createComment:a,setText:u,setElementText:d,parentNode:p,nextSibling:S,setScopeId:E=we,insertStaticContent:B}=e,R=(c,f,h,b=null,v=null,g=null,_=void 0,x=null,y=!!f.dynamicChildren)=>{if(c===f)return;c&&!Pt(c,f)&&(b=As(c),Re(c,v,g,!0),c=null),f.patchFlag===-2&&(y=!1,f.dynamicChildren=null);const{type:m,ref:A,shapeFlag:w}=f;switch(m){case us:Z(c,f,h,b);break;case Ce:Y(c,f,h,b);break;case ci:c==null&&D(f,h,b,_);break;case ee:Ss(c,f,h,b,v,g,_,x,y);break;default:w&1?te(c,f,h,b,v,g,_,x,y):w&6?Es(c,f,h,b,v,g,_,x,y):(w&64||w&128)&&m.process(c,f,h,b,v,g,_,x,y,Bt)}A!=null&&v?At(A,c&&c.ref,g,f||c,!f):A==null&&c&&c.ref!=null&&At(c.ref,null,g,c,!0)},Z=(c,f,h,b)=>{if(c==null)i(f.el=l(f.children),h,b);else{const v=f.el=c.el;f.children!==c.children&&u(v,f.children)}},Y=(c,f,h,b)=>{c==null?i(f.el=a(f.children||""),h,b):f.el=c.el},D=(c,f,h,b)=>{[c.el,c.anchor]=B(c.children,f,h,b,c.el,c.anchor)},U=({el:c,anchor:f},h,b)=>{let v;for(;c&&c!==f;)v=S(c),i(c,h,b),c=v;i(f,h,b)},C=({el:c,anchor:f})=>{let h;for(;c&&c!==f;)h=S(c),n(c),c=h;n(f)},te=(c,f,h,b,v,g,_,x,y)=>{if(f.type==="svg"?_="svg":f.type==="math"&&(_="mathml"),c==null)Me(f,h,b,v,g,_,x,y);else{const m=c.el&&c.el._isVueCE?c.el:null;try{m&&m._beginPatch(),ws(c,f,v,g,_,x,y)}finally{m&&m._endPatch()}}},Me=(c,f,h,b,v,g,_,x)=>{let y,m;const{props:A,shapeFlag:w,transition:T,dirs:M}=c;if(y=c.el=r(c.type,g,A&&A.is,A),w&8?d(y,c.children):w&16&&Ye(c.children,y,null,b,v,ai(c,g),_,x),M&&Qe(c,null,b,"created"),Pe(y,c,c.scopeId,_,b),A){for(const K in A)K!=="value"&&!mt(K)&&o(y,K,null,A[K],g,b);"value"in A&&o(y,"value",null,A.value,g),(m=A.onVnodeBeforeMount)&&Oe(m,b,c)}M&&Qe(c,null,b,"beforeMount");const N=cl(v,T);N&&T.beforeEnter(y),i(y,f,h),((m=A&&A.onVnodeMounted)||N||M)&&he(()=>{try{m&&Oe(m,b,c),N&&T.enter(y),M&&Qe(c,null,b,"mounted")}finally{}},v)},Pe=(c,f,h,b,v)=>{if(h&&E(c,h),b)for(let g=0;g{for(let m=y;m{const x=f.el=c.el;let{patchFlag:y,dynamicChildren:m,dirs:A}=f;y|=c.patchFlag&16;const w=c.props||W,T=f.props||W;let M;if(h&&et(h,!1),(M=T.onVnodeBeforeUpdate)&&Oe(M,h,f,c),A&&Qe(f,c,h,"beforeUpdate"),h&&et(h,!0),m&&(!c.dynamicChildren||c.dynamicChildren.length!==m.length)&&(y=0,_=!1,m=null),(w.innerHTML&&T.innerHTML==null||w.textContent&&T.textContent==null)&&d(x,""),m?tt(c.dynamicChildren,m,x,h,b,ai(f,v),g):_||q(c,f,x,null,h,b,ai(f,v),g,!1),y>0){if(y&16)Ft(x,w,T,h,v);else if(y&2&&w.class!==T.class&&o(x,"class",null,T.class,v),y&4&&o(x,"style",w.style,T.style,v),y&8){const N=f.dynamicProps;for(let K=0;K{M&&Oe(M,h,f,c),A&&Qe(f,c,h,"updated")},b)},tt=(c,f,h,b,v,g,_)=>{for(let x=0;x{if(f!==h){if(f!==W)for(const g in f)!mt(g)&&!(g in h)&&o(c,g,f[g],null,v,b);for(const g in h){if(mt(g))continue;const _=h[g],x=f[g];_!==x&&g!=="value"&&o(c,g,x,_,v,b)}"value"in h&&o(c,"value",f.value,h.value,v)}},Ss=(c,f,h,b,v,g,_,x,y)=>{const m=f.el=c?c.el:l(""),A=f.anchor=c?c.anchor:l("");let{patchFlag:w,dynamicChildren:T,slotScopeIds:M}=f;M&&(x=x?x.concat(M):M),c==null?(i(m,h,b),i(A,h,b),Ye(f.children||[],h,A,v,g,_,x,y)):w>0&&w&64&&T&&c.dynamicChildren&&c.dynamicChildren.length===T.length?(tt(c.dynamicChildren,T,h,v,g,_,x),(f.key!=null||v&&f===v.subTree)&&$n(c,f,!0)):q(c,f,h,A,v,g,_,x,y)},Es=(c,f,h,b,v,g,_,x,y)=>{f.slotScopeIds=x,c==null?f.shapeFlag&512?v.ctx.activate(f,h,b,_,y):xi(f,h,b,v,g,_,y):wo(c,f,y)},xi=(c,f,h,b,v,g,_)=>{const x=c.component=vl(c,b,v);if(ei(c)&&(x.ctx.renderer=Bt),bl(x,!1,_),x.asyncDep){if(v&&v.registerDep(x,ue,_),!c.el){const y=x.subTree=_e(Ce);Y(null,y,f,h),c.placeholder=y.el}}else ue(x,c,f,h,v,g,_)},wo=(c,f,h)=>{const b=f.component=c.component;if(Qr(c,f,h))if(b.asyncDep&&!b.asyncResolved){X(b,f,h);return}else b.next=f,b.update();else f.el=c.el,b.vnode=f},ue=(c,f,h,b,v,g,_)=>{const x=()=>{if(c.isMounted){let{next:w,bu:T,u:M,parent:N,vnode:K}=c;{const Ie=Bn(c);if(Ie){w&&(w.el=K.el,X(c,w,_)),Ie.asyncDep.then(()=>{he(()=>{c.isUnmounted||m()},v)});return}}let V=w,Q;et(c,!1),w?(w.el=K.el,X(c,w,_)):w=K,T&&Ps(T),(Q=w.props&&w.props.onVnodeBeforeUpdate)&&Oe(Q,N,w,K),et(c,!0);const oe=kn(c),Le=c.subTree;c.subTree=oe,R(Le,oe,p(Le.el),As(Le),c,v,g),w.el=oe.el,V===null&&el(c,oe.el),M&&he(M,v),(Q=w.props&&w.props.onVnodeUpdated)&&he(()=>Oe(Q,N,w,K),v)}else{let w;const{el:T,props:M}=f,{bm:N,m:K,parent:V,root:Q,type:oe}=c,Le=ft(f);et(c,!1),N&&Ps(N),!Le&&(w=M&&M.onVnodeBeforeMount)&&Oe(w,V,f),et(c,!0);{Q.ce&&Q.ce._hasShadowRoot()&&Q.ce._injectChildStyle(oe,c.parent?c.parent.type:void 0);const Ie=c.subTree=kn(c);R(null,Ie,h,b,c,v,g),f.el=Ie.el}if(K&&he(K,v),!Le&&(w=M&&M.onVnodeMounted)){const Ie=f;he(()=>Oe(w,V,Ie),v)}(f.shapeFlag&256||V&&ft(V.vnode)&&V.vnode.shapeFlag&256)&&c.a&&he(c.a,v),c.isMounted=!0,f=h=b=null}};c.scope.on();const y=c.effect=new Li(x);c.scope.off();const m=c.update=y.run.bind(y),A=c.job=y.runIfDirty.bind(y);A.i=c,A.id=c.uid,y.scheduler=()=>Gs(A),et(c,!0),m()},X=(c,f,h)=>{f.component=c;const b=c.vnode.props;c.vnode=f,c.next=null,sl(c,f.props,b,h),rl(c,f.children,h),Se(),on(c),Ee()},q=(c,f,h,b,v,g,_,x,y=!1)=>{const m=c&&c.children,A=c?c.shapeFlag:0,w=f.children,{patchFlag:T,shapeFlag:M}=f;if(T>0){if(T&128){Ts(m,w,h,b,v,g,_,x,y);return}else if(T&256){st(m,w,h,b,v,g,_,x,y);return}}M&8?(A&16&&$t(m,v,g),w!==m&&d(h,w)):A&16?M&16?Ts(m,w,h,b,v,g,_,x,y):$t(m,v,g,!0):(A&8&&d(h,""),M&16&&Ye(w,h,b,v,g,_,x,y))},st=(c,f,h,b,v,g,_,x,y)=>{c=c||nt,f=f||nt;const m=c.length,A=f.length,w=Math.min(m,A);let T;for(T=0;TA?$t(c,v,g,!0,!1,w):Ye(f,h,b,v,g,_,x,y,w)},Ts=(c,f,h,b,v,g,_,x,y)=>{let m=0;const A=f.length;let w=c.length-1,T=A-1;for(;m<=w&&m<=T;){const M=c[m],N=f[m]=y?Ve(f[m]):ke(f[m]);if(Pt(M,N))R(M,N,h,null,v,g,_,x,y);else break;m++}for(;m<=w&&m<=T;){const M=c[w],N=f[T]=y?Ve(f[T]):ke(f[T]);if(Pt(M,N))R(M,N,h,null,v,g,_,x,y);else break;w--,T--}if(m>w){if(m<=T){const M=T+1,N=MT)for(;m<=w;)Re(c[m],v,g,!0),m++;else{const M=m,N=m,K=new Map;for(m=N;m<=T;m++){const ge=f[m]=y?Ve(f[m]):ke(f[m]);ge.key!=null&&K.set(ge.key,m)}let V,Q=0;const oe=T-N+1;let Le=!1,Ie=0;const Ut=new Array(oe);for(m=0;m=oe){Re(ge,v,g,!0);continue}let Ne;if(ge.key!=null)Ne=K.get(ge.key);else for(V=N;V<=T;V++)if(Ut[V-N]===0&&Pt(ge,f[V])){Ne=V;break}Ne===void 0?Re(ge,v,g,!0):(Ut[Ne-N]=m+1,Ne>=Ie?Ie=Ne:Le=!0,R(ge,f[Ne],h,null,v,g,_,x,y),Q++)}const To=Le?fl(Ut):nt;for(V=To.length-1,m=oe-1;m>=0;m--){const ge=N+m,Ne=f[ge],Ao=f[ge+1],Co=ge+1{const{el:g,type:_,transition:x,children:y,shapeFlag:m}=c;if(m&6){it(c.component.subTree,f,h,b);return}if(m&128){c.suspense.move(f,h,b);return}if(m&64){_.move(c,f,h,Bt);return}if(_===ee){i(g,f,h);for(let w=0;wx.enter(g),v));else{const{leave:w,delayLeave:T,afterLeave:M}=x,N=()=>{c.ctx.isUnmounted?n(g):i(g,f,h)},K=()=>{const V=g._isLeaving||!!g[Js];g._isLeaving&&g[Js](!0),x.persisted&&!V?N():w(g,()=>{N(),M&&M()})};T?T(g,N,K):K()}else i(g,f,h)},Re=(c,f,h,b=!1,v=!1)=>{const{type:g,props:_,ref:x,children:y,dynamicChildren:m,shapeFlag:A,patchFlag:w,dirs:T,cacheIndex:M,memo:N}=c;if(w===-2&&(v=!1),x!=null&&(Se(),At(x,null,h,c,!0),Ee()),M!=null&&(f.renderCache[M]=void 0),A&256){f.ctx.deactivate(c);return}const K=A&1&&T,V=!ft(c);let Q;if(V&&(Q=_&&_.onVnodeBeforeUnmount)&&Oe(Q,f,c),A&6)Rc(c.component,h,b);else{if(A&128){c.suspense.unmount(h,b);return}K&&Qe(c,null,f,"beforeUnmount"),A&64?c.type.remove(c,f,h,Bt,b):m&&!m.hasOnce&&(g!==ee||w>0&&w&64)?$t(m,f,h,!1,!0):(g===ee&&w&384||!v&&A&16)&&$t(y,f,h),b&&So(c)}const oe=N!=null&&M==null;(V&&(Q=_&&_.onVnodeUnmounted)||K||oe)&&he(()=>{Q&&Oe(Q,f,c),K&&Qe(c,null,f,"unmounted"),oe&&(c.el=null)},h)},So=c=>{const{type:f,el:h,anchor:b,transition:v}=c;if(f===ee){Pc(h,b);return}if(f===ci){C(c);return}const g=()=>{n(h),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(c.shapeFlag&1&&v&&!v.persisted){const{leave:_,delayLeave:x}=v,y=()=>_(h,g);x?x(c.el,g,y):y()}else g()},Pc=(c,f)=>{let h;for(;c!==f;)h=S(c),n(c),c=h;n(f)},Rc=(c,f,h)=>{const{bum:b,scope:v,job:g,subTree:_,um:x,m:y,a:m}=c;Un(y),Un(m),b&&Ps(b),v.stop(),g&&(g.flags|=8,Re(_,c,f,h)),x&&he(x,f),he(()=>{c.isUnmounted=!0},f)},$t=(c,f,h,b=!1,v=!1,g=0)=>{for(let _=g;_{if(c.shapeFlag&6)return As(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const f=S(c.anchor||c.el),h=f&&f[wr];return h?S(h):f};let _i=!1;const Eo=(c,f,h)=>{let b;c==null?f._vnode&&(Re(f._vnode,null,null,!0),b=f._vnode.component):R(f._vnode||null,c,f,null,null,null,h),f._vnode=c,_i||(_i=!0,on(b),rn(),_i=!1)},Bt={p:R,um:Re,m:it,r:So,mt:xi,mc:Ye,pc:q,pbc:tt,n:As,o:e};return{render:Eo,hydrate:void 0,createApp:qr(Eo)}}function ai({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function et({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function cl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function $n(e,t,s=!1){const i=e.children,n=t.children;if(k(i)&&k(n))for(let o=0;o>1,e[s[l]]0&&(t[i]=s[o-1]),s[o]=i)}}for(o=s.length,r=s[o-1];o-- >0;)s[o]=r,r=t[r];return s}function Bn(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bn(t)}function Un(e){if(e)for(let t=0;te.__isSuspense;function dl(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):vr(e)}const ee=Symbol.for("v-fgt"),us=Symbol.for("v-txt"),Ce=Symbol.for("v-cmt"),ci=Symbol.for("v-stc"),Ue=[];let pe=null;function L(e=!1){Ue.push(pe=e?null:[])}function fi(){Ue.pop(),pe=Ue[Ue.length-1]||null}let Mt=1;function Kn(e,t=!1){Mt+=e,e<0&&pe&&t&&(pe.hasOnce=!0)}function zn(e){return e.dynamicChildren=Mt>0?pe||nt:null,fi(),Mt>0&&pe&&pe.push(e),e}function I(e,t,s,i,n,o){return zn(O(e,t,s,i,n,o,!0))}function hs(e,t,s,i,n){return zn(_e(e,t,s,i,n,!0))}function di(e){return e?e.__v_isVNode===!0:!1}function Pt(e,t){return e.type===t.type&&e.key===t.key}const qn=({key:e})=>e??null,ps=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?G(e)||le(e)||P(e)?{i:ne,r:e,k:t,f:!!s}:e:null);function O(e,t=null,s=null,i=0,n=null,o=e===ee?0:1,r=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&qn(t),ref:t&&ps(t),scopeId:an,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:i,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:ne};return l?(gs(a,s),o&128&&e.normalize(a)):s&&(a.shapeFlag|=G(s)?8:16),Mt>0&&!r&&pe&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&pe.push(a),a}const _e=ul;function ul(e,t=null,s=null,i=0,n=null,o=!1){if((!e||e===Hr)&&(e=Ce),di(e)){const l=ht(e,t,!0);return s&&gs(l,s),Mt>0&&!o&&pe&&(l.shapeFlag&6?pe[pe.indexOf(e)]=l:pe.push(l)),l.patchFlag=-2,l}if(El(e)&&(e=e.__vccOpts),t){t=hl(t);let{class:l,style:a}=t;l&&!G(l)&&(t.class=ze(l)),$(a)&&(zs(a)&&!k(a)&&(a=J({},a)),t.style=Rs(a))}const r=G(e)?1:Wn(e)?128:ls(e)?64:$(e)?4:P(e)?2:0;return O(e,t,s,i,n,r,o,!0)}function hl(e){return e?zs(e)||Ln(e)?J({},e):e:null}function ht(e,t,s=!1,i=!1){const{props:n,ref:o,patchFlag:r,children:l,transition:a}=e,u=t?pl(n||{},t):n,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&qn(u),ref:t&&t.ref?s&&o?k(o)?o.concat(ps(t)):[o,ps(t)]:ps(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ee?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ht(e.ssContent),ssFallback:e.ssFallback&&ht(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&i&&Zs(d,a.clone(d)),d}function pt(e=" ",t=0){return _e(us,null,e,t)}function de(e="",t=!1){return t?(L(),hs(Ce,null,e)):_e(Ce,null,e)}function ke(e){return e==null||typeof e=="boolean"?_e(Ce):k(e)?_e(ee,null,e.slice()):di(e)?Ve(e):_e(us,null,String(e))}function Ve(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ht(e)}function gs(e,t){let s=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(k(t))s=16;else if(typeof t=="object")if(i&65){const n=t.default;n&&(n._c&&(n._d=!1),gs(e,n()),n._c&&(n._d=!0));return}else{s=32;const n=t._;!n&&!Ln(t)?t._ctx=ne:n===3&&ne&&(ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(P(t)){if(i&65){gs(e,{default:t});return}t={default:t,_ctx:ne},s=32}else t=String(t),i&64?(s=16,t=[pt(t)]):s=8;e.children=t,e.shapeFlag|=s}function pl(...e){const t={};for(let s=0;sae||ne;let ms,Rt;{const e=Yt(),t=(s,i)=>{let n;return(n=e[s])||(n=e[s]=[]),n.push(i),o=>{n.length>1?n.forEach(r=>r(o)):n[0](o)}};ms=t("__VUE_INSTANCE_SETTERS__",s=>ae=s),Rt=t("__VUE_SSR_SETTERS__",s=>It=s)}const Lt=e=>{const t=ae;return ms(e),e.scope.on(),()=>{e.scope.off(),ms(t)}},Yn=()=>{ae&&ae.scope.off(),ms(null)};function Xn(e){return e.vnode.shapeFlag&4}let It=!1;function bl(e,t=!1,s=!1){t&&Rt(t);const{props:i,children:n}=e.vnode,o=Xn(e);tl(e,i,o,t),ol(e,n,s||t);const r=o?yl(e,t):void 0;return t&&Rt(!1),r}function yl(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,$r);const{setup:i}=s;if(i){Se();const n=e.setupContext=i.length>1?_l(e):null,o=Lt(e),r=lt(i,e,0,[e.props,n]),l=Ei(r);if(Ee(),o(),(l||e.sp)&&!ft(e)&&un(e),l){if(r.then(Yn,Yn),t)return r.then(a=>{Rt(!0);try{Jn(e,a,t)}finally{Rt(!1)}}).catch(a=>{ns(a,e,0)});e.asyncDep=r}else Jn(e,r)}else Zn(e)}function Jn(e,t,s){P(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:$(t)&&(e.setupState=Qi(t)),Zn(e)}function Zn(e,t,s){const i=e.type;e.render||(e.render=i.render||we);{const n=Lt(e);Se();try{Br(e)}finally{Ee(),n()}}}const xl={get(e,t){return re(e,"get",""),e[t]}};function _l(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,xl),slots:e.slots,emit:e.emit,expose:t}}function vs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Qi(or(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in kt)return kt[s](e)},has(t,s){return s in t||s in kt}})):e.proxy}const wl=/(?:^|[-_])\w/g,Sl=e=>e.replace(wl,t=>t.toUpperCase()).replace(/[-_]/g,"");function Qn(e,t=!0){return P(e)?e.displayName||e.name:e.name||t&&e.__name}function eo(e,t,s=!1){let i=Qn(t);if(!i&&t.__file){const n=t.__file.match(/([^/\\]+)\.\w+$/);n&&(i=n[1])}if(!i&&e){const n=o=>{for(const r in o)if(o[r]===t)return r};i=n(e.components)||e.parent&&n(e.parent.type.components)||n(e.appContext.components)}return i?Sl(i):s?"App":"Anonymous"}function El(e){return P(e)&&"__vccOpts"in e}const Tl=(e,t)=>ar(e,t,It),Al="3.5.42";/** +**/const wt=[];let Ys=!1;function Fc(e,...t){if(Ys)return;Ys=!0,Se();const s=wt.length?wt[wt.length-1].component:null,i=s&&s.appContext.config.warnHandler,n=bo();if(i)lt(i,s,11,[e+t.map(r=>{var o,l;return(l=(o=r.toString)==null?void 0:o.call(r))!=null?l:JSON.stringify(r)}).join(""),s&&s.proxy,n.map(({vnode:r})=>`at <${ir(s,r.type)}>`).join(` +`),n]);else{const r=[`[Vue warn]: ${e}`,...t];n.length&&r.push(` +`,...go(n)),console.warn(...r)}Ee(),Ys=!1}function bo(){let e=wt[wt.length-1];if(!e)return[];const t=[];for(;e;){const s=t[0];s&&s.vnode===e?s.recurseCount++:t.push({vnode:e,recurseCount:0});const i=e.component&&e.component.parent;e=i&&i.vnode}return t}function go(e){const t=[];return e.forEach((s,i)=>{t.push(...i===0?[]:[` +`],...mo(s))}),t}function mo({vnode:e,recurseCount:t}){const s=t>0?`... (${t} recursive calls)`:"",i=e.component?e.component.parent==null:!1,n=` at <${ir(e.component,e.type,i)}`,r=">"+s;return e.props?[n,...vo(e.props),r]:[n+r]}function vo(e){const t=[],s=Object.keys(e);return s.slice(0,3).forEach(i=>{t.push(...nn(i,e[i]))}),s.length>3&&t.push(" ..."),t}function nn(e,t,s){return q(t)?(t=JSON.stringify(t),s?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?s?t:[`${e}=${t}`]:le(t)?(t=nn(e,F(t.value),!0),s?t:[`${e}=Ref<`,t,">"]):P(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=F(t),s?t:[`${e}=`,t])}function lt(e,t,s,i){try{return i?e(...i):e()}catch(n){ns(n,t,s)}}function xe(e,t,s,i){if(P(e)){const n=lt(e,t,s,i);return n&&Ci(n)&&n.catch(r=>{ns(r,t,s)}),n}if(A(e)){const n=[];for(let r=0;r>>1,n=ce[i],r=St(n);r=St(s)?ce.push(e):ce.splice(xo(t),0,e),e.flags|=1,ln()}}function ln(){rs||(rs=rn.then(dn))}function _o(e){if(!A(e))qe&&e.id===-1?qe.splice(ct+1,0,e):e.flags&1||(at.push(e),e.flags|=1);else for(let t=0;tSt(s)-St(i));if(at.length=0,qe){for(let s=0;se.id==null?e.flags&2?-1:1/0:e.id;function dn(e){try{for(ke=0;ke{i._d&&qn(-1);const r=os(t),o=Be.length;let l;try{l=e(...n)}finally{for(let a=Be.length;a>o;a--)fi();os(r),i._d&&qn(1)}return l};return i._n=!0,i._c=!0,i._d=!0,i}function Js(e,t){if(ne===null)return e;const s=ms(ne),i=e.dirs||(e.dirs=[]);for(let n=0;n1)return s&&P(t)?t.call(i&&i.proxy):t}}const So=Symbol.for("v-scx"),Eo=()=>Tt(So);function Zs(e,t,s){return fn(e,t,s)}function fn(e,t,s=z){const{immediate:i,deep:n,flush:r,once:o}=s,l=J({},s),a=t&&i||!t&&r!=="post";let f;if(It){if(r==="sync"){const E=Eo();f=E.__watcherHandles||(E.__watcherHandles=[])}else if(!a){const E=()=>{};return E.stop=we,E.resume=we,E.pause=we,E}}const u=ae;l.call=(E,U,M)=>xe(E,u,U,M);let h=!1;r==="post"?l.scheduler=E=>{pe(E,u&&u.suspense)}:r!=="sync"&&(h=!0,l.scheduler=(E,U)=>{U?E():Xs(E)}),l.augmentJob=E=>{t&&(E.flags|=4),h&&(E.flags|=2,u&&(E.id=u.uid,E.i=u))};const S=ho(e,t,l);return It&&(f?f.push(S):a&&S()),S}function To(e,t,s){const i=this.proxy,n=q(e)?e.includes(".")?pn(i,e):()=>i[e]:e.bind(i,i);let r;P(t)?r=t:(r=t.handler,s=t);const o=Rt(this),l=fn(n,r.bind(i),s);return o(),l}function pn(e,t){const s=t.split(".");return()=>{let i=e;for(let n=0;ne.__isTeleport,Qs=Symbol("_leaveCb");function Co(e){let t=e[0];if(e.length>1){for(const s of e)if(s.type!==Ce){t=s;break}}return t}function hn(e){if(!si(e))return ls(e.type)&&e.children?Co(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:s}=e;if(s){if(t&16)return s[0];if(t&32&&P(s.default))return s.default()}}function ei(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const s=e.component.subTree;ei(ls(s.type)&&hn(s)||s,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ti(e,t){return P(e)?J({name:e.name},t,{setup:e}):e}function bn(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function gn(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const as=new WeakMap;function kt(e,t,s,i,n=!1){if(A(e)){e.forEach((M,Z)=>kt(M,t&&(A(t)?t[Z]:t),s,i,n));return}if(dt(i)&&!n){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&kt(e,t,s,i.component.subTree);return}const r=i.shapeFlag&4?ms(i.component):i.el,o=n?null:r,{i:l,r:a}=e,f=t&&t.r,u=l.refs===z?l.refs={}:l.refs,h=l.setupState,S=F(h),E=h===z?Ti:M=>gn(u,M)?!1:j(S,M),U=(M,Z)=>!(Z&&gn(u,Z));if(f!=null&&f!==a){if(mn(t),q(f))u[f]=null,E(f)&&(h[f]=null);else if(le(f)){const M=t;U(f,M.k)&&(f.value=null),M.k&&(u[M.k]=null)}}if(P(a))lt(a,l,12,[o,u]);else{const M=q(a),Z=le(a);if(M||Z){const Y=()=>{if(e.f){const D=M?E(a)?h[a]:u[a]:U()||!e.k?a.value:u[e.k];if(n)A(D)&&Ls(D,r);else if(A(D))D.includes(r)||D.push(r);else if(M)u[a]=[r],E(a)&&(h[a]=u[a]);else{const B=[r];U(a,e.k)&&(a.value=B),e.k&&(u[e.k]=B)}}else M?(u[a]=o,E(a)&&(h[a]=o)):Z&&(U(a,e.k)&&(a.value=o),e.k&&(u[e.k]=o))};if(o){const D=()=>{Y(),as.delete(e)};D.id=-1,as.set(e,D),pe(D,s)}else mn(e),Y()}}}function mn(e){const t=as.get(e);t&&(t.flags|=8,as.delete(e))}Yt().requestIdleCallback,Yt().cancelIdleCallback;const dt=e=>!!e.type.__asyncLoader,si=e=>e.type.__isKeepAlive;function Ao(e,t){vn(e,"a",t)}function Oo(e,t){vn(e,"da",t)}function vn(e,t,s=ae){const i=e.__wdc||(e.__wdc=()=>{let n=s;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(cs(t,i,s),s){let n=s.parent;for(;n&&n.parent;)si(n.parent.vnode)&&Lo(i,t,s,n),n=n.parent}}function Lo(e,t,s,i){const n=cs(t,e,i,!0);xn(()=>{Ls(i[t],n)},s)}function cs(e,t,s=ae,i=!1){if(s){const n=s[e]||(s[e]=[]),r=t.__weh||(t.__weh=(...o)=>{Se();const l=Rt(s),a=xe(t,s,e,o);return l(),Ee(),a});return i?n.unshift(r):n.push(r),r}}const Ue=e=>(t,s=ae)=>{(!It||e==="sp")&&cs(e,(...i)=>t(...i),s)},Po=Ue("bm"),yn=Ue("m"),Mo=Ue("bu"),Ro=Ue("u"),Io=Ue("bum"),xn=Ue("um"),No=Ue("sp"),Ho=Ue("rtg"),Do=Ue("rtc");function jo(e,t=ae){cs("ec",e,t)}const Fo="components";function $o(e,t){return Bo(Fo,e,!0,t)||e}const Uo=Symbol.for("v-ndc");function Bo(e,t,s=!0,i=!1){const n=ne||ae;if(n){const r=n.type;{const l=sr(r,!1);if(l&&(l===t||l===se(t)||l===qt(se(t))))return r}const o=_n(n[e]||r[e],t)||_n(n.appContext[e],t);return!o&&i?r:o}}function _n(e,t){return e&&(e[t]||e[se(t)]||e[qt(se(t))])}function ut(e,t,s,i){let n;const r=s,o=A(e);if(o||q(e)){const l=o&&Je(e);let a=!1,f=!1;l&&(a=!ye(e),f=Ge(e),e=Jt(e)),n=new Array(e.length);for(let u=0,h=e.length;ut(l,a,void 0,r));else{const l=Object.keys(e);n=new Array(l.length);for(let a=0,f=l.length;a{const r=i.fn(...n);return r&&(r.key=i.key),r}:i.fn)}return e}function Ct(e,t,s,i,n,r){if(s==null&&(s={}),ne.ce||ne.parent&&dt(ne.parent)&&ne.parent.ce){const f=r!=null&&s.key==null?J({},s,{key:r}):s,u=Object.keys(f).length>0;return t!=="default"&&(f.name=t),R(),ps(ee,null,[_e("slot",f,i)],u?-2:64)}let o=e[t];o&&o._c&&(o._d=!1);const l=Be.length;R();let a;try{const f=o&&wn(o(s)),u=s.key||r||f&&f.key;a=ps(ee,{key:(u&&!me(u)?u:`_${t}`)+(!f&&i?"_fb":"")},f||(i?i():[]),f&&e._===1?64:-2)}catch(f){for(let u=Be.length;u>l;u--)fi();throw f}finally{o&&o._c&&(o._d=!0)}return a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),a}function wn(e){return e.some(t=>pi(t)?!(t.type===Ce||t.type===ee&&!wn(t.children)):!0)?e:null}const ii=e=>e?Qn(e)?ms(e):ii(e.parent):null,At=J(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ii(e.parent),$root:e=>ii(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>kn(e),$forceUpdate:e=>e.f||(e.f=()=>{Xs(e.update)}),$nextTick:e=>e.n||(e.n=on.bind(e.proxy)),$watch:e=>To.bind(e)}),ni=(e,t)=>e!==z&&!e.__isScriptSetup&&j(e,t),zo={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:i,data:n,props:r,accessCache:o,type:l,appContext:a}=e;if(t[0]!=="$"){const S=o[t];if(S!==void 0)switch(S){case 1:return i[t];case 2:return n[t];case 4:return s[t];case 3:return r[t]}else{if(ni(i,t))return o[t]=1,i[t];if(n!==z&&j(n,t))return o[t]=2,n[t];if(j(r,t))return o[t]=3,r[t];if(s!==z&&j(s,t))return o[t]=4,s[t];ri&&(o[t]=0)}}const f=At[t];let u,h;if(f)return t==="$attrs"&&oe(e.attrs,"get",""),f(e);if((u=l.__cssModules)&&(u=u[t]))return u;if(s!==z&&j(s,t))return o[t]=4,s[t];if(h=a.config.globalProperties,j(h,t))return h[t]},set({_:e},t,s){const{data:i,setupState:n,ctx:r}=e;return ni(n,t)?(n[t]=s,!0):i!==z&&j(i,t)?(i[t]=s,!0):j(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:i,appContext:n,props:r,type:o}},l){let a;return!!(s[l]||e!==z&&l[0]!=="$"&&j(e,l)||ni(t,l)||j(r,l)||j(i,l)||j(At,l)||j(n.config.globalProperties,l)||(a=o.__cssModules)&&a[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:j(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Sn(e){return A(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let ri=!0;function Wo(e){const t=kn(e),s=e.proxy,i=e.ctx;ri=!1,t.beforeCreate&&En(t.beforeCreate,e,"bc");const{data:n,computed:r,methods:o,watch:l,provide:a,inject:f,created:u,beforeMount:h,mounted:S,beforeUpdate:E,updated:U,activated:M,deactivated:Z,beforeDestroy:Y,beforeUnmount:D,destroyed:B,unmounted:C,render:te,renderTracked:Le,renderTriggered:Pe,errorCaptured:Ye,serverPrefetch:Es,expose:tt,inheritAttrs:Ft,components:Ts,directives:ks,filters:Si}=t;if(f&&Ko(f,i,null),o)for(const X in o){const G=o[X];P(G)&&(i[X]=G.bind(s))}if(n){const X=n.call(s,s);$(X)&&(e.data=Ks(X))}if(ri=!0,r)for(const X in r){const G=r[X],st=P(G)?G.bind(s,s):P(G.get)?G.get.bind(s,s):we,Cs=!P(G)&&P(G.set)?G.set.bind(s):we,it=Ol({get:st,set:Cs});Object.defineProperty(i,X,{enumerable:!0,configurable:!0,get:()=>it.value,set:Me=>it.value=Me})}if(l)for(const X in l)Tn(l[X],i,s,X);if(a){const X=P(a)?a.call(s):a;Reflect.ownKeys(X).forEach(G=>{wo(G,X[G])})}u&&En(u,e,"c");function fe(X,G){A(G)?G.forEach(st=>X(st.bind(s))):G&&X(G.bind(s))}if(fe(Po,h),fe(yn,S),fe(Mo,E),fe(Ro,U),fe(Ao,M),fe(Oo,Z),fe(jo,Ye),fe(Do,Le),fe(Ho,Pe),fe(Io,D),fe(xn,C),fe(No,Es),A(tt))if(tt.length){const X=e.exposed||(e.exposed={});tt.forEach(G=>{Object.defineProperty(X,G,{get:()=>s[G],set:st=>s[G]=st,enumerable:!0})})}else e.exposed||(e.exposed={});te&&e.render===we&&(e.render=te),Ft!=null&&(e.inheritAttrs=Ft),Ts&&(e.components=Ts),ks&&(e.directives=ks),Es&&bn(e)}function Ko(e,t,s=we){A(e)&&(e=oi(e));for(const i in e){const n=e[i];let r;$(n)?"default"in n?r=Tt(n.from||i,n.default,!0):r=Tt(n.from||i):r=Tt(n),le(r)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>r.value,set:o=>r.value=o}):t[i]=r}}function En(e,t,s){xe(A(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,s)}function Tn(e,t,s,i){let n=i.includes(".")?pn(s,i):()=>s[i];if(q(e)){const r=t[e];P(r)&&Zs(n,r)}else if(P(e))Zs(n,e.bind(s));else if($(e))if(A(e))e.forEach(r=>Tn(r,t,s,i));else{const r=P(e.handler)?e.handler.bind(s):t[e.handler];P(r)&&Zs(n,r,e)}}function kn(e){const t=e.type,{mixins:s,extends:i}=t,{mixins:n,optionsCache:r,config:{optionMergeStrategies:o}}=e.appContext,l=r.get(t);let a;return l?a=l:!n.length&&!s&&!i?a=t:(a={},n.length&&n.forEach(f=>ds(a,f,o,!0)),ds(a,t,o)),$(t)&&r.set(t,a),a}function ds(e,t,s,i=!1){const{mixins:n,extends:r}=t;r&&ds(e,r,s,!0),n&&n.forEach(o=>ds(e,o,s,!0));for(const o in t)if(!(i&&o==="expose")){const l=Go[o]||s&&s[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Go={data:Cn,props:An,emits:An,methods:Ot,computed:Ot,beforeCreate:de,created:de,beforeMount:de,mounted:de,beforeUpdate:de,updated:de,beforeDestroy:de,beforeUnmount:de,destroyed:de,unmounted:de,activated:de,deactivated:de,errorCaptured:de,serverPrefetch:de,components:Ot,directives:Ot,watch:Yo,provide:Cn,inject:qo};function Cn(e,t){return t?e?function(){return J(P(e)?e.call(this,this):e,P(t)?t.call(this,this):t)}:t:e}function qo(e,t){return Ot(oi(e),oi(t))}function oi(e){if(A(e)){const t={};for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${se(t)}Modifiers`]||e[`${ge(t)}Modifiers`];function Qo(e,t,...s){if(e.isUnmounted)return;const i=e.vnode.props||z;let n=s;const r=t.startsWith("update:"),o=r&&Zo(i,t.slice(7));o&&(o.trim&&(n=s.map(u=>q(u)?u.trim():u)),o.number&&(n=n.map(Nr)));let l,a=i[l=Ms(t)]||i[l=Ms(se(t))];!a&&r&&(a=i[l=Ms(ge(t))]),a&&xe(a,e,6,n);const f=i[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,xe(f,e,6,n)}}const el=new WeakMap;function Ln(e,t,s=!1){const i=s?el:t.emitsCache,n=i.get(e);if(n!==void 0)return n;const r=e.emits;let o={},l=!1;if(!P(e)){const a=f=>{const u=Ln(f,t,!0);u&&(l=!0,J(o,u))};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!r&&!l?($(e)&&i.set(e,null),null):(A(r)?r.forEach(a=>o[a]=null):J(o,r),$(e)&&i.set(e,o),o)}function us(e,t){return!e||!Vt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),j(e,t[0].toLowerCase()+t.slice(1))||j(e,ge(t))||j(e,t))}function $c(){}function Pn(e){const{type:t,vnode:s,proxy:i,withProxy:n,propsOptions:[r],slots:o,attrs:l,emit:a,render:f,renderCache:u,props:h,data:S,setupState:E,ctx:U,inheritAttrs:M}=e,Z=os(e);let Y,D;try{if(s.shapeFlag&4){const C=n||i,te=C;Y=Ae(f.call(te,C,u,h,E,S,U)),D=l}else{const C=t;Y=Ae(C.length>1?C(h,{attrs:l,slots:o,emit:a}):C(h,null)),D=t.props?l:tl(l)}}catch(C){Be.length=0,ns(C,e,1),Y=_e(Ce)}let B=Y;if(D&&M!==!1){const C=Object.keys(D),{shapeFlag:te}=B;C.length&&te&7&&(r&&C.some(zt)&&(D=sl(D,r)),B=pt(B,D,!1,!0))}if(s.dirs&&(B=pt(B,null,!1,!0),B.dirs=B.dirs?B.dirs.concat(s.dirs):s.dirs),s.transition){const C=ls(B.type)&&hn(B)||B;ei(C,s.transition)}return Y=B,os(Z),Y}const tl=e=>{let t;for(const s in e)(s==="class"||s==="style"||Vt(s))&&((t||(t={}))[s]=e[s]);return t},sl=(e,t)=>{const s={};for(const i in e)(!zt(i)||!(i.slice(9)in t))&&(s[i]=e[i]);return s};function il(e,t,s){const{props:i,children:n,component:r}=e,{props:o,children:l,patchFlag:a}=t,f=r.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&a>=0){if(a&1024)return!0;if(a&16)return i?Mn(i,o,f):!!o;if(a&8){const u=t.dynamicProps;for(let h=0;hObject.create(In),Hn=e=>Object.getPrototypeOf(e)===In;function rl(e,t,s,i=!1){const n={},r=Nn();e.propsDefaults=Object.create(null),Dn(e,t,n,r);for(const o in e.propsOptions[0])o in n||(n[o]=void 0);s?e.props=i?n:lo(n):e.type.props?e.props=n:e.props=r,e.attrs=r}function ol(e,t,s,i){const{props:n,attrs:r,vnode:{patchFlag:o}}=e,l=F(n),[a]=e.propsOptions;let f=!1;if((i||o>0)&&!(o&16)){if(o&8){const u=e.vnode.dynamicProps;for(let h=0;h{a=!0;const[S,E]=jn(h,t,!0);J(o,S),E&&l.push(...E)};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!r&&!a)return $(e)&&i.set(e,nt),nt;if(A(r))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",ci=e=>A(e)?e.map(Ae):[Ae(e)],al=(e,t,s)=>{if(t._n)return t;const i=Et((...n)=>ci(t(...n)),s);return i._c=!1,i},$n=(e,t,s)=>{const i=e._ctx;for(const n in e){if(ai(n))continue;const r=e[n];if(P(r))t[n]=al(n,r,i);else if(r!=null){const o=ci(r);t[n]=()=>o}}},Un=(e,t)=>{const s=ci(t);e.slots.default=()=>s},Bn=(e,t,s)=>{for(const i in t)(s||!ai(i))&&(e[i]=t[i])},cl=(e,t,s)=>{const i=e.slots=Nn();if(e.vnode.shapeFlag&32){const n=t._;n?(Bn(i,t,s),s&&Oi(i,"_",n,!0)):$n(t,i)}else t&&Un(e,t)},dl=(e,t,s)=>{const{vnode:i,slots:n}=e;let r=!0,o=z;if(i.shapeFlag&32){const l=t._;l?s&&l===1?r=!1:Bn(n,t,s):(r=!t.$stable,$n(t,n)),o=t}else t&&(Un(e,t),o={default:1});if(r)for(const l in n)!ai(l)&&o[l]==null&&delete n[l]},pe=bl;function ul(e){return fl(e)}function fl(e,t){const s=Yt();s.__VUE__=!0;const{insert:i,remove:n,patchProp:r,createElement:o,createText:l,createComment:a,setText:f,setElementText:u,parentNode:h,nextSibling:S,setScopeId:E=we,insertStaticContent:U}=e,M=(c,d,p,v=null,m=null,b=null,_=void 0,x=null,y=!!d.dynamicChildren)=>{if(c===d)return;c&&!Pt(c,d)&&(v=As(c),Me(c,m,b,!0),c=null),d.patchFlag===-2&&(y=!1,d.dynamicChildren=null);const{type:g,ref:k,shapeFlag:w}=d;switch(g){case fs:Z(c,d,p,v);break;case Ce:Y(c,d,p,v);break;case ui:c==null&&D(d,p,v,_);break;case ee:Ts(c,d,p,v,m,b,_,x,y);break;default:w&1?te(c,d,p,v,m,b,_,x,y):w&6?ks(c,d,p,v,m,b,_,x,y):(w&64||w&128)&&g.process(c,d,p,v,m,b,_,x,y,Ut)}k!=null&&m?kt(k,c&&c.ref,b,d||c,!d):k==null&&c&&c.ref!=null&&kt(c.ref,null,b,c,!0)},Z=(c,d,p,v)=>{if(c==null)i(d.el=l(d.children),p,v);else{const m=d.el=c.el;d.children!==c.children&&f(m,d.children)}},Y=(c,d,p,v)=>{c==null?i(d.el=a(d.children||""),p,v):d.el=c.el},D=(c,d,p,v)=>{[c.el,c.anchor]=U(c.children,d,p,v,c.el,c.anchor)},B=({el:c,anchor:d},p,v)=>{let m;for(;c&&c!==d;)m=S(c),i(c,p,v),c=m;i(d,p,v)},C=({el:c,anchor:d})=>{let p;for(;c&&c!==d;)p=S(c),n(c),c=p;n(d)},te=(c,d,p,v,m,b,_,x,y)=>{if(d.type==="svg"?_="svg":d.type==="math"&&(_="mathml"),c==null)Le(d,p,v,m,b,_,x,y);else{const g=c.el&&c.el._isVueCE?c.el:null;try{g&&g._beginPatch(),Es(c,d,m,b,_,x,y)}finally{g&&g._endPatch()}}},Le=(c,d,p,v,m,b,_,x)=>{let y,g;const{props:k,shapeFlag:w,transition:T,dirs:L}=c;if(y=c.el=o(c.type,b,k&&k.is,k),w&8?u(y,c.children):w&16&&Ye(c.children,y,null,v,m,di(c,b),_,x),L&&Qe(c,null,v,"created"),Pe(y,c,c.scopeId,_,v),k){for(const W in k)W!=="value"&&!gt(W)&&r(y,W,null,k[W],b,v);"value"in k&&r(y,"value",null,k.value,b),(g=k.onVnodeBeforeMount)&&Oe(g,v,c)}L&&Qe(c,null,v,"beforeMount");const N=pl(m,T);N&&T.beforeEnter(y),i(y,d,p),((g=k&&k.onVnodeMounted)||N||L)&&pe(()=>{try{g&&Oe(g,v,c),N&&T.enter(y),L&&Qe(c,null,v,"mounted")}finally{}},m)},Pe=(c,d,p,v,m)=>{if(p&&E(c,p),v)for(let b=0;b{for(let g=y;g{const x=d.el=c.el;let{patchFlag:y,dynamicChildren:g,dirs:k}=d;y|=c.patchFlag&16;const w=c.props||z,T=d.props||z;let L;if(p&&et(p,!1),(L=T.onVnodeBeforeUpdate)&&Oe(L,p,d,c),k&&Qe(d,c,p,"beforeUpdate"),p&&et(p,!0),g&&(!c.dynamicChildren||c.dynamicChildren.length!==g.length)&&(y=0,_=!1,g=null),(w.innerHTML&&T.innerHTML==null||w.textContent&&T.textContent==null)&&u(x,""),g?tt(c.dynamicChildren,g,x,p,v,di(d,m),b):_||G(c,d,x,null,p,v,di(d,m),b,!1),y>0){if(y&16)Ft(x,w,T,p,m);else if(y&2&&w.class!==T.class&&r(x,"class",null,T.class,m),y&4&&r(x,"style",w.style,T.style,m),y&8){const N=d.dynamicProps;for(let W=0;W{L&&Oe(L,p,d,c),k&&Qe(d,c,p,"updated")},v)},tt=(c,d,p,v,m,b,_)=>{for(let x=0;x{if(d!==p){if(d!==z)for(const b in d)!gt(b)&&!(b in p)&&r(c,b,d[b],null,m,v);for(const b in p){if(gt(b))continue;const _=p[b],x=d[b];_!==x&&b!=="value"&&r(c,b,x,_,m,v)}"value"in p&&r(c,"value",d.value,p.value,m)}},Ts=(c,d,p,v,m,b,_,x,y)=>{const g=d.el=c?c.el:l(""),k=d.anchor=c?c.anchor:l("");let{patchFlag:w,dynamicChildren:T,slotScopeIds:L}=d;L&&(x=x?x.concat(L):L),c==null?(i(g,p,v),i(k,p,v),Ye(d.children||[],p,k,m,b,_,x,y)):w>0&&w&64&&T&&c.dynamicChildren&&c.dynamicChildren.length===T.length?(tt(c.dynamicChildren,T,p,m,b,_,x),(d.key!=null||m&&d===m.subTree)&&Vn(c,d,!0)):G(c,d,p,k,m,b,_,x,y)},ks=(c,d,p,v,m,b,_,x,y)=>{d.slotScopeIds=x,c==null?d.shapeFlag&512?m.ctx.activate(d,p,v,_,y):Si(d,p,v,m,b,_,y):Tr(c,d,y)},Si=(c,d,p,v,m,b,_)=>{const x=c.component=_l(c,v,m);if(si(c)&&(x.ctx.renderer=Ut),wl(x,!1,_),x.asyncDep){if(m&&m.registerDep(x,fe,_),!c.el){const y=x.subTree=_e(Ce);Y(null,y,d,p),c.placeholder=y.el}}else fe(x,c,d,p,m,b,_)},Tr=(c,d,p)=>{const v=d.component=c.component;if(il(c,d,p))if(v.asyncDep&&!v.asyncResolved){X(v,d,p);return}else v.next=d,v.update();else d.el=c.el,v.vnode=d},fe=(c,d,p,v,m,b,_)=>{const x=()=>{if(c.isMounted){let{next:w,bu:T,u:L,parent:N,vnode:W}=c;{const Ie=zn(c);if(Ie){w&&(w.el=W.el,X(c,w,_)),Ie.asyncDep.then(()=>{pe(()=>{c.isUnmounted||g()},m)});return}}let V=w,Q;et(c,!1),w?(w.el=W.el,X(c,w,_)):w=W,T&&Rs(T),(Q=w.props&&w.props.onVnodeBeforeUpdate)&&Oe(Q,N,w,W),et(c,!0);const re=Pn(c),Re=c.subTree;c.subTree=re,M(Re,re,h(Re.el),As(Re),c,m,b),w.el=re.el,V===null&&nl(c,re.el),L&&pe(L,m),(Q=w.props&&w.props.onVnodeUpdated)&&pe(()=>Oe(Q,N,w,W),m)}else{let w;const{el:T,props:L}=d,{bm:N,m:W,parent:V,root:Q,type:re}=c,Re=dt(d);et(c,!1),N&&Rs(N),!Re&&(w=L&&L.onVnodeBeforeMount)&&Oe(w,V,d),et(c,!0);{Q.ce&&Q.ce._hasShadowRoot()&&Q.ce._injectChildStyle(re,c.parent?c.parent.type:void 0);const Ie=c.subTree=Pn(c);M(null,Ie,p,v,c,m,b),d.el=Ie.el}if(W&&pe(W,m),!Re&&(w=L&&L.onVnodeMounted)){const Ie=d;pe(()=>Oe(w,V,Ie),m)}(d.shapeFlag&256||V&&dt(V.vnode)&&V.vnode.shapeFlag&256)&&c.a&&pe(c.a,m),c.isMounted=!0,d=p=v=null}};c.scope.on();const y=c.effect=new Hi(x);c.scope.off();const g=c.update=y.run.bind(y),k=c.job=y.runIfDirty.bind(y);k.i=c,k.id=c.uid,y.scheduler=()=>Xs(k),et(c,!0),g()},X=(c,d,p)=>{d.component=c;const v=c.vnode.props;c.vnode=d,c.next=null,ol(c,d.props,v,p),dl(c,d.children,p),Se(),an(c),Ee()},G=(c,d,p,v,m,b,_,x,y=!1)=>{const g=c&&c.children,k=c?c.shapeFlag:0,w=d.children,{patchFlag:T,shapeFlag:L}=d;if(T>0){if(T&128){Cs(g,w,p,v,m,b,_,x,y);return}else if(T&256){st(g,w,p,v,m,b,_,x,y);return}}L&8?(k&16&&$t(g,m,b),w!==g&&u(p,w)):k&16?L&16?Cs(g,w,p,v,m,b,_,x,y):$t(g,m,b,!0):(k&8&&u(p,""),L&16&&Ye(w,p,v,m,b,_,x,y))},st=(c,d,p,v,m,b,_,x,y)=>{c=c||nt,d=d||nt;const g=c.length,k=d.length,w=Math.min(g,k);let T;for(T=0;Tk?$t(c,m,b,!0,!1,w):Ye(d,p,v,m,b,_,x,y,w)},Cs=(c,d,p,v,m,b,_,x,y)=>{let g=0;const k=d.length;let w=c.length-1,T=k-1;for(;g<=w&&g<=T;){const L=c[g],N=d[g]=y?Ve(d[g]):Ae(d[g]);if(Pt(L,N))M(L,N,p,null,m,b,_,x,y);else break;g++}for(;g<=w&&g<=T;){const L=c[w],N=d[T]=y?Ve(d[T]):Ae(d[T]);if(Pt(L,N))M(L,N,p,null,m,b,_,x,y);else break;w--,T--}if(g>w){if(g<=T){const L=T+1,N=LT)for(;g<=w;)Me(c[g],m,b,!0),g++;else{const L=g,N=g,W=new Map;for(g=N;g<=T;g++){const be=d[g]=y?Ve(d[g]):Ae(d[g]);be.key!=null&&W.set(be.key,g)}let V,Q=0;const re=T-N+1;let Re=!1,Ie=0;const Bt=new Array(re);for(g=0;g=re){Me(be,m,b,!0);continue}let Ne;if(be.key!=null)Ne=W.get(be.key);else for(V=N;V<=T;V++)if(Bt[V-N]===0&&Pt(be,d[V])){Ne=V;break}Ne===void 0?Me(be,m,b,!0):(Bt[Ne-N]=g+1,Ne>=Ie?Ie=Ne:Re=!0,M(be,d[Ne],p,null,m,b,_,x,y),Q++)}const Ar=Re?hl(Bt):nt;for(V=Ar.length-1,g=re-1;g>=0;g--){const be=N+g,Ne=d[be],Or=d[be+1],Lr=be+1{const{el:b,type:_,transition:x,children:y,shapeFlag:g}=c;if(g&6){it(c.component.subTree,d,p,v);return}if(g&128){c.suspense.move(d,p,v);return}if(g&64){_.move(c,d,p,Ut);return}if(_===ee){i(b,d,p);for(let w=0;wx.enter(b),m));else{const{leave:w,delayLeave:T,afterLeave:L}=x,N=()=>{c.ctx.isUnmounted?n(b):i(b,d,p)},W=()=>{const V=b._isLeaving||!!b[Qs];b._isLeaving&&b[Qs](!0),x.persisted&&!V?N():w(b,()=>{N(),L&&L()})};T?T(b,N,W):W()}else i(b,d,p)},Me=(c,d,p,v=!1,m=!1)=>{const{type:b,props:_,ref:x,children:y,dynamicChildren:g,shapeFlag:k,patchFlag:w,dirs:T,cacheIndex:L,memo:N}=c;if(w===-2&&(m=!1),x!=null&&(Se(),kt(x,null,p,c,!0),Ee()),L!=null&&(d.renderCache[L]=void 0),k&256){d.ctx.deactivate(c);return}const W=k&1&&T,V=!dt(c);let Q;if(V&&(Q=_&&_.onVnodeBeforeUnmount)&&Oe(Q,d,c),k&6)Hc(c.component,p,v);else{if(k&128){c.suspense.unmount(p,v);return}W&&Qe(c,null,d,"beforeUnmount"),k&64?c.type.remove(c,d,p,Ut,v):g&&!g.hasOnce&&(b!==ee||w>0&&w&64)?$t(g,d,p,!1,!0):(b===ee&&w&384||!m&&k&16)&&$t(y,d,p),v&&kr(c)}const re=N!=null&&L==null;(V&&(Q=_&&_.onVnodeUnmounted)||W||re)&&pe(()=>{Q&&Oe(Q,d,c),W&&Qe(c,null,d,"unmounted"),re&&(c.el=null)},p)},kr=c=>{const{type:d,el:p,anchor:v,transition:m}=c;if(d===ee){Nc(p,v);return}if(d===ui){C(c);return}const b=()=>{n(p),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(c.shapeFlag&1&&m&&!m.persisted){const{leave:_,delayLeave:x}=m,y=()=>_(p,b);x?x(c.el,b,y):y()}else b()},Nc=(c,d)=>{let p;for(;c!==d;)p=S(c),n(c),c=p;n(d)},Hc=(c,d,p)=>{const{bum:v,scope:m,job:b,subTree:_,um:x,m:y,a:g}=c;Wn(y),Wn(g),v&&Rs(v),m.stop(),b&&(b.flags|=8,Me(_,c,d,p)),x&&pe(x,d),pe(()=>{c.isUnmounted=!0},d)},$t=(c,d,p,v=!1,m=!1,b=0)=>{for(let _=b;_{if(c.shapeFlag&6)return As(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const d=S(c.anchor||c.el),p=d&&d[ko];return p?S(p):d};let Ei=!1;const Cr=(c,d,p)=>{let v;c==null?d._vnode&&(Me(d._vnode,null,null,!0),v=d._vnode.component):M(d._vnode||null,c,d,null,null,null,p),d._vnode=c,Ei||(Ei=!0,an(v),cn(),Ei=!1)},Ut={p:M,um:Me,m:it,r:kr,mt:Si,mc:Ye,pc:G,pbc:tt,n:As,o:e};return{render:Cr,hydrate:void 0,createApp:Jo(Cr)}}function di({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function et({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function pl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Vn(e,t,s=!1){const i=e.children,n=t.children;if(A(i)&&A(n))for(let r=0;r>1,e[s[l]]0&&(t[i]=s[r-1]),s[r]=i)}}for(r=s.length,o=s[r-1];r-- >0;)s[r]=o,o=t[o];return s}function zn(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:zn(t)}function Wn(e){if(e)for(let t=0;te.__isSuspense;function bl(e,t){t&&t.pendingBranch?A(e)?t.effects.push(...e):t.effects.push(e):_o(e)}const ee=Symbol.for("v-fgt"),fs=Symbol.for("v-txt"),Ce=Symbol.for("v-cmt"),ui=Symbol.for("v-stc"),Be=[];let he=null;function R(e=!1){Be.push(he=e?null:[])}function fi(){Be.pop(),he=Be[Be.length-1]||null}let Lt=1;function qn(e,t=!1){Lt+=e,e<0&&he&&t&&(he.hasOnce=!0)}function Yn(e){return e.dynamicChildren=Lt>0?he||nt:null,fi(),Lt>0&&he&&he.push(e),e}function I(e,t,s,i,n,r){return Yn(O(e,t,s,i,n,r,!0))}function ps(e,t,s,i,n){return Yn(_e(e,t,s,i,n,!0))}function pi(e){return e?e.__v_isVNode===!0:!1}function Pt(e,t){return e.type===t.type&&e.key===t.key}const Xn=({key:e})=>e??null,hs=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?q(e)||le(e)||P(e)?{i:ne,r:e,k:t,f:!!s}:e:null);function O(e,t=null,s=null,i=0,n=null,r=e===ee?0:1,o=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Xn(t),ref:t&&hs(t),scopeId:un,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:i,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:ne};return l?(bs(a,s),r&128&&e.normalize(a)):s&&(a.shapeFlag|=q(s)?8:16),Lt>0&&!o&&he&&(a.patchFlag>0||r&6)&&a.patchFlag!==32&&he.push(a),a}const _e=gl;function gl(e,t=null,s=null,i=0,n=null,r=!1){if((!e||e===Uo)&&(e=Ce),pi(e)){const l=pt(e,t,!0);return s&&bs(l,s),Lt>0&&!r&&he&&(l.shapeFlag&6?he[he.indexOf(e)]=l:he.push(l)),l.patchFlag=-2,l}if(Al(e)&&(e=e.__vccOpts),t){t=ml(t);let{class:l,style:a}=t;l&&!q(l)&&(t.class=Ke(l)),$(a)&&(qs(a)&&!A(a)&&(a=J({},a)),t.style=Is(a))}const o=q(e)?1:Gn(e)?128:ls(e)?64:$(e)?4:P(e)?2:0;return O(e,t,s,i,n,o,r,!0)}function ml(e){return e?qs(e)||Hn(e)?J({},e):e:null}function pt(e,t,s=!1,i=!1){const{props:n,ref:r,patchFlag:o,children:l,transition:a}=e,f=t?vl(n||{},t):n,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&Xn(f),ref:t&&t.ref?s&&r?A(r)?r.concat(hs(t)):[r,hs(t)]:hs(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ee?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&pt(e.ssContent),ssFallback:e.ssFallback&&pt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&i&&ei(u,a.clone(u)),u}function ht(e=" ",t=0){return _e(fs,null,e,t)}function ue(e="",t=!1){return t?(R(),ps(Ce,null,e)):_e(Ce,null,e)}function Ae(e){return e==null||typeof e=="boolean"?_e(Ce):A(e)?_e(ee,null,e.slice()):pi(e)?Ve(e):_e(fs,null,String(e))}function Ve(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:pt(e)}function bs(e,t){let s=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(A(t))s=16;else if(typeof t=="object")if(i&65){const n=t.default;n&&(n._c&&(n._d=!1),bs(e,n()),n._c&&(n._d=!0));return}else{s=32;const n=t._;!n&&!Hn(t)?t._ctx=ne:n===3&&ne&&(ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(P(t)){if(i&65){bs(e,{default:t});return}t={default:t,_ctx:ne},s=32}else t=String(t),i&64?(s=16,t=[ht(t)]):s=8;e.children=t,e.shapeFlag|=s}function vl(...e){const t={};for(let s=0;sae||ne;let gs,Mt;{const e=Yt(),t=(s,i)=>{let n;return(n=e[s])||(n=e[s]=[]),n.push(i),r=>{n.length>1?n.forEach(o=>o(r)):n[0](r)}};gs=t("__VUE_INSTANCE_SETTERS__",s=>ae=s),Mt=t("__VUE_SSR_SETTERS__",s=>It=s)}const Rt=e=>{const t=ae;return gs(e),e.scope.on(),()=>{e.scope.off(),gs(t)}},Zn=()=>{ae&&ae.scope.off(),gs(null)};function Qn(e){return e.vnode.shapeFlag&4}let It=!1;function wl(e,t=!1,s=!1){t&&Mt(t);const{props:i,children:n}=e.vnode,r=Qn(e);rl(e,i,r,t),cl(e,n,s||t);const o=r?Sl(e,t):void 0;return t&&Mt(!1),o}function Sl(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,zo);const{setup:i}=s;if(i){Se();const n=e.setupContext=i.length>1?Tl(e):null,r=Rt(e),o=lt(i,e,0,[e.props,n]),l=Ci(o);if(Ee(),r(),(l||e.sp)&&!dt(e)&&bn(e),l){if(o.then(Zn,Zn),t)return o.then(a=>{Mt(!0);try{er(e,a,t)}finally{Mt(!1)}}).catch(a=>{ns(a,e,0)});e.asyncDep=o}else er(e,o)}else tr(e)}function er(e,t,s){P(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:$(t)&&(e.setupState=sn(t)),tr(e)}function tr(e,t,s){const i=e.type;e.render||(e.render=i.render||we);{const n=Rt(e);Se();try{Wo(e)}finally{Ee(),n()}}}const El={get(e,t){return oe(e,"get",""),e[t]}};function Tl(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,El),slots:e.slots,emit:e.emit,expose:t}}function ms(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(sn(ao(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in At)return At[s](e)},has(t,s){return s in t||s in At}})):e.proxy}const kl=/(?:^|[-_])\w/g,Cl=e=>e.replace(kl,t=>t.toUpperCase()).replace(/[-_]/g,"");function sr(e,t=!0){return P(e)?e.displayName||e.name:e.name||t&&e.__name}function ir(e,t,s=!1){let i=sr(t);if(!i&&t.__file){const n=t.__file.match(/([^/\\]+)\.\w+$/);n&&(i=n[1])}if(!i&&e){const n=r=>{for(const o in r)if(r[o]===t)return o};i=n(e.components)||e.parent&&n(e.parent.type.components)||n(e.appContext.components)}return i?Cl(i):s?"App":"Anonymous"}function Al(e){return P(e)&&"__vccOpts"in e}const Ol=(e,t)=>fo(e,t,It),Ll="3.5.42";/** * @vue/runtime-dom v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let ui;const to=typeof window<"u"&&window.trustedTypes;if(to)try{ui=to.createPolicy("vue",{createHTML:e=>e})}catch{}const so=ui?e=>ui.createHTML(e):e=>e,Cl="http://www.w3.org/2000/svg",kl="http://www.w3.org/1998/Math/MathML",We=typeof document<"u"?document:null,io=We&&We.createElement("template"),Ol={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,i)=>{const n=t==="svg"?We.createElementNS(Cl,e):t==="mathml"?We.createElementNS(kl,e):s?We.createElement(e,{is:s}):We.createElement(e);return e==="select"&&i&&i.multiple!=null&&n.setAttribute("multiple",i.multiple),n},createText:e=>We.createTextNode(e),createComment:e=>We.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>We.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,i,n,o){const r=s?s.previousSibling:t.lastChild;if(n&&(n===o||n.nextSibling))for(;t.insertBefore(n.cloneNode(!0),s),!(n===o||!(n=n.nextSibling)););else{io.innerHTML=so(i==="svg"?`${e}`:i==="mathml"?`${e}`:e);const l=io.content;if(i==="svg"||i==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,s)}return[r?r.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Ml=Symbol("_vtc");function Pl(e,t,s){const i=e[Ml];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const bs=Symbol("_vod"),no=Symbol("_vsh"),hi={name:"show",beforeMount(e,{value:t},{transition:s}){e[bs]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):Nt(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:i}){!t!=!s&&(i?t?(i.beforeEnter(e),Nt(e,!0),i.enter(e)):i.leave(e,()=>{Nt(e,!1)}):Nt(e,t))},beforeUnmount(e,{value:t}){Nt(e,t)}};function Nt(e,t){e.style.display=t?e[bs]:"none",e[no]=!t}const Rl=Symbol(""),Ll=/(?:^|;)\s*display\s*:/;function Il(e,t,s){const i=e.style,n=G(s);let o=!1;if(s&&!n){if(t)if(G(t))for(const r of t.split(";")){const l=r.slice(0,r.indexOf(":")).trim();s[l]==null&&Dt(i,l,"")}else for(const r in t)s[r]==null&&Dt(i,r,"");for(const r in s){r==="display"&&(o=!0);const l=s[r];l!=null?Dl(e,r,!G(t)&&t?t[r]:void 0,l)||Dt(i,r,l):Dt(i,r,"")}}else if(n){if(t!==s){const r=i[Rl];r&&(s+=";"+r),i.cssText=s,o=Ll.test(s)}}else t&&e.removeAttribute("style");bs in e&&(e[bs]=o?i.display:"",e[no]&&(i.display="none"))}const ys=/\s*!important$/;function Dt(e,t,s){if(k(s))s.forEach(i=>Dt(e,t,i));else if(s==null&&(s=""),t.startsWith("--"))ys.test(s)?e.setProperty(t,s.replace(ys,""),"important"):e.setProperty(t,s);else{const i=Nl(e,t);ys.test(s)?e.setProperty(me(i),s.replace(ys,""),"important"):e[i]=s}}const oo=["Webkit","Moz","ms"],pi={};function Nl(e,t){const s=pi[t];if(s)return s;let i=se(t);if(i!=="filter"&&i in e)return pi[t]=i;i=Gt(i);for(let n=0;ngi||(Vl.then(()=>gi=0),gi=Date.now());function Kl(e,t){const s=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=s.attached)return;const n=s.value;if(k(n)){const o=i.stopImmediatePropagation;i.stopImmediatePropagation=()=>{o.call(i),i._stopped=!0};const r=n.slice(),l=[i];for(let a=0;ae.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,zl=(e,t,s,i,n,o)=>{const r=n==="svg";t==="class"?Pl(e,i,r):t==="style"?Il(e,s,i):Vt(t)?Wt(t)||Fl(e,t,s,i,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ql(e,t,i,r))?(ao(e,t,i),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&lo(e,t,i,r,o,t!=="value")):e._isVueCE&&(Gl(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!G(i)))?ao(e,se(t),i,o,t):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),lo(e,t,i,r))};function ql(e,t,s,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&fo(t)&&P(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const n=e.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return fo(t)&&G(s)?!1:t in e}function Gl(e,t){const s=e._def.props;if(!s)return!1;const i=se(t);return Array.isArray(s)?s.some(n=>se(n)===i):Object.keys(s).some(n=>se(n)===i)}const uo={};function Yl(e,t,s){let i=Qs(e,t);zt(i)&&(i=J({},i,t));class n extends mi{constructor(r){super(i,r,s)}}return n.def=i,n}const Xl=typeof HTMLElement<"u"?HTMLElement:class{};class mi extends Xl{constructor(t,s={},i=go){super(),this._def=t,this._props=s,this._createApp=i,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&i!==go?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(J({},t.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t=t&&(t.assignedSlot||t.parentNode||t.host);)if(t instanceof mi){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._inheritParentContext(t))}_inheritParentContext(t=this._parent){t&&this._app&&Object.setPrototypeOf(this._app._context.provides,t._instance.provides)}disconnectedCallback(){this._connected=!1,sn(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(t){for(const s of t)this._setAttr(s.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let i=0;i{this._resolved=!0,this._pendingResolve=void 0;const{props:o,styles:r}=i;let l;if(o&&!k(o))for(const a in o){const u=o[a];(u===Number||u&&u.type===Number)&&(a in this._props&&(this._props[a]=Ci(this._props[a])),(l||(l=Object.create(null)))[se(a)]=!0)}this._numberProps=l,this._resolveProps(i),this.shadowRoot&&this._applyStyles(r),this._mount(i)},s=this._def.__asyncLoader;if(s)return this._pendingResolve=s().then(i=>{i.configureApp=this._def.configureApp,t(this._def=i,!0)}),this._pendingResolve;t(this._def)}_mount(t){this._app=this._createApp(t),this._inheritParentContext(),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const s=this._instance&&this._instance.exposed;if(s)for(const i in s)H(this,i)||Object.defineProperty(this,i,{get:()=>Zi(s[i])})}_resolveProps(t){const{props:s}=t,i=k(s)?s:Object.keys(s||{});for(const n of Object.keys(this))n[0]!=="_"&&i.includes(n)&&this._setProp(n,this[n]);for(const n of i.map(se))Object.defineProperty(this,n,{get(){return this._getProp(n)},set(o){this._setProp(n,o,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const s=this.hasAttribute(t);let i=s?this.getAttribute(t):uo;const n=se(t);s&&this._numberProps&&this._numberProps[n]&&(i=Ci(i)),this._setProp(n,i,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,s,i=!0,n=!1){if(s!==this._props[t]&&(this._dirty=!0,s===uo?delete this._props[t]:(this._props[t]=s,t==="key"&&this._app&&(this._app._ceVNode.key=s)),n&&this._instance&&this._update(),i)){const o=this._ob;o&&(this._processMutations(o.takeRecords()),o.disconnect()),s===!0?this.setAttribute(me(t),""):typeof s=="string"||typeof s=="number"?this.setAttribute(me(t),s+""):s||this.removeAttribute(me(t)),o&&o.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),Zl(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const s=_e(this._def,J(t,this._props));return this._instance||(s.ce=i=>{this._instance=i,i.ce=this,i.isCE=!0;const n=(o,r)=>{this.dispatchEvent(new CustomEvent(o,zt(r[0])?J({detail:r},r[0]):{detail:r}))};i.emit=(o,...r)=>{n(o,r),me(o)!==o&&n(me(o),r)},this._setParent()}),s}_applyStyles(t,s,i){if(!t)return;if(s){if(s===this._def||this._styleChildren.has(s))return;this._styleChildren.add(s)}const n=this._nonce,o=this.shadowRoot,r=i?this._getStyleAnchor(i)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(o);let l=null;for(let a=t.length-1;a>=0;a--){const u=document.createElement("style");n&&u.setAttribute("nonce",n),u.textContent=t[a],o.insertBefore(u,l||r),l=u,a===0&&(i||this._styleAnchors.set(this._def,u),s&&this._styleAnchors.set(s,u))}}_getStyleAnchor(t){if(!t)return null;const s=this._styleAnchors.get(t);return s&&s.parentNode===this.shadowRoot?s:(s&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let s=0;s{po().render(...e)},go=(...e)=>{const t=po().createApp(...e),{mount:s}=t;return t.mount=i=>{const n=ea(i);if(!n)return;const o=t._component;!P(o)&&!o.render&&!o.template&&(o.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const r=s(n,!1,Ql(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),r},t};function Ql(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ea(e){return G(e)?document.querySelector(e):e}function ta(e,t){const s=t;mn(()=>{var l;const i=Gn();if(!i)return;const n=(l=i.proxy)==null?void 0:l.$el;if(!n)return;const o=n.getRootNode();if(!(o instanceof ShadowRoot)||o.querySelector(`style[data-shadow-styles="${s}"]`))return;const r=document.createElement("style");r.setAttribute("data-shadow-styles",s),r.textContent=e,o.appendChild(r)})}const mo={menu:'',map:'',globe:'',heart:'',prayer:'',list:'',users:'',flag:'',target:'',pin:'',monitor:'',chart:'',layers:'',flask:'',share:'',beaker:'',chevron:'',grid:'',tree:'',dots:'',embed:'',send:'',poster:'',search:'',book:'',wifi:''};function sa(e,t=""){const s=mo[e]||mo.map;return``}const ia=".vtl{position:absolute;top:0;right:0;bottom:0;left:0;display:grid!important;grid-template-rows:auto 1fr;height:100%;width:100%;min-height:420px;background:#f3f3f1;color:#3b463d;font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;--vtl-accent:#92b195;--vtl-border:#d1d4cd;--vtl-elevated:#ffffff;--vtl-accented:#d1d4cd;--vtl-muted:#6d766e;--vtl-rail:256px}.vtl.no-header{grid-template-rows:1fr}.vtl-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;box-sizing:border-box;min-height:64px;padding:8px 16px;border-bottom:1px solid var(--vtl-border);background:#fff}.vtl-menu{display:none;font:16px/1 system-ui;color:#3b463d;background:#d1d4cd;border:1px solid #d1d4cd;border-radius:8px;padding:5px 10px;cursor:pointer}.vtl-fab{position:absolute;z-index:15;left:calc(12px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));width:44px;height:44px;display:flex;align-items:center;justify-content:center;font:18px/1 system-ui;color:#3b463d;background:#fff;border:1px solid var(--vtl-border);border-radius:50%;box-shadow:0 2px 10px #0000002e;cursor:pointer}.vtl-fab:hover{background:#d1d4cd}.vtl-fab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:2px}.vtl-menu:hover{background:#d1d4cd}.vtl-brand{display:inline-flex;align-items:center}.vtl-brand:empty{display:none}.vtl-title{font-size:15px;font-weight:600;letter-spacing:-.01em;color:#3b463d}.vtl-meta{color:var(--vtl-muted);font-size:12px;margin-left:auto;display:inline-flex;align-items:center;gap:8px}.vtl-body{min-height:0;position:relative;display:flex}.vtl-nav{position:absolute;top:0;bottom:0;left:0;z-index:5;width:256px;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;border-right:1px solid var(--vtl-border);padding:12px 12px 20px;background:#fff;scrollbar-width:thin;scrollbar-color:#c4c8c0 transparent;contain:layout paint;transform:translate(0);transition:transform .2s cubic-bezier(.4,0,.2,1);will-change:transform}.vtl-nav::-webkit-scrollbar{width:8px;height:8px}.vtl-nav::-webkit-scrollbar-track{background:transparent}.vtl-nav::-webkit-scrollbar-thumb{background:#c4c8c0;border-radius:8px}.vtl-nav::-webkit-scrollbar-thumb:hover{background:#9aa197}.vtl-collapse{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;margin:0 0 8px;padding:7px 10px;border:1px solid var(--vtl-border);border-radius:8px;background:#d1d4cd;color:var(--vtl-muted);font:inherit;font-size:12px;cursor:pointer}.vtl-collapse:hover{background:var(--vtl-accented);color:#3b463d}.vtl-collapse:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-collapse-ic{flex:0 0 auto;display:inline-flex;transition:transform .16s ease;transform:rotate(180deg)}.vtl-collapse-ic svg{width:16px;height:16px}.vtl-collapse-tx{white-space:nowrap}.vtl-grp{margin-bottom:2px}.vtl-grp+.vtl-grp{margin-top:8px;padding-top:8px;border-top:1px solid var(--vtl-border)}.vtl-tier{width:100%;padding:8px 8px 6px;display:flex;align-items:center;gap:8px;box-sizing:border-box}.vtl-tier-btn{border:0;background:none;color:inherit;font:inherit;cursor:pointer;text-align:left;border-radius:8px}.vtl-tier-btn:hover{background:var(--vtl-accented)}.vtl-tier-btn:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tier-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tier-ic svg{width:15px;height:15px}.vtl-cap{font:700 10px/1 system-ui;letter-spacing:.4px;color:#052e16;background:var(--vtl-accent);border-radius:999px;padding:3px 7px}.vtl-tl{font-weight:600;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--vtl-muted)}.vtl-td{color:#6b6b6b;font-size:11px;margin-left:auto}.vtl-chev{margin-left:auto;display:inline-flex;color:var(--vtl-muted);transition:transform .16s ease}.vtl-chev svg{width:15px;height:15px}.vtl-chev.open{transform:rotate(90deg)}.vtl-rows{display:flex;flex-direction:column;gap:1px}.vtl-tab{display:flex;align-items:center;gap:11px;width:100%;min-height:48px;text-align:left;border:0;background:none;color:var(--vtl-muted);padding:8px 12px;cursor:pointer;border-radius:var(--vtl-radius,8px);font:inherit;margin:0;transition:background .13s ease,color .13s ease}.vtl-tab:hover{background:var(--vtl-accented);color:#3b463d}.vtl-tab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tab.active{background:var(--vtl-accented);color:#3b463d;font-weight:500}.vtl-tab.active .vtl-tab-ic{color:var(--vtl-accent)}.vtl-tab-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tab-ic svg{width:20px;height:20px}.vtl-tab-emoji{font-size:17px;line-height:1;flex:0 0 auto}.vtl-tab-fallback{display:none;flex:0 0 auto;width:20px;height:20px;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--vtl-muted);background:var(--vtl-accented);border-radius:6px}.vtl-tab.active .vtl-tab-fallback{color:var(--vtl-accent)}.vtl-tab-text{display:flex;flex-direction:column;min-width:0}.vtl-tab-label{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}.vtl-tab-badge{font:600 9px/1 system-ui;letter-spacing:.3px;text-transform:uppercase;color:var(--vtl-accent);border:1px solid var(--vtl-accent);border-radius:var(--vtl-radius,8px);padding:2px 5px}.vtl-tab-sub{font-size:11px;color:#6b6b6b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vtl-tab-sub code{font-family:ui-monospace,Menlo,monospace}.vtl-tab.active .vtl-tab-sub{color:var(--vtl-muted)}.vtl-main{position:absolute;top:0;bottom:0;right:0;left:256px;min-width:0;display:flex;flex-direction:column}.vtl-content{flex:1 1 auto;position:relative;min-height:0}.vtl-host{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h:0}.vtl-host-slot{position:relative;min-height:100%}.vtl-host-slot>*{min-height:0;max-height:none}.vtl-host-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:var(--dx-muted, #6d766e);font-size:13px;padding:20px}.vtl-host-hint.err{color:#f87171}.vtl-host-hint small{color:var(--dx-muted, #6d766e)}.vtl.rail-collapsed .vtl-nav{transform:translate(-184px)}.vtl.rail-collapsed .vtl-main{left:72px}.vtl.rail-collapsed .vtl-collapse{padding-left:184px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(0)}.vtl.rail-collapsed .vtl-collapse-tx{display:none}.vtl.rail-collapsed .vtl-tab{padding-left:188px;gap:0}.vtl.rail-collapsed .vtl-tab-text{display:none}.vtl.rail-collapsed .vtl-tab-emoji{font-size:19px}.vtl.rail-collapsed .vtl-tab-fallback{display:inline-flex}.vtl.rail-collapsed .vtl-tier{padding-left:196px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:none}.vtl.rail-collapsed .vtl-grp+.vtl-grp{margin-top:6px;padding-top:6px}@media (max-width: 760px){.vtl-top{min-height:56px}.vtl-menu{display:inline-block}.vtl-meta{display:none}.vtl-nav{z-index:20;width:256px;box-shadow:0 0 28px #0000008c;transform:translate(-100%)}.vtl.nav-open .vtl-nav{transform:translate(0)}.vtl-main{left:0}.vtl.rail-collapsed .vtl-nav{transform:translate(-100%)}.vtl.rail-collapsed.nav-open .vtl-nav{transform:translate(0)}.vtl.rail-collapsed .vtl-main{left:0}.vtl.rail-collapsed .vtl-collapse{padding-left:10px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(180deg)}.vtl.rail-collapsed .vtl-collapse-tx{display:inline}.vtl.rail-collapsed .vtl-tab{padding-left:10px;gap:11px}.vtl.rail-collapsed .vtl-tab-text{display:flex}.vtl.rail-collapsed .vtl-tab-fallback{display:none}.vtl.rail-collapsed .vtl-tier{padding-left:8px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:inline}}",vo=(e,t)=>{const s=e.__vccOpts||e;for(const[i,n]of t)s[i]=n;return s},Ht={};function na(e){return e?(Ht[e]||(Ht[e]=new Promise((t,s)=>{const i=document.createElement("script");i.src=e,i.onload=()=>t(),i.onerror=()=>{delete Ht[e],s(new Error("failed to load "+e))},document.head.appendChild(i)})),Ht[e]):Promise.resolve()}function oa(e,t=5e3){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():customElements.whenDefined?Promise.race([customElements.whenDefined(e),new Promise((s,i)=>setTimeout(()=>i(new Error("timeout waiting for <"+e+">")),t))]):Promise.resolve()}const ra=` +**/let hi;const nr=typeof window<"u"&&window.trustedTypes;if(nr)try{hi=nr.createPolicy("vue",{createHTML:e=>e})}catch{}const rr=hi?e=>hi.createHTML(e):e=>e,Pl="http://www.w3.org/2000/svg",Ml="http://www.w3.org/1998/Math/MathML",ze=typeof document<"u"?document:null,or=ze&&ze.createElement("template"),Rl={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,i)=>{const n=t==="svg"?ze.createElementNS(Pl,e):t==="mathml"?ze.createElementNS(Ml,e):s?ze.createElement(e,{is:s}):ze.createElement(e);return e==="select"&&i&&i.multiple!=null&&n.setAttribute("multiple",i.multiple),n},createText:e=>ze.createTextNode(e),createComment:e=>ze.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ze.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,i,n,r){const o=s?s.previousSibling:t.lastChild;if(n&&(n===r||n.nextSibling))for(;t.insertBefore(n.cloneNode(!0),s),!(n===r||!(n=n.nextSibling)););else{or.innerHTML=rr(i==="svg"?`${e}`:i==="mathml"?`${e}`:e);const l=or.content;if(i==="svg"||i==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Il=Symbol("_vtc");function Nl(e,t,s){const i=e[Il];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const vs=Symbol("_vod"),lr=Symbol("_vsh"),bi={name:"show",beforeMount(e,{value:t},{transition:s}){e[vs]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):Nt(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:i}){!t!=!s&&(i?t?(i.beforeEnter(e),Nt(e,!0),i.enter(e)):i.leave(e,()=>{Nt(e,!1)}):Nt(e,t))},beforeUnmount(e,{value:t}){Nt(e,t)}};function Nt(e,t){e.style.display=t?e[vs]:"none",e[lr]=!t}const Hl=Symbol(""),Dl=/(?:^|;)\s*display\s*:/;function jl(e,t,s){const i=e.style,n=q(s);let r=!1;if(s&&!n){if(t)if(q(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&Ht(i,l,"")}else for(const o in t)s[o]==null&&Ht(i,o,"");for(const o in s){o==="display"&&(r=!0);const l=s[o];l!=null?$l(e,o,!q(t)&&t?t[o]:void 0,l)||Ht(i,o,l):Ht(i,o,"")}}else if(n){if(t!==s){const o=i[Hl];o&&(s+=";"+o),i.cssText=s,r=Dl.test(s)}}else t&&e.removeAttribute("style");vs in e&&(e[vs]=r?i.display:"",e[lr]&&(i.display="none"))}const ys=/\s*!important$/;function Ht(e,t,s){if(A(s))s.forEach(i=>Ht(e,t,i));else if(s==null&&(s=""),t.startsWith("--"))ys.test(s)?e.setProperty(t,s.replace(ys,""),"important"):e.setProperty(t,s);else{const i=Fl(e,t);ys.test(s)?e.setProperty(ge(i),s.replace(ys,""),"important"):e[i]=s}}const ar=["Webkit","Moz","ms"],gi={};function Fl(e,t){const s=gi[t];if(s)return s;let i=se(t);if(i!=="filter"&&i in e)return gi[t]=i;i=qt(i);for(let n=0;nmi||(Gl.then(()=>mi=0),mi=Date.now());function Yl(e,t){const s=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=s.attached)return;const n=s.value;if(A(n)){const r=i.stopImmediatePropagation;i.stopImmediatePropagation=()=>{r.call(i),i._stopped=!0};const o=n.slice(),l=[i];for(let a=0;ae.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Xl=(e,t,s,i,n,r)=>{const o=n==="svg";t==="class"?Nl(e,i,o):t==="style"?jl(e,s,i):Vt(t)?zt(t)||Vl(e,t,s,i,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Jl(e,t,i,o))?(ur(e,t,i),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&dr(e,t,i,o,r,t!=="value")):e._isVueCE&&(Zl(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!q(i)))?ur(e,se(t),i,r,t):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),dr(e,t,i,o))};function Jl(e,t,s,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&pr(t)&&P(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const n=e.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return pr(t)&&q(s)?!1:t in e}function Zl(e,t){const s=e._def.props;if(!s)return!1;const i=se(t);return Array.isArray(s)?s.some(n=>se(n)===i):Object.keys(s).some(n=>se(n)===i)}const hr={};function Ql(e,t,s){let i=ti(e,t);Kt(i)&&(i=J({},i,t));class n extends vi{constructor(o){super(i,o,s)}}return n.def=i,n}const ea=typeof HTMLElement<"u"?HTMLElement:class{};class vi extends ea{constructor(t,s={},i=mr){super(),this._def=t,this._props=s,this._createApp=i,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&i!==mr?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(J({},t.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t=t&&(t.assignedSlot||t.parentNode||t.host);)if(t instanceof vi){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._inheritParentContext(t))}_inheritParentContext(t=this._parent){t&&this._app&&Object.setPrototypeOf(this._app._context.provides,t._instance.provides)}disconnectedCallback(){this._connected=!1,on(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(t){for(const s of t)this._setAttr(s.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let i=0;i{this._resolved=!0,this._pendingResolve=void 0;const{props:r,styles:o}=i;let l;if(r&&!A(r))for(const a in r){const f=r[a];(f===Number||f&&f.type===Number)&&(a in this._props&&(this._props[a]=Li(this._props[a])),(l||(l=Object.create(null)))[se(a)]=!0)}this._numberProps=l,this._resolveProps(i),this.shadowRoot&&this._applyStyles(o),this._mount(i)},s=this._def.__asyncLoader;if(s)return this._pendingResolve=s().then(i=>{i.configureApp=this._def.configureApp,t(this._def=i,!0)}),this._pendingResolve;t(this._def)}_mount(t){this._app=this._createApp(t),this._inheritParentContext(),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const s=this._instance&&this._instance.exposed;if(s)for(const i in s)j(this,i)||Object.defineProperty(this,i,{get:()=>tn(s[i])})}_resolveProps(t){const{props:s}=t,i=A(s)?s:Object.keys(s||{});for(const n of Object.keys(this))n[0]!=="_"&&i.includes(n)&&this._setProp(n,this[n]);for(const n of i.map(se))Object.defineProperty(this,n,{get(){return this._getProp(n)},set(r){this._setProp(n,r,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const s=this.hasAttribute(t);let i=s?this.getAttribute(t):hr;const n=se(t);s&&this._numberProps&&this._numberProps[n]&&(i=Li(i)),this._setProp(n,i,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,s,i=!0,n=!1){if(s!==this._props[t]&&(this._dirty=!0,s===hr?delete this._props[t]:(this._props[t]=s,t==="key"&&this._app&&(this._app._ceVNode.key=s)),n&&this._instance&&this._update(),i)){const r=this._ob;r&&(this._processMutations(r.takeRecords()),r.disconnect()),s===!0?this.setAttribute(ge(t),""):typeof s=="string"||typeof s=="number"?this.setAttribute(ge(t),s+""):s||this.removeAttribute(ge(t)),r&&r.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),sa(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const s=_e(this._def,J(t,this._props));return this._instance||(s.ce=i=>{this._instance=i,i.ce=this,i.isCE=!0;const n=(r,o)=>{this.dispatchEvent(new CustomEvent(r,Kt(o[0])?J({detail:o},o[0]):{detail:o}))};i.emit=(r,...o)=>{n(r,o),ge(r)!==r&&n(ge(r),o)},this._setParent()}),s}_applyStyles(t,s,i){if(!t)return;if(s){if(s===this._def||this._styleChildren.has(s))return;this._styleChildren.add(s)}const n=this._nonce,r=this.shadowRoot,o=i?this._getStyleAnchor(i)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(r);let l=null;for(let a=t.length-1;a>=0;a--){const f=document.createElement("style");n&&f.setAttribute("nonce",n),f.textContent=t[a],r.insertBefore(f,l||o),l=f,a===0&&(i||this._styleAnchors.set(this._def,f),s&&this._styleAnchors.set(s,f))}}_getStyleAnchor(t){if(!t)return null;const s=this._styleAnchors.get(t);return s&&s.parentNode===this.shadowRoot?s:(s&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let s=0;s{gr().render(...e)},mr=(...e)=>{const t=gr().createApp(...e),{mount:s}=t;return t.mount=i=>{const n=na(i);if(!n)return;const r=t._component;!P(r)&&!r.render&&!r.template&&(r.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const o=s(n,!1,ia(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),o},t};function ia(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function na(e){return q(e)?document.querySelector(e):e}function ra(e,t){const s=t;yn(()=>{var l;const i=Jn();if(!i)return;const n=(l=i.proxy)==null?void 0:l.$el;if(!n)return;const r=n.getRootNode();if(!(r instanceof ShadowRoot)||r.querySelector(`style[data-shadow-styles="${s}"]`))return;const o=document.createElement("style");o.setAttribute("data-shadow-styles",s),o.textContent=e,r.appendChild(o)})}const vr={menu:'',map:'',globe:'',heart:'',prayer:'',list:'',users:'',flag:'',target:'',pin:'',monitor:'',chart:'',layers:'',flask:'',share:'',beaker:'',chevron:'',grid:'',tree:'',dots:'',embed:'',send:'',poster:'',search:'',book:'',wifi:''};function oa(e,t=""){const s=vr[e]||vr.map;return``}const la=".vtl{position:absolute;top:0;right:0;bottom:0;left:0;display:grid!important;grid-template-rows:auto 1fr;height:100%;width:100%;min-height:420px;background:#f3f3f1;color:#3b463d;font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;--vtl-accent:#92b195;--vtl-border:#d1d4cd;--vtl-elevated:#ffffff;--vtl-accented:#d1d4cd;--vtl-muted:#6d766e;--vtl-rail:256px}.vtl.no-header{grid-template-rows:1fr}.vtl-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;box-sizing:border-box;min-height:64px;padding:8px 16px;border-bottom:1px solid var(--vtl-border);background:#fff}.vtl-menu{display:none;font:16px/1 system-ui;color:#3b463d;background:#d1d4cd;border:1px solid #d1d4cd;border-radius:8px;padding:5px 10px;cursor:pointer}.vtl-fab{position:absolute;z-index:15;left:calc(12px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));width:44px;height:44px;display:flex;align-items:center;justify-content:center;font:18px/1 system-ui;color:#3b463d;background:#fff;border:1px solid var(--vtl-border);border-radius:50%;box-shadow:0 2px 10px #0000002e;cursor:pointer}.vtl-fab:hover{background:#d1d4cd}.vtl-fab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:2px}.vtl-menu:hover{background:#d1d4cd}.vtl-brand{display:inline-flex;align-items:center}.vtl-brand:empty{display:none}.vtl-title{font-size:15px;font-weight:600;letter-spacing:-.01em;color:#3b463d}.vtl-meta{color:var(--vtl-muted);font-size:12px;margin-left:auto;display:inline-flex;align-items:center;gap:8px}.vtl-body{min-height:0;position:relative;display:flex}.vtl-nav{position:absolute;top:0;bottom:0;left:0;z-index:5;width:256px;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;border-right:1px solid var(--vtl-border);padding:12px 12px 20px;background:#fff;scrollbar-width:thin;scrollbar-color:#c4c8c0 transparent;contain:layout paint;transform:translate(0);transition:transform .2s cubic-bezier(.4,0,.2,1);will-change:transform}.vtl-nav::-webkit-scrollbar{width:8px;height:8px}.vtl-nav::-webkit-scrollbar-track{background:transparent}.vtl-nav::-webkit-scrollbar-thumb{background:#c4c8c0;border-radius:8px}.vtl-nav::-webkit-scrollbar-thumb:hover{background:#9aa197}.vtl-collapse{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;margin:0 0 8px;padding:7px 10px;border:1px solid var(--vtl-border);border-radius:8px;background:#d1d4cd;color:var(--vtl-muted);font:inherit;font-size:12px;cursor:pointer}.vtl-collapse:hover{background:var(--vtl-accented);color:#3b463d}.vtl-collapse:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-collapse-ic{flex:0 0 auto;display:inline-flex;transition:transform .16s ease;transform:rotate(180deg)}.vtl-collapse-ic svg{width:16px;height:16px}.vtl-collapse-tx{white-space:nowrap}.vtl-grp{margin-bottom:2px}.vtl-grp+.vtl-grp{margin-top:8px;padding-top:8px;border-top:1px solid var(--vtl-border)}.vtl-tier{width:100%;padding:8px 8px 6px;display:flex;align-items:center;gap:8px;box-sizing:border-box}.vtl-tier-btn{border:0;background:none;color:inherit;font:inherit;cursor:pointer;text-align:left;border-radius:8px}.vtl-tier-btn:hover{background:var(--vtl-accented)}.vtl-tier-btn:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tier-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tier-ic svg{width:15px;height:15px}.vtl-cap{font:700 10px/1 system-ui;letter-spacing:.4px;color:#052e16;background:var(--vtl-accent);border-radius:999px;padding:3px 7px}.vtl-tl{font-weight:600;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--vtl-muted)}.vtl-td{color:#6b6b6b;font-size:11px;margin-left:auto}.vtl-chev{margin-left:auto;display:inline-flex;color:var(--vtl-muted);transition:transform .16s ease}.vtl-chev svg{width:15px;height:15px}.vtl-chev.open{transform:rotate(90deg)}.vtl-rows{display:flex;flex-direction:column;gap:1px}.vtl-tab{display:flex;align-items:center;gap:11px;width:100%;min-height:48px;text-align:left;border:0;background:none;color:var(--vtl-muted);padding:8px 12px;cursor:pointer;border-radius:var(--vtl-radius,8px);font:inherit;margin:0;transition:background .13s ease,color .13s ease}.vtl-tab:hover{background:var(--vtl-accented);color:#3b463d}.vtl-tab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tab.active{background:var(--vtl-accented);color:#3b463d;font-weight:500}.vtl-tab.active .vtl-tab-ic{color:var(--vtl-accent)}.vtl-tab-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tab-ic svg{width:20px;height:20px}.vtl-tab-emoji{font-size:17px;line-height:1;flex:0 0 auto}.vtl-tab-fallback{display:none;flex:0 0 auto;width:20px;height:20px;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--vtl-muted);background:var(--vtl-accented);border-radius:6px}.vtl-tab.active .vtl-tab-fallback{color:var(--vtl-accent)}.vtl-tab-text{display:flex;flex-direction:column;min-width:0}.vtl-tab-label{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}.vtl-tab-badge{font:600 9px/1 system-ui;letter-spacing:.3px;text-transform:uppercase;color:var(--vtl-accent);border:1px solid var(--vtl-accent);border-radius:var(--vtl-radius,8px);padding:2px 5px}.vtl-tab-sub{font-size:11px;color:#6b6b6b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vtl-tab-sub code{font-family:ui-monospace,Menlo,monospace}.vtl-tab.active .vtl-tab-sub{color:var(--vtl-muted)}.vtl-main{position:absolute;top:0;bottom:0;right:0;left:256px;min-width:0;display:flex;flex-direction:column}.vtl-content{flex:1 1 auto;position:relative;min-height:0}.vtl-host{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h:0}.vtl-host-slot{position:relative;min-height:100%}.vtl-host-slot>*{min-height:0;max-height:none}.vtl-host-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:var(--dx-muted, #6d766e);font-size:13px;padding:20px}.vtl-host-hint.err{color:#f87171}.vtl-host-hint small{color:var(--dx-muted, #6d766e)}.vtl.rail-collapsed .vtl-nav{transform:translate(-184px)}.vtl.rail-collapsed .vtl-main{left:72px}.vtl.rail-collapsed .vtl-collapse{padding-left:184px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(0)}.vtl.rail-collapsed .vtl-collapse-tx{display:none}.vtl.rail-collapsed .vtl-tab{padding-left:188px;gap:0}.vtl.rail-collapsed .vtl-tab-text{display:none}.vtl.rail-collapsed .vtl-tab-emoji{font-size:19px}.vtl.rail-collapsed .vtl-tab-fallback{display:inline-flex}.vtl.rail-collapsed .vtl-tier{padding-left:196px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:none}.vtl.rail-collapsed .vtl-grp+.vtl-grp{margin-top:6px;padding-top:6px}@media (max-width: 760px){.vtl-top{min-height:56px}.vtl-menu{display:inline-block}.vtl-meta{display:none}.vtl-nav{z-index:20;width:256px;box-shadow:0 0 28px #0000008c;transform:translate(-100%)}.vtl.nav-open .vtl-nav{transform:translate(0)}.vtl-main{left:0}.vtl.rail-collapsed .vtl-nav{transform:translate(-100%)}.vtl.rail-collapsed.nav-open .vtl-nav{transform:translate(0)}.vtl.rail-collapsed .vtl-main{left:0}.vtl.rail-collapsed .vtl-collapse{padding-left:10px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(180deg)}.vtl.rail-collapsed .vtl-collapse-tx{display:inline}.vtl.rail-collapsed .vtl-tab{padding-left:10px;gap:11px}.vtl.rail-collapsed .vtl-tab-text{display:flex}.vtl.rail-collapsed .vtl-tab-fallback{display:none}.vtl.rail-collapsed .vtl-tier{padding-left:8px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:inline}}",yr=(e,t)=>{const s=e.__vccOpts||e;for(const[i,n]of t)s[i]=n;return s},Dt={};function aa(e){return e?(Dt[e]||(Dt[e]=new Promise((t,s)=>{const i=document.createElement("script");i.src=e,i.onload=()=>t(),i.onerror=()=>{delete Dt[e],s(new Error("failed to load "+e))},document.head.appendChild(i)})),Dt[e]):Promise.resolve()}function ca(e,t=5e3){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():customElements.whenDefined?Promise.race([customElements.whenDefined(e),new Promise((s,i)=>setTimeout(()=>i(new Error("timeout waiting for <"+e+">")),t))]):Promise.resolve()}const da=` /* STRUCTURAL DISPLAY — the !important is deliberate, not a hack. This layout's display mode is load-bearing: it CANNOT function as a block. As a library/ (high-bar) component it ships across all 5 deployment methods, and a host (app-shell direct-mount, WordPress, mobile webview) may force @@ -238,4 +238,4 @@ .vtl.rail-collapsed .vtl-tier { padding-left:8px; } .vtl.rail-collapsed .vtl-tl, .vtl.rail-collapsed .vtl-td, .vtl.rail-collapsed .vtl-cap, .vtl.rail-collapsed .vtl-chev { display:inline; } } -`,la=Qs({name:"VerticalTabsLayout",props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){ta(ra,"vertical-tabs-layout")},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{}}},computed:{railShown(){return this.narrow?this.navOpen:!0},allRows(){if(this.groups&&this.groups.length){const e=[];for(const t of this.groups)for(const s of t.rows||[])e.push(s);return e}return this.items},orderedKeys(){return this.allRows.map(e=>e.key)},elementRows(){return this.allRows.filter(e=>e&&e.element)},mountedElementRows(){return this.elementRows.filter(e=>this.activatedKeys[e.key])}},watch:{active:{immediate:!0,handler(e){this.activateElement(e)}}},mounted(){try{window.matchMedia&&(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this.reconcileForWidth(),this._onMedia=e=>{this.narrow=e.matches,this.reconcileForWidth()},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))}catch{}this.$nextTick(()=>this.activateElement(this.active))},beforeUnmount(){try{this._mql&&this._onMedia&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia))}catch{}this._mql=null,this._onMedia=null},methods:{registerTab(e,t){t&&(this._tabEls[e]=t)},isNarrow(){return this.narrow},reconcileForWidth(){this.narrow?(this.navOpen=!1,this.railCollapsed=!1):this.navOpen=!0},expandRail(){!this.narrow&&this.railCollapsed&&(this.railCollapsed=!1)},toggleRail(){this.narrow?this.navOpen=!this.navOpen:this.railCollapsed=!this.railCollapsed},setHostSlot(e,t){t&&(this._hostSlots[e]=t,this.$nextTick(()=>this.mountHostElement(e)))},activateElement(e){!e||!this.elementRows.find(s=>s.key===e)||(this.activatedKeys[e]||(this.activatedKeys={...this.activatedKeys,[e]:!0},this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(i=>i.key===e),s=this._hostSlots[e];!t||!s||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},na(t.src).then(()=>oa(t.element)).then(()=>{s.innerHTML="";const i=document.createElement(t.element),n=t.attrs||{};for(const o in n){const r=n[o],l=r!=null&&typeof r=="object"?JSON.stringify(r):String(r);try{i[o]=r}catch{}try{i.setAttribute(o,l)}catch{}}i.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",s.appendChild(i),this.hostState={...this.hostState,[e]:"ready"}}).catch(i=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:i&&i.message||String(i)}}))},iconSvg(e){return e?sa(e):""},initial(e){const t=(e||"").trim();return t?t.charAt(0).toUpperCase():"•"},isFolderClosed(e){const t=this.folderOverride[e.key];return t!=null?!t:e.open!==!0},toggleFolder(e){const t=this.folderOverride[e],s=(this.groups||[]).find(n=>n.key===e),i=t??(s&&s.open===!0);this.folderOverride={...this.folderOverride,[e]:!i}},pick(e){this.$emit("update:active",e),this.narrow&&(this.navOpen=!1)},onKey(e){const t=this.orderedKeys;if(!t.length)return;const s=t.indexOf(this.active);let i=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")i=(s+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")i=(s-1+t.length)%t.length;else if(e.key==="Home")i=0;else if(e.key==="End")i=t.length-1;else return;e.preventDefault();const n=t[i];this.pick(n),this.$nextTick(()=>{const o=this._tabEls[n];o&&o.focus&&o.focus()})}}}),aa={key:0,class:"vtl-top"},ca=["aria-expanded"],fa={class:"vtl-brand"},da={class:"vtl-title"},ua={class:"vtl-meta"},ha=["aria-expanded"],pa={class:"vtl-body"},ga=["aria-label","aria-hidden","role","aria-orientation"],ma=["aria-expanded","aria-label"],va=["innerHTML"],ba=["aria-expanded","onClick"],ya={key:0,class:"vtl-cap"},xa={class:"vtl-tl"},_a={key:1,class:"vtl-td"},wa=["innerHTML"],Sa={key:1,class:"vtl-tier"},Ea={key:0,class:"vtl-cap"},Ta={class:"vtl-tl"},Aa={key:1,class:"vtl-td"},Ca={class:"vtl-rows"},ka=["aria-selected","tabindex","onClick"],Oa=["innerHTML"],Ma={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},Pa={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Ra={class:"vtl-tab-text"},La={class:"vtl-tab-label"},Ia={key:0,class:"vtl-tab-badge"},Na={key:0,class:"vtl-tab-sub"},Da=["innerHTML"],Ha=["aria-selected","tabindex","onClick"],ja=["innerHTML"],Fa={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},$a={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Ba={class:"vtl-tab-text"},Ua={class:"vtl-tab-label"},Va={key:0,class:"vtl-tab-sub"},Wa={class:"vtl-main"},Ka={class:"vtl-content"},za=["hidden"],qa={key:0,class:"vtl-host-hint"},Ga={key:1,class:"vtl-host-hint err"};function Ya(e,t,s,i,n,o){return L(),I("div",{class:ze(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(L(),I("header",aa,[O("button",{class:"vtl-menu",type:"button","aria-expanded":String(e.navOpen),onClick:t[0]||(t[0]=r=>e.navOpen=!e.navOpen),"aria-label":"Toggle list"},"☰",8,ca),O("span",fa,[Ct(e.$slots,"brand")]),O("b",da,j(e.title),1),O("span",ua,[Ct(e.$slots,"meta")])])):de("",!0),e.narrow&&!e.header&&!e.navOpen?(L(),I("button",{key:1,class:"vtl-fab",type:"button","aria-expanded":String(e.navOpen),onClick:t[1]||(t[1]=r=>e.navOpen=!0),"aria-label":"Open the list of views"},"☰",8,ha)):de("",!0),O("div",pa,[O("nav",{class:"vtl-nav","aria-label":e.navLabel,"aria-hidden":String(!e.railShown),role:e.$slots.rail?null:"tablist","aria-orientation":e.$slots.rail?null:"vertical"},[O("button",{type:"button",class:"vtl-collapse","aria-expanded":String(!e.railCollapsed),"aria-label":e.railCollapsed?"Expand list":"Collapse list",onClick:t[2]||(t[2]=(...r)=>e.toggleRail&&e.toggleRail(...r))},[O("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,va),t[5]||(t[5]=O("span",{class:"vtl-collapse-tx"},"Collapse",-1))],8,ma),e.$slots.rail?Ct(e.$slots,"rail",{collapsed:e.railCollapsed&&!e.narrow,expand:e.expandRail,pick:e.pick},void 0,void 0,0):e.groups&&e.groups.length?(L(!0),I(ee,{key:1},dt(e.groups,r=>(L(),I("div",{class:"vtl-grp",key:r.key},[r.folder?(L(),I("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(r)),onClick:l=>e.toggleFolder(r.key)},[r.badge?(L(),I("span",ya,j(r.badge),1)):de("",!0),O("span",xa,j(r.label),1),r.count!=null?(L(),I("span",_a,j(r.count),1)):de("",!0),O("span",{class:ze(["vtl-chev",{open:!e.isFolderClosed(r)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,wa)],8,ba)):(L(),I("div",Sa,[r.badge?(L(),I("span",Ea,j(r.badge),1)):de("",!0),O("span",Ta,j(r.label),1),r.count!=null?(L(),I("span",Aa,j(r.count),1)):de("",!0)])),Ys(O("div",Ca,[(L(!0),I(ee,null,dt(r.rows,l=>(L(),I("button",{key:l.key,type:"button",role:"tab",class:ze(["vtl-tab",{active:l.key===e.active}]),"aria-selected":String(l.key===e.active),tabindex:l.key===e.active?0:-1,ref_for:!0,ref:a=>e.registerTab(l.key,a),onClick:a=>e.pick(l.key),onKeydown:t[3]||(t[3]=a=>e.onKey(a))},[l.icon?(L(),I("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(l.icon)},null,8,Oa)):l.emoji?(L(),I("span",Ma,j(l.emoji),1)):(L(),I("span",Pa,j(e.initial(l.label)),1)),O("span",Ra,[O("span",La,[pt(j(l.label),1),l.badge?(L(),I("span",Ia,j(l.badge),1)):de("",!0)]),l.sub?(L(),I("span",Na,[O("span",{innerHTML:l.sub},null,8,Da)])):de("",!0)])],42,ka))),128))],512),[[hi,!r.folder||!e.isFolderClosed(r)]])]))),128)):(L(!0),I(ee,{key:2},dt(e.items,r=>(L(),I("button",{key:r.key,type:"button",role:"tab",class:ze(["vtl-tab",{active:r.key===e.active}]),"aria-selected":String(r.key===e.active),tabindex:r.key===e.active?0:-1,ref_for:!0,ref:l=>e.registerTab(r.key,l),onClick:l=>e.pick(r.key),onKeydown:t[4]||(t[4]=l=>e.onKey(l))},[r.icon?(L(),I("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(r.icon)},null,8,ja)):r.emoji?(L(),I("span",Fa,j(r.emoji),1)):(L(),I("span",$a,j(e.initial(r.label)),1)),O("span",Ba,[O("span",Ua,j(r.label),1),r.sub?(L(),I("span",Va,j(r.sub),1)):de("",!0)])],42,Ha))),128))],8,ga),O("main",Wa,[e.header?Ct(e.$slots,"toolbar",{},void 0,void 0,0):de("",!0),O("div",Ka,[(L(!0),I(ee,null,dt(e.mountedElementRows,r=>Ys((L(),I("section",{key:r.key,class:"vtl-host",hidden:r.key!==e.active},[O("div",{class:"vtl-host-slot",ref_for:!0,ref:l=>e.setHostSlot(r.key,l)},null,512),e.hostState[r.key]==="loading"?(L(),I("div",qa,"Loading "+j(r.label)+"…",1)):e.hostState[r.key]==="error"?(L(),I("div",Ga,[pt(" Could not load "+j(r.label)+".",1),t[6]||(t[6]=O("br",null,null,-1)),O("small",null,j(e.hostError[r.key]),1)])):de("",!0)],8,za)),[[hi,r.key===e.active]])),128)),Ct(e.$slots,"default")])])])],2)}const Xa=vo(la,[["render",Ya],["styles",[ia]]]),vi=[{code:"en",name:"English",nativeName:"English",flag:"🇺🇸"},{code:"es",name:"Spanish",nativeName:"Español",flag:"🇪🇸"},{code:"fr",name:"French",nativeName:"Français",flag:"🇫🇷"},{code:"pt",name:"Portuguese",nativeName:"Português",flag:"🇵🇹"},{code:"ar",name:"Arabic",nativeName:"العربية",flag:"🇸🇦",dir:"rtl"},{code:"ru",name:"Russian",nativeName:"Русский",flag:"🇷🇺"},{code:"de",name:"German",nativeName:"Deutsch",flag:"🇩🇪",hideFromSwitcher:!0},{code:"hi",name:"Hindi",nativeName:"हिन्दी",flag:"🇮🇳",hideFromSwitcher:!0}],Ja=vi.filter(e=>!e.hideFromSwitcher);function Za(e){return vi.find(t=>t.code===e)}function bo(e){const t=String(e||"").split("-")[0].toLowerCase();return vi.some(s=>s.code===t)?t:"en"}const yo="doxa-maps:locale";function Qa(){try{const e=localStorage.getItem(yo);if(e)return bo(e)}catch{}return bo(navigator==null?void 0:navigator.language)}function ec(e){try{localStorage.setItem(yo,e)}catch{}}const tc=":host{display:block;position:relative;height:var(--doxa-maps-spa-height, 85vh);min-height:480px}:host{font-size:16px;line-height:normal;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;white-space:normal;-webkit-hyphens:manual;hyphens:manual;visibility:visible;cursor:auto}:host([hidden]){display:none}.dms-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.dms-slot{position:relative;min-height:100%}.dms-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:#6d766e;font-size:13px;padding:20px}.dms-hint.err{color:#f87171}.dms-hint small{color:var(--dx-muted, #6d766e)}.dms-notice{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40;max-width:320px;text-align:center;font-size:13px;line-height:1.4;color:#3b463d;background:#fff;border:1px solid #d1d4cd;border-radius:10px;padding:10px 16px;box-shadow:0 8px 24px #0000001f}.dms-logo{display:inline-flex;align-items:center}.dms-logo svg{display:block}.dms-locale{position:relative;padding:8px 12px 0;display:flex;justify-content:flex-end}.dms-locale-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.dms-locale-btn:hover{background:#d1d4cd}.dms-flag{font-size:14px;line-height:1}.dms-locale-name{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dms-dots{color:#6d766e;margin-left:2px}.dms-locale-menu{position:absolute;top:100%;right:12px;margin-top:4px;z-index:30;min-width:180px;list-style:none;padding:6px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000080;max-height:320px;overflow:auto}.dms-locale-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:13px;padding:7px 9px;border:0;border-radius:7px;background:none;color:#3b463d;cursor:pointer}.dms-locale-opt:hover,.dms-locale-opt.active{background:#d1d4cd;color:#3b463d}.dms-locale-opt.active .dms-locale-name{color:#92b195}.dms-locale-en{margin-left:auto;font-size:11px;color:#6d766e}",bi=[{key:"dashboards",label:"Dashboards",icon:"chart",tabs:[{id:"dashboard-plus-grid",icon:"chart"},{id:"research-map-plus-grid",icon:"map"},{id:"regions-dashboard",icon:"map"}]},{key:"prayer-mobilization",label:"Prayer Mobilization",icon:"heart",tabs:[{id:"upg-100",icon:"list"},{id:"prayer-map",icon:"embed"}]},{key:"gospel-research",label:"Gospel Research",icon:"search",tabs:[{id:"cities-internet",icon:"wifi"},{id:"gospel-resources",icon:"book"}]},{key:"experimental",label:"Experimental",icon:"flask",folder:!0,open:!1,tabs:[]}],sc=new Set(["doxa-maps-spa","plugin-studio","template-bundle","people-groups-grid","research-dashboard","big-picture","demo-map","golden-path-check","doxa-research-map","stack-demo"]),xo={"prayer-walk-planner":1,"upg-neighbor":2,"key-cities":3,"all-people-groups":4,"country-posters":5,"doxa-vision-card":6},yi=[{id:"dashboard-plus-grid",label:"Big Picture",sub:"dashboard + people-groups grid, stacked",emoji:"🌍",bundle:"dashboard-plus-grid",profile:"dashboard-plus-grid"},{id:"research-map",label:"Research Map",sub:"prayer · engagement · regions",emoji:"🗺️",bundle:"doxa-research-map",profile:"research-map"},{id:"research-map-plus-grid",label:"Simple Research",sub:"research map + people-groups grid",emoji:"🗺️",bundle:"research-map-plus-grid",profile:"research-map-plus-grid"},{id:"prayer-map",label:"Prayer Progress",sub:"simple world prayer map",emoji:"🙏",bundle:"doxa-simple-map",profile:"doxa-simple-map",instance:"prayer"},{id:"cities-internet",label:"Cities with Internet",sub:"connectivity of key cities",emoji:"📡",bundle:"cities-internet",profile:"connectivity-map"},{id:"gospel-resources",label:"Gospel Resources",sub:"resources by place",emoji:"📖",bundle:"gospel-resources",profile:"resources-map"},{id:"regions-dashboard",label:"Regions",sub:"regions and their countries",emoji:"🌐",bundle:"regions-dashboard",profile:"regions-mfe"},{id:"upg-100",label:"UPG-100 List",sub:"my unreached list + posters",emoji:"📋",bundle:"my-upg-100-list",profile:"upg-100-mfe"}];nc(bi);const xs=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid"]),_s=new Set(["dashboard-plus-grid","research-map-plus-grid"]);function ic(){const e=Object.fromEntries(yi.map(s=>[s.id,s])),t=new Set;for(const s of bi)if(s.key!=="experimental")for(const i of s.tabs||[]){const n=e[i.id];n&&n.bundle&&t.add(n.bundle)}return t}function _o(e,t){const s=[];for(const i of e)!i||t.has(i.key)||(t.add(i.key),s.push(i));return s}function nc(e){const t=new Map,s=[];for(const i of e)if(i.key!=="experimental")for(const n of i.tabs||[]){if(!n||!n.id)continue;const o=t.get(n.id);if(o===void 0){t.set(n.id,i.key);continue}(o!==i.key||s.indexOf(n.id)===-1)&&s.push(n.id+" ("+o+" + "+i.key+")")}return s.length&&typeof console<"u"&&console.error("[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: "+s.join(", ")+" — VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in two sections paints twice and stalls keyboard nav. See the duplicate-key trap in SPEC-the-six-map-product-and-its-tab-order.md."),s}function oc(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function rc(e){const t=ic(),s=e&&Array.isArray(e.bundles)?e.bundles:[],i=[];for(const n of s){const o=n&&n.bundle;if(!o||t.has(o)||sc.has(o))continue;const r=Array.isArray(n.profiles)?n.profiles:[];if(!r.length)continue;const l=r.find(d=>d.isMap)||r.find(d=>d.profile===o)||r[0],a=l.element||Array.isArray(n.elements)&&n.elements[0]||o,u=n.scriptUrl||l.scriptUrl||"";u&&i.push({id:o,label:l.title||oc(o),sub:(l.description||"").trim().replace(/[,;]\s*$/,"")||"experimental bundle",emoji:"🧪",tag:a,bundle:o,profile:l.profile||o,scriptUrl:u,heavy:xs.has(a)||xs.has(o),scroll:_s.has(a)||_s.has(o),discovered:!0})}return i.sort((n,o)=>{const r=xo[n.id]||999,l=xo[o.id]||999;return r!==l?r-l:n.label.localeCompare(o.label)}),i}function lc(e,t){const s=e&&Array.isArray(e.bundles)?e.bundles:[],i=Object.fromEntries(s.map(o=>[o.bundle,o])),n={};for(const o of t){const r=i[o.bundle];if(!r)continue;const l=Array.isArray(r.profiles)?r.profiles:[],a=l.find(E=>E.profile===o.profile)||l[0],u=a&&a.element||Array.isArray(r.elements)&&r.elements[0]||o.bundle,d=r.scriptUrl||a&&a.scriptUrl||"";if(!d)continue;const p=a&&Array.isArray(a.instances)?a.instances:[],S=!!(o.instance&&p.some(E=>(E&&(E.id||E.instance))===o.instance));n[o.id]={tag:u,scriptUrl:d,profile:a&&a.profile||o.profile,instance:S?o.instance:"",heavy:xs.has(u)||xs.has(o.bundle),scroll:_s.has(u)||_s.has(o.bundle)}}return n}const jt={};function ac(e,t){return jt[e]||(jt[e]=new Promise((s,i)=>{const n=document.createElement("script");n.src=e,(/^\/plugin-designs\//.test(e)||/\/index\.js(\?|$)/.test(e))&&(n.type="module"),n.onload=()=>s(),n.onerror=()=>{delete jt[e],i(new Error("failed to load "+e))},document.head.appendChild(n)})),jt[e]}function cc(e,t){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():Promise.race([customElements.whenDefined(e),new Promise((s,i)=>setTimeout(()=>{customElements.get(e)||i(new Error("<"+e+"> never registered (bundle loaded but defined no element)"))},15e3))])}const fc=Qs({name:"DoxaMapsSpa",components:{VerticalTabsLayout:Xa},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"DX-Maps"},tokenUrl:{type:String,default:""},tk:{type:String,default:""},language:{type:String,default:""},apiBaseUrl:{type:String,default:""},provider:{type:String,default:""},tab:{type:String,default:""}},emits:["tab-change"],setup(){return{injectedBase:Tt("dmsTreeBase","")}},data(){return{activeIndex:0,showHeader:!1,narrow:!1,_mql:null,_onMedia:null,disabledNotice:"",_noticeTimer:null,manifestError:"",manifestBase:"",runtime:{},locale:Qa(),localeOpen:!1,switcherLangs:Ja,tabs:yi.map(e=>({...e,tag:"",scriptUrl:"",heavy:!1,scroll:!1,resolved:!1,mounted:!1,state:"idle",error:""}))}},computed:{cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},assetsBase(){const e=String(this.cfg.assetsBase||"").trim();return/^https?:\/\//i.test(e)||e.startsWith("/")?e.replace(/\/+$/,""):this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/assets":""},navGroups(){const e=Object.fromEntries(this.tabs.map(s=>[s.id,s])),t=new Set;return bi.map(s=>{let i=_o((s.tabs||[]).filter(n=>e[n.id]).map(n=>{const o=e[n.id],r=this.isBigPictureDisabled(o.id);return{key:o.id,label:o.label,sub:o.sub,icon:n.icon,badge:r?"desktop only":n.badge,disabled:r}}),t);return s.key==="experimental"&&(i=i.concat(_o(this.tabs.filter(n=>n.discovered).map(n=>({key:n.id,label:n.label,sub:n.sub,icon:"flask",badge:"lab"})),t))),{key:s.key,label:s.label,icon:s.icon,folder:!!s.folder,open:s.open,rows:i}}).filter(s=>s.rows.length)},showLocaleSwitcher(){return this.showHeader},activeLang(){return Za(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}},effectiveLocale(){return((this.language||this.cfg.language||this.cfg.locale||this.cfg.lang||"").trim()||this.locale||"").split("-")[0].toLowerCase()},effectiveProvider(){const e=String(this.provider||this.cfg.provider||"").trim().toLowerCase();return e==="maplibre"||e==="mapbox"?e:""},activeKey(){const e=this.tabs[this.activeIndex];return e?e.id:""}},mounted(){this.watchWidth(),this.select(this.initialIndex()),this.loadManifest()},beforeUnmount(){!this._mql||!this._onMedia||(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia),this._mql=null,this._onMedia=null)},watch:{effectiveLocale(e){const t=this.tabs[this.activeIndex];if(!(!t||!t.mounted))try{const s=this._slots&&this._slots[this.activeIndex],i=s&&s.firstElementChild;i&&i.setAttribute&&i.setAttribute("profile-config",JSON.stringify(this.childConfig(t)))}catch{}},tab(e){e&&this.onSelect(e)}},methods:{setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},watchWidth(){typeof window>"u"||!window.matchMedia||(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this._onMedia=e=>{const t=this.narrow;this.narrow=!!e.matches,t!==this.narrow&&this.isBigPictureDisabled(this.activeKey)&&this.select(this.firstVisibleIndex())},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))},isBigPictureDisabled(e){return e==="dashboard-plus-grid"&&this.narrow},firstVisibleIndex(){let e=-1;for(const t of this.navGroups)for(const s of t.rows){const i=this.tabs.findIndex(n=>n.id===s.key);if(!(i<0)&&(e<0&&(e=i),!s.disabled))return i}return e>=0?e:0},loadManifest(){const e=[this.resolve("manifest.json")],t="/public/doxa-maps/manifest.json";e.indexOf(t)===-1&&e.push(t);const s=[],i=n=>{if(n>=e.length){this.manifestError="manifest.json not found (tried "+s.join(", ")+")",console.error("[doxa-maps-spa] "+this.manifestError+" — every tab except Big Picture is composed from it, so their panes cannot mount.");return}const o=e[n];return s.push(o),fetch(o,{credentials:"omit"}).then(r=>{if(!r||!r.ok)throw new Error(o+" → HTTP "+(r?r.status:"?"));return r.json()}).then(r=>{if(!r)throw new Error(o+" → empty");this.manifestError="";try{this.manifestBase=new URL(o,location.href).href.replace(/[^/]*$/,"")}catch{this.manifestBase=""}this.applyManifest(r)}).catch(()=>i(n+1))};try{i(0)}catch{}},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.applyPageGlobals();const t=lc(e,yi),s=this.activeKey,i=[];for(const a of this.tabs){if(a.discovered){i.push(a);continue}const u=t[a.id];u&&(Object.assign(a,u,{resolved:!0}),i.push(a))}const n=new Set(i.map(a=>a.id));for(const a of rc(e))n.has(a.id)||i.push({...a,resolved:!0,mounted:!1,state:"idle",error:""});this.tabs=i;const o=this.requestedTab(),r=o?this.tabs.findIndex(a=>a.id===o):-1,l=this.tabs.findIndex(a=>a.id===s);r>=0&&!this.isBigPictureDisabled(o)&&!this._honouredTab?this.select(r):this.select(l>=0?l:this.firstVisibleIndex()),this._honouredTab=!0},requestedTab(){let e="";try{e=new URLSearchParams(location.search).get("tab")||""}catch{}return String(this.tab||this.cfg.tab||e||"").trim()},initialIndex(){const e=this.requestedTab(),t=e?this.tabs.findIndex(s=>s.id===e):-1;return t>=0&&(this._honouredTab=!0),t>=0&&!this.isBigPictureDisabled(e)?t:this.firstVisibleIndex()},setLocale(e){this.locale=e,this.localeOpen=!1,ec(e)},onSelect(e){if(this.isBigPictureDisabled(e)){this.disabledNotice="Big Picture only supports desktop — open this page on a desktop to use it.",clearTimeout(this._noticeTimer),this._noticeTimer=setTimeout(()=>{this.disabledNotice=""},4e3);return}const t=this.tabs.findIndex(s=>s.id===e);t!==-1&&this.select(t)},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const s=t.replace(/^\.\//,"");return this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/"+s:this.base?this.base.replace(/\/+$/,"")+"/"+s:"../"+s},select(e){const t=this.activeIndex;if(this.activeIndex=e,t!==e&&t>=0){const i=this.tabs[t];i&&i.heavy&&i.mounted&&this.releaseTab(t,i)}const s=this.tabs[e];s&&((t!==e||!this._announced)&&(this._announced=!0,this.$emit("tab-change",{id:s.id,label:s.label})),s.scriptUrl&&(s.mounted||this.$nextTick(()=>{this.activeIndex===e&&this.mountElement(e)})))},releaseTab(e,t){try{const s=this._slots&&this._slots[e];s&&(s.innerHTML="")}catch{}this._slots&&delete this._slots[e],t.mounted=!1,t.state="idle",t.error=""},childConfig(e){const t={profile:e.profile||e.id,instanceId:e.instance||"dms-"+e.id};this.effectiveLocale&&(t.locale=this.effectiveLocale);const s=this.tk||this.cfg.tk||this.runtime.token;return s&&(t.tk=s),(this.tokenUrl||this.cfg.tokenUrl)&&(t.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.effectiveProvider&&(t.provider=this.effectiveProvider),this.base&&(t.treeBase=this.base),this.assetsBase&&(t.assetsBase=this.assetsBase),t.urlSync=!1,t},applyPageGlobals(){if(typeof window>"u")return;const e=(this.apiBaseUrl||this.cfg.apiBaseUrl||this.runtime.apiBaseUrl||"").trim();e&&!window.MAP_APP_API_URL&&(window.MAP_APP_API_URL=e.replace(/\/+$/,""));const t=this.tk||this.cfg.tk||this.runtime.token;t&&!window.MAP_TOKEN&&(window.MAP_TOKEN=t),this.effectiveProvider&&!window.MAP_PROVIDER&&(window.MAP_PROVIDER=this.effectiveProvider)},mountElement(e){const t=this.tabs[e];t.mounted=!0,t.state="loading";const s=this.resolve(t.scriptUrl);ac(s).then(()=>cc(t.tag)).then(()=>{try{if(t.heavy&&this.activeIndex!==e){t.mounted=!1,t.state="idle";return}const i=this._slots&&this._slots[e];if(!i){t.state="error",t.error="no slot";return}i.innerHTML="";const n=document.createElement(t.tag);n.setAttribute("profile-config",JSON.stringify(this.childConfig(t))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText=t.scroll?"display:block;position:static;width:100%;height:auto;":"display:block;position:absolute;inset:0;width:100%;height:100%;",i.appendChild(n),t.state="ready"}catch(i){t.state="error",t.error="mount failed: "+(i&&i.message||String(i))}}).catch(i=>{t.state="error",t.error=i&&i.message||String(i)})}}}),dc={class:"dms-locale"},uc=["aria-expanded"],hc={class:"dms-flag"},pc={class:"dms-locale-name"},gc={key:0,class:"dms-locale-menu",role:"listbox"},mc=["aria-selected"],vc=["onClick"],bc={class:"dms-flag"},yc={class:"dms-locale-name"},xc={class:"dms-locale-en"},_c=["hidden"],wc={key:0,class:"dms-hint"},Sc={key:1,class:"dms-hint err"},Ec={key:2,class:"dms-hint err"},Tc={key:0,class:"dms-notice",role:"status"};function Ac(e,t,s,i,n,o){const r=Dr("VerticalTabsLayout");return L(),hs(r,{title:e.heading,"nav-label":"Research maps",header:e.showHeader,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.onSelect},Fr({brand:Et(()=>[t[1]||(t[1]=O("span",{class:"dms-logo","aria-hidden":"true"},[O("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[O("circle",{cx:"12",cy:"12",r:"9"}),O("polygon",{points:"12 6 14 12 12 18 10 12",fill:"#92b195",stroke:"none"}),O("polygon",{points:"6 12 12 10 18 12 12 14",fill:"#92b195",opacity:"0.55",stroke:"none"})])],-1))]),meta:Et(()=>[pt(j(e.tabs.length)+" maps",1)]),default:Et(()=>[(L(!0),I(ee,null,dt(e.tabs,(l,a)=>Ys((L(),I("section",{key:l.id,class:"dms-pane",hidden:a!==e.activeIndex},[!l.heavy||a===e.activeIndex?(L(),I(ee,{key:0},[O("div",{class:"dms-slot",ref_for:!0,ref:u=>e.setSlot(a,u)},null,512),l.state==="loading"?(L(),I("div",wc,"Loading "+j(l.label)+"…",1)):l.state==="error"?(L(),I("div",Sc,[pt(" Could not load "+j(l.label)+".",1),t[3]||(t[3]=O("br",null,null,-1)),O("small",null,j(l.error),1)])):l.state==="idle"&&!l.scriptUrl&&e.manifestError?(L(),I("div",Ec,[pt(" Could not load "+j(l.label)+".",1),t[4]||(t[4]=O("br",null,null,-1)),O("small",null,j(e.manifestError),1),t[5]||(t[5]=O("br",null,null,-1)),t[6]||(t[6]=O("small",null,"This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.",-1))])):de("",!0)],64)):de("",!0)],8,_c)),[[hi,a===e.activeIndex]])),128)),e.disabledNotice?(L(),I("div",Tc,j(e.disabledNotice),1)):de("",!0)]),_:2},[e.showLocaleSwitcher?{name:"toolbar",fn:Et(()=>[O("div",dc,[O("button",{type:"button",class:"dms-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=l=>e.localeOpen=!e.localeOpen)},[O("span",hc,j(e.activeLang.flag),1),O("span",pc,j(e.activeLang.nativeName),1),t[2]||(t[2]=O("span",{class:"dms-dots","aria-hidden":"true"},"⋮",-1))],8,uc),e.localeOpen?(L(),I("ul",gc,[(L(!0),I(ee,null,dt(e.switcherLangs,l=>(L(),I("li",{key:l.code,role:"option","aria-selected":String(l.code===e.locale)},[O("button",{type:"button",class:ze(["dms-locale-opt",{active:l.code===e.locale}]),onClick:a=>e.setLocale(l.code)},[O("span",bc,j(l.flag),1),O("span",yc,j(l.nativeName),1),O("span",xc,j(l.name),1)],10,vc)],8,mc))),128))])):de("",!0)])]),key:"0"}:void 0]),1032,["title","header","groups","active","onUpdate:active"])}const Cc=vo(fc,[["render",Ac],["styles",[tc]]]);function kc(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const Oc=kc(),Mc=Yl(Cc,{configureApp(e){e.provide("dmsTreeBase",Oc)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",Mc)})(); +`,ua=ti({name:"VerticalTabsLayout",props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){ra(da,"vertical-tabs-layout")},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{}}},computed:{railShown(){return this.narrow?this.navOpen:!0},allRows(){if(this.groups&&this.groups.length){const e=[];for(const t of this.groups)for(const s of t.rows||[])e.push(s);return e}return this.items},orderedKeys(){return this.allRows.map(e=>e.key)},elementRows(){return this.allRows.filter(e=>e&&e.element)},mountedElementRows(){return this.elementRows.filter(e=>this.activatedKeys[e.key])}},watch:{active:{immediate:!0,handler(e){this.activateElement(e)}}},mounted(){try{window.matchMedia&&(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this.reconcileForWidth(),this._onMedia=e=>{this.narrow=e.matches,this.reconcileForWidth()},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))}catch{}this.$nextTick(()=>this.activateElement(this.active))},beforeUnmount(){try{this._mql&&this._onMedia&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia))}catch{}this._mql=null,this._onMedia=null},methods:{registerTab(e,t){t&&(this._tabEls[e]=t)},isNarrow(){return this.narrow},reconcileForWidth(){this.narrow?(this.navOpen=!1,this.railCollapsed=!1):this.navOpen=!0},expandRail(){!this.narrow&&this.railCollapsed&&(this.railCollapsed=!1)},toggleRail(){this.narrow?this.navOpen=!this.navOpen:this.railCollapsed=!this.railCollapsed},setHostSlot(e,t){t&&(this._hostSlots[e]=t,this.$nextTick(()=>this.mountHostElement(e)))},activateElement(e){!e||!this.elementRows.find(s=>s.key===e)||(this.activatedKeys[e]||(this.activatedKeys={...this.activatedKeys,[e]:!0},this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(i=>i.key===e),s=this._hostSlots[e];!t||!s||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},aa(t.src).then(()=>ca(t.element)).then(()=>{s.innerHTML="";const i=document.createElement(t.element),n=t.attrs||{};for(const r in n){const o=n[r],l=o!=null&&typeof o=="object"?JSON.stringify(o):String(o);try{i[r]=o}catch{}try{i.setAttribute(r,l)}catch{}}i.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",s.appendChild(i),this.hostState={...this.hostState,[e]:"ready"}}).catch(i=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:i&&i.message||String(i)}}))},iconSvg(e){return e?oa(e):""},initial(e){const t=(e||"").trim();return t?t.charAt(0).toUpperCase():"•"},isFolderClosed(e){const t=this.folderOverride[e.key];return t!=null?!t:e.open!==!0},toggleFolder(e){const t=this.folderOverride[e],s=(this.groups||[]).find(n=>n.key===e),i=t??(s&&s.open===!0);this.folderOverride={...this.folderOverride,[e]:!i}},pick(e){this.$emit("update:active",e),this.narrow&&(this.navOpen=!1)},onKey(e){const t=this.orderedKeys;if(!t.length)return;const s=t.indexOf(this.active);let i=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")i=(s+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")i=(s-1+t.length)%t.length;else if(e.key==="Home")i=0;else if(e.key==="End")i=t.length-1;else return;e.preventDefault();const n=t[i];this.pick(n),this.$nextTick(()=>{const r=this._tabEls[n];r&&r.focus&&r.focus()})}}}),fa={key:0,class:"vtl-top"},pa=["aria-expanded"],ha={class:"vtl-brand"},ba={class:"vtl-title"},ga={class:"vtl-meta"},ma=["aria-expanded"],va={class:"vtl-body"},ya=["aria-label","aria-hidden","role","aria-orientation"],xa=["aria-expanded","aria-label"],_a=["innerHTML"],wa=["aria-expanded","onClick"],Sa={key:0,class:"vtl-cap"},Ea={class:"vtl-tl"},Ta={key:1,class:"vtl-td"},ka=["innerHTML"],Ca={key:1,class:"vtl-tier"},Aa={key:0,class:"vtl-cap"},Oa={class:"vtl-tl"},La={key:1,class:"vtl-td"},Pa={class:"vtl-rows"},Ma=["aria-selected","tabindex","onClick"],Ra=["innerHTML"],Ia={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},Na={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Ha={class:"vtl-tab-text"},Da={class:"vtl-tab-label"},ja={key:0,class:"vtl-tab-badge"},Fa={key:0,class:"vtl-tab-sub"},$a=["innerHTML"],Ua=["aria-selected","tabindex","onClick"],Ba=["innerHTML"],Va={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},za={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Wa={class:"vtl-tab-text"},Ka={class:"vtl-tab-label"},Ga={key:0,class:"vtl-tab-sub"},qa={class:"vtl-main"},Ya={class:"vtl-content"},Xa=["hidden"],Ja={key:0,class:"vtl-host-hint"},Za={key:1,class:"vtl-host-hint err"};function Qa(e,t,s,i,n,r){return R(),I("div",{class:Ke(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(R(),I("header",fa,[O("button",{class:"vtl-menu",type:"button","aria-expanded":String(e.navOpen),onClick:t[0]||(t[0]=o=>e.navOpen=!e.navOpen),"aria-label":"Toggle list"},"☰",8,pa),O("span",ha,[Ct(e.$slots,"brand")]),O("b",ba,H(e.title),1),O("span",ga,[Ct(e.$slots,"meta")])])):ue("",!0),e.narrow&&!e.header&&!e.navOpen?(R(),I("button",{key:1,class:"vtl-fab",type:"button","aria-expanded":String(e.navOpen),onClick:t[1]||(t[1]=o=>e.navOpen=!0),"aria-label":"Open the list of views"},"☰",8,ma)):ue("",!0),O("div",va,[O("nav",{class:"vtl-nav","aria-label":e.navLabel,"aria-hidden":String(!e.railShown),role:e.$slots.rail?null:"tablist","aria-orientation":e.$slots.rail?null:"vertical"},[O("button",{type:"button",class:"vtl-collapse","aria-expanded":String(!e.railCollapsed),"aria-label":e.railCollapsed?"Expand list":"Collapse list",onClick:t[2]||(t[2]=(...o)=>e.toggleRail&&e.toggleRail(...o))},[O("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,_a),t[5]||(t[5]=O("span",{class:"vtl-collapse-tx"},"Collapse",-1))],8,xa),e.$slots.rail?Ct(e.$slots,"rail",{collapsed:e.railCollapsed&&!e.narrow,expand:e.expandRail,pick:e.pick},void 0,void 0,0):e.groups&&e.groups.length?(R(!0),I(ee,{key:1},ut(e.groups,o=>(R(),I("div",{class:"vtl-grp",key:o.key},[o.folder?(R(),I("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(o)),onClick:l=>e.toggleFolder(o.key)},[o.badge?(R(),I("span",Sa,H(o.badge),1)):ue("",!0),O("span",Ea,H(o.label),1),o.count!=null?(R(),I("span",Ta,H(o.count),1)):ue("",!0),O("span",{class:Ke(["vtl-chev",{open:!e.isFolderClosed(o)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,ka)],8,wa)):(R(),I("div",Ca,[o.badge?(R(),I("span",Aa,H(o.badge),1)):ue("",!0),O("span",Oa,H(o.label),1),o.count!=null?(R(),I("span",La,H(o.count),1)):ue("",!0)])),Js(O("div",Pa,[(R(!0),I(ee,null,ut(o.rows,l=>(R(),I("button",{key:l.key,type:"button",role:"tab",class:Ke(["vtl-tab",{active:l.key===e.active}]),"aria-selected":String(l.key===e.active),tabindex:l.key===e.active?0:-1,ref_for:!0,ref:a=>e.registerTab(l.key,a),onClick:a=>e.pick(l.key),onKeydown:t[3]||(t[3]=a=>e.onKey(a))},[l.icon?(R(),I("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(l.icon)},null,8,Ra)):l.emoji?(R(),I("span",Ia,H(l.emoji),1)):(R(),I("span",Na,H(e.initial(l.label)),1)),O("span",Ha,[O("span",Da,[ht(H(l.label),1),l.badge?(R(),I("span",ja,H(l.badge),1)):ue("",!0)]),l.sub?(R(),I("span",Fa,[O("span",{innerHTML:l.sub},null,8,$a)])):ue("",!0)])],42,Ma))),128))],512),[[bi,!o.folder||!e.isFolderClosed(o)]])]))),128)):(R(!0),I(ee,{key:2},ut(e.items,o=>(R(),I("button",{key:o.key,type:"button",role:"tab",class:Ke(["vtl-tab",{active:o.key===e.active}]),"aria-selected":String(o.key===e.active),tabindex:o.key===e.active?0:-1,ref_for:!0,ref:l=>e.registerTab(o.key,l),onClick:l=>e.pick(o.key),onKeydown:t[4]||(t[4]=l=>e.onKey(l))},[o.icon?(R(),I("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(o.icon)},null,8,Ba)):o.emoji?(R(),I("span",Va,H(o.emoji),1)):(R(),I("span",za,H(e.initial(o.label)),1)),O("span",Wa,[O("span",Ka,H(o.label),1),o.sub?(R(),I("span",Ga,H(o.sub),1)):ue("",!0)])],42,Ua))),128))],8,ya),O("main",qa,[e.header?Ct(e.$slots,"toolbar",{},void 0,void 0,0):ue("",!0),O("div",Ya,[(R(!0),I(ee,null,ut(e.mountedElementRows,o=>Js((R(),I("section",{key:o.key,class:"vtl-host",hidden:o.key!==e.active},[O("div",{class:"vtl-host-slot",ref_for:!0,ref:l=>e.setHostSlot(o.key,l)},null,512),e.hostState[o.key]==="loading"?(R(),I("div",Ja,"Loading "+H(o.label)+"…",1)):e.hostState[o.key]==="error"?(R(),I("div",Za,[ht(" Could not load "+H(o.label)+".",1),t[6]||(t[6]=O("br",null,null,-1)),O("small",null,H(e.hostError[o.key]),1)])):ue("",!0)],8,Xa)),[[bi,o.key===e.active]])),128)),Ct(e.$slots,"default")])])])],2)}const ec=yr(ua,[["render",Qa],["styles",[la]]]),yi=[{code:"en",name:"English",nativeName:"English",flag:"🇺🇸"},{code:"es",name:"Spanish",nativeName:"Español",flag:"🇪🇸"},{code:"fr",name:"French",nativeName:"Français",flag:"🇫🇷"},{code:"pt",name:"Portuguese",nativeName:"Português",flag:"🇵🇹"},{code:"ar",name:"Arabic",nativeName:"العربية",flag:"🇸🇦",dir:"rtl"},{code:"ru",name:"Russian",nativeName:"Русский",flag:"🇷🇺"},{code:"de",name:"German",nativeName:"Deutsch",flag:"🇩🇪",hideFromSwitcher:!0},{code:"hi",name:"Hindi",nativeName:"हिन्दी",flag:"🇮🇳",hideFromSwitcher:!0}],tc=yi.filter(e=>!e.hideFromSwitcher);function sc(e){return yi.find(t=>t.code===e)}function xr(e){const t=String(e||"").split("-")[0].toLowerCase();return yi.some(s=>s.code===t)?t:"en"}const _r="doxa-maps:locale";function ic(){try{const e=localStorage.getItem(_r);if(e)return xr(e)}catch{}return xr(navigator==null?void 0:navigator.language)}function nc(e){try{localStorage.setItem(_r,e)}catch{}}const xs={en:{"sec.dashboards":"Dashboards","sec.prayer":"Prayer Mobilization","sec.gospel":"Gospel Research","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Big Picture","sub.dashboard-plus-grid":"dashboard + people-groups grid, stacked","tab.research-map":"Research Map","sub.research-map":"prayer · engagement · regions","tab.research-map-plus-grid":"Simple Research","sub.research-map-plus-grid":"research map + people-groups grid","tab.prayer-map":"Prayer Progress","sub.prayer-map":"simple world prayer map","tab.cities-internet":"Cities with Internet","sub.cities-internet":"connectivity of key cities","tab.gospel-resources":"Gospel Resources","sub.gospel-resources":"resources by place","tab.regions-dashboard":"Regions","sub.regions-dashboard":"regions and their countries","tab.upg-100":"UPG-100 List","sub.upg-100":"my unreached list + posters",navLabel:"Research maps",meta:"{n} maps",loading:"Loading {label}…",loadFailed:"Could not load {label}.",manifestHint:"This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.",desktopOnly:"desktop only",lab:"lab",experimentalSub:"experimental bundle",desktopNotice:"Big Picture only supports desktop — open this page on a desktop to use it."},es:{"sec.dashboards":"Paneles","sec.prayer":"Movilización de oración","sec.gospel":"Investigación del Evangelio","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Panorama general","sub.dashboard-plus-grid":"panel + cuadrícula de pueblos","tab.research-map":"Mapa de investigación","sub.research-map":"oración · compromiso · regiones","tab.research-map-plus-grid":"Investigación simple","sub.research-map-plus-grid":"mapa de investigación + cuadrícula de pueblos","tab.prayer-map":"Progreso de oración","sub.prayer-map":"mapa mundial de oración","tab.cities-internet":"Ciudades con Internet","sub.cities-internet":"conectividad de ciudades clave","tab.gospel-resources":"Recursos del Evangelio","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiones","sub.regions-dashboard":"regiones y sus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"mi lista de no alcanzados + carteles",navLabel:"Mapas de investigación",meta:"{n} mapas",loading:"Cargando {label}…",loadFailed:"No se pudo cargar {label}.",manifestHint:"Esta pestaña se compone a partir de manifest.json: compila el árbol o sirve el árbol compilado para cargarla.",desktopOnly:"solo escritorio",lab:"beta",experimentalSub:"mapa experimental",desktopNotice:"Panorama general solo funciona en escritorio: abre esta página en una computadora para usarlo."},fr:{"sec.dashboards":"Tableaux de bord","sec.prayer":"Mobilisation à la prière","sec.gospel":"Recherche sur l'Évangile","sec.experimental":"Expérimental","tab.dashboard-plus-grid":"Vue d'ensemble","sub.dashboard-plus-grid":"tableau de bord + grille des peuples","tab.research-map":"Carte de recherche","sub.research-map":"prière · engagement · régions","tab.research-map-plus-grid":"Recherche simple","sub.research-map-plus-grid":"carte de recherche + grille des peuples","tab.prayer-map":"Progression de la prière","sub.prayer-map":"carte mondiale de la prière","tab.cities-internet":"Villes avec Internet","sub.cities-internet":"connectivité des villes clés","tab.gospel-resources":"Ressources de l'Évangile","sub.gospel-resources":"ressources par lieu","tab.regions-dashboard":"Régions","sub.regions-dashboard":"régions et leurs pays","tab.upg-100":"Liste UPG-100","sub.upg-100":"ma liste des non atteints + affiches",navLabel:"Cartes de recherche",meta:"{n} cartes",loading:"Chargement de {label}…",loadFailed:"Impossible de charger {label}.",manifestHint:"Cet onglet est composé à partir de manifest.json : construisez l'arborescence ou servez l'arborescence construite pour le charger.",desktopOnly:"ordinateur uniquement",lab:"bêta",experimentalSub:"carte expérimentale",desktopNotice:"Vue d'ensemble ne fonctionne que sur ordinateur : ouvrez cette page sur un ordinateur pour l'utiliser."},de:{"sec.dashboards":"Dashboards","sec.prayer":"Gebetsmobilisierung","sec.gospel":"Evangeliumsforschung","sec.experimental":"Experimentell","tab.dashboard-plus-grid":"Gesamtbild","sub.dashboard-plus-grid":"Dashboard + Raster der Volksgruppen","tab.research-map":"Forschungskarte","sub.research-map":"Gebet · Engagement · Regionen","tab.research-map-plus-grid":"Einfache Recherche","sub.research-map-plus-grid":"Forschungskarte + Raster der Volksgruppen","tab.prayer-map":"Gebetsfortschritt","sub.prayer-map":"einfache Weltkarte des Gebets","tab.cities-internet":"Städte mit Internet","sub.cities-internet":"Konnektivität wichtiger Städte","tab.gospel-resources":"Evangeliumsressourcen","sub.gospel-resources":"Ressourcen nach Ort","tab.regions-dashboard":"Regionen","sub.regions-dashboard":"Regionen und ihre Länder","tab.upg-100":"UPG-100-Liste","sub.upg-100":"meine Liste der Unerreichten + Poster",navLabel:"Forschungskarten",meta:"{n} Karten",loading:"{label} wird geladen…",loadFailed:"{label} konnte nicht geladen werden.",manifestHint:"Dieser Tab wird aus manifest.json zusammengesetzt – bauen Sie den Baum oder stellen Sie den gebauten Baum bereit, um ihn zu laden.",desktopOnly:"nur Desktop",lab:"Beta",experimentalSub:"experimentelle Karte",desktopNotice:"Gesamtbild funktioniert nur am Desktop – öffnen Sie diese Seite an einem Computer, um es zu nutzen."},pt:{"sec.dashboards":"Painéis","sec.prayer":"Mobilização de oração","sec.gospel":"Pesquisa do Evangelho","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Visão geral","sub.dashboard-plus-grid":"painel + grade de povos","tab.research-map":"Mapa de pesquisa","sub.research-map":"oração · engajamento · regiões","tab.research-map-plus-grid":"Pesquisa simples","sub.research-map-plus-grid":"mapa de pesquisa + grade de povos","tab.prayer-map":"Progresso da oração","sub.prayer-map":"mapa mundial de oração","tab.cities-internet":"Cidades com Internet","sub.cities-internet":"conectividade das principais cidades","tab.gospel-resources":"Recursos do Evangelho","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiões","sub.regions-dashboard":"regiões e seus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"minha lista de não alcançados + cartazes",navLabel:"Mapas de pesquisa",meta:"{n} mapas",loading:"Carregando {label}…",loadFailed:"Não foi possível carregar {label}.",manifestHint:"Esta aba é composta a partir do manifest.json — compile a árvore ou sirva a árvore compilada para carregá-la.",desktopOnly:"só no computador",lab:"beta",experimentalSub:"mapa experimental",desktopNotice:"Visão geral só funciona no computador — abra esta página em um computador para usá-la."},it:{"sec.dashboards":"Dashboard","sec.prayer":"Mobilitazione alla preghiera","sec.gospel":"Ricerca sul Vangelo","sec.experimental":"Sperimentale","tab.dashboard-plus-grid":"Quadro d'insieme","sub.dashboard-plus-grid":"dashboard + griglia dei popoli","tab.research-map":"Mappa di ricerca","sub.research-map":"preghiera · impegno · regioni","tab.research-map-plus-grid":"Ricerca semplice","sub.research-map-plus-grid":"mappa di ricerca + griglia dei popoli","tab.prayer-map":"Avanzamento preghiera","sub.prayer-map":"mappa mondiale della preghiera","tab.cities-internet":"Città con Internet","sub.cities-internet":"connettività delle città chiave","tab.gospel-resources":"Risorse del Vangelo","sub.gospel-resources":"risorse per luogo","tab.regions-dashboard":"Regioni","sub.regions-dashboard":"regioni e i loro paesi","tab.upg-100":"Lista UPG-100","sub.upg-100":"la mia lista dei non raggiunti + poster",navLabel:"Mappe di ricerca",meta:"{n} mappe",loading:"Caricamento di {label}…",loadFailed:"Impossibile caricare {label}.",manifestHint:"Questa scheda è composta da manifest.json: compila l'albero o pubblica l'albero compilato per caricarla.",desktopOnly:"solo desktop",lab:"beta",experimentalSub:"mappa sperimentale",desktopNotice:"Quadro d'insieme funziona solo su desktop: apri questa pagina su un computer per usarlo."},ro:{"sec.dashboards":"Panouri","sec.prayer":"Mobilizare la rugăciune","sec.gospel":"Cercetarea Evangheliei","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Imaginea de ansamblu","sub.dashboard-plus-grid":"panou + grila popoarelor","tab.research-map":"Hartă de cercetare","sub.research-map":"rugăciune · implicare · regiuni","tab.research-map-plus-grid":"Cercetare simplă","sub.research-map-plus-grid":"hartă de cercetare + grila popoarelor","tab.prayer-map":"Progresul rugăciunii","sub.prayer-map":"hartă mondială a rugăciunii","tab.cities-internet":"Orașe cu internet","sub.cities-internet":"conectivitatea orașelor-cheie","tab.gospel-resources":"Resurse ale Evangheliei","sub.gospel-resources":"resurse după loc","tab.regions-dashboard":"Regiuni","sub.regions-dashboard":"regiunile și țările lor","tab.upg-100":"Lista UPG-100","sub.upg-100":"lista mea de neatinși + afișe",navLabel:"Hărți de cercetare",meta:"{n} hărți",loading:"Se încarcă {label}…",loadFailed:"{label} nu a putut fi încărcat.",manifestHint:"Această filă este compusă din manifest.json — construiți arborele sau serviți arborele construit pentru a o încărca.",desktopOnly:"doar pe desktop",lab:"beta",experimentalSub:"hartă experimentală",desktopNotice:"Imaginea de ansamblu funcționează doar pe desktop — deschideți această pagină pe un computer pentru a o folosi."},ru:{"sec.dashboards":"Панели","sec.prayer":"Молитвенная мобилизация","sec.gospel":"Исследование Евангелия","sec.experimental":"Экспериментальное","tab.dashboard-plus-grid":"Общая картина","sub.dashboard-plus-grid":"панель + таблица народов","tab.research-map":"Исследовательская карта","sub.research-map":"молитва · вовлечённость · регионы","tab.research-map-plus-grid":"Простое исследование","sub.research-map-plus-grid":"исследовательская карта + таблица народов","tab.prayer-map":"Прогресс молитвы","sub.prayer-map":"простая карта молитвы мира","tab.cities-internet":"Города с интернетом","sub.cities-internet":"подключённость ключевых городов","tab.gospel-resources":"Евангельские ресурсы","sub.gospel-resources":"ресурсы по местам","tab.regions-dashboard":"Регионы","sub.regions-dashboard":"регионы и их страны","tab.upg-100":"Список UPG-100","sub.upg-100":"мой список недостигнутых + плакаты",navLabel:"Исследовательские карты",meta:"Карт: {n}",loading:"Загрузка: {label}…",loadFailed:"Не удалось загрузить: {label}.",manifestHint:"Эта вкладка собирается из manifest.json — соберите дерево или разместите собранное дерево, чтобы загрузить её.",desktopOnly:"только на компьютере",lab:"бета",experimentalSub:"экспериментальная карта",desktopNotice:"«Общая картина» работает только на компьютере — откройте эту страницу на компьютере."},ar:{"sec.dashboards":"لوحات المعلومات","sec.prayer":"التعبئة للصلاة","sec.gospel":"أبحاث الإنجيل","sec.experimental":"تجريبي","tab.dashboard-plus-grid":"الصورة الكاملة","sub.dashboard-plus-grid":"لوحة معلومات + شبكة الشعوب","tab.research-map":"خريطة البحث","sub.research-map":"الصلاة · الانخراط · المناطق","tab.research-map-plus-grid":"بحث مبسّط","sub.research-map-plus-grid":"خريطة البحث + شبكة الشعوب","tab.prayer-map":"تقدم الصلاة","sub.prayer-map":"خريطة عالمية مبسّطة للصلاة","tab.cities-internet":"مدن متصلة بالإنترنت","sub.cities-internet":"اتصال المدن الرئيسية","tab.gospel-resources":"موارد الإنجيل","sub.gospel-resources":"الموارد حسب المكان","tab.regions-dashboard":"المناطق","sub.regions-dashboard":"المناطق ودولها","tab.upg-100":"قائمة UPG-100","sub.upg-100":"قائمتي لغير المُبشَّرين + ملصقات",navLabel:"خرائط البحث",meta:"عدد الخرائط: {n}",loading:"جارٍ تحميل {label}…",loadFailed:"تعذّر تحميل {label}.",manifestHint:"تُبنى علامة التبويب هذه من manifest.json — ابنِ الشجرة أو قدّم الشجرة المبنية لتحميلها.",desktopOnly:"على الحاسوب فقط",lab:"تجريبي",experimentalSub:"خريطة تجريبية",desktopNotice:"تعمل «الصورة الكاملة» على الحاسوب فقط — افتح هذه الصفحة على حاسوب لاستخدامها."},hi:{"sec.dashboards":"डैशबोर्ड","sec.prayer":"प्रार्थना संचालन","sec.gospel":"सुसमाचार शोध","sec.experimental":"प्रायोगिक","tab.dashboard-plus-grid":"संपूर्ण चित्र","sub.dashboard-plus-grid":"डैशबोर्ड + जनसमूहों की ग्रिड","tab.research-map":"शोध मानचित्र","sub.research-map":"प्रार्थना · सहभागिता · क्षेत्र","tab.research-map-plus-grid":"सरल शोध","sub.research-map-plus-grid":"शोध मानचित्र + जनसमूहों की ग्रिड","tab.prayer-map":"प्रार्थना प्रगति","sub.prayer-map":"सरल विश्व प्रार्थना मानचित्र","tab.cities-internet":"इंटरनेट वाले शहर","sub.cities-internet":"प्रमुख शहरों की कनेक्टिविटी","tab.gospel-resources":"सुसमाचार संसाधन","sub.gospel-resources":"स्थान के अनुसार संसाधन","tab.regions-dashboard":"क्षेत्र","sub.regions-dashboard":"क्षेत्र और उनके देश","tab.upg-100":"UPG-100 सूची","sub.upg-100":"मेरी अप्राप्त सूची + पोस्टर",navLabel:"शोध मानचित्र",meta:"{n} मानचित्र",loading:"{label} लोड हो रहा है…",loadFailed:"{label} लोड नहीं हो सका।",manifestHint:"यह टैब manifest.json से बनता है — इसे लोड करने के लिए ट्री बनाएँ या बना हुआ ट्री सर्व करें।",desktopOnly:"केवल डेस्कटॉप",lab:"बीटा",experimentalSub:"प्रायोगिक मानचित्र",desktopNotice:"संपूर्ण चित्र केवल डेस्कटॉप पर काम करता है — इसे उपयोग करने के लिए यह पेज कंप्यूटर पर खोलें।"},zh:{"sec.dashboards":"仪表板","sec.prayer":"祷告动员","sec.gospel":"福音研究","sec.experimental":"实验性","tab.dashboard-plus-grid":"全景","sub.dashboard-plus-grid":"仪表板 + 民族网格","tab.research-map":"研究地图","sub.research-map":"祷告 · 参与 · 区域","tab.research-map-plus-grid":"简易研究","sub.research-map-plus-grid":"研究地图 + 民族网格","tab.prayer-map":"祷告进度","sub.prayer-map":"简易世界祷告地图","tab.cities-internet":"有互联网的城市","sub.cities-internet":"主要城市的网络连接","tab.gospel-resources":"福音资源","sub.gospel-resources":"按地点划分的资源","tab.regions-dashboard":"区域","sub.regions-dashboard":"区域及其国家","tab.upg-100":"UPG-100 名单","sub.upg-100":"我的未得之民名单 + 海报",navLabel:"研究地图",meta:"{n} 张地图",loading:"正在加载{label}…",loadFailed:"无法加载{label}。",manifestHint:"此标签页由 manifest.json 组成——请构建目录树或提供已构建的目录树以加载它。",desktopOnly:"仅限桌面",lab:"测试版",experimentalSub:"实验性地图",desktopNotice:"全景仅支持桌面设备——请在电脑上打开此页面使用。"}},xi=Object.keys(xs);function _s(e,t,s){let n=(xs[e]||xs.en)[t]??xs.en[t]??t;if(s)for(const r in s)n=n.split("{"+r+"}").join(String(s[r]));return n}const rc=":host{display:block;position:relative;height:var(--doxa-maps-spa-height, 85vh);min-height:480px}:host{font-size:16px;line-height:normal;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;white-space:normal;-webkit-hyphens:manual;hyphens:manual;visibility:visible;cursor:auto}:host([hidden]){display:none}.dms-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.dms-slot{position:relative;min-height:100%}.dms-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:#6d766e;font-size:13px;padding:20px}.dms-hint.err{color:#f87171}.dms-hint small{color:var(--dx-muted, #6d766e)}.dms-notice{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40;max-width:320px;text-align:center;font-size:13px;line-height:1.4;color:#3b463d;background:#fff;border:1px solid #d1d4cd;border-radius:10px;padding:10px 16px;box-shadow:0 8px 24px #0000001f}.dms-logo{display:inline-flex;align-items:center}.dms-logo svg{display:block}.dms-locale{position:relative;padding:8px 12px 0;display:flex;justify-content:flex-end}.dms-locale-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.dms-locale-btn:hover{background:#d1d4cd}.dms-flag{font-size:14px;line-height:1}.dms-locale-name{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dms-dots{color:#6d766e;margin-left:2px}.dms-locale-menu{position:absolute;top:100%;right:12px;margin-top:4px;z-index:30;min-width:180px;list-style:none;padding:6px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000080;max-height:320px;overflow:auto}.dms-locale-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:13px;padding:7px 9px;border:0;border-radius:7px;background:none;color:#3b463d;cursor:pointer}.dms-locale-opt:hover,.dms-locale-opt.active{background:#d1d4cd;color:#3b463d}.dms-locale-opt.active .dms-locale-name{color:#92b195}.dms-locale-en{margin-left:auto;font-size:11px;color:#6d766e}";function wr(){try{const e=new URLSearchParams(location.search),t=(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase();if(xi.includes(t))return t}catch{}try{const e=(document.documentElement.lang||"").split("-")[0].toLowerCase();if(xi.includes(e))return e}catch{}return""}const _i=[{key:"dashboards",label:"Dashboards",i18n:"sec.dashboards",icon:"chart",tabs:[{id:"dashboard-plus-grid",icon:"chart"},{id:"research-map-plus-grid",icon:"map"},{id:"regions-dashboard",icon:"map"}]},{key:"prayer-mobilization",label:"Prayer Mobilization",i18n:"sec.prayer",icon:"heart",tabs:[{id:"upg-100",icon:"list"},{id:"prayer-map",icon:"embed"}]},{key:"gospel-research",label:"Gospel Research",i18n:"sec.gospel",icon:"search",tabs:[{id:"cities-internet",icon:"wifi"},{id:"gospel-resources",icon:"book"}]},{key:"experimental",label:"Experimental",i18n:"sec.experimental",icon:"flask",folder:!0,open:!1,tabs:[]}],oc=new Set(["doxa-maps-spa","plugin-studio","template-bundle","people-groups-grid","research-dashboard","big-picture","demo-map","golden-path-check","doxa-research-map","stack-demo"]),Sr={"prayer-walk-planner":1,"upg-neighbor":2,"key-cities":3,"all-people-groups":4,"country-posters":5,"doxa-vision-card":6},wi=[{id:"dashboard-plus-grid",label:"Big Picture",sub:"dashboard + people-groups grid, stacked",emoji:"🌍",bundle:"dashboard-plus-grid",profile:"dashboard-plus-grid"},{id:"research-map",label:"Research Map",sub:"prayer · engagement · regions",emoji:"🗺️",bundle:"doxa-research-map",profile:"research-map"},{id:"research-map-plus-grid",label:"Simple Research",sub:"research map + people-groups grid",emoji:"🗺️",bundle:"research-map-plus-grid",profile:"research-map-plus-grid"},{id:"prayer-map",label:"Prayer Progress",sub:"simple world prayer map",emoji:"🙏",bundle:"doxa-simple-map",profile:"doxa-simple-map",instance:"prayer"},{id:"cities-internet",label:"Cities with Internet",sub:"connectivity of key cities",emoji:"📡",bundle:"cities-internet",profile:"connectivity-map"},{id:"gospel-resources",label:"Gospel Resources",sub:"resources by place",emoji:"📖",bundle:"gospel-resources",profile:"resources-map"},{id:"regions-dashboard",label:"Regions",sub:"regions and their countries",emoji:"🌐",bundle:"regions-dashboard",profile:"regions-mfe"},{id:"upg-100",label:"UPG-100 List",sub:"my unreached list + posters",emoji:"📋",bundle:"my-upg-100-list",profile:"upg-100-mfe"}];ac(_i);const ws=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid"]),Ss=new Set(["dashboard-plus-grid","research-map-plus-grid"]);function lc(){const e=Object.fromEntries(wi.map(s=>[s.id,s])),t=new Set;for(const s of _i)if(s.key!=="experimental")for(const i of s.tabs||[]){const n=e[i.id];n&&n.bundle&&t.add(n.bundle)}return t}function Er(e,t){const s=[];for(const i of e)!i||t.has(i.key)||(t.add(i.key),s.push(i));return s}function ac(e){const t=new Map,s=[];for(const i of e)if(i.key!=="experimental")for(const n of i.tabs||[]){if(!n||!n.id)continue;const r=t.get(n.id);if(r===void 0){t.set(n.id,i.key);continue}(r!==i.key||s.indexOf(n.id)===-1)&&s.push(n.id+" ("+r+" + "+i.key+")")}return s.length&&typeof console<"u"&&console.error("[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: "+s.join(", ")+" — VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in two sections paints twice and stalls keyboard nav. See the duplicate-key trap in SPEC-the-six-map-product-and-its-tab-order.md."),s}function cc(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function dc(e){const t=lc(),s=e&&Array.isArray(e.bundles)?e.bundles:[],i=[];for(const n of s){const r=n&&n.bundle;if(!r||t.has(r)||oc.has(r))continue;const o=Array.isArray(n.profiles)?n.profiles:[];if(!o.length)continue;const l=o.find(u=>u.isMap)||o.find(u=>u.profile===r)||o[0],a=l.element||Array.isArray(n.elements)&&n.elements[0]||r,f=n.scriptUrl||l.scriptUrl||"";f&&i.push({id:r,label:l.title||cc(r),sub:(l.description||"").trim().replace(/[,;]\s*$/,"")||"experimental bundle",emoji:"🧪",tag:a,bundle:r,profile:l.profile||r,scriptUrl:f,heavy:ws.has(a)||ws.has(r),scroll:Ss.has(a)||Ss.has(r),discovered:!0})}return i.sort((n,r)=>{const o=Sr[n.id]||999,l=Sr[r.id]||999;return o!==l?o-l:n.label.localeCompare(r.label)}),i}function uc(e,t){const s=e&&Array.isArray(e.bundles)?e.bundles:[],i=Object.fromEntries(s.map(r=>[r.bundle,r])),n={};for(const r of t){const o=i[r.bundle];if(!o)continue;const l=Array.isArray(o.profiles)?o.profiles:[],a=l.find(E=>E.profile===r.profile)||l[0],f=a&&a.element||Array.isArray(o.elements)&&o.elements[0]||r.bundle,u=o.scriptUrl||a&&a.scriptUrl||"";if(!u)continue;const h=a&&Array.isArray(a.instances)?a.instances:[],S=!!(r.instance&&h.some(E=>(E&&(E.id||E.instance))===r.instance));n[r.id]={tag:f,scriptUrl:u,profile:a&&a.profile||r.profile,instance:S?r.instance:"",heavy:ws.has(f)||ws.has(r.bundle),scroll:Ss.has(f)||Ss.has(r.bundle)}}return n}const jt={};function fc(e,t){return jt[e]||(jt[e]=new Promise((s,i)=>{const n=document.createElement("script");n.src=e,(/^\/plugin-designs\//.test(e)||/\/index\.js(\?|$)/.test(e))&&(n.type="module"),n.onload=()=>s(),n.onerror=()=>{delete jt[e],i(new Error("failed to load "+e))},document.head.appendChild(n)})),jt[e]}function pc(e,t){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():Promise.race([customElements.whenDefined(e),new Promise((s,i)=>setTimeout(()=>{customElements.get(e)||i(new Error("<"+e+"> never registered (bundle loaded but defined no element)"))},15e3))])}const hc=ti({name:"DoxaMapsSpa",components:{VerticalTabsLayout:ec},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"DX-Maps"},tokenUrl:{type:String,default:""},tk:{type:String,default:""},language:{type:String,default:""},apiBaseUrl:{type:String,default:""},provider:{type:String,default:""},tab:{type:String,default:""}},emits:["tab-change"],setup(){return{injectedBase:Tt("dmsTreeBase","")}},data(){return{activeIndex:0,showHeader:!1,narrow:!1,_mql:null,_onMedia:null,disabledNotice:"",_noticeTimer:null,manifestError:"",manifestBase:"",runtime:{},locale:ic(),hostLang:wr(),localeOpen:!1,switcherLangs:tc,tabs:wi.map(e=>({...e,tag:"",scriptUrl:"",heavy:!1,scroll:!1,resolved:!1,mounted:!1,state:"idle",error:""}))}},computed:{cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},assetsBase(){const e=String(this.cfg.assetsBase||"").trim();return/^https?:\/\//i.test(e)||e.startsWith("/")?e.replace(/\/+$/,""):this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/assets":""},navGroups(){const e=Object.fromEntries(this.tabs.map(s=>[s.id,s])),t=new Set;return _i.map(s=>{let i=Er((s.tabs||[]).filter(n=>e[n.id]).map(n=>{const r=e[n.id],o=this.isBigPictureDisabled(r.id);return{key:r.id,label:this.tabLabel(r),sub:this.tabSub(r),icon:n.icon,badge:o?this.tr("desktopOnly"):n.badge,disabled:o}}),t);return s.key==="experimental"&&(i=i.concat(Er(this.tabs.filter(n=>n.discovered).map(n=>({key:n.id,label:this.tabLabel(n),sub:this.tabSub(n),icon:"flask",badge:this.tr("lab")})),t))),{key:s.key,label:s.i18n?this.tr(s.i18n):s.label,icon:s.icon,folder:!!s.folder,open:s.open,rows:i}}).filter(s=>s.rows.length)},showLocaleSwitcher(){return this.showHeader},activeLang(){return sc(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}},effectiveLocale(){const e=(this.language||this.cfg.language||this.cfg.locale||this.cfg.lang||"").trim(),t=this.showLocaleSwitcher?this.locale:"";return(e||t||this.hostLang||"en").split("-")[0].toLowerCase()},uiLocale(){return xi.includes(this.effectiveLocale)?this.effectiveLocale:"en"},effectiveProvider(){const e=String(this.provider||this.cfg.provider||"").trim().toLowerCase();return e==="maplibre"||e==="mapbox"?e:""},activeKey(){const e=this.tabs[this.activeIndex];return e?e.id:""}},mounted(){this.watchWidth(),this.watchHostLang(),this.select(this.initialIndex()),this.loadManifest()},beforeUnmount(){this._langObs&&(this._langObs.disconnect(),this._langObs=null),!(!this._mql||!this._onMedia)&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia),this._mql=null,this._onMedia=null)},watch:{effectiveLocale(e){const t=this.tabs[this.activeIndex];if(!(!t||!t.mounted))try{const s=this._slots&&this._slots[this.activeIndex],i=s&&s.firstElementChild;i&&i.setAttribute&&i.setAttribute("profile-config",JSON.stringify(this.childConfig(t)))}catch{}},tab(e){e&&this.onSelect(e)}},methods:{setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},tr(e,t){return _s(this.uiLocale,e,t)},t(e,t){return _s(this.uiLocale,e,t)},tabLabel(e){return e.discovered?e.label:_s(this.uiLocale,"tab."+e.id)},tabSub(e){return e.discovered?this.uiLocale==="en"?e.sub:this.tr("experimentalSub"):_s(this.uiLocale,"sub."+e.id)},watchHostLang(){typeof MutationObserver>"u"||typeof document>"u"||(this._langObs=new MutationObserver(()=>{this.hostLang=wr()}),this._langObs.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]}))},watchWidth(){typeof window>"u"||!window.matchMedia||(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this._onMedia=e=>{const t=this.narrow;this.narrow=!!e.matches,t!==this.narrow&&this.isBigPictureDisabled(this.activeKey)&&this.select(this.firstVisibleIndex())},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))},isBigPictureDisabled(e){return e==="dashboard-plus-grid"&&this.narrow},firstVisibleIndex(){let e=-1;for(const t of this.navGroups)for(const s of t.rows){const i=this.tabs.findIndex(n=>n.id===s.key);if(!(i<0)&&(e<0&&(e=i),!s.disabled))return i}return e>=0?e:0},loadManifest(){const e=[this.resolve("manifest.json")],t="/public/doxa-maps/manifest.json";e.indexOf(t)===-1&&e.push(t);const s=[],i=n=>{if(n>=e.length){this.manifestError="manifest.json not found (tried "+s.join(", ")+")",console.error("[doxa-maps-spa] "+this.manifestError+" — every tab except Big Picture is composed from it, so their panes cannot mount.");return}const r=e[n];return s.push(r),fetch(r,{credentials:"omit"}).then(o=>{if(!o||!o.ok)throw new Error(r+" → HTTP "+(o?o.status:"?"));return o.json()}).then(o=>{if(!o)throw new Error(r+" → empty");this.manifestError="";try{this.manifestBase=new URL(r,location.href).href.replace(/[^/]*$/,"")}catch{this.manifestBase=""}this.applyManifest(o)}).catch(()=>i(n+1))};try{i(0)}catch{}},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.applyPageGlobals();const t=uc(e,wi),s=this.activeKey,i=[];for(const a of this.tabs){if(a.discovered){i.push(a);continue}const f=t[a.id];f&&(Object.assign(a,f,{resolved:!0}),i.push(a))}const n=new Set(i.map(a=>a.id));for(const a of dc(e))n.has(a.id)||i.push({...a,resolved:!0,mounted:!1,state:"idle",error:""});this.tabs=i;const r=this.requestedTab(),o=r?this.tabs.findIndex(a=>a.id===r):-1,l=this.tabs.findIndex(a=>a.id===s);o>=0&&!this.isBigPictureDisabled(r)&&!this._honouredTab?this.select(o):this.select(l>=0?l:this.firstVisibleIndex()),this._honouredTab=!0},requestedTab(){let e="";try{e=new URLSearchParams(location.search).get("tab")||""}catch{}return String(this.tab||this.cfg.tab||e||"").trim()},initialIndex(){const e=this.requestedTab(),t=e?this.tabs.findIndex(s=>s.id===e):-1;return t>=0&&(this._honouredTab=!0),t>=0&&!this.isBigPictureDisabled(e)?t:this.firstVisibleIndex()},setLocale(e){this.locale=e,this.localeOpen=!1,nc(e)},onSelect(e){if(this.isBigPictureDisabled(e)){this.disabledNotice=this.tr("desktopNotice"),clearTimeout(this._noticeTimer),this._noticeTimer=setTimeout(()=>{this.disabledNotice=""},4e3);return}const t=this.tabs.findIndex(s=>s.id===e);t!==-1&&this.select(t)},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const s=t.replace(/^\.\//,"");return this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/"+s:this.base?this.base.replace(/\/+$/,"")+"/"+s:"../"+s},select(e){const t=this.activeIndex;if(this.activeIndex=e,t!==e&&t>=0){const i=this.tabs[t];i&&i.heavy&&i.mounted&&this.releaseTab(t,i)}const s=this.tabs[e];s&&((t!==e||!this._announced)&&(this._announced=!0,this.$emit("tab-change",{id:s.id,label:s.label})),s.scriptUrl&&(s.mounted||this.$nextTick(()=>{this.activeIndex===e&&this.mountElement(e)})))},releaseTab(e,t){try{const s=this._slots&&this._slots[e];s&&(s.innerHTML="")}catch{}this._slots&&delete this._slots[e],t.mounted=!1,t.state="idle",t.error=""},childConfig(e){const t={profile:e.profile||e.id,instanceId:e.instance||"dms-"+e.id};this.effectiveLocale&&(t.locale=this.effectiveLocale);const s=this.tk||this.cfg.tk||this.runtime.token;return s&&(t.tk=s),(this.tokenUrl||this.cfg.tokenUrl)&&(t.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.effectiveProvider&&(t.provider=this.effectiveProvider),this.base&&(t.treeBase=this.base),this.assetsBase&&(t.assetsBase=this.assetsBase),t.urlSync=!1,t},applyPageGlobals(){if(typeof window>"u")return;const e=(this.apiBaseUrl||this.cfg.apiBaseUrl||this.runtime.apiBaseUrl||"").trim();e&&!window.MAP_APP_API_URL&&(window.MAP_APP_API_URL=e.replace(/\/+$/,""));const t=this.tk||this.cfg.tk||this.runtime.token;t&&!window.MAP_TOKEN&&(window.MAP_TOKEN=t),this.effectiveProvider&&!window.MAP_PROVIDER&&(window.MAP_PROVIDER=this.effectiveProvider)},mountElement(e){const t=this.tabs[e];t.mounted=!0,t.state="loading";const s=this.resolve(t.scriptUrl);fc(s).then(()=>pc(t.tag)).then(()=>{try{if(t.heavy&&this.activeIndex!==e){t.mounted=!1,t.state="idle";return}const i=this._slots&&this._slots[e];if(!i){t.state="error",t.error="no slot";return}i.innerHTML="";const n=document.createElement(t.tag);n.setAttribute("profile-config",JSON.stringify(this.childConfig(t))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText=t.scroll?"display:block;position:static;width:100%;height:auto;":"display:block;position:absolute;inset:0;width:100%;height:100%;",i.appendChild(n),t.state="ready"}catch(i){t.state="error",t.error="mount failed: "+(i&&i.message||String(i))}}).catch(i=>{t.state="error",t.error=i&&i.message||String(i)})}}}),bc={class:"dms-locale"},gc=["aria-expanded"],mc={class:"dms-flag"},vc={class:"dms-locale-name"},yc={key:0,class:"dms-locale-menu",role:"listbox"},xc=["aria-selected"],_c=["onClick"],wc={class:"dms-flag"},Sc={class:"dms-locale-name"},Ec={class:"dms-locale-en"},Tc=["hidden"],kc={key:0,class:"dms-hint"},Cc={key:1,class:"dms-hint err"},Ac={key:2,class:"dms-hint err"},Oc={key:0,class:"dms-notice",role:"status"};function Lc(e,t,s,i,n,r){const o=$o("VerticalTabsLayout");return R(),ps(o,{title:e.heading,"nav-label":e.t("navLabel"),header:e.showHeader,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.onSelect},Vo({brand:Et(()=>[t[1]||(t[1]=O("span",{class:"dms-logo","aria-hidden":"true"},[O("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[O("circle",{cx:"12",cy:"12",r:"9"}),O("polygon",{points:"12 6 14 12 12 18 10 12",fill:"#92b195",stroke:"none"}),O("polygon",{points:"6 12 12 10 18 12 12 14",fill:"#92b195",opacity:"0.55",stroke:"none"})])],-1))]),meta:Et(()=>[ht(H(e.t("meta",{n:e.tabs.length})),1)]),default:Et(()=>[(R(!0),I(ee,null,ut(e.tabs,(l,a)=>Js((R(),I("section",{key:l.id,class:"dms-pane",hidden:a!==e.activeIndex},[!l.heavy||a===e.activeIndex?(R(),I(ee,{key:0},[O("div",{class:"dms-slot",ref_for:!0,ref:f=>e.setSlot(a,f)},null,512),l.state==="loading"?(R(),I("div",kc,H(e.tr("loading",{label:e.tabLabel(l)})),1)):l.state==="error"?(R(),I("div",Cc,[ht(H(e.tr("loadFailed",{label:e.tabLabel(l)})),1),t[3]||(t[3]=O("br",null,null,-1)),O("small",null,H(l.error),1)])):l.state==="idle"&&!l.scriptUrl&&e.manifestError?(R(),I("div",Ac,[ht(H(e.tr("loadFailed",{label:e.tabLabel(l)})),1),t[4]||(t[4]=O("br",null,null,-1)),O("small",null,H(e.manifestError),1),t[5]||(t[5]=O("br",null,null,-1)),O("small",null,H(e.tr("manifestHint")),1)])):ue("",!0)],64)):ue("",!0)],8,Tc)),[[bi,a===e.activeIndex]])),128)),e.disabledNotice?(R(),I("div",Oc,H(e.disabledNotice),1)):ue("",!0)]),_:2},[e.showLocaleSwitcher?{name:"toolbar",fn:Et(()=>[O("div",bc,[O("button",{type:"button",class:"dms-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=l=>e.localeOpen=!e.localeOpen)},[O("span",mc,H(e.activeLang.flag),1),O("span",vc,H(e.activeLang.nativeName),1),t[2]||(t[2]=O("span",{class:"dms-dots","aria-hidden":"true"},"⋮",-1))],8,gc),e.localeOpen?(R(),I("ul",yc,[(R(!0),I(ee,null,ut(e.switcherLangs,l=>(R(),I("li",{key:l.code,role:"option","aria-selected":String(l.code===e.locale)},[O("button",{type:"button",class:Ke(["dms-locale-opt",{active:l.code===e.locale}]),onClick:a=>e.setLocale(l.code)},[O("span",wc,H(l.flag),1),O("span",Sc,H(l.nativeName),1),O("span",Ec,H(l.name),1)],10,_c)],8,xc))),128))])):ue("",!0)])]),key:"0"}:void 0]),1032,["title","nav-label","header","groups","active","onUpdate:active"])}const Pc=yr(hc,[["render",Lc],["styles",[rc]]]);function Mc(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const Rc=Mc(),Ic=Ql(Pc,{configureApp(e){e.provide("dmsTreeBase",Rc)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",Ic)})(); diff --git a/public/doxa-maps/doxa-maps-spa/doxa-maps-spa/app/index.html b/public/doxa-maps/doxa-maps-spa/doxa-maps-spa/app/index.html index 1d5592e97..ef8c2fddf 100644 --- a/public/doxa-maps/doxa-maps-spa/doxa-maps-spa/app/index.html +++ b/public/doxa-maps/doxa-maps-spa/doxa-maps-spa/app/index.html @@ -26,7 +26,7 @@ - + - + + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":22,"profileCount":35,"runtime":{"apiBaseUrl":"https://pray.doxa.life","token":"pk.eyJ1IjoiZ29zeXN0ZW1zIiwiYSI6ImNtZm9vM291czA3amQya3BzYW42YW9ibTcifQ.52WM0IpxY9FcB0zc9f1zbQ"},"bundles":[{"bundle":"all-people-groups","scriptUrl":"./all-people-groups/all-people-groups.js","output":"doxa-maps/all-people-groups/all-people-groups.js","integrity":"sha384-j2rnWAW0lVUG05WREAfkQZo0jtreSIebwV3nHCbUcXhAGzMfTESwA1PqTYy5M3QS","elements":["all-people-groups"],"profiles":[{"profile":"all-people-groups","file":"all-people-groups.vue","description":"All 12,379 people groups (peoplegroups.org) in four colors — reached,","element":"all-people-groups","type":"single","isMap":true,"iframeUrl":"./all-people-groups/all-people-groups/index.html","scriptUrl":"./all-people-groups/all-people-groups.js","embed":{"iframe":"\u003ciframe src=\"./all-people-groups/all-people-groups/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-j2rnWAW0lVUG05WREAfkQZo0jtreSIebwV3nHCbUcXhAGzMfTESwA1PqTYy5M3QS\" crossorigin=\"anonymous\">\u003c/script>\n\u003call-people-groups profile-config='{\"profile\":\"all-people-groups\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/all-people-groups>"},"bundle":"all-people-groups"}]},{"bundle":"big-picture","scriptUrl":"./big-picture/big-picture.js","output":"doxa-maps/big-picture/big-picture.js","integrity":"sha384-zwM56YT56Crw0AFHQsG9fHnIPzkHVRwtLd/tXg9MXedfWyixXRdK7BVA/8S8JjhB","elements":["bp-big-picture","bp-research-header","people-groups-grid"],"composes":["bp-research-header","people-groups-grid"],"profiles":[{"profile":"big-picture","file":"big-picture.vue","description":"The Cat-4 composite that PAIRS the two real capability elements of the","element":"bp-big-picture","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./big-picture/big-picture/index.html","scriptUrl":"./big-picture/big-picture.js","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./big-picture/big-picture.js\" integrity=\"sha384-zwM56YT56Crw0AFHQsG9fHnIPzkHVRwtLd/tXg9MXedfWyixXRdK7BVA/8S8JjhB\" crossorigin=\"anonymous\">\u003c/script>\n\u003cbp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/bp-big-picture>"},"instances":[{"id":"big-picture","title":"Big Picture — research header ↔ people-groups grid (composite)","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/big-picture/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Big Picture — frontier accent","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture-frontier","accent":"#22d3ee","title":"Big Picture — Frontier Focus"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"big-picture"}]},{"bundle":"cities-internet","scriptUrl":"./cities-internet/cities-internet.js","output":"doxa-maps/cities-internet/cities-internet.js","integrity":"sha384-6fIHN70s7zCZSxNP27fS3sY8MJdnOMxbXIbA2u702oQDcSNVNCNLELEESMAXGY2t","elements":["cities-internet-map"],"profiles":[{"profile":"connectivity-list","file":"connectivity-list.vue","description":"Countries where DX people groups live, grouped by region, showing measured internet penetration","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/connectivity-list/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-6fIHN70s7zCZSxNP27fS3sY8MJdnOMxbXIbA2u702oQDcSNVNCNLELEESMAXGY2t\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"connectivity-map","file":"connectivity-map.vue","description":"Every country shaded by measured internet penetration, with its named carriers and dominant","element":"cities-internet-map","type":"single","isMap":true,"iframeUrl":"./cities-internet/connectivity-map/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-6fIHN70s7zCZSxNP27fS3sY8MJdnOMxbXIbA2u702oQDcSNVNCNLELEESMAXGY2t\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Four validated research tables, one tab each, with sortable and filterable columns, CSV and JSON","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/data-tables/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-6fIHN70s7zCZSxNP27fS3sY8MJdnOMxbXIbA2u702oQDcSNVNCNLELEESMAXGY2t\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}}]},{"bundle":"country-posters","scriptUrl":"./country-posters/country-posters.js","output":"doxa-maps/country-posters/country-posters.js","integrity":"sha384-6BMY4s31pHynQ7rtUkG2xWcZeluGOVbQtYJWwn7VJ+byd8sK/o4gj5/DOMwROgUI","elements":["country-posters-map"],"composes":["country-posters/country-poster-wall","country-posters/countries-map"],"profiles":[{"profile":"countries-map","file":"countries-map.vue","description":"The researcher's workbench retargeted from people groups to COUNTRIES — region","element":"country-posters-map","type":"single","isMap":true,"iframeUrl":"./country-posters/countries-map/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/countries-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-6BMY4s31pHynQ7rtUkG2xWcZeluGOVbQtYJWwn7VJ+byd8sK/o4gj5/DOMwROgUI\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}},{"profile":"country-poster-wall","file":"country-poster-wall.vue","description":"One printable card per country, grouped into COLLAPSIBLE regional sections so the","element":"country-posters-map","type":"single","isMap":false,"iframeUrl":"./country-posters/country-poster-wall/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/country-poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-6BMY4s31pHynQ7rtUkG2xWcZeluGOVbQtYJWwn7VJ+byd8sK/o4gj5/DOMwROgUI\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}},{"profile":"country-posters-mfe","file":"country-posters-mfe.vue","description":"Country Posters as ONE two-tab element — the countries map and the printable","element":"country-posters-mfe","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./country-posters/country-posters-mfe/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/country-posters-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-6BMY4s31pHynQ7rtUkG2xWcZeluGOVbQtYJWwn7VJ+byd8sK/o4gj5/DOMwROgUI\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}}]},{"bundle":"dashboard-plus-grid","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","output":"doxa-maps/dashboard-plus-grid/dashboard-plus-grid.js","integrity":"sha384-oWvpE6qF7AlXl/L/4dx/1uT493xz3fbpqNuSRcTXlTYdyryVVv1t/hlPOQTaNXg5","elements":["dashboard-plus-grid"],"composes":["research-dashboard","people-groups-grid"],"profiles":[{"profile":"dashboard-plus-grid","file":"dashboard-plus-grid.vue","description":"Both children are IMPORTED DIRECTLY (compiled into this ONE bundle — no runtime bundle","element":"dashboard-plus-grid","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./dashboard-plus-grid/dashboard-plus-grid/index.html","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","embed":{"iframe":"\u003ciframe src=\"./dashboard-plus-grid/dashboard-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-oWvpE6qF7AlXl/L/4dx/1uT493xz3fbpqNuSRcTXlTYdyryVVv1t/hlPOQTaNXg5\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/dashboard-plus-grid>"},"instances":[{"id":"default","title":"default","apiBaseUrl":"","props":{"profile":"dashboard-plus-grid"},"element":"dashboard-plus-grid","iframeUrl":"./dashboard-plus-grid/dashboard-plus-grid/default/index.html","embed":{"iframe":"\u003ciframe src=\"./dashboard-plus-grid/dashboard-plus-grid/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"demo-map","scriptUrl":"./demo-map/demo-map.js","output":"doxa-maps/demo-map/demo-map.js","integrity":"sha384-0VOyHD7/UL3X96Pa5likzNFFiT+mfQnRg2+pZmbF753yd5g/84z1gOzYhn1NSgKa","elements":["demo-map"],"profiles":[{"profile":"demo-map","file":"demo-map.vue","description":"Simple two-tab demo map. Tab 1 colors pins by religion (shared","element":"demo-map","type":"parameterized","isMap":true,"iframeUrl":"./demo-map/demo-map/index.html","scriptUrl":"./demo-map/demo-map.js","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./demo-map/demo-map.js\" integrity=\"sha384-0VOyHD7/UL3X96Pa5likzNFFiT+mfQnRg2+pZmbF753yd5g/84z1gOzYhn1NSgKa\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdemo-map profile-config='{\"profile\":\"demo-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/demo-map>"},"instances":[{"id":"maplibre","title":"Demo map — MapLibre (token-free)","apiBaseUrl":"","props":{"profile":"demo-map","provider":"maplibre","instanceId":"demo-maplibre"},"element":"demo-map","iframeUrl":"./demo-map/demo-map/maplibre/index.html","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"demo-map"}]},{"bundle":"doxa-maps-spa","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","output":"doxa-maps/doxa-maps-spa/doxa-maps-spa.js","integrity":"sha384-YFGeaO/dAJ0L5HjcnZy4CPpqw6I75f/J1D5COtc33Nfny/qGJaFdtfHqXgCJbXxR","elements":["doxa-maps-spa"],"composes":["dashboard-plus-grid/dashboard-plus-grid","research-map-plus-grid/research-map-plus-grid","regions-dashboard/regions-mfe","my-upg-100-list/upg-100-mfe","doxa-simple-map/doxa-simple-map","cities-internet/connectivity-map","gospel-resources/resources-map"],"profiles":[{"profile":"doxa-maps-spa","file":"doxa-maps-spa.vue","description":"The DX-maps app itself: one element whose vertical-tab rail nests every other","element":"doxa-maps-spa","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./doxa-maps-spa/doxa-maps-spa/index.html","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-YFGeaO/dAJ0L5HjcnZy4CPpqw6I75f/J1D5COtc33Nfny/qGJaFdtfHqXgCJbXxR\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-maps-spa>"},"instances":[{"id":"app","title":"Research Gallery — Big Picture + every research map (app-shell)","apiBaseUrl":"","props":{"profile":"doxa-maps-spa","provider":"maplibre","instanceId":"doxa-maps-spa-app","title":"Research Gallery"},"element":"doxa-maps-spa","iframeUrl":"./doxa-maps-spa/doxa-maps-spa/app/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/app/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-research-map","scriptUrl":"./doxa-research-map/doxa-research-map.js","output":"doxa-maps/doxa-research-map/doxa-research-map.js","integrity":"sha384-Pz+BuiLVX/OnZWBl4YhRcseuTjI2XLwN77j8OdfcFfEHkNB0jVIWbHw7wkbChUQZ","elements":["doxa-research-map"],"profiles":[{"profile":"research-map","file":"research-map.vue","description":"The researcher's workbench: every piece a missiologist, demographer or","element":"doxa-research-map","type":"monolithic","isMap":true,"iframeUrl":"./doxa-research-map/research-map/index.html","scriptUrl":"./doxa-research-map/doxa-research-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-Pz+BuiLVX/OnZWBl4YhRcseuTjI2XLwN77j8OdfcFfEHkNB0jVIWbHw7wkbChUQZ\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-research-map>"},"instances":[{"id":"maplibre","title":"Research map — MapLibre (token-free, no search bar)","apiBaseUrl":"","props":{"profile":"research-map","provider":"maplibre","instanceId":"research-map-maplibre"},"element":"doxa-research-map","iframeUrl":"./doxa-research-map/research-map/maplibre/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-research-map/research-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-simple-map","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","output":"doxa-maps/doxa-simple-map/doxa-simple-map.js","integrity":"sha384-G/NuJx27ipfilwAaJ9N9jsGgKtVlSMwkS9E/dv/NE5drDd56Z5KYewcu0hp3H2N2","elements":["doxa-map","doxa-simple-map"],"profiles":[{"profile":"doxa-simple-map","file":"doxa-simple-map.vue","description":"The simple world map, shipped as three presets off ONE prop table —","element":"doxa-map","type":"parameterized","isMap":true,"iframeUrl":"./doxa-simple-map/doxa-simple-map/index.html","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-G/NuJx27ipfilwAaJ9N9jsGgKtVlSMwkS9E/dv/NE5drDd56Z5KYewcu0hp3H2N2\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-map>"},"instances":[{"id":"prayer","title":"Prayer Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-prayer","dataSource":"pray-tools","tabs":[{"id":"prayer","colorStrategy":"prayer","legend":"prayer","popup":"prayer"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/prayer/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/prayer/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"engagement","title":"Engagement Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-engagement","dataSource":"pray-tools","tabs":[{"id":"engagement","colorStrategy":"engagement","legend":"engagement","popup":"engagement"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/engagement/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/engagement/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"adoption","title":"Adoption Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-adoption","dataSource":"pray-tools","tabs":[{"id":"adoption","colorStrategy":"adoption","legend":"adoption","popup":"adoption"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/adoption/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/adoption/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-vision-card","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","output":"doxa-maps/doxa-vision-card/doxa-vision-card.js","integrity":"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn","elements":["doxa-vision-card"],"profiles":[{"profile":"doxa-vision-card","file":"doxa-vision-card.vue","description":"The Capability-1 example: ONE folder -> ONE bundle -> ONE element.","element":"doxa-vision-card","type":"parameterized","isMap":false,"iframeUrl":"./doxa-vision-card/doxa-vision-card/index.html","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-vision-card/doxa-vision-card.js\" integrity=\"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-vision-card profile-config='{\"profile\":\"doxa-vision-card\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-vision-card>"},"instances":[{"id":"default","title":"Vision card — reach at a glance","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-default"},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/default/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Vision card — frontier accent","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-frontier","accent":"#22d3ee","title":"The last frontier of the gospel.","tagline":"Frontier people groups — where fewer than one in a thousand follow Jesus.","stats":[{"value":"1,910","label":"Frontier groups","note":"under 0.1% believers"},{"value":"2.1B","label":"People","note":"living in frontier settings"},{"value":"0.1%","label":"Christian","note":"or fewer, in each group"}]},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"doxa-vision-card"}]},{"bundle":"golden-path-check","scriptUrl":"./golden-path-check/golden-path-check.js","output":"doxa-maps/golden-path-check/golden-path-check.js","integrity":"sha384-1V/sT5SkV0U9yTCK9ELIOFfU1ZIJkInIF6nG3UllJ4dxax3RsEAupSGLJEFK6e14","elements":["golden-path-check"],"profiles":[{"profile":"golden-path-check","file":"golden-path-check.vue","description":"A live self-test of the develop-a-plugin-and-see-it-live path: it reads the built","element":"golden-path-check","type":"single","isMap":false,"iframeUrl":"./golden-path-check/golden-path-check/index.html","scriptUrl":"./golden-path-check/golden-path-check.js","embed":{"iframe":"\u003ciframe src=\"./golden-path-check/golden-path-check/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./golden-path-check/golden-path-check.js\" integrity=\"sha384-1V/sT5SkV0U9yTCK9ELIOFfU1ZIJkInIF6nG3UllJ4dxax3RsEAupSGLJEFK6e14\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgolden-path-check profile-config='{\"profile\":\"golden-path-check\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/golden-path-check>"}}]},{"bundle":"gospel-resources","scriptUrl":"./gospel-resources/gospel-resources.js","output":"doxa-maps/gospel-resources/gospel-resources.js","integrity":"sha384-muBwL0JGuEgF9nEiranHSAJ1y7Ip/o8jdt8jhTVns34CxvEKgKmanIN6SeQbIazw","elements":["gospel-resources-map"],"composes":["resources-map","data-tables"],"profiles":[{"profile":"charts","file":"charts.vue","description":"The gap measured by LANGUAGE (ISO 639-3) rather than by people group, because one translation serves every group that speaks it, so counting by group overstates how much work remains.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/charts/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/charts/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-muBwL0JGuEgF9nEiranHSAJ1y7Ip/o8jdt8jhTVns34CxvEKgKmanIN6SeQbIazw\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Eight tables covering both halves of one question: every gospel resource with its real URL and how much Scripture it is, and the 3,457 people groups where nothing was found with the pools searched recorded per row, plus bridge languages, city bridges, the deaf gap and access against population growth.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/data-tables/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-muBwL0JGuEgF9nEiranHSAJ1y7Ip/o8jdt8jhTVns34CxvEKgKmanIN6SeQbIazw\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"gospel-dashboard","file":"gospel-dashboard.vue","description":"The gospel map and its tables as one scrolling element: 12,379 people-group pins with the real Scripture, film and Bible-story links for each group's own language, above every resource with its URL and the 3,457 groups where nothing was found, exportable as CSV.","element":"gospel-resources-dashboard","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./gospel-resources/gospel-dashboard/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/gospel-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-muBwL0JGuEgF9nEiranHSAJ1y7Ip/o8jdt8jhTVns34CxvEKgKmanIN6SeQbIazw\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-list","file":"resources-list.vue","description":"Which people groups have Scripture in their own language and which have none, zero-resource languages first, with every link the verification pass proved and Open Bible Stories labelled as stories rather than as Scripture.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/resources-list/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-muBwL0JGuEgF9nEiranHSAJ1y7Ip/o8jdt8jhTVns34CxvEKgKmanIN6SeQbIazw\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-map","file":"resources-map.vue","description":"12,379 people-group pins over a country choropleth: tap a pin for the Scripture, audio, film, Bible-story and training links that exist in that group's own language with real URLs, tap a country for every group in it, search by group, language or ISO 639-3 code, and filter to the groups where nothing was found.","element":"gospel-resources-map","type":"single","isMap":true,"iframeUrl":"./gospel-resources/resources-map/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-muBwL0JGuEgF9nEiranHSAJ1y7Ip/o8jdt8jhTVns34CxvEKgKmanIN6SeQbIazw\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}}]},{"bundle":"my-upg-100-list","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","output":"doxa-maps/my-upg-100-list/my-upg-100-list.js","integrity":"sha384-ep76LkuPyJeFgArqsscDmCVlXnx4efDXp7txdVkBRXp74sT89dr+Tgdv/HUKsI/F","elements":["my-upg-100-list-map"],"composes":["my-upg-100-list/upg-100-list","my-upg-100-list/poster-wall"],"profiles":[{"profile":"poster-wall","file":"poster-wall.vue","description":"A wall of printable poster cards, one per 100-list entry, each with a \"Show on map\"","element":"my-upg-100-list-map","type":"single","isMap":false,"iframeUrl":"./my-upg-100-list/poster-wall/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-ep76LkuPyJeFgArqsscDmCVlXnx4efDXp7txdVkBRXp74sT89dr+Tgdv/HUKsI/F\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-list","file":"upg-100-list.vue","description":"A personal unreached-people-groups list painted as true boundary polygons —","element":"my-upg-100-list-map","type":"single","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-list/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-ep76LkuPyJeFgArqsscDmCVlXnx4efDXp7txdVkBRXp74sT89dr+Tgdv/HUKsI/F\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-mfe","file":"upg-100-mfe.vue","description":"The standalone, shareable and embeddable composite of the my-upg-100-list family — it nests the map","element":"my-upg-100-list-map","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-mfe/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-ep76LkuPyJeFgArqsscDmCVlXnx4efDXp7txdVkBRXp74sT89dr+Tgdv/HUKsI/F\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}}]},{"bundle":"people-groups-grid","scriptUrl":"./people-groups-grid/people-groups-grid.js","output":"doxa-maps/people-groups-grid/people-groups-grid.js","integrity":"sha384-bXnpluxSYtktOs786dmJaVM1oCO0R0Ww20iybJhCR2BscwjimyuFTjIC3+jAOb7E","elements":["people-groups-grid"],"profiles":[{"profile":"people-groups-grid","file":"people-groups-grid.vue","description":"The people-groups grid as an owned custom element: card list, search and four","element":"people-groups-grid","type":"parameterized","isMap":false,"iframeUrl":"./people-groups-grid/people-groups-grid/index.html","scriptUrl":"./people-groups-grid/people-groups-grid.js","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-bXnpluxSYtktOs786dmJaVM1oCO0R0Ww20iybJhCR2BscwjimyuFTjIC3+jAOb7E\" crossorigin=\"anonymous\">\u003c/script>\n\u003cpeople-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/people-groups-grid>"},"instances":[{"id":"people-groups-grid","title":"People Groups Grid — standalone (own search + 4 dropdowns)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid","pray-base-url":"https://pray.doxa.life"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/people-groups-grid/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"driven","title":"People Groups Grid — externally driven (controls off, props/events)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid-driven","pray-base-url":"https://pray.doxa.life","show-search":"false","show-filters":"false"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/driven/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/driven/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"plugin-studio","scriptUrl":"./plugin-studio/plugin-studio.js","output":"doxa-maps/plugin-studio/plugin-studio.js","integrity":"sha384-N70Sfwq4XTc7BHosJDT1r9/qUrzr1NZ5DiLb3QUYST8vY7+quBQzytqcpOs4Rp1E","elements":["plugin-studio"],"composes":["dashboard-plus-grid","people-groups-grid","doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-vision-card","all-people-groups","research-dashboard"],"profiles":[{"profile":"plugin-studio","file":"plugin-studio.vue","description":"The developer's viewing surface: a sidebar that is the composability ladder","element":"plugin-studio","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./plugin-studio/plugin-studio/index.html","scriptUrl":"./plugin-studio/plugin-studio.js","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./plugin-studio/plugin-studio.js\" integrity=\"sha384-N70Sfwq4XTc7BHosJDT1r9/qUrzr1NZ5DiLb3QUYST8vY7+quBQzytqcpOs4Rp1E\" crossorigin=\"anonymous\">\u003c/script>\n\u003cplugin-studio profile-config='{\"profile\":\"plugin-studio\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/plugin-studio>"},"instances":[{"id":"studio","title":"Plugin Studio — every element by capability 5 -> 1 (developer studio)","apiBaseUrl":"","props":{"profile":"plugin-studio","provider":"maplibre","instanceId":"plugin-studio","title":"Plugin Studio"},"element":"plugin-studio","iframeUrl":"./plugin-studio/plugin-studio/studio/index.html","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"prayer-walk-planner","scriptUrl":"./prayer-walk-planner/prayer-walk-planner.js","output":"doxa-maps/prayer-walk-planner/prayer-walk-planner.js","integrity":"sha384-VZxxlIqmR6mKdB1Dx6143LxEyI3POl9ks045yApFu4M4ZlLxsRH3+dCdEMpJb2Vw","elements":["prayer-walk-planner"],"profiles":[{"profile":"prayer-walk-planner","file":"prayer-walk-planner.vue","description":"A simple polygon-drawing tool for planning prayer-walking routes.","element":"prayer-walk-planner","type":"single","isMap":true,"iframeUrl":"./prayer-walk-planner/prayer-walk-planner/index.html","scriptUrl":"./prayer-walk-planner/prayer-walk-planner.js","embed":{"iframe":"\u003ciframe src=\"./prayer-walk-planner/prayer-walk-planner/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-VZxxlIqmR6mKdB1Dx6143LxEyI3POl9ks045yApFu4M4ZlLxsRH3+dCdEMpJb2Vw\" crossorigin=\"anonymous\">\u003c/script>\n\u003cprayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/prayer-walk-planner>"}}]},{"bundle":"regions-dashboard","scriptUrl":"./regions-dashboard/regions-dashboard.js","output":"doxa-maps/regions-dashboard/regions-dashboard.js","integrity":"sha384-RoZWPUL3T+FyJLUOTQeE4J5uxTPoVZvjY5WGeqbEa2BzvxO94uvsw5JVqc6cDid7","elements":["regions-dashboard"],"composes":["regions-dashboard/regions-list","regions-dashboard/region-dashboards"],"profiles":[{"profile":"region-dashboards","file":"region-dashboards.vue","description":"The dashboard half of the Driver's 2-tab Regions element: given a region (or a","element":"regions-dashboard","type":"single","isMap":true,"iframeUrl":"./regions-dashboard/region-dashboards/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-RoZWPUL3T+FyJLUOTQeE4J5uxTPoVZvjY5WGeqbEa2BzvxO94uvsw5JVqc6cDid7\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}},{"profile":"regions-list","file":"regions-list.vue","description":"A refactor of DX-life's /regions index page (app/pages/regions/index.vue) into","element":"regions-dashboard","type":"single","isMap":true,"iframeUrl":"./regions-dashboard/regions-list/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-RoZWPUL3T+FyJLUOTQeE4J5uxTPoVZvjY5WGeqbEa2BzvxO94uvsw5JVqc6cDid7\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}},{"profile":"regions-mfe","file":"regions-mfe.vue","description":"The composite the Driver asked for: ONE element carrying the SELECT VIEW switcher","element":"regions-dashboard","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./regions-dashboard/regions-mfe/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-RoZWPUL3T+FyJLUOTQeE4J5uxTPoVZvjY5WGeqbEa2BzvxO94uvsw5JVqc6cDid7\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}}]},{"bundle":"research-dashboard","scriptUrl":"./research-dashboard/research-dashboard.js","output":"doxa-maps/research-dashboard/research-dashboard.js","integrity":"sha384-WPEO/mTnyzh9q/ugpVcITzOMSb/eyKbgEekG6xyvtQ12NjTfq+VXNAqB0VIKCXmy","elements":["research-dashboard-map"],"profiles":[{"profile":"research-dashboard","file":"research-dashboard.vue","description":"Coordinated-Multiple-Views research dashboard for 10/40-window UPGs (live pray.doxa.life): docked facet rail + map-as-hero + linked table/charts, brushing-and-linking over one in-memory store.","element":"research-dashboard-map","type":"monolithic","isMap":true,"iframeUrl":"./research-dashboard/research-dashboard/index.html","scriptUrl":"./research-dashboard/research-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./research-dashboard/research-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-WPEO/mTnyzh9q/ugpVcITzOMSb/eyKbgEekG6xyvtQ12NjTfq+VXNAqB0VIKCXmy\" crossorigin=\"anonymous\">\u003c/script>\n\u003cresearch-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/research-dashboard-map>"},"bundle":"research-dashboard"}]},{"bundle":"research-map-plus-grid","scriptUrl":"./research-map-plus-grid/research-map-plus-grid.js","output":"doxa-maps/research-map-plus-grid/research-map-plus-grid.js","integrity":"sha384-LQYR+uASPJFjo/VTpIpAVxUv+O5KrgBqfOFYOcOi0ZmIvtwcjWTZV4AjAr2ewc7Z","elements":["research-map-plus-grid"],"composes":["doxa-research-map","people-groups-grid"],"profiles":[{"profile":"research-map-plus-grid","file":"research-map-plus-grid.vue","description":"The monolithic 7-tab research map (cap-3) on top, the People Groups grid beneath,","element":"research-map-plus-grid","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./research-map-plus-grid/research-map-plus-grid/index.html","scriptUrl":"./research-map-plus-grid/research-map-plus-grid.js","embed":{"iframe":"\u003ciframe src=\"./research-map-plus-grid/research-map-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./research-map-plus-grid/research-map-plus-grid.js\" integrity=\"sha384-LQYR+uASPJFjo/VTpIpAVxUv+O5KrgBqfOFYOcOi0ZmIvtwcjWTZV4AjAr2ewc7Z\" crossorigin=\"anonymous\">\u003c/script>\n\u003cresearch-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/research-map-plus-grid>"},"instances":[{"id":"default","title":"default","apiBaseUrl":"","props":{"profile":"research-map-plus-grid"},"element":"research-map-plus-grid","iframeUrl":"./research-map-plus-grid/research-map-plus-grid/default/index.html","embed":{"iframe":"\u003ciframe src=\"./research-map-plus-grid/research-map-plus-grid/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"stack-demo","scriptUrl":"./stack-demo/stack-demo.js","output":"doxa-maps/stack-demo/stack-demo.js","integrity":"sha384-EI3V6JX9ws4fGxKBzMOgwhG5de8MvL6va3zqmB2gTXecd/m0mxNq8eUht/SGzH1B","elements":["stack-demo"],"composes":["research-dashboard-map","people-groups-grid"],"profiles":[{"profile":"stack-demo","file":"stack-demo.vue","description":"Groups TWO independent elements TOP-TO-BOTTOM so you can embed the pair on a page and","element":"stack-demo","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./stack-demo/stack-demo/index.html","scriptUrl":"./stack-demo/stack-demo.js","embed":{"iframe":"\u003ciframe src=\"./stack-demo/stack-demo/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./stack-demo/stack-demo.js\" integrity=\"sha384-EI3V6JX9ws4fGxKBzMOgwhG5de8MvL6va3zqmB2gTXecd/m0mxNq8eUht/SGzH1B\" crossorigin=\"anonymous\">\u003c/script>\n\u003cstack-demo profile-config='{\"profile\":\"stack-demo\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/stack-demo>"},"instances":[{"id":"pair","title":"pair","apiBaseUrl":"","props":{"profile":"stack-demo"},"element":"stack-demo","iframeUrl":"./stack-demo/stack-demo/pair/index.html","embed":{"iframe":"\u003ciframe src=\"./stack-demo/stack-demo/pair/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"template-bundle","scriptUrl":"./template-bundle/template-bundle.js","output":"doxa-maps/template-bundle/template-bundle.js","integrity":"sha384-e6IcmUAvFTc057fmxLFzZmjVnt7Svy9M+S4gXgGbU9XgmssqVY1dwW5UkHI766a+","elements":["template-bundle"],"profiles":[{"profile":"template-map-a","file":"template-map-a.vue","description":"Minimal example profile A — a colored placeholder, no Mapbox or data.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-a/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-a/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-e6IcmUAvFTc057fmxLFzZmjVnt7Svy9M+S4gXgGbU9XgmssqVY1dwW5UkHI766a+\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-a\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"},{"profile":"template-map-b","file":"template-map-b.vue","description":"Minimal example profile B — a second profile in the same bundle.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-b/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-b/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-e6IcmUAvFTc057fmxLFzZmjVnt7Svy9M+S4gXgGbU9XgmssqVY1dwW5UkHI766a+\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-b\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"}]},{"bundle":"upg-neighbor","scriptUrl":"./upg-neighbor/upg-neighbor.js","output":"doxa-maps/upg-neighbor/upg-neighbor.js","integrity":"sha384-DVRFKBN7t+UQTjSwHz1FGzDSfgNRBA3e6WAeKCNn/9CUnzAtibMa1UG3X0Xqe7C/","elements":["upg-neighbor"],"profiles":[{"profile":"upg-neighbor","file":"upg-neighbor.vue","description":"Who goes to whom: reached neighbors matched to unreached people groups, five lenses","element":"upg-neighbor","type":"monolithic","isMap":true,"iframeUrl":"./upg-neighbor/upg-neighbor/index.html","scriptUrl":"./upg-neighbor/upg-neighbor.js","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-DVRFKBN7t+UQTjSwHz1FGzDSfgNRBA3e6WAeKCNn/9CUnzAtibMa1UG3X0Xqe7C/\" crossorigin=\"anonymous\">\u003c/script>\n\u003cupg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/upg-neighbor>"},"instances":[{"id":"send-map","title":"Send Map","apiBaseUrl":"","props":{"profile":"upg-neighbor","view":"send-map"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/send-map/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/send-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"upg-neighbors","title":"UPG Neighbors","apiBaseUrl":"","props":{"profile":"upg-neighbor","view":"cockpit"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/upg-neighbors/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/upg-neighbors/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"lang-cluster","title":"Language Clusters","apiBaseUrl":"","props":{"profile":"upg-neighbor","view":"lang-cluster"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/lang-cluster/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/lang-cluster/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"bloom-cockpit","title":"Bloom Cockpit","apiBaseUrl":"","props":{"profile":"upg-neighbor","view":"cockpit"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/bloom-cockpit/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/bloom-cockpit/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"flower-mesh","title":"Flower Mesh","apiBaseUrl":"","props":{"profile":"upg-neighbor","view":"flower-mesh"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/flower-mesh/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/flower-mesh/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"upg-neighbor"}]}]}; \n\n" + "script": "\n\n" }, "instances": [ {