diff --git a/internal/check-packet-render.mjs b/internal/check-packet-render.mjs index 6a0173efd..2291be92f 100644 --- a/internal/check-packet-render.mjs +++ b/internal/check-packet-render.mjs @@ -58,6 +58,24 @@ const lang = await page.evaluate(() => document.documentElement.lang || 'en') // the bug it is, and no other assertion here would notice. const RTL = new Set(['ar', 'he', 'fa', 'ur', 'ps', 'sd', 'yi']) const dir = await page.evaluate(() => document.documentElement.dir || 'ltr') +// SCRIPT FONT. Some languages need a face the system stack does not carry — Hindi +// renders as tofu boxes in Georgia/Palatino/serif. When the packet declares one, +// it must actually LOAD; a declared-but-failed @font-face is silent, and the page +// then prints as empty rectangles with every other assertion still green. +// +// ⚠ This asserts the FONT LOADED, not that glyphs are correct. A general tofu +// detector was attempted and abandoned: comparing shaped width against a missing +// font false-positives on every system-covered script (Cyrillic, CJK, Arabic all +// legitimately measure the same in both stacks), and an ink-profile heuristic +// scored CORRECTLY-RENDERED Devanagari the same as tofu, because its baseline bar +// gives a uniform column profile. A detector that blocks working packets is worse +// than none. Read the pixels for that; this covers the mechanical half. +const fontStatus = await page.evaluate(async () => { + await document.fonts.ready + const faces = [...document.fonts] + return { declared: faces.length, loaded: faces.filter((f) => f.status === 'loaded').length, + names: faces.map((f) => `${f.family}:${f.status}`) } +}) // The catalog sits beside the generator that produced this packet, so derive it // from the packet's own path rather than hardcoding a machine-specific location. const catalogPath = process.env.PACKET_STRINGS @@ -145,6 +163,10 @@ if (r.rhythms !== r.rhythmsTotal) fails.push(`only ${r.rhythms}/${r.rhythmsTotal if (!r.hasMark5) fails.push('Mark 5:1-20 is NOT printed in full (Driver requirement for point 4)') if (r.metacamp !== 2) fails.push(`${r.metacamp} metacamp.org attributions, expected exactly 2`) if (r.mapFaults.length) fails.push(`map: ${r.mapFaults.join('; ')}`) +if (fontStatus.declared && fontStatus.loaded !== fontStatus.declared) { + fails.push(`a declared @font-face did not load (${fontStatus.names.join(', ')}) — ` + + 'text in that script will print as empty boxes') +} if (RTL.has(lang) && dir !== 'rtl') fails.push(`lang="${lang}" is right-to-left but dir="${dir}"`) if (!RTL.has(lang) && dir === 'rtl') fails.push(`lang="${lang}" is not RTL but dir="rtl"`) if (translated === 0) { @@ -162,6 +184,7 @@ console.log(` Mark 5 in full : ${r.hasMark5}`) console.log(` metacamp.org : ${r.metacamp}`) console.log(` map : ${r.mapFaults.length ? r.mapFaults.join('; ') : 'palette resolves, not black'}`) console.log(` page size : ${boxes[0] ? boxes[0].join(' x ') : '?'} pt`) +console.log(` script font : ${fontStatus.declared ? fontStatus.names.join(', ') : 'system stack'}`) console.log(` language : ${lang} (dir=${dir}) (${r.rhythms}/${r.rhythmsTotal} rhythms in ${lang}` + `${translated === null ? '' : `, ${translated} strings translated`})`) diff --git a/internal/check-print-geometry.mjs b/internal/check-print-geometry.mjs new file mode 100644 index 000000000..7ce5df5c2 --- /dev/null +++ b/internal/check-print-geometry.mjs @@ -0,0 +1,95 @@ +// check-print-geometry — the THREE print paths must each produce their OWN page +// geometry, from the UPG-100 page, in JavaScript. +// +// Driver: "make sure poster generation works and the aspect ratio of the print +// dialog can be custom based on your print point, so print dialog works for +// poster, for vertical packet, and for horizontal cards... not using python but +// all working in the jamstack maps." +// +// One gate over all three because the failure they share is the same: a print +// path silently falling back to letter. Chromium does that SILENTLY for any +// @page size it does not recognise ('A6 portrait' -> 612x792pt, no error), so +// every assertion here is on the MEASURED MediaBox, never on the stylesheet. +// +// Usage: node internal/check-print-geometry.mjs +// PACKET_ORIGIN (default http://127.0.0.1:4898) — a static server over the repo root +import { chromium } from 'playwright' + +const ORIGIN = process.env.PACKET_ORIGIN || 'http://127.0.0.1:4898' +const API = process.env.PACKET_API || 'https://pray.doxa.life' +const ISO3 = process.env.PACKET_ISO3 || 'LAO' + +// Each path, its expected page in POINTS (72pt = 1in), and its orientation. +const PATHS = [ + { id: 'packet (vertical)', w: 612, h: 792, orient: 'portrait' }, + { id: 'cards (poker)', w: 180, h: 252, orient: 'portrait', stock: 'poker' }, + { id: 'cards (landscape)', w: 252, h: 180, orient: 'landscape', stock: 'pokerLandscape' }, + { id: 'poster', w: null, h: null, orient: 'portrait' }, // raster, not paginated +] + +const b = await chromium.launch() +const pg = await b.newPage({ viewport: { width: 1200, height: 900 } }) +const errs = []; pg.on('pageerror', (e) => errs.push(String(e).slice(0, 120))) +await pg.goto(ORIGIN + '/') + +const fails = [] +const line = (id, got, want) => console.log(` ${id.padEnd(20)} ${got}${want ? ` (want ${want})` : ''}`) + +// ── 1 + 2: the paginated paths, measured through page.pdf ──────────────────── +for (const p of PATHS.filter((x) => x.w)) { + const html = await pg.evaluate(async ({ ORIGIN, API, ISO3, stock }) => { + const norm = await import(`${ORIGIN}/plugin-designs/my-upg-100-list/data/normalize.js`) + const strings = await fetch(`${ORIGIN}/library/scripts/posters/packet-strings.json`).then((r) => r.json()) + const recs = norm.normalizeRecords(norm.extractRecords(await (await fetch( + `${API}/api/people-groups/list?fields=slug,name,country_code,population,religion,image_url,primary_language&lang=en`)).json())) + const groups = recs.filter((r) => String(r.country_code) === ISO3).slice(0, 6) + if (stock) { + const { createCardRenderer } = await import(`${ORIGIN}/library/packet/card-render.js`) + return createCardRenderer({ strings, lang: 'en', stock }).buildDeck({ id: 'x', label: 'X' }, groups) + } + const { createPacketRenderer } = await import(`${ORIGIN}/library/packet/packet-render.js`) + return createPacketRenderer({ strings, lang: 'en' }).buildPacket({ id: 'x', label: 'X' }, groups, new Map(), '') + }, { ORIGIN, API, ISO3, stock: p.stock }) + + await pg.setContent(html, { waitUntil: 'load' }) + await pg.waitForTimeout(1200) + const pdf = await pg.pdf({ preferCSSPageSize: true }) + const raw = pdf.toString('latin1') + const box = [...raw.matchAll(/MediaBox\s*\[\s*0\s+0\s+([\d.]+)\s+([\d.]+)\s*\]/g)].map((m) => [+m[1], +m[2]])[0] || [0, 0] + const [w, h] = box.map((v) => Math.round(v)) + line(p.id, `${w} x ${h} pt`, `${p.w} x ${p.h}`) + if (Math.abs(w - p.w) > 2 || Math.abs(h - p.h) > 2) { + fails.push(`${p.id}: page is ${w}x${h}pt, expected ${p.w}x${p.h}pt` + + (Math.abs(w - 612) < 2 && Math.abs(h - 792) < 2 && p.w !== 612 + ? ' — this is LETTER: the @page size silently fell back' : '')) + } + const landscape = w > h + if ((p.orient === 'landscape') !== landscape) { + fails.push(`${p.id}: orientation is ${landscape ? 'landscape' : 'portrait'}, expected ${p.orient}`) + } +} + +// ── 3: the poster, which rasterises rather than paginating ─────────────────── +const poster = await pg.evaluate(async ({ ORIGIN }) => { + const { rasterPoster, looksRendered } = await import(`${ORIGIN}/library/packet/poster-raster.js`) + const res = await fetch(`${ORIGIN}/library/scripts/posters/out/posters/laos.html`) + if (!res.ok) return { error: `poster HTML ${res.status}` } + const blob = await rasterPoster(await res.text(), { scale: 1 }) + const bmp = await createImageBitmap(blob) + return { w: bmp.width, h: bmp.height, ok: await looksRendered(blob), bytes: blob.size } +}, { ORIGIN }) +if (poster.error) fails.push(`poster: ${poster.error}`) +else { + line('poster', `${poster.w} x ${poster.h} px`, 'portrait, painted') + if (poster.w >= poster.h) fails.push(`poster rasterised ${poster.w}x${poster.h} — expected portrait`) + if (!poster.ok) fails.push('poster rasterised blank/black') +} + +await b.close() +if (errs.length) fails.push(`${errs.length} page error(s): ${errs[0]}`) +if (fails.length) { + console.error(`\nPRINT-GEOMETRY: FAIL — ${fails.length} problem(s)`) + for (const f of fails) console.error(' - ' + f) + process.exit(1) +} +console.log('\nPRINT-GEOMETRY: PASS — every print path produces its own page geometry.') diff --git a/library/data/countries.json b/library/data/countries.json new file mode 100644 index 000000000..88889ed20 --- /dev/null +++ b/library/data/countries.json @@ -0,0 +1,970 @@ +[ +{ +"value": "AFG", +"label": "Afghanistan" +}, +{ +"value": "ALB", +"label": "Albania" +}, +{ +"value": "DZA", +"label": "Algeria" +}, +{ +"value": "ASM", +"label": "American Samoa" +}, +{ +"value": "AND", +"label": "Andorra" +}, +{ +"value": "AGO", +"label": "Angola" +}, +{ +"value": "AIA", +"label": "Anguilla" +}, +{ +"value": "ATG", +"label": "Antigua and Barbuda" +}, +{ +"value": "ARG", +"label": "Argentina" +}, +{ +"value": "ARM", +"label": "Armenia" +}, +{ +"value": "ABW", +"label": "Aruba" +}, +{ +"value": "AUS", +"label": "Australia" +}, +{ +"value": "AUT", +"label": "Austria" +}, +{ +"value": "AZE", +"label": "Azerbaijan" +}, +{ +"value": "BHR", +"label": "Bahrain" +}, +{ +"value": "BGD", +"label": "Bangladesh" +}, +{ +"value": "BRB", +"label": "Barbados" +}, +{ +"value": "BLR", +"label": "Belarus" +}, +{ +"value": "BEL", +"label": "Belgium" +}, +{ +"value": "BLZ", +"label": "Belize" +}, +{ +"value": "BEN", +"label": "Benin" +}, +{ +"value": "BMU", +"label": "Bermuda" +}, +{ +"value": "BTN", +"label": "Bhutan" +}, +{ +"value": "BOL", +"label": "Bolivia" +}, +{ +"value": "BES", +"label": "Bonaire, Sint Eustatius, and Saba" +}, +{ +"value": "BIH", +"label": "Bosnia and Herzegovina" +}, +{ +"value": "BWA", +"label": "Botswana" +}, +{ +"value": "BRA", +"label": "Brazil" +}, +{ +"value": "BRN", +"label": "Brunei" +}, +{ +"value": "BGR", +"label": "Bulgaria" +}, +{ +"value": "BFA", +"label": "Burkina Faso" +}, +{ +"value": "BDI", +"label": "Burundi" +}, +{ +"value": "CPV", +"label": "Cabo Verde" +}, +{ +"value": "KHM", +"label": "Cambodia" +}, +{ +"value": "CMR", +"label": "Cameroon" +}, +{ +"value": "CAN", +"label": "Canada" +}, +{ +"value": "CYM", +"label": "Cayman Islands" +}, +{ +"value": "CAF", +"label": "Central African Republic" +}, +{ +"value": "TCD", +"label": "Chad" +}, +{ +"value": "CHL", +"label": "Chile" +}, +{ +"value": "CHN", +"label": "China" +}, +{ +"value": "CXR", +"label": "Christmas Island" +}, +{ +"value": "CCK", +"label": "Cocos (Keeling) Islands" +}, +{ +"value": "COL", +"label": "Colombia" +}, +{ +"value": "COM", +"label": "Comoros" +}, +{ +"value": "COK", +"label": "Cook Islands" +}, +{ +"value": "CRI", +"label": "Costa Rica" +}, +{ +"value": "CIV", +"label": "Côte d’Ivoire" +}, +{ +"value": "HRV", +"label": "Croatia" +}, +{ +"value": "CUB", +"label": "Cuba" +}, +{ +"value": "CUW", +"label": "Curaçao" +}, +{ +"value": "CYP", +"label": "Cyprus" +}, +{ +"value": "DNK", +"label": "Denmark" +}, +{ +"value": "DJI", +"label": "Djibouti" +}, +{ +"value": "DMA", +"label": "Dominica" +}, +{ +"value": "DOM", +"label": "Dominican Republic" +}, +{ +"value": "ECU", +"label": "Ecuador" +}, +{ +"value": "EGY", +"label": "Egypt" +}, +{ +"value": "SLV", +"label": "El Salvador" +}, +{ +"value": "GNQ", +"label": "Equatorial Guinea" +}, +{ +"value": "ERI", +"label": "Eritrea" +}, +{ +"value": "EST", +"label": "Estonia" +}, +{ +"value": "SWZ", +"label": "Eswatini" +}, +{ +"value": "ETH", +"label": "Ethiopia" +}, +{ +"value": "FLK", +"label": "Falkland Islands (Islas Malvinas)" +}, +{ +"value": "FRO", +"label": "Faroe Islands" +}, +{ +"value": "FJI", +"label": "Fiji" +}, +{ +"value": "FIN", +"label": "Finland" +}, +{ +"value": "FRA", +"label": "France" +}, +{ +"value": "GUF", +"label": "French Guiana" +}, +{ +"value": "PYF", +"label": "French Polynesia" +}, +{ +"value": "GAB", +"label": "Gabon" +}, +{ +"value": "GEO", +"label": "Georgia" +}, +{ +"value": "DEU", +"label": "Germany" +}, +{ +"value": "GHA", +"label": "Ghana" +}, +{ +"value": "GIB", +"label": "Gibraltar" +}, +{ +"value": "GRC", +"label": "Greece" +}, +{ +"value": "GRL", +"label": "Greenland" +}, +{ +"value": "GRD", +"label": "Grenada" +}, +{ +"value": "GLP", +"label": "Guadeloupe" +}, +{ +"value": "GUM", +"label": "Guam" +}, +{ +"value": "GTM", +"label": "Guatemala" +}, +{ +"value": "GGY", +"label": "Guernsey" +}, +{ +"value": "GIN", +"label": "Guinea" +}, +{ +"value": "GNB", +"label": "Guinea-Bissau" +}, +{ +"value": "GUY", +"label": "Guyana" +}, +{ +"value": "HTI", +"label": "Haiti" +}, +{ +"value": "HND", +"label": "Honduras" +}, +{ +"value": "HKG", +"label": "Hong Kong" +}, +{ +"value": "HUN", +"label": "Hungary" +}, +{ +"value": "ISL", +"label": "Iceland" +}, +{ +"value": "IND", +"label": "India" +}, +{ +"value": "IDN", +"label": "Indonesia" +}, +{ +"value": "IRN", +"label": "Iran" +}, +{ +"value": "IRQ", +"label": "Iraq" +}, +{ +"value": "IRL", +"label": "Ireland" +}, +{ +"value": "IMN", +"label": "Isle of Man" +}, +{ +"value": "ISR", +"label": "Israel" +}, +{ +"value": "ITA", +"label": "Italy" +}, +{ +"value": "JAM", +"label": "Jamaica" +}, +{ +"value": "JPN", +"label": "Japan" +}, +{ +"value": "JEY", +"label": "Jersey" +}, +{ +"value": "JOR", +"label": "Jordan" +}, +{ +"value": "KAZ", +"label": "Kazakhstan" +}, +{ +"value": "KEN", +"label": "Kenya" +}, +{ +"value": "KIR", +"label": "Kiribati" +}, +{ +"value": "KOS", +"label": "Kosovo" +}, +{ +"value": "KWT", +"label": "Kuwait" +}, +{ +"value": "KGZ", +"label": "Kyrgyzstan" +}, +{ +"value": "LAO", +"label": "Laos" +}, +{ +"value": "LVA", +"label": "Latvia" +}, +{ +"value": "LBN", +"label": "Lebanon" +}, +{ +"value": "LSO", +"label": "Lesotho" +}, +{ +"value": "LBR", +"label": "Liberia" +}, +{ +"value": "LBY", +"label": "Libya" +}, +{ +"value": "LIE", +"label": "Liechtenstein" +}, +{ +"value": "LTU", +"label": "Lithuania" +}, +{ +"value": "LUX", +"label": "Luxembourg" +}, +{ +"value": "MAC", +"label": "Macao" +}, +{ +"value": "MDG", +"label": "Madagascar" +}, +{ +"value": "MWI", +"label": "Malawi" +}, +{ +"value": "MYS", +"label": "Malaysia" +}, +{ +"value": "MLI", +"label": "Mali" +}, +{ +"value": "MLT", +"label": "Malta" +}, +{ +"value": "MTQ", +"label": "Martinique" +}, +{ +"value": "MRT", +"label": "Mauritania" +}, +{ +"value": "MUS", +"label": "Mauritius" +}, +{ +"value": "MYT", +"label": "Mayotte" +}, +{ +"value": "MEX", +"label": "Mexico" +}, +{ +"value": "MDA", +"label": "Moldova" +}, +{ +"value": "MCO", +"label": "Monaco" +}, +{ +"value": "MNG", +"label": "Mongolia" +}, +{ +"value": "MNE", +"label": "Montenegro" +}, +{ +"value": "MSR", +"label": "Montserrat" +}, +{ +"value": "MAR", +"label": "Morocco" +}, +{ +"value": "MOZ", +"label": "Mozambique" +}, +{ +"value": "MMR", +"label": "Myanmar" +}, +{ +"value": "NAM", +"label": "Namibia" +}, +{ +"value": "NRU", +"label": "Nauru" +}, +{ +"value": "NPL", +"label": "Nepal" +}, +{ +"value": "NCL", +"label": "New Caledonia" +}, +{ +"value": "NZL", +"label": "New Zealand" +}, +{ +"value": "NIC", +"label": "Nicaragua" +}, +{ +"value": "NER", +"label": "Niger" +}, +{ +"value": "NGA", +"label": "Nigeria" +}, +{ +"value": "NIU", +"label": "Niue" +}, +{ +"value": "NFK", +"label": "Norfolk Island" +}, +{ +"value": "PRK", +"label": "North Korea" +}, +{ +"value": "MKD", +"label": "North Macedonia" +}, +{ +"value": "NOR", +"label": "Norway" +}, +{ +"value": "OMN", +"label": "Oman" +}, +{ +"value": "PAK", +"label": "Pakistan" +}, +{ +"value": "PLW", +"label": "Palau" +}, +{ +"value": "PSE", +"label": "Palestine" +}, +{ +"value": "PAN", +"label": "Panama" +}, +{ +"value": "PNG", +"label": "Papua New Guinea" +}, +{ +"value": "PRY", +"label": "Paraguay" +}, +{ +"value": "PER", +"label": "Peru" +}, +{ +"value": "POL", +"label": "Poland" +}, +{ +"value": "PRT", +"label": "Portugal" +}, +{ +"value": "PRI", +"label": "Puerto Rico" +}, +{ +"value": "QAT", +"label": "Qatar" +}, +{ +"value": "REU", +"label": "Reunion" +}, +{ +"value": "ROU", +"label": "Romania" +}, +{ +"value": "RWA", +"label": "Rwanda" +}, +{ +"value": "BLM", +"label": "Saint Barthelemy" +}, +{ +"value": "SHN", +"label": "Saint Helena, Ascension, and Tristan da Cunha" +}, +{ +"value": "KNA", +"label": "Saint Kitts and Nevis" +}, +{ +"value": "LCA", +"label": "Saint Lucia" +}, +{ +"value": "MAF", +"label": "Saint Martin" +}, +{ +"value": "SPM", +"label": "Saint Pierre and Miquelon" +}, +{ +"value": "VCT", +"label": "Saint Vincent and the Grenadines" +}, +{ +"value": "WSM", +"label": "Samoa" +}, +{ +"value": "SMR", +"label": "San Marino" +}, +{ +"value": "STP", +"label": "Sao Tome and Principe" +}, +{ +"value": "SAU", +"label": "Saudi Arabia" +}, +{ +"value": "SEN", +"label": "Senegal" +}, +{ +"value": "SRB", +"label": "Serbia" +}, +{ +"value": "SYC", +"label": "Seychelles" +}, +{ +"value": "SLE", +"label": "Sierra Leone" +}, +{ +"value": "SGP", +"label": "Singapore" +}, +{ +"value": "SXM", +"label": "Sint Maarten" +}, +{ +"value": "SVK", +"label": "Slovakia" +}, +{ +"value": "SVN", +"label": "Slovenia" +}, +{ +"value": "SOM", +"label": "Somalia" +}, +{ +"value": "ZAF", +"label": "South Africa" +}, +{ +"value": "KOR", +"label": "South Korea" +}, +{ +"value": "SSD", +"label": "South Sudan" +}, +{ +"value": "ESP", +"label": "Spain" +}, +{ +"value": "LKA", +"label": "Sri Lanka" +}, +{ +"value": "SDN", +"label": "Sudan" +}, +{ +"value": "SUR", +"label": "Suriname" +}, +{ +"value": "SJM", +"label": "Svalbard" +}, +{ +"value": "SWE", +"label": "Sweden" +}, +{ +"value": "CHE", +"label": "Switzerland" +}, +{ +"value": "SYR", +"label": "Syria" +}, +{ +"value": "TWN", +"label": "Taiwan" +}, +{ +"value": "TJK", +"label": "Tajikistan" +}, +{ +"value": "TZA", +"label": "Tanzania" +}, +{ +"value": "THA", +"label": "Thailand" +}, +{ +"value": "BHS", +"label": "The Bahamas" +}, +{ +"value": "VGB", +"label": "the British Virgin Islands" +}, +{ +"value": "CZE", +"label": "the Czech Republic" +}, +{ +"value": "COD", +"label": "the Democratic Republic of the Congo" +}, +{ +"value": "FSM", +"label": "the Federated States of Micronesia" +}, +{ +"value": "GMB", +"label": "The Gambia" +}, +{ +"value": "MDV", +"label": "the Maldives" +}, +{ +"value": "MHL", +"label": "the Marshall Islands" +}, +{ +"value": "NLD", +"label": "the Netherlands" +}, +{ +"value": "MNP", +"label": "the Northern Mariana Islands" +}, +{ +"value": "PHL", +"label": "the Philippines" +}, +{ +"value": "PCN", +"label": "the Pitcairn Islands" +}, +{ +"value": "COG", +"label": "the Republic of the Congo" +}, +{ +"value": "RUS", +"label": "the Russian Federation" +}, +{ +"value": "SLB", +"label": "the Solomon Islands" +}, +{ +"value": "TCA", +"label": "the Turks and Caicos Islands" +}, +{ +"value": "ARE", +"label": "the United Arab Emirates" +}, +{ +"value": "GBR", +"label": "the United Kingdom" +}, +{ +"value": "USA", +"label": "the United States" +}, +{ +"value": "VIR", +"label": "the Virgin Islands" +}, +{ +"value": "TLS", +"label": "Timor-Leste" +}, +{ +"value": "TGO", +"label": "Togo" +}, +{ +"value": "TKL", +"label": "Tokelau" +}, +{ +"value": "TON", +"label": "Tonga" +}, +{ +"value": "TTO", +"label": "Trinidad and Tobago" +}, +{ +"value": "TUN", +"label": "Tunisia" +}, +{ +"value": "TUR", +"label": "Turkiye" +}, +{ +"value": "TKM", +"label": "Turkmenistan" +}, +{ +"value": "TUV", +"label": "Tuvalu" +}, +{ +"value": "UGA", +"label": "Uganda" +}, +{ +"value": "UKR", +"label": "Ukraine" +}, +{ +"value": "URY", +"label": "Uruguay" +}, +{ +"value": "UZB", +"label": "Uzbekistan" +}, +{ +"value": "VUT", +"label": "Vanuatu" +}, +{ +"value": "VAT", +"label": "Vatican City" +}, +{ +"value": "VEN", +"label": "Venezuela" +}, +{ +"value": "VNM", +"label": "Vietnam" +}, +{ +"value": "WLF", +"label": "Wallis and Futuna" +}, +{ +"value": "ESH", +"label": "Western Sahara" +}, +{ +"value": "YEM", +"label": "Yemen" +}, +{ +"value": "ZMB", +"label": "Zambia" +}, +{ +"value": "ZWE", +"label": "Zimbabwe" +} +] \ No newline at end of file diff --git a/library/packet/card-render.js b/library/packet/card-render.js index b5e0609ae..7593550c7 100644 --- a/library/packet/card-render.js +++ b/library/packet/card-render.js @@ -37,10 +37,17 @@ import { qrSvg } from './qr.js'; // sleeves and boxes are built around, and the one people already associate with a // deck you hold and deal out. Bleed is included in the page so a trimmed card // keeps its full-bleed portrait. +// ★ LANDSCAPE IS NOT JUST TRANSPOSED DIMENSIONS. The portrait card stacks the +// photo ABOVE the text (portrait occupies the top 46%); at 3.5 x 2.5in that same +// band is a strip too short to carry a face or leave room for the rows beneath it. +// A landscape card puts the photo BESIDE the text instead — so `side: true` is a +// LAYOUT switch the CSS reads, not a cosmetic flag. export const STOCK = { - poker: { w: 2.5, h: 3.5, label: 'Poker (2.5 x 3.5 in)' }, - postcard: { w: 4, h: 6, label: 'Postcard (4 x 6 in)' }, - a6: { w: 4.13, h: 5.83, label: 'A6 (105 x 148 mm)' }, // explicit in, NOT "A6" + poker: { w: 2.5, h: 3.5, label: 'Card 2.5 × 3.5 in' }, + pokerLandscape: { w: 3.5, h: 2.5, label: 'Card 3.5 × 2.5 in (landscape)', side: true }, + postcard: { w: 4, h: 6, label: 'Postcard 4 × 6 in' }, + postcardLandscape: { w: 6, h: 4, label: 'Postcard 6 × 4 in (landscape)', side: true }, + a6: { w: 4.13, h: 5.83, label: 'A6 105 × 148 mm' }, // explicit in, NOT "A6" }; const PX = 96; // CSS px per inch @@ -73,6 +80,10 @@ export function createCardRenderer({ strings, lang = 'en', stock = 'poker', const S = STOCK[stock] || STOCK.poker; const W = Math.round(S.w * PX); // card box in CSS px const H = Math.round(S.h * PX); + // Photo BESIDE the text rather than above it. Driven by the stock, not by + // comparing W to H: a square stock would be ambiguous, and the choice is a + // deliberate property of the format rather than an inference from its numbers. + const SIDE = S.side === true; // The live profile URL for this group, in this language. English has no prefix // (the generator's own rule); every other language does. @@ -93,26 +104,36 @@ export function createCardRenderer({ strings, lang = 'en', stock = 'poker', page-break-after:always;break-after:page} .card:last-child{page-break-after:auto;break-after:auto} - /* PORTRAIT: full-bleed across the top. A face is what makes this a prayer card - rather than a data tile — it is the largest thing on the card by design. */ - .ph{position:absolute;left:0;top:0;width:${W}px;height:${Math.round(H * 0.46)}px; - object-fit:cover;display:block;background:#ddd6c6} - .ph-none{position:absolute;left:0;top:0;width:${W}px;height:${Math.round(H * 0.46)}px; - background:linear-gradient(160deg,#e6dfcd,#cfc6ad);display:flex; - align-items:center;justify-content:center; + /* THE PHOTO. Portrait: full-bleed across the TOP, the largest thing on the card + by design — a face is what makes this a prayer card rather than a data tile. + Landscape: full-bleed down the LEFT instead, because a 46% band on a 2.5in-tall + card is a strip too short to carry a face AND leave room for the rows. */ + .ph,.ph-none{position:absolute;left:0;top:0;display:block; + width:${SIDE ? Math.round(W * 0.42) : W}px; + height:${SIDE ? H : Math.round(H * 0.46)}px} + .ph{object-fit:cover;background:#ddd6c6} + .ph-none{background:linear-gradient(160deg,#e6dfcd,#cfc6ad);display:flex; + align-items:center;justify-content:center;text-align:center;padding:6px; font:italic 11px Georgia,serif;color:#8c8170} /* A soft scrim under the name so it stays legible over any photo. */ - .scrim{position:absolute;left:0;top:${Math.round(H * 0.30)}px;width:${W}px; - height:${Math.round(H * 0.16)}px; + .scrim{position:absolute;left:0; + width:${SIDE ? Math.round(W * 0.42) : W}px; + top:${SIDE ? Math.round(H * 0.58) : Math.round(H * 0.30)}px; + height:${SIDE ? Math.round(H * 0.42) : Math.round(H * 0.16)}px; background:linear-gradient(to bottom,rgba(24,22,18,0),rgba(24,22,18,.72))} - .nm{position:absolute;left:14px;right:14px;top:${Math.round(H * 0.355)}px; - font:700 19px Georgia,serif;color:#fff;line-height:1.05; + .nm{position:absolute; + left:${SIDE ? 10 : 14}px; + ${SIDE ? `width:${Math.round(W * 0.42) - 20}px;` : `right:14px;`} + top:${SIDE ? Math.round(H * 0.74) : Math.round(H * 0.355)}px; + font:700 ${SIDE ? 15 : 19}px Georgia,serif;color:#fff;line-height:1.05; text-shadow:0 1px 3px rgba(0,0,0,.5)} - .nm.long{font-size:15px} + .nm.long{font-size:${SIDE ? 12 : 15}px} - .body{position:absolute;left:14px;right:14px;top:${Math.round(H * 0.48)}px; - bottom:${Math.round(H * 0.20)}px;overflow:hidden} + .body{position:absolute;right:14px;overflow:hidden; + left:${SIDE ? Math.round(W * 0.42) + 12 : 14}px; + top:${SIDE ? 12 : Math.round(H * 0.48)}px; + bottom:${SIDE ? Math.round(H * 0.30) : Math.round(H * 0.20)}px} .row{display:flex;gap:6px;font:400 9.5px Georgia,serif;line-height:1.5;margin-bottom:1px} .k{color:#8c8170;min-width:52px;flex:0 0 auto} .v{color:#3b3a34;font-weight:600} @@ -120,7 +141,8 @@ export function createCardRenderer({ strings, lang = 'en', stock = 'poker', /* FOOTER: the QR is the card's whole reason to survive the day it is handed over — it carries the reader to the live profile in their own language. */ - .ft{position:absolute;left:14px;right:14px;bottom:10px; + .ft{position:absolute;right:14px;bottom:10px; + left:${SIDE ? Math.round(W * 0.42) + 12 : 14}px; display:flex;align-items:flex-end;gap:8px} .qr{flex:0 0 auto;line-height:0} .ftx{flex:1 1 auto;min-width:0} diff --git a/library/packet/packet-render.js b/library/packet/packet-render.js index 3931dbd5f..6e22c1499 100644 --- a/library/packet/packet-render.js +++ b/library/packet/packet-render.js @@ -26,7 +26,23 @@ // so a new Arabic-script locale is one entry here and not a schema change. const RTL = new Set(['ar', 'he', 'fa', 'ur', 'ps', 'sd', 'yi']); -export function createPacketRenderer({ strings, lang = 'en' }) { +// Scripts with no coverage in the packet's Georgia/Palatino/serif stack, mapped to +// the vendored face that does cover them. MEASURED by rendering each script at 48px +// and reading the PIXELS: Latin, Cyrillic, Arabic and CJK all shape correctly with +// system fonts; DEVANAGARI renders as tofu boxes. +// ⚠ A width heuristic got this exactly backwards — it reported Arabic and Chinese +// broken and Hindi fine, because Devanagari tofu boxes happen to match real glyph +// advance. Never infer glyph coverage from measurements; look at the pixels. +const SCRIPT_FONT = { + hi: { family: 'Noto Serif Devanagari', dir: 'noto-serif-devanagari', + file: 'noto-serif-devanagari-400-devanagari.woff2' }, + mr: { family: 'Noto Serif Devanagari', dir: 'noto-serif-devanagari', + file: 'noto-serif-devanagari-400-devanagari.woff2' }, // Marathi, same script + ne: { family: 'Noto Serif Devanagari', dir: 'noto-serif-devanagari', + file: 'noto-serif-devanagari-400-devanagari.woff2' }, // Nepali, same script +}; + +export function createPacketRenderer({ strings, lang = 'en', fontData = null }) { const EN = strings.en; const L = strings[lang] || {}; const t = (k) => (L[k] !== undefined ? L[k] : EN[k]); @@ -56,8 +72,28 @@ export function createPacketRenderer({ strings, lang = 'en' }) { const sheet = (inner, cls = '') => `
${inner}
`; + // The script font for THIS language, if it needs one. `fontData` is a base64 + // woff2 the caller supplies: the packet must stay a SELF-CONTAINED file that + // prints offline (the Node generator writes standalone HTML with no server, and + // photos are already inlined for the same reason), so a URL would break exactly + // where the packet is most used. Absent fontData, the rule is simply omitted and + // the stack falls back to serif — a legible wrong font beats a broken document. + const SF = SCRIPT_FONT[lang] || null; + const fontFace = (SF && fontData) + ? `@font-face{font-family:'${SF.family}';font-style:normal;font-weight:400;` + + `font-display:swap;src:url(data:font/woff2;base64,${fontData}) format('woff2')}` + : ''; + // Prepend the script face to EVERY element's stack in one rule rather than + // editing 22 hardcoded Georgia declarations. The browser falls through per + // CHARACTER, so Latin text in a Hindi packet still renders in Georgia. + const scriptStack = SF + ? `.sheet,.sheet *{font-family:'${SF.family}',Georgia,'Palatino Linotype',serif !important}` + : ''; + function css() { return ` + ${fontFace} + ${scriptStack} @page{size:letter portrait;margin:0} html,body{margin:0;background:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact} .sheet{position:relative;width:${W}px;height:${H}px;background:#f7f4ec;overflow:hidden; diff --git a/library/scripts/posters/packet-strings.json b/library/scripts/posters/packet-strings.json index 125a4b3e2..2778e9343 100644 --- a/library/scripts/posters/packet-strings.json +++ b/library/scripts/posters/packet-strings.json @@ -4,7 +4,7 @@ "how_to_translate": "Copy the \"en\" block, change the key to the ISO code, translate the values. Keep {placeholders} exactly as they are — they are substituted at render time. Do not translate scripture REFERENCES (book names are resolved by the reader's own Bible); DO translate the prayer text.", "note_on_scripture": "point4_passage is the ONLY full scripture text in the packet (Mark 5:1-20, printed in full at the Driver's instruction). A translation MUST supply its own rendering in a public-domain or properly-licensed version FOR THAT LANGUAGE. ⚠ Do NOT translate it yourself and do NOT leave a machine rendering in place: this is printed scripture in a prayer packet. A language block that omits point4_passage falls back to the English WEB text per-key, which is honest — an untrusted translation of Mark 5 is not.", "note_on_references": "Scripture REFERENCES (Matthew 27:27, Mark 5:1-20) are deliberately left in English in every language block, so a reader can look them up in their own Bible regardless of the packet's language. ⚠ MEASURED TRADEOFF, not an oversight: on a rendered French page the English book names are visibly foreign next to fully-translated prayer text. If a language wants localised book names, add a `books` map to that block and teach the renderer to use it — do NOT translate the refs inline, because the same strings identify the passage for any future lookup.", - "note_on_scripts": "MEASURED 2026-09-24 by rendering each script at 48px and READING THE PIXELS: Latin, Cyrillic (ru), Arabic (ar) and CJK (zh) all shape correctly in the packet's Georgia/serif stack. DEVANAGARI (hi) renders as TOFU BOXES — this box has zero Devanagari fonts installed (fc-list). So hi is BLOCKED on vendoring a Devanagari font (e.g. Noto Serif Devanagari) into public/assets/fonts and adding it to the packet's font stack; adding a hi block before then would ship a page of empty rectangles. ⚠ A WIDTH HEURISTIC GOT THIS BACKWARDS: comparing rendered advance against a missing-font baseline reported ar and zh as broken and hi as fine — the exact opposite of the truth, because Devanagari tofu boxes happen to match real glyph advance. Read the pixels.", + "note_on_scripts": "ALL 11 app locales now ship. Script coverage MEASURED by rendering at 48px and READING THE PIXELS: Latin, Cyrillic (ru), Arabic (ar) and CJK (zh) shape correctly with the system Georgia/Palatino/serif stack. DEVANAGARI (hi) does NOT — it renders as tofu boxes — so Noto Serif Devanagari is vendored (OFL) and base64-INLINED into hi packets by the renderer's SCRIPT_FONT map. Inlined, not linked, because a packet is a standalone file that must print offline; ~165KB on a 3.5MB packet, and only for that language. mr and ne map to the same face.\n⚠ TWO MEASUREMENTS LIED ABOUT THIS, so do not automate it cheaply: (1) comparing shaped width against a missing font reported ar and zh BROKEN and hi FINE — exactly backwards, because Devanagari tofu boxes match real glyph advance; (2) an ink-column-profile heuristic scored CORRECTLY-RENDERED Devanagari the same as tofu (3 vs 2 distinct heights), because its baseline bar gives a uniform profile. check:packet-render therefore asserts only that a DECLARED @font-face LOADED — the mechanical half — and leaves glyph correctness to a human reading a screenshot. A detector that blocks working packets is worse than none.", "note_on_rtl": "ar is right-to-left. The renderer emits dir on from an RTL set (packet-render.js), and scripture REFERENCES are wrapped in dir=ltr + unicode-bidi:isolate. Without that isolation the bidi algorithm reorders a reference that STARTS WITH A DIGIT: '1 Peter 5:6-11' rendered as 'Peter 5:6-11 1'. Note the reference LIST then reads right-to-left on an RTL page (first item rightmost) — that is correct for an RTL reader, not a defect." }, "en": { @@ -1430,5 +1430,321 @@ ] } ] + }, + "hi": { + "map_page_kicker": "अनछुए जनसमूह", + "map_page_sub": "{count} अनछुए जनसमूहों की प्रार्थना सूची", + "list_header": "{count} में से {from}–{to} · उनके नाम लेकर प्रार्थना करें", + "people_suffix": "लोग", + "no_photo": "कोई चित्र उपलब्ध नहीं", + "deck_title": "प्रार्थना कार्ड", + "card_country": "देश", + "card_population": "जनसंख्या", + "card_language": "भाषा", + "card_religion": "धर्म", + "card_cta": "उनके लिए प्रार्थना करें", + "points_title": "12 प्रार्थना बिंदु", + "points_intro": "परमेश्वर के साथ एक घंटा, हर बिंदु के लिए पाँच मिनट। इस पैकेट के जनसमूहों के लिए ये बारह बिंदु प्रार्थना करें।", + "points_attrib": "प्रार्थना लय Metacamp से प्रेरित · metacamp.org", + "wheel_title": "प्रार्थना चक्र", + "wheel_intro": "परमेश्वर के साथ एक घंटा बिताना? यह आपके सोचने से आसान है। इसे 5 मिनट के हिस्सों में बाँटें और हर हिस्से में इनमें से एक पर ध्यान दें।", + "wheel_minutes": "मिनट", + "wheel_attrib": "प्रार्थना चक्र · Metacamp मॉड्यूल 1 · metacamp.org", + "privacy_note": "चिह्नों की स्थिति अनुमानित है · गोपनीयता के लिए जनसमूहों के स्थान स्रोत पर सामान्यीकृत किए गए हैं", + "rhythms": { + "praise": "स्तुति", + "wait": "प्रतीक्षा", + "confess": "अंगीकार", + "read": "वचन पढ़ना", + "ask": "माँगना", + "intercede": "मध्यस्थता", + "pray_word": "वचन से प्रार्थना", + "thank": "धन्यवाद", + "sing": "गायन", + "meditate": "मनन", + "listen": "सुनना", + "praise_end": "स्तुति" + }, + "points": [ + { + "n": 1, + "rhythm": "praise", + "sub": "दो क्रूसों का सुसमाचार", + "text": "कि वे मसीह को राजा मानकर ग्रहण करें, उसके क्रूस से क्षमा पाएँ — और अपना क्रूस उठाएँ, सताव के क्षेत्र में दुख उठाने को तैयार। मेम्ने को उसके दुख का प्रतिफल मिले, मुझसे आरंभ करके।", + "refs": [ + "Matthew 27:27", + "Matthew 16:24–25" + ] + }, + { + "n": 2, + "rhythm": "wait", + "sub": "पवित्र आत्मा और छुटकारा", + "text": "कि वे आत्मा से भरें और साहसी गवाह बनें; अकेले न रहें; जल और आत्मा से बपतिस्मा पाएँ; बुराई की हर पकड़ टूट जाए। कि पड़ोसी जातियों के विश्वासी मज़दूरों के रूप में उठ खड़े हों।", + "refs": [ + "Acts 1:8", + "John 14:26" + ] + }, + { + "n": 3, + "rhythm": "confess", + "sub": "", + "text": "हम इस अविश्वास को मानते हैं कि यह परमेश्वर के लिए बहुत बड़ा है। कि वह संसार के अनछुए लोगों के लिए हमारे प्रेम और विश्वास को फिर से जगाए।", + "refs": [ + "John 3:16", + "1 John 1:9" + ] + }, + { + "n": 4, + "rhythm": "read", + "sub": "पिता का प्रेम", + "text": "कि वे उद्धार पाएँ और जानें कि उनका स्वर्गीय पिता उनसे प्रेम करता है — और उनके द्वारा वह उनके परिवार, मित्रों, पड़ोसियों, सहकर्मियों, सहपाठियों, उन सबके पास उद्धार पहुँचाए जिन्हें वे व्यक्तिगत रूप से जानते हैं।", + "refs": [ + "Mark 5:1–20", + "Acts 16:31" + ], + "print_passage": true + }, + { + "n": 5, + "rhythm": "ask", + "sub": "बपतिस्मा", + "text": "स्थानीय लोगों में नए बपतिस्मा हों, और हर बपतिस्मा पाया हुआ व्यक्ति दूसरों को बपतिस्मा देने के लिए प्रशिक्षित हो, और यह बढ़ता जाए।", + "refs": [ + "Acts 16", + "Acts 10" + ] + }, + { + "n": 6, + "rhythm": "intercede", + "sub": "मज़दूर और चरवाहे", + "text": "मज़दूर भेजे जाएँ जो उस जाति से गहरा प्रेम करें जिससे वे कभी नहीं मिले; और भीतर से अच्छे चरवाहे उठाए जाएँ।", + "refs": [ + "Luke 10:2", + "John 10:11–15" + ] + }, + { + "n": 7, + "rhythm": "pray_word", + "sub": "शांति के जन और घर", + "text": "कि मज़दूर और स्थानीय अगुवे ग्रहणशील व्यक्ति और शांति के घर को पाएँ, और उन्हें भली भाँति चेला बनाएँ।", + "refs": [ + "Luke 10:5–7", + "Matthew 10:5–14" + ] + }, + { + "n": 8, + "rhythm": "thank", + "sub": "विश्राम", + "text": "परमेश्वर का धन्यवाद कि उसने विश्राम दिया है; कि वे मसीह में उस विश्राम में प्रवेश करें, और उनका आत्मिक परिवार एक सुरक्षित स्थान हो।", + "refs": [ + "Mark 4:26–29", + "Hebrews 4:9–11" + ] + }, + { + "n": 9, + "rhythm": "sing", + "sub": "", + "text": "कि वह जनसमूह आराधकों से भर जाए — हर जगह आराधना, स्वतंत्रता में और बेड़ियों में भी।", + "refs": [ + "Acts 16:25–26", + "Colossians 3:16" + ] + }, + { + "n": 10, + "rhythm": "meditate", + "sub": "प्रभु भोज", + "text": "कि वे मिलकर प्रभु भोज लें और उसकी मृत्यु, गाड़े जाने और पुनरुत्थान के भार को समझें।", + "refs": [ + "Matthew 26:26–30", + "1 Corinthians 11:23–26" + ] + }, + { + "n": 11, + "rhythm": "listen", + "sub": "जवाबदेही", + "text": "केवल यह नहीं कि वे सुनें, परन्तु यह कि उनके जीवन में ऐसे लोग हों जो उन्हें वचन पढ़ने, प्रार्थना करने, संगति में लगे रहने और दुख का सही उत्तर देने में सहायता करें — उस शत्रु का सामना करते हुए जो सारे संसार में विश्वासियों के पीछे पड़ा है।", + "refs": [ + "1 Peter 5:6–11", + "Hebrews 10:24–25" + ] + }, + { + "n": 12, + "rhythm": "praise_end", + "sub": "महान · और महान · सबसे महान", + "text": "पहले से स्तुति — उद्धार के लिए; और महान, बढ़ते हुए आत्मिक परिवारों के लिए; सबसे महान, समर्पित जीवनों और उठाए गए स्थानीय कलीसिया-रोपकों के लिए जो पूरे जनसमूह में स्वस्थ कलीसियाएँ बढ़ाते हैं, चाहे मूल्य कुछ भी हो।", + "refs": [ + "Acts 2:42–47", + "Matthew 28:19–20" + ] + } + ] + }, + "zh": { + "map_page_kicker": "未得之民", + "map_page_sub": "為 {count} 個未得之民的禱告名單", + "list_header": "{count} 之中的 {from}–{to} · 按名為他們禱告", + "people_suffix": "人", + "no_photo": "沒有照片", + "deck_title": "禱告卡", + "card_country": "國家", + "card_population": "人口", + "card_language": "語言", + "card_religion": "宗教", + "card_cta": "為他們禱告", + "points_title": "12 個禱告要點", + "points_intro": "與神同在一小時,每個要點五分鐘。為這份禱告冊中的族群禱告這十二個要點。", + "points_attrib": "禱告節奏取材自 Metacamp · metacamp.org", + "wheel_title": "禱告輪", + "wheel_intro": "與神同在一小時?比你想的容易。把它分成五分鐘一段,每一段專注其中一個要點。", + "wheel_minutes": "分鐘", + "wheel_attrib": "禱告輪 · Metacamp 第一單元 · metacamp.org", + "privacy_note": "標記位置為概略位置 · 族群所在地已於資料來源處作概化處理以保護隱私", + "rhythms": { + "praise": "讚美", + "wait": "等候", + "confess": "認罪", + "read": "讀神的話", + "ask": "祈求", + "intercede": "代禱", + "pray_word": "以神的話禱告", + "thank": "感謝", + "sing": "歌唱", + "meditate": "默想", + "listen": "聆聽", + "praise_end": "讚美" + }, + "points": [ + { + "n": 1, + "rhythm": "praise", + "sub": "兩個十字架的福音", + "text": "願他們接受基督為王,藉著祂的十字架得赦免——也背起自己的十字架,甘願在逼迫之地受苦。願羔羊得著祂受苦的賞賜,從我開始。", + "refs": [ + "Matthew 27:27", + "Matthew 16:24–25" + ] + }, + { + "n": 2, + "rhythm": "wait", + "sub": "聖靈與釋放", + "text": "願他們被聖靈充滿,成為剛強的見證人;不至孤單;受水和聖靈的洗;一切邪惡的轄制都被打破。願鄰近族群中的信徒被興起作工人。", + "refs": [ + "Acts 1:8", + "John 14:26" + ] + }, + { + "n": 3, + "rhythm": "confess", + "sub": "", + "text": "我們承認自己的不信,以為這事對神太難。願祂重新點燃我們對普世未得之民的愛與信心。", + "refs": [ + "John 3:16", + "1 John 1:9" + ] + }, + { + "n": 4, + "rhythm": "read", + "sub": "天父的愛", + "text": "願他們得救,並知道天父愛他們——也願神藉著他們,把救恩帶給他們的家人、朋友、鄰舍、同事、同學,以及他們所認識的每一個人。", + "refs": [ + "Mark 5:1–20", + "Acts 16:31" + ], + "print_passage": true + }, + { + "n": 5, + "rhythm": "ask", + "sub": "洗禮", + "text": "願當地有新的受洗者,並且每一位受洗的人都被裝備去為別人施洗,不斷繁增。", + "refs": [ + "Acts 16", + "Acts 10" + ] + }, + { + "n": 6, + "rhythm": "intercede", + "sub": "工人與牧人", + "text": "願工人被差派去深愛一群素未謀面的人;也願好牧人從他們中間被興起。", + "refs": [ + "Luke 10:2", + "John 10:11–15" + ] + }, + { + "n": 7, + "rhythm": "pray_word", + "sub": "平安之子與平安之家", + "text": "願工人與當地帶領者尋得那樂意接待的人和平安之家,並好好門訓他們。", + "refs": [ + "Luke 10:5–7", + "Matthew 10:5–14" + ] + }, + { + "n": 8, + "rhythm": "thank", + "sub": "安息", + "text": "感謝神所賜的安息;願他們在基督裡進入那安息,也願他們的屬靈家庭是安全的地方。", + "refs": [ + "Mark 4:26–29", + "Hebrews 4:9–11" + ] + }, + { + "n": 9, + "rhythm": "sing", + "sub": "", + "text": "願這族群充滿敬拜者——處處敬拜,在自由中,也在捆鎖中。", + "refs": [ + "Acts 16:25–26", + "Colossians 3:16" + ] + }, + { + "n": 10, + "rhythm": "meditate", + "sub": "聖餐", + "text": "願他們一同領受聖餐,深深體會祂的死、埋葬與復活的份量。", + "refs": [ + "Matthew 26:26–30", + "1 Corinthians 11:23–26" + ] + }, + { + "n": 11, + "rhythm": "listen", + "sub": "彼此守望", + "text": "不只願他們聆聽,更願他們身邊有人幫助他們讀神的話、禱告、委身群體,並在苦難中正確回應——抵擋那在全世界追逼信徒的仇敵。", + "refs": [ + "1 Peter 5:6–11", + "Hebrews 10:24–25" + ] + }, + { + "n": 12, + "rhythm": "praise_end", + "sub": "大 · 更大 · 最大", + "text": "先行讚美——為著得救的人;更大的,為著不斷繁增的屬靈家庭;最大的,為著獻上的生命,以及被興起的本地植堂者,無論代價如何,都在整個族群中繁增健康的教會。", + "refs": [ + "Acts 2:42–47", + "Matthew 28:19–20" + ] + } + ] } } \ No newline at end of file diff --git a/library/scripts/posters/packet.mjs b/library/scripts/posters/packet.mjs index 29a53e0e0..51e602a1b 100644 --- a/library/scripts/posters/packet.mjs +++ b/library/scripts/posters/packet.mjs @@ -74,7 +74,30 @@ const fill = (s, vars) => String(s).replace(/\{(\w+)\}/g, (_, k) => (vars[k] ?? // the SAME packet from the SAME code. Changing a page here changes it in both. const { createPacketRenderer } = await import( join(__dirname, '..', '..', 'packet', 'packet-render.js')); -const R = createPacketRenderer({ strings: STRINGS, lang: LANG }); +// SCRIPT FONT, inlined. Some languages need a face the system stack does not +// carry — Hindi renders as tofu boxes in Georgia/Palatino/serif. The packet is a +// standalone file meant to print offline, so the font is base64'd INTO it rather +// than linked, exactly as the photos are. Absent, the renderer omits the rule and +// falls back to serif rather than failing. +const SCRIPT_FONT_FILE = { + hi: 'noto-serif-devanagari/noto-serif-devanagari-400-devanagari.woff2', + mr: 'noto-serif-devanagari/noto-serif-devanagari-400-devanagari.woff2', + ne: 'noto-serif-devanagari/noto-serif-devanagari-400-devanagari.woff2', +}; +let fontData = null; +const fontRel = SCRIPT_FONT_FILE[LANG]; +if (fontRel) { + const fp = join(__dirname, '..', '..', '..', 'public', 'assets', 'fonts', fontRel); + if (existsSync(fp)) { + fontData = readFileSync(fp).toString('base64'); + } else { + // Loud, not silent: a missing font here means the packet prints as empty + // rectangles, which looks like a content bug rather than a missing asset. + console.warn(`[packet] ⚠ ${LANG} needs ${fontRel} and it is MISSING — ` + + 'the packet will render as tofu boxes. Vendor the font first.'); + } +} +const R = createPacketRenderer({ strings: STRINGS, lang: LANG, fontData }); const { mapPage, listPages, pointsPage, wheelPage, css, mapCss, PER_PAGE, W, H } = R; // ── DATA ──────────────────────────────────────────────────────────────────── diff --git a/library/utils/countries-meta.js b/library/utils/countries-meta.js new file mode 100644 index 000000000..3517fb89a --- /dev/null +++ b/library/utils/countries-meta.js @@ -0,0 +1,283 @@ +// countries-meta.js — a PORT of DX-life's config/countries-meta.ts (326 lines), the rollup +// source of truth behind /regions, /regions/ and /regions/. +// +// WHY IT IS HERE AND NOT IN THE PLUGIN FOLDER: two named consumers already had their own +// copy of this grouping logic — plugin-designs/regions-dashboard/regions-list.vue (tab 1) +// and .../region-dashboards.vue (tab 2). Two copies of a rollup is two chances for the +// region page and the dashboard to disagree about the same number, which is exactly the +// failure this file's own header warns about on their side ("the region totals, the +// per-country rows and the map's in-region pins all agree"). +// +// WHAT CHANGED IN THE PORT, and nothing else: +// * TypeScript -> JavaScript. The interfaces become JSDoc; no logic was rewritten. +// * `import { COUNTRIES } from '../app/utils/countries'` becomes library/data/countries.json, +// which is their same 242-entry {value,label} array in their order. +// Everything else — slugify's replace chain, FULL_PRAYER_COVERAGE_COUNT, addToStats's +// conditions, fitView's WORLD_DIM/VIEW_W/VIEW_H/MAX_ZOOM/MIN_ZOOM/NEIGHBOUR_PADDING, +// lngExtent's largest-gap walk, WORLD_VIEW, and both sort orders — is theirs verbatim. +// +// THE TWO THINGS THE OLD COPIES GOT WRONG, both fixed by porting rather than patching: +// 1. They slugged a country from `g.name`, the LOCALIZED label off the API. Theirs slugs +// from the canonical ENGLISH name (ENGLISH_NAME_BY_CODE), deliberately: their comment +// says "a French page is still /fr/regions/india, not /fr/regions/inde". Since our +// dashboard writes the slug into the URL hash, the old behaviour made a deep link +// locale-dependent and so different from theirs. +// 2. They dropped center/zoom/bounds entirely ("minus the map bounds/zoom"), so our maps +// derived their own frame. Theirs computes a fit view per country AND per region. + +import COUNTRIES from '../data/countries.json' + +/** Fields requested from the prayer API's people-groups list for these summaries. */ +export const PEOPLE_GROUP_LIST_FIELDS = 'country_code,wagf_region,latitude,longitude,population,adopted_by_churches,people_committed,engagement_status' + +/** A people group counts as fully covered once this many people commit to daily prayer. */ +export const FULL_PRAYER_COVERAGE_COUNT = 100 + +/** + * @typedef {Object} PeopleGroupLite + * @property {{value:string,label:string}|null} [country_code] + * @property {{value:string,label:string}|null} [wagf_region] + * @property {string|number|null} [latitude] + * @property {string|number|null} [longitude] + * @property {string|number|null} [population] + * @property {number|null} [adopted_by_churches] + * @property {string|number|null} [people_committed] + * @property {{value:string,label:string}|null} [engagement_status] + */ + +/** + * Map bounds [[west, south], [east, north]] framing a set of pins. East may exceed 180 when + * the box crosses the antimeridian (e.g. Oceania), which Mapbox accepts as a continuous + * longitude range. + * @typedef {[[number,number],[number,number]]} MapBounds + */ + +/** + * Progress figures shared by country and region summaries: count (people groups), population, + * adopted (by >=1 church), engaged (engagement_status 'engaged'), withPrayer (>=1 committed), + * withFullPrayer (>=FULL_PRAYER_COVERAGE_COUNT), peopleCommitted (the total). + * @typedef {{count:number,population:number,adopted:number,engaged:number,withPrayer:number,withFullPrayer:number,peopleCommitted:number}} ProgressStats + */ + +// ISO-3 -> canonical English name, the basis for slugs. Sourced from the same country list +// the rest of the app uses so slugs stay consistent and locale-independent (a French page is +// still /fr/regions/india, not /fr/regions/inde). +const ENGLISH_NAME_BY_CODE = new Map(COUNTRIES.map(c => [c.value, c.label])) + +export function slugify(name) { + return String(name || '') + .normalize('NFD').replace(/[̀-ͯ]/g, '') // strip diacritics + .toLowerCase() + .replace(/['’.]/g, '') // drop apostrophes / periods (Côte d'Ivoire -> cote-divoire) + .replace(/&/g, ' and ') + .replace(/[^a-z0-9]+/g, '-') // any run of non-alphanumerics -> single hyphen + .replace(/^-+|-+$/g, '') // trim leading/trailing hyphens +} + +// Slug for a country code. Prefers the canonical English name; falls back to a provided +// label (and finally the raw code) for any code not in the master list. +export function countrySlug(code, fallbackLabel) { + return slugify(ENGLISH_NAME_BY_CODE.get(code) || fallbackLabel || code) +} + +// Slug for a WAGF region. Derived from the stable value rather than the localized label so +// every locale shares one URL (e.g. "middle_east" -> "middle-east"). No region -> "other". +export function regionSlug(value) { + return slugify(value) || 'other' +} + +// EXPORTED BEYOND THEIR SURFACE — the only two, and why. Theirs keeps toNumber and +// emptyStats module-private because their pages never need a cross-region total: DX-life has +// no "all regions" view. Ours does, because the no-selection chooser is one of the two +// sanctioned additions, and it needs a zero accumulator (emptyStats) to roll every region up +// and a coordinate parser (toNumber) for the map's points array. Nothing else is added, and +// no logic differs. +export function toNumber(value) { + const n = typeof value === 'string' ? parseFloat(value) : (value ?? 0) + return Number.isNaN(n) ? 0 : n +} + +export function emptyStats() { + return { count: 0, population: 0, adopted: 0, engaged: 0, withPrayer: 0, withFullPrayer: 0, peopleCommitted: 0 } +} + +function addToStats(stats, p) { + const committed = toNumber(p.people_committed) + stats.count++ + stats.population += toNumber(p.population) + if ((p.adopted_by_churches ?? 0) > 0) stats.adopted++ + if (p.engagement_status?.value === 'engaged') stats.engaged++ + if (committed > 0) stats.withPrayer++ + if (committed >= FULL_PRAYER_COVERAGE_COUNT) stats.withFullPrayer++ + stats.peopleCommitted += committed +} + +function addPin(bounds, p) { + const lat = typeof p.latitude === 'string' ? parseFloat(p.latitude) : p.latitude + const lng = typeof p.longitude === 'string' ? parseFloat(p.longitude) : p.longitude + if (lat != null && lng != null && !Number.isNaN(lat) && !Number.isNaN(lng)) { + bounds.lats.push(lat) + bounds.lngs.push(lng) + } +} + +function round(n) { + return Math.round(n * 100) / 100 +} + +// Web-Mercator latitude in radians, used by the fit-bounds zoom math. +function latRad(lat) { + const s = Math.sin((lat * Math.PI) / 180) + return Math.log((1 + s) / (1 - s)) / 2 +} + +// Compute a map center + zoom that frames the given bounding box. Zooms out slightly beyond +// a tight fit so surrounding countries remain in view (the whole point of the country page's +// map). The viewport dimensions are an approximation of the map slot; exact framing isn't +// important because the map keeps its own pan/zoom controls. +function fitView(minLng, minLat, maxLng, maxLat) { + const WORLD_DIM = 512 + const VIEW_W = 1000 + const VIEW_H = 560 + const MAX_ZOOM = 6 + const MIN_ZOOM = 1.6 + const NEIGHBOUR_PADDING = 0.6 // zoom out this much so neighbours stay visible + + const latFraction = Math.max((latRad(maxLat) - latRad(minLat)) / Math.PI, 1e-6) + let lngDiff = maxLng - minLng + if (lngDiff < 0) lngDiff += 360 + const lngFraction = Math.max(lngDiff / 360, 1e-6) + + const latZoom = Math.log2(VIEW_H / WORLD_DIM / latFraction) + const lngZoom = Math.log2(VIEW_W / WORLD_DIM / lngFraction) + + let zoom = Math.min(latZoom, lngZoom, MAX_ZOOM) - NEIGHBOUR_PADDING + zoom = Math.max(MIN_ZOOM, Math.min(zoom, MAX_ZOOM)) + + return { + center: [round((minLng + maxLng) / 2), round((minLat + maxLat) / 2)], + zoom: round(zoom), + } +} + +// Longitude extent covering all pins along the shortest arc: sorts the longitudes, finds the +// largest gap between neighbours (including the wrap-around gap past 180), and spans +// everything else. When the extent crosses the antimeridian the east edge exceeds 180 so the +// range stays continuous. +function lngExtent(lngs) { + const sorted = [...lngs].sort((a, b) => a - b) + const last = sorted.length - 1 + let gapStart = last + let maxGap = sorted[0] + 360 - sorted[last] + for (let i = 0; i < last; i++) { + const gap = sorted[i + 1] - sorted[i] + if (gap > maxGap) { + maxGap = gap + gapStart = i + } + } + if (gapStart === last) return [sorted[0], sorted[last]] + return [sorted[gapStart + 1], sorted[gapStart] + 360] +} + +// Default whole-world view for a set of records with no coordinates. +const WORLD_VIEW = { center: [20, 10], zoom: 1.8, bounds: null } + +function viewFor(pins) { + if (pins.lats.length === 0) return WORLD_VIEW + const [west, east] = lngExtent(pins.lngs) + const south = Math.min(...pins.lats) + const north = Math.max(...pins.lats) + return { ...fitView(west, south, east, north), bounds: [[west, south], [east, north]] } +} + +/** + * Group people-group records into one summary per country, sorted by name. + * @param {PeopleGroupLite[]} posts + */ +export function summarizeCountries(posts) { + const groups = new Map() + + for (const p of posts) { + const code = p.country_code?.value + if (!code) continue + + let g = groups.get(code) + if (!g) { + g = { name: p.country_code.label, region: { value: '', label: '' }, pins: { lats: [], lngs: [] }, stats: emptyStats() } + groups.set(code, g) + } + // A few records carry no region; the country takes the first region seen. + if (!g.region.value && p.wagf_region?.value) g.region = p.wagf_region + addToStats(g.stats, p) + addPin(g.pins, p) + } + + const out = [] + for (const [code, g] of groups) { + const view = viewFor(g.pins) + out.push({ + slug: countrySlug(code, g.name), + code, + name: g.name, + region: g.region, + center: view.center, + zoom: view.zoom, + bounds: view.bounds, + ...g.stats, + }) + } + + out.sort((a, b) => a.name.localeCompare(b.name)) + return out +} + +/** + * Group people-group records into one summary per WAGF region, sorted by label. Each people + * group rolls up under its country's region, so the region totals, the per-country rows and + * the map's in-region pins all agree. + * @param {PeopleGroupLite[]} posts + */ +export function summarizeRegions(posts) { + const countries = summarizeCountries(posts) + const regionSlugByCountry = new Map(countries.map(c => [c.code, regionSlug(c.region.value)])) + + const groups = new Map() + + for (const c of countries) { + const slug = regionSlugByCountry.get(c.code) + let g = groups.get(slug) + if (!g) { + g = { value: c.region.value, label: c.region.label, countries: [], pins: { lats: [], lngs: [] }, stats: emptyStats() } + groups.set(slug, g) + } + g.countries.push(c) + } + + for (const p of posts) { + const code = p.country_code?.value + if (!code) continue + const g = groups.get(regionSlugByCountry.get(code)) + addToStats(g.stats, p) + addPin(g.pins, p) + } + + const out = [] + for (const [slug, g] of groups) { + const view = viewFor(g.pins) + out.push({ + slug, + value: g.value, + label: g.label, + countryCount: g.countries.length, + center: view.center, + zoom: view.zoom, + bounds: view.bounds, + countries: g.countries, + ...g.stats, + }) + } + + out.sort((a, b) => a.label.localeCompare(b.label)) + return out +} diff --git a/package.json b/package.json index 492bf8414..f97bad1cf 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "build:unlocked": "bun run gates:pre && bun run library-index && bun run check:library-index && bun run clean && bun run token && bun run build:bundles && bun run tree && bun run gates:post && bun run gallery", "check:card-deck": "node internal/check-card-deck.mjs", "check:poster-raster": "node internal/check-poster-raster.mjs", + "check:print-geometry": "node internal/check-print-geometry.mjs", "check:packet-browser": "node internal/check-packet-browser.mjs", "check:packet-render": "node internal/check-packet-render.mjs", "check:template-literal": "node internal/template-literal-check.mjs", diff --git a/plugin-designs/my-upg-100-list/poster-wall.vue b/plugin-designs/my-upg-100-list/poster-wall.vue index b5378eb50..097b60b8e 100644 --- a/plugin-designs/my-upg-100-list/poster-wall.vue +++ b/plugin-designs/my-upg-100-list/poster-wall.vue @@ -271,9 +271,16 @@ const exportState = ref(null) // { label, phase, message, pct, kind } // is what commercial card printers, sleeves and boxes are built around. // @page takes these as explicit inches — a NAMED size silently falls back to letter // in Chromium, which is the exact bug this deck is being fixed for. +// Both orientations, because the Driver asked for "horizontal cards" as well as +// vertical ones. A landscape stock is not merely transposed: the renderer moves +// the photo BESIDE the text, since a 46%-height band on a 2.5in-tall card is too +// short to carry a face. The labels come from the renderer's own STOCK table so +// this list cannot drift from what the renderer actually supports. const DECK_STOCKS = [ { id: 'poker', label: 'Card 2.5 × 3.5 in' }, + { id: 'pokerLandscape', label: 'Card 3.5 × 2.5 in (landscape)' }, { id: 'postcard', label: 'Postcard 4 × 6 in' }, + { id: 'postcardLandscape', label: 'Postcard 6 × 4 in (landscape)' }, { id: 'a6', label: 'A6 105 × 148 mm' }, ] const deckStock = ref('poker') diff --git a/plugin-designs/regions-dashboard/region-dashboards.vue b/plugin-designs/regions-dashboard/region-dashboards.vue index 1d37f4efc..9094df262 100644 --- a/plugin-designs/regions-dashboard/region-dashboards.vue +++ b/plugin-designs/regions-dashboard/region-dashboards.vue @@ -40,6 +40,7 @@ import { splitLastWord } from './src/useLastWordHighlight.js' // order its CVD separation was validated in — the legend must render in it for that to hold. import { PALETTE as REGION_PALETTE, WAGF_REGIONS, REGION_ORDER } from '@map/colors/wagf-region.js' import RegionCountryMap from './src/RegionCountryMap.vue' +import { summarizeRegions, slugify, emptyStats, toNumber, PEOPLE_GROUP_LIST_FIELDS } from '@map/utils/countries-meta.js' const props = defineProps({ profileConfig: { type: String, default: '' }, @@ -118,85 +119,9 @@ const sel = ref({ // A SUPERSET of tab 1's list: name + slug are added for the map popups and the country // people-group list. Every ROLLUP field is unchanged, so the two tabs still roll up // identically -- the extra fields are read by the map, never by addToStats(). -const FIELDS = 'name,slug,country_code,wagf_region,latitude,longitude,population,adopted_by_churches,people_committed,engagement_status' - -function toNumber(v) { - const n = typeof v === 'string' ? parseFloat(v) : (v ?? 0) - return Number.isNaN(n) ? 0 : n -} - -function slugify(name) { - return String(name || '') - .normalize('NFD').replace(/[\u0300-\u036f]/g, '') - .toLowerCase() - .replace(/['\u2019.]/g, '') - .replace(/&/g, ' and ') - .replace(/[^a-z0-9]+/g, '-') - .replace(/^-+|-+$/g, '') -} - -const FULL_PRAYER_COVERAGE_COUNT = 100 - -function emptyStats() { - return { count: 0, population: 0, adopted: 0, engaged: 0, withPrayer: 0, withFullPrayer: 0, peopleCommitted: 0 } -} - -function addToStats(stats, p) { - const committed = toNumber(p.people_committed) - stats.count++ - stats.population += toNumber(p.population) - if ((p.adopted_by_churches ?? 0) > 0) stats.adopted++ - if (p.engagement_status?.value === 'engaged') stats.engaged++ - if (committed > 0) stats.withPrayer++ - if (committed >= FULL_PRAYER_COVERAGE_COUNT) stats.withFullPrayer++ - stats.peopleCommitted += committed -} - -function summarizeRegions(posts) { - const countryGroups = new Map() - for (const p of posts) { - const code = p.country_code?.value - if (!code) continue - let g = countryGroups.get(code) - if (!g) { - g = { name: p.country_code.label, region: { value: '', label: '' }, stats: emptyStats() } - countryGroups.set(code, g) - } - if (!g.region.value && p.wagf_region?.value) g.region = p.wagf_region - addToStats(g.stats, p) - } - - const countries = [] - for (const [code, g] of countryGroups) { - countries.push({ slug: slugify(g.name) || slugify(code) || code.toLowerCase(), code, name: g.name, region: g.region, ...g.stats }) - } - countries.sort((a, b) => a.name.localeCompare(b.name)) - - const regionSlugByCountry = new Map(countries.map((c) => [c.code, slugify(c.region.value) || 'other'])) - const regionGroups = new Map() - for (const c of countries) { - const slug = regionSlugByCountry.get(c.code) - let g = regionGroups.get(slug) - if (!g) { - g = { value: c.region.value, label: c.region.label, countries: [], stats: emptyStats() } - regionGroups.set(slug, g) - } - g.countries.push(c) - } - for (const p of posts) { - const code = p.country_code?.value - if (!code) continue - const g = regionGroups.get(regionSlugByCountry.get(code)) - if (g) addToStats(g.stats, p) - } - - const out = [] - for (const [slug, g] of regionGroups) { - out.push({ slug, value: g.value, label: g.label, countryCount: g.countries.length, countries: g.countries, ...g.stats }) - } - out.sort((a, b) => (a.label || 'Other').localeCompare(b.label || 'Other')) - return out -} +// Their PEOPLE_GROUP_LIST_FIELDS plus the two this tab's map needs (name, slug) — derived +// from the shared list so the two can never drift apart. +const FIELDS = 'name,slug,' + PEOPLE_GROUP_LIST_FIELDS function formatNumber(n) { // THEIRS, RegionDetail.vue:16: `n.toLocaleString(`${locale.value}-u-nu-latn`)` — locale diff --git a/plugin-designs/regions-dashboard/regions-list.vue b/plugin-designs/regions-dashboard/regions-list.vue index 726213d4c..c05b54179 100644 --- a/plugin-designs/regions-dashboard/regions-list.vue +++ b/plugin-designs/regions-dashboard/regions-list.vue @@ -39,6 +39,7 @@ import { useRegionsI18n } from './src/useRegionsI18n.js' import { RTL_LOCALES } from '@map/i18n/index.js' import { useI18n } from 'vue-i18n' import { useDocumentFont, BEBAS_NEUE_FACES, POPPINS_FACES } from '@map/composables/useDocumentFont.js' +import { summarizeRegions, slugify, emptyStats, toNumber, PEOPLE_GROUP_LIST_FIELDS } from '@map/utils/countries-meta.js' const props = defineProps({ profileConfig: { type: String, default: '' }, @@ -108,91 +109,15 @@ const loading = ref(true) const loadFailed = ref(false) // ── same field list the source page's PEOPLE_GROUP_LIST_FIELDS asks for ───── -const FIELDS = 'country_code,wagf_region,latitude,longitude,population,adopted_by_churches,people_committed,engagement_status' - -function toNumber(v) { - const n = typeof v === 'string' ? parseFloat(v) : (v ?? 0) - return Number.isNaN(n) ? 0 : n -} - -function slugify(name) { - return String(name || '') - .normalize('NFD').replace(/[\u0300-\u036f]/g, '') // strip combining diacritics - .toLowerCase() - .replace(/['\u2019.]/g, '') // drop apostrophes / periods - .replace(/&/g, ' and ') - .replace(/[^a-z0-9]+/g, '-') - .replace(/^-+|-+$/g, '') -} - -const FULL_PRAYER_COVERAGE_COUNT = 100 - -function emptyStats() { - return { count: 0, population: 0, adopted: 0, engaged: 0, withPrayer: 0, withFullPrayer: 0, peopleCommitted: 0 } -} - -function addToStats(stats, p) { - const committed = toNumber(p.people_committed) - stats.count++ - stats.population += toNumber(p.population) - if ((p.adopted_by_churches ?? 0) > 0) stats.adopted++ - if (p.engagement_status?.value === 'engaged') stats.engaged++ - if (committed > 0) stats.withPrayer++ - if (committed >= FULL_PRAYER_COVERAGE_COUNT) stats.withFullPrayer++ - stats.peopleCommitted += committed -} - -// Group people-group records into one summary per country, then roll countries up into one -// summary per WAGF region — same two-pass shape as countries-meta.ts's summarizeCountries() + -// summarizeRegions(), minus the map bounds/zoom (this element has no map). -function summarizeRegions(posts) { - const countryGroups = new Map() - for (const p of posts) { - const code = p.country_code?.value - if (!code) continue - let g = countryGroups.get(code) - if (!g) { - g = { name: p.country_code.label, region: { value: '', label: '' }, stats: emptyStats() } - countryGroups.set(code, g) - } - if (!g.region.value && p.wagf_region?.value) g.region = p.wagf_region - addToStats(g.stats, p) - } - - const countries = [] - for (const [code, g] of countryGroups) { - countries.push({ slug: slugify(g.name) || slugify(code) || code.toLowerCase(), code, name: g.name, region: g.region, ...g.stats }) - } - countries.sort((a, b) => a.name.localeCompare(b.name)) - - const regionSlugByCountry = new Map(countries.map((c) => [c.code, slugify(c.region.value) || 'other'])) - const regionGroups = new Map() - for (const c of countries) { - const slug = regionSlugByCountry.get(c.code) - let g = regionGroups.get(slug) - if (!g) { - g = { value: c.region.value, label: c.region.label, countries: [], stats: emptyStats() } - regionGroups.set(slug, g) - } - g.countries.push(c) - } - for (const p of posts) { - const code = p.country_code?.value - if (!code) continue - const g = regionGroups.get(regionSlugByCountry.get(code)) - if (g) addToStats(g.stats, p) - } - - const out = [] - for (const [slug, g] of regionGroups) { - out.push({ slug, value: g.value, label: g.label, countryCount: g.countries.length, countries: g.countries, ...g.stats }) - } - out.sort((a, b) => (a.label || 'Other').localeCompare(b.label || 'Other')) - return out -} +// Their PEOPLE_GROUP_LIST_FIELDS, imported rather than restated — one list, one source. +const FIELDS = PEOPLE_GROUP_LIST_FIELDS function formatNumber(n) { - return Number(n || 0).toLocaleString('en-US') + // Theirs, RegionDetail.vue:16: n.toLocaleString(`${locale}-u-nu-latn`) — locale grouping + // separators with Latin digits. Hardcoding en-US made de/fr/es wrong (they group with '.' + // or a thin space). Same fix already applied in region-dashboards.vue. + const v = Number(n || 0) + try { return v.toLocaleString(`${i18nLocale.value || 'en'}-u-nu-latn`) } catch (_) { return v.toLocaleString('en-US') } } function summaryLine(region) { diff --git a/public/assets/fonts/noto-serif-devanagari/LICENSE b/public/assets/fonts/noto-serif-devanagari/LICENSE new file mode 100644 index 000000000..cd2cc5c94 --- /dev/null +++ b/public/assets/fonts/noto-serif-devanagari/LICENSE @@ -0,0 +1,93 @@ +Copyright 2022 The Noto Project Authors (https://github.com/notofonts/devanagari) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/assets/fonts/noto-serif-devanagari/README.md b/public/assets/fonts/noto-serif-devanagari/README.md new file mode 100644 index 000000000..68253f5db --- /dev/null +++ b/public/assets/fonts/noto-serif-devanagari/README.md @@ -0,0 +1,24 @@ +# Noto Serif Devanagari — the Devanagari subset only + +**Why vendored:** the prayer packet's font stack is Georgia / Palatino Linotype / +serif, none of which carry Devanagari. Measured by rendering Devanagari at 48px +and READING THE PIXELS, Hindi came out as **tofu boxes** — this machine has zero +Devanagari fonts (`fc-list`). A `hi` translation without this file would ship a +page of empty rectangles. + +**Licence:** SIL Open Font License 1.1 (see `LICENSE`). Free to bundle and serve. + +**Subset:** `U+0900-097F` plus the Devanagari extensions Google's own subsetting +selects — the *devanagari* range ONLY, matching how `poppins/` ships `latin` and +`latin-ext` separately so a page downloads only what it needs. 124 KB, against +6-8 KB for a Latin subset; that is the cost of the script's glyph count, and it +loads only on a Hindi packet. + +**Source:** the woff2 Google Fonts serves for +`Noto+Serif+Devanagari:wght@400;700` with a modern browser UA. Note the 400 and +700 faces resolve to the SAME file — it is a variable font, so one file covers +both weights and vendoring two would duplicate 124 KB for nothing. + +To refresh: request that CSS with a Chrome user-agent (without one Google serves +unsubsetted TTF), take the `@font-face` block whose `unicode-range` contains +`U+0900`, and download its woff2. diff --git a/public/assets/fonts/noto-serif-devanagari/noto-serif-devanagari-400-devanagari.woff2 b/public/assets/fonts/noto-serif-devanagari/noto-serif-devanagari-400-devanagari.woff2 new file mode 100644 index 000000000..713584ed3 Binary files /dev/null and b/public/assets/fonts/noto-serif-devanagari/noto-serif-devanagari-400-devanagari.woff2 differ diff --git a/public/doxa-maps/assets/fonts/noto-serif-devanagari/LICENSE b/public/doxa-maps/assets/fonts/noto-serif-devanagari/LICENSE new file mode 100644 index 000000000..cd2cc5c94 --- /dev/null +++ b/public/doxa-maps/assets/fonts/noto-serif-devanagari/LICENSE @@ -0,0 +1,93 @@ +Copyright 2022 The Noto Project Authors (https://github.com/notofonts/devanagari) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/doxa-maps/assets/fonts/noto-serif-devanagari/README.md b/public/doxa-maps/assets/fonts/noto-serif-devanagari/README.md new file mode 100644 index 000000000..68253f5db --- /dev/null +++ b/public/doxa-maps/assets/fonts/noto-serif-devanagari/README.md @@ -0,0 +1,24 @@ +# Noto Serif Devanagari — the Devanagari subset only + +**Why vendored:** the prayer packet's font stack is Georgia / Palatino Linotype / +serif, none of which carry Devanagari. Measured by rendering Devanagari at 48px +and READING THE PIXELS, Hindi came out as **tofu boxes** — this machine has zero +Devanagari fonts (`fc-list`). A `hi` translation without this file would ship a +page of empty rectangles. + +**Licence:** SIL Open Font License 1.1 (see `LICENSE`). Free to bundle and serve. + +**Subset:** `U+0900-097F` plus the Devanagari extensions Google's own subsetting +selects — the *devanagari* range ONLY, matching how `poppins/` ships `latin` and +`latin-ext` separately so a page downloads only what it needs. 124 KB, against +6-8 KB for a Latin subset; that is the cost of the script's glyph count, and it +loads only on a Hindi packet. + +**Source:** the woff2 Google Fonts serves for +`Noto+Serif+Devanagari:wght@400;700` with a modern browser UA. Note the 400 and +700 faces resolve to the SAME file — it is a variable font, so one file covers +both weights and vendoring two would duplicate 124 KB for nothing. + +To refresh: request that CSS with a Chrome user-agent (without one Google serves +unsubsetted TTF), take the `@font-face` block whose `unicode-range` contains +`U+0900`, and download its woff2. diff --git a/public/doxa-maps/assets/fonts/noto-serif-devanagari/noto-serif-devanagari-400-devanagari.woff2 b/public/doxa-maps/assets/fonts/noto-serif-devanagari/noto-serif-devanagari-400-devanagari.woff2 new file mode 100644 index 000000000..713584ed3 Binary files /dev/null and b/public/doxa-maps/assets/fonts/noto-serif-devanagari/noto-serif-devanagari-400-devanagari.woff2 differ diff --git a/public/doxa-maps/index.html b/public/doxa-maps/index.html index e59d54e83..4c33792f4 100644 --- a/public/doxa-maps/index.html +++ b/public/doxa-maps/index.html @@ -130,7 +130,7 @@ header.top .sub { margin-top: 3px; font: 12px/1.4 var(--sans); color: var(--mut) + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":21,"profileCount":32,"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-cqk7oshuPW5FdnbZ/DyfBBXN2FObAI+V1jrbxmZR2xzNiBtWG65PETQ5/w5PCDB2","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-cqk7oshuPW5FdnbZ/DyfBBXN2FObAI+V1jrbxmZR2xzNiBtWG65PETQ5/w5PCDB2\" 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-v0b+aZ7TBxmgUIBBLdKEm6HzwjY3jAGyOFNsKeKCKY4EIRpiWRTcNLavAitHRt8h","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-v0b+aZ7TBxmgUIBBLdKEm6HzwjY3jAGyOFNsKeKCKY4EIRpiWRTcNLavAitHRt8h\" 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-tNig8gXdCocWVKD5iXR6iRqiAr7msWFtcFKzYif0L0G5i/RM+HI+SO8oR5c6O+5R","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-tNig8gXdCocWVKD5iXR6iRqiAr7msWFtcFKzYif0L0G5i/RM+HI+SO8oR5c6O+5R\" 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-tNig8gXdCocWVKD5iXR6iRqiAr7msWFtcFKzYif0L0G5i/RM+HI+SO8oR5c6O+5R\" 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-tNig8gXdCocWVKD5iXR6iRqiAr7msWFtcFKzYif0L0G5i/RM+HI+SO8oR5c6O+5R\" 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-kbTr53oyqrMpgr620HR4W8vLXxT4Ulo5EeCoHebbMjGns5rwNvJP2BLuPyo5XVJj","elements":["country-posters-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-kbTr53oyqrMpgr620HR4W8vLXxT4Ulo5EeCoHebbMjGns5rwNvJP2BLuPyo5XVJj\" 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-kbTr53oyqrMpgr620HR4W8vLXxT4Ulo5EeCoHebbMjGns5rwNvJP2BLuPyo5XVJj\" 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>"}}]},{"bundle":"dashboard-plus-grid","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","output":"doxa-maps/dashboard-plus-grid/dashboard-plus-grid.js","integrity":"sha384-YbJgljynZ4t3/Ro44oHQy9ihl9/5o7j4IKts8MNRfA73Cb5cyD7U52DklXjzpLpG","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-YbJgljynZ4t3/Ro44oHQy9ihl9/5o7j4IKts8MNRfA73Cb5cyD7U52DklXjzpLpG\" 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-QiUJUgeFn27tiHKVhAYtJuIWo+1z5xsCUP1Nj4m1H4cFUV3vUA7ADTP58Ky3oVtQ","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-QiUJUgeFn27tiHKVhAYtJuIWo+1z5xsCUP1Nj4m1H4cFUV3vUA7ADTP58Ky3oVtQ\" 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-Ce+DKsLgwfej+rgoWeaWFuMMbR3Y4H+8io/lVL+lQfX0O3iGKwDLf4remDkHGCrP","elements":["doxa-maps-spa"],"composes":["bp-big-picture","doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-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-Ce+DKsLgwfej+rgoWeaWFuMMbR3Y4H+8io/lVL+lQfX0O3iGKwDLf4remDkHGCrP\" 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":"DX-Maps SPA — Big Picture + every research map (app-shell)","apiBaseUrl":"","props":{"profile":"doxa-maps-spa","provider":"maplibre","instanceId":"doxa-maps-spa-app","title":"DX-Maps"},"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-oecoezttPmpRe5GNG/Yko6IkEbtLjCD7PD7qghU1ZigprnfLKhbf0eBEiEbE24iR","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-oecoezttPmpRe5GNG/Yko6IkEbtLjCD7PD7qghU1ZigprnfLKhbf0eBEiEbE24iR\" 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-hzEui48BqpW8VhRthz3daMgAdw4w4M3gtBre4ce4sXuAmS+39pMRW9reNAvpFb+W","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-hzEui48BqpW8VhRthz3daMgAdw4w4M3gtBre4ce4sXuAmS+39pMRW9reNAvpFb+W\" 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-4pOAnuuOovcKXSQANV9jnLu1ExxiwQMuC4aU5MtAsd959tYmdUj05u4tT57Z/rKI","elements":["gospel-resources-map"],"profiles":[{"profile":"charts","file":"charts.vue","description":"The gap by LANGUAGE (ISO 639-3) rather than by people group — because one translation serves every","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-4pOAnuuOovcKXSQANV9jnLu1ExxiwQMuC4aU5MtAsd959tYmdUj05u4tT57Z/rKI\" 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":"Two validated tables: what resources exist per people group, and whether that access is keeping","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-4pOAnuuOovcKXSQANV9jnLu1ExxiwQMuC4aU5MtAsd959tYmdUj05u4tT57Z/rKI\" 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":"resources-list","file":"resources-list.vue","description":"Which DX people groups have scripture in their own language, and which have none. The zero-resource","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-4pOAnuuOovcKXSQANV9jnLu1ExxiwQMuC4aU5MtAsd959tYmdUj05u4tT57Z/rKI\" 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":"Every country shaded by how much of its unengaged population has NO gospel resource in their own","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-4pOAnuuOovcKXSQANV9jnLu1ExxiwQMuC4aU5MtAsd959tYmdUj05u4tT57Z/rKI\" 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-cs9Yz6dE0cp2ChVeNB9btNOXrqNk+xl0r4374AkMHRiEW7x+u3wlLDBv9TU469Ra","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\" action that","element":"my-upg-100-list-map","type":"single","isMap":true,"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-cs9Yz6dE0cp2ChVeNB9btNOXrqNk+xl0r4374AkMHRiEW7x+u3wlLDBv9TU469Ra\" 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-cs9Yz6dE0cp2ChVeNB9btNOXrqNk+xl0r4374AkMHRiEW7x+u3wlLDBv9TU469Ra\" 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-cs9Yz6dE0cp2ChVeNB9btNOXrqNk+xl0r4374AkMHRiEW7x+u3wlLDBv9TU469Ra\" 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-ss5PmeSkKuxafBwvxZG3r7roP0OB/oVGwFbfrHnydEhjbtrlB4eisdsPXEyCJF37","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-ss5PmeSkKuxafBwvxZG3r7roP0OB/oVGwFbfrHnydEhjbtrlB4eisdsPXEyCJF37\" 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-2RlLFRU2XdjBN7w+FPguj8INgj57JFg4IFT2AmdefGnR9QQLehbiiAffV45LcsFH","elements":["plugin-studio"],"composes":["bp-big-picture","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-2RlLFRU2XdjBN7w+FPguj8INgj57JFg4IFT2AmdefGnR9QQLehbiiAffV45LcsFH\" 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-F0+r4avX8xkXp0hBpU5EBPU0InMRCObIn2Ieh9HJNn1r2amk8/qHmJ68WuNfsirC","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-F0+r4avX8xkXp0hBpU5EBPU0InMRCObIn2Ieh9HJNn1r2amk8/qHmJ68WuNfsirC\" 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-CFvBQbLzGcJKwekfNfjZoR+LtYaMBsbDLaumMmvyKWdtDMN8Eer5XSMzYLHrQy8w","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-CFvBQbLzGcJKwekfNfjZoR+LtYaMBsbDLaumMmvyKWdtDMN8Eer5XSMzYLHrQy8w\" 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-CFvBQbLzGcJKwekfNfjZoR+LtYaMBsbDLaumMmvyKWdtDMN8Eer5XSMzYLHrQy8w\" 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-CFvBQbLzGcJKwekfNfjZoR+LtYaMBsbDLaumMmvyKWdtDMN8Eer5XSMzYLHrQy8w\" 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-VvOYWBcDd7NtnB1eveECKX88ZHIpGnOf79tVdCUqGZzXLgoZPc+oTTPIC3ajaYsn","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-VvOYWBcDd7NtnB1eveECKX88ZHIpGnOf79tVdCUqGZzXLgoZPc+oTTPIC3ajaYsn\" 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-sOkaMV0UFr2uNXfoJpRvaD+gHD6xFlkmpR7MzEwwFdarYdid8aN9Nj1Y8TqQJuFo","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-sOkaMV0UFr2uNXfoJpRvaD+gHD6xFlkmpR7MzEwwFdarYdid8aN9Nj1Y8TqQJuFo\" 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-gnwM6s+puf1K60Nl7crQcC2QC+9BxwpkaTx4OepLZ8VUCraZc+aRlWpsb6nj6Gyf","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-gnwM6s+puf1K60Nl7crQcC2QC+9BxwpkaTx4OepLZ8VUCraZc+aRlWpsb6nj6Gyf\" 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-k+G5UlkZ99QmuecCCWUrjz998JBJnQT3hsDG0A+IVmiX9F3CNswmHXXzYhjnUTDX","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-k+G5UlkZ99QmuecCCWUrjz998JBJnQT3hsDG0A+IVmiX9F3CNswmHXXzYhjnUTDX\" 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-k+G5UlkZ99QmuecCCWUrjz998JBJnQT3hsDG0A+IVmiX9F3CNswmHXXzYhjnUTDX\" 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"}]}]}; \n\n" + "script": "\n\n" } }, { @@ -674,7 +674,7 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -688,7 +688,7 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } } ] @@ -838,7 +838,7 @@ "bundle": "regions-dashboard", "scriptUrl": "./regions-dashboard/regions-dashboard.js", "output": "doxa-maps/regions-dashboard/regions-dashboard.js", - "integrity": "sha384-G5kRzcJ2eKbMi2QatgYKKtrwZOo133Mr0ymaMwFJ/i6PWsCUq71lSXNnAeBwnWoN", + "integrity": "sha384-CFvBQbLzGcJKwekfNfjZoR+LtYaMBsbDLaumMmvyKWdtDMN8Eer5XSMzYLHrQy8w", "elements": [ "regions-dashboard" ], @@ -858,7 +858,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -872,7 +872,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -886,7 +886,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } } ] diff --git a/public/doxa-maps/my-upg-100-list/my-upg-100-list.js b/public/doxa-maps/my-upg-100-list/my-upg-100-list.js index 1b2b28c73..0b5ee047e 100644 --- a/public/doxa-maps/my-upg-100-list/my-upg-100-list.js +++ b/public/doxa-maps/my-upg-100-list/my-upg-100-list.js @@ -1,46 +1,46 @@ -(function(){"use strict";var ip;var cn=typeof document<"u"?document.currentScript:null;const Mx="modulepreload",Nx=function(e){return"/"+e},Ix={},to=function(t,o,n){let a=Promise.resolve();function r(s){const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=s,window.dispatchEvent(i),!i.defaultPrevented)throw s}return a.then(s=>{for(const i of s||[])i.status==="rejected"&&r(i.reason);return t().catch(r)})};/** +(function(){"use strict";var bp;var cn=typeof document<"u"?document.currentScript:null;const zx="modulepreload",Hx=function(e){return"/"+e},Vx={},to=function(t,o,n){let a=Promise.resolve();function r(s){const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=s,window.dispatchEvent(i),!i.defaultPrevented)throw s}return a.then(s=>{for(const i of s||[])i.status==="rejected"&&r(i.reason);return t().catch(r)})};/** * @vue/shared v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function Pr(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const Xe={},un=[],oo=()=>{},Ei=()=>!1,va=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ka=e=>e.startsWith("onUpdate:"),ut=Object.assign,Mr=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},pp=Object.prototype.hasOwnProperty,ze=(e,t)=>pp.call(e,t),we=Array.isArray,No=e=>On(e)==="[object Map]",Wo=e=>On(e)==="[object Set]",Ci=e=>On(e)==="[object Date]",Ae=e=>typeof e=="function",Qe=e=>typeof e=="string",Gt=e=>typeof e=="symbol",Ve=e=>e!==null&&typeof e=="object",Li=e=>(Ve(e)||Ae(e))&&Ae(e.then)&&Ae(e.catch),Ti=Object.prototype.toString,On=e=>Ti.call(e),gp=e=>On(e).slice(8,-1),wa=e=>On(e)==="[object Object]",xa=e=>Qe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Dn=Pr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),$a=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},fp=/-\w/g,_t=$a(e=>e.replace(fp,t=>t.slice(1).toUpperCase())),hp=/\B([A-Z])/g,jt=$a(e=>e.replace(hp,"-$1").toLowerCase()),Sa=$a(e=>e.charAt(0).toUpperCase()+e.slice(1)),Nr=$a(e=>e?`on${Sa(e)}`:""),no=(e,t)=>!Object.is(e,t),Aa=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:o})},Ea=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Mi=e=>{const t=Qe(e)?Number(e):NaN;return isNaN(t)?e:t};let Ni;const Ca=()=>Ni||(Ni=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function nt(e){if(we(e)){const t={};for(let o=0;o{if(o){const n=o.split(bp);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Ne(e){let t="";if(Qe(e))t=e;else if(we(e))for(let o=0;oIo(o,t))}const Fi=e=>!!(e&&e.__v_isRef===!0),ge=e=>Qe(e)?e:e==null?"":we(e)||Ve(e)&&(e.toString===Ti||!Ae(e.toString))?Fi(e)?ge(e.value):JSON.stringify(e,Oi,2):String(e),Oi=(e,t)=>Fi(t)?Oi(e,t.value):No(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[n,a],r)=>(o[Ir(n,r)+" =>"]=a,o),{})}:Wo(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Ir(o))}:Gt(t)?Ir(t):Ve(t)&&!we(t)&&!wa(t)?String(t):t,Ir=(e,t="")=>{var o;return Gt(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};/** +**/function Pr(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const et={},un=[],oo=()=>{},Ei=()=>!1,va=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ka=e=>e.startsWith("onUpdate:"),dt=Object.assign,Mr=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},wp=Object.prototype.hasOwnProperty,Ve=(e,t)=>wp.call(e,t),xe=Array.isArray,No=e=>Fn(e)==="[object Map]",Wo=e=>Fn(e)==="[object Set]",Ci=e=>Fn(e)==="[object Date]",$e=e=>typeof e=="function",tt=e=>typeof e=="string",Gt=e=>typeof e=="symbol",Ye=e=>e!==null&&typeof e=="object",Li=e=>(Ye(e)||$e(e))&&$e(e.then)&&$e(e.catch),Ti=Object.prototype.toString,Fn=e=>Ti.call(e),xp=e=>Fn(e).slice(8,-1),wa=e=>Fn(e)==="[object Object]",xa=e=>tt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Dn=Pr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Aa=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},Ap=/-\w/g,_t=Aa(e=>e.replace(Ap,t=>t.slice(1).toUpperCase())),Sp=/\B([A-Z])/g,jt=Aa(e=>e.replace(Sp,"-$1").toLowerCase()),Sa=Aa(e=>e.charAt(0).toUpperCase()+e.slice(1)),Nr=Aa(e=>e?`on${Sa(e)}`:""),no=(e,t)=>!Object.is(e,t),$a=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:o})},Ea=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Mi=e=>{const t=tt(e)?Number(e):NaN;return isNaN(t)?e:t};let Ni;const Ca=()=>Ni||(Ni=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function rt(e){if(xe(e)){const t={};for(let o=0;o{if(o){const n=o.split(Ep);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Ne(e){let t="";if(tt(e))t=e;else if(xe(e))for(let o=0;oRo(o,t))}const Oi=e=>!!(e&&e.__v_isRef===!0),pe=e=>tt(e)?e:e==null?"":xe(e)||Ye(e)&&(e.toString===Ti||!$e(e.toString))?Oi(e)?pe(e.value):JSON.stringify(e,Fi,2):String(e),Fi=(e,t)=>Oi(t)?Fi(e,t.value):No(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[n,a],r)=>(o[Rr(n,r)+" =>"]=a,o),{})}:Wo(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Rr(o))}:Gt(t)?Rr(t):Ye(t)&&!xe(t)&&!wa(t)?String(t):t,Rr=(e,t="")=>{var o;return Gt(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};/** * @vue/reactivity v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let ht;class Di{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&&ht&&(ht.active?(this.parent=ht,this.index=(ht.scopes||(ht.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){const n=this.scopes.slice();for(t=0,o=n.length;t0&&--this._on===0){if(ht===this)ht=this.prevScope;else{let t=ht;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 o,n;for(o=0,n=this.effects.length;o0)return;if(Gn){let t=Gn;for(Gn=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;Bn;){let t=Bn;for(Bn=void 0;t;){const o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=o}}if(e)throw e}function Ki(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function zi(e){let t,o=e.depsTail,n=o;for(;n;){const a=n.prevDep;n.version===-1?(n===o&&(o=a),Gr(n),$p(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=a}e.deps=t,e.depsTail=o}function Br(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Hi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Hi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===jn)||(e.globalVersion=jn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Br(e))))return;e.flags|=2;const t=e.dep,o=et,n=Yt;et=e,Yt=!0;try{Ki(e);const a=e.fn(e._value);(t.version===0||no(a,e._value))&&(e.flags|=128,e._value=a,t.version++)}catch(a){throw t.version++,a}finally{et=o,Yt=n,zi(e),e.flags&=-3}}function Gr(e,t=!1){const{dep:o,prevSub:n,nextSub:a}=e;if(n&&(n.nextSub=a,e.prevSub=void 0),a&&(a.prevSub=n,e.nextSub=void 0),o.subs===e&&(o.subs=n,!n&&o.computed)){o.computed.flags&=-5;for(let r=o.computed.deps;r;r=r.nextDep)Gr(r,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function $p(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let Yt=!0;const Vi=[];function ao(){Vi.push(Yt),Yt=!1}function ro(){const e=Vi.pop();Yt=e===void 0?!0:e}function Wi(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=et;et=void 0;try{t()}finally{et=o}}}let jn=0;class Sp{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class jr{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(!et||!Yt||et===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==et)o=this.activeLink=new Sp(et,this),et.deps?(o.prevDep=et.depsTail,et.depsTail.nextDep=o,et.depsTail=o):et.deps=et.depsTail=o,Yi(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){const n=o.nextDep;n.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=n),o.prevDep=et.depsTail,o.nextDep=void 0,et.depsTail.nextDep=o,et.depsTail=o,et.deps===o&&(et.deps=n)}return o}trigger(t){this.version++,jn++,this.notify(t)}notify(t){Or();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{Dr()}}}function Yi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Yi(n)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const La=new WeakMap,Yo=Symbol(""),Ur=Symbol(""),Un=Symbol("");function Pt(e,t,o){if(Yt&&et){let n=La.get(e);n||La.set(e,n=new Map);let a=n.get(o);a||(n.set(o,a=new jr),a.map=n,a.key=o),a.track()}}function yo(e,t,o,n,a,r){const s=La.get(e);if(!s){jn++;return}const i=l=>{l&&l.trigger()};if(Or(),t==="clear")s.forEach(i);else{const l=we(e),c=l&&xa(o);if(l&&o==="length"){const u=Number(n);s.forEach((p,f)=>{(f==="length"||f===Un||!Gt(f)&&f>=u)&&i(p)})}else switch((o!==void 0||s.has(void 0))&&i(s.get(o)),c&&i(s.get(Un)),t){case"add":l?c&&i(s.get("length")):(i(s.get(Yo)),No(e)&&i(s.get(Ur)));break;case"delete":l||(i(s.get(Yo)),No(e)&&i(s.get(Ur)));break;case"set":No(e)&&i(s.get(Yo));break}}Dr()}function Ap(e,t){const o=La.get(e);return o&&o.get(t)}function dn(e){const t=Oe(e);return t===e?t:(Pt(t,"iterate",Un),Ut(e)?t:t.map(qt))}function Ta(e){return Pt(e=Oe(e),"iterate",Un),e}function so(e,t){return ko(e)?gn(vo(e)?qt(t):t):qt(t)}const Ep={__proto__:null,[Symbol.iterator](){return Kr(this,Symbol.iterator,e=>so(this,e))},concat(...e){return dn(this).concat(...e.map(t=>we(t)?dn(t):t))},entries(){return Kr(this,"entries",e=>(e[1]=so(this,e[1]),e))},every(e,t){return _o(this,"every",e,t,void 0,arguments)},filter(e,t){return _o(this,"filter",e,t,o=>o.map(n=>so(this,n)),arguments)},find(e,t){return _o(this,"find",e,t,o=>so(this,o),arguments)},findIndex(e,t){return _o(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return _o(this,"findLast",e,t,o=>so(this,o),arguments)},findLastIndex(e,t){return _o(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return _o(this,"forEach",e,t,void 0,arguments)},includes(...e){return zr(this,"includes",e)},indexOf(...e){return zr(this,"indexOf",e)},join(e){return dn(this).join(e)},lastIndexOf(...e){return zr(this,"lastIndexOf",e)},map(e,t){return _o(this,"map",e,t,void 0,arguments)},pop(){return Kn(this,"pop")},push(...e){return Kn(this,"push",e)},reduce(e,...t){return qi(this,"reduce",e,t)},reduceRight(e,...t){return qi(this,"reduceRight",e,t)},shift(){return Kn(this,"shift")},some(e,t){return _o(this,"some",e,t,void 0,arguments)},splice(...e){return Kn(this,"splice",e)},toReversed(){return dn(this).toReversed()},toSorted(e){return dn(this).toSorted(e)},toSpliced(...e){return dn(this).toSpliced(...e)},unshift(...e){return Kn(this,"unshift",e)},values(){return Kr(this,"values",e=>so(this,e))}};function Kr(e,t,o){const n=Ta(e),a=n[t]();return n!==e&&!Ut(e)&&(a._next=a.next,a.next=()=>{const r=a._next();return r.done||(r.value=o(r.value)),r}),a}const Cp=Array.prototype;function _o(e,t,o,n,a,r){const s=Ta(e),i=s!==e&&!Ut(e),l=s[t];if(l!==Cp[t]){const p=l.apply(e,r);return i?qt(p):p}let c=o;s!==e&&(i?c=function(p,f){return o.call(this,so(e,p),f,e)}:o.length>2&&(c=function(p,f){return o.call(this,p,f,e)}));const u=l.call(s,c,n);return i&&a?a(u):u}function qi(e,t,o,n){const a=Ta(e),r=a!==e&&!Ut(e);let s=o,i=!1;a!==e&&(r?(i=n.length===0,s=function(c,u,p){return i&&(i=!1,c=so(e,c)),o.call(this,c,so(e,u),p,e)}):o.length>3&&(s=function(c,u,p){return o.call(this,c,u,p,e)}));const l=a[t](s,...n);return i?so(e,l):l}function zr(e,t,o){const n=Oe(e);Pt(n,"iterate",Un);const a=n[t](...o);return(a===-1||a===!1)&&Ra(o[0])?(o[0]=Oe(o[0]),n[t](...o)):a}function Kn(e,t,o=[]){ao(),Or();const n=Oe(e)[t].apply(e,o);return Dr(),ro(),n}const Lp=Pr("__proto__,__v_isRef,__isVue"),Ji=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Gt));function Tp(e){Gt(e)||(e=String(e));const t=Oe(this);return Pt(t,"has",e),t.hasOwnProperty(e)}class Xi{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,n){if(o==="__v_skip")return t.__v_skip;const a=this._isReadonly,r=this._isShallow;if(o==="__v_isReactive")return!a;if(o==="__v_isReadonly")return a;if(o==="__v_isShallow")return r;if(o==="__v_raw")return n===(a?r?nl:ol:r?tl:el).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const s=we(t);if(!a){let l;if(s&&(l=Ep[o]))return l;if(o==="hasOwnProperty")return Tp}const i=Reflect.get(t,o,at(t)?t:n);if((Gt(o)?Ji.has(o):Lp(o))||(a||Pt(t,"get",o),r))return i;if(at(i)){const l=s&&xa(o)?i:i.value;return a&&Ve(l)?Vr(l):l}return Ve(i)?a?Vr(i):pn(i):i}}class Zi extends Xi{constructor(t=!1){super(!1,t)}set(t,o,n,a){let r=t[o];const s=we(t)&&xa(o);if(!this._isShallow){const c=ko(r);if(!Ut(n)&&!ko(n)&&(r=Oe(r),n=Oe(n)),!s&&at(r)&&!at(n))return c||(r.value=n),!0}const i=s?Number(o)e,Pa=e=>Reflect.getPrototypeOf(e);function Rp(e,t,o){return function(...n){const a=this.__v_raw,r=Oe(a),s=No(r),i=e==="entries"||e===Symbol.iterator&&s,l=e==="keys"&&s,c=a[e](...n),u=o?Hr:t?gn:qt;return!t&&Pt(r,"iterate",l?Ur:Yo),ut(Object.create(c),{next(){const{value:p,done:f}=c.next();return f?{value:p,done:f}:{value:i?[u(p[0]),u(p[1])]:u(p),done:f}}})}}function Ma(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Fp(e,t){const o={get(a){const r=this.__v_raw,s=Oe(r),i=Oe(a);e||(no(a,i)&&Pt(s,"get",a),Pt(s,"get",i));const{has:l}=Pa(s),c=t?Hr:e?gn:qt;if(l.call(s,a))return c(r.get(a));if(l.call(s,i))return c(r.get(i));r!==s&&r.get(a)},get size(){const a=this.__v_raw;return!e&&Pt(Oe(a),"iterate",Yo),a.size},has(a){const r=this.__v_raw,s=Oe(r),i=Oe(a);return e||(no(a,i)&&Pt(s,"has",a),Pt(s,"has",i)),a===i?r.has(a):r.has(a)||r.has(i)},forEach(a,r){const s=this,i=s.__v_raw,l=Oe(i),c=t?Hr:e?gn:qt;return!e&&Pt(l,"iterate",Yo),i.forEach((u,p)=>a.call(r,c(u),c(p),s))}};return ut(o,e?{add:Ma("add"),set:Ma("set"),delete:Ma("delete"),clear:Ma("clear")}:{add(a){const r=Oe(this),s=Pa(r),i=Oe(a),l=!t&&!Ut(a)&&!ko(a)?i:a;return s.has.call(r,l)||no(a,l)&&s.has.call(r,a)||no(i,l)&&s.has.call(r,i)||(r.add(l),yo(r,"add",l,l)),this},set(a,r){!t&&!Ut(r)&&!ko(r)&&(r=Oe(r));const s=Oe(this),{has:i,get:l}=Pa(s);let c=i.call(s,a);c||(a=Oe(a),c=i.call(s,a));const u=l.call(s,a);return s.set(a,r),c?no(r,u)&&yo(s,"set",a,r):yo(s,"add",a,r),this},delete(a){const r=Oe(this),{has:s,get:i}=Pa(r);let l=s.call(r,a);l||(a=Oe(a),l=s.call(r,a)),i&&i.call(r,a);const c=r.delete(a);return l&&yo(r,"delete",a,void 0),c},clear(){const a=Oe(this),r=a.size!==0,s=a.clear();return r&&yo(a,"clear",void 0,void 0),s}}),["keys","values","entries",Symbol.iterator].forEach(a=>{o[a]=Rp(a,e,t)}),o}function Na(e,t){const o=Fp(e,t);return(n,a,r)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?n:Reflect.get(ze(o,a)&&a in n?o:n,a,r)}const Op={get:Na(!1,!1)},Dp={get:Na(!1,!0)},Bp={get:Na(!0,!1)},Gp={get:Na(!0,!0)},el=new WeakMap,tl=new WeakMap,ol=new WeakMap,nl=new WeakMap;function jp(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pn(e){return ko(e)?e:Ia(e,!1,Pp,Op,el)}function Up(e){return Ia(e,!1,Np,Dp,tl)}function Vr(e){return Ia(e,!0,Mp,Bp,ol)}function Fx(e){return Ia(e,!0,Ip,Gp,nl)}function Ia(e,t,o,n,a){if(!Ve(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const r=a.get(e);if(r)return r;const s=jp(gp(e));if(s===0)return e;const i=new Proxy(e,s===2?n:o);return a.set(e,i),i}function vo(e){return ko(e)?vo(e.__v_raw):!!(e&&e.__v_isReactive)}function ko(e){return!!(e&&e.__v_isReadonly)}function Ut(e){return!!(e&&e.__v_isShallow)}function Ra(e){return e?!!e.__v_raw:!1}function Oe(e){const t=e&&e.__v_raw;return t?Oe(t):e}function qo(e){return!ze(e,"__v_skip")&&Object.isExtensible(e)&&Pi(e,"__v_skip",!0),e}const qt=e=>Ve(e)?pn(e):e,gn=e=>Ve(e)?Vr(e):e;function at(e){return e?e.__v_isRef===!0:!1}function de(e){return al(e,!1)}function fn(e){return al(e,!0)}function al(e,t){return at(e)?e:new Kp(e,t)}class Kp{constructor(t,o){this.dep=new jr,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=o?t:Oe(t),this._value=o?t:qt(t),this.__v_isShallow=o}get value(){return this.dep.track(),this._value}set value(t){const o=this._rawValue,n=this.__v_isShallow||Ut(t)||ko(t);t=n?t:Oe(t),no(t,o)&&(this._rawValue=t,this._value=n?t:qt(t),this.dep.trigger())}}function _e(e){return at(e)?e.value:e}const zp={get:(e,t,o)=>t==="__v_raw"?e:_e(Reflect.get(e,t,o)),set:(e,t,o,n)=>{const a=e[t];return at(a)&&!at(o)?(a.value=o,!0):Reflect.set(e,t,o,n)}};function rl(e){return vo(e)?e:new Proxy(e,zp)}function Hp(e){const t=we(e)?new Array(e.length):{};for(const o in e)t[o]=sl(e,o);return t}class Vp{constructor(t,o,n){this._object=t,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._key=Gt(o)?o:String(o),this._raw=Oe(t);let a=!0,r=t;if(!we(t)||Gt(this._key)||!xa(this._key))do a=!Ra(r)||Ut(r);while(a&&(r=r.__v_raw));this._shallow=a}get value(){let t=this._object[this._key];return this._shallow&&(t=_e(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&at(this._raw[this._key])){const o=this._object[this._key];if(at(o)){o.value=t;return}}this._object[this._key]=t}get dep(){return Ap(this._raw,this._key)}}class Wp{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Yp(e,t,o){return at(e)?e:Ae(e)?new Wp(e):Ve(e)&&arguments.length>1?sl(e,t,o):de(e)}function sl(e,t,o){return new Vp(e,t,o)}class qp{constructor(t,o,n){this.fn=t,this.setter=o,this._value=void 0,this.dep=new jr(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=jn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&et!==this)return Ui(this,!0),!0}get value(){const t=this.dep.track();return Hi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Jp(e,t,o=!1){let n,a;return Ae(e)?n=e:(n=e.get,a=e.set),new qp(n,a,o)}const Fa={},Oa=new WeakMap;let Jo;function Xp(e,t=!1,o=Jo){if(o){let n=Oa.get(o);n||Oa.set(o,n=[]),n.push(e)}}function Zp(e,t,o=Xe){const{immediate:n,deep:a,once:r,scheduler:s,augmentJob:i,call:l}=o,c=k=>a?k:Ut(k)||a===!1||a===0?wo(k,1):wo(k);let u,p,f,w,x=!1,y=!1;if(at(e)?(p=()=>e.value,x=Ut(e)):vo(e)?(p=()=>c(e),x=!0):we(e)?(y=!0,x=e.some(k=>vo(k)||Ut(k)),p=()=>e.map(k=>{if(at(k))return k.value;if(vo(k))return c(k);if(Ae(k))return l?l(k,2):k()})):Ae(e)?t?p=l?()=>l(e,2):e:p=()=>{if(f){ao();try{f()}finally{ro()}}const k=Jo;Jo=u;try{return l?l(e,3,[w]):e(w)}finally{Jo=k}}:p=oo,t&&a){const k=p,$=a===!0?1/0:a;p=()=>wo(k(),$)}const d=Bi(),g=()=>{u.stop(),d&&d.active&&Mr(d.effects,u)};if(r&&t){const k=t;t=(...$)=>{const v=k(...$);return g(),v}}let b=y?new Array(e.length).fill(Fa):Fa;const h=k=>{if(!(!(u.flags&1)||!u.dirty&&!k))if(t){const $=u.run();if(k||a||x||(y?$.some((v,C)=>no(v,b[C])):no($,b))){f&&f();const v=Jo;Jo=u;try{const C=[$,b===Fa?void 0:y&&b[0]===Fa?[]:b,w];b=$,l?l(t,3,C):t(...C)}finally{Jo=v}}}else u.run()};return i&&i(h),u=new Gi(p),u.scheduler=s?()=>s(h,!1):h,w=k=>Xp(k,!1,u),f=u.onStop=()=>{const k=Oa.get(u);if(k){if(l)l(k,4);else for(const $ of k)$();Oa.delete(u)}},t?n?h(!0):b=u.run():s?s(h.bind(null,!0),!0):u.run(),g.pause=u.pause.bind(u),g.resume=u.resume.bind(u),g.stop=g,g}function wo(e,t=1/0,o){if(t<=0||!Ve(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,at(e))wo(e.value,t,o);else if(we(e))for(let n=0;n{wo(n,t,o)});else if(wa(e)){for(const n in e)wo(e[n],t,o);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&wo(e[n],t,o)}return e}/** +**/let ht;class Di{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&&ht&&(ht.active?(this.parent=ht,this.index=(ht.scopes||(ht.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){const n=this.scopes.slice();for(t=0,o=n.length;t0&&--this._on===0){if(ht===this)ht=this.prevScope;else{let t=ht;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 o,n;for(o=0,n=this.effects.length;o0)return;if(Gn){let t=Gn;for(Gn=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;Bn;){let t=Bn;for(Bn=void 0;t;){const o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=o}}if(e)throw e}function Ki(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function zi(e){let t,o=e.depsTail,n=o;for(;n;){const a=n.prevDep;n.version===-1?(n===o&&(o=a),Gr(n),Rp(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=a}e.deps=t,e.depsTail=o}function Br(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Hi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Hi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===jn)||(e.globalVersion=jn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Br(e))))return;e.flags|=2;const t=e.dep,o=ot,n=Yt;ot=e,Yt=!0;try{Ki(e);const a=e.fn(e._value);(t.version===0||no(a,e._value))&&(e.flags|=128,e._value=a,t.version++)}catch(a){throw t.version++,a}finally{ot=o,Yt=n,zi(e),e.flags&=-3}}function Gr(e,t=!1){const{dep:o,prevSub:n,nextSub:a}=e;if(n&&(n.nextSub=a,e.prevSub=void 0),a&&(a.prevSub=n,e.nextSub=void 0),o.subs===e&&(o.subs=n,!n&&o.computed)){o.computed.flags&=-5;for(let r=o.computed.deps;r;r=r.nextDep)Gr(r,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function Rp(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let Yt=!0;const Vi=[];function ao(){Vi.push(Yt),Yt=!1}function ro(){const e=Vi.pop();Yt=e===void 0?!0:e}function Wi(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=ot;ot=void 0;try{t()}finally{ot=o}}}let jn=0;class Ip{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class jr{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(!ot||!Yt||ot===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==ot)o=this.activeLink=new Ip(ot,this),ot.deps?(o.prevDep=ot.depsTail,ot.depsTail.nextDep=o,ot.depsTail=o):ot.deps=ot.depsTail=o,Yi(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){const n=o.nextDep;n.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=n),o.prevDep=ot.depsTail,o.nextDep=void 0,ot.depsTail.nextDep=o,ot.depsTail=o,ot.deps===o&&(ot.deps=n)}return o}trigger(t){this.version++,jn++,this.notify(t)}notify(t){Fr();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{Dr()}}}function Yi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Yi(n)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const La=new WeakMap,Yo=Symbol(""),Ur=Symbol(""),Un=Symbol("");function Pt(e,t,o){if(Yt&&ot){let n=La.get(e);n||La.set(e,n=new Map);let a=n.get(o);a||(n.set(o,a=new jr),a.map=n,a.key=o),a.track()}}function yo(e,t,o,n,a,r){const s=La.get(e);if(!s){jn++;return}const i=l=>{l&&l.trigger()};if(Fr(),t==="clear")s.forEach(i);else{const l=xe(e),u=l&&xa(o);if(l&&o==="length"){const c=Number(n);s.forEach((p,g)=>{(g==="length"||g===Un||!Gt(g)&&g>=c)&&i(p)})}else switch((o!==void 0||s.has(void 0))&&i(s.get(o)),u&&i(s.get(Un)),t){case"add":l?u&&i(s.get("length")):(i(s.get(Yo)),No(e)&&i(s.get(Ur)));break;case"delete":l||(i(s.get(Yo)),No(e)&&i(s.get(Ur)));break;case"set":No(e)&&i(s.get(Yo));break}}Dr()}function Op(e,t){const o=La.get(e);return o&&o.get(t)}function dn(e){const t=Be(e);return t===e?t:(Pt(t,"iterate",Un),Ut(e)?t:t.map(qt))}function Ta(e){return Pt(e=Be(e),"iterate",Un),e}function so(e,t){return ko(e)?gn(vo(e)?qt(t):t):qt(t)}const Fp={__proto__:null,[Symbol.iterator](){return Kr(this,Symbol.iterator,e=>so(this,e))},concat(...e){return dn(this).concat(...e.map(t=>xe(t)?dn(t):t))},entries(){return Kr(this,"entries",e=>(e[1]=so(this,e[1]),e))},every(e,t){return _o(this,"every",e,t,void 0,arguments)},filter(e,t){return _o(this,"filter",e,t,o=>o.map(n=>so(this,n)),arguments)},find(e,t){return _o(this,"find",e,t,o=>so(this,o),arguments)},findIndex(e,t){return _o(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return _o(this,"findLast",e,t,o=>so(this,o),arguments)},findLastIndex(e,t){return _o(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return _o(this,"forEach",e,t,void 0,arguments)},includes(...e){return zr(this,"includes",e)},indexOf(...e){return zr(this,"indexOf",e)},join(e){return dn(this).join(e)},lastIndexOf(...e){return zr(this,"lastIndexOf",e)},map(e,t){return _o(this,"map",e,t,void 0,arguments)},pop(){return Kn(this,"pop")},push(...e){return Kn(this,"push",e)},reduce(e,...t){return qi(this,"reduce",e,t)},reduceRight(e,...t){return qi(this,"reduceRight",e,t)},shift(){return Kn(this,"shift")},some(e,t){return _o(this,"some",e,t,void 0,arguments)},splice(...e){return Kn(this,"splice",e)},toReversed(){return dn(this).toReversed()},toSorted(e){return dn(this).toSorted(e)},toSpliced(...e){return dn(this).toSpliced(...e)},unshift(...e){return Kn(this,"unshift",e)},values(){return Kr(this,"values",e=>so(this,e))}};function Kr(e,t,o){const n=Ta(e),a=n[t]();return n!==e&&!Ut(e)&&(a._next=a.next,a.next=()=>{const r=a._next();return r.done||(r.value=o(r.value)),r}),a}const Dp=Array.prototype;function _o(e,t,o,n,a,r){const s=Ta(e),i=s!==e&&!Ut(e),l=s[t];if(l!==Dp[t]){const p=l.apply(e,r);return i?qt(p):p}let u=o;s!==e&&(i?u=function(p,g){return o.call(this,so(e,p),g,e)}:o.length>2&&(u=function(p,g){return o.call(this,p,g,e)}));const c=l.call(s,u,n);return i&&a?a(c):c}function qi(e,t,o,n){const a=Ta(e),r=a!==e&&!Ut(e);let s=o,i=!1;a!==e&&(r?(i=n.length===0,s=function(u,c,p){return i&&(i=!1,u=so(e,u)),o.call(this,u,so(e,c),p,e)}):o.length>3&&(s=function(u,c,p){return o.call(this,u,c,p,e)}));const l=a[t](s,...n);return i?so(e,l):l}function zr(e,t,o){const n=Be(e);Pt(n,"iterate",Un);const a=n[t](...o);return(a===-1||a===!1)&&Ia(o[0])?(o[0]=Be(o[0]),n[t](...o)):a}function Kn(e,t,o=[]){ao(),Fr();const n=Be(e)[t].apply(e,o);return Dr(),ro(),n}const Bp=Pr("__proto__,__v_isRef,__isVue"),Ji=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Gt));function Gp(e){Gt(e)||(e=String(e));const t=Be(this);return Pt(t,"has",e),t.hasOwnProperty(e)}class Xi{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,n){if(o==="__v_skip")return t.__v_skip;const a=this._isReadonly,r=this._isShallow;if(o==="__v_isReactive")return!a;if(o==="__v_isReadonly")return a;if(o==="__v_isShallow")return r;if(o==="__v_raw")return n===(a?r?nl:ol:r?tl:el).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const s=xe(t);if(!a){let l;if(s&&(l=Fp[o]))return l;if(o==="hasOwnProperty")return Gp}const i=Reflect.get(t,o,st(t)?t:n);if((Gt(o)?Ji.has(o):Bp(o))||(a||Pt(t,"get",o),r))return i;if(st(i)){const l=s&&xa(o)?i:i.value;return a&&Ye(l)?Vr(l):l}return Ye(i)?a?Vr(i):pn(i):i}}class Zi extends Xi{constructor(t=!1){super(!1,t)}set(t,o,n,a){let r=t[o];const s=xe(t)&&xa(o);if(!this._isShallow){const u=ko(r);if(!Ut(n)&&!ko(n)&&(r=Be(r),n=Be(n)),!s&&st(r)&&!st(n))return u||(r.value=n),!0}const i=s?Number(o)e,Pa=e=>Reflect.getPrototypeOf(e);function Hp(e,t,o){return function(...n){const a=this.__v_raw,r=Be(a),s=No(r),i=e==="entries"||e===Symbol.iterator&&s,l=e==="keys"&&s,u=a[e](...n),c=o?Hr:t?gn:qt;return!t&&Pt(r,"iterate",l?Ur:Yo),dt(Object.create(u),{next(){const{value:p,done:g}=u.next();return g?{value:p,done:g}:{value:i?[c(p[0]),c(p[1])]:c(p),done:g}}})}}function Ma(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Vp(e,t){const o={get(a){const r=this.__v_raw,s=Be(r),i=Be(a);e||(no(a,i)&&Pt(s,"get",a),Pt(s,"get",i));const{has:l}=Pa(s),u=t?Hr:e?gn:qt;if(l.call(s,a))return u(r.get(a));if(l.call(s,i))return u(r.get(i));r!==s&&r.get(a)},get size(){const a=this.__v_raw;return!e&&Pt(Be(a),"iterate",Yo),a.size},has(a){const r=this.__v_raw,s=Be(r),i=Be(a);return e||(no(a,i)&&Pt(s,"has",a),Pt(s,"has",i)),a===i?r.has(a):r.has(a)||r.has(i)},forEach(a,r){const s=this,i=s.__v_raw,l=Be(i),u=t?Hr:e?gn:qt;return!e&&Pt(l,"iterate",Yo),i.forEach((c,p)=>a.call(r,u(c),u(p),s))}};return dt(o,e?{add:Ma("add"),set:Ma("set"),delete:Ma("delete"),clear:Ma("clear")}:{add(a){const r=Be(this),s=Pa(r),i=Be(a),l=!t&&!Ut(a)&&!ko(a)?i:a;return s.has.call(r,l)||no(a,l)&&s.has.call(r,a)||no(i,l)&&s.has.call(r,i)||(r.add(l),yo(r,"add",l,l)),this},set(a,r){!t&&!Ut(r)&&!ko(r)&&(r=Be(r));const s=Be(this),{has:i,get:l}=Pa(s);let u=i.call(s,a);u||(a=Be(a),u=i.call(s,a));const c=l.call(s,a);return s.set(a,r),u?no(r,c)&&yo(s,"set",a,r):yo(s,"add",a,r),this},delete(a){const r=Be(this),{has:s,get:i}=Pa(r);let l=s.call(r,a);l||(a=Be(a),l=s.call(r,a)),i&&i.call(r,a);const u=r.delete(a);return l&&yo(r,"delete",a,void 0),u},clear(){const a=Be(this),r=a.size!==0,s=a.clear();return r&&yo(a,"clear",void 0,void 0),s}}),["keys","values","entries",Symbol.iterator].forEach(a=>{o[a]=Hp(a,e,t)}),o}function Na(e,t){const o=Vp(e,t);return(n,a,r)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?n:Reflect.get(Ve(o,a)&&a in n?o:n,a,r)}const Wp={get:Na(!1,!1)},Yp={get:Na(!1,!0)},qp={get:Na(!0,!1)},Jp={get:Na(!0,!0)},el=new WeakMap,tl=new WeakMap,ol=new WeakMap,nl=new WeakMap;function Xp(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pn(e){return ko(e)?e:Ra(e,!1,jp,Wp,el)}function Zp(e){return Ra(e,!1,Kp,Yp,tl)}function Vr(e){return Ra(e,!0,Up,qp,ol)}function Yx(e){return Ra(e,!0,zp,Jp,nl)}function Ra(e,t,o,n,a){if(!Ye(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const r=a.get(e);if(r)return r;const s=Xp(xp(e));if(s===0)return e;const i=new Proxy(e,s===2?n:o);return a.set(e,i),i}function vo(e){return ko(e)?vo(e.__v_raw):!!(e&&e.__v_isReactive)}function ko(e){return!!(e&&e.__v_isReadonly)}function Ut(e){return!!(e&&e.__v_isShallow)}function Ia(e){return e?!!e.__v_raw:!1}function Be(e){const t=e&&e.__v_raw;return t?Be(t):e}function qo(e){return!Ve(e,"__v_skip")&&Object.isExtensible(e)&&Pi(e,"__v_skip",!0),e}const qt=e=>Ye(e)?pn(e):e,gn=e=>Ye(e)?Vr(e):e;function st(e){return e?e.__v_isRef===!0:!1}function de(e){return al(e,!1)}function fn(e){return al(e,!0)}function al(e,t){return st(e)?e:new Qp(e,t)}class Qp{constructor(t,o){this.dep=new jr,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=o?t:Be(t),this._value=o?t:qt(t),this.__v_isShallow=o}get value(){return this.dep.track(),this._value}set value(t){const o=this._rawValue,n=this.__v_isShallow||Ut(t)||ko(t);t=n?t:Be(t),no(t,o)&&(this._rawValue=t,this._value=n?t:qt(t),this.dep.trigger())}}function _e(e){return st(e)?e.value:e}const eg={get:(e,t,o)=>t==="__v_raw"?e:_e(Reflect.get(e,t,o)),set:(e,t,o,n)=>{const a=e[t];return st(a)&&!st(o)?(a.value=o,!0):Reflect.set(e,t,o,n)}};function rl(e){return vo(e)?e:new Proxy(e,eg)}function tg(e){const t=xe(e)?new Array(e.length):{};for(const o in e)t[o]=sl(e,o);return t}class og{constructor(t,o,n){this._object=t,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._key=Gt(o)?o:String(o),this._raw=Be(t);let a=!0,r=t;if(!xe(t)||Gt(this._key)||!xa(this._key))do a=!Ia(r)||Ut(r);while(a&&(r=r.__v_raw));this._shallow=a}get value(){let t=this._object[this._key];return this._shallow&&(t=_e(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&st(this._raw[this._key])){const o=this._object[this._key];if(st(o)){o.value=t;return}}this._object[this._key]=t}get dep(){return Op(this._raw,this._key)}}class ng{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function ag(e,t,o){return st(e)?e:$e(e)?new ng(e):Ye(e)&&arguments.length>1?sl(e,t,o):de(e)}function sl(e,t,o){return new og(e,t,o)}class rg{constructor(t,o,n){this.fn=t,this.setter=o,this._value=void 0,this.dep=new jr(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=jn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&ot!==this)return Ui(this,!0),!0}get value(){const t=this.dep.track();return Hi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function sg(e,t,o=!1){let n,a;return $e(e)?n=e:(n=e.get,a=e.set),new rg(n,a,o)}const Oa={},Fa=new WeakMap;let Jo;function ig(e,t=!1,o=Jo){if(o){let n=Fa.get(o);n||Fa.set(o,n=[]),n.push(e)}}function lg(e,t,o=et){const{immediate:n,deep:a,once:r,scheduler:s,augmentJob:i,call:l}=o,u=v=>a?v:Ut(v)||a===!1||a===0?wo(v,1):wo(v);let c,p,g,k,w=!1,_=!1;if(st(e)?(p=()=>e.value,w=Ut(e)):vo(e)?(p=()=>u(e),w=!0):xe(e)?(_=!0,w=e.some(v=>vo(v)||Ut(v)),p=()=>e.map(v=>{if(st(v))return v.value;if(vo(v))return u(v);if($e(v))return l?l(v,2):v()})):$e(e)?t?p=l?()=>l(e,2):e:p=()=>{if(g){ao();try{g()}finally{ro()}}const v=Jo;Jo=c;try{return l?l(e,3,[k]):e(k)}finally{Jo=v}}:p=oo,t&&a){const v=p,x=a===!0?1/0:a;p=()=>wo(v(),x)}const d=Bi(),h=()=>{c.stop(),d&&d.active&&Mr(d.effects,c)};if(r&&t){const v=t;t=(...x)=>{const A=v(...x);return h(),A}}let f=_?new Array(e.length).fill(Oa):Oa;const m=v=>{if(!(!(c.flags&1)||!c.dirty&&!v))if(t){const x=c.run();if(v||a||w||(_?x.some((A,S)=>no(A,f[S])):no(x,f))){g&&g();const A=Jo;Jo=c;try{const S=[x,f===Oa?void 0:_&&f[0]===Oa?[]:f,k];f=x,l?l(t,3,S):t(...S)}finally{Jo=A}}}else c.run()};return i&&i(m),c=new Gi(p),c.scheduler=s?()=>s(m,!1):m,k=v=>ig(v,!1,c),g=c.onStop=()=>{const v=Fa.get(c);if(v){if(l)l(v,4);else for(const x of v)x();Fa.delete(c)}},t?n?m(!0):f=c.run():s?s(m.bind(null,!0),!0):c.run(),h.pause=c.pause.bind(c),h.resume=c.resume.bind(c),h.stop=h,h}function wo(e,t=1/0,o){if(t<=0||!Ye(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,st(e))wo(e.value,t,o);else if(xe(e))for(let n=0;n{wo(n,t,o)});else if(wa(e)){for(const n in e)wo(e[n],t,o);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&wo(e[n],t,o)}return e}/** * @vue/runtime-core v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/const zn=[];let Wr=!1;function Ox(e,...t){if(Wr)return;Wr=!0,ao();const o=zn.length?zn[zn.length-1].component:null,n=o&&o.appContext.config.warnHandler,a=Qp();if(n)hn(n,o,11,[e+t.map(r=>{var s,i;return(i=(s=r.toString)==null?void 0:s.call(r))!=null?i:JSON.stringify(r)}).join(""),o&&o.proxy,a.map(({vnode:r})=>`at <${sc(o,r.type)}>`).join(` +**/const zn=[];let Wr=!1;function qx(e,...t){if(Wr)return;Wr=!0,ao();const o=zn.length?zn[zn.length-1].component:null,n=o&&o.appContext.config.warnHandler,a=cg();if(n)hn(n,o,11,[e+t.map(r=>{var s,i;return(i=(s=r.toString)==null?void 0:s.call(r))!=null?i:JSON.stringify(r)}).join(""),o&&o.proxy,a.map(({vnode:r})=>`at <${sc(o,r.type)}>`).join(` `),a]);else{const r=[`[Vue warn]: ${e}`,...t];a.length&&r.push(` -`,...eg(a)),console.warn(...r)}ro(),Wr=!1}function Qp(){let e=zn[zn.length-1];if(!e)return[];const t=[];for(;e;){const o=t[0];o&&o.vnode===e?o.recurseCount++:t.push({vnode:e,recurseCount:0});const n=e.component&&e.component.parent;e=n&&n.vnode}return t}function eg(e){const t=[];return e.forEach((o,n)=>{t.push(...n===0?[]:[` -`],...tg(o))}),t}function tg({vnode:e,recurseCount:t}){const o=t>0?`... (${t} recursive calls)`:"",n=e.component?e.component.parent==null:!1,a=` at <${sc(e.component,e.type,n)}`,r=">"+o;return e.props?[a,...og(e.props),r]:[a+r]}function og(e){const t=[],o=Object.keys(e);return o.slice(0,3).forEach(n=>{t.push(...il(n,e[n]))}),o.length>3&&t.push(" ..."),t}function il(e,t,o){return Qe(t)?(t=JSON.stringify(t),o?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?o?t:[`${e}=${t}`]:at(t)?(t=il(e,Oe(t.value),!0),o?t:[`${e}=Ref<`,t,">"]):Ae(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=Oe(t),o?t:[`${e}=`,t])}function hn(e,t,o,n){try{return n?e(...n):e()}catch(a){Hn(a,t,o)}}function Jt(e,t,o,n){if(Ae(e)){const a=hn(e,t,o,n);return a&&Li(a)&&a.catch(r=>{Hn(r,t,o)}),a}if(we(e)){const a=[];for(let r=0;r>>1,a=Nt[n],r=Vn(a);r=Vn(o)?Nt.push(e):Nt.splice(ag(t),0,e),e.flags|=1,cl()}}function cl(){Da||(Da=ll.then(pl))}function rg(e){if(!we(e))Ro&&e.id===-1?Ro.splice(bn+1,0,e):e.flags&1||(mn.push(e),e.flags|=1);else for(let t=0;tVn(o)-Vn(n));if(mn.length=0,Ro){for(let o=0;oe.id==null?e.flags&2?-1:1/0:e.id;function pl(e){try{for(io=0;io{n._d&&Ja(-1);const r=Ba(t),s=$o.length;let i;try{i=e(...a)}finally{for(let l=$o.length;l>s;l--)us();Ba(r),n._d&&Ja(1)}return i};return n._n=!0,n._c=!0,n._d=!0,n}function fl(e,t){if(At===null)return e;const o=er(At),n=e.dirs||(e.dirs=[]);for(let a=0;a1)return o&&Ae(t)?t.call(n&&n.proxy):t}}function sg(){return!!(Ao()||Qo)}const ig=Symbol.for("v-scx"),lg=()=>Ie(ig);function cg(e,t){return qr(e,null,t)}function lt(e,t,o){return qr(e,t,o)}function qr(e,t,o=Xe){const{immediate:n,deep:a,flush:r,once:s}=o,i=ut({},o),l=t&&n||!t&&r!=="post";let c;if(kn){if(r==="sync"){const w=lg();c=w.__watcherHandles||(w.__watcherHandles=[])}else if(!l){const w=()=>{};return w.stop=oo,w.resume=oo,w.pause=oo,w}}const u=Ct;i.call=(w,x,y)=>Jt(w,u,x,y);let p=!1;r==="post"?i.scheduler=w=>{Rt(w,u&&u.suspense)}:r!=="sync"&&(p=!0,i.scheduler=(w,x)=>{x?w():Yr(w)}),i.augmentJob=w=>{t&&(w.flags|=4),p&&(w.flags|=2,u&&(w.id=u.uid,w.i=u))};const f=Zp(e,t,i);return kn&&(c?c.push(f):l&&f()),f}function ug(e,t,o){const n=this.proxy,a=Qe(e)?e.includes(".")?hl(n,e):()=>n[e]:e.bind(n,n);let r;Ae(t)?r=t:(r=t.handler,o=t);const s=na(this),i=qr(a,r.bind(n),o);return s(),i}function hl(e,t){const o=t.split(".");return()=>{let n=e;for(let a=0;ae.__isTeleport,Zo=e=>e&&(e.disabled||e.disabled===""),dg=e=>e&&(e.defer||e.defer===""),bl=e=>typeof SVGElement<"u"&&e instanceof SVGElement,yl=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Jr=(e,t)=>{const o=e&&e.to;return Qe(o)?t?t(o):null:o},pg={name:"Teleport",__isTeleport:!0,process(e,t,o,n,a,r,s,i,l,c){const{mc:u,pc:p,pbc:f,o:{insert:w,querySelector:x,createText:y,createComment:d,parentNode:g}}=c,b=Zo(t.props);let{dynamicChildren:h}=t;const k=(C,T,R)=>{C.shapeFlag&16&&u(C.children,T,R,a,r,s,i,l)},$=(C=t)=>{const T=Zo(C.props),R=C.target=Jr(C.props,x),H=Xr(R,C,y,w);R&&(s!=="svg"&&bl(R)?s="svg":s!=="mathml"&&yl(R)&&(s="mathml"),a&&a.isCE&&(a.ce._teleportTargets||(a.ce._teleportTargets=new Set)).add(R),T||(k(C,R,H),Wn(C,!1)))},v=C=>{const T=()=>{if(Fo.get(C)===T){if(Fo.delete(C),Zo(C.props)){const R=g(C.el)||o;k(C,R,C.anchor),Wn(C,!0)}$(C)}};Fo.set(C,T),Rt(T,r)};if(e==null){const C=t.el=y(""),T=t.anchor=y("");if(w(C,o,n),w(T,o,n),dg(t.props)||r&&r.pendingBranch){v(t);return}b&&(k(t,o,T),Wn(t,!0)),$()}else{t.el=e.el;const C=t.anchor=e.anchor,T=Fo.get(e);if(T){T.flags|=8,Fo.delete(e),v(t);return}t.targetStart=e.targetStart;const R=t.target=e.target,H=t.targetAnchor=e.targetAnchor,Y=Zo(e.props),ae=Y?o:R,P=Y?C:H;if(s==="svg"||bl(R)?s="svg":(s==="mathml"||yl(R))&&(s="mathml"),h?(f(e.dynamicChildren,h,ae,a,r,s,i),cs(e,t,!0)):l||p(e,t,ae,P,a,r,s,i,!1),b)Y?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ja(t,o,C,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const A=Jr(t.props,x);A&&(t.target=A,ja(t,A,null,c,0))}else Y&&ja(t,R,H,c,1);Wn(t,b)}},remove(e,t,o,{um:n,o:{remove:a}},r){const{shapeFlag:s,children:i,anchor:l,targetStart:c,targetAnchor:u,target:p,props:f}=e,w=Zo(f),x=r||!w,y=Fo.get(e);if(y&&(y.flags|=8,Fo.delete(e)),p&&(a(c),a(u)),r&&a(l),!y&&(w||p)&&s&16)for(let d=0;d1){for(const o of e)if(o.type!==po){t=o;break}}return t}function _l(e){if(!za(e))return Ga(e.type)&&e.children?hg(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&Ae(o.default))return o.default()}}function Qr(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;Qr(Ga(o.type)&&_l(o)||o,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Yn(e,t){return Ae(e)?ut({name:e.name},t,{setup:e}):e}function es(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function vl(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}const Ua=new WeakMap;function qn(e,t,o,n,a=!1){if(we(e)){e.forEach((y,d)=>qn(y,t&&(we(t)?t[d]:t),o,n,a));return}if(yn(n)&&!a){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&qn(e,t,o,n.component.subTree);return}const r=n.shapeFlag&4?er(n.component):n.el,s=a?null:r,{i,r:l}=e,c=t&&t.r,u=i.refs===Xe?i.refs={}:i.refs,p=i.setupState,f=Oe(p),w=p===Xe?Ei:y=>vl(u,y)?!1:ze(f,y),x=(y,d)=>!(d&&vl(u,d));if(c!=null&&c!==l){if(kl(t),Qe(c))u[c]=null,w(c)&&(p[c]=null);else if(at(c)){const y=t;x(c,y.k)&&(c.value=null),y.k&&(u[y.k]=null)}}if(Ae(l))hn(l,i,12,[s,u]);else{const y=Qe(l),d=at(l);if(y||d){const g=()=>{if(e.f){const b=y?w(l)?p[l]:u[l]:x()||!e.k?l.value:u[e.k];if(a)we(b)&&Mr(b,r);else if(we(b))b.includes(r)||b.push(r);else if(y)u[l]=[r],w(l)&&(p[l]=u[l]);else{const h=[r];x(l,e.k)&&(l.value=h),e.k&&(u[e.k]=h)}}else y?(u[l]=s,w(l)&&(p[l]=s)):d&&(x(l,e.k)&&(l.value=s),e.k&&(u[e.k]=s))};if(s){const b=()=>{g(),Ua.delete(e)};b.id=-1,Ua.set(e,b),Rt(b,o)}else kl(e),g()}}}function kl(e){const t=Ua.get(e);t&&(t.flags|=8,Ua.delete(e))}const wl=e=>e.nodeType===8;Ca().requestIdleCallback,Ca().cancelIdleCallback;function mg(e,t){if(wl(e)&&e.data==="["){let o=1,n=e.nextSibling;for(;n;){if(n.nodeType===1){if(t(n)===!1)break}else if(wl(n))if(n.data==="]"){if(--o===0)break}else n.data==="["&&o++;n=n.nextSibling}}else t(e)}const yn=e=>!!e.type.__asyncLoader;function bg(e){Ae(e)&&(e={loader:e});const{loader:t,loadingComponent:o,errorComponent:n,delay:a=200,hydrate:r,timeout:s,suspensible:i=!0,onError:l}=e;let c=null,u,p=0;const f=()=>(p++,c=null,w()),w=()=>{let x;return c||(x=c=t().catch(y=>{if(y=y instanceof Error?y:new Error(String(y)),l)return new Promise((d,g)=>{l(y,()=>d(f()),()=>g(y),p+1)});throw y}).then(y=>x!==c&&c?c:(y&&(y.__esModule||y[Symbol.toStringTag]==="Module")&&(y=y.default),u=y,y)))};return Yn({name:"AsyncComponentWrapper",__asyncLoader:w,__asyncHydrate(x,y,d){const g=x.isConnected;let b=!1;(y.bu||(y.bu=[])).push(()=>b=!0);const h=()=>{b||!x.parentNode||g&&!x.isConnected||d()},k=r?()=>{const $=r(h,v=>mg(x,v));$&&(y.bum||(y.bum=[])).push($)}:h;u?k():w().then(()=>!y.isUnmounted&&k())},get __asyncResolved(){return u},setup(){const x=Ct;if(es(x),u)return()=>Ka(u,x);const y=$=>{c=null,Hn($,x,13,!n)};if(i&&x.suspense||kn)return w().then($=>()=>Ka($,x)).catch($=>(y($),()=>n?He(n,{error:$}):null));const d=de(!1),g=de(),b=de(!!a);let h,k;return Va(()=>{h!=null&&clearTimeout(h),k!=null&&clearTimeout(k)}),a&&(k=setTimeout(()=>{x.isUnmounted||(b.value=!1)},a)),s!=null&&(h=setTimeout(()=>{if(!x.isUnmounted&&!d.value&&!g.value){const $=new Error(`Async component timed out after ${s}ms.`);y($),g.value=$}},s)),w().then(()=>{x.isUnmounted||(d.value=!0,x.parent&&za(x.parent.vnode)&&x.parent.update())}).catch($=>{if(x.isUnmounted){c=null;return}y($),g.value=$}),()=>{if(d.value&&u)return Ka(u,x);if(g.value&&n)return He(n,{error:g.value});if(o&&!b.value)return Ka(o,x)}}})}function Ka(e,t){const{ref:o,props:n,children:a,ce:r}=t.vnode,s=He(e,n,a);return s.ref=o,s.ce=r,delete t.vnode.ce,s}const za=e=>e.type.__isKeepAlive;function yg(e,t){xl(e,"a",t)}function _g(e,t){xl(e,"da",t)}function xl(e,t,o=Ct){const n=e.__wdc||(e.__wdc=()=>{let a=o;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Ha(t,n,o),o){let a=o.parent;for(;a&&a.parent;)za(a.parent.vnode)&&vg(n,t,o,a),a=a.parent}}function vg(e,t,o,n){const a=Ha(t,e,n,!0);Va(()=>{Mr(n[t],a)},o)}function Ha(e,t,o=Ct,n=!1){if(o){const a=o[e]||(o[e]=[]),r=t.__weh||(t.__weh=(...s)=>{ao();const i=na(o),l=Jt(t,o,e,s);return i(),ro(),l});return n?a.unshift(r):a.push(r),r}}const xo=e=>(t,o=Ct)=>{(!kn||e==="sp")&&Ha(e,(...n)=>t(...n),o)},$l=xo("bm"),co=xo("m"),kg=xo("bu"),wg=xo("u"),uo=xo("bum"),Va=xo("um"),xg=xo("sp"),$g=xo("rtg"),Sg=xo("rtc");function Ag(e,t=Ct){Ha("ec",e,t)}const Eg="components",Sl=Symbol.for("v-ndc");function Al(e){return Qe(e)?Cg(Eg,e,!1)||e:e||Sl}function Cg(e,t,o=!0,n=!1){const a=At||Ct;if(a){const r=a.type;{const i=rc(r,!1);if(i&&(i===t||i===_t(t)||i===Sa(_t(t))))return r}const s=El(a[e]||r[e],t)||El(a.appContext[e],t);return!s&&n?r:s}}function El(e,t){return e&&(e[t]||e[_t(t)]||e[Sa(_t(t))])}function Et(e,t,o,n){let a;const r=o,s=we(e);if(s||Qe(e)){const i=s&&vo(e);let l=!1,c=!1;i&&(l=!Ut(e),c=ko(e),e=Ta(e)),a=new Array(e.length);for(let u=0,p=e.length;ut(i,l,void 0,r));else{const i=Object.keys(e);a=new Array(i.length);for(let l=0,c=i.length;l0;return t!=="default"&&(c.name=t),K(),pt(Me,null,[He("slot",c,n)],u?-2:64)}let s=e[t];s&&s._c&&(s._d=!1);const i=$o.length;K();let l;try{const c=s&&Cl(s(o)),u=o.key||r||c&&c.key;l=pt(Me,{key:(u&&!Gt(u)?u:`_${t}`)+(!c&&n?"_fb":"")},c||(n?n():[]),c&&e._===1?64:-2)}catch(c){for(let u=$o.length;u>i;u--)us();throw c}finally{s&&s._c&&(s._d=!0)}return!a&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),l}function Cl(e){return e.some(t=>ea(t)?!(t.type===po||t.type===Me&&!Cl(t.children)):!0)?e:null}const ts=e=>e?oc(e)?er(e):ts(e.parent):null,Jn=ut(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=>ts(e.parent),$root:e=>ts(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ml(e),$forceUpdate:e=>e.f||(e.f=()=>{Yr(e.update)}),$nextTick:e=>e.n||(e.n=lo.bind(e.proxy)),$watch:e=>ug.bind(e)}),os=(e,t)=>e!==Xe&&!e.__isScriptSetup&&ze(e,t),Lg={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:o,setupState:n,data:a,props:r,accessCache:s,type:i,appContext:l}=e;if(t[0]!=="$"){const f=s[t];if(f!==void 0)switch(f){case 1:return n[t];case 2:return a[t];case 4:return o[t];case 3:return r[t]}else{if(os(n,t))return s[t]=1,n[t];if(a!==Xe&&ze(a,t))return s[t]=2,a[t];if(ze(r,t))return s[t]=3,r[t];if(o!==Xe&&ze(o,t))return s[t]=4,o[t];ns&&(s[t]=0)}}const c=Jn[t];let u,p;if(c)return t==="$attrs"&&Pt(e.attrs,"get",""),c(e);if((u=i.__cssModules)&&(u=u[t]))return u;if(o!==Xe&&ze(o,t))return s[t]=4,o[t];if(p=l.config.globalProperties,ze(p,t))return p[t]},set({_:e},t,o){const{data:n,setupState:a,ctx:r}=e;return os(a,t)?(a[t]=o,!0):n!==Xe&&ze(n,t)?(n[t]=o,!0):ze(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:n,appContext:a,props:r,type:s}},i){let l;return!!(o[i]||e!==Xe&&i[0]!=="$"&&ze(e,i)||os(t,i)||ze(r,i)||ze(n,i)||ze(Jn,i)||ze(a.config.globalProperties,i)||(l=s.__cssModules)&&l[i])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:ze(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function Ll(e){return we(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let ns=!0;function Tg(e){const t=Ml(e),o=e.proxy,n=e.ctx;ns=!1,t.beforeCreate&&Tl(t.beforeCreate,e,"bc");const{data:a,computed:r,methods:s,watch:i,provide:l,inject:c,created:u,beforeMount:p,mounted:f,beforeUpdate:w,updated:x,activated:y,deactivated:d,beforeDestroy:g,beforeUnmount:b,destroyed:h,unmounted:k,render:$,renderTracked:v,renderTriggered:C,errorCaptured:T,serverPrefetch:R,expose:H,inheritAttrs:Y,components:ae,directives:P,filters:A}=t;if(c&&Pg(c,n,null),s)for(const E in s){const V=s[E];Ae(V)&&(n[E]=V.bind(o))}if(a){const E=a.call(o,o);Ve(E)&&(e.data=pn(E))}if(ns=!0,r)for(const E in r){const V=r[E],ie=Ae(V)?V.bind(o,o):Ae(V.get)?V.get.bind(o,o):oo,F=!Ae(V)&&Ae(V.set)?V.set.bind(o):oo,ce=oe({get:ie,set:F});Object.defineProperty(n,E,{enumerable:!0,configurable:!0,get:()=>ce.value,set:pe=>ce.value=pe})}if(i)for(const E in i)Pl(i[E],n,o,E);if(l){const E=Ae(l)?l.call(o):l;Reflect.ownKeys(E).forEach(V=>{Ot(V,E[V])})}u&&Tl(u,e,"c");function S(E,V){we(V)?V.forEach(ie=>E(ie.bind(o))):V&&E(V.bind(o))}if(S($l,p),S(co,f),S(kg,w),S(wg,x),S(yg,y),S(_g,d),S(Ag,T),S(Sg,v),S($g,C),S(uo,b),S(Va,k),S(xg,R),we(H))if(H.length){const E=e.exposed||(e.exposed={});H.forEach(V=>{Object.defineProperty(E,V,{get:()=>o[V],set:ie=>o[V]=ie,enumerable:!0})})}else e.exposed||(e.exposed={});$&&e.render===oo&&(e.render=$),Y!=null&&(e.inheritAttrs=Y),ae&&(e.components=ae),P&&(e.directives=P),R&&es(e)}function Pg(e,t,o=oo){we(e)&&(e=as(e));for(const n in e){const a=e[n];let r;Ve(a)?"default"in a?r=Ie(a.from||n,a.default,!0):r=Ie(a.from||n):r=Ie(a),at(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:s=>r.value=s}):t[n]=r}}function Tl(e,t,o){Jt(we(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,o)}function Pl(e,t,o,n){let a=n.includes(".")?hl(o,n):()=>o[n];if(Qe(e)){const r=t[e];Ae(r)&<(a,r)}else if(Ae(e))lt(a,e.bind(o));else if(Ve(e))if(we(e))e.forEach(r=>Pl(r,t,o,n));else{const r=Ae(e.handler)?e.handler.bind(o):t[e.handler];Ae(r)&<(a,r,e)}}function Ml(e){const t=e.type,{mixins:o,extends:n}=t,{mixins:a,optionsCache:r,config:{optionMergeStrategies:s}}=e.appContext,i=r.get(t);let l;return i?l=i:!a.length&&!o&&!n?l=t:(l={},a.length&&a.forEach(c=>Wa(l,c,s,!0)),Wa(l,t,s)),Ve(t)&&r.set(t,l),l}function Wa(e,t,o,n=!1){const{mixins:a,extends:r}=t;r&&Wa(e,r,o,!0),a&&a.forEach(s=>Wa(e,s,o,!0));for(const s in t)if(!(n&&s==="expose")){const i=Mg[s]||o&&o[s];e[s]=i?i(e[s],t[s]):t[s]}return e}const Mg={data:Nl,props:Il,emits:Il,methods:Xn,computed:Xn,beforeCreate:It,created:It,beforeMount:It,mounted:It,beforeUpdate:It,updated:It,beforeDestroy:It,beforeUnmount:It,destroyed:It,unmounted:It,activated:It,deactivated:It,errorCaptured:It,serverPrefetch:It,components:Xn,directives:Xn,watch:Ig,provide:Nl,inject:Ng};function Nl(e,t){return t?e?function(){return ut(Ae(e)?e.call(this,this):e,Ae(t)?t.call(this,this):t)}:t:e}function Ng(e,t){return Xn(as(e),as(t))}function as(e){if(we(e)){const t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${_t(t)}Modifiers`]||e[`${jt(t)}Modifiers`];function Dg(e,t,...o){if(e.isUnmounted)return;const n=e.vnode.props||Xe;let a=o;const r=t.startsWith("update:"),s=r&&Og(n,t.slice(7));s&&(s.trim&&(a=o.map(u=>Qe(u)?u.trim():u)),s.number&&(a=a.map(Ea)));let i,l=n[i=Nr(t)]||n[i=Nr(_t(t))];!l&&r&&(l=n[i=Nr(jt(t))]),l&&Jt(l,e,6,a);const c=n[i+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,Jt(c,e,6,a)}}const Bg=new WeakMap;function Fl(e,t,o=!1){const n=o?Bg:t.emitsCache,a=n.get(e);if(a!==void 0)return a;const r=e.emits;let s={},i=!1;if(!Ae(e)){const l=c=>{const u=Fl(c,t,!0);u&&(i=!0,ut(s,u))};!o&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!r&&!i?(Ve(e)&&n.set(e,null),null):(we(r)?r.forEach(l=>s[l]=null):ut(s,r),Ve(e)&&n.set(e,s),s)}function Ya(e,t){return!e||!va(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),ze(e,t[0].toLowerCase()+t.slice(1))||ze(e,jt(t))||ze(e,t))}function Dx(){}function Ol(e){const{type:t,vnode:o,proxy:n,withProxy:a,propsOptions:[r],slots:s,attrs:i,emit:l,render:c,renderCache:u,props:p,data:f,setupState:w,ctx:x,inheritAttrs:y}=e,d=Ba(e);let g,b;try{if(o.shapeFlag&4){const k=a||n,$=k;g=go(c.call($,k,u,p,w,f,x)),b=i}else{const k=t;g=go(k.length>1?k(p,{attrs:i,slots:s,emit:l}):k(p,null)),b=t.props?i:Gg(i)}}catch(k){$o.length=0,Hn(k,e,1),g=He(po)}let h=g;if(b&&y!==!1){const k=Object.keys(b),{shapeFlag:$}=h;k.length&&$&7&&(r&&k.some(ka)&&(b=jg(b,r)),h=vn(h,b,!1,!0))}if(o.dirs&&(h=vn(h,null,!1,!0),h.dirs=h.dirs?h.dirs.concat(o.dirs):o.dirs),o.transition){const k=Ga(h.type)&&_l(h)||h;Qr(k,o.transition)}return g=h,Ba(d),g}const Gg=e=>{let t;for(const o in e)(o==="class"||o==="style"||va(o))&&((t||(t={}))[o]=e[o]);return t},jg=(e,t)=>{const o={};for(const n in e)(!ka(n)||!(n.slice(9)in t))&&(o[n]=e[n]);return o};function Ug(e,t,o){const{props:n,children:a,component:r}=e,{props:s,children:i,patchFlag:l}=t,c=r.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&l>=0){if(l&1024)return!0;if(l&16)return n?Dl(n,s,c):!!s;if(l&8){const u=t.dynamicProps;for(let p=0;pObject.create(Gl),Ul=e=>Object.getPrototypeOf(e)===Gl;function zg(e,t,o,n=!1){const a={},r=jl();e.propsDefaults=Object.create(null),Kl(e,t,a,r);for(const s in e.propsOptions[0])s in a||(a[s]=void 0);o?e.props=n?a:Up(a):e.type.props?e.props=a:e.props=r,e.attrs=r}function Hg(e,t,o,n){const{props:a,attrs:r,vnode:{patchFlag:s}}=e,i=Oe(a),[l]=e.propsOptions;let c=!1;if((n||s>0)&&!(s&16)){if(s&8){const u=e.vnode.dynamicProps;for(let p=0;p{l=!0;const[f,w]=zl(p,t,!0);ut(s,f),w&&i.push(...w)};!o&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!r&&!l)return Ve(e)&&n.set(e,un),un;if(we(r))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",is=e=>we(e)?e.map(go):[go(e)],Wg=(e,t,o)=>{if(t._n)return t;const n=Vt((...a)=>is(t(...a)),o);return n._c=!1,n},Vl=(e,t,o)=>{const n=e._ctx;for(const a in e){if(ss(a))continue;const r=e[a];if(Ae(r))t[a]=Wg(a,r,n);else if(r!=null){const s=is(r);t[a]=()=>s}}},Wl=(e,t)=>{const o=is(t);e.slots.default=()=>o},Yl=(e,t,o)=>{for(const n in t)(o||!ss(n))&&(e[n]=t[n])},Yg=(e,t,o)=>{const n=e.slots=jl();if(e.vnode.shapeFlag&32){const a=t._;a?(Yl(n,t,o),o&&Pi(n,"_",a,!0)):Vl(t,n)}else t&&Wl(e,t)},qg=(e,t,o)=>{const{vnode:n,slots:a}=e;let r=!0,s=Xe;if(n.shapeFlag&32){const i=t._;i?o&&i===1?r=!1:Yl(a,t,o):(r=!t.$stable,Vl(t,a)),s=t}else t&&(Wl(e,t),s={default:1});if(r)for(const i in a)!ss(i)&&s[i]==null&&delete a[i]},Rt=ef;function Jg(e){return Xg(e)}function Xg(e,t){const o=Ca();o.__VUE__=!0;const{insert:n,remove:a,patchProp:r,createElement:s,createText:i,createComment:l,setText:c,setElementText:u,parentNode:p,nextSibling:f,setScopeId:w=oo,insertStaticContent:x}=e,y=(L,O,I,z=null,Z=null,X=null,ee=void 0,Q=null,m=!!O.dynamicChildren)=>{if(L===O)return;L&&!ta(L,O)&&(z=st(L),pe(L,Z,X,!0),L=null),O.patchFlag===-2&&(m=!1,O.dynamicChildren=null);const{type:_,ref:B,shapeFlag:W}=O;switch(_){case Zn:d(L,O,I,z);break;case po:g(L,O,I,z);break;case qa:L==null&&b(O,I,z,ee);break;case Me:ae(L,O,I,z,Z,X,ee,Q,m);break;default:W&1?$(L,O,I,z,Z,X,ee,Q,m):W&6?P(L,O,I,z,Z,X,ee,Q,m):(W&64||W&128)&&_.process(L,O,I,z,Z,X,ee,Q,m,Ze)}B!=null&&Z?qn(B,L&&L.ref,X,O||L,!O):B==null&&L&&L.ref!=null&&qn(L.ref,null,X,L,!0)},d=(L,O,I,z)=>{if(L==null)n(O.el=i(O.children),I,z);else{const Z=O.el=L.el;O.children!==L.children&&c(Z,O.children)}},g=(L,O,I,z)=>{L==null?n(O.el=l(O.children||""),I,z):O.el=L.el},b=(L,O,I,z)=>{[L.el,L.anchor]=x(L.children,O,I,z,L.el,L.anchor)},h=({el:L,anchor:O},I,z)=>{let Z;for(;L&&L!==O;)Z=f(L),n(L,I,z),L=Z;n(O,I,z)},k=({el:L,anchor:O})=>{let I;for(;L&&L!==O;)I=f(L),a(L),L=I;a(O)},$=(L,O,I,z,Z,X,ee,Q,m)=>{if(O.type==="svg"?ee="svg":O.type==="math"&&(ee="mathml"),L==null)v(O,I,z,Z,X,ee,Q,m);else{const _=L.el&&L.el._isVueCE?L.el:null;try{_&&_._beginPatch(),R(L,O,Z,X,ee,Q,m)}finally{_&&_._endPatch()}}},v=(L,O,I,z,Z,X,ee,Q)=>{let m,_;const{props:B,shapeFlag:W,transition:ue,dirs:re}=L;if(m=L.el=s(L.type,X,B&&B.is,B),W&8?u(m,L.children):W&16&&T(L.children,m,null,z,Z,ls(L,X),ee,Q),re&&Xo(L,null,z,"created"),C(m,L,L.scopeId,ee,z),B){for(const q in B)q!=="value"&&!Dn(q)&&r(m,q,null,B[q],X,z);"value"in B&&r(m,"value",null,B.value,X),(_=B.onVnodeBeforeMount)&&fo(_,z,L)}re&&Xo(L,null,z,"beforeMount");const G=Zg(Z,ue);G&&ue.beforeEnter(m),n(m,O,I),((_=B&&B.onVnodeMounted)||G||re)&&Rt(()=>{try{_&&fo(_,z,L),G&&ue.enter(m),re&&Xo(L,null,z,"mounted")}finally{}},Z)},C=(L,O,I,z,Z)=>{if(I&&w(L,I),z)for(let X=0;X{for(let _=m;_{const Q=O.el=L.el;let{patchFlag:m,dynamicChildren:_,dirs:B}=O;m|=L.patchFlag&16;const W=L.props||Xe,ue=O.props||Xe;let re;if(I&&en(I,!1),(re=ue.onVnodeBeforeUpdate)&&fo(re,I,O,L),B&&Xo(O,L,I,"beforeUpdate"),I&&en(I,!0),_&&(!L.dynamicChildren||L.dynamicChildren.length!==_.length)&&(m=0,ee=!1,_=null),(W.innerHTML&&ue.innerHTML==null||W.textContent&&ue.textContent==null)&&u(Q,""),_?H(L.dynamicChildren,_,Q,I,z,ls(O,Z),X):ee||V(L,O,Q,null,I,z,ls(O,Z),X,!1),m>0){if(m&16)Y(Q,W,ue,I,Z);else if(m&2&&W.class!==ue.class&&r(Q,"class",null,ue.class,Z),m&4&&r(Q,"style",W.style,ue.style,Z),m&8){const G=O.dynamicProps;for(let q=0;q{re&&fo(re,I,O,L),B&&Xo(O,L,I,"updated")},z)},H=(L,O,I,z,Z,X,ee)=>{for(let Q=0;Q{if(O!==I){if(O!==Xe)for(const X in O)!Dn(X)&&!(X in I)&&r(L,X,O[X],null,Z,z);for(const X in I){if(Dn(X))continue;const ee=I[X],Q=O[X];ee!==Q&&X!=="value"&&r(L,X,Q,ee,Z,z)}"value"in I&&r(L,"value",O.value,I.value,Z)}},ae=(L,O,I,z,Z,X,ee,Q,m)=>{const _=O.el=L?L.el:i(""),B=O.anchor=L?L.anchor:i("");let{patchFlag:W,dynamicChildren:ue,slotScopeIds:re}=O;re&&(Q=Q?Q.concat(re):re),L==null?(n(_,I,z),n(B,I,z),T(O.children||[],I,B,Z,X,ee,Q,m)):W>0&&W&64&&ue&&L.dynamicChildren&&L.dynamicChildren.length===ue.length?(H(L.dynamicChildren,ue,I,Z,X,ee,Q),(O.key!=null||Z&&O===Z.subTree)&&cs(L,O,!0)):V(L,O,I,B,Z,X,ee,Q,m)},P=(L,O,I,z,Z,X,ee,Q,m)=>{O.slotScopeIds=Q,L==null?O.shapeFlag&512?Z.ctx.activate(O,I,z,ee,m):A(O,I,z,Z,X,ee,m):M(L,O,m)},A=(L,O,I,z,Z,X,ee)=>{const Q=L.component=lf(L,z,Z);if(za(L)&&(Q.ctx.renderer=Ze),cf(Q,!1,ee),Q.asyncDep){if(Z&&Z.registerDep(Q,S,ee),!L.el){const m=Q.subTree=He(po);g(null,m,O,I),L.placeholder=m.el}}else S(Q,L,O,I,Z,X,ee)},M=(L,O,I)=>{const z=O.component=L.component;if(Ug(L,O,I))if(z.asyncDep&&!z.asyncResolved){E(z,O,I);return}else z.next=O,z.update();else O.el=L.el,z.vnode=O},S=(L,O,I,z,Z,X,ee)=>{const Q=()=>{if(L.isMounted){let{next:W,bu:ue,u:re,parent:G,vnode:q}=L;{const U=ql(L);if(U){W&&(W.el=q.el,E(L,W,ee)),U.asyncDep.then(()=>{Rt(()=>{L.isUnmounted||_()},Z)});return}}let me=W,xe;en(L,!1),W?(W.el=q.el,E(L,W,ee)):W=q,ue&&Aa(ue),(xe=W.props&&W.props.onVnodeBeforeUpdate)&&fo(xe,G,W,q),en(L,!0);const De=Ol(L),D=L.subTree;L.subTree=De,y(D,De,p(D.el),st(D),L,Z,X),W.el=De.el,me===null&&Kg(L,De.el),re&&Rt(re,Z),(xe=W.props&&W.props.onVnodeUpdated)&&Rt(()=>fo(xe,G,W,q),Z)}else{let W;const{el:ue,props:re}=O,{bm:G,m:q,parent:me,root:xe,type:De}=L,D=yn(O);en(L,!1),G&&Aa(G),!D&&(W=re&&re.onVnodeBeforeMount)&&fo(W,me,O),en(L,!0);{xe.ce&&xe.ce._hasShadowRoot()&&xe.ce._injectChildStyle(De,L.parent?L.parent.type:void 0);const U=L.subTree=Ol(L);y(null,U,I,z,L,Z,X),O.el=U.el}if(q&&Rt(q,Z),!D&&(W=re&&re.onVnodeMounted)){const U=O;Rt(()=>fo(W,me,U),Z)}(O.shapeFlag&256||me&&yn(me.vnode)&&me.vnode.shapeFlag&256)&&L.a&&Rt(L.a,Z),L.isMounted=!0,O=I=z=null}};L.scope.on();const m=L.effect=new Gi(Q);L.scope.off();const _=L.update=m.run.bind(m),B=L.job=m.runIfDirty.bind(m);B.i=L,B.id=L.uid,m.scheduler=()=>Yr(B),en(L,!0),_()},E=(L,O,I)=>{O.component=L;const z=L.vnode.props;L.vnode=O,L.next=null,Hg(L,O.props,z,I),qg(L,O.children,I),ao(),ul(L),ro()},V=(L,O,I,z,Z,X,ee,Q,m=!1)=>{const _=L&&L.children,B=L?L.shapeFlag:0,W=O.children,{patchFlag:ue,shapeFlag:re}=O;if(ue>0){if(ue&128){F(_,W,I,z,Z,X,ee,Q,m);return}else if(ue&256){ie(_,W,I,z,Z,X,ee,Q,m);return}}re&8?(B&16&&Fe(_,Z,X),W!==_&&u(I,W)):B&16?re&16?F(_,W,I,z,Z,X,ee,Q,m):Fe(_,Z,X,!0):(B&8&&u(I,""),re&16&&T(W,I,z,Z,X,ee,Q,m))},ie=(L,O,I,z,Z,X,ee,Q,m)=>{L=L||un,O=O||un;const _=L.length,B=O.length,W=Math.min(_,B);let ue;for(ue=0;ueB?Fe(L,Z,X,!0,!1,W):T(O,I,z,Z,X,ee,Q,m,W)},F=(L,O,I,z,Z,X,ee,Q,m)=>{let _=0;const B=O.length;let W=L.length-1,ue=B-1;for(;_<=W&&_<=ue;){const re=L[_],G=O[_]=m?So(O[_]):go(O[_]);if(ta(re,G))y(re,G,I,null,Z,X,ee,Q,m);else break;_++}for(;_<=W&&_<=ue;){const re=L[W],G=O[ue]=m?So(O[ue]):go(O[ue]);if(ta(re,G))y(re,G,I,null,Z,X,ee,Q,m);else break;W--,ue--}if(_>W){if(_<=ue){const re=ue+1,G=reue)for(;_<=W;)pe(L[_],Z,X,!0),_++;else{const re=_,G=_,q=new Map;for(_=G;_<=ue;_++){const ke=O[_]=m?So(O[_]):go(O[_]);ke.key!=null&&q.set(ke.key,_)}let me,xe=0;const De=ue-G+1;let D=!1,U=0;const he=new Array(De);for(_=0;_=De){pe(ke,Z,X,!0);continue}let Be;if(ke.key!=null)Be=q.get(ke.key);else for(me=G;me<=ue;me++)if(he[me-G]===0&&ta(ke,O[me])){Be=me;break}Be===void 0?pe(ke,Z,X,!0):(he[Be-G]=_+1,Be>=U?U=Be:D=!0,y(ke,O[Be],I,null,Z,X,ee,Q,m),xe++)}const ve=D?Qg(he):un;for(me=ve.length-1,_=De-1;_>=0;_--){const ke=G+_,Be=O[ke],Le=O[ke+1],xt=ke+1{const{el:X,type:ee,transition:Q,children:m,shapeFlag:_}=L;if(_&6){ce(L.component.subTree,O,I,z);return}if(_&128){L.suspense.move(O,I,z);return}if(_&64){ee.move(L,O,I,Ze);return}if(ee===Me){n(X,O,I);for(let W=0;WQ.enter(X),Z));else{const{leave:W,delayLeave:ue,afterLeave:re}=Q,G=()=>{L.ctx.isUnmounted?a(X):n(X,O,I)},q=()=>{const me=X._isLeaving||!!X[Zr];X._isLeaving&&X[Zr](!0),Q.persisted&&!me?G():W(X,()=>{G(),re&&re()})};ue?ue(X,G,q):q()}else n(X,O,I)},pe=(L,O,I,z=!1,Z=!1)=>{const{type:X,props:ee,ref:Q,children:m,dynamicChildren:_,shapeFlag:B,patchFlag:W,dirs:ue,cacheIndex:re,memo:G}=L;if(W===-2&&(Z=!1),Q!=null&&(ao(),qn(Q,null,I,L,!0),ro()),re!=null&&(O.renderCache[re]=void 0),B&256){O.ctx.deactivate(L);return}const q=B&1&&ue,me=!yn(L);let xe;if(me&&(xe=ee&&ee.onVnodeBeforeUnmount)&&fo(xe,O,L),B&6)Ee(L.component,I,z);else{if(B&128){L.suspense.unmount(I,z);return}q&&Xo(L,null,O,"beforeUnmount"),B&64?L.type.remove(L,O,I,Ze,z):_&&!_.hasOnce&&(X!==Me||W>0&&W&64)?Fe(_,O,I,!1,!0):(X===Me&&W&384||!Z&&B&16)&&Fe(m,O,I),z&&se(L)}const De=G!=null&&re==null;(me&&(xe=ee&&ee.onVnodeUnmounted)||q||De)&&Rt(()=>{xe&&fo(xe,O,L),q&&Xo(L,null,O,"unmounted"),De&&(L.el=null)},I)},se=L=>{const{type:O,el:I,anchor:z,transition:Z}=L;if(O===Me){$e(I,z);return}if(O===qa){k(L);return}const X=()=>{a(I),Z&&!Z.persisted&&Z.afterLeave&&Z.afterLeave()};if(L.shapeFlag&1&&Z&&!Z.persisted){const{leave:ee,delayLeave:Q}=Z,m=()=>ee(I,X);Q?Q(L.el,X,m):m()}else X()},$e=(L,O)=>{let I;for(;L!==O;)I=f(L),a(L),L=I;a(O)},Ee=(L,O,I)=>{const{bum:z,scope:Z,job:X,subTree:ee,um:Q,m,a:_}=L;Jl(m),Jl(_),z&&Aa(z),Z.stop(),X&&(X.flags|=8,pe(ee,L,O,I)),Q&&Rt(Q,O),Rt(()=>{L.isUnmounted=!0},O)},Fe=(L,O,I,z=!1,Z=!1,X=0)=>{for(let ee=X;ee{if(L.shapeFlag&6)return st(L.component.subTree);if(L.shapeFlag&128)return L.suspense.next();const O=f(L.anchor||L.el),I=O&&O[ml];return I?f(I):O};let Ye=!1;const ft=(L,O,I)=>{let z;L==null?O._vnode&&(pe(O._vnode,null,null,!0),z=O._vnode.component):y(O._vnode||null,L,O,null,null,null,I),O._vnode=L,Ye||(Ye=!0,ul(z),dl(),Ye=!1)},Ze={p:y,um:pe,m:ce,r:se,mt:A,mc:T,pc:V,pbc:H,n:st,o:e};return{render:ft,hydrate:void 0,createApp:Fg(ft)}}function ls({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function en({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Zg(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function cs(e,t,o=!1){const n=e.children,a=t.children;if(we(n)&&we(a))for(let r=0;r>1,e[o[i]]0&&(t[n]=o[r-1]),o[r]=n)}}for(r=o.length,s=o[r-1];r-- >0;)o[r]=s,s=t[s];return o}function ql(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ql(t)}function Jl(e){if(e)for(let t=0;te.__isSuspense;function ef(e,t){t&&t.pendingBranch?we(e)?t.effects.push(...e):t.effects.push(e):rg(e)}const Me=Symbol.for("v-fgt"),Zn=Symbol.for("v-txt"),po=Symbol.for("v-cmt"),qa=Symbol.for("v-stc"),$o=[];let Kt=null;function K(e=!1){$o.push(Kt=e?null:[])}function us(){$o.pop(),Kt=$o[$o.length-1]||null}let Qn=1;function Ja(e,t=!1){Qn+=e,e<0&&Kt&&t&&(Kt.hasOnce=!0)}function Ql(e){return e.dynamicChildren=Qn>0?Kt||un:null,us(),Qn>0&&Kt&&Kt.push(e),e}function te(e,t,o,n,a,r){return Ql(N(e,t,o,n,a,r,!0))}function pt(e,t,o,n,a){return Ql(He(e,t,o,n,a,!0))}function ea(e){return e?e.__v_isVNode===!0:!1}function ta(e,t){return e.type===t.type&&e.key===t.key}const ec=({key:e})=>e??null,Xa=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?Qe(e)||at(e)||Ae(e)?{i:At,r:e,k:t,f:!!o}:e:null);function N(e,t=null,o=null,n=0,a=null,r=e===Me?0:1,s=!1,i=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ec(t),ref:t&&Xa(t),scopeId:gl,slotScopeIds:null,children:o,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:n,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:At};return i?(Za(l,o),r&128&&e.normalize(l)):o&&(l.shapeFlag|=Qe(o)?8:16),Qn>0&&!s&&Kt&&(l.patchFlag>0||r&6)&&l.patchFlag!==32&&Kt.push(l),l}const He=tf;function tf(e,t=null,o=null,n=0,a=null,r=!1){if((!e||e===Sl)&&(e=po),ea(e)){const i=vn(e,t,!0);return o&&Za(i,o),Qn>0&&!r&&Kt&&(i.shapeFlag&6?Kt[Kt.indexOf(e)]=i:Kt.push(i)),i.patchFlag=-2,i}if(hf(e)&&(e=e.__vccOpts),t){t=of(t);let{class:i,style:l}=t;i&&!Qe(i)&&(t.class=Ne(i)),Ve(l)&&(Ra(l)&&!we(l)&&(l=ut({},l)),t.style=nt(l))}const s=Qe(e)?1:Zl(e)?128:Ga(e)?64:Ve(e)?4:Ae(e)?2:0;return N(e,t,o,n,a,s,r,!0)}function of(e){return e?Ra(e)||Ul(e)?ut({},e):e:null}function vn(e,t,o=!1,n=!1){const{props:a,ref:r,patchFlag:s,children:i,transition:l}=e,c=t?af(a||{},t):a,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&ec(c),ref:t&&t.ref?o&&r?we(r)?r.concat(Xa(t)):[r,Xa(t)]:Xa(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Me?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&vn(e.ssContent),ssFallback:e.ssFallback&&vn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&n&&Qr(u,l.clone(u)),u}function mt(e=" ",t=0){return He(Zn,null,e,t)}function nf(e,t){const o=He(qa,null,e);return o.staticCount=t,o}function ye(e="",t=!1){return t?(K(),pt(po,null,e)):He(po,null,e)}function go(e){return e==null||typeof e=="boolean"?He(po):we(e)?He(Me,null,e.slice()):ea(e)?So(e):He(Zn,null,String(e))}function So(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:vn(e)}function Za(e,t){let o=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(we(t))o=16;else if(typeof t=="object")if(n&65){const a=t.default;a&&(a._c&&(a._d=!1),Za(e,a()),a._c&&(a._d=!0));return}else{o=32;const a=t._;!a&&!Ul(t)?t._ctx=At:a===3&&At&&(At.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(Ae(t)){if(n&65){Za(e,{default:t});return}t={default:t,_ctx:At},o=32}else t=String(t),n&64?(o=16,t=[mt(t)]):o=8;e.children=t,e.shapeFlag|=o}function af(...e){const t={};for(let o=0;oCt||At;let Qa,oa;{const e=Ca(),t=(o,n)=>{let a;return(a=e[o])||(a=e[o]=[]),a.push(n),r=>{a.length>1?a.forEach(s=>s(r)):a[0](r)}};Qa=t("__VUE_INSTANCE_SETTERS__",o=>Ct=o),oa=t("__VUE_SSR_SETTERS__",o=>kn=o)}const na=e=>{const t=Ct;return Qa(e),e.scope.on(),()=>{e.scope.off(),Qa(t)}},tc=()=>{Ct&&Ct.scope.off(),Qa(null)};function oc(e){return e.vnode.shapeFlag&4}let kn=!1;function cf(e,t=!1,o=!1){t&&oa(t);const{props:n,children:a}=e.vnode,r=oc(e);zg(e,n,r,t),Yg(e,a,o||t);const s=r?uf(e,t):void 0;return t&&oa(!1),s}function uf(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Lg);const{setup:n}=o;if(n){ao();const a=e.setupContext=n.length>1?pf(e):null,r=na(e),s=hn(n,e,0,[e.props,a]),i=Li(s);if(ro(),r(),(i||e.sp)&&!yn(e)&&es(e),i){if(s.then(tc,tc),t)return s.then(l=>{oa(!0);try{nc(e,l,t)}finally{oa(!1)}}).catch(l=>{Hn(l,e,0)});e.asyncDep=s}else nc(e,s)}else ac(e)}function nc(e,t,o){Ae(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ve(t)&&(e.setupState=rl(t)),ac(e)}function ac(e,t,o){const n=e.type;e.render||(e.render=n.render||oo);{const a=na(e);ao();try{Tg(e)}finally{ro(),a()}}}const df={get(e,t){return Pt(e,"get",""),e[t]}};function pf(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,df),slots:e.slots,emit:e.emit,expose:t}}function er(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(rl(qo(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in Jn)return Jn[o](e)},has(t,o){return o in t||o in Jn}})):e.proxy}const gf=/(?:^|[-_])\w/g,ff=e=>e.replace(gf,t=>t.toUpperCase()).replace(/[-_]/g,"");function rc(e,t=!0){return Ae(e)?e.displayName||e.name:e.name||t&&e.__name}function sc(e,t,o=!1){let n=rc(t);if(!n&&t.__file){const a=t.__file.match(/([^/\\]+)\.\w+$/);a&&(n=a[1])}if(!n&&e){const a=r=>{for(const s in r)if(r[s]===t)return s};n=a(e.components)||e.parent&&a(e.parent.type.components)||a(e.appContext.components)}return n?ff(n):o?"App":"Anonymous"}function hf(e){return Ae(e)&&"__vccOpts"in e}const oe=(e,t)=>Jp(e,t,kn);function ic(e,t,o){try{Ja(-1);const n=arguments.length;return n===2?Ve(t)&&!we(t)?ea(t)?He(e,null,[t]):He(e,t):He(e,null,t):(n>3?o=Array.prototype.slice.call(arguments,2):n===3&&ea(o)&&(o=[o]),He(e,t,o))}finally{Ja(1)}}const mf="3.5.42";/** +`,...ug(a)),console.warn(...r)}ro(),Wr=!1}function cg(){let e=zn[zn.length-1];if(!e)return[];const t=[];for(;e;){const o=t[0];o&&o.vnode===e?o.recurseCount++:t.push({vnode:e,recurseCount:0});const n=e.component&&e.component.parent;e=n&&n.vnode}return t}function ug(e){const t=[];return e.forEach((o,n)=>{t.push(...n===0?[]:[` +`],...dg(o))}),t}function dg({vnode:e,recurseCount:t}){const o=t>0?`... (${t} recursive calls)`:"",n=e.component?e.component.parent==null:!1,a=` at <${sc(e.component,e.type,n)}`,r=">"+o;return e.props?[a,...pg(e.props),r]:[a+r]}function pg(e){const t=[],o=Object.keys(e);return o.slice(0,3).forEach(n=>{t.push(...il(n,e[n]))}),o.length>3&&t.push(" ..."),t}function il(e,t,o){return tt(t)?(t=JSON.stringify(t),o?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?o?t:[`${e}=${t}`]:st(t)?(t=il(e,Be(t.value),!0),o?t:[`${e}=Ref<`,t,">"]):$e(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=Be(t),o?t:[`${e}=`,t])}function hn(e,t,o,n){try{return n?e(...n):e()}catch(a){Hn(a,t,o)}}function Jt(e,t,o,n){if($e(e)){const a=hn(e,t,o,n);return a&&Li(a)&&a.catch(r=>{Hn(r,t,o)}),a}if(xe(e)){const a=[];for(let r=0;r>>1,a=Nt[n],r=Vn(a);r=Vn(o)?Nt.push(e):Nt.splice(fg(t),0,e),e.flags|=1,cl()}}function cl(){Da||(Da=ll.then(pl))}function hg(e){if(!xe(e))Io&&e.id===-1?Io.splice(bn+1,0,e):e.flags&1||(mn.push(e),e.flags|=1);else for(let t=0;tVn(o)-Vn(n));if(mn.length=0,Io){for(let o=0;oe.id==null?e.flags&2?-1:1/0:e.id;function pl(e){try{for(io=0;io{n._d&&Ja(-1);const r=Ba(t),s=Ao.length;let i;try{i=e(...a)}finally{for(let l=Ao.length;l>s;l--)us();Ba(r),n._d&&Ja(1)}return i};return n._n=!0,n._c=!0,n._d=!0,n}function fl(e,t){if($t===null)return e;const o=er($t),n=e.dirs||(e.dirs=[]);for(let a=0;a1)return o&&$e(t)?t.call(n&&n.proxy):t}}function mg(){return!!($o()||Qo)}const bg=Symbol.for("v-scx"),yg=()=>Fe(bg);function _g(e,t){return qr(e,null,t)}function ct(e,t,o){return qr(e,t,o)}function qr(e,t,o=et){const{immediate:n,deep:a,flush:r,once:s}=o,i=dt({},o),l=t&&n||!t&&r!=="post";let u;if(kn){if(r==="sync"){const k=yg();u=k.__watcherHandles||(k.__watcherHandles=[])}else if(!l){const k=()=>{};return k.stop=oo,k.resume=oo,k.pause=oo,k}}const c=Ct;i.call=(k,w,_)=>Jt(k,c,w,_);let p=!1;r==="post"?i.scheduler=k=>{It(k,c&&c.suspense)}:r!=="sync"&&(p=!0,i.scheduler=(k,w)=>{w?k():Yr(k)}),i.augmentJob=k=>{t&&(k.flags|=4),p&&(k.flags|=2,c&&(k.id=c.uid,k.i=c))};const g=lg(e,t,i);return kn&&(u?u.push(g):l&&g()),g}function vg(e,t,o){const n=this.proxy,a=tt(e)?e.includes(".")?hl(n,e):()=>n[e]:e.bind(n,n);let r;$e(t)?r=t:(r=t.handler,o=t);const s=na(this),i=qr(a,r.bind(n),o);return s(),i}function hl(e,t){const o=t.split(".");return()=>{let n=e;for(let a=0;ae.__isTeleport,Zo=e=>e&&(e.disabled||e.disabled===""),kg=e=>e&&(e.defer||e.defer===""),bl=e=>typeof SVGElement<"u"&&e instanceof SVGElement,yl=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Jr=(e,t)=>{const o=e&&e.to;return tt(o)?t?t(o):null:o},wg={name:"Teleport",__isTeleport:!0,process(e,t,o,n,a,r,s,i,l,u){const{mc:c,pc:p,pbc:g,o:{insert:k,querySelector:w,createText:_,createComment:d,parentNode:h}}=u,f=Zo(t.props);let{dynamicChildren:m}=t;const v=(S,T,I)=>{S.shapeFlag&16&&c(S.children,T,I,a,r,s,i,l)},x=(S=t)=>{const T=Zo(S.props),I=S.target=Jr(S.props,w),H=Xr(I,S,_,k);I&&(s!=="svg"&&bl(I)?s="svg":s!=="mathml"&&yl(I)&&(s="mathml"),a&&a.isCE&&(a.ce._teleportTargets||(a.ce._teleportTargets=new Set)).add(I),T||(v(S,I,H),Wn(S,!1)))},A=S=>{const T=()=>{if(Oo.get(S)===T){if(Oo.delete(S),Zo(S.props)){const I=h(S.el)||o;v(S,I,S.anchor),Wn(S,!0)}x(S)}};Oo.set(S,T),It(T,r)};if(e==null){const S=t.el=_(""),T=t.anchor=_("");if(k(S,o,n),k(T,o,n),kg(t.props)||r&&r.pendingBranch){A(t);return}f&&(v(t,o,T),Wn(t,!0)),x()}else{t.el=e.el;const S=t.anchor=e.anchor,T=Oo.get(e);if(T){T.flags|=8,Oo.delete(e),A(t);return}t.targetStart=e.targetStart;const I=t.target=e.target,H=t.targetAnchor=e.targetAnchor,W=Zo(e.props),re=W?o:I,P=W?S:H;if(s==="svg"||bl(I)?s="svg":(s==="mathml"||yl(I))&&(s="mathml"),m?(g(e.dynamicChildren,m,re,a,r,s,i),cs(e,t,!0)):l||p(e,t,re,P,a,r,s,i,!1),f)W?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ja(t,o,S,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const $=Jr(t.props,w);$&&(t.target=$,ja(t,$,null,u,0))}else W&&ja(t,I,H,u,1);Wn(t,f)}},remove(e,t,o,{um:n,o:{remove:a}},r){const{shapeFlag:s,children:i,anchor:l,targetStart:u,targetAnchor:c,target:p,props:g}=e,k=Zo(g),w=r||!k,_=Oo.get(e);if(_&&(_.flags|=8,Oo.delete(e)),p&&(a(u),a(c)),r&&a(l),!_&&(k||p)&&s&16)for(let d=0;d1){for(const o of e)if(o.type!==po){t=o;break}}return t}function _l(e){if(!za(e))return Ga(e.type)&&e.children?Sg(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&$e(o.default))return o.default()}}function Qr(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;Qr(Ga(o.type)&&_l(o)||o,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Yn(e,t){return $e(e)?dt({name:e.name},t,{setup:e}):e}function es(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function vl(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}const Ua=new WeakMap;function qn(e,t,o,n,a=!1){if(xe(e)){e.forEach((_,d)=>qn(_,t&&(xe(t)?t[d]:t),o,n,a));return}if(yn(n)&&!a){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&qn(e,t,o,n.component.subTree);return}const r=n.shapeFlag&4?er(n.component):n.el,s=a?null:r,{i,r:l}=e,u=t&&t.r,c=i.refs===et?i.refs={}:i.refs,p=i.setupState,g=Be(p),k=p===et?Ei:_=>vl(c,_)?!1:Ve(g,_),w=(_,d)=>!(d&&vl(c,d));if(u!=null&&u!==l){if(kl(t),tt(u))c[u]=null,k(u)&&(p[u]=null);else if(st(u)){const _=t;w(u,_.k)&&(u.value=null),_.k&&(c[_.k]=null)}}if($e(l))hn(l,i,12,[s,c]);else{const _=tt(l),d=st(l);if(_||d){const h=()=>{if(e.f){const f=_?k(l)?p[l]:c[l]:w()||!e.k?l.value:c[e.k];if(a)xe(f)&&Mr(f,r);else if(xe(f))f.includes(r)||f.push(r);else if(_)c[l]=[r],k(l)&&(p[l]=c[l]);else{const m=[r];w(l,e.k)&&(l.value=m),e.k&&(c[e.k]=m)}}else _?(c[l]=s,k(l)&&(p[l]=s)):d&&(w(l,e.k)&&(l.value=s),e.k&&(c[e.k]=s))};if(s){const f=()=>{h(),Ua.delete(e)};f.id=-1,Ua.set(e,f),It(f,o)}else kl(e),h()}}}function kl(e){const t=Ua.get(e);t&&(t.flags|=8,Ua.delete(e))}const wl=e=>e.nodeType===8;Ca().requestIdleCallback,Ca().cancelIdleCallback;function $g(e,t){if(wl(e)&&e.data==="["){let o=1,n=e.nextSibling;for(;n;){if(n.nodeType===1){if(t(n)===!1)break}else if(wl(n))if(n.data==="]"){if(--o===0)break}else n.data==="["&&o++;n=n.nextSibling}}else t(e)}const yn=e=>!!e.type.__asyncLoader;function Eg(e){$e(e)&&(e={loader:e});const{loader:t,loadingComponent:o,errorComponent:n,delay:a=200,hydrate:r,timeout:s,suspensible:i=!0,onError:l}=e;let u=null,c,p=0;const g=()=>(p++,u=null,k()),k=()=>{let w;return u||(w=u=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),l)return new Promise((d,h)=>{l(_,()=>d(g()),()=>h(_),p+1)});throw _}).then(_=>w!==u&&u?u:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),c=_,_)))};return Yn({name:"AsyncComponentWrapper",__asyncLoader:k,__asyncHydrate(w,_,d){const h=w.isConnected;let f=!1;(_.bu||(_.bu=[])).push(()=>f=!0);const m=()=>{f||!w.parentNode||h&&!w.isConnected||d()},v=r?()=>{const x=r(m,A=>$g(w,A));x&&(_.bum||(_.bum=[])).push(x)}:m;c?v():k().then(()=>!_.isUnmounted&&v())},get __asyncResolved(){return c},setup(){const w=Ct;if(es(w),c)return()=>Ka(c,w);const _=x=>{u=null,Hn(x,w,13,!n)};if(i&&w.suspense||kn)return k().then(x=>()=>Ka(x,w)).catch(x=>(_(x),()=>n?We(n,{error:x}):null));const d=de(!1),h=de(),f=de(!!a);let m,v;return Va(()=>{m!=null&&clearTimeout(m),v!=null&&clearTimeout(v)}),a&&(v=setTimeout(()=>{w.isUnmounted||(f.value=!1)},a)),s!=null&&(m=setTimeout(()=>{if(!w.isUnmounted&&!d.value&&!h.value){const x=new Error(`Async component timed out after ${s}ms.`);_(x),h.value=x}},s)),k().then(()=>{w.isUnmounted||(d.value=!0,w.parent&&za(w.parent.vnode)&&w.parent.update())}).catch(x=>{if(w.isUnmounted){u=null;return}_(x),h.value=x}),()=>{if(d.value&&c)return Ka(c,w);if(h.value&&n)return We(n,{error:h.value});if(o&&!f.value)return Ka(o,w)}}})}function Ka(e,t){const{ref:o,props:n,children:a,ce:r}=t.vnode,s=We(e,n,a);return s.ref=o,s.ce=r,delete t.vnode.ce,s}const za=e=>e.type.__isKeepAlive;function Cg(e,t){xl(e,"a",t)}function Lg(e,t){xl(e,"da",t)}function xl(e,t,o=Ct){const n=e.__wdc||(e.__wdc=()=>{let a=o;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Ha(t,n,o),o){let a=o.parent;for(;a&&a.parent;)za(a.parent.vnode)&&Tg(n,t,o,a),a=a.parent}}function Tg(e,t,o,n){const a=Ha(t,e,n,!0);Va(()=>{Mr(n[t],a)},o)}function Ha(e,t,o=Ct,n=!1){if(o){const a=o[e]||(o[e]=[]),r=t.__weh||(t.__weh=(...s)=>{ao();const i=na(o),l=Jt(t,o,e,s);return i(),ro(),l});return n?a.unshift(r):a.push(r),r}}const xo=e=>(t,o=Ct)=>{(!kn||e==="sp")&&Ha(e,(...n)=>t(...n),o)},Al=xo("bm"),co=xo("m"),Pg=xo("bu"),Mg=xo("u"),uo=xo("bum"),Va=xo("um"),Ng=xo("sp"),Rg=xo("rtg"),Ig=xo("rtc");function Og(e,t=Ct){Ha("ec",e,t)}const Fg="components",Sl=Symbol.for("v-ndc");function $l(e){return tt(e)?Dg(Fg,e,!1)||e:e||Sl}function Dg(e,t,o=!0,n=!1){const a=$t||Ct;if(a){const r=a.type;{const i=rc(r,!1);if(i&&(i===t||i===_t(t)||i===Sa(_t(t))))return r}const s=El(a[e]||r[e],t)||El(a.appContext[e],t);return!s&&n?r:s}}function El(e,t){return e&&(e[t]||e[_t(t)]||e[Sa(_t(t))])}function Et(e,t,o,n){let a;const r=o,s=xe(e);if(s||tt(e)){const i=s&&vo(e);let l=!1,u=!1;i&&(l=!Ut(e),u=ko(e),e=Ta(e)),a=new Array(e.length);for(let c=0,p=e.length;ct(i,l,void 0,r));else{const i=Object.keys(e);a=new Array(i.length);for(let l=0,u=i.length;l0;return t!=="default"&&(u.name=t),z(),pt(Pe,null,[We("slot",u,n)],c?-2:64)}let s=e[t];s&&s._c&&(s._d=!1);const i=Ao.length;z();let l;try{const u=s&&Cl(s(o)),c=o.key||r||u&&u.key;l=pt(Pe,{key:(c&&!Gt(c)?c:`_${t}`)+(!u&&n?"_fb":"")},u||(n?n():[]),u&&e._===1?64:-2)}catch(u){for(let c=Ao.length;c>i;c--)us();throw u}finally{s&&s._c&&(s._d=!0)}return!a&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),l}function Cl(e){return e.some(t=>ea(t)?!(t.type===po||t.type===Pe&&!Cl(t.children)):!0)?e:null}const ts=e=>e?oc(e)?er(e):ts(e.parent):null,Jn=dt(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=>ts(e.parent),$root:e=>ts(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ml(e),$forceUpdate:e=>e.f||(e.f=()=>{Yr(e.update)}),$nextTick:e=>e.n||(e.n=lo.bind(e.proxy)),$watch:e=>vg.bind(e)}),os=(e,t)=>e!==et&&!e.__isScriptSetup&&Ve(e,t),Bg={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:o,setupState:n,data:a,props:r,accessCache:s,type:i,appContext:l}=e;if(t[0]!=="$"){const g=s[t];if(g!==void 0)switch(g){case 1:return n[t];case 2:return a[t];case 4:return o[t];case 3:return r[t]}else{if(os(n,t))return s[t]=1,n[t];if(a!==et&&Ve(a,t))return s[t]=2,a[t];if(Ve(r,t))return s[t]=3,r[t];if(o!==et&&Ve(o,t))return s[t]=4,o[t];ns&&(s[t]=0)}}const u=Jn[t];let c,p;if(u)return t==="$attrs"&&Pt(e.attrs,"get",""),u(e);if((c=i.__cssModules)&&(c=c[t]))return c;if(o!==et&&Ve(o,t))return s[t]=4,o[t];if(p=l.config.globalProperties,Ve(p,t))return p[t]},set({_:e},t,o){const{data:n,setupState:a,ctx:r}=e;return os(a,t)?(a[t]=o,!0):n!==et&&Ve(n,t)?(n[t]=o,!0):Ve(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:n,appContext:a,props:r,type:s}},i){let l;return!!(o[i]||e!==et&&i[0]!=="$"&&Ve(e,i)||os(t,i)||Ve(r,i)||Ve(n,i)||Ve(Jn,i)||Ve(a.config.globalProperties,i)||(l=s.__cssModules)&&l[i])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:Ve(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function Ll(e){return xe(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let ns=!0;function Gg(e){const t=Ml(e),o=e.proxy,n=e.ctx;ns=!1,t.beforeCreate&&Tl(t.beforeCreate,e,"bc");const{data:a,computed:r,methods:s,watch:i,provide:l,inject:u,created:c,beforeMount:p,mounted:g,beforeUpdate:k,updated:w,activated:_,deactivated:d,beforeDestroy:h,beforeUnmount:f,destroyed:m,unmounted:v,render:x,renderTracked:A,renderTriggered:S,errorCaptured:T,serverPrefetch:I,expose:H,inheritAttrs:W,components:re,directives:P,filters:$}=t;if(u&&jg(u,n,null),s)for(const N in s){const ne=s[N];$e(ne)&&(n[N]=ne.bind(o))}if(a){const N=a.call(o,o);Ye(N)&&(e.data=pn(N))}if(ns=!0,r)for(const N in r){const ne=r[N],ge=$e(ne)?ne.bind(o,o):$e(ne.get)?ne.get.bind(o,o):oo,L=!$e(ne)&&$e(ne.set)?ne.set.bind(o):oo,ae=te({get:ge,set:L});Object.defineProperty(n,N,{enumerable:!0,configurable:!0,get:()=>ae.value,set:ie=>ae.value=ie})}if(i)for(const N in i)Pl(i[N],n,o,N);if(l){const N=$e(l)?l.call(o):l;Reflect.ownKeys(N).forEach(ne=>{Ft(ne,N[ne])})}c&&Tl(c,e,"c");function C(N,ne){xe(ne)?ne.forEach(ge=>N(ge.bind(o))):ne&&N(ne.bind(o))}if(C(Al,p),C(co,g),C(Pg,k),C(Mg,w),C(Cg,_),C(Lg,d),C(Og,T),C(Ig,A),C(Rg,S),C(uo,f),C(Va,v),C(Ng,I),xe(H))if(H.length){const N=e.exposed||(e.exposed={});H.forEach(ne=>{Object.defineProperty(N,ne,{get:()=>o[ne],set:ge=>o[ne]=ge,enumerable:!0})})}else e.exposed||(e.exposed={});x&&e.render===oo&&(e.render=x),W!=null&&(e.inheritAttrs=W),re&&(e.components=re),P&&(e.directives=P),I&&es(e)}function jg(e,t,o=oo){xe(e)&&(e=as(e));for(const n in e){const a=e[n];let r;Ye(a)?"default"in a?r=Fe(a.from||n,a.default,!0):r=Fe(a.from||n):r=Fe(a),st(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:s=>r.value=s}):t[n]=r}}function Tl(e,t,o){Jt(xe(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,o)}function Pl(e,t,o,n){let a=n.includes(".")?hl(o,n):()=>o[n];if(tt(e)){const r=t[e];$e(r)&&ct(a,r)}else if($e(e))ct(a,e.bind(o));else if(Ye(e))if(xe(e))e.forEach(r=>Pl(r,t,o,n));else{const r=$e(e.handler)?e.handler.bind(o):t[e.handler];$e(r)&&ct(a,r,e)}}function Ml(e){const t=e.type,{mixins:o,extends:n}=t,{mixins:a,optionsCache:r,config:{optionMergeStrategies:s}}=e.appContext,i=r.get(t);let l;return i?l=i:!a.length&&!o&&!n?l=t:(l={},a.length&&a.forEach(u=>Wa(l,u,s,!0)),Wa(l,t,s)),Ye(t)&&r.set(t,l),l}function Wa(e,t,o,n=!1){const{mixins:a,extends:r}=t;r&&Wa(e,r,o,!0),a&&a.forEach(s=>Wa(e,s,o,!0));for(const s in t)if(!(n&&s==="expose")){const i=Ug[s]||o&&o[s];e[s]=i?i(e[s],t[s]):t[s]}return e}const Ug={data:Nl,props:Rl,emits:Rl,methods:Xn,computed:Xn,beforeCreate:Rt,created:Rt,beforeMount:Rt,mounted:Rt,beforeUpdate:Rt,updated:Rt,beforeDestroy:Rt,beforeUnmount:Rt,destroyed:Rt,unmounted:Rt,activated:Rt,deactivated:Rt,errorCaptured:Rt,serverPrefetch:Rt,components:Xn,directives:Xn,watch:zg,provide:Nl,inject:Kg};function Nl(e,t){return t?e?function(){return dt($e(e)?e.call(this,this):e,$e(t)?t.call(this,this):t)}:t:e}function Kg(e,t){return Xn(as(e),as(t))}function as(e){if(xe(e)){const t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${_t(t)}Modifiers`]||e[`${jt(t)}Modifiers`];function Yg(e,t,...o){if(e.isUnmounted)return;const n=e.vnode.props||et;let a=o;const r=t.startsWith("update:"),s=r&&Wg(n,t.slice(7));s&&(s.trim&&(a=o.map(c=>tt(c)?c.trim():c)),s.number&&(a=a.map(Ea)));let i,l=n[i=Nr(t)]||n[i=Nr(_t(t))];!l&&r&&(l=n[i=Nr(jt(t))]),l&&Jt(l,e,6,a);const u=n[i+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,Jt(u,e,6,a)}}const qg=new WeakMap;function Ol(e,t,o=!1){const n=o?qg:t.emitsCache,a=n.get(e);if(a!==void 0)return a;const r=e.emits;let s={},i=!1;if(!$e(e)){const l=u=>{const c=Ol(u,t,!0);c&&(i=!0,dt(s,c))};!o&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!r&&!i?(Ye(e)&&n.set(e,null),null):(xe(r)?r.forEach(l=>s[l]=null):dt(s,r),Ye(e)&&n.set(e,s),s)}function Ya(e,t){return!e||!va(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),Ve(e,t[0].toLowerCase()+t.slice(1))||Ve(e,jt(t))||Ve(e,t))}function Jx(){}function Fl(e){const{type:t,vnode:o,proxy:n,withProxy:a,propsOptions:[r],slots:s,attrs:i,emit:l,render:u,renderCache:c,props:p,data:g,setupState:k,ctx:w,inheritAttrs:_}=e,d=Ba(e);let h,f;try{if(o.shapeFlag&4){const v=a||n,x=v;h=go(u.call(x,v,c,p,k,g,w)),f=i}else{const v=t;h=go(v.length>1?v(p,{attrs:i,slots:s,emit:l}):v(p,null)),f=t.props?i:Jg(i)}}catch(v){Ao.length=0,Hn(v,e,1),h=We(po)}let m=h;if(f&&_!==!1){const v=Object.keys(f),{shapeFlag:x}=m;v.length&&x&7&&(r&&v.some(ka)&&(f=Xg(f,r)),m=vn(m,f,!1,!0))}if(o.dirs&&(m=vn(m,null,!1,!0),m.dirs=m.dirs?m.dirs.concat(o.dirs):o.dirs),o.transition){const v=Ga(m.type)&&_l(m)||m;Qr(v,o.transition)}return h=m,Ba(d),h}const Jg=e=>{let t;for(const o in e)(o==="class"||o==="style"||va(o))&&((t||(t={}))[o]=e[o]);return t},Xg=(e,t)=>{const o={};for(const n in e)(!ka(n)||!(n.slice(9)in t))&&(o[n]=e[n]);return o};function Zg(e,t,o){const{props:n,children:a,component:r}=e,{props:s,children:i,patchFlag:l}=t,u=r.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&l>=0){if(l&1024)return!0;if(l&16)return n?Dl(n,s,u):!!s;if(l&8){const c=t.dynamicProps;for(let p=0;pObject.create(Gl),Ul=e=>Object.getPrototypeOf(e)===Gl;function ef(e,t,o,n=!1){const a={},r=jl();e.propsDefaults=Object.create(null),Kl(e,t,a,r);for(const s in e.propsOptions[0])s in a||(a[s]=void 0);o?e.props=n?a:Zp(a):e.type.props?e.props=a:e.props=r,e.attrs=r}function tf(e,t,o,n){const{props:a,attrs:r,vnode:{patchFlag:s}}=e,i=Be(a),[l]=e.propsOptions;let u=!1;if((n||s>0)&&!(s&16)){if(s&8){const c=e.vnode.dynamicProps;for(let p=0;p{l=!0;const[g,k]=zl(p,t,!0);dt(s,g),k&&i.push(...k)};!o&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!r&&!l)return Ye(e)&&n.set(e,un),un;if(xe(r))for(let c=0;ce==="_"||e==="_ctx"||e==="$stable",is=e=>xe(e)?e.map(go):[go(e)],nf=(e,t,o)=>{if(t._n)return t;const n=Vt((...a)=>is(t(...a)),o);return n._c=!1,n},Vl=(e,t,o)=>{const n=e._ctx;for(const a in e){if(ss(a))continue;const r=e[a];if($e(r))t[a]=nf(a,r,n);else if(r!=null){const s=is(r);t[a]=()=>s}}},Wl=(e,t)=>{const o=is(t);e.slots.default=()=>o},Yl=(e,t,o)=>{for(const n in t)(o||!ss(n))&&(e[n]=t[n])},af=(e,t,o)=>{const n=e.slots=jl();if(e.vnode.shapeFlag&32){const a=t._;a?(Yl(n,t,o),o&&Pi(n,"_",a,!0)):Vl(t,n)}else t&&Wl(e,t)},rf=(e,t,o)=>{const{vnode:n,slots:a}=e;let r=!0,s=et;if(n.shapeFlag&32){const i=t._;i?o&&i===1?r=!1:Yl(a,t,o):(r=!t.$stable,Vl(t,a)),s=t}else t&&(Wl(e,t),s={default:1});if(r)for(const i in a)!ss(i)&&s[i]==null&&delete a[i]},It=df;function sf(e){return lf(e)}function lf(e,t){const o=Ca();o.__VUE__=!0;const{insert:n,remove:a,patchProp:r,createElement:s,createText:i,createComment:l,setText:u,setElementText:c,parentNode:p,nextSibling:g,setScopeId:k=oo,insertStaticContent:w}=e,_=(E,F,O,K=null,X=null,J=null,Z=void 0,Q=null,b=!!F.dynamicChildren)=>{if(E===F)return;E&&!ta(E,F)&&(K=Oe(E),ie(E,X,J,!0),E=null),F.patchFlag===-2&&(b=!1,F.dynamicChildren=null);const{type:y,ref:B,shapeFlag:V}=F;switch(y){case Zn:d(E,F,O,K);break;case po:h(E,F,O,K);break;case qa:E==null&&f(F,O,K,Z);break;case Pe:re(E,F,O,K,X,J,Z,Q,b);break;default:V&1?x(E,F,O,K,X,J,Z,Q,b):V&6?P(E,F,O,K,X,J,Z,Q,b):(V&64||V&128)&&y.process(E,F,O,K,X,J,Z,Q,b,Xe)}B!=null&&X?qn(B,E&&E.ref,J,F||E,!F):B==null&&E&&E.ref!=null&&qn(E.ref,null,J,E,!0)},d=(E,F,O,K)=>{if(E==null)n(F.el=i(F.children),O,K);else{const X=F.el=E.el;F.children!==E.children&&u(X,F.children)}},h=(E,F,O,K)=>{E==null?n(F.el=l(F.children||""),O,K):F.el=E.el},f=(E,F,O,K)=>{[E.el,E.anchor]=w(E.children,F,O,K,E.el,E.anchor)},m=({el:E,anchor:F},O,K)=>{let X;for(;E&&E!==F;)X=g(E),n(E,O,K),E=X;n(F,O,K)},v=({el:E,anchor:F})=>{let O;for(;E&&E!==F;)O=g(E),a(E),E=O;a(F)},x=(E,F,O,K,X,J,Z,Q,b)=>{if(F.type==="svg"?Z="svg":F.type==="math"&&(Z="mathml"),E==null)A(F,O,K,X,J,Z,Q,b);else{const y=E.el&&E.el._isVueCE?E.el:null;try{y&&y._beginPatch(),I(E,F,X,J,Z,Q,b)}finally{y&&y._endPatch()}}},A=(E,F,O,K,X,J,Z,Q)=>{let b,y;const{props:B,shapeFlag:V,transition:ue,dirs:se}=E;if(b=E.el=s(E.type,J,B&&B.is,B),V&8?c(b,E.children):V&16&&T(E.children,b,null,K,X,ls(E,J),Z,Q),se&&Xo(E,null,K,"created"),S(b,E,E.scopeId,Z,K),B){for(const Y in B)Y!=="value"&&!Dn(Y)&&r(b,Y,null,B[Y],J,K);"value"in B&&r(b,"value",null,B.value,J),(y=B.onVnodeBeforeMount)&&fo(y,K,E)}se&&Xo(E,null,K,"beforeMount");const G=cf(X,ue);G&&ue.beforeEnter(b),n(b,F,O),((y=B&&B.onVnodeMounted)||G||se)&&It(()=>{try{y&&fo(y,K,E),G&&ue.enter(b),se&&Xo(E,null,K,"mounted")}finally{}},X)},S=(E,F,O,K,X)=>{if(O&&k(E,O),K)for(let J=0;J{for(let y=b;y{const Q=F.el=E.el;let{patchFlag:b,dynamicChildren:y,dirs:B}=F;b|=E.patchFlag&16;const V=E.props||et,ue=F.props||et;let se;if(O&&en(O,!1),(se=ue.onVnodeBeforeUpdate)&&fo(se,O,F,E),B&&Xo(F,E,O,"beforeUpdate"),O&&en(O,!0),y&&(!E.dynamicChildren||E.dynamicChildren.length!==y.length)&&(b=0,Z=!1,y=null),(V.innerHTML&&ue.innerHTML==null||V.textContent&&ue.textContent==null)&&c(Q,""),y?H(E.dynamicChildren,y,Q,O,K,ls(F,X),J):Z||ne(E,F,Q,null,O,K,ls(F,X),J,!1),b>0){if(b&16)W(Q,V,ue,O,X);else if(b&2&&V.class!==ue.class&&r(Q,"class",null,ue.class,X),b&4&&r(Q,"style",V.style,ue.style,X),b&8){const G=F.dynamicProps;for(let Y=0;Y{se&&fo(se,O,F,E),B&&Xo(F,E,O,"updated")},K)},H=(E,F,O,K,X,J,Z)=>{for(let Q=0;Q{if(F!==O){if(F!==et)for(const J in F)!Dn(J)&&!(J in O)&&r(E,J,F[J],null,X,K);for(const J in O){if(Dn(J))continue;const Z=O[J],Q=F[J];Z!==Q&&J!=="value"&&r(E,J,Q,Z,X,K)}"value"in O&&r(E,"value",F.value,O.value,X)}},re=(E,F,O,K,X,J,Z,Q,b)=>{const y=F.el=E?E.el:i(""),B=F.anchor=E?E.anchor:i("");let{patchFlag:V,dynamicChildren:ue,slotScopeIds:se}=F;se&&(Q=Q?Q.concat(se):se),E==null?(n(y,O,K),n(B,O,K),T(F.children||[],O,B,X,J,Z,Q,b)):V>0&&V&64&&ue&&E.dynamicChildren&&E.dynamicChildren.length===ue.length?(H(E.dynamicChildren,ue,O,X,J,Z,Q),(F.key!=null||X&&F===X.subTree)&&cs(E,F,!0)):ne(E,F,O,B,X,J,Z,Q,b)},P=(E,F,O,K,X,J,Z,Q,b)=>{F.slotScopeIds=Q,E==null?F.shapeFlag&512?X.ctx.activate(F,O,K,Z,b):$(F,O,K,X,J,Z,b):M(E,F,b)},$=(E,F,O,K,X,J,Z)=>{const Q=E.component=yf(E,K,X);if(za(E)&&(Q.ctx.renderer=Xe),_f(Q,!1,Z),Q.asyncDep){if(X&&X.registerDep(Q,C,Z),!E.el){const b=Q.subTree=We(po);h(null,b,F,O),E.placeholder=b.el}}else C(Q,E,F,O,X,J,Z)},M=(E,F,O)=>{const K=F.component=E.component;if(Zg(E,F,O))if(K.asyncDep&&!K.asyncResolved){N(K,F,O);return}else K.next=F,K.update();else F.el=E.el,K.vnode=F},C=(E,F,O,K,X,J,Z)=>{const Q=()=>{if(E.isMounted){let{next:V,bu:ue,u:se,parent:G,vnode:Y}=E;{const U=ql(E);if(U){V&&(V.el=Y.el,N(E,V,Z)),U.asyncDep.then(()=>{It(()=>{E.isUnmounted||y()},X)});return}}let me=V,Ae;en(E,!1),V?(V.el=Y.el,N(E,V,Z)):V=Y,ue&&$a(ue),(Ae=V.props&&V.props.onVnodeBeforeUpdate)&&fo(Ae,G,V,Y),en(E,!0);const Ge=Fl(E),D=E.subTree;E.subTree=Ge,_(D,Ge,p(D.el),Oe(D),E,X,J),V.el=Ge.el,me===null&&Qg(E,Ge.el),se&&It(se,X),(Ae=V.props&&V.props.onVnodeUpdated)&&It(()=>fo(Ae,G,V,Y),X)}else{let V;const{el:ue,props:se}=F,{bm:G,m:Y,parent:me,root:Ae,type:Ge}=E,D=yn(F);en(E,!1),G&&$a(G),!D&&(V=se&&se.onVnodeBeforeMount)&&fo(V,me,F),en(E,!0);{Ae.ce&&Ae.ce._hasShadowRoot()&&Ae.ce._injectChildStyle(Ge,E.parent?E.parent.type:void 0);const U=E.subTree=Fl(E);_(null,U,O,K,E,X,J),F.el=U.el}if(Y&&It(Y,X),!D&&(V=se&&se.onVnodeMounted)){const U=F;It(()=>fo(V,me,U),X)}(F.shapeFlag&256||me&&yn(me.vnode)&&me.vnode.shapeFlag&256)&&E.a&&It(E.a,X),E.isMounted=!0,F=O=K=null}};E.scope.on();const b=E.effect=new Gi(Q);E.scope.off();const y=E.update=b.run.bind(b),B=E.job=b.runIfDirty.bind(b);B.i=E,B.id=E.uid,b.scheduler=()=>Yr(B),en(E,!0),y()},N=(E,F,O)=>{F.component=E;const K=E.vnode.props;E.vnode=F,E.next=null,tf(E,F.props,K,O),rf(E,F.children,O),ao(),ul(E),ro()},ne=(E,F,O,K,X,J,Z,Q,b=!1)=>{const y=E&&E.children,B=E?E.shapeFlag:0,V=F.children,{patchFlag:ue,shapeFlag:se}=F;if(ue>0){if(ue&128){L(y,V,O,K,X,J,Z,Q,b);return}else if(ue&256){ge(y,V,O,K,X,J,Z,Q,b);return}}se&8?(B&16&&Re(y,X,J),V!==y&&c(O,V)):B&16?se&16?L(y,V,O,K,X,J,Z,Q,b):Re(y,X,J,!0):(B&8&&c(O,""),se&16&&T(V,O,K,X,J,Z,Q,b))},ge=(E,F,O,K,X,J,Z,Q,b)=>{E=E||un,F=F||un;const y=E.length,B=F.length,V=Math.min(y,B);let ue;for(ue=0;ueB?Re(E,X,J,!0,!1,V):T(F,O,K,X,J,Z,Q,b,V)},L=(E,F,O,K,X,J,Z,Q,b)=>{let y=0;const B=F.length;let V=E.length-1,ue=B-1;for(;y<=V&&y<=ue;){const se=E[y],G=F[y]=b?So(F[y]):go(F[y]);if(ta(se,G))_(se,G,O,null,X,J,Z,Q,b);else break;y++}for(;y<=V&&y<=ue;){const se=E[V],G=F[ue]=b?So(F[ue]):go(F[ue]);if(ta(se,G))_(se,G,O,null,X,J,Z,Q,b);else break;V--,ue--}if(y>V){if(y<=ue){const se=ue+1,G=seue)for(;y<=V;)ie(E[y],X,J,!0),y++;else{const se=y,G=y,Y=new Map;for(y=G;y<=ue;y++){const ke=F[y]=b?So(F[y]):go(F[y]);ke.key!=null&&Y.set(ke.key,y)}let me,Ae=0;const Ge=ue-G+1;let D=!1,U=0;const he=new Array(Ge);for(y=0;y=Ge){ie(ke,X,J,!0);continue}let je;if(ke.key!=null)je=Y.get(ke.key);else for(me=G;me<=ue;me++)if(he[me-G]===0&&ta(ke,F[me])){je=me;break}je===void 0?ie(ke,X,J,!0):(he[je-G]=y+1,je>=U?U=je:D=!0,_(ke,F[je],O,null,X,J,Z,Q,b),Ae++)}const ve=D?uf(he):un;for(me=ve.length-1,y=Ge-1;y>=0;y--){const ke=G+y,je=F[ke],Ce=F[ke+1],xt=ke+1{const{el:J,type:Z,transition:Q,children:b,shapeFlag:y}=E;if(y&6){ae(E.component.subTree,F,O,K);return}if(y&128){E.suspense.move(F,O,K);return}if(y&64){Z.move(E,F,O,Xe);return}if(Z===Pe){n(J,F,O);for(let V=0;VQ.enter(J),X));else{const{leave:V,delayLeave:ue,afterLeave:se}=Q,G=()=>{E.ctx.isUnmounted?a(J):n(J,F,O)},Y=()=>{const me=J._isLeaving||!!J[Zr];J._isLeaving&&J[Zr](!0),Q.persisted&&!me?G():V(J,()=>{G(),se&&se()})};ue?ue(J,G,Y):Y()}else n(J,F,O)},ie=(E,F,O,K=!1,X=!1)=>{const{type:J,props:Z,ref:Q,children:b,dynamicChildren:y,shapeFlag:B,patchFlag:V,dirs:ue,cacheIndex:se,memo:G}=E;if(V===-2&&(X=!1),Q!=null&&(ao(),qn(Q,null,O,E,!0),ro()),se!=null&&(F.renderCache[se]=void 0),B&256){F.ctx.deactivate(E);return}const Y=B&1&&ue,me=!yn(E);let Ae;if(me&&(Ae=Z&&Z.onVnodeBeforeUnmount)&&fo(Ae,F,E),B&6)Me(E.component,O,K);else{if(B&128){E.suspense.unmount(O,K);return}Y&&Xo(E,null,F,"beforeUnmount"),B&64?E.type.remove(E,F,O,Xe,K):y&&!y.hasOnce&&(J!==Pe||V>0&&V&64)?Re(y,F,O,!1,!0):(J===Pe&&V&384||!X&&B&16)&&Re(b,F,O),K&&le(E)}const Ge=G!=null&&se==null;(me&&(Ae=Z&&Z.onVnodeUnmounted)||Y||Ge)&&It(()=>{Ae&&fo(Ae,F,E),Y&&Xo(E,null,F,"unmounted"),Ge&&(E.el=null)},O)},le=E=>{const{type:F,el:O,anchor:K,transition:X}=E;if(F===Pe){we(O,K);return}if(F===qa){v(E);return}const J=()=>{a(O),X&&!X.persisted&&X.afterLeave&&X.afterLeave()};if(E.shapeFlag&1&&X&&!X.persisted){const{leave:Z,delayLeave:Q}=X,b=()=>Z(O,J);Q?Q(E.el,J,b):b()}else J()},we=(E,F)=>{let O;for(;E!==F;)O=g(E),a(E),E=O;a(F)},Me=(E,F,O)=>{const{bum:K,scope:X,job:J,subTree:Z,um:Q,m:b,a:y}=E;Jl(b),Jl(y),K&&$a(K),X.stop(),J&&(J.flags|=8,ie(Z,E,F,O)),Q&&It(Q,F),It(()=>{E.isUnmounted=!0},F)},Re=(E,F,O,K=!1,X=!1,J=0)=>{for(let Z=J;Z{if(E.shapeFlag&6)return Oe(E.component.subTree);if(E.shapeFlag&128)return E.suspense.next();const F=g(E.anchor||E.el),O=F&&F[ml];return O?g(O):F};let Ie=!1;const Je=(E,F,O)=>{let K;E==null?F._vnode&&(ie(F._vnode,null,null,!0),K=F._vnode.component):_(F._vnode||null,E,F,null,null,null,O),F._vnode=E,Ie||(Ie=!0,ul(K),dl(),Ie=!1)},Xe={p:_,um:ie,m:ae,r:le,mt:$,mc:T,pc:ne,pbc:H,n:Oe,o:e};return{render:Je,hydrate:void 0,createApp:Vg(Je)}}function ls({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function en({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function cf(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function cs(e,t,o=!1){const n=e.children,a=t.children;if(xe(n)&&xe(a))for(let r=0;r>1,e[o[i]]0&&(t[n]=o[r-1]),o[r]=n)}}for(r=o.length,s=o[r-1];r-- >0;)o[r]=s,s=t[s];return o}function ql(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ql(t)}function Jl(e){if(e)for(let t=0;te.__isSuspense;function df(e,t){t&&t.pendingBranch?xe(e)?t.effects.push(...e):t.effects.push(e):hg(e)}const Pe=Symbol.for("v-fgt"),Zn=Symbol.for("v-txt"),po=Symbol.for("v-cmt"),qa=Symbol.for("v-stc"),Ao=[];let Kt=null;function z(e=!1){Ao.push(Kt=e?null:[])}function us(){Ao.pop(),Kt=Ao[Ao.length-1]||null}let Qn=1;function Ja(e,t=!1){Qn+=e,e<0&&Kt&&t&&(Kt.hasOnce=!0)}function Ql(e){return e.dynamicChildren=Qn>0?Kt||un:null,us(),Qn>0&&Kt&&Kt.push(e),e}function ee(e,t,o,n,a,r){return Ql(R(e,t,o,n,a,r,!0))}function pt(e,t,o,n,a){return Ql(We(e,t,o,n,a,!0))}function ea(e){return e?e.__v_isVNode===!0:!1}function ta(e,t){return e.type===t.type&&e.key===t.key}const ec=({key:e})=>e??null,Xa=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?tt(e)||st(e)||$e(e)?{i:$t,r:e,k:t,f:!!o}:e:null);function R(e,t=null,o=null,n=0,a=null,r=e===Pe?0:1,s=!1,i=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ec(t),ref:t&&Xa(t),scopeId:gl,slotScopeIds:null,children:o,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:n,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:$t};return i?(Za(l,o),r&128&&e.normalize(l)):o&&(l.shapeFlag|=tt(o)?8:16),Qn>0&&!s&&Kt&&(l.patchFlag>0||r&6)&&l.patchFlag!==32&&Kt.push(l),l}const We=pf;function pf(e,t=null,o=null,n=0,a=null,r=!1){if((!e||e===Sl)&&(e=po),ea(e)){const i=vn(e,t,!0);return o&&Za(i,o),Qn>0&&!r&&Kt&&(i.shapeFlag&6?Kt[Kt.indexOf(e)]=i:Kt.push(i)),i.patchFlag=-2,i}if(Sf(e)&&(e=e.__vccOpts),t){t=gf(t);let{class:i,style:l}=t;i&&!tt(i)&&(t.class=Ne(i)),Ye(l)&&(Ia(l)&&!xe(l)&&(l=dt({},l)),t.style=rt(l))}const s=tt(e)?1:Zl(e)?128:Ga(e)?64:Ye(e)?4:$e(e)?2:0;return R(e,t,o,n,a,s,r,!0)}function gf(e){return e?Ia(e)||Ul(e)?dt({},e):e:null}function vn(e,t,o=!1,n=!1){const{props:a,ref:r,patchFlag:s,children:i,transition:l}=e,u=t?hf(a||{},t):a,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&ec(u),ref:t&&t.ref?o&&r?xe(r)?r.concat(Xa(t)):[r,Xa(t)]:Xa(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Pe?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&vn(e.ssContent),ssFallback:e.ssFallback&&vn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&n&&Qr(c,l.clone(c)),c}function mt(e=" ",t=0){return We(Zn,null,e,t)}function ff(e,t){const o=We(qa,null,e);return o.staticCount=t,o}function ye(e="",t=!1){return t?(z(),pt(po,null,e)):We(po,null,e)}function go(e){return e==null||typeof e=="boolean"?We(po):xe(e)?We(Pe,null,e.slice()):ea(e)?So(e):We(Zn,null,String(e))}function So(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:vn(e)}function Za(e,t){let o=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(xe(t))o=16;else if(typeof t=="object")if(n&65){const a=t.default;a&&(a._c&&(a._d=!1),Za(e,a()),a._c&&(a._d=!0));return}else{o=32;const a=t._;!a&&!Ul(t)?t._ctx=$t:a===3&&$t&&($t.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if($e(t)){if(n&65){Za(e,{default:t});return}t={default:t,_ctx:$t},o=32}else t=String(t),n&64?(o=16,t=[mt(t)]):o=8;e.children=t,e.shapeFlag|=o}function hf(...e){const t={};for(let o=0;oCt||$t;let Qa,oa;{const e=Ca(),t=(o,n)=>{let a;return(a=e[o])||(a=e[o]=[]),a.push(n),r=>{a.length>1?a.forEach(s=>s(r)):a[0](r)}};Qa=t("__VUE_INSTANCE_SETTERS__",o=>Ct=o),oa=t("__VUE_SSR_SETTERS__",o=>kn=o)}const na=e=>{const t=Ct;return Qa(e),e.scope.on(),()=>{e.scope.off(),Qa(t)}},tc=()=>{Ct&&Ct.scope.off(),Qa(null)};function oc(e){return e.vnode.shapeFlag&4}let kn=!1;function _f(e,t=!1,o=!1){t&&oa(t);const{props:n,children:a}=e.vnode,r=oc(e);ef(e,n,r,t),af(e,a,o||t);const s=r?vf(e,t):void 0;return t&&oa(!1),s}function vf(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Bg);const{setup:n}=o;if(n){ao();const a=e.setupContext=n.length>1?wf(e):null,r=na(e),s=hn(n,e,0,[e.props,a]),i=Li(s);if(ro(),r(),(i||e.sp)&&!yn(e)&&es(e),i){if(s.then(tc,tc),t)return s.then(l=>{oa(!0);try{nc(e,l,t)}finally{oa(!1)}}).catch(l=>{Hn(l,e,0)});e.asyncDep=s}else nc(e,s)}else ac(e)}function nc(e,t,o){$e(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ye(t)&&(e.setupState=rl(t)),ac(e)}function ac(e,t,o){const n=e.type;e.render||(e.render=n.render||oo);{const a=na(e);ao();try{Gg(e)}finally{ro(),a()}}}const kf={get(e,t){return Pt(e,"get",""),e[t]}};function wf(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,kf),slots:e.slots,emit:e.emit,expose:t}}function er(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(rl(qo(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in Jn)return Jn[o](e)},has(t,o){return o in t||o in Jn}})):e.proxy}const xf=/(?:^|[-_])\w/g,Af=e=>e.replace(xf,t=>t.toUpperCase()).replace(/[-_]/g,"");function rc(e,t=!0){return $e(e)?e.displayName||e.name:e.name||t&&e.__name}function sc(e,t,o=!1){let n=rc(t);if(!n&&t.__file){const a=t.__file.match(/([^/\\]+)\.\w+$/);a&&(n=a[1])}if(!n&&e){const a=r=>{for(const s in r)if(r[s]===t)return s};n=a(e.components)||e.parent&&a(e.parent.type.components)||a(e.appContext.components)}return n?Af(n):o?"App":"Anonymous"}function Sf(e){return $e(e)&&"__vccOpts"in e}const te=(e,t)=>sg(e,t,kn);function ic(e,t,o){try{Ja(-1);const n=arguments.length;return n===2?Ye(t)&&!xe(t)?ea(t)?We(e,null,[t]):We(e,t):We(e,null,t):(n>3?o=Array.prototype.slice.call(arguments,2):n===3&&ea(o)&&(o=[o]),We(e,t,o))}finally{Ja(1)}}const $f="3.5.42";/** * @vue/runtime-dom v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let ds;const lc=typeof window<"u"&&window.trustedTypes;if(lc)try{ds=lc.createPolicy("vue",{createHTML:e=>e})}catch{}const cc=ds?e=>ds.createHTML(e):e=>e,bf="http://www.w3.org/2000/svg",yf="http://www.w3.org/1998/Math/MathML",Eo=typeof document<"u"?document:null,uc=Eo&&Eo.createElement("template"),_f={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,n)=>{const a=t==="svg"?Eo.createElementNS(bf,e):t==="mathml"?Eo.createElementNS(yf,e):o?Eo.createElement(e,{is:o}):Eo.createElement(e);return e==="select"&&n&&n.multiple!=null&&a.setAttribute("multiple",n.multiple),a},createText:e=>Eo.createTextNode(e),createComment:e=>Eo.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Eo.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,n,a,r){const s=o?o.previousSibling:t.lastChild;if(a&&(a===r||a.nextSibling))for(;t.insertBefore(a.cloneNode(!0),o),!(a===r||!(a=a.nextSibling)););else{uc.innerHTML=cc(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const i=uc.content;if(n==="svg"||n==="mathml"){const l=i.firstChild;for(;l.firstChild;)i.appendChild(l.firstChild);i.removeChild(l)}t.insertBefore(i,o)}return[s?s.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}},vf=Symbol("_vtc");function kf(e,t,o){const n=e[vf];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}const dc=Symbol("_vod"),wf=Symbol("_vsh"),xf=Symbol(""),$f=/(?:^|;)\s*display\s*:/;function Sf(e,t,o){const n=e.style,a=Qe(o);let r=!1;if(o&&!a){if(t)if(Qe(t))for(const s of t.split(";")){const i=s.slice(0,s.indexOf(":")).trim();o[i]==null&&aa(n,i,"")}else for(const s in t)o[s]==null&&aa(n,s,"");for(const s in o){s==="display"&&(r=!0);const i=o[s];i!=null?Ef(e,s,!Qe(t)&&t?t[s]:void 0,i)||aa(n,s,i):aa(n,s,"")}}else if(a){if(t!==o){const s=n[xf];s&&(o+=";"+s),n.cssText=o,r=$f.test(o)}}else t&&e.removeAttribute("style");dc in e&&(e[dc]=r?n.display:"",e[wf]&&(n.display="none"))}const tr=/\s*!important$/;function aa(e,t,o){if(we(o))o.forEach(n=>aa(e,t,n));else if(o==null&&(o=""),t.startsWith("--"))tr.test(o)?e.setProperty(t,o.replace(tr,""),"important"):e.setProperty(t,o);else{const n=Af(e,t);tr.test(o)?e.setProperty(jt(n),o.replace(tr,""),"important"):e[n]=o}}const pc=["Webkit","Moz","ms"],ps={};function Af(e,t){const o=ps[t];if(o)return o;let n=_t(t);if(n!=="filter"&&n in e)return ps[t]=n;n=Sa(n);for(let a=0;ags||(Nf.then(()=>gs=0),gs=Date.now());function Rf(e,t){const o=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=o.attached)return;const a=o.value;if(we(a)){const r=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{r.call(n),n._stopped=!0};const s=a.slice(),i=[n];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ff=(e,t,o,n,a,r)=>{const s=a==="svg";t==="class"?kf(e,n,s):t==="style"?Sf(e,o,n):va(t)?ka(t)||Lf(e,t,o,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Of(e,t,n,s))?(hc(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&fc(e,t,n,s,r,t!=="value")):e._isVueCE&&(Df(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Qe(n)))?hc(e,_t(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),fc(e,t,n,s))};function Of(e,t,o,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&bc(t)&&Ae(o));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 a=e.tagName;if(a==="IMG"||a==="VIDEO"||a==="CANVAS"||a==="SOURCE")return!1}return bc(t)&&Qe(o)?!1:t in e}function Df(e,t){const o=e._def.props;if(!o)return!1;const n=_t(t);return Array.isArray(o)?o.some(a=>_t(a)===n):Object.keys(o).some(a=>_t(a)===n)}const yc={};function Bf(e,t,o){let n=Yn(e,t);wa(n)&&(n=ut({},n,t));class a extends fs{constructor(s){super(n,s,o)}}return a.def=n,a}const Gf=typeof HTMLElement<"u"?HTMLElement:class{};class fs extends Gf{constructor(t,o={},n=xc){super(),this._def=t,this._props=o,this._createApp=n,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&&n!==xc?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(ut({},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 fs){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,lo(()=>{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 o of t)this._setAttr(o.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let n=0;n{this._resolved=!0,this._pendingResolve=void 0;const{props:r,styles:s}=n;let i;if(r&&!we(r))for(const l in r){const c=r[l];(c===Number||c&&c.type===Number)&&(l in this._props&&(this._props[l]=Mi(this._props[l])),(i||(i=Object.create(null)))[_t(l)]=!0)}this._numberProps=i,this._resolveProps(n),this.shadowRoot&&this._applyStyles(s),this._mount(n)},o=this._def.__asyncLoader;if(o)return this._pendingResolve=o().then(n=>{n.configureApp=this._def.configureApp,t(this._def=n,!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 o=this._instance&&this._instance.exposed;if(o)for(const n in o)ze(this,n)||Object.defineProperty(this,n,{get:()=>_e(o[n])})}_resolveProps(t){const{props:o}=t,n=we(o)?o:Object.keys(o||{});for(const a of Object.keys(this))a[0]!=="_"&&n.includes(a)&&this._setProp(a,this[a]);for(const a of n.map(_t))Object.defineProperty(this,a,{get(){return this._getProp(a)},set(r){this._setProp(a,r,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const o=this.hasAttribute(t);let n=o?this.getAttribute(t):yc;const a=_t(t);o&&this._numberProps&&this._numberProps[a]&&(n=Mi(n)),this._setProp(a,n,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,o,n=!0,a=!1){if(o!==this._props[t]&&(this._dirty=!0,o===yc?delete this._props[t]:(this._props[t]=o,t==="key"&&this._app&&(this._app._ceVNode.key=o)),a&&this._instance&&this._update(),n)){const r=this._ob;r&&(this._processMutations(r.takeRecords()),r.disconnect()),o===!0?this.setAttribute(jt(t),""):typeof o=="string"||typeof o=="number"?this.setAttribute(jt(t),o+""):o||this.removeAttribute(jt(t)),r&&r.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),qf(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const o=He(this._def,ut(t,this._props));return this._instance||(o.ce=n=>{this._instance=n,n.ce=this,n.isCE=!0;const a=(r,s)=>{this.dispatchEvent(new CustomEvent(r,wa(s[0])?ut({detail:s},s[0]):{detail:s}))};n.emit=(r,...s)=>{a(r,s),jt(r)!==r&&a(jt(r),s)},this._setParent()}),o}_applyStyles(t,o,n){if(!t)return;if(o){if(o===this._def||this._styleChildren.has(o))return;this._styleChildren.add(o)}const a=this._nonce,r=this.shadowRoot,s=n?this._getStyleAnchor(n)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(r);let i=null;for(let l=t.length-1;l>=0;l--){const c=document.createElement("style");a&&c.setAttribute("nonce",a),c.textContent=t[l],r.insertBefore(c,i||s),i=c,l===0&&(n||this._styleAnchors.set(this._def,c),o&&this._styleAnchors.set(o,c))}}_getStyleAnchor(t){if(!t)return null;const o=this._styleAnchors.get(t);return o&&o.parentNode===this.shadowRoot?o:(o&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let o=0;o{const t=e.props["onUpdate:modelValue"]||!1;return we(t)?o=>Aa(t,o):t};function jf(e){e.target.composing=!0}function _c(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const on=Symbol("_assign"),nr=Symbol("_initialValue");function hs(e,t,o){return t&&(e=e.trim()),o&&(e=Ea(e)),e}const Uf={created(e,{modifiers:{lazy:t,trim:o,number:n}},a){e.parentNode&&(e.type==="text"?e[nr]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[nr]=e.defaultValue.replace(/\r\n?/g,` -`))),e[on]=or(a);const r=n||a.props&&a.props.type==="number";tn(e,t?"change":"input",s=>{s.target.composing||e[on](hs(e.value,o,r))}),(o||r)&&tn(e,"change",()=>{e.value=hs(e.value,o,r)}),t||(tn(e,"compositionstart",jf),tn(e,"compositionend",_c),tn(e,"change",_c))},mounted(e,{value:t,modifiers:{trim:o,number:n}}){const a=t??"",r=e[nr];delete e[nr],r!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==r?e[on](hs(e.value,o,n)):e.value=a},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:n,trim:a,number:r}},s){if(e[on]=or(s),e.composing)return;const i=(r||e.type==="number")&&!/^0\d/.test(e.value)?Ea(e.value):e.value,l=t??"";if(i===l)return;const c=e.getRootNode();(c instanceof Document||c instanceof ShadowRoot)&&c.activeElement===e&&e.type!=="range"&&(n&&t===o||a&&e.value.trim()===l)||(e.value=l)}},Kf={deep:!0,created(e,{value:t,modifiers:{number:o}},n){e._modelValue=t,tn(e,"change",()=>{const a=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>o?Ea(ar(l)):ar(l)),r=e.multiple,s=r?Wo(e._modelValue)?new Set(a):a:a[0],i=e._pendingValue=[r,r?we(s)?a.slice():a:s];try{e[on](s)}finally{lo(()=>{e._pendingValue===i&&(e._pendingValue=void 0)})}}),e[on]=or(n)},mounted(e,{value:t}){vc(e,t)},beforeUpdate(e,{value:t},o){e._modelValue=t,e[on]=or(o)},updated(e,{value:t}){const o=e._pendingValue;e._pendingValue=void 0,(!o||o[0]!==e.multiple||!zf(t,o[1],o[0]))&&vc(e,t)}};function zf(e,t,o){if(!o||we(e))return Io(e,t);if(Wo(e)){if(e.size!==t.length)return!1;for(const n of t)if(!e.has(n))return!1;return!0}return!1}function vc(e,t){const o=e.multiple,n=we(t);if(!(o&&!n&&!Wo(t))){for(let a=0,r=e.options.length;aString(c)===String(i)):s.selected=wp(t,i)>-1}else s.selected=t.has(i);else if(Io(ar(s),t)){e.selectedIndex!==a&&(e.selectedIndex=a);return}}!o&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function ar(e){return"_value"in e?e._value:e.value}const Hf=["ctrl","shift","alt","meta"],Vf={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Hf.some(o=>e[`${o}Key`]&&!t.includes(o))},vt=(e,t)=>{if(!e)return e;const o=e._withMods||(e._withMods={}),n=t.join(".");return o[n]||(o[n]=(a,...r)=>{for(let s=0;s{const o=e._withKeys||(e._withKeys={}),n=t.join(".");return o[n]||(o[n]=a=>{if(!("key"in a))return;const r=jt(a.key);if(t.some(s=>s===r||Wf[s]===r))return e(a)})},Yf=ut({patchProp:Ff},_f);let kc;function wc(){return kc||(kc=Jg(Yf))}const qf=(...e)=>{wc().render(...e)},xc=(...e)=>{const t=wc().createApp(...e),{mount:o}=t;return t.mount=n=>{const a=Xf(n);if(!a)return;const r=t._component;!Ae(r)&&!r.render&&!r.template&&(r.template=a.innerHTML),a.nodeType===1&&(a.textContent="");const s=o(a,!1,Jf(a));return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),s},t};function Jf(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Xf(e){return Qe(e)?document.querySelector(e):e}/*! +**/let ds;const lc=typeof window<"u"&&window.trustedTypes;if(lc)try{ds=lc.createPolicy("vue",{createHTML:e=>e})}catch{}const cc=ds?e=>ds.createHTML(e):e=>e,Ef="http://www.w3.org/2000/svg",Cf="http://www.w3.org/1998/Math/MathML",Eo=typeof document<"u"?document:null,uc=Eo&&Eo.createElement("template"),Lf={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,n)=>{const a=t==="svg"?Eo.createElementNS(Ef,e):t==="mathml"?Eo.createElementNS(Cf,e):o?Eo.createElement(e,{is:o}):Eo.createElement(e);return e==="select"&&n&&n.multiple!=null&&a.setAttribute("multiple",n.multiple),a},createText:e=>Eo.createTextNode(e),createComment:e=>Eo.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Eo.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,n,a,r){const s=o?o.previousSibling:t.lastChild;if(a&&(a===r||a.nextSibling))for(;t.insertBefore(a.cloneNode(!0),o),!(a===r||!(a=a.nextSibling)););else{uc.innerHTML=cc(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const i=uc.content;if(n==="svg"||n==="mathml"){const l=i.firstChild;for(;l.firstChild;)i.appendChild(l.firstChild);i.removeChild(l)}t.insertBefore(i,o)}return[s?s.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}},Tf=Symbol("_vtc");function Pf(e,t,o){const n=e[Tf];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}const dc=Symbol("_vod"),Mf=Symbol("_vsh"),Nf=Symbol(""),Rf=/(?:^|;)\s*display\s*:/;function If(e,t,o){const n=e.style,a=tt(o);let r=!1;if(o&&!a){if(t)if(tt(t))for(const s of t.split(";")){const i=s.slice(0,s.indexOf(":")).trim();o[i]==null&&aa(n,i,"")}else for(const s in t)o[s]==null&&aa(n,s,"");for(const s in o){s==="display"&&(r=!0);const i=o[s];i!=null?Ff(e,s,!tt(t)&&t?t[s]:void 0,i)||aa(n,s,i):aa(n,s,"")}}else if(a){if(t!==o){const s=n[Nf];s&&(o+=";"+s),n.cssText=o,r=Rf.test(o)}}else t&&e.removeAttribute("style");dc in e&&(e[dc]=r?n.display:"",e[Mf]&&(n.display="none"))}const tr=/\s*!important$/;function aa(e,t,o){if(xe(o))o.forEach(n=>aa(e,t,n));else if(o==null&&(o=""),t.startsWith("--"))tr.test(o)?e.setProperty(t,o.replace(tr,""),"important"):e.setProperty(t,o);else{const n=Of(e,t);tr.test(o)?e.setProperty(jt(n),o.replace(tr,""),"important"):e[n]=o}}const pc=["Webkit","Moz","ms"],ps={};function Of(e,t){const o=ps[t];if(o)return o;let n=_t(t);if(n!=="filter"&&n in e)return ps[t]=n;n=Sa(n);for(let a=0;ags||(Kf.then(()=>gs=0),gs=Date.now());function Hf(e,t){const o=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=o.attached)return;const a=o.value;if(xe(a)){const r=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{r.call(n),n._stopped=!0};const s=a.slice(),i=[n];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Vf=(e,t,o,n,a,r)=>{const s=a==="svg";t==="class"?Pf(e,n,s):t==="style"?If(e,o,n):va(t)?ka(t)||Bf(e,t,o,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Wf(e,t,n,s))?(hc(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&fc(e,t,n,s,r,t!=="value")):e._isVueCE&&(Yf(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!tt(n)))?hc(e,_t(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),fc(e,t,n,s))};function Wf(e,t,o,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&bc(t)&&$e(o));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 a=e.tagName;if(a==="IMG"||a==="VIDEO"||a==="CANVAS"||a==="SOURCE")return!1}return bc(t)&&tt(o)?!1:t in e}function Yf(e,t){const o=e._def.props;if(!o)return!1;const n=_t(t);return Array.isArray(o)?o.some(a=>_t(a)===n):Object.keys(o).some(a=>_t(a)===n)}const yc={};function qf(e,t,o){let n=Yn(e,t);wa(n)&&(n=dt({},n,t));class a extends fs{constructor(s){super(n,s,o)}}return a.def=n,a}const Jf=typeof HTMLElement<"u"?HTMLElement:class{};class fs extends Jf{constructor(t,o={},n=xc){super(),this._def=t,this._props=o,this._createApp=n,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&&n!==xc?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(dt({},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 fs){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,lo(()=>{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 o of t)this._setAttr(o.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let n=0;n{this._resolved=!0,this._pendingResolve=void 0;const{props:r,styles:s}=n;let i;if(r&&!xe(r))for(const l in r){const u=r[l];(u===Number||u&&u.type===Number)&&(l in this._props&&(this._props[l]=Mi(this._props[l])),(i||(i=Object.create(null)))[_t(l)]=!0)}this._numberProps=i,this._resolveProps(n),this.shadowRoot&&this._applyStyles(s),this._mount(n)},o=this._def.__asyncLoader;if(o)return this._pendingResolve=o().then(n=>{n.configureApp=this._def.configureApp,t(this._def=n,!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 o=this._instance&&this._instance.exposed;if(o)for(const n in o)Ve(this,n)||Object.defineProperty(this,n,{get:()=>_e(o[n])})}_resolveProps(t){const{props:o}=t,n=xe(o)?o:Object.keys(o||{});for(const a of Object.keys(this))a[0]!=="_"&&n.includes(a)&&this._setProp(a,this[a]);for(const a of n.map(_t))Object.defineProperty(this,a,{get(){return this._getProp(a)},set(r){this._setProp(a,r,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const o=this.hasAttribute(t);let n=o?this.getAttribute(t):yc;const a=_t(t);o&&this._numberProps&&this._numberProps[a]&&(n=Mi(n)),this._setProp(a,n,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,o,n=!0,a=!1){if(o!==this._props[t]&&(this._dirty=!0,o===yc?delete this._props[t]:(this._props[t]=o,t==="key"&&this._app&&(this._app._ceVNode.key=o)),a&&this._instance&&this._update(),n)){const r=this._ob;r&&(this._processMutations(r.takeRecords()),r.disconnect()),o===!0?this.setAttribute(jt(t),""):typeof o=="string"||typeof o=="number"?this.setAttribute(jt(t),o+""):o||this.removeAttribute(jt(t)),r&&r.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),rh(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const o=We(this._def,dt(t,this._props));return this._instance||(o.ce=n=>{this._instance=n,n.ce=this,n.isCE=!0;const a=(r,s)=>{this.dispatchEvent(new CustomEvent(r,wa(s[0])?dt({detail:s},s[0]):{detail:s}))};n.emit=(r,...s)=>{a(r,s),jt(r)!==r&&a(jt(r),s)},this._setParent()}),o}_applyStyles(t,o,n){if(!t)return;if(o){if(o===this._def||this._styleChildren.has(o))return;this._styleChildren.add(o)}const a=this._nonce,r=this.shadowRoot,s=n?this._getStyleAnchor(n)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(r);let i=null;for(let l=t.length-1;l>=0;l--){const u=document.createElement("style");a&&u.setAttribute("nonce",a),u.textContent=t[l],r.insertBefore(u,i||s),i=u,l===0&&(n||this._styleAnchors.set(this._def,u),o&&this._styleAnchors.set(o,u))}}_getStyleAnchor(t){if(!t)return null;const o=this._styleAnchors.get(t);return o&&o.parentNode===this.shadowRoot?o:(o&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let o=0;o{const t=e.props["onUpdate:modelValue"]||!1;return xe(t)?o=>$a(t,o):t};function Xf(e){e.target.composing=!0}function _c(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const on=Symbol("_assign"),nr=Symbol("_initialValue");function hs(e,t,o){return t&&(e=e.trim()),o&&(e=Ea(e)),e}const Zf={created(e,{modifiers:{lazy:t,trim:o,number:n}},a){e.parentNode&&(e.type==="text"?e[nr]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[nr]=e.defaultValue.replace(/\r\n?/g,` +`))),e[on]=or(a);const r=n||a.props&&a.props.type==="number";tn(e,t?"change":"input",s=>{s.target.composing||e[on](hs(e.value,o,r))}),(o||r)&&tn(e,"change",()=>{e.value=hs(e.value,o,r)}),t||(tn(e,"compositionstart",Xf),tn(e,"compositionend",_c),tn(e,"change",_c))},mounted(e,{value:t,modifiers:{trim:o,number:n}}){const a=t??"",r=e[nr];delete e[nr],r!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==r?e[on](hs(e.value,o,n)):e.value=a},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:n,trim:a,number:r}},s){if(e[on]=or(s),e.composing)return;const i=(r||e.type==="number")&&!/^0\d/.test(e.value)?Ea(e.value):e.value,l=t??"";if(i===l)return;const u=e.getRootNode();(u instanceof Document||u instanceof ShadowRoot)&&u.activeElement===e&&e.type!=="range"&&(n&&t===o||a&&e.value.trim()===l)||(e.value=l)}},Qf={deep:!0,created(e,{value:t,modifiers:{number:o}},n){e._modelValue=t,tn(e,"change",()=>{const a=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>o?Ea(ar(l)):ar(l)),r=e.multiple,s=r?Wo(e._modelValue)?new Set(a):a:a[0],i=e._pendingValue=[r,r?xe(s)?a.slice():a:s];try{e[on](s)}finally{lo(()=>{e._pendingValue===i&&(e._pendingValue=void 0)})}}),e[on]=or(n)},mounted(e,{value:t}){vc(e,t)},beforeUpdate(e,{value:t},o){e._modelValue=t,e[on]=or(o)},updated(e,{value:t}){const o=e._pendingValue;e._pendingValue=void 0,(!o||o[0]!==e.multiple||!eh(t,o[1],o[0]))&&vc(e,t)}};function eh(e,t,o){if(!o||xe(e))return Ro(e,t);if(Wo(e)){if(e.size!==t.length)return!1;for(const n of t)if(!e.has(n))return!1;return!0}return!1}function vc(e,t){const o=e.multiple,n=xe(t);if(!(o&&!n&&!Wo(t))){for(let a=0,r=e.options.length;aString(u)===String(i)):s.selected=Mp(t,i)>-1}else s.selected=t.has(i);else if(Ro(ar(s),t)){e.selectedIndex!==a&&(e.selectedIndex=a);return}}!o&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function ar(e){return"_value"in e?e._value:e.value}const th=["ctrl","shift","alt","meta"],oh={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>th.some(o=>e[`${o}Key`]&&!t.includes(o))},vt=(e,t)=>{if(!e)return e;const o=e._withMods||(e._withMods={}),n=t.join(".");return o[n]||(o[n]=(a,...r)=>{for(let s=0;s{const o=e._withKeys||(e._withKeys={}),n=t.join(".");return o[n]||(o[n]=a=>{if(!("key"in a))return;const r=jt(a.key);if(t.some(s=>s===r||nh[s]===r))return e(a)})},ah=dt({patchProp:Vf},Lf);let kc;function wc(){return kc||(kc=sf(ah))}const rh=(...e)=>{wc().render(...e)},xc=(...e)=>{const t=wc().createApp(...e),{mount:o}=t;return t.mount=n=>{const a=ih(n);if(!a)return;const r=t._component;!$e(r)&&!r.render&&!r.template&&(r.template=a.innerHTML),a.nodeType===1&&(a.textContent="");const s=o(a,!1,sh(a));return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),s},t};function sh(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ih(e){return tt(e)?document.querySelector(e):e}/*! * pinia v2.3.1 * (c) 2025 Eduardo San Martin Morote * @license MIT - */let $c;const rr=e=>$c=e,Sc=Symbol();function bs(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var ra;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(ra||(ra={}));function Zf(){const e=Rr(!0),t=e.run(()=>de({}));let o=[],n=[];const a=qo({install(r){rr(a),a._a=r,r.provide(Sc,a),r.config.globalProperties.$pinia=a,n.forEach(s=>o.push(s)),n=[]},use(r){return this._a?o.push(r):n.push(r),this},_p:o,_a:null,_e:e,_s:new Map,state:t});return a}const Ac=()=>{};function Ec(e,t,o,n=Ac){e.push(t);const a=()=>{const r=e.indexOf(t);r>-1&&(e.splice(r,1),n())};return!o&&Bi()&&xp(a),a}function wn(e,...t){e.slice().forEach(o=>{o(...t)})}const Qf=e=>e(),Cc=Symbol(),ys=Symbol();function _s(e,t){e instanceof Map&&t instanceof Map?t.forEach((o,n)=>e.set(n,o)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const o in t){if(!t.hasOwnProperty(o))continue;const n=t[o],a=e[o];bs(a)&&bs(n)&&e.hasOwnProperty(o)&&!at(n)&&!vo(n)?e[o]=_s(a,n):e[o]=n}return e}const eh=Symbol();function th(e){return!bs(e)||!e.hasOwnProperty(eh)}const{assign:Oo}=Object;function oh(e){return!!(at(e)&&e.effect)}function nh(e,t,o,n){const{state:a,actions:r,getters:s}=t,i=o.state.value[e];let l;function c(){i||(o.state.value[e]=a?a():{});const u=Hp(o.state.value[e]);return Oo(u,r,Object.keys(s||{}).reduce((p,f)=>(p[f]=qo(oe(()=>{rr(o);const w=o._s.get(e);return s[f].call(w,w)})),p),{}))}return l=Lc(e,c,t,o,n,!0),l}function Lc(e,t,o={},n,a,r){let s;const i=Oo({actions:{}},o),l={deep:!0};let c,u,p=[],f=[],w;const x=n.state.value[e];!r&&!x&&(n.state.value[e]={});let y;function d(T){let R;c=u=!1,typeof T=="function"?(T(n.state.value[e]),R={type:ra.patchFunction,storeId:e,events:w}):(_s(n.state.value[e],T),R={type:ra.patchObject,payload:T,storeId:e,events:w});const H=y=Symbol();lo().then(()=>{y===H&&(c=!0)}),u=!0,wn(p,R,n.state.value[e])}const g=r?function(){const{state:R}=o,H=R?R():{};this.$patch(Y=>{Oo(Y,H)})}:Ac;function b(){s.stop(),p=[],f=[],n._s.delete(e)}const h=(T,R="")=>{if(Cc in T)return T[ys]=R,T;const H=function(){rr(n);const Y=Array.from(arguments),ae=[],P=[];function A(E){ae.push(E)}function M(E){P.push(E)}wn(f,{args:Y,name:H[ys],store:$,after:A,onError:M});let S;try{S=T.apply(this&&this.$id===e?this:$,Y)}catch(E){throw wn(P,E),E}return S instanceof Promise?S.then(E=>(wn(ae,E),E)).catch(E=>(wn(P,E),Promise.reject(E))):(wn(ae,S),S)};return H[Cc]=!0,H[ys]=R,H},k={_p:n,$id:e,$onAction:Ec.bind(null,f),$patch:d,$reset:g,$subscribe(T,R={}){const H=Ec(p,T,R.detached,()=>Y()),Y=s.run(()=>lt(()=>n.state.value[e],ae=>{(R.flush==="sync"?u:c)&&T({storeId:e,type:ra.direct,events:w},ae)},Oo({},l,R)));return H},$dispose:b},$=pn(k);n._s.set(e,$);const C=(n._a&&n._a.runWithContext||Qf)(()=>n._e.run(()=>(s=Rr()).run(()=>t({action:h}))));for(const T in C){const R=C[T];if(at(R)&&!oh(R)||vo(R))r||(x&&th(R)&&(at(R)?R.value=x[T]:_s(R,x[T])),n.state.value[e][T]=R);else if(typeof R=="function"){const H=h(R,T);C[T]=H,i.actions[T]=R}}return Oo($,C),Oo(Oe($),C),Object.defineProperty($,"$state",{get:()=>n.state.value[e],set:T=>{d(R=>{Oo(R,T)})}}),n._p.forEach(T=>{Oo($,s.run(()=>T({store:$,app:n._a,pinia:n,options:i})))}),x&&r&&o.hydrate&&o.hydrate($.$state,x),c=!0,u=!0,$}/*! #__NO_SIDE_EFFECTS__ */function vs(e,t,o){let n,a;const r=typeof t=="function";typeof e=="string"?(n=e,a=r?o:t):(a=e,n=e.id);function s(i,l){const c=sg();return i=i||(c?Ie(Sc,null):null),i&&rr(i),i=$c,i._s.has(n)||(r?Lc(n,t,a,i):nh(n,a,i)),i._s.get(n)}return s.$id=n,s}const ks="__doxaMapToken",ws="doxa:map-token",Tc="__doxaMapTokenBridge",xn=()=>{if(typeof window>"u")return"";const e=window[ks];return typeof e=="string"?e:""};function Pc(e){if(typeof window>"u")return"";const t=typeof e=="string"?e.trim():"";if(!t||t===xn())return xn();window[ks]=t;try{window.dispatchEvent(new CustomEvent(ws,{detail:t}))}catch{}return t}function ah(){if(typeof window>"u"||window[Tc])return;const e=typeof window.MAP_TOKEN=="string"?window.MAP_TOKEN:"";e&&!xn()&&(window[ks]=e);try{Object.defineProperty(window,"MAP_TOKEN",{configurable:!0,get(){return xn()},set(t){Pc(t)}}),window[Tc]=!0}catch{}}function rh(){ah();const e=de(xn());if(typeof window<"u"){const t=()=>{e.value=xn()};window.addEventListener(ws,t);try{uo(()=>window.removeEventListener(ws,t))}catch{}}return e}function Mc(e){return bg({loader:e,onError(t,o,n,a){a<=3?setTimeout(o,a*500):n()}})}const sh={backToLegend:"العودة إلى المفتاح",closeDetailView:"إغلاق عرض التفاصيل"},ih={prayForThem:"صلِّ من أجلهم",adoptThem:"تبنَّهم",moreInfo:"مزيد من المعلومات",zoomIn:"تكبير",zoomOut:"تصغير",switchToLightMode:"التبديل إلى الوضع الفاتح",switchToDarkMode:"التبديل إلى الوضع الداكن",resetView:"إعادة تعيين العرض",toggleFullscreen:"تبديل ملء الشاشة",aboutThisMap:"حول هذه الخريطة",closeMenu:"إغلاق القائمة",reloadMap:"إعادة تحميل الخريطة",showClusters:"إظهار المجموعات",clusterSettings:"إعدادات المجموعات",startAutoFly:"بدء الطيران التلقائي",stopFlight:"إيقاف الطيران",speedLabel:"السرعة:",speedOption:{slow:"بطيء",normal:"عادي",fast:"سريع"},shareEmbed:"مشاركة وتضمين"},lh={labels:{country:"الدولة:",population:"السكان:",language:"اللغة:",religion:"الديانة:",languageFamily:"العائلة اللغوية:",peopleCommitted:"ملتزمون بالصلاة:"},messages:{noDescription:"لا يوجد وصف متاح."}},ch={title:{prayer:"تقدم الصلاة",engagement:"تقدم الانخراط",adoption:"تقدم التبني",languageFamilies:"العائلات اللغوية",doxaRegions:"مناطق Doxa",affinityBlocs:"كتل القرابة",gospelResources:"موارد الإنجيل"},header:{collapsed:"وسيلة الإيضاح",peopleGroupFallback:"مجموعة الشعب"},prayer:{needsPrayer:"يحتاج إلى صلاة",hasPrayer:"لديه صلاة",fullPrayerCoverage:"تغطية صلاة كاملة"},progress:{title:"التقدم",covered:"{covered} من {total} مجموعة شعبية مغطاة بالصلاة · {pct}%",short:"{covered} من {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"يحتاج إلى انخراط",hasEngagement:"لديه انخراط"},adoption:{needsAdoption:"يحتاج إلى تبني",hasAdoption:"لديه تبني"},columns:{upgs:"UUPGs",population:"السكان",name:"الاسم"},footer:{total:"الإجمالي"},sortByUpgs:"ترتيب حسب UUPG",sortByPop:"ترتيب حسب السكان",colLabel:{religion:"ديانات UUPG",prayer:"حالة الصلاة",engagement:"حالة المشاركة",adoption:"حالة التبني",status:"الحالة"},titleBar:{legend:"مفتاح الخريطة",peopleGroups:"الشعوب",wagfRegions:"مناطق WAGF",languages:"اللغات"}},uh={menuComingSoon:"القائمة قادمة قريباً"},dh={clusterByRegion:"حسب منطقة Doxa",clusterByLanguageFamily:"حسب العائلة اللغوية",clusterByGospelResource:"حسب مورد الإنجيل"},ph={header:"دورة الصلاة الحالية",lap:"الدورة",upgs:"UUPGs",separator:" من "},gh={"%count% people groups in %countries% countries":"%count% مجموعة بشرية في %countries% دولة","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"تضم %region% %count% مجموعة بشرية في %countries% دولة. يشير لون كل نقطة إلى عدد الأشخاص الذين يصلّون من أجل تلك المجموعة البشرية.","1+ People Praying":"شخص واحد أو أكثر يصلّي","100+ People Praying":"أكثر من 100 شخص يصلّون",Adopted:"تم انتماؤه","Adoption Progress":"تقدُّم الإنتماء","All Regions":"جميع المناطق","Alternate Names":"الأسماء البديلة","Clear All":"مسح الكل",Countries:"الدول","Countries in this region":"الدول في هذه المنطقة",Country:"الدولة",Engaged:"مُنخرَط","Engagement Progress":"تقدُّم الانخراط","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"كل مجموعة بشرية غير مبشرة تتبناها كنيسة ملتزمة بالصلاة والعطاء والإرسال","Exact Search":"بحث دقيق","Find unreached people groups by region and country.":"ابحث عن المجموعات البشرية غير المُبلَّغة حسب المنطقة والدولة.","Full Profile":"الملف الشخصي الكامل",Goal:"الهدف","Hide Filters":"إخفاء المرشحات",Intercessors:"المتشفعين","Load More":"تحميل المزيد","Loading results...":"النتائج قيد التحميل...","Mobilize 100+ people praying daily for each DOXA people group":"حشد أكثر من 100 شخص للصلاة يوميًا من أجل كل مجموعة بشرية من مجموعات دوكسا","No One Praying":"لا أحد يصلّي","No options found":"لم يتم العثور على أي خيارات","No unengaged people groups by 2033":"الهدف هو القضاء على جميع الشعوب الغير مخدومة روحيا بحلول عام 2033","Not Adopted":"لم يتم انتماؤه",Other:"أخرى","Page Not Found":"الصفحة غير موجودة","People Group":"مجموعة بشرية","People Groups":"مجموعات بشرية","People committed to praying":"الأشخاص الذين التزموا بالصلاة",Population:"عدد السكان","Prayer Coverage":"التغطية المستمرة بالصلاة","Prayer coverage progress":"تقدم تغطية الصلاة",Regions:"المناطق",Religion:"الدين","Search names, country/continent, religions...":"إبحث عن الأسماء، الدولة/القارة، الأديان...","See %region% dashboard":"عرض لوحة معلومات %region%","See All":"عرض جميع العناصر",Select:"اختر","Show Filters":"إظهار عوامل التصفية","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"توجد %count% مجموعات بشرية في %country%. تحقق من الخريطة لمعرفة المجموعات البشرية الواقعة على حدود هذه الدولة أيضًا.",Total:"المجموع","Type to search...":"اكتب ما تريد البحث عنه...","Unengaged people groups":"الشعوب الغير متفاعلة","WAGF Block":"كتلة WAGF","WAGF Region":"منطقة WAGF","people groups adopted":"الشعوب المنتمية","people groups engaged":"مجموعات بشرية مُنخرِطة"},fh={placeholder:"شعب، مكان، لغة، ديانة",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"}},hh={prayer:"الصلاة",adoption:"التبني",engagement:"المشاركة","affinity-blocks":"الشعوب",regions:"المناطق",countries:"الدول","language-families":"اللغات",religion:"الأديان",family:"عائلة اللغة",language:"اللغة",dialect:"اللهجة/التنوع",bloc:"كتلة التقارب",cluster:"المجموعة",group:"الشعب",pgic:"الشعب في الدولة",region:"منطقة WAGF",block:"كتلة WAGF",country:"الدولة"},mh={backToLegend:"Zurück zur Legende",closeDetailView:"Detailansicht schließen"},bh={prayForThem:"Für sie beten",adoptThem:"Sie adoptieren",moreInfo:"Mehr Infos",zoomIn:"Vergrößern",zoomOut:"Verkleinern",switchToLightMode:"Zum hellen Modus wechseln",switchToDarkMode:"Zum dunklen Modus wechseln",resetView:"Ansicht zurücksetzen",toggleFullscreen:"Vollbild umschalten",aboutThisMap:"Über diese Karte",closeMenu:"Menü schließen",reloadMap:"Karte neu laden",showClusters:"Cluster anzeigen",clusterSettings:"Cluster-Einstellungen",startAutoFly:"Auto-Flug starten",stopFlight:"Flug stoppen",speedLabel:"Geschwindigkeit:",speedOption:{slow:"Langsam",normal:"Normal",fast:"Schnell"},shareEmbed:"Teilen und einbetten"},yh={labels:{country:"Land:",population:"Bevölkerung:",language:"Sprache:",religion:"Religion:",languageFamily:"Sprachfamilie:",peopleCommitted:"Zum Gebet verpflichtet:"},messages:{noDescription:"Keine Beschreibung verfügbar."}},_h={title:{prayer:"Gebetsfortschritt",engagement:"Engagement-Fortschritt",adoption:"Adoptionsfortschritt",languageFamilies:"Sprachfamilien",doxaRegions:"Doxa-Regionen",affinityBlocs:"Affinitätsblöcke",gospelResources:"Evangeliumsressourcen"},header:{collapsed:"Legende",peopleGroupFallback:"Volksgruppe"},prayer:{needsPrayer:"Braucht Gebet",hasPrayer:"Hat Gebet",fullPrayerCoverage:"Vollständige Gebetsabdeckung"},progress:{title:"Fortschritt",covered:"{covered} von {total} Volksgruppen im Gebet abgedeckt · {pct}%",short:"{covered} von {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Braucht Engagement",hasEngagement:"Hat Engagement"},adoption:{needsAdoption:"Braucht Adoption",hasAdoption:"Hat Adoption"},columns:{upgs:"UUPGs",population:"Bevölkerung"},footer:{total:"Gesamt"}},vh={menuComingSoon:"Menü folgt in Kürze"},kh={clusterByRegion:"Nach Doxa-Region",clusterByLanguageFamily:"Nach Sprachfamilie",clusterByGospelResource:"Nach Evangeliumsressource"},wh={header:"AKTUELLE GEBETSRUNDE",lap:"Runde",upgs:"UUPGs",separator:" von "},xh={"%count% people groups in %countries% countries":"%count% Volksgruppen in %countries% Ländern","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% hat %count% Volksgruppen in %countries% Ländern. Die Farbe jedes Punktes zeigt, wie viele Menschen für diese Volksgruppe beten.","1+ People Praying":"1+ Menschen beten","100+ People Praying":"100+ Menschen beten",Adopted:"Angenommen","Adoption Progress":"Adoptionsfortschritt","All Regions":"Alle Regionen","Alternate Names":"Alternative Namen","Clear All":"Alle löschen",Countries:"Länder","Countries in this region":"Länder in dieser Region",Country:"Land",Engaged:"Engagiert","Engagement Progress":"Engagement-Fortschritt","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Jede einzelne der völlig unerreichten Volksgruppen soll von einer Ortsgemeinde adoptiert werden, durch Beten, Geben und Senden","Exact Search":"Exakte Suche","Find unreached people groups by region and country.":"Finde unerreichte Volksgruppen nach Region und Land.","Full Profile":"Vollständiges Profil",Goal:"Ziel","Hide Filters":"Filter ausblenden",Intercessors:"Fürbitter","Load More":"Mehr laden","Loading results...":"Ergebnisse werden geladen...","Mobilize 100+ people praying daily for each DOXA people group":"Mobilisiere 100+ Menschen, die täglich für jede DOXA-Volksgruppe beten","No One Praying":"Niemand betet","No options found":"Keine Standorte gefunden","No unengaged people groups by 2033":"Dass es bis 2033 keine völlig unerreichte Volksgruppe mehr gibt","Not Adopted":"noch nicht adoptiert",Other:"Andere","Page Not Found":"Seite nicht gefunden","People Group":"Personengruppe","People Groups":"Volksgruppen","People committed to praying":"Menschen, die sich dem Beten verpflichtet haben",Population:"Bevölkerung","Prayer Coverage":"Gebetsabdeckung","Prayer coverage progress":"Fortschritt der Gebetsabdeckung",Regions:"Regionen",Religion:"Primäre Religion","Search names, country/continent, religions...":"Suche nach Namen, Land/Kontinent, Religionen...","See %region% dashboard":"Dashboard anzeigen: %region%","See All":"Alle anzeigen",Select:"Auswählen","Show Filters":"Filter anzeigen","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"In %country% gibt es %count% Volksgruppen. Sieh auch auf der Karte nach den Volksgruppen an der Grenze dieses Landes.",Total:"Gesamt","Type to search...":"Geben Sie etwas ein, um danach zu suchen","Unengaged people groups":"Völlig unerreichte Volksgruppen","WAGF Block":"WAGF-Block","WAGF Region":"WAGF-Region","people groups adopted":"adoptierte Volksgruppen","people groups engaged":"engagierte Volksgruppen"},$h={placeholder:"Volk, Ort, Sprache, Religion",labels:{people:"Volk:",place:"Ort:",language:"Sprache:",religion:"Religion:"},sections:{within:"Innerhalb {selection}",allData:"Alle DOXA-Daten"}},Sh={prayer:"Gebet",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Volksgruppen",regions:"Regionen",countries:"Länder","language-families":"Sprachen",religion:"Religionen",family:"Sprachfamilie",language:"Sprache",dialect:"Dialekt/Varietät",bloc:"Affinitätsblock",cluster:"Cluster",group:"Volksgruppe",pgic:"Volksgruppe im Land",region:"WAGF-Region",block:"WAGF-Block",country:"Land"},Ah={backToLegend:"Back to Legend",closeDetailView:"Close detail view"},Eh={prayForThem:"Pray for them",adoptThem:"Adopt",moreInfo:"More info",zoomIn:"Zoom in",zoomOut:"Zoom out",switchToLightMode:"Switch to light mode",switchToDarkMode:"Switch to dark mode",resetView:"Reset view",toggleFullscreen:"Toggle fullscreen",aboutThisMap:"About this map",closeMenu:"Close menu",reloadMap:"Reload Map",showClusters:"Show Clusters",clusterSettings:"Cluster Settings",startAutoFly:"Start Auto Fly",stopFlight:"Stop Flight",speedLabel:"Speed:",speedOption:{slow:"Slow",normal:"Normal",fast:"Fast"},shareEmbed:"Share & embed",shareSteps:["Embed this map on your site","Create a list of the websites in your city","Train them to embed it too","Train them to train others to embed it too","Multiply maps everywhere for Jesus!"],share:"Share"},Ch={labels:{country:"Country:",population:"Population:",language:"Language:",religion:"Religion:",languageFamily:"Language Family:",peopleCommitted:"Committed to pray:"},messages:{noDescription:"No description available."}},Lh={title:{prayer:"Prayer Progress",engagement:"Engagement Progress",adoption:"Adoption Progress",languageFamilies:"Language Families",doxaRegions:"Doxa Regions",affinityBlocs:"Affinity Blocks",gospelResources:"Gospel Resources"},header:{default:"Legend",collapsed:"Legend",peopleGroupFallback:"People Group"},prayer:{needsPrayer:"Needs Prayer",hasPrayer:"Has Prayer",fullPrayerCoverage:"Full Prayer Coverage"},progress:{title:"Progress",covered:"{covered} of {total} people groups covered in prayer · {pct}%",short:"{covered} of {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Unengaged",hasEngagement:"Engaged"},adoption:{needsAdoption:"Needs Adoption",hasAdoption:"Has Adoption"},columns:{upgs:"UUPGs",population:"Population",name:"Name"},footer:{total:"Total"},sortByUpgs:"Sort by UUPGs",sortByPop:"Sort by Population",colLabel:{religion:"UUPG Religions",prayer:"Prayer Status",engagement:"Engagement Status",adoption:"Adoption Status",status:"Status"},titleBar:{legend:"Legend",peopleGroups:"People Groups",wagfRegions:"WAGF Regions",languages:"Languages"}},Th={menuComingSoon:"Menu coming soon"},Ph={clusterByRegion:"By Doxa Region",clusterByLanguageFamily:"By Language Family",clusterByGospelResource:"By Gospel Resource"},Mh={country:{wagfRegion:"WAGF Region",wagfBlock:"WAGF Bloc",country:"Country",uupgCount:"UUPG Count"}},Nh={header:"CURRENT PRAYER LAP",lap:"Lap",upgs:"UUPGs",separator:" of "},Ih={"%count% people groups in %countries% countries":"%count% people groups in %countries% countries","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.","1+ People Praying":"1+ People Praying","100+ People Praying":"100+ People Praying",Adopted:"Adopted","Adoption Progress":"Adoption Progress","All Regions":"All Regions","Alternate Names":"Alternate Names","Clear All":"Clear All",Countries:"Countries","Countries in this region":"Countries in this region",Country:"Country",Engaged:"Engaged","Engagement Progress":"Engagement Progress","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Every unengaged people group adopted by a church committed to prayer, giving, and sending","Exact Search":"Exact Search","Find unreached people groups by region and country.":"Find unreached people groups by region and country.","Full Profile":"Full Profile",Goal:"Goal","Hide Filters":"Hide Filters",Intercessors:"Intercessors","Load More":"Load More","Loading results...":"Loading results...","Mobilize 100+ people praying daily for each DOXA people group":"Mobilize 100+ people praying daily for each DOXA people group","No One Praying":"No One Praying","No options found":"No options found","No unengaged people groups by 2033":"No unengaged people groups by 2033","Not Adopted":"Not Adopted",Other:"Other","Page Not Found":"Page Not Found","People Group":"People Group","People Groups":"People Groups","People committed to praying":"People committed to praying",Population:"Population","Prayer Coverage":"Prayer Coverage","Prayer coverage progress":"Prayer coverage progress",Regions:"Regions",Religion:"Religion","Search names, country/continent, religions...":"Search names, country/continent, religions...","See %region% dashboard":"See %region% dashboard","See All":"See All",Select:"Select","Show Filters":"Show Filters","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.",Total:"Total","Type to search...":"Type to search...","Unengaged people groups":"Unengaged people groups","WAGF Block":"WAGF Block","WAGF Region":"WAGF Region","people groups adopted":"people groups adopted","people groups engaged":"people groups engaged"},Rh={placeholder:"People, place, language, religion",labels:{people:"People:",place:"Place:",language:"Language:",religion:"Religion:"},kinds:{people:"People Group + Country",peopleGroup:"People Group",bloc:"Affinity Block",cluster:"People Cluster",country:"Country",region:"Region",family:"Language Family",languageKind:"Language",dialect:"Dialect",religionKind:"Religion"},sections:{within:"Within {selection}",allData:"All DOXA Data"}},Fh={prayer:"Prayer",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"People Groups (Affinity)",regions:"Regions",countries:"Countries","language-families":"Languages",religion:"Religions",family:"Lang Family",language:"Language",dialect:"Dialect/Variety",bloc:"Affinity Block",cluster:"Cluster",group:"People Group",pgic:"PG in Country",region:"WAGF Region",block:"WAGF Bloc",country:"Country"},Oh={backToLegend:"Volver a la leyenda",closeDetailView:"Cerrar vista de detalle"},Dh={prayForThem:"Ora por ellos",adoptThem:"Adóptalos",moreInfo:"Más información",zoomIn:"Acercar",zoomOut:"Alejar",switchToLightMode:"Cambiar a modo claro",switchToDarkMode:"Cambiar a modo oscuro",resetView:"Restablecer vista",toggleFullscreen:"Alternar pantalla completa",aboutThisMap:"Acerca de este mapa",closeMenu:"Cerrar menú",reloadMap:"Recargar mapa",showClusters:"Mostrar clústeres",clusterSettings:"Ajustes de clústeres",startAutoFly:"Iniciar vuelo automático",stopFlight:"Detener vuelo",speedLabel:"Velocidad:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Compartir e incrustar"},Bh={labels:{country:"País:",population:"Población:",language:"Idioma:",religion:"Religión:",languageFamily:"Familia lingüística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"No hay descripción disponible."}},Gh={title:{prayer:"Progreso de oración",engagement:"Progreso de implicación",adoption:"Progreso de adopción",languageFamilies:"Familias lingüísticas",doxaRegions:"Regiones Doxa",affinityBlocs:"Bloques de afinidad",gospelResources:"Recursos del Evangelio"},header:{collapsed:"Leyenda",peopleGroupFallback:"Grupo de personas"},prayer:{needsPrayer:"Necesita oración",hasPrayer:"Tiene oración",fullPrayerCoverage:"Cobertura de oración completa"},progress:{title:"Progreso",covered:"{covered} de {total} grupos de personas cubiertos en oración · {pct}%",short:"{covered} de {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necesita implicación",hasEngagement:"Tiene implicación"},adoption:{needsAdoption:"Necesita adopción",hasAdoption:"Tiene adopción"},columns:{upgs:"UUPGs",population:"Población",name:"Nombre"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por población",colLabel:{religion:"Religiones UUPG",prayer:"Estado de oración",engagement:"Estado de compromiso",adoption:"Estado de adopción",status:"Estado"},titleBar:{legend:"Leyenda",peopleGroups:"Pueblos",wagfRegions:"Regiones WAGF",languages:"Idiomas"}},jh={menuComingSoon:"Menú próximamente"},Uh={clusterByRegion:"Por región Doxa",clusterByLanguageFamily:"Por familia lingüística",clusterByGospelResource:"Por recurso del Evangelio"},Kh={header:"VUELTA DE ORACIÓN ACTUAL",lap:"Vuelta",upgs:"UUPGs",separator:" de "},zh={"%count% people groups in %countries% countries":"%count% grupos étnicos en %countries% países","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% tiene %count% grupos étnicos en %countries% países. El color de cada punto indica cuántas personas oran por ese grupo étnico.","1+ People Praying":"1+ personas orando","100+ People Praying":"100+ personas orando",Adopted:"Aprobado","Adoption Progress":"Progreso de la adopción","All Regions":"Todas las regiones","Alternate Names":"Nombres alternativos","Clear All":"Borrar todo",Countries:"Países","Countries in this region":"Países de esta región",Country:"País",Engaged:"Comprometido","Engagement Progress":"Progreso del compromiso","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Cada grupo étnico no evangelizado adoptado por una iglesia comprometida con la oración, la ofrenda y el envío.","Exact Search":"Búsqueda exacta","Find unreached people groups by region and country.":"Encuentra grupos étnicos no alcanzados por región y país.","Full Profile":"Perfil completo",Goal:"Meta","Hide Filters":"Ocultar filtros",Intercessors:"Intercesores","Load More":"Cargar más","Loading results...":"Cargando resultados...","Mobilize 100+ people praying daily for each DOXA people group":"Movilizar a más de 100 personas que oren diariamente por cada grupo étnico DOXA.","No One Praying":"Nadie orando","No options found":"No se han encontrado opciones","No unengaged people groups by 2033":"No habrá grupos étnicos sin evangelizar para 2033","Not Adopted":"No adoptado",Other:"Otros","Page Not Found":"Página no encontrada","People Group":"Grupo Étnico","People Groups":"Grupos Étnicos","People committed to praying":"Personas comprometidas con la oración",Population:"Población","Prayer Coverage":"Cobertura de oración","Prayer coverage progress":"Progreso de la cobertura de oración",Regions:"Regiones",Religion:"Religión","Search names, country/continent, religions...":"Buscar nombres, país/continente, religiones...","See %region% dashboard":"Ver el panel de %region%","See All":"Ver todo",Select:"Seleccionar","Show Filters":"Mostrar filtros","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Hay %count% grupos étnicos en %country%. Consulta también el mapa para ver los grupos étnicos en la frontera de este país.",Total:"Total","Type to search...":"Escribe para buscar...","Unengaged people groups":"Grupos étnicos no comprometidos","WAGF Block":"Bloque WAGF","WAGF Region":"Región de la WAGF","people groups adopted":"grupos de personas adoptados","people groups engaged":"grupos étnicos comprometidos"},Hh={placeholder:"Pueblo, lugar, idioma, religión",labels:{people:"Pueblo:",place:"Lugar:",language:"Idioma:",religion:"Religión:"},kinds:{people:"Pueblo + país",peopleGroup:"Pueblo",bloc:"Bloque de afinidad",cluster:"Clúster de pueblos",country:"País",region:"Región",family:"Familia lingüística",languageKind:"Idioma",dialect:"Dialecto",religionKind:"Religión"}},Vh={prayer:"Oración",adoption:"Adopción",engagement:"Compromiso","affinity-blocks":"Pueblos",regions:"Regiones",countries:"Países","language-families":"Idiomas",religion:"Religiones",family:"Familia lingüística",language:"Idioma",dialect:"Dialecto/Variedad",bloc:"Bloque de afinidad",cluster:"Clúster",group:"Pueblo",pgic:"Pueblo en país",region:"Región WAGF",block:"Bloque WAGF",country:"País"},Wh={backToLegend:"Retour à la légende",closeDetailView:"Fermer la vue détaillée"},Yh={prayForThem:"Priez pour eux",adoptThem:"Adoptez-les",moreInfo:"Plus d'infos",zoomIn:"Zoom avant",zoomOut:"Zoom arrière",switchToLightMode:"Passer au mode clair",switchToDarkMode:"Passer au mode sombre",resetView:"Réinitialiser la vue",toggleFullscreen:"Basculer en plein écran",aboutThisMap:"À propos de cette carte",closeMenu:"Fermer le menu",reloadMap:"Recharger la carte",showClusters:"Afficher les clusters",clusterSettings:"Paramètres des clusters",startAutoFly:"Démarrer le vol auto",stopFlight:"Arrêter le vol",speedLabel:"Vitesse :",speedOption:{slow:"Lente",normal:"Normale",fast:"Rapide"},shareEmbed:"Partager et intégrer"},qh={labels:{country:"Pays :",population:"Population :",language:"Langue :",religion:"Religion :",languageFamily:"Famille de langues :",peopleCommitted:"Engagés à prier :"},messages:{noDescription:"Aucune description disponible."}},Jh={title:{prayer:"Progression de la prière",engagement:"Progression de l'engagement",adoption:"Progression de l'adoption",languageFamilies:"Familles de langues",doxaRegions:"Régions Doxa",affinityBlocs:"Blocs d'affinité",gospelResources:"Ressources de l'Évangile"},header:{collapsed:"Légende",peopleGroupFallback:"Groupe de personnes"},prayer:{needsPrayer:"Besoin de prière",hasPrayer:"Prière en cours",fullPrayerCoverage:"Couverture de prière complète"},progress:{title:"Progression",covered:"{covered} sur {total} groupes de personnes couverts par la prière · {pct}%",short:"{covered} sur {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Besoin d'engagement",hasEngagement:"Engagement en cours"},adoption:{needsAdoption:"Besoin d'adoption",hasAdoption:"Adoption en cours"},columns:{upgs:"UUPGs",population:"Population",name:"Nom"},footer:{total:"Total"},sortByUpgs:"Trier par UUPG",sortByPop:"Trier par population",colLabel:{religion:"Religions UUPG",prayer:"Statut de prière",engagement:"Statut d'engagement",adoption:"Statut d'adoption",status:"Statut"},titleBar:{legend:"Légende",peopleGroups:"Peuples",wagfRegions:"Régions WAGF",languages:"Langues"}},Xh={menuComingSoon:"Menu bientôt disponible"},Zh={clusterByRegion:"Par région Doxa",clusterByLanguageFamily:"Par famille de langues",clusterByGospelResource:"Par ressource de l'Évangile"},Qh={country:{wagfRegion:"Région WAGF",wagfBlock:"Bloc WAGF",country:"Pays",uupgCount:"Nombre d'UUPG"}},em={header:"TOUR DE PRIÈRE ACTUEL",lap:"Tour",upgs:"UUPGs",separator:" sur "},tm={"%count% people groups in %countries% countries":"%count% peuples dans %countries% pays","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% compte %count% peuples répartis dans %countries% pays. La couleur de chaque point indique combien de personnes prient pour ce peuple.","1+ People Praying":"1+ personnes en prière","100+ People Praying":"100+ personnes en prière",Adopted:"Adopté","Adoption Progress":"Progrès de l'adoption","All Regions":"Toutes les régions","Alternate Names":"Autres noms","Clear All":"Tout effacer",Countries:"Pays","Countries in this region":"Pays de cette région",Country:"Pays",Engaged:"Engagé","Engagement Progress":"Progrès de l'engagement","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Chaque peuple non engagé adopté par une église locale engagée dans la prière, le don et l'envoi","Exact Search":"Recherche exacte","Find unreached people groups by region and country.":"Trouvez des peuples non atteints par région et par pays.","Full Profile":"Profil complet",Goal:"Objectif","Hide Filters":"Masquer les filtres",Intercessors:"Intercesseurs","Load More":"Afficher plus","Loading results...":"Chargement des résultats...","Mobilize 100+ people praying daily for each DOXA people group":"Mobiliser plus de 100 personnes priant chaque jour pour chaque peuple DOXA","No One Praying":"Personne ne prie","No options found":"Aucun lieu trouvé","No unengaged people groups by 2033":"Plus aucun peuple non engagé d'ici 2033","Not Adopted":"Non adopté",Other:"Autre","Page Not Found":"Page introuvable","People Group":"Peuple","People Groups":"Peuples","People committed to praying":"Personnes engagées dans la prière",Population:"Population","Prayer Coverage":"Couverture de prière","Prayer coverage progress":"Progression de la couverture de prière",Regions:"Régions",Religion:"Religion","Search names, country/continent, religions...":"Rechercher des noms, pays/continent, religions...","See %region% dashboard":"Voir le tableau de bord : %region%","See All":"Tout afficher",Select:"Sélectionner","Show Filters":"Afficher les filtres","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Il y a %count% peuples en %country%. Consultez la carte pour découvrir également les peuples situés à la frontière de ce pays.",Total:"Total","Type to search...":"Entrer votre recherche","Unengaged people groups":"Peuples non engagés","WAGF Block":"Bloc WAGF","WAGF Region":"Région WAGF","people groups adopted":"peuples adoptés","people groups engaged":"peuples engagés"},om={placeholder:"Peuple, lieu, langue, religion",labels:{people:"Peuple :",place:"Lieu :",language:"Langue :",religion:"Religion :"},kinds:{people:"Peuple + pays",peopleGroup:"Peuple",bloc:"Bloc d'affinité",cluster:"Grappe de peuples",country:"Pays",region:"Région",family:"Famille linguistique",languageKind:"Langue",dialect:"Dialecte",religionKind:"Religion"}},nm={prayer:"Prière",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Peuples",regions:"Régions",countries:"Pays","language-families":"Langues",religion:"Religions",family:"Famille linguistique",language:"Langue",dialect:"Dialecte/Variété",bloc:"Bloc d'affinité",cluster:"Grappe",group:"Peuple",pgic:"Peuple dans le pays",region:"Région WAGF",block:"Bloc WAGF",country:"Pays"},am={backToLegend:"लेजेंड पर वापस जाएं",closeDetailView:"विवरण दृश्य बंद करें"},rm={prayForThem:"उनके लिए प्रार्थना करें",adoptThem:"उन्हें गोद लें",moreInfo:"अधिक जानकारी",zoomIn:"ज़ूम इन",zoomOut:"ज़ूम आउट",switchToLightMode:"लाइट मोड पर जाएं",switchToDarkMode:"डार्क मोड पर जाएं",resetView:"दृश्य रीसेट करें",toggleFullscreen:"फ़ुलस्क्रीन टॉगल करें",aboutThisMap:"इस मानचित्र के बारे में",closeMenu:"मेनू बंद करें",reloadMap:"मानचित्र पुनः लोड करें",showClusters:"क्लस्टर दिखाएं",clusterSettings:"क्लस्टर सेटिंग्स",startAutoFly:"ऑटो फ्लाई शुरू करें",stopFlight:"उड़ान रोकें",speedLabel:"गति:",speedOption:{slow:"धीमी",normal:"सामान्य",fast:"तेज़"},shareEmbed:"साझा करें और एम्बेड करें"},sm={labels:{country:"देश:",population:"जनसंख्या:",language:"भाषा:",religion:"धर्म:",languageFamily:"भाषा परिवार:",peopleCommitted:"प्रार्थना के लिए प्रतिबद्ध:"},messages:{noDescription:"कोई विवरण उपलब्ध नहीं है।"}},im={title:{prayer:"प्रार्थना प्रगति",engagement:"सहभागिता प्रगति",adoption:"गोद लेने की प्रगति",languageFamilies:"भाषा परिवार",doxaRegions:"Doxa क्षेत्र",affinityBlocs:"समानता समूह",gospelResources:"सुसमाचार संसाधन"},header:{collapsed:"किंवदंती",peopleGroupFallback:"जनजाति समूह"},prayer:{needsPrayer:"प्रार्थना चाहिए",hasPrayer:"प्रार्थना है",fullPrayerCoverage:"पूर्ण प्रार्थना कवरेज"},progress:{title:"प्रगति",covered:"{total} में से {covered} जनजाति समूह प्रार्थना में कवर · {pct}%",short:"{total} में से {covered} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"सहभागिता चाहिए",hasEngagement:"सहभागिता है"},adoption:{needsAdoption:"गोद लेना चाहिए",hasAdoption:"गोद लिया गया"},columns:{upgs:"UUPGs",population:"जनसंख्या"},footer:{total:"कुल"}},lm={menuComingSoon:"मेनू शीघ्र आ रहा है"},cm={clusterByRegion:"Doxa क्षेत्र के अनुसार",clusterByLanguageFamily:"भाषा परिवार के अनुसार",clusterByGospelResource:"सुसमाचार संसाधन के अनुसार"},um={header:"वर्तमान प्रार्थना चक्र",lap:"चक्र",upgs:"UUPGs",separator:" में से "},dm={"%count% people groups in %countries% countries":"%countries% देशों में %count% लोगों के समूह","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% में %countries% देशों में %count% लोगों के समूह हैं। प्रत्येक बिंदु का रंग दर्शाता है कि उस लोगों के समूह के लिए कितने लोग प्रार्थना कर रहे हैं।","1+ People Praying":"1+ लोग प्रार्थना कर रहे हैं","100+ People Praying":"100+ लोग प्रार्थना कर रहे हैं",Adopted:"दत्तक लिया गया","Adoption Progress":"दत्तक ग्रहण की प्रगति","All Regions":"सभी क्षेत्र","Alternate Names":"वैकल्पिक नाम","Clear All":"सभी साफ़ करें",Countries:"देश","Countries in this region":"इस क्षेत्र के देश",Country:"देश",Engaged:"प्रवेशित","Engagement Progress":"प्रवेश की प्रगति","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"प्रत्येक असंलग्न जनसमूह जिसे प्रार्थना, दान और भेजने के लिए प्रतिबद्ध एक चर्च ने अपनाया है।","Exact Search":"सटीक खोज","Find unreached people groups by region and country.":"क्षेत्र और देश के अनुसार अगम्य लोगों के समूह खोजें।","Full Profile":"पूर्ण प्रोफ़ाइल",Goal:"लक्ष्य","Hide Filters":"फ़िल्टर छिपाएँ",Intercessors:"मध्यस्थ","Load More":"और लोड करें","Loading results...":"परिणाम लोड हो रहे हैं..।","Mobilize 100+ people praying daily for each DOXA people group":"प्रत्येक DOXA जनसमूह के लिए प्रतिदिन प्रार्थना करने हेतु 100+ लोगों को सक्रिय करें।","No One Praying":"कोई प्रार्थना नहीं कर रहा","No options found":"कोई विकल्प नहीं मिला","No unengaged people groups by 2033":"2033 तक कोई भी संलग्न न किया गया जनसमूह नहीं रहेगा।","Not Adopted":"दत्तक नहीं लिया गया",Other:"अन्य","Page Not Found":"पृष्ठ नहीं मिला","People Group":"लोगों का समूह","People Groups":"लोगों के समूह","People committed to praying":"प्रार्थना के लिए प्रतिबद्ध लोग",Population:"जनसँख्या","Prayer Coverage":"प्रार्थना कवरेज","Prayer coverage progress":"प्रार्थना कवरेज की प्रगति",Regions:"क्षेत्र",Religion:"धर्म","Search names, country/continent, religions...":"नाम, देश/महाद्वीप, धर्म खोजें..।","See %region% dashboard":"%region% डैशबोर्ड देखें","See All":"सभी देखें",Select:"चयन/छंटनी","Show Filters":"फ़िल्टर दिखाएँ","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"%country% में %count% लोगों के समूह हैं। इस देश की सीमा पर स्थित लोगों के समूहों के लिए मानचित्र भी देखें।",Total:"संपूर्ण","Type to search...":"खोजने के लिए टाइप करें..।","Unengaged people groups":"अनलग्न लोगों के समूह","WAGF Block":"WAGF ब्लॉक","WAGF Region":"डब्ल्यूएजीएफ क्षेत्र","people groups adopted":"लोगों के समूहों ने अपनाया","people groups engaged":"प्रवेशित लोगों के समूह"},pm={placeholder:"लोग, स्थान, भाषा, धर्म",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"}},gm={backToLegend:"Torna alla legenda",closeDetailView:"Chiudi vista dettaglio"},fm={prayForThem:"Prega per loro",adoptThem:"Adottali",moreInfo:"Più informazioni",zoomIn:"Ingrandisci",zoomOut:"Riduci",switchToLightMode:"Passa alla modalità chiara",switchToDarkMode:"Passa alla modalità scura",resetView:"Reimposta vista",toggleFullscreen:"Attiva/disattiva schermo intero",aboutThisMap:"Informazioni su questa mappa",closeMenu:"Chiudi menu",reloadMap:"Ricarica mappa",showClusters:"Mostra cluster",clusterSettings:"Impostazioni cluster",startAutoFly:"Avvia volo automatico",stopFlight:"Ferma volo",speedLabel:"Velocità:",speedOption:{slow:"Lenta",normal:"Normale",fast:"Veloce"},shareEmbed:"Condividi e incorpora"},hm={labels:{country:"Paese:",population:"Popolazione:",language:"Lingua:",religion:"Religione:",languageFamily:"Famiglia linguistica:",peopleCommitted:"Impegnati a pregare:"},messages:{noDescription:"Nessuna descrizione disponibile."}},mm={title:{prayer:"Avanzamento della preghiera",engagement:"Avanzamento dell'impegno",adoption:"Avanzamento dell'adozione",languageFamilies:"Famiglie linguistiche",doxaRegions:"Regioni Doxa",affinityBlocs:"Blocchi di affinità",gospelResources:"Risorse del Vangelo"},header:{collapsed:"Legenda",peopleGroupFallback:"Gruppo di persone"},prayer:{needsPrayer:"Necessita preghiera",hasPrayer:"Ha preghiera",fullPrayerCoverage:"Copertura di preghiera completa"},progress:{title:"Avanzamento",covered:"{covered} di {total} gruppi di persone coperti dalla preghiera · {pct}%",short:"{covered} di {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necessita impegno",hasEngagement:"Ha impegno"},adoption:{needsAdoption:"Necessita adozione",hasAdoption:"Ha adozione"},columns:{upgs:"UUPGs",population:"Popolazione"},footer:{total:"Totale"}},bm={menuComingSoon:"Menu in arrivo"},ym={clusterByRegion:"Per regione Doxa",clusterByLanguageFamily:"Per famiglia linguistica",clusterByGospelResource:"Per risorsa del Vangelo"},_m={header:"GIRO DI PREGHIERA ATTUALE",lap:"Giro",upgs:"UUPGs",separator:" di "},vm={placeholder:"Popolo, luogo, lingua, religione",labels:{people:"Popolo:",place:"Luogo:",language:"Lingua:",religion:"Religione:"}},km={backToLegend:"Voltar à legenda",closeDetailView:"Fechar vista de detalhe"},wm={prayForThem:"Ore por eles",adoptThem:"Adote-os",moreInfo:"Mais informações",zoomIn:"Ampliar",zoomOut:"Reduzir",switchToLightMode:"Mudar para modo claro",switchToDarkMode:"Mudar para modo escuro",resetView:"Repor vista",toggleFullscreen:"Alternar ecrã inteiro",aboutThisMap:"Sobre este mapa",closeMenu:"Fechar menu",reloadMap:"Recarregar mapa",showClusters:"Mostrar clusters",clusterSettings:"Definições de clusters",startAutoFly:"Iniciar voo automático",stopFlight:"Parar voo",speedLabel:"Velocidade:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Partilhar e incorporar"},xm={labels:{country:"País:",population:"População:",language:"Língua:",religion:"Religião:",languageFamily:"Família linguística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"Sem descrição disponível."}},$m={title:{prayer:"Progresso da oração",engagement:"Progresso do envolvimento",adoption:"Progresso da adoção",languageFamilies:"Famílias linguísticas",doxaRegions:"Regiões Doxa",affinityBlocs:"Blocos de afinidade",gospelResources:"Recursos do Evangelho"},header:{collapsed:"Legenda",peopleGroupFallback:"Grupo de pessoas"},prayer:{needsPrayer:"Precisa de oração",hasPrayer:"Tem oração",fullPrayerCoverage:"Cobertura de oração completa"},progress:{title:"Progresso",covered:"{covered} de {total} grupos de pessoas cobertos em oração · {pct}%",short:"{covered} de {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Precisa de envolvimento",hasEngagement:"Tem envolvimento"},adoption:{needsAdoption:"Precisa de adoção",hasAdoption:"Tem adoção"},columns:{upgs:"UUPGs",population:"População",name:"Nome"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por população",colLabel:{religion:"Religiões UUPG",prayer:"Status de oração",engagement:"Status de engajamento",adoption:"Status de adoção",status:"Status"},titleBar:{legend:"Legenda",peopleGroups:"Povos",wagfRegions:"Regiões WAGF",languages:"Idiomas"}},Sm={menuComingSoon:"Menu em breve"},Am={clusterByRegion:"Por região Doxa",clusterByLanguageFamily:"Por família linguística",clusterByGospelResource:"Por recurso do Evangelho"},Em={header:"VOLTA DE ORAÇÃO ATUAL",lap:"Volta",upgs:"UUPGs",separator:" de "},Cm={"%count% people groups in %countries% countries":"%count% grupos étnicos em %countries% países","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% tem %count% grupos étnicos em %countries% países. A cor de cada ponto indica quantas pessoas oram por esse grupo étnico.","1+ People Praying":"1+ pessoas orando","100+ People Praying":"100+ pessoas orando",Adopted:"Aprovado","Adoption Progress":"Progresso da adoção","All Regions":"Todas as regiões","Alternate Names":"Nomes alternativos","Clear All":"Limpar tudo",Countries:"Países","Countries in this region":"Países desta região",Country:"País",Engaged:"Engajado","Engagement Progress":"Progresso do engajamento","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Cada grupo étnico não engajado adotado por uma igreja comprometida com a oração, contribuição e o envio","Exact Search":"Pesquisa exata","Find unreached people groups by region and country.":"Encontre grupos étnicos não alcançados por região e país.","Full Profile":"Perfil completo",Goal:"Meta","Hide Filters":"Ocultar filtros",Intercessors:"Intercessores","Load More":"Carregar mais","Loading results...":"A carregar resultados...","Mobilize 100+ people praying daily for each DOXA people group":"Mobilizar mais de 100 pessoas para orar diariamente por cada grupo étnico DOXA","No One Praying":"Ninguém orando","No options found":"Não foram encontradas opções","No unengaged people groups by 2033":"Nenhum grupo étnico não engajado até 2033","Not Adopted":"Não adotado",Other:"Outros","Page Not Found":"Página não encontrada","People Group":"Grupo étnico","People Groups":"Grupos étnicos","People committed to praying":"Pessoas comprometidas com a oração",Population:"Aplicação","Prayer Coverage":"Cobertura de oração","Prayer coverage progress":"Progresso da cobertura de oração",Regions:"Regiões",Religion:"Religião","Search names, country/continent, religions...":"Busque nomes, país/continente, religiões...","See %region% dashboard":"Ver o painel: %region%","See All":"Ver tudo",Select:"Selecionar","Show Filters":"Mostrar filtros","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Existem %count% grupos étnicos em %country%. Verifique no mapa também os grupos étnicos na fronteira deste país.",Total:"Total","Type to search...":"Digite para pesquisar...","Unengaged people groups":"Grupos étnicos não engajados","WAGF Block":"Bloco WAGF","WAGF Region":"Região da WAGF","people groups adopted":"grupos étnicos adotados","people groups engaged":"grupos étnicos engajados"},Lm={placeholder:"Povo, local, língua, religião",labels:{people:"Povo:",place:"Local:",language:"Língua:",religion:"Religião:"},kinds:{people:"Povo + país",peopleGroup:"Povo",bloc:"Bloco de afinidade",cluster:"Agrupamento de povos",country:"País",region:"Região",family:"Família linguística",languageKind:"Idioma",dialect:"Dialeto",religionKind:"Religião"}},Tm={prayer:"Oração",adoption:"Adoção",engagement:"Engajamento","affinity-blocks":"Povos",regions:"Regiões",countries:"Países","language-families":"Idiomas",religion:"Religiões",family:"Família linguística",language:"Idioma",dialect:"Dialeto/Variedade",bloc:"Bloco de afinidade",cluster:"Agrupamento",group:"Povo",pgic:"Povo no país",region:"Região WAGF",block:"Bloco WAGF",country:"País"},Pm={backToLegend:"Înapoi la legendă",closeDetailView:"Închide vizualizarea detaliată"},Mm={prayForThem:"Roagă-te pentru ei",adoptThem:"Adoptă-i",moreInfo:"Mai multe informații",zoomIn:"Mărește",zoomOut:"Micșorează",switchToLightMode:"Comută la modul luminos",switchToDarkMode:"Comută la modul întunecat",resetView:"Resetează vizualizarea",toggleFullscreen:"Comută ecran complet",aboutThisMap:"Despre această hartă",closeMenu:"Închide meniul",reloadMap:"Reîncarcă harta",showClusters:"Arată clusterele",clusterSettings:"Setări clustere",startAutoFly:"Pornește zborul automat",stopFlight:"Oprește zborul",speedLabel:"Viteză:",speedOption:{slow:"Lent",normal:"Normal",fast:"Rapid"},shareEmbed:"Partajează și încorporează"},Nm={labels:{country:"Țară:",population:"Populație:",language:"Limbă:",religion:"Religie:",languageFamily:"Familie de limbi:",peopleCommitted:"Angajați să se roage:"},messages:{noDescription:"Nicio descriere disponibilă."}},Im={title:{prayer:"Progresul rugăciunii",engagement:"Progresul implicării",adoption:"Progresul adopției",languageFamilies:"Familii de limbi",doxaRegions:"Regiuni Doxa",affinityBlocs:"Blocuri de afinitate",gospelResources:"Resurse ale Evangheliei"},header:{collapsed:"Legendă",peopleGroupFallback:"Grup de popoare"},prayer:{needsPrayer:"Necesită rugăciune",hasPrayer:"Are rugăciune",fullPrayerCoverage:"Acoperire completă de rugăciune"},progress:{title:"Progres",covered:"{covered} din {total} grupuri de popoare acoperite în rugăciune · {pct}%",short:"{covered} din {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necesită implicare",hasEngagement:"Are implicare"},adoption:{needsAdoption:"Necesită adopție",hasAdoption:"Are adopție"},columns:{upgs:"UUPGs",population:"Populație"},footer:{total:"Total"}},Rm={menuComingSoon:"Meniu în curând"},Fm={clusterByRegion:"După regiune Doxa",clusterByLanguageFamily:"După familia de limbi",clusterByGospelResource:"După resursa Evangheliei"},Om={header:"TURUL DE RUGĂCIUNE CURENT",lap:"Tur",upgs:"UUPGs",separator:" din "},Dm={placeholder:"Popor, loc, limbă, religie",labels:{people:"Popor:",place:"Loc:",language:"Limbă:",religion:"Religie:"}},Bm={backToLegend:"Назад к легенде",closeDetailView:"Закрыть подробный вид"},Gm={prayForThem:"Молитесь о них",adoptThem:"Усыновите их",moreInfo:"Подробнее",zoomIn:"Приблизить",zoomOut:"Отдалить",switchToLightMode:"Переключить на светлый режим",switchToDarkMode:"Переключить на тёмный режим",resetView:"Сбросить вид",toggleFullscreen:"Полноэкранный режим",aboutThisMap:"Об этой карте",closeMenu:"Закрыть меню",reloadMap:"Перезагрузить карту",showClusters:"Показать кластеры",clusterSettings:"Настройки кластеров",startAutoFly:"Начать авто-полёт",stopFlight:"Остановить полёт",speedLabel:"Скорость:",speedOption:{slow:"Медленно",normal:"Нормально",fast:"Быстро"},shareEmbed:"Поделиться и встроить"},jm={labels:{country:"Страна:",population:"Население:",language:"Язык:",religion:"Религия:",languageFamily:"Языковая семья:",peopleCommitted:"Обязались молиться:"},messages:{noDescription:"Описание недоступно."}},Um={title:{prayer:"Прогресс молитвы",engagement:"Прогресс вовлечённости",adoption:"Прогресс усыновления",languageFamilies:"Языковые семьи",doxaRegions:"Регионы Doxa",affinityBlocs:"Блоки родства",gospelResources:"Евангельские ресурсы"},header:{collapsed:"Условные обозначения",peopleGroupFallback:"Народная группа"},prayer:{needsPrayer:"Нуждается в молитве",hasPrayer:"Есть молитва",fullPrayerCoverage:"Полное молитвенное покрытие"},progress:{title:"Прогресс",covered:"{covered} из {total} народных групп охвачены молитвой · {pct}%",short:"{covered} из {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Нуждается в вовлечённости",hasEngagement:"Есть вовлечённость"},adoption:{needsAdoption:"Нуждается в усыновлении",hasAdoption:"Есть усыновление"},columns:{upgs:"UUPGs",population:"Население",name:"Название"},footer:{total:"Всего"},sortByUpgs:"Сортировать по UUPG",sortByPop:"Сортировать по населению",colLabel:{religion:"Религии UUPG",prayer:"Статус молитвы",engagement:"Статус вовлечённости",adoption:"Статус усыновления",status:"Статус"},titleBar:{legend:"Легенда",peopleGroups:"Народы",wagfRegions:"Регионы WAGF",languages:"Языки"}},Km={menuComingSoon:"Меню скоро появится"},zm={clusterByRegion:"По региону Doxa",clusterByLanguageFamily:"По языковой семье",clusterByGospelResource:"По евангельскому ресурсу"},Hm={header:"ТЕКУЩИЙ КРУГ МОЛИТВЫ",lap:"Круг",upgs:"UUPGs",separator:" из "},Vm={"%count% people groups in %countries% countries":"%count% групп людей в %countries% странах","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"В регионе %region% — %count% групп людей в %countries% странах. Цвет каждой точки показывает, сколько человек молится за эту группу людей.","1+ People Praying":"1+ человек молится","100+ People Praying":"100+ человек молятся",Adopted:"Принято","Adoption Progress":"Прогресс принятия","All Regions":"Все регионы","Alternate Names":"Альтернативные названия","Clear All":"Очистить всё",Countries:"Страны","Countries in this region":"Страны этого региона",Country:"Страна",Engaged:"Вовлечённый","Engagement Progress":"Прогресс вовлечения","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Каждая незадействованная народность принята церковью, приверженной молитве, пожертвованиям и посылке миссионеров","Exact Search":"Точный поиск","Find unreached people groups by region and country.":"Найдите недостигнутые группы людей по регионам и странам.","Full Profile":"Полный профиль",Goal:"Цель","Hide Filters":"Скрыть фильтры",Intercessors:"Ходатаи","Load More":"Загрузить еще","Loading results...":"Загрузка результатов...","Mobilize 100+ people praying daily for each DOXA people group":"Мобилизуйте 100+ человек для ежедневной молитвы за каждую народность DOXA","No One Praying":"Никто не молится","No options found":"Вариантов не найдено","No unengaged people groups by 2033":"К 2033 году не останется незадействованных народов","Not Adopted":"Не принято",Other:"Другое","Page Not Found":"Страница не найдена","People Group":"Группа людей","People Groups":"Группы людей","People committed to praying":"Люди, посвятившие себя молитве",Population:"Население","Prayer Coverage":"Молитвенное покрытие","Prayer coverage progress":"Прогресс молитвенного покрытия",Regions:"Регионы",Religion:"Религия","Search names, country/continent, religions...":"Поиск по именам, странам/континентам, религиям...","See %region% dashboard":"Открыть панель: %region%","See All":"Смотреть все",Select:"Выбрать","Show Filters":"Показать фильтры","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Страна %country% насчитывает %count% групп людей. Проверьте также на карте группы людей, расположенные вдоль границ этой страны.",Total:"Итого","Type to search...":"Введите текст для поиска...","Unengaged people groups":"Невовлечённые группы людей","WAGF Block":"Блок WAGF","WAGF Region":"Регион WAGF","people groups adopted":"принятые группы людей","people groups engaged":"вовлечённые группы людей"},Wm={placeholder:"Народ, место, язык, религия",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"}},Ym={prayer:"Молитва",adoption:"Усыновление",engagement:"Вовлечённость","affinity-blocks":"Народы",regions:"Регионы",countries:"Страны","language-families":"Языки",religion:"Религии",family:"Языковая семья",language:"Язык",dialect:"Диалект/вариант",bloc:"Блок родства",cluster:"Кластер",group:"Народ",pgic:"Народ в стране",region:"Регион WAGF",block:"Блок WAGF",country:"Страна"},qm={backToLegend:"返回图例",closeDetailView:"关闭详情视图"},Jm={prayForThem:"为他们祷告",adoptThem:"认领他们",moreInfo:"更多信息",zoomIn:"放大",zoomOut:"缩小",switchToLightMode:"切换至浅色模式",switchToDarkMode:"切换至深色模式",resetView:"重置视图",toggleFullscreen:"切换全屏",aboutThisMap:"关于此地图",closeMenu:"关闭菜单",reloadMap:"重新加载地图",showClusters:"显示聚类",clusterSettings:"聚类设置",startAutoFly:"开始自动飞行",stopFlight:"停止飞行",speedLabel:"速度:",speedOption:{slow:"慢",normal:"正常",fast:"快"},shareEmbed:"分享与嵌入"},Xm={labels:{country:"国家:",population:"人口:",language:"语言:",religion:"宗教:",languageFamily:"语系:",peopleCommitted:"承诺祷告人数:"},messages:{noDescription:"暂无描述。"}},Zm={title:{prayer:"祷告进度",engagement:"参与进度",adoption:"认领进度",languageFamilies:"语系",doxaRegions:"Doxa 区域",affinityBlocs:"亲缘板块",gospelResources:"福音资源"},header:{collapsed:"图例",peopleGroupFallback:"民族群体"},prayer:{needsPrayer:"需要祷告",hasPrayer:"已有祷告",fullPrayerCoverage:"全面祷告覆盖"},progress:{title:"进度",covered:"{total} 个民族群体中已有 {covered} 个被祷告覆盖 · {pct}%",short:"{covered} / {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"需要参与",hasEngagement:"已有参与"},adoption:{needsAdoption:"需要认领",hasAdoption:"已有认领"},columns:{upgs:"UUPGs",population:"人口"},footer:{total:"总计"}},Qm={menuComingSoon:"菜单即将推出"},eb={clusterByRegion:"按 Doxa 区域",clusterByLanguageFamily:"按语系",clusterByGospelResource:"按福音资源"},tb={header:"当前祷告轮次",lap:"第",upgs:"UUPGs",separator:" / "},ob={placeholder:"民族、地点、语言、宗教",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"}};/*! + */let Ac;const rr=e=>Ac=e,Sc=Symbol();function bs(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var ra;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(ra||(ra={}));function lh(){const e=Ir(!0),t=e.run(()=>de({}));let o=[],n=[];const a=qo({install(r){rr(a),a._a=r,r.provide(Sc,a),r.config.globalProperties.$pinia=a,n.forEach(s=>o.push(s)),n=[]},use(r){return this._a?o.push(r):n.push(r),this},_p:o,_a:null,_e:e,_s:new Map,state:t});return a}const $c=()=>{};function Ec(e,t,o,n=$c){e.push(t);const a=()=>{const r=e.indexOf(t);r>-1&&(e.splice(r,1),n())};return!o&&Bi()&&Np(a),a}function wn(e,...t){e.slice().forEach(o=>{o(...t)})}const ch=e=>e(),Cc=Symbol(),ys=Symbol();function _s(e,t){e instanceof Map&&t instanceof Map?t.forEach((o,n)=>e.set(n,o)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const o in t){if(!t.hasOwnProperty(o))continue;const n=t[o],a=e[o];bs(a)&&bs(n)&&e.hasOwnProperty(o)&&!st(n)&&!vo(n)?e[o]=_s(a,n):e[o]=n}return e}const uh=Symbol();function dh(e){return!bs(e)||!e.hasOwnProperty(uh)}const{assign:Fo}=Object;function ph(e){return!!(st(e)&&e.effect)}function gh(e,t,o,n){const{state:a,actions:r,getters:s}=t,i=o.state.value[e];let l;function u(){i||(o.state.value[e]=a?a():{});const c=tg(o.state.value[e]);return Fo(c,r,Object.keys(s||{}).reduce((p,g)=>(p[g]=qo(te(()=>{rr(o);const k=o._s.get(e);return s[g].call(k,k)})),p),{}))}return l=Lc(e,u,t,o,n,!0),l}function Lc(e,t,o={},n,a,r){let s;const i=Fo({actions:{}},o),l={deep:!0};let u,c,p=[],g=[],k;const w=n.state.value[e];!r&&!w&&(n.state.value[e]={});let _;function d(T){let I;u=c=!1,typeof T=="function"?(T(n.state.value[e]),I={type:ra.patchFunction,storeId:e,events:k}):(_s(n.state.value[e],T),I={type:ra.patchObject,payload:T,storeId:e,events:k});const H=_=Symbol();lo().then(()=>{_===H&&(u=!0)}),c=!0,wn(p,I,n.state.value[e])}const h=r?function(){const{state:I}=o,H=I?I():{};this.$patch(W=>{Fo(W,H)})}:$c;function f(){s.stop(),p=[],g=[],n._s.delete(e)}const m=(T,I="")=>{if(Cc in T)return T[ys]=I,T;const H=function(){rr(n);const W=Array.from(arguments),re=[],P=[];function $(N){re.push(N)}function M(N){P.push(N)}wn(g,{args:W,name:H[ys],store:x,after:$,onError:M});let C;try{C=T.apply(this&&this.$id===e?this:x,W)}catch(N){throw wn(P,N),N}return C instanceof Promise?C.then(N=>(wn(re,N),N)).catch(N=>(wn(P,N),Promise.reject(N))):(wn(re,C),C)};return H[Cc]=!0,H[ys]=I,H},v={_p:n,$id:e,$onAction:Ec.bind(null,g),$patch:d,$reset:h,$subscribe(T,I={}){const H=Ec(p,T,I.detached,()=>W()),W=s.run(()=>ct(()=>n.state.value[e],re=>{(I.flush==="sync"?c:u)&&T({storeId:e,type:ra.direct,events:k},re)},Fo({},l,I)));return H},$dispose:f},x=pn(v);n._s.set(e,x);const S=(n._a&&n._a.runWithContext||ch)(()=>n._e.run(()=>(s=Ir()).run(()=>t({action:m}))));for(const T in S){const I=S[T];if(st(I)&&!ph(I)||vo(I))r||(w&&dh(I)&&(st(I)?I.value=w[T]:_s(I,w[T])),n.state.value[e][T]=I);else if(typeof I=="function"){const H=m(I,T);S[T]=H,i.actions[T]=I}}return Fo(x,S),Fo(Be(x),S),Object.defineProperty(x,"$state",{get:()=>n.state.value[e],set:T=>{d(I=>{Fo(I,T)})}}),n._p.forEach(T=>{Fo(x,s.run(()=>T({store:x,app:n._a,pinia:n,options:i})))}),w&&r&&o.hydrate&&o.hydrate(x.$state,w),u=!0,c=!0,x}/*! #__NO_SIDE_EFFECTS__ */function vs(e,t,o){let n,a;const r=typeof t=="function";typeof e=="string"?(n=e,a=r?o:t):(a=e,n=e.id);function s(i,l){const u=mg();return i=i||(u?Fe(Sc,null):null),i&&rr(i),i=Ac,i._s.has(n)||(r?Lc(n,t,a,i):gh(n,a,i)),i._s.get(n)}return s.$id=n,s}const ks="__doxaMapToken",ws="doxa:map-token",Tc="__doxaMapTokenBridge",xn=()=>{if(typeof window>"u")return"";const e=window[ks];return typeof e=="string"?e:""};function Pc(e){if(typeof window>"u")return"";const t=typeof e=="string"?e.trim():"";if(!t||t===xn())return xn();window[ks]=t;try{window.dispatchEvent(new CustomEvent(ws,{detail:t}))}catch{}return t}function fh(){if(typeof window>"u"||window[Tc])return;const e=typeof window.MAP_TOKEN=="string"?window.MAP_TOKEN:"";e&&!xn()&&(window[ks]=e);try{Object.defineProperty(window,"MAP_TOKEN",{configurable:!0,get(){return xn()},set(t){Pc(t)}}),window[Tc]=!0}catch{}}function hh(){fh();const e=de(xn());if(typeof window<"u"){const t=()=>{e.value=xn()};window.addEventListener(ws,t);try{uo(()=>window.removeEventListener(ws,t))}catch{}}return e}function Mc(e){return Eg({loader:e,onError(t,o,n,a){a<=3?setTimeout(o,a*500):n()}})}const mh={backToLegend:"العودة إلى المفتاح",closeDetailView:"إغلاق عرض التفاصيل"},bh={prayForThem:"صلِّ من أجلهم",adoptThem:"تبنَّهم",moreInfo:"مزيد من المعلومات",zoomIn:"تكبير",zoomOut:"تصغير",switchToLightMode:"التبديل إلى الوضع الفاتح",switchToDarkMode:"التبديل إلى الوضع الداكن",resetView:"إعادة تعيين العرض",toggleFullscreen:"تبديل ملء الشاشة",aboutThisMap:"حول هذه الخريطة",closeMenu:"إغلاق القائمة",reloadMap:"إعادة تحميل الخريطة",showClusters:"إظهار المجموعات",clusterSettings:"إعدادات المجموعات",startAutoFly:"بدء الطيران التلقائي",stopFlight:"إيقاف الطيران",speedLabel:"السرعة:",speedOption:{slow:"بطيء",normal:"عادي",fast:"سريع"},shareEmbed:"مشاركة وتضمين"},yh={labels:{country:"الدولة:",population:"السكان:",language:"اللغة:",religion:"الديانة:",languageFamily:"العائلة اللغوية:",peopleCommitted:"ملتزمون بالصلاة:"},messages:{noDescription:"لا يوجد وصف متاح."}},_h={title:{prayer:"تقدم الصلاة",engagement:"تقدم الانخراط",adoption:"تقدم التبني",languageFamilies:"العائلات اللغوية",doxaRegions:"مناطق Doxa",affinityBlocs:"كتل القرابة",gospelResources:"موارد الإنجيل"},header:{collapsed:"وسيلة الإيضاح",peopleGroupFallback:"مجموعة الشعب"},prayer:{needsPrayer:"يحتاج إلى صلاة",hasPrayer:"لديه صلاة",fullPrayerCoverage:"تغطية صلاة كاملة"},progress:{title:"التقدم",covered:"{covered} من {total} مجموعة شعبية مغطاة بالصلاة · {pct}%",short:"{covered} من {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"يحتاج إلى انخراط",hasEngagement:"لديه انخراط"},adoption:{needsAdoption:"يحتاج إلى تبني",hasAdoption:"لديه تبني"},columns:{upgs:"UUPGs",population:"السكان",name:"الاسم"},footer:{total:"الإجمالي"},sortByUpgs:"ترتيب حسب UUPG",sortByPop:"ترتيب حسب السكان",colLabel:{religion:"ديانات UUPG",prayer:"حالة الصلاة",engagement:"حالة المشاركة",adoption:"حالة التبني",status:"الحالة"},titleBar:{legend:"مفتاح الخريطة",peopleGroups:"الشعوب",wagfRegions:"مناطق WAGF",languages:"اللغات"}},vh={menuComingSoon:"القائمة قادمة قريباً"},kh={clusterByRegion:"حسب منطقة Doxa",clusterByLanguageFamily:"حسب العائلة اللغوية",clusterByGospelResource:"حسب مورد الإنجيل"},wh={header:"دورة الصلاة الحالية",lap:"الدورة",upgs:"UUPGs",separator:" من "},xh={"%count% people groups in %countries% countries":"%count% مجموعة بشرية في %countries% دولة","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"تضم %region% %count% مجموعة بشرية في %countries% دولة. يشير لون كل نقطة إلى عدد الأشخاص الذين يصلّون من أجل تلك المجموعة البشرية.","1+ People Praying":"شخص واحد أو أكثر يصلّي","100+ People Praying":"أكثر من 100 شخص يصلّون",Adopted:"تم انتماؤه","Adoption Progress":"تقدُّم الإنتماء","All Regions":"جميع المناطق","Alternate Names":"الأسماء البديلة","Clear All":"مسح الكل",Countries:"الدول","Countries in this region":"الدول في هذه المنطقة",Country:"الدولة",Engaged:"مُنخرَط","Engagement Progress":"تقدُّم الانخراط","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"كل مجموعة بشرية غير مبشرة تتبناها كنيسة ملتزمة بالصلاة والعطاء والإرسال","Exact Search":"بحث دقيق","Find unreached people groups by region and country.":"ابحث عن المجموعات البشرية غير المُبلَّغة حسب المنطقة والدولة.","Full Profile":"الملف الشخصي الكامل",Goal:"الهدف","Hide Filters":"إخفاء المرشحات",Intercessors:"المتشفعين","Load More":"تحميل المزيد","Loading results...":"النتائج قيد التحميل...","Mobilize 100+ people praying daily for each DOXA people group":"حشد أكثر من 100 شخص للصلاة يوميًا من أجل كل مجموعة بشرية من مجموعات دوكسا","No One Praying":"لا أحد يصلّي","No options found":"لم يتم العثور على أي خيارات","No unengaged people groups by 2033":"الهدف هو القضاء على جميع الشعوب الغير مخدومة روحيا بحلول عام 2033","Not Adopted":"لم يتم انتماؤه",Other:"أخرى","Page Not Found":"الصفحة غير موجودة","People Group":"مجموعة بشرية","People Groups":"مجموعات بشرية","People committed to praying":"الأشخاص الذين التزموا بالصلاة",Population:"عدد السكان","Prayer Coverage":"التغطية المستمرة بالصلاة","Prayer coverage progress":"تقدم تغطية الصلاة",Regions:"المناطق",Religion:"الدين","Search names, country/continent, religions...":"إبحث عن الأسماء، الدولة/القارة، الأديان...","See %region% dashboard":"عرض لوحة معلومات %region%","See All":"عرض جميع العناصر",Select:"اختر","Show Filters":"إظهار عوامل التصفية","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"توجد %count% مجموعات بشرية في %country%. تحقق من الخريطة لمعرفة المجموعات البشرية الواقعة على حدود هذه الدولة أيضًا.",Total:"المجموع","Type to search...":"اكتب ما تريد البحث عنه...","Unengaged people groups":"الشعوب الغير متفاعلة","WAGF Block":"كتلة WAGF","WAGF Region":"منطقة WAGF","people groups adopted":"الشعوب المنتمية","people groups engaged":"مجموعات بشرية مُنخرِطة"},Ah={placeholder:"شعب، مكان، لغة، ديانة",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"}},Sh={prayer:"الصلاة",adoption:"التبني",engagement:"المشاركة","affinity-blocks":"الشعوب",regions:"المناطق",countries:"الدول","language-families":"اللغات",religion:"الأديان",family:"عائلة اللغة",language:"اللغة",dialect:"اللهجة/التنوع",bloc:"كتلة التقارب",cluster:"المجموعة",group:"الشعب",pgic:"الشعب في الدولة",region:"منطقة WAGF",block:"كتلة WAGF",country:"الدولة"},$h={backToLegend:"Zurück zur Legende",closeDetailView:"Detailansicht schließen"},Eh={prayForThem:"Für sie beten",adoptThem:"Sie adoptieren",moreInfo:"Mehr Infos",zoomIn:"Vergrößern",zoomOut:"Verkleinern",switchToLightMode:"Zum hellen Modus wechseln",switchToDarkMode:"Zum dunklen Modus wechseln",resetView:"Ansicht zurücksetzen",toggleFullscreen:"Vollbild umschalten",aboutThisMap:"Über diese Karte",closeMenu:"Menü schließen",reloadMap:"Karte neu laden",showClusters:"Cluster anzeigen",clusterSettings:"Cluster-Einstellungen",startAutoFly:"Auto-Flug starten",stopFlight:"Flug stoppen",speedLabel:"Geschwindigkeit:",speedOption:{slow:"Langsam",normal:"Normal",fast:"Schnell"},shareEmbed:"Teilen und einbetten"},Ch={labels:{country:"Land:",population:"Bevölkerung:",language:"Sprache:",religion:"Religion:",languageFamily:"Sprachfamilie:",peopleCommitted:"Zum Gebet verpflichtet:"},messages:{noDescription:"Keine Beschreibung verfügbar."}},Lh={title:{prayer:"Gebetsfortschritt",engagement:"Engagement-Fortschritt",adoption:"Adoptionsfortschritt",languageFamilies:"Sprachfamilien",doxaRegions:"Doxa-Regionen",affinityBlocs:"Affinitätsblöcke",gospelResources:"Evangeliumsressourcen"},header:{collapsed:"Legende",peopleGroupFallback:"Volksgruppe"},prayer:{needsPrayer:"Braucht Gebet",hasPrayer:"Hat Gebet",fullPrayerCoverage:"Vollständige Gebetsabdeckung"},progress:{title:"Fortschritt",covered:"{covered} von {total} Volksgruppen im Gebet abgedeckt · {pct}%",short:"{covered} von {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Braucht Engagement",hasEngagement:"Hat Engagement"},adoption:{needsAdoption:"Braucht Adoption",hasAdoption:"Hat Adoption"},columns:{upgs:"UUPGs",population:"Bevölkerung"},footer:{total:"Gesamt"}},Th={menuComingSoon:"Menü folgt in Kürze"},Ph={clusterByRegion:"Nach Doxa-Region",clusterByLanguageFamily:"Nach Sprachfamilie",clusterByGospelResource:"Nach Evangeliumsressource"},Mh={header:"AKTUELLE GEBETSRUNDE",lap:"Runde",upgs:"UUPGs",separator:" von "},Nh={"%count% people groups in %countries% countries":"%count% Volksgruppen in %countries% Ländern","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% hat %count% Volksgruppen in %countries% Ländern. Die Farbe jedes Punktes zeigt, wie viele Menschen für diese Volksgruppe beten.","1+ People Praying":"1+ Menschen beten","100+ People Praying":"100+ Menschen beten",Adopted:"Angenommen","Adoption Progress":"Adoptionsfortschritt","All Regions":"Alle Regionen","Alternate Names":"Alternative Namen","Clear All":"Alle löschen",Countries:"Länder","Countries in this region":"Länder in dieser Region",Country:"Land",Engaged:"Engagiert","Engagement Progress":"Engagement-Fortschritt","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Jede einzelne der völlig unerreichten Volksgruppen soll von einer Ortsgemeinde adoptiert werden, durch Beten, Geben und Senden","Exact Search":"Exakte Suche","Find unreached people groups by region and country.":"Finde unerreichte Volksgruppen nach Region und Land.","Full Profile":"Vollständiges Profil",Goal:"Ziel","Hide Filters":"Filter ausblenden",Intercessors:"Fürbitter","Load More":"Mehr laden","Loading results...":"Ergebnisse werden geladen...","Mobilize 100+ people praying daily for each DOXA people group":"Mobilisiere 100+ Menschen, die täglich für jede DOXA-Volksgruppe beten","No One Praying":"Niemand betet","No options found":"Keine Standorte gefunden","No unengaged people groups by 2033":"Dass es bis 2033 keine völlig unerreichte Volksgruppe mehr gibt","Not Adopted":"noch nicht adoptiert",Other:"Andere","Page Not Found":"Seite nicht gefunden","People Group":"Personengruppe","People Groups":"Volksgruppen","People committed to praying":"Menschen, die sich dem Beten verpflichtet haben",Population:"Bevölkerung","Prayer Coverage":"Gebetsabdeckung","Prayer coverage progress":"Fortschritt der Gebetsabdeckung",Regions:"Regionen",Religion:"Primäre Religion","Search names, country/continent, religions...":"Suche nach Namen, Land/Kontinent, Religionen...","See %region% dashboard":"Dashboard anzeigen: %region%","See All":"Alle anzeigen",Select:"Auswählen","Show Filters":"Filter anzeigen","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"In %country% gibt es %count% Volksgruppen. Sieh auch auf der Karte nach den Volksgruppen an der Grenze dieses Landes.",Total:"Gesamt","Type to search...":"Geben Sie etwas ein, um danach zu suchen","Unengaged people groups":"Völlig unerreichte Volksgruppen","WAGF Block":"WAGF-Block","WAGF Region":"WAGF-Region","people groups adopted":"adoptierte Volksgruppen","people groups engaged":"engagierte Volksgruppen"},Rh={placeholder:"Volk, Ort, Sprache, Religion",labels:{people:"Volk:",place:"Ort:",language:"Sprache:",religion:"Religion:"},sections:{within:"Innerhalb {selection}",allData:"Alle DOXA-Daten"}},Ih={prayer:"Gebet",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Volksgruppen",regions:"Regionen",countries:"Länder","language-families":"Sprachen",religion:"Religionen",family:"Sprachfamilie",language:"Sprache",dialect:"Dialekt/Varietät",bloc:"Affinitätsblock",cluster:"Cluster",group:"Volksgruppe",pgic:"Volksgruppe im Land",region:"WAGF-Region",block:"WAGF-Block",country:"Land"},Oh={backToLegend:"Back to Legend",closeDetailView:"Close detail view"},Fh={prayForThem:"Pray for them",adoptThem:"Adopt",moreInfo:"More info",zoomIn:"Zoom in",zoomOut:"Zoom out",switchToLightMode:"Switch to light mode",switchToDarkMode:"Switch to dark mode",resetView:"Reset view",toggleFullscreen:"Toggle fullscreen",aboutThisMap:"About this map",closeMenu:"Close menu",reloadMap:"Reload Map",showClusters:"Show Clusters",clusterSettings:"Cluster Settings",startAutoFly:"Start Auto Fly",stopFlight:"Stop Flight",speedLabel:"Speed:",speedOption:{slow:"Slow",normal:"Normal",fast:"Fast"},shareEmbed:"Share & embed",shareSteps:["Embed this map on your site","Create a list of the websites in your city","Train them to embed it too","Train them to train others to embed it too","Multiply maps everywhere for Jesus!"],share:"Share"},Dh={labels:{country:"Country:",population:"Population:",language:"Language:",religion:"Religion:",languageFamily:"Language Family:",peopleCommitted:"Committed to pray:"},messages:{noDescription:"No description available."}},Bh={title:{prayer:"Prayer Progress",engagement:"Engagement Progress",adoption:"Adoption Progress",languageFamilies:"Language Families",doxaRegions:"Doxa Regions",affinityBlocs:"Affinity Blocks",gospelResources:"Gospel Resources"},header:{default:"Legend",collapsed:"Legend",peopleGroupFallback:"People Group"},prayer:{needsPrayer:"Needs Prayer",hasPrayer:"Has Prayer",fullPrayerCoverage:"Full Prayer Coverage"},progress:{title:"Progress",covered:"{covered} of {total} people groups covered in prayer · {pct}%",short:"{covered} of {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Unengaged",hasEngagement:"Engaged"},adoption:{needsAdoption:"Needs Adoption",hasAdoption:"Has Adoption"},columns:{upgs:"UUPGs",population:"Population",name:"Name"},footer:{total:"Total"},sortByUpgs:"Sort by UUPGs",sortByPop:"Sort by Population",colLabel:{religion:"UUPG Religions",prayer:"Prayer Status",engagement:"Engagement Status",adoption:"Adoption Status",status:"Status"},titleBar:{legend:"Legend",peopleGroups:"People Groups",wagfRegions:"WAGF Regions",languages:"Languages"}},Gh={menuComingSoon:"Menu coming soon"},jh={clusterByRegion:"By Doxa Region",clusterByLanguageFamily:"By Language Family",clusterByGospelResource:"By Gospel Resource"},Uh={country:{wagfRegion:"WAGF Region",wagfBlock:"WAGF Bloc",country:"Country",uupgCount:"UUPG Count"}},Kh={header:"CURRENT PRAYER LAP",lap:"Lap",upgs:"UUPGs",separator:" of "},zh={"%count% people groups in %countries% countries":"%count% people groups in %countries% countries","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.","1+ People Praying":"1+ People Praying","100+ People Praying":"100+ People Praying",Adopted:"Adopted","Adoption Progress":"Adoption Progress","All Regions":"All Regions","Alternate Names":"Alternate Names","Clear All":"Clear All",Countries:"Countries","Countries in this region":"Countries in this region",Country:"Country",Engaged:"Engaged","Engagement Progress":"Engagement Progress","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Every unengaged people group adopted by a church committed to prayer, giving, and sending","Exact Search":"Exact Search","Find unreached people groups by region and country.":"Find unreached people groups by region and country.","Full Profile":"Full Profile",Goal:"Goal","Hide Filters":"Hide Filters",Intercessors:"Intercessors","Load More":"Load More","Loading results...":"Loading results...","Mobilize 100+ people praying daily for each DOXA people group":"Mobilize 100+ people praying daily for each DOXA people group","No One Praying":"No One Praying","No options found":"No options found","No unengaged people groups by 2033":"No unengaged people groups by 2033","Not Adopted":"Not Adopted",Other:"Other","Page Not Found":"Page Not Found","People Group":"People Group","People Groups":"People Groups","People committed to praying":"People committed to praying",Population:"Population","Prayer Coverage":"Prayer Coverage","Prayer coverage progress":"Prayer coverage progress",Regions:"Regions",Religion:"Religion","Search names, country/continent, religions...":"Search names, country/continent, religions...","See %region% dashboard":"See %region% dashboard","See All":"See All",Select:"Select","Show Filters":"Show Filters","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.",Total:"Total","Type to search...":"Type to search...","Unengaged people groups":"Unengaged people groups","WAGF Block":"WAGF Block","WAGF Region":"WAGF Region","people groups adopted":"people groups adopted","people groups engaged":"people groups engaged"},Hh={placeholder:"People, place, language, religion",labels:{people:"People:",place:"Place:",language:"Language:",religion:"Religion:"},kinds:{people:"People Group + Country",peopleGroup:"People Group",bloc:"Affinity Block",cluster:"People Cluster",country:"Country",region:"Region",family:"Language Family",languageKind:"Language",dialect:"Dialect",religionKind:"Religion"},sections:{within:"Within {selection}",allData:"All DOXA Data"}},Vh={prayer:"Prayer",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"People Groups (Affinity)",regions:"Regions",countries:"Countries","language-families":"Languages",religion:"Religions",family:"Lang Family",language:"Language",dialect:"Dialect/Variety",bloc:"Affinity Block",cluster:"Cluster",group:"People Group",pgic:"PG in Country",region:"WAGF Region",block:"WAGF Bloc",country:"Country"},Wh={backToLegend:"Volver a la leyenda",closeDetailView:"Cerrar vista de detalle"},Yh={prayForThem:"Ora por ellos",adoptThem:"Adóptalos",moreInfo:"Más información",zoomIn:"Acercar",zoomOut:"Alejar",switchToLightMode:"Cambiar a modo claro",switchToDarkMode:"Cambiar a modo oscuro",resetView:"Restablecer vista",toggleFullscreen:"Alternar pantalla completa",aboutThisMap:"Acerca de este mapa",closeMenu:"Cerrar menú",reloadMap:"Recargar mapa",showClusters:"Mostrar clústeres",clusterSettings:"Ajustes de clústeres",startAutoFly:"Iniciar vuelo automático",stopFlight:"Detener vuelo",speedLabel:"Velocidad:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Compartir e incrustar"},qh={labels:{country:"País:",population:"Población:",language:"Idioma:",religion:"Religión:",languageFamily:"Familia lingüística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"No hay descripción disponible."}},Jh={title:{prayer:"Progreso de oración",engagement:"Progreso de implicación",adoption:"Progreso de adopción",languageFamilies:"Familias lingüísticas",doxaRegions:"Regiones Doxa",affinityBlocs:"Bloques de afinidad",gospelResources:"Recursos del Evangelio"},header:{collapsed:"Leyenda",peopleGroupFallback:"Grupo de personas"},prayer:{needsPrayer:"Necesita oración",hasPrayer:"Tiene oración",fullPrayerCoverage:"Cobertura de oración completa"},progress:{title:"Progreso",covered:"{covered} de {total} grupos de personas cubiertos en oración · {pct}%",short:"{covered} de {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necesita implicación",hasEngagement:"Tiene implicación"},adoption:{needsAdoption:"Necesita adopción",hasAdoption:"Tiene adopción"},columns:{upgs:"UUPGs",population:"Población",name:"Nombre"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por población",colLabel:{religion:"Religiones UUPG",prayer:"Estado de oración",engagement:"Estado de compromiso",adoption:"Estado de adopción",status:"Estado"},titleBar:{legend:"Leyenda",peopleGroups:"Pueblos",wagfRegions:"Regiones WAGF",languages:"Idiomas"}},Xh={menuComingSoon:"Menú próximamente"},Zh={clusterByRegion:"Por región Doxa",clusterByLanguageFamily:"Por familia lingüística",clusterByGospelResource:"Por recurso del Evangelio"},Qh={header:"VUELTA DE ORACIÓN ACTUAL",lap:"Vuelta",upgs:"UUPGs",separator:" de "},em={"%count% people groups in %countries% countries":"%count% grupos étnicos en %countries% países","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% tiene %count% grupos étnicos en %countries% países. El color de cada punto indica cuántas personas oran por ese grupo étnico.","1+ People Praying":"1+ personas orando","100+ People Praying":"100+ personas orando",Adopted:"Aprobado","Adoption Progress":"Progreso de la adopción","All Regions":"Todas las regiones","Alternate Names":"Nombres alternativos","Clear All":"Borrar todo",Countries:"Países","Countries in this region":"Países de esta región",Country:"País",Engaged:"Comprometido","Engagement Progress":"Progreso del compromiso","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Cada grupo étnico no evangelizado adoptado por una iglesia comprometida con la oración, la ofrenda y el envío.","Exact Search":"Búsqueda exacta","Find unreached people groups by region and country.":"Encuentra grupos étnicos no alcanzados por región y país.","Full Profile":"Perfil completo",Goal:"Meta","Hide Filters":"Ocultar filtros",Intercessors:"Intercesores","Load More":"Cargar más","Loading results...":"Cargando resultados...","Mobilize 100+ people praying daily for each DOXA people group":"Movilizar a más de 100 personas que oren diariamente por cada grupo étnico DOXA.","No One Praying":"Nadie orando","No options found":"No se han encontrado opciones","No unengaged people groups by 2033":"No habrá grupos étnicos sin evangelizar para 2033","Not Adopted":"No adoptado",Other:"Otros","Page Not Found":"Página no encontrada","People Group":"Grupo Étnico","People Groups":"Grupos Étnicos","People committed to praying":"Personas comprometidas con la oración",Population:"Población","Prayer Coverage":"Cobertura de oración","Prayer coverage progress":"Progreso de la cobertura de oración",Regions:"Regiones",Religion:"Religión","Search names, country/continent, religions...":"Buscar nombres, país/continente, religiones...","See %region% dashboard":"Ver el panel de %region%","See All":"Ver todo",Select:"Seleccionar","Show Filters":"Mostrar filtros","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Hay %count% grupos étnicos en %country%. Consulta también el mapa para ver los grupos étnicos en la frontera de este país.",Total:"Total","Type to search...":"Escribe para buscar...","Unengaged people groups":"Grupos étnicos no comprometidos","WAGF Block":"Bloque WAGF","WAGF Region":"Región de la WAGF","people groups adopted":"grupos de personas adoptados","people groups engaged":"grupos étnicos comprometidos"},tm={placeholder:"Pueblo, lugar, idioma, religión",labels:{people:"Pueblo:",place:"Lugar:",language:"Idioma:",religion:"Religión:"},kinds:{people:"Pueblo + país",peopleGroup:"Pueblo",bloc:"Bloque de afinidad",cluster:"Clúster de pueblos",country:"País",region:"Región",family:"Familia lingüística",languageKind:"Idioma",dialect:"Dialecto",religionKind:"Religión"}},om={prayer:"Oración",adoption:"Adopción",engagement:"Compromiso","affinity-blocks":"Pueblos",regions:"Regiones",countries:"Países","language-families":"Idiomas",religion:"Religiones",family:"Familia lingüística",language:"Idioma",dialect:"Dialecto/Variedad",bloc:"Bloque de afinidad",cluster:"Clúster",group:"Pueblo",pgic:"Pueblo en país",region:"Región WAGF",block:"Bloque WAGF",country:"País"},nm={backToLegend:"Retour à la légende",closeDetailView:"Fermer la vue détaillée"},am={prayForThem:"Priez pour eux",adoptThem:"Adoptez-les",moreInfo:"Plus d'infos",zoomIn:"Zoom avant",zoomOut:"Zoom arrière",switchToLightMode:"Passer au mode clair",switchToDarkMode:"Passer au mode sombre",resetView:"Réinitialiser la vue",toggleFullscreen:"Basculer en plein écran",aboutThisMap:"À propos de cette carte",closeMenu:"Fermer le menu",reloadMap:"Recharger la carte",showClusters:"Afficher les clusters",clusterSettings:"Paramètres des clusters",startAutoFly:"Démarrer le vol auto",stopFlight:"Arrêter le vol",speedLabel:"Vitesse :",speedOption:{slow:"Lente",normal:"Normale",fast:"Rapide"},shareEmbed:"Partager et intégrer"},rm={labels:{country:"Pays :",population:"Population :",language:"Langue :",religion:"Religion :",languageFamily:"Famille de langues :",peopleCommitted:"Engagés à prier :"},messages:{noDescription:"Aucune description disponible."}},sm={title:{prayer:"Progression de la prière",engagement:"Progression de l'engagement",adoption:"Progression de l'adoption",languageFamilies:"Familles de langues",doxaRegions:"Régions Doxa",affinityBlocs:"Blocs d'affinité",gospelResources:"Ressources de l'Évangile"},header:{collapsed:"Légende",peopleGroupFallback:"Groupe de personnes"},prayer:{needsPrayer:"Besoin de prière",hasPrayer:"Prière en cours",fullPrayerCoverage:"Couverture de prière complète"},progress:{title:"Progression",covered:"{covered} sur {total} groupes de personnes couverts par la prière · {pct}%",short:"{covered} sur {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Besoin d'engagement",hasEngagement:"Engagement en cours"},adoption:{needsAdoption:"Besoin d'adoption",hasAdoption:"Adoption en cours"},columns:{upgs:"UUPGs",population:"Population",name:"Nom"},footer:{total:"Total"},sortByUpgs:"Trier par UUPG",sortByPop:"Trier par population",colLabel:{religion:"Religions UUPG",prayer:"Statut de prière",engagement:"Statut d'engagement",adoption:"Statut d'adoption",status:"Statut"},titleBar:{legend:"Légende",peopleGroups:"Peuples",wagfRegions:"Régions WAGF",languages:"Langues"}},im={menuComingSoon:"Menu bientôt disponible"},lm={clusterByRegion:"Par région Doxa",clusterByLanguageFamily:"Par famille de langues",clusterByGospelResource:"Par ressource de l'Évangile"},cm={country:{wagfRegion:"Région WAGF",wagfBlock:"Bloc WAGF",country:"Pays",uupgCount:"Nombre d'UUPG"}},um={header:"TOUR DE PRIÈRE ACTUEL",lap:"Tour",upgs:"UUPGs",separator:" sur "},dm={"%count% people groups in %countries% countries":"%count% peuples dans %countries% pays","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% compte %count% peuples répartis dans %countries% pays. La couleur de chaque point indique combien de personnes prient pour ce peuple.","1+ People Praying":"1+ personnes en prière","100+ People Praying":"100+ personnes en prière",Adopted:"Adopté","Adoption Progress":"Progrès de l'adoption","All Regions":"Toutes les régions","Alternate Names":"Autres noms","Clear All":"Tout effacer",Countries:"Pays","Countries in this region":"Pays de cette région",Country:"Pays",Engaged:"Engagé","Engagement Progress":"Progrès de l'engagement","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Chaque peuple non engagé adopté par une église locale engagée dans la prière, le don et l'envoi","Exact Search":"Recherche exacte","Find unreached people groups by region and country.":"Trouvez des peuples non atteints par région et par pays.","Full Profile":"Profil complet",Goal:"Objectif","Hide Filters":"Masquer les filtres",Intercessors:"Intercesseurs","Load More":"Afficher plus","Loading results...":"Chargement des résultats...","Mobilize 100+ people praying daily for each DOXA people group":"Mobiliser plus de 100 personnes priant chaque jour pour chaque peuple DOXA","No One Praying":"Personne ne prie","No options found":"Aucun lieu trouvé","No unengaged people groups by 2033":"Plus aucun peuple non engagé d'ici 2033","Not Adopted":"Non adopté",Other:"Autre","Page Not Found":"Page introuvable","People Group":"Peuple","People Groups":"Peuples","People committed to praying":"Personnes engagées dans la prière",Population:"Population","Prayer Coverage":"Couverture de prière","Prayer coverage progress":"Progression de la couverture de prière",Regions:"Régions",Religion:"Religion","Search names, country/continent, religions...":"Rechercher des noms, pays/continent, religions...","See %region% dashboard":"Voir le tableau de bord : %region%","See All":"Tout afficher",Select:"Sélectionner","Show Filters":"Afficher les filtres","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Il y a %count% peuples en %country%. Consultez la carte pour découvrir également les peuples situés à la frontière de ce pays.",Total:"Total","Type to search...":"Entrer votre recherche","Unengaged people groups":"Peuples non engagés","WAGF Block":"Bloc WAGF","WAGF Region":"Région WAGF","people groups adopted":"peuples adoptés","people groups engaged":"peuples engagés"},pm={placeholder:"Peuple, lieu, langue, religion",labels:{people:"Peuple :",place:"Lieu :",language:"Langue :",religion:"Religion :"},kinds:{people:"Peuple + pays",peopleGroup:"Peuple",bloc:"Bloc d'affinité",cluster:"Grappe de peuples",country:"Pays",region:"Région",family:"Famille linguistique",languageKind:"Langue",dialect:"Dialecte",religionKind:"Religion"}},gm={prayer:"Prière",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Peuples",regions:"Régions",countries:"Pays","language-families":"Langues",religion:"Religions",family:"Famille linguistique",language:"Langue",dialect:"Dialecte/Variété",bloc:"Bloc d'affinité",cluster:"Grappe",group:"Peuple",pgic:"Peuple dans le pays",region:"Région WAGF",block:"Bloc WAGF",country:"Pays"},fm={backToLegend:"लेजेंड पर वापस जाएं",closeDetailView:"विवरण दृश्य बंद करें"},hm={prayForThem:"उनके लिए प्रार्थना करें",adoptThem:"उन्हें गोद लें",moreInfo:"अधिक जानकारी",zoomIn:"ज़ूम इन",zoomOut:"ज़ूम आउट",switchToLightMode:"लाइट मोड पर जाएं",switchToDarkMode:"डार्क मोड पर जाएं",resetView:"दृश्य रीसेट करें",toggleFullscreen:"फ़ुलस्क्रीन टॉगल करें",aboutThisMap:"इस मानचित्र के बारे में",closeMenu:"मेनू बंद करें",reloadMap:"मानचित्र पुनः लोड करें",showClusters:"क्लस्टर दिखाएं",clusterSettings:"क्लस्टर सेटिंग्स",startAutoFly:"ऑटो फ्लाई शुरू करें",stopFlight:"उड़ान रोकें",speedLabel:"गति:",speedOption:{slow:"धीमी",normal:"सामान्य",fast:"तेज़"},shareEmbed:"साझा करें और एम्बेड करें"},mm={labels:{country:"देश:",population:"जनसंख्या:",language:"भाषा:",religion:"धर्म:",languageFamily:"भाषा परिवार:",peopleCommitted:"प्रार्थना के लिए प्रतिबद्ध:"},messages:{noDescription:"कोई विवरण उपलब्ध नहीं है।"}},bm={title:{prayer:"प्रार्थना प्रगति",engagement:"सहभागिता प्रगति",adoption:"गोद लेने की प्रगति",languageFamilies:"भाषा परिवार",doxaRegions:"Doxa क्षेत्र",affinityBlocs:"समानता समूह",gospelResources:"सुसमाचार संसाधन"},header:{collapsed:"किंवदंती",peopleGroupFallback:"जनजाति समूह"},prayer:{needsPrayer:"प्रार्थना चाहिए",hasPrayer:"प्रार्थना है",fullPrayerCoverage:"पूर्ण प्रार्थना कवरेज"},progress:{title:"प्रगति",covered:"{total} में से {covered} जनजाति समूह प्रार्थना में कवर · {pct}%",short:"{total} में से {covered} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"सहभागिता चाहिए",hasEngagement:"सहभागिता है"},adoption:{needsAdoption:"गोद लेना चाहिए",hasAdoption:"गोद लिया गया"},columns:{upgs:"UUPGs",population:"जनसंख्या"},footer:{total:"कुल"}},ym={menuComingSoon:"मेनू शीघ्र आ रहा है"},_m={clusterByRegion:"Doxa क्षेत्र के अनुसार",clusterByLanguageFamily:"भाषा परिवार के अनुसार",clusterByGospelResource:"सुसमाचार संसाधन के अनुसार"},vm={header:"वर्तमान प्रार्थना चक्र",lap:"चक्र",upgs:"UUPGs",separator:" में से "},km={"%count% people groups in %countries% countries":"%countries% देशों में %count% लोगों के समूह","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% में %countries% देशों में %count% लोगों के समूह हैं। प्रत्येक बिंदु का रंग दर्शाता है कि उस लोगों के समूह के लिए कितने लोग प्रार्थना कर रहे हैं।","1+ People Praying":"1+ लोग प्रार्थना कर रहे हैं","100+ People Praying":"100+ लोग प्रार्थना कर रहे हैं",Adopted:"दत्तक लिया गया","Adoption Progress":"दत्तक ग्रहण की प्रगति","All Regions":"सभी क्षेत्र","Alternate Names":"वैकल्पिक नाम","Clear All":"सभी साफ़ करें",Countries:"देश","Countries in this region":"इस क्षेत्र के देश",Country:"देश",Engaged:"प्रवेशित","Engagement Progress":"प्रवेश की प्रगति","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"प्रत्येक असंलग्न जनसमूह जिसे प्रार्थना, दान और भेजने के लिए प्रतिबद्ध एक चर्च ने अपनाया है।","Exact Search":"सटीक खोज","Find unreached people groups by region and country.":"क्षेत्र और देश के अनुसार अगम्य लोगों के समूह खोजें।","Full Profile":"पूर्ण प्रोफ़ाइल",Goal:"लक्ष्य","Hide Filters":"फ़िल्टर छिपाएँ",Intercessors:"मध्यस्थ","Load More":"और लोड करें","Loading results...":"परिणाम लोड हो रहे हैं..।","Mobilize 100+ people praying daily for each DOXA people group":"प्रत्येक DOXA जनसमूह के लिए प्रतिदिन प्रार्थना करने हेतु 100+ लोगों को सक्रिय करें।","No One Praying":"कोई प्रार्थना नहीं कर रहा","No options found":"कोई विकल्प नहीं मिला","No unengaged people groups by 2033":"2033 तक कोई भी संलग्न न किया गया जनसमूह नहीं रहेगा।","Not Adopted":"दत्तक नहीं लिया गया",Other:"अन्य","Page Not Found":"पृष्ठ नहीं मिला","People Group":"लोगों का समूह","People Groups":"लोगों के समूह","People committed to praying":"प्रार्थना के लिए प्रतिबद्ध लोग",Population:"जनसँख्या","Prayer Coverage":"प्रार्थना कवरेज","Prayer coverage progress":"प्रार्थना कवरेज की प्रगति",Regions:"क्षेत्र",Religion:"धर्म","Search names, country/continent, religions...":"नाम, देश/महाद्वीप, धर्म खोजें..।","See %region% dashboard":"%region% डैशबोर्ड देखें","See All":"सभी देखें",Select:"चयन/छंटनी","Show Filters":"फ़िल्टर दिखाएँ","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"%country% में %count% लोगों के समूह हैं। इस देश की सीमा पर स्थित लोगों के समूहों के लिए मानचित्र भी देखें।",Total:"संपूर्ण","Type to search...":"खोजने के लिए टाइप करें..।","Unengaged people groups":"अनलग्न लोगों के समूह","WAGF Block":"WAGF ब्लॉक","WAGF Region":"डब्ल्यूएजीएफ क्षेत्र","people groups adopted":"लोगों के समूहों ने अपनाया","people groups engaged":"प्रवेशित लोगों के समूह"},wm={placeholder:"लोग, स्थान, भाषा, धर्म",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"}},xm={backToLegend:"Torna alla legenda",closeDetailView:"Chiudi vista dettaglio"},Am={prayForThem:"Prega per loro",adoptThem:"Adottali",moreInfo:"Più informazioni",zoomIn:"Ingrandisci",zoomOut:"Riduci",switchToLightMode:"Passa alla modalità chiara",switchToDarkMode:"Passa alla modalità scura",resetView:"Reimposta vista",toggleFullscreen:"Attiva/disattiva schermo intero",aboutThisMap:"Informazioni su questa mappa",closeMenu:"Chiudi menu",reloadMap:"Ricarica mappa",showClusters:"Mostra cluster",clusterSettings:"Impostazioni cluster",startAutoFly:"Avvia volo automatico",stopFlight:"Ferma volo",speedLabel:"Velocità:",speedOption:{slow:"Lenta",normal:"Normale",fast:"Veloce"},shareEmbed:"Condividi e incorpora"},Sm={labels:{country:"Paese:",population:"Popolazione:",language:"Lingua:",religion:"Religione:",languageFamily:"Famiglia linguistica:",peopleCommitted:"Impegnati a pregare:"},messages:{noDescription:"Nessuna descrizione disponibile."}},$m={title:{prayer:"Avanzamento della preghiera",engagement:"Avanzamento dell'impegno",adoption:"Avanzamento dell'adozione",languageFamilies:"Famiglie linguistiche",doxaRegions:"Regioni Doxa",affinityBlocs:"Blocchi di affinità",gospelResources:"Risorse del Vangelo"},header:{collapsed:"Legenda",peopleGroupFallback:"Gruppo di persone"},prayer:{needsPrayer:"Necessita preghiera",hasPrayer:"Ha preghiera",fullPrayerCoverage:"Copertura di preghiera completa"},progress:{title:"Avanzamento",covered:"{covered} di {total} gruppi di persone coperti dalla preghiera · {pct}%",short:"{covered} di {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necessita impegno",hasEngagement:"Ha impegno"},adoption:{needsAdoption:"Necessita adozione",hasAdoption:"Ha adozione"},columns:{upgs:"UUPGs",population:"Popolazione"},footer:{total:"Totale"}},Em={menuComingSoon:"Menu in arrivo"},Cm={clusterByRegion:"Per regione Doxa",clusterByLanguageFamily:"Per famiglia linguistica",clusterByGospelResource:"Per risorsa del Vangelo"},Lm={header:"GIRO DI PREGHIERA ATTUALE",lap:"Giro",upgs:"UUPGs",separator:" di "},Tm={placeholder:"Popolo, luogo, lingua, religione",labels:{people:"Popolo:",place:"Luogo:",language:"Lingua:",religion:"Religione:"}},Pm={backToLegend:"Voltar à legenda",closeDetailView:"Fechar vista de detalhe"},Mm={prayForThem:"Ore por eles",adoptThem:"Adote-os",moreInfo:"Mais informações",zoomIn:"Ampliar",zoomOut:"Reduzir",switchToLightMode:"Mudar para modo claro",switchToDarkMode:"Mudar para modo escuro",resetView:"Repor vista",toggleFullscreen:"Alternar ecrã inteiro",aboutThisMap:"Sobre este mapa",closeMenu:"Fechar menu",reloadMap:"Recarregar mapa",showClusters:"Mostrar clusters",clusterSettings:"Definições de clusters",startAutoFly:"Iniciar voo automático",stopFlight:"Parar voo",speedLabel:"Velocidade:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Partilhar e incorporar"},Nm={labels:{country:"País:",population:"População:",language:"Língua:",religion:"Religião:",languageFamily:"Família linguística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"Sem descrição disponível."}},Rm={title:{prayer:"Progresso da oração",engagement:"Progresso do envolvimento",adoption:"Progresso da adoção",languageFamilies:"Famílias linguísticas",doxaRegions:"Regiões Doxa",affinityBlocs:"Blocos de afinidade",gospelResources:"Recursos do Evangelho"},header:{collapsed:"Legenda",peopleGroupFallback:"Grupo de pessoas"},prayer:{needsPrayer:"Precisa de oração",hasPrayer:"Tem oração",fullPrayerCoverage:"Cobertura de oração completa"},progress:{title:"Progresso",covered:"{covered} de {total} grupos de pessoas cobertos em oração · {pct}%",short:"{covered} de {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Precisa de envolvimento",hasEngagement:"Tem envolvimento"},adoption:{needsAdoption:"Precisa de adoção",hasAdoption:"Tem adoção"},columns:{upgs:"UUPGs",population:"População",name:"Nome"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por população",colLabel:{religion:"Religiões UUPG",prayer:"Status de oração",engagement:"Status de engajamento",adoption:"Status de adoção",status:"Status"},titleBar:{legend:"Legenda",peopleGroups:"Povos",wagfRegions:"Regiões WAGF",languages:"Idiomas"}},Im={menuComingSoon:"Menu em breve"},Om={clusterByRegion:"Por região Doxa",clusterByLanguageFamily:"Por família linguística",clusterByGospelResource:"Por recurso do Evangelho"},Fm={header:"VOLTA DE ORAÇÃO ATUAL",lap:"Volta",upgs:"UUPGs",separator:" de "},Dm={"%count% people groups in %countries% countries":"%count% grupos étnicos em %countries% países","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% tem %count% grupos étnicos em %countries% países. A cor de cada ponto indica quantas pessoas oram por esse grupo étnico.","1+ People Praying":"1+ pessoas orando","100+ People Praying":"100+ pessoas orando",Adopted:"Aprovado","Adoption Progress":"Progresso da adoção","All Regions":"Todas as regiões","Alternate Names":"Nomes alternativos","Clear All":"Limpar tudo",Countries:"Países","Countries in this region":"Países desta região",Country:"País",Engaged:"Engajado","Engagement Progress":"Progresso do engajamento","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Cada grupo étnico não engajado adotado por uma igreja comprometida com a oração, contribuição e o envio","Exact Search":"Pesquisa exata","Find unreached people groups by region and country.":"Encontre grupos étnicos não alcançados por região e país.","Full Profile":"Perfil completo",Goal:"Meta","Hide Filters":"Ocultar filtros",Intercessors:"Intercessores","Load More":"Carregar mais","Loading results...":"A carregar resultados...","Mobilize 100+ people praying daily for each DOXA people group":"Mobilizar mais de 100 pessoas para orar diariamente por cada grupo étnico DOXA","No One Praying":"Ninguém orando","No options found":"Não foram encontradas opções","No unengaged people groups by 2033":"Nenhum grupo étnico não engajado até 2033","Not Adopted":"Não adotado",Other:"Outros","Page Not Found":"Página não encontrada","People Group":"Grupo étnico","People Groups":"Grupos étnicos","People committed to praying":"Pessoas comprometidas com a oração",Population:"Aplicação","Prayer Coverage":"Cobertura de oração","Prayer coverage progress":"Progresso da cobertura de oração",Regions:"Regiões",Religion:"Religião","Search names, country/continent, religions...":"Busque nomes, país/continente, religiões...","See %region% dashboard":"Ver o painel: %region%","See All":"Ver tudo",Select:"Selecionar","Show Filters":"Mostrar filtros","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Existem %count% grupos étnicos em %country%. Verifique no mapa também os grupos étnicos na fronteira deste país.",Total:"Total","Type to search...":"Digite para pesquisar...","Unengaged people groups":"Grupos étnicos não engajados","WAGF Block":"Bloco WAGF","WAGF Region":"Região da WAGF","people groups adopted":"grupos étnicos adotados","people groups engaged":"grupos étnicos engajados"},Bm={placeholder:"Povo, local, língua, religião",labels:{people:"Povo:",place:"Local:",language:"Língua:",religion:"Religião:"},kinds:{people:"Povo + país",peopleGroup:"Povo",bloc:"Bloco de afinidade",cluster:"Agrupamento de povos",country:"País",region:"Região",family:"Família linguística",languageKind:"Idioma",dialect:"Dialeto",religionKind:"Religião"}},Gm={prayer:"Oração",adoption:"Adoção",engagement:"Engajamento","affinity-blocks":"Povos",regions:"Regiões",countries:"Países","language-families":"Idiomas",religion:"Religiões",family:"Família linguística",language:"Idioma",dialect:"Dialeto/Variedade",bloc:"Bloco de afinidade",cluster:"Agrupamento",group:"Povo",pgic:"Povo no país",region:"Região WAGF",block:"Bloco WAGF",country:"País"},jm={backToLegend:"Înapoi la legendă",closeDetailView:"Închide vizualizarea detaliată"},Um={prayForThem:"Roagă-te pentru ei",adoptThem:"Adoptă-i",moreInfo:"Mai multe informații",zoomIn:"Mărește",zoomOut:"Micșorează",switchToLightMode:"Comută la modul luminos",switchToDarkMode:"Comută la modul întunecat",resetView:"Resetează vizualizarea",toggleFullscreen:"Comută ecran complet",aboutThisMap:"Despre această hartă",closeMenu:"Închide meniul",reloadMap:"Reîncarcă harta",showClusters:"Arată clusterele",clusterSettings:"Setări clustere",startAutoFly:"Pornește zborul automat",stopFlight:"Oprește zborul",speedLabel:"Viteză:",speedOption:{slow:"Lent",normal:"Normal",fast:"Rapid"},shareEmbed:"Partajează și încorporează"},Km={labels:{country:"Țară:",population:"Populație:",language:"Limbă:",religion:"Religie:",languageFamily:"Familie de limbi:",peopleCommitted:"Angajați să se roage:"},messages:{noDescription:"Nicio descriere disponibilă."}},zm={title:{prayer:"Progresul rugăciunii",engagement:"Progresul implicării",adoption:"Progresul adopției",languageFamilies:"Familii de limbi",doxaRegions:"Regiuni Doxa",affinityBlocs:"Blocuri de afinitate",gospelResources:"Resurse ale Evangheliei"},header:{collapsed:"Legendă",peopleGroupFallback:"Grup de popoare"},prayer:{needsPrayer:"Necesită rugăciune",hasPrayer:"Are rugăciune",fullPrayerCoverage:"Acoperire completă de rugăciune"},progress:{title:"Progres",covered:"{covered} din {total} grupuri de popoare acoperite în rugăciune · {pct}%",short:"{covered} din {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necesită implicare",hasEngagement:"Are implicare"},adoption:{needsAdoption:"Necesită adopție",hasAdoption:"Are adopție"},columns:{upgs:"UUPGs",population:"Populație"},footer:{total:"Total"}},Hm={menuComingSoon:"Meniu în curând"},Vm={clusterByRegion:"După regiune Doxa",clusterByLanguageFamily:"După familia de limbi",clusterByGospelResource:"După resursa Evangheliei"},Wm={header:"TURUL DE RUGĂCIUNE CURENT",lap:"Tur",upgs:"UUPGs",separator:" din "},Ym={placeholder:"Popor, loc, limbă, religie",labels:{people:"Popor:",place:"Loc:",language:"Limbă:",religion:"Religie:"}},qm={backToLegend:"Назад к легенде",closeDetailView:"Закрыть подробный вид"},Jm={prayForThem:"Молитесь о них",adoptThem:"Усыновите их",moreInfo:"Подробнее",zoomIn:"Приблизить",zoomOut:"Отдалить",switchToLightMode:"Переключить на светлый режим",switchToDarkMode:"Переключить на тёмный режим",resetView:"Сбросить вид",toggleFullscreen:"Полноэкранный режим",aboutThisMap:"Об этой карте",closeMenu:"Закрыть меню",reloadMap:"Перезагрузить карту",showClusters:"Показать кластеры",clusterSettings:"Настройки кластеров",startAutoFly:"Начать авто-полёт",stopFlight:"Остановить полёт",speedLabel:"Скорость:",speedOption:{slow:"Медленно",normal:"Нормально",fast:"Быстро"},shareEmbed:"Поделиться и встроить"},Xm={labels:{country:"Страна:",population:"Население:",language:"Язык:",religion:"Религия:",languageFamily:"Языковая семья:",peopleCommitted:"Обязались молиться:"},messages:{noDescription:"Описание недоступно."}},Zm={title:{prayer:"Прогресс молитвы",engagement:"Прогресс вовлечённости",adoption:"Прогресс усыновления",languageFamilies:"Языковые семьи",doxaRegions:"Регионы Doxa",affinityBlocs:"Блоки родства",gospelResources:"Евангельские ресурсы"},header:{collapsed:"Условные обозначения",peopleGroupFallback:"Народная группа"},prayer:{needsPrayer:"Нуждается в молитве",hasPrayer:"Есть молитва",fullPrayerCoverage:"Полное молитвенное покрытие"},progress:{title:"Прогресс",covered:"{covered} из {total} народных групп охвачены молитвой · {pct}%",short:"{covered} из {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Нуждается в вовлечённости",hasEngagement:"Есть вовлечённость"},adoption:{needsAdoption:"Нуждается в усыновлении",hasAdoption:"Есть усыновление"},columns:{upgs:"UUPGs",population:"Население",name:"Название"},footer:{total:"Всего"},sortByUpgs:"Сортировать по UUPG",sortByPop:"Сортировать по населению",colLabel:{religion:"Религии UUPG",prayer:"Статус молитвы",engagement:"Статус вовлечённости",adoption:"Статус усыновления",status:"Статус"},titleBar:{legend:"Легенда",peopleGroups:"Народы",wagfRegions:"Регионы WAGF",languages:"Языки"}},Qm={menuComingSoon:"Меню скоро появится"},eb={clusterByRegion:"По региону Doxa",clusterByLanguageFamily:"По языковой семье",clusterByGospelResource:"По евангельскому ресурсу"},tb={header:"ТЕКУЩИЙ КРУГ МОЛИТВЫ",lap:"Круг",upgs:"UUPGs",separator:" из "},ob={"%count% people groups in %countries% countries":"%count% групп людей в %countries% странах","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"В регионе %region% — %count% групп людей в %countries% странах. Цвет каждой точки показывает, сколько человек молится за эту группу людей.","1+ People Praying":"1+ человек молится","100+ People Praying":"100+ человек молятся",Adopted:"Принято","Adoption Progress":"Прогресс принятия","All Regions":"Все регионы","Alternate Names":"Альтернативные названия","Clear All":"Очистить всё",Countries:"Страны","Countries in this region":"Страны этого региона",Country:"Страна",Engaged:"Вовлечённый","Engagement Progress":"Прогресс вовлечения","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Каждая незадействованная народность принята церковью, приверженной молитве, пожертвованиям и посылке миссионеров","Exact Search":"Точный поиск","Find unreached people groups by region and country.":"Найдите недостигнутые группы людей по регионам и странам.","Full Profile":"Полный профиль",Goal:"Цель","Hide Filters":"Скрыть фильтры",Intercessors:"Ходатаи","Load More":"Загрузить еще","Loading results...":"Загрузка результатов...","Mobilize 100+ people praying daily for each DOXA people group":"Мобилизуйте 100+ человек для ежедневной молитвы за каждую народность DOXA","No One Praying":"Никто не молится","No options found":"Вариантов не найдено","No unengaged people groups by 2033":"К 2033 году не останется незадействованных народов","Not Adopted":"Не принято",Other:"Другое","Page Not Found":"Страница не найдена","People Group":"Группа людей","People Groups":"Группы людей","People committed to praying":"Люди, посвятившие себя молитве",Population:"Население","Prayer Coverage":"Молитвенное покрытие","Prayer coverage progress":"Прогресс молитвенного покрытия",Regions:"Регионы",Religion:"Религия","Search names, country/continent, religions...":"Поиск по именам, странам/континентам, религиям...","See %region% dashboard":"Открыть панель: %region%","See All":"Смотреть все",Select:"Выбрать","Show Filters":"Показать фильтры","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Страна %country% насчитывает %count% групп людей. Проверьте также на карте группы людей, расположенные вдоль границ этой страны.",Total:"Итого","Type to search...":"Введите текст для поиска...","Unengaged people groups":"Невовлечённые группы людей","WAGF Block":"Блок WAGF","WAGF Region":"Регион WAGF","people groups adopted":"принятые группы людей","people groups engaged":"вовлечённые группы людей"},nb={placeholder:"Народ, место, язык, религия",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"}},ab={prayer:"Молитва",adoption:"Усыновление",engagement:"Вовлечённость","affinity-blocks":"Народы",regions:"Регионы",countries:"Страны","language-families":"Языки",religion:"Религии",family:"Языковая семья",language:"Язык",dialect:"Диалект/вариант",bloc:"Блок родства",cluster:"Кластер",group:"Народ",pgic:"Народ в стране",region:"Регион WAGF",block:"Блок WAGF",country:"Страна"},rb={backToLegend:"返回图例",closeDetailView:"关闭详情视图"},sb={prayForThem:"为他们祷告",adoptThem:"认领他们",moreInfo:"更多信息",zoomIn:"放大",zoomOut:"缩小",switchToLightMode:"切换至浅色模式",switchToDarkMode:"切换至深色模式",resetView:"重置视图",toggleFullscreen:"切换全屏",aboutThisMap:"关于此地图",closeMenu:"关闭菜单",reloadMap:"重新加载地图",showClusters:"显示聚类",clusterSettings:"聚类设置",startAutoFly:"开始自动飞行",stopFlight:"停止飞行",speedLabel:"速度:",speedOption:{slow:"慢",normal:"正常",fast:"快"},shareEmbed:"分享与嵌入"},ib={labels:{country:"国家:",population:"人口:",language:"语言:",religion:"宗教:",languageFamily:"语系:",peopleCommitted:"承诺祷告人数:"},messages:{noDescription:"暂无描述。"}},lb={title:{prayer:"祷告进度",engagement:"参与进度",adoption:"认领进度",languageFamilies:"语系",doxaRegions:"Doxa 区域",affinityBlocs:"亲缘板块",gospelResources:"福音资源"},header:{collapsed:"图例",peopleGroupFallback:"民族群体"},prayer:{needsPrayer:"需要祷告",hasPrayer:"已有祷告",fullPrayerCoverage:"全面祷告覆盖"},progress:{title:"进度",covered:"{total} 个民族群体中已有 {covered} 个被祷告覆盖 · {pct}%",short:"{covered} / {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"需要参与",hasEngagement:"已有参与"},adoption:{needsAdoption:"需要认领",hasAdoption:"已有认领"},columns:{upgs:"UUPGs",population:"人口"},footer:{total:"总计"}},cb={menuComingSoon:"菜单即将推出"},ub={clusterByRegion:"按 Doxa 区域",clusterByLanguageFamily:"按语系",clusterByGospelResource:"按福音资源"},db={header:"当前祷告轮次",lap:"第",upgs:"UUPGs",separator:" / "},pb={placeholder:"民族、地点、语言、宗教",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"}};/*! * shared v9.14.5 * (c) 2025 kazuya kawaguchi * Released under the MIT License. - */function nb(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const sr=typeof window<"u",Do=(e,t=!1)=>t?Symbol.for(e):Symbol(e),ab=(e,t,o)=>rb({l:e,k:t,s:o}),rb=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),gt=e=>typeof e=="number"&&isFinite(e),sb=e=>Oc(e)==="[object Date]",Bo=e=>Oc(e)==="[object RegExp]",ir=e=>Te(e)&&Object.keys(e).length===0,Lt=Object.assign,ib=Object.create,Je=(e=null)=>ib(e);let Nc;const Co=()=>Nc||(Nc=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:Je());function Ic(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/=/g,"=")}function Rc(e){return e.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function lb(e){return e=e.replace(/(\w+)\s*=\s*"([^"]*)"/g,(n,a,r)=>`${a}="${Rc(r)}"`),e=e.replace(/(\w+)\s*=\s*'([^']*)'/g,(n,a,r)=>`${a}='${Rc(r)}'`),/\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi.test(e)&&(e=e.replace(/(\s+)(on)(\w+\s*=)/gi,"$1on$3")),[/(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi,/(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi].forEach(n=>{e=e.replace(n,"$1javascript:")}),e}const cb=Object.prototype.hasOwnProperty;function Xt(e,t){return cb.call(e,t)}const rt=Array.isArray,tt=e=>typeof e=="function",fe=e=>typeof e=="string",Re=e=>typeof e=="boolean",Ke=e=>e!==null&&typeof e=="object",ub=e=>Ke(e)&&tt(e.then)&&tt(e.catch),Fc=Object.prototype.toString,Oc=e=>Fc.call(e),Te=e=>{if(!Ke(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},db=e=>e==null?"":rt(e)||Te(e)&&e.toString===Fc?JSON.stringify(e,null,2):String(e);function pb(e,t=""){return e.reduce((o,n,a)=>a===0?o+n:o+t+n,"")}function lr(e){let t=e;return()=>++t}const cr=e=>!Ke(e)||rt(e);function ur(e,t){if(cr(e)||cr(t))throw new Error("Invalid value");const o=[{src:e,des:t}];for(;o.length;){const{src:n,des:a}=o.pop();Object.keys(n).forEach(r=>{r!=="__proto__"&&(Ke(n[r])&&!Ke(a[r])&&(a[r]=Array.isArray(n[r])?[]:Je()),cr(a[r])||cr(n[r])?a[r]=n[r]:o.push({src:n[r],des:a[r]}))})}}/*! + */function gb(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const sr=typeof window<"u",Do=(e,t=!1)=>t?Symbol.for(e):Symbol(e),fb=(e,t,o)=>hb({l:e,k:t,s:o}),hb=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),gt=e=>typeof e=="number"&&isFinite(e),mb=e=>Fc(e)==="[object Date]",Bo=e=>Fc(e)==="[object RegExp]",ir=e=>Le(e)&&Object.keys(e).length===0,Lt=Object.assign,bb=Object.create,Qe=(e=null)=>bb(e);let Nc;const Co=()=>Nc||(Nc=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:Qe());function Rc(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/=/g,"=")}function Ic(e){return e.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function yb(e){return e=e.replace(/(\w+)\s*=\s*"([^"]*)"/g,(n,a,r)=>`${a}="${Ic(r)}"`),e=e.replace(/(\w+)\s*=\s*'([^']*)'/g,(n,a,r)=>`${a}='${Ic(r)}'`),/\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi.test(e)&&(e=e.replace(/(\s+)(on)(\w+\s*=)/gi,"$1on$3")),[/(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi,/(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi].forEach(n=>{e=e.replace(n,"$1javascript:")}),e}const _b=Object.prototype.hasOwnProperty;function Xt(e,t){return _b.call(e,t)}const it=Array.isArray,nt=e=>typeof e=="function",fe=e=>typeof e=="string",De=e=>typeof e=="boolean",He=e=>e!==null&&typeof e=="object",vb=e=>He(e)&&nt(e.then)&&nt(e.catch),Oc=Object.prototype.toString,Fc=e=>Oc.call(e),Le=e=>{if(!He(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},kb=e=>e==null?"":it(e)||Le(e)&&e.toString===Oc?JSON.stringify(e,null,2):String(e);function wb(e,t=""){return e.reduce((o,n,a)=>a===0?o+n:o+t+n,"")}function lr(e){let t=e;return()=>++t}const cr=e=>!He(e)||it(e);function ur(e,t){if(cr(e)||cr(t))throw new Error("Invalid value");const o=[{src:e,des:t}];for(;o.length;){const{src:n,des:a}=o.pop();Object.keys(n).forEach(r=>{r!=="__proto__"&&(He(n[r])&&!He(a[r])&&(a[r]=Array.isArray(n[r])?[]:Qe()),cr(a[r])||cr(n[r])?a[r]=n[r]:o.push({src:n[r],des:a[r]}))})}}/*! * message-compiler v9.14.5 * (c) 2025 kazuya kawaguchi * Released under the MIT License. - */function gb(e,t,o){return{line:e,column:t,offset:o}}function dr(e,t,o){return{start:e,end:t}}const fb=/\{([0-9a-zA-Z]+)\}/g;function Dc(e,...t){return t.length===1&&hb(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(fb,(o,n)=>t.hasOwnProperty(n)?t[n]:"")}const Bc=Object.assign,Gc=e=>typeof e=="string",hb=e=>e!==null&&typeof e=="object";function jc(e,t=""){return e.reduce((o,n,a)=>a===0?o+n:o+t+n,"")}const xs={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},mb={[xs.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function bb(e,t,...o){const n=Dc(mb[e],...o||[]),a={message:String(n),code:e};return t&&(a.location=t),a}const Se={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},yb={[Se.EXPECTED_TOKEN]:"Expected token: '{0}'",[Se.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[Se.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[Se.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[Se.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[Se.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[Se.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[Se.EMPTY_PLACEHOLDER]:"Empty placeholder",[Se.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[Se.INVALID_LINKED_FORMAT]:"Invalid linked format",[Se.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[Se.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[Se.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[Se.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[Se.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[Se.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function $n(e,t,o={}){const{domain:n,messages:a,args:r}=o,s=Dc((a||yb)[e]||"",...r||[]),i=new SyntaxError(String(s));return i.code=e,t&&(i.location=t),i.domain=n,i}function _b(e){throw e}const Lo=" ",vb="\r",Ft=` -`,kb="\u2028",wb="\u2029";function xb(e){const t=e;let o=0,n=1,a=1,r=0;const s=C=>t[C]===vb&&t[C+1]===Ft,i=C=>t[C]===Ft,l=C=>t[C]===wb,c=C=>t[C]===kb,u=C=>s(C)||i(C)||l(C)||c(C),p=()=>o,f=()=>n,w=()=>a,x=()=>r,y=C=>s(C)||l(C)||c(C)?Ft:t[C],d=()=>y(o),g=()=>y(o+r);function b(){return r=0,u(o)&&(n++,a=0),s(o)&&o++,o++,a++,t[o]}function h(){return s(o+r)&&r++,r++,t[o+r]}function k(){o=0,n=1,a=1,r=0}function $(C=0){r=C}function v(){const C=o+r;for(;C!==o;)b();r=0}return{index:p,line:f,column:w,peekOffset:x,charAt:y,currentChar:d,currentPeek:g,next:b,peek:h,reset:k,resetPeek:$,skipToPeek:v}}const Go=void 0,$b=".",Uc="'",Sb="tokenizer";function Ab(e,t={}){const o=t.location!==!1,n=xb(e),a=()=>n.index(),r=()=>gb(n.line(),n.column(),n.index()),s=r(),i=a(),l={currentType:14,offset:i,startLoc:s,endLoc:s,lastType:14,lastOffset:i,lastStartLoc:s,lastEndLoc:s,braceNest:0,inLinked:!1,text:""},c=()=>l,{onError:u}=t;function p(m,_,B,...W){const ue=c();if(_.column+=B,_.offset+=B,u){const re=o?dr(ue.startLoc,_):null,G=$n(m,re,{domain:Sb,args:W});u(G)}}function f(m,_,B){m.endLoc=r(),m.currentType=_;const W={type:_};return o&&(W.loc=dr(m.startLoc,m.endLoc)),B!=null&&(W.value=B),W}const w=m=>f(m,14);function x(m,_){return m.currentChar()===_?(m.next(),_):(p(Se.EXPECTED_TOKEN,r(),0,_),"")}function y(m){let _="";for(;m.currentPeek()===Lo||m.currentPeek()===Ft;)_+=m.currentPeek(),m.peek();return _}function d(m){const _=y(m);return m.skipToPeek(),_}function g(m){if(m===Go)return!1;const _=m.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_===95}function b(m){if(m===Go)return!1;const _=m.charCodeAt(0);return _>=48&&_<=57}function h(m,_){const{currentType:B}=_;if(B!==2)return!1;y(m);const W=g(m.currentPeek());return m.resetPeek(),W}function k(m,_){const{currentType:B}=_;if(B!==2)return!1;y(m);const W=m.currentPeek()==="-"?m.peek():m.currentPeek(),ue=b(W);return m.resetPeek(),ue}function $(m,_){const{currentType:B}=_;if(B!==2)return!1;y(m);const W=m.currentPeek()===Uc;return m.resetPeek(),W}function v(m,_){const{currentType:B}=_;if(B!==8)return!1;y(m);const W=m.currentPeek()===".";return m.resetPeek(),W}function C(m,_){const{currentType:B}=_;if(B!==9)return!1;y(m);const W=g(m.currentPeek());return m.resetPeek(),W}function T(m,_){const{currentType:B}=_;if(!(B===8||B===12))return!1;y(m);const W=m.currentPeek()===":";return m.resetPeek(),W}function R(m,_){const{currentType:B}=_;if(B!==10)return!1;const W=()=>{const re=m.currentPeek();return re==="{"?g(m.peek()):re==="@"||re==="%"||re==="|"||re===":"||re==="."||re===Lo||!re?!1:re===Ft?(m.peek(),W()):ae(m,!1)},ue=W();return m.resetPeek(),ue}function H(m){y(m);const _=m.currentPeek()==="|";return m.resetPeek(),_}function Y(m){const _=y(m),B=m.currentPeek()==="%"&&m.peek()==="{";return m.resetPeek(),{isModulo:B,hasSpace:_.length>0}}function ae(m,_=!0){const B=(ue=!1,re="",G=!1)=>{const q=m.currentPeek();return q==="{"?re==="%"?!1:ue:q==="@"||!q?re==="%"?!0:ue:q==="%"?(m.peek(),B(ue,"%",!0)):q==="|"?re==="%"||G?!0:!(re===Lo||re===Ft):q===Lo?(m.peek(),B(!0,Lo,G)):q===Ft?(m.peek(),B(!0,Ft,G)):!0},W=B();return _&&m.resetPeek(),W}function P(m,_){const B=m.currentChar();return B===Go?Go:_(B)?(m.next(),B):null}function A(m){const _=m.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_>=48&&_<=57||_===95||_===36}function M(m){return P(m,A)}function S(m){const _=m.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_>=48&&_<=57||_===95||_===36||_===45}function E(m){return P(m,S)}function V(m){const _=m.charCodeAt(0);return _>=48&&_<=57}function ie(m){return P(m,V)}function F(m){const _=m.charCodeAt(0);return _>=48&&_<=57||_>=65&&_<=70||_>=97&&_<=102}function ce(m){return P(m,F)}function pe(m){let _="",B="";for(;_=ie(m);)B+=_;return B}function se(m){d(m);const _=m.currentChar();return _!=="%"&&p(Se.EXPECTED_TOKEN,r(),0,_),m.next(),"%"}function $e(m){let _="";for(;;){const B=m.currentChar();if(B==="{"||B==="}"||B==="@"||B==="|"||!B)break;if(B==="%")if(ae(m))_+=B,m.next();else break;else if(B===Lo||B===Ft)if(ae(m))_+=B,m.next();else{if(H(m))break;_+=B,m.next()}else _+=B,m.next()}return _}function Ee(m){d(m);let _="",B="";for(;_=E(m);)B+=_;return m.currentChar()===Go&&p(Se.UNTERMINATED_CLOSING_BRACE,r(),0),B}function Fe(m){d(m);let _="";return m.currentChar()==="-"?(m.next(),_+=`-${pe(m)}`):_+=pe(m),m.currentChar()===Go&&p(Se.UNTERMINATED_CLOSING_BRACE,r(),0),_}function st(m){return m!==Uc&&m!==Ft}function Ye(m){d(m),x(m,"'");let _="",B="";for(;_=P(m,st);)_==="\\"?B+=ft(m):B+=_;const W=m.currentChar();return W===Ft||W===Go?(p(Se.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,r(),0),W===Ft&&(m.next(),x(m,"'")),B):(x(m,"'"),B)}function ft(m){const _=m.currentChar();switch(_){case"\\":case"'":return m.next(),`\\${_}`;case"u":return Ze(m,_,4);case"U":return Ze(m,_,6);default:return p(Se.UNKNOWN_ESCAPE_SEQUENCE,r(),0,_),""}}function Ze(m,_,B){x(m,_);let W="";for(let ue=0;ue{const W=m.currentChar();return W==="{"||W==="%"||W==="@"||W==="|"||W==="("||W===")"||!W||W===Lo?B:(B+=W,m.next(),_(B))};return _("")}function z(m){d(m);const _=x(m,"|");return d(m),_}function Z(m,_){let B=null;switch(m.currentChar()){case"{":return _.braceNest>=1&&p(Se.NOT_ALLOW_NEST_PLACEHOLDER,r(),0),m.next(),B=f(_,2,"{"),d(m),_.braceNest++,B;case"}":return _.braceNest>0&&_.currentType===2&&p(Se.EMPTY_PLACEHOLDER,r(),0),m.next(),B=f(_,3,"}"),_.braceNest--,_.braceNest>0&&d(m),_.inLinked&&_.braceNest===0&&(_.inLinked=!1),B;case"@":return _.braceNest>0&&p(Se.UNTERMINATED_CLOSING_BRACE,r(),0),B=X(m,_)||w(_),_.braceNest=0,B;default:{let ue=!0,re=!0,G=!0;if(H(m))return _.braceNest>0&&p(Se.UNTERMINATED_CLOSING_BRACE,r(),0),B=f(_,1,z(m)),_.braceNest=0,_.inLinked=!1,B;if(_.braceNest>0&&(_.currentType===5||_.currentType===6||_.currentType===7))return p(Se.UNTERMINATED_CLOSING_BRACE,r(),0),_.braceNest=0,ee(m,_);if(ue=h(m,_))return B=f(_,5,Ee(m)),d(m),B;if(re=k(m,_))return B=f(_,6,Fe(m)),d(m),B;if(G=$(m,_))return B=f(_,7,Ye(m)),d(m),B;if(!ue&&!re&&!G)return B=f(_,13,L(m)),p(Se.INVALID_TOKEN_IN_PLACEHOLDER,r(),0,B.value),d(m),B;break}}return B}function X(m,_){const{currentType:B}=_;let W=null;const ue=m.currentChar();switch((B===8||B===9||B===12||B===10)&&(ue===Ft||ue===Lo)&&p(Se.INVALID_LINKED_FORMAT,r(),0),ue){case"@":return m.next(),W=f(_,8,"@"),_.inLinked=!0,W;case".":return d(m),m.next(),f(_,9,".");case":":return d(m),m.next(),f(_,10,":");default:return H(m)?(W=f(_,1,z(m)),_.braceNest=0,_.inLinked=!1,W):v(m,_)||T(m,_)?(d(m),X(m,_)):C(m,_)?(d(m),f(_,12,O(m))):R(m,_)?(d(m),ue==="{"?Z(m,_)||W:f(_,11,I(m))):(B===8&&p(Se.INVALID_LINKED_FORMAT,r(),0),_.braceNest=0,_.inLinked=!1,ee(m,_))}}function ee(m,_){let B={type:14};if(_.braceNest>0)return Z(m,_)||w(_);if(_.inLinked)return X(m,_)||w(_);switch(m.currentChar()){case"{":return Z(m,_)||w(_);case"}":return p(Se.UNBALANCED_CLOSING_BRACE,r(),0),m.next(),f(_,3,"}");case"@":return X(m,_)||w(_);default:{if(H(m))return B=f(_,1,z(m)),_.braceNest=0,_.inLinked=!1,B;const{isModulo:ue,hasSpace:re}=Y(m);if(ue)return re?f(_,0,$e(m)):f(_,4,se(m));if(ae(m))return f(_,0,$e(m));break}}return B}function Q(){const{currentType:m,offset:_,startLoc:B,endLoc:W}=l;return l.lastType=m,l.lastOffset=_,l.lastStartLoc=B,l.lastEndLoc=W,l.offset=a(),l.startLoc=r(),n.currentChar()===Go?f(l,14):ee(n,l)}return{nextToken:Q,currentOffset:a,currentPosition:r,context:c}}const Eb="parser",Cb=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function Lb(e,t,o){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const n=parseInt(t||o,16);return n<=55295||n>=57344?String.fromCodePoint(n):"�"}}}function Tb(e={}){const t=e.location!==!1,{onError:o,onWarn:n}=e;function a(h,k,$,v,...C){const T=h.currentPosition();if(T.offset+=v,T.column+=v,o){const R=t?dr($,T):null,H=$n(k,R,{domain:Eb,args:C});o(H)}}function r(h,k,$,v,...C){const T=h.currentPosition();if(T.offset+=v,T.column+=v,n){const R=t?dr($,T):null;n(bb(k,R,C))}}function s(h,k,$){const v={type:h};return t&&(v.start=k,v.end=k,v.loc={start:$,end:$}),v}function i(h,k,$,v){t&&(h.end=k,h.loc&&(h.loc.end=$))}function l(h,k){const $=h.context(),v=s(3,$.offset,$.startLoc);return v.value=k,i(v,h.currentOffset(),h.currentPosition()),v}function c(h,k){const $=h.context(),{lastOffset:v,lastStartLoc:C}=$,T=s(5,v,C);return T.index=parseInt(k,10),h.nextToken(),i(T,h.currentOffset(),h.currentPosition()),T}function u(h,k,$){const v=h.context(),{lastOffset:C,lastStartLoc:T}=v,R=s(4,C,T);return R.key=k,$===!0&&(R.modulo=!0),h.nextToken(),i(R,h.currentOffset(),h.currentPosition()),R}function p(h,k){const $=h.context(),{lastOffset:v,lastStartLoc:C}=$,T=s(9,v,C);return T.value=k.replace(Cb,Lb),h.nextToken(),i(T,h.currentOffset(),h.currentPosition()),T}function f(h){const k=h.nextToken(),$=h.context(),{lastOffset:v,lastStartLoc:C}=$,T=s(8,v,C);return k.type!==12?(a(h,Se.UNEXPECTED_EMPTY_LINKED_MODIFIER,$.lastStartLoc,0),T.value="",i(T,v,C),{nextConsumeToken:k,node:T}):(k.value==null&&a(h,Se.UNEXPECTED_LEXICAL_ANALYSIS,$.lastStartLoc,0,Zt(k)),T.value=k.value||"",i(T,h.currentOffset(),h.currentPosition()),{node:T})}function w(h,k){const $=h.context(),v=s(7,$.offset,$.startLoc);return v.value=k,i(v,h.currentOffset(),h.currentPosition()),v}function x(h){const k=h.context(),$=s(6,k.offset,k.startLoc);let v=h.nextToken();if(v.type===9){const C=f(h);$.modifier=C.node,v=C.nextConsumeToken||h.nextToken()}switch(v.type!==10&&a(h,Se.UNEXPECTED_LEXICAL_ANALYSIS,k.lastStartLoc,0,Zt(v)),v=h.nextToken(),v.type===2&&(v=h.nextToken()),v.type){case 11:v.value==null&&a(h,Se.UNEXPECTED_LEXICAL_ANALYSIS,k.lastStartLoc,0,Zt(v)),$.key=w(h,v.value||"");break;case 5:v.value==null&&a(h,Se.UNEXPECTED_LEXICAL_ANALYSIS,k.lastStartLoc,0,Zt(v)),$.key=u(h,v.value||"");break;case 6:v.value==null&&a(h,Se.UNEXPECTED_LEXICAL_ANALYSIS,k.lastStartLoc,0,Zt(v)),$.key=c(h,v.value||"");break;case 7:v.value==null&&a(h,Se.UNEXPECTED_LEXICAL_ANALYSIS,k.lastStartLoc,0,Zt(v)),$.key=p(h,v.value||"");break;default:{a(h,Se.UNEXPECTED_EMPTY_LINKED_KEY,k.lastStartLoc,0);const C=h.context(),T=s(7,C.offset,C.startLoc);return T.value="",i(T,C.offset,C.startLoc),$.key=T,i($,C.offset,C.startLoc),{nextConsumeToken:v,node:$}}}return i($,h.currentOffset(),h.currentPosition()),{node:$}}function y(h){const k=h.context(),$=k.currentType===1?h.currentOffset():k.offset,v=k.currentType===1?k.endLoc:k.startLoc,C=s(2,$,v);C.items=[];let T=null,R=null;do{const ae=T||h.nextToken();switch(T=null,ae.type){case 0:ae.value==null&&a(h,Se.UNEXPECTED_LEXICAL_ANALYSIS,k.lastStartLoc,0,Zt(ae)),C.items.push(l(h,ae.value||""));break;case 6:ae.value==null&&a(h,Se.UNEXPECTED_LEXICAL_ANALYSIS,k.lastStartLoc,0,Zt(ae)),C.items.push(c(h,ae.value||""));break;case 4:R=!0;break;case 5:ae.value==null&&a(h,Se.UNEXPECTED_LEXICAL_ANALYSIS,k.lastStartLoc,0,Zt(ae)),C.items.push(u(h,ae.value||"",!!R)),R&&(r(h,xs.USE_MODULO_SYNTAX,k.lastStartLoc,0,Zt(ae)),R=null);break;case 7:ae.value==null&&a(h,Se.UNEXPECTED_LEXICAL_ANALYSIS,k.lastStartLoc,0,Zt(ae)),C.items.push(p(h,ae.value||""));break;case 8:{const P=x(h);C.items.push(P.node),T=P.nextConsumeToken||null;break}}}while(k.currentType!==14&&k.currentType!==1);const H=k.currentType===1?k.lastOffset:h.currentOffset(),Y=k.currentType===1?k.lastEndLoc:h.currentPosition();return i(C,H,Y),C}function d(h,k,$,v){const C=h.context();let T=v.items.length===0;const R=s(1,k,$);R.cases=[],R.cases.push(v);do{const H=y(h);T||(T=H.items.length===0),R.cases.push(H)}while(C.currentType!==14);return T&&a(h,Se.MUST_HAVE_MESSAGES_IN_PLURAL,$,0),i(R,h.currentOffset(),h.currentPosition()),R}function g(h){const k=h.context(),{offset:$,startLoc:v}=k,C=y(h);return k.currentType===14?C:d(h,$,v,C)}function b(h){const k=Ab(h,Bc({},e)),$=k.context(),v=s(0,$.offset,$.startLoc);return t&&v.loc&&(v.loc.source=h),v.body=g(k),e.onCacheKey&&(v.cacheKey=e.onCacheKey(h)),$.currentType!==14&&a(k,Se.UNEXPECTED_LEXICAL_ANALYSIS,$.lastStartLoc,0,h[$.offset]||""),i(v,k.currentOffset(),k.currentPosition()),v}return{parse:b}}function Zt(e){if(e.type===14)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function Pb(e,t={}){const o={ast:e,helpers:new Set};return{context:()=>o,helper:r=>(o.helpers.add(r),r)}}function Kc(e,t){for(let o=0;ozc(o)),e}function zc(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let o=0;os;function l(y,d){s.code+=y}function c(y,d=!0){const g=d?n:"";l(a?g+" ".repeat(y):g)}function u(y=!0){const d=++s.indentLevel;y&&c(d)}function p(y=!0){const d=--s.indentLevel;y&&c(d)}function f(){c(s.indentLevel)}return{context:i,push:l,indent:u,deindent:p,newline:f,helper:y=>`_${y}`,needIndent:()=>s.needIndent}}function Ob(e,t){const{helper:o}=e;e.push(`${o("linked")}(`),An(e,t.key),t.modifier?(e.push(", "),An(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function Db(e,t){const{helper:o,needIndent:n}=e;e.push(`${o("normalize")}([`),e.indent(n());const a=t.items.length;for(let r=0;r1){e.push(`${o("plural")}([`),e.indent(n());const a=t.cases.length;for(let r=0;r{const o=Gc(t.mode)?t.mode:"normal",n=Gc(t.filename)?t.filename:"message.intl";t.sourceMap;const a=t.breakLineCode!=null?t.breakLineCode:o==="arrow"?";":` -`,r=t.needIndent?t.needIndent:o!=="arrow",s=e.helpers||[],i=Fb(e,{filename:n,breakLineCode:a,needIndent:r});i.push(o==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),i.indent(r),s.length>0&&(i.push(`const { ${jc(s.map(u=>`${u}: _${u}`),", ")} } = ctx`),i.newline()),i.push("return "),An(i,e),i.deindent(r),i.push("}"),delete e.helpers;const{code:l,map:c}=i.context();return{ast:e,code:l,map:c?c.toJSON():void 0}};function Ub(e,t={}){const o=Bc({},t),n=!!o.jit,a=!!o.minify,r=o.optimize==null?!0:o.optimize,i=Tb(o).parse(e);return n?(r&&Nb(i),a&&Sn(i),{ast:i,code:""}):(Mb(i,o),jb(i,o))}/*! + */function xb(e,t,o){return{line:e,column:t,offset:o}}function dr(e,t,o){return{start:e,end:t}}const Ab=/\{([0-9a-zA-Z]+)\}/g;function Dc(e,...t){return t.length===1&&Sb(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(Ab,(o,n)=>t.hasOwnProperty(n)?t[n]:"")}const Bc=Object.assign,Gc=e=>typeof e=="string",Sb=e=>e!==null&&typeof e=="object";function jc(e,t=""){return e.reduce((o,n,a)=>a===0?o+n:o+t+n,"")}const xs={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},$b={[xs.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function Eb(e,t,...o){const n=Dc($b[e],...o||[]),a={message:String(n),code:e};return t&&(a.location=t),a}const Se={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},Cb={[Se.EXPECTED_TOKEN]:"Expected token: '{0}'",[Se.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[Se.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[Se.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[Se.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[Se.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[Se.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[Se.EMPTY_PLACEHOLDER]:"Empty placeholder",[Se.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[Se.INVALID_LINKED_FORMAT]:"Invalid linked format",[Se.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[Se.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[Se.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[Se.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[Se.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[Se.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function An(e,t,o={}){const{domain:n,messages:a,args:r}=o,s=Dc((a||Cb)[e]||"",...r||[]),i=new SyntaxError(String(s));return i.code=e,t&&(i.location=t),i.domain=n,i}function Lb(e){throw e}const Lo=" ",Tb="\r",Ot=` +`,Pb="\u2028",Mb="\u2029";function Nb(e){const t=e;let o=0,n=1,a=1,r=0;const s=S=>t[S]===Tb&&t[S+1]===Ot,i=S=>t[S]===Ot,l=S=>t[S]===Mb,u=S=>t[S]===Pb,c=S=>s(S)||i(S)||l(S)||u(S),p=()=>o,g=()=>n,k=()=>a,w=()=>r,_=S=>s(S)||l(S)||u(S)?Ot:t[S],d=()=>_(o),h=()=>_(o+r);function f(){return r=0,c(o)&&(n++,a=0),s(o)&&o++,o++,a++,t[o]}function m(){return s(o+r)&&r++,r++,t[o+r]}function v(){o=0,n=1,a=1,r=0}function x(S=0){r=S}function A(){const S=o+r;for(;S!==o;)f();r=0}return{index:p,line:g,column:k,peekOffset:w,charAt:_,currentChar:d,currentPeek:h,next:f,peek:m,reset:v,resetPeek:x,skipToPeek:A}}const Go=void 0,Rb=".",Uc="'",Ib="tokenizer";function Ob(e,t={}){const o=t.location!==!1,n=Nb(e),a=()=>n.index(),r=()=>xb(n.line(),n.column(),n.index()),s=r(),i=a(),l={currentType:14,offset:i,startLoc:s,endLoc:s,lastType:14,lastOffset:i,lastStartLoc:s,lastEndLoc:s,braceNest:0,inLinked:!1,text:""},u=()=>l,{onError:c}=t;function p(b,y,B,...V){const ue=u();if(y.column+=B,y.offset+=B,c){const se=o?dr(ue.startLoc,y):null,G=An(b,se,{domain:Ib,args:V});c(G)}}function g(b,y,B){b.endLoc=r(),b.currentType=y;const V={type:y};return o&&(V.loc=dr(b.startLoc,b.endLoc)),B!=null&&(V.value=B),V}const k=b=>g(b,14);function w(b,y){return b.currentChar()===y?(b.next(),y):(p(Se.EXPECTED_TOKEN,r(),0,y),"")}function _(b){let y="";for(;b.currentPeek()===Lo||b.currentPeek()===Ot;)y+=b.currentPeek(),b.peek();return y}function d(b){const y=_(b);return b.skipToPeek(),y}function h(b){if(b===Go)return!1;const y=b.charCodeAt(0);return y>=97&&y<=122||y>=65&&y<=90||y===95}function f(b){if(b===Go)return!1;const y=b.charCodeAt(0);return y>=48&&y<=57}function m(b,y){const{currentType:B}=y;if(B!==2)return!1;_(b);const V=h(b.currentPeek());return b.resetPeek(),V}function v(b,y){const{currentType:B}=y;if(B!==2)return!1;_(b);const V=b.currentPeek()==="-"?b.peek():b.currentPeek(),ue=f(V);return b.resetPeek(),ue}function x(b,y){const{currentType:B}=y;if(B!==2)return!1;_(b);const V=b.currentPeek()===Uc;return b.resetPeek(),V}function A(b,y){const{currentType:B}=y;if(B!==8)return!1;_(b);const V=b.currentPeek()===".";return b.resetPeek(),V}function S(b,y){const{currentType:B}=y;if(B!==9)return!1;_(b);const V=h(b.currentPeek());return b.resetPeek(),V}function T(b,y){const{currentType:B}=y;if(!(B===8||B===12))return!1;_(b);const V=b.currentPeek()===":";return b.resetPeek(),V}function I(b,y){const{currentType:B}=y;if(B!==10)return!1;const V=()=>{const se=b.currentPeek();return se==="{"?h(b.peek()):se==="@"||se==="%"||se==="|"||se===":"||se==="."||se===Lo||!se?!1:se===Ot?(b.peek(),V()):re(b,!1)},ue=V();return b.resetPeek(),ue}function H(b){_(b);const y=b.currentPeek()==="|";return b.resetPeek(),y}function W(b){const y=_(b),B=b.currentPeek()==="%"&&b.peek()==="{";return b.resetPeek(),{isModulo:B,hasSpace:y.length>0}}function re(b,y=!0){const B=(ue=!1,se="",G=!1)=>{const Y=b.currentPeek();return Y==="{"?se==="%"?!1:ue:Y==="@"||!Y?se==="%"?!0:ue:Y==="%"?(b.peek(),B(ue,"%",!0)):Y==="|"?se==="%"||G?!0:!(se===Lo||se===Ot):Y===Lo?(b.peek(),B(!0,Lo,G)):Y===Ot?(b.peek(),B(!0,Ot,G)):!0},V=B();return y&&b.resetPeek(),V}function P(b,y){const B=b.currentChar();return B===Go?Go:y(B)?(b.next(),B):null}function $(b){const y=b.charCodeAt(0);return y>=97&&y<=122||y>=65&&y<=90||y>=48&&y<=57||y===95||y===36}function M(b){return P(b,$)}function C(b){const y=b.charCodeAt(0);return y>=97&&y<=122||y>=65&&y<=90||y>=48&&y<=57||y===95||y===36||y===45}function N(b){return P(b,C)}function ne(b){const y=b.charCodeAt(0);return y>=48&&y<=57}function ge(b){return P(b,ne)}function L(b){const y=b.charCodeAt(0);return y>=48&&y<=57||y>=65&&y<=70||y>=97&&y<=102}function ae(b){return P(b,L)}function ie(b){let y="",B="";for(;y=ge(b);)B+=y;return B}function le(b){d(b);const y=b.currentChar();return y!=="%"&&p(Se.EXPECTED_TOKEN,r(),0,y),b.next(),"%"}function we(b){let y="";for(;;){const B=b.currentChar();if(B==="{"||B==="}"||B==="@"||B==="|"||!B)break;if(B==="%")if(re(b))y+=B,b.next();else break;else if(B===Lo||B===Ot)if(re(b))y+=B,b.next();else{if(H(b))break;y+=B,b.next()}else y+=B,b.next()}return y}function Me(b){d(b);let y="",B="";for(;y=N(b);)B+=y;return b.currentChar()===Go&&p(Se.UNTERMINATED_CLOSING_BRACE,r(),0),B}function Re(b){d(b);let y="";return b.currentChar()==="-"?(b.next(),y+=`-${ie(b)}`):y+=ie(b),b.currentChar()===Go&&p(Se.UNTERMINATED_CLOSING_BRACE,r(),0),y}function Oe(b){return b!==Uc&&b!==Ot}function Ie(b){d(b),w(b,"'");let y="",B="";for(;y=P(b,Oe);)y==="\\"?B+=Je(b):B+=y;const V=b.currentChar();return V===Ot||V===Go?(p(Se.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,r(),0),V===Ot&&(b.next(),w(b,"'")),B):(w(b,"'"),B)}function Je(b){const y=b.currentChar();switch(y){case"\\":case"'":return b.next(),`\\${y}`;case"u":return Xe(b,y,4);case"U":return Xe(b,y,6);default:return p(Se.UNKNOWN_ESCAPE_SEQUENCE,r(),0,y),""}}function Xe(b,y,B){w(b,y);let V="";for(let ue=0;ue{const V=b.currentChar();return V==="{"||V==="%"||V==="@"||V==="|"||V==="("||V===")"||!V||V===Lo?B:(B+=V,b.next(),y(B))};return y("")}function K(b){d(b);const y=w(b,"|");return d(b),y}function X(b,y){let B=null;switch(b.currentChar()){case"{":return y.braceNest>=1&&p(Se.NOT_ALLOW_NEST_PLACEHOLDER,r(),0),b.next(),B=g(y,2,"{"),d(b),y.braceNest++,B;case"}":return y.braceNest>0&&y.currentType===2&&p(Se.EMPTY_PLACEHOLDER,r(),0),b.next(),B=g(y,3,"}"),y.braceNest--,y.braceNest>0&&d(b),y.inLinked&&y.braceNest===0&&(y.inLinked=!1),B;case"@":return y.braceNest>0&&p(Se.UNTERMINATED_CLOSING_BRACE,r(),0),B=J(b,y)||k(y),y.braceNest=0,B;default:{let ue=!0,se=!0,G=!0;if(H(b))return y.braceNest>0&&p(Se.UNTERMINATED_CLOSING_BRACE,r(),0),B=g(y,1,K(b)),y.braceNest=0,y.inLinked=!1,B;if(y.braceNest>0&&(y.currentType===5||y.currentType===6||y.currentType===7))return p(Se.UNTERMINATED_CLOSING_BRACE,r(),0),y.braceNest=0,Z(b,y);if(ue=m(b,y))return B=g(y,5,Me(b)),d(b),B;if(se=v(b,y))return B=g(y,6,Re(b)),d(b),B;if(G=x(b,y))return B=g(y,7,Ie(b)),d(b),B;if(!ue&&!se&&!G)return B=g(y,13,E(b)),p(Se.INVALID_TOKEN_IN_PLACEHOLDER,r(),0,B.value),d(b),B;break}}return B}function J(b,y){const{currentType:B}=y;let V=null;const ue=b.currentChar();switch((B===8||B===9||B===12||B===10)&&(ue===Ot||ue===Lo)&&p(Se.INVALID_LINKED_FORMAT,r(),0),ue){case"@":return b.next(),V=g(y,8,"@"),y.inLinked=!0,V;case".":return d(b),b.next(),g(y,9,".");case":":return d(b),b.next(),g(y,10,":");default:return H(b)?(V=g(y,1,K(b)),y.braceNest=0,y.inLinked=!1,V):A(b,y)||T(b,y)?(d(b),J(b,y)):S(b,y)?(d(b),g(y,12,F(b))):I(b,y)?(d(b),ue==="{"?X(b,y)||V:g(y,11,O(b))):(B===8&&p(Se.INVALID_LINKED_FORMAT,r(),0),y.braceNest=0,y.inLinked=!1,Z(b,y))}}function Z(b,y){let B={type:14};if(y.braceNest>0)return X(b,y)||k(y);if(y.inLinked)return J(b,y)||k(y);switch(b.currentChar()){case"{":return X(b,y)||k(y);case"}":return p(Se.UNBALANCED_CLOSING_BRACE,r(),0),b.next(),g(y,3,"}");case"@":return J(b,y)||k(y);default:{if(H(b))return B=g(y,1,K(b)),y.braceNest=0,y.inLinked=!1,B;const{isModulo:ue,hasSpace:se}=W(b);if(ue)return se?g(y,0,we(b)):g(y,4,le(b));if(re(b))return g(y,0,we(b));break}}return B}function Q(){const{currentType:b,offset:y,startLoc:B,endLoc:V}=l;return l.lastType=b,l.lastOffset=y,l.lastStartLoc=B,l.lastEndLoc=V,l.offset=a(),l.startLoc=r(),n.currentChar()===Go?g(l,14):Z(n,l)}return{nextToken:Q,currentOffset:a,currentPosition:r,context:u}}const Fb="parser",Db=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function Bb(e,t,o){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const n=parseInt(t||o,16);return n<=55295||n>=57344?String.fromCodePoint(n):"�"}}}function Gb(e={}){const t=e.location!==!1,{onError:o,onWarn:n}=e;function a(m,v,x,A,...S){const T=m.currentPosition();if(T.offset+=A,T.column+=A,o){const I=t?dr(x,T):null,H=An(v,I,{domain:Fb,args:S});o(H)}}function r(m,v,x,A,...S){const T=m.currentPosition();if(T.offset+=A,T.column+=A,n){const I=t?dr(x,T):null;n(Eb(v,I,S))}}function s(m,v,x){const A={type:m};return t&&(A.start=v,A.end=v,A.loc={start:x,end:x}),A}function i(m,v,x,A){t&&(m.end=v,m.loc&&(m.loc.end=x))}function l(m,v){const x=m.context(),A=s(3,x.offset,x.startLoc);return A.value=v,i(A,m.currentOffset(),m.currentPosition()),A}function u(m,v){const x=m.context(),{lastOffset:A,lastStartLoc:S}=x,T=s(5,A,S);return T.index=parseInt(v,10),m.nextToken(),i(T,m.currentOffset(),m.currentPosition()),T}function c(m,v,x){const A=m.context(),{lastOffset:S,lastStartLoc:T}=A,I=s(4,S,T);return I.key=v,x===!0&&(I.modulo=!0),m.nextToken(),i(I,m.currentOffset(),m.currentPosition()),I}function p(m,v){const x=m.context(),{lastOffset:A,lastStartLoc:S}=x,T=s(9,A,S);return T.value=v.replace(Db,Bb),m.nextToken(),i(T,m.currentOffset(),m.currentPosition()),T}function g(m){const v=m.nextToken(),x=m.context(),{lastOffset:A,lastStartLoc:S}=x,T=s(8,A,S);return v.type!==12?(a(m,Se.UNEXPECTED_EMPTY_LINKED_MODIFIER,x.lastStartLoc,0),T.value="",i(T,A,S),{nextConsumeToken:v,node:T}):(v.value==null&&a(m,Se.UNEXPECTED_LEXICAL_ANALYSIS,x.lastStartLoc,0,Zt(v)),T.value=v.value||"",i(T,m.currentOffset(),m.currentPosition()),{node:T})}function k(m,v){const x=m.context(),A=s(7,x.offset,x.startLoc);return A.value=v,i(A,m.currentOffset(),m.currentPosition()),A}function w(m){const v=m.context(),x=s(6,v.offset,v.startLoc);let A=m.nextToken();if(A.type===9){const S=g(m);x.modifier=S.node,A=S.nextConsumeToken||m.nextToken()}switch(A.type!==10&&a(m,Se.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,Zt(A)),A=m.nextToken(),A.type===2&&(A=m.nextToken()),A.type){case 11:A.value==null&&a(m,Se.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,Zt(A)),x.key=k(m,A.value||"");break;case 5:A.value==null&&a(m,Se.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,Zt(A)),x.key=c(m,A.value||"");break;case 6:A.value==null&&a(m,Se.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,Zt(A)),x.key=u(m,A.value||"");break;case 7:A.value==null&&a(m,Se.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,Zt(A)),x.key=p(m,A.value||"");break;default:{a(m,Se.UNEXPECTED_EMPTY_LINKED_KEY,v.lastStartLoc,0);const S=m.context(),T=s(7,S.offset,S.startLoc);return T.value="",i(T,S.offset,S.startLoc),x.key=T,i(x,S.offset,S.startLoc),{nextConsumeToken:A,node:x}}}return i(x,m.currentOffset(),m.currentPosition()),{node:x}}function _(m){const v=m.context(),x=v.currentType===1?m.currentOffset():v.offset,A=v.currentType===1?v.endLoc:v.startLoc,S=s(2,x,A);S.items=[];let T=null,I=null;do{const re=T||m.nextToken();switch(T=null,re.type){case 0:re.value==null&&a(m,Se.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,Zt(re)),S.items.push(l(m,re.value||""));break;case 6:re.value==null&&a(m,Se.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,Zt(re)),S.items.push(u(m,re.value||""));break;case 4:I=!0;break;case 5:re.value==null&&a(m,Se.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,Zt(re)),S.items.push(c(m,re.value||"",!!I)),I&&(r(m,xs.USE_MODULO_SYNTAX,v.lastStartLoc,0,Zt(re)),I=null);break;case 7:re.value==null&&a(m,Se.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,Zt(re)),S.items.push(p(m,re.value||""));break;case 8:{const P=w(m);S.items.push(P.node),T=P.nextConsumeToken||null;break}}}while(v.currentType!==14&&v.currentType!==1);const H=v.currentType===1?v.lastOffset:m.currentOffset(),W=v.currentType===1?v.lastEndLoc:m.currentPosition();return i(S,H,W),S}function d(m,v,x,A){const S=m.context();let T=A.items.length===0;const I=s(1,v,x);I.cases=[],I.cases.push(A);do{const H=_(m);T||(T=H.items.length===0),I.cases.push(H)}while(S.currentType!==14);return T&&a(m,Se.MUST_HAVE_MESSAGES_IN_PLURAL,x,0),i(I,m.currentOffset(),m.currentPosition()),I}function h(m){const v=m.context(),{offset:x,startLoc:A}=v,S=_(m);return v.currentType===14?S:d(m,x,A,S)}function f(m){const v=Ob(m,Bc({},e)),x=v.context(),A=s(0,x.offset,x.startLoc);return t&&A.loc&&(A.loc.source=m),A.body=h(v),e.onCacheKey&&(A.cacheKey=e.onCacheKey(m)),x.currentType!==14&&a(v,Se.UNEXPECTED_LEXICAL_ANALYSIS,x.lastStartLoc,0,m[x.offset]||""),i(A,v.currentOffset(),v.currentPosition()),A}return{parse:f}}function Zt(e){if(e.type===14)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function jb(e,t={}){const o={ast:e,helpers:new Set};return{context:()=>o,helper:r=>(o.helpers.add(r),r)}}function Kc(e,t){for(let o=0;ozc(o)),e}function zc(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let o=0;os;function l(_,d){s.code+=_}function u(_,d=!0){const h=d?n:"";l(a?h+" ".repeat(_):h)}function c(_=!0){const d=++s.indentLevel;_&&u(d)}function p(_=!0){const d=--s.indentLevel;_&&u(d)}function g(){u(s.indentLevel)}return{context:i,push:l,indent:c,deindent:p,newline:g,helper:_=>`_${_}`,needIndent:()=>s.needIndent}}function Wb(e,t){const{helper:o}=e;e.push(`${o("linked")}(`),$n(e,t.key),t.modifier?(e.push(", "),$n(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function Yb(e,t){const{helper:o,needIndent:n}=e;e.push(`${o("normalize")}([`),e.indent(n());const a=t.items.length;for(let r=0;r1){e.push(`${o("plural")}([`),e.indent(n());const a=t.cases.length;for(let r=0;r{const o=Gc(t.mode)?t.mode:"normal",n=Gc(t.filename)?t.filename:"message.intl";t.sourceMap;const a=t.breakLineCode!=null?t.breakLineCode:o==="arrow"?";":` +`,r=t.needIndent?t.needIndent:o!=="arrow",s=e.helpers||[],i=Vb(e,{filename:n,breakLineCode:a,needIndent:r});i.push(o==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),i.indent(r),s.length>0&&(i.push(`const { ${jc(s.map(c=>`${c}: _${c}`),", ")} } = ctx`),i.newline()),i.push("return "),$n(i,e),i.deindent(r),i.push("}"),delete e.helpers;const{code:l,map:u}=i.context();return{ast:e,code:l,map:u?u.toJSON():void 0}};function Zb(e,t={}){const o=Bc({},t),n=!!o.jit,a=!!o.minify,r=o.optimize==null?!0:o.optimize,i=Gb(o).parse(e);return n?(r&&Kb(i),a&&Sn(i),{ast:i,code:""}):(Ub(i,o),Xb(i,o))}/*! * core-base v9.14.5 * (c) 2025 kazuya kawaguchi * Released under the MIT License. - */function Kb(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Co().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Co().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Co().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function ho(e){return Ke(e)&&Ss(e)===0&&(Xt(e,"b")||Xt(e,"body"))}const Hc=["b","body"];function zb(e){return jo(e,Hc)}const Vc=["c","cases"];function Hb(e){return jo(e,Vc,[])}const Wc=["s","static"];function Vb(e){return jo(e,Wc)}const Yc=["i","items"];function Wb(e){return jo(e,Yc,[])}const qc=["t","type"];function Ss(e){return jo(e,qc)}const Jc=["v","value"];function pr(e,t){const o=jo(e,Jc);if(o!=null)return o;throw sa(t)}const Xc=["m","modifier"];function Yb(e){return jo(e,Xc)}const Zc=["k","key"];function qb(e){const t=jo(e,Zc);if(t)return t;throw sa(6)}function jo(e,t,o){for(let n=0;n{s===void 0?s=i:s+=i},f[1]=()=>{s!==void 0&&(t.push(s),s=void 0)},f[2]=()=>{f[0](),a++},f[3]=()=>{if(a>0)a--,n=4,f[0]();else{if(a=0,s===void 0||(s=ey(s),s===!1))return!1;f[1]()}};function w(){const x=e[o+1];if(n===5&&x==="'"||n===6&&x==='"')return o++,i="\\"+x,f[0](),!0}for(;n!==null;)if(o++,r=e[o],!(r==="\\"&&w())){if(l=Qb(r),p=Uo[n],c=p[l]||p.l||8,c===8||(n=c[0],c[1]!==void 0&&(u=f[c[1]],u&&(i=r,u()===!1))))return;if(n===7)return t}}const eu=new Map;function oy(e,t){return Ke(e)?e[t]:null}function ny(e,t){if(!Ke(e))return null;let o=eu.get(t);if(o||(o=ty(t),o&&eu.set(t,o)),!o)return null;const n=o.length;let a=e,r=0;for(;re,ry=e=>"",sy="text",iy=e=>e.length===0?"":pb(e),ly=db;function tu(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function cy(e){const t=gt(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(gt(e.named.count)||gt(e.named.n))?gt(e.named.count)?e.named.count:gt(e.named.n)?e.named.n:t:t}function uy(e,t){t.count||(t.count=e),t.n||(t.n=e)}function dy(e={}){const t=e.locale,o=cy(e),n=Ke(e.pluralRules)&&fe(t)&&tt(e.pluralRules[t])?e.pluralRules[t]:tu,a=Ke(e.pluralRules)&&fe(t)&&tt(e.pluralRules[t])?tu:void 0,r=g=>g[n(o,g.length,a)],s=e.list||[],i=g=>s[g],l=e.named||Je();gt(e.pluralIndex)&&uy(o,l);const c=g=>l[g];function u(g){const b=tt(e.messages)?e.messages(g):Ke(e.messages)?e.messages[g]:!1;return b||(e.parent?e.parent.message(g):ry)}const p=g=>e.modifiers?e.modifiers[g]:ay,f=Te(e.processor)&&tt(e.processor.normalize)?e.processor.normalize:iy,w=Te(e.processor)&&tt(e.processor.interpolate)?e.processor.interpolate:ly,x=Te(e.processor)&&fe(e.processor.type)?e.processor.type:sy,d={list:i,named:c,plural:r,linked:(g,...b)=>{const[h,k]=b;let $="text",v="";b.length===1?Ke(h)?(v=h.modifier||v,$=h.type||$):fe(h)&&(v=h||v):b.length===2&&(fe(h)&&(v=h||v),fe(k)&&($=k||$));const C=u(g)(d),T=$==="vnode"&&rt(C)&&v?C[0]:C;return v?p(v)(T,$):T},message:u,type:x,interpolate:w,normalize:f,values:Lt(Je(),s,l)};return d}let ia=null;function py(e){ia=e}function gy(e,t,o){ia&&ia.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:o})}const fy=hy("function:translate");function hy(e){return t=>ia&&ia.emit(e,t)}const my=xs.__EXTEND_POINT__,nn=lr(my),by={FALLBACK_TO_TRANSLATE:nn(),CANNOT_FORMAT_NUMBER:nn(),FALLBACK_TO_NUMBER_FORMAT:nn(),CANNOT_FORMAT_DATE:nn(),FALLBACK_TO_DATE_FORMAT:nn(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:nn(),__EXTEND_POINT__:nn()},ou=Se.__EXTEND_POINT__,an=lr(ou),Qt={INVALID_ARGUMENT:ou,INVALID_DATE_ARGUMENT:an(),INVALID_ISO_DATE_ARGUMENT:an(),NOT_SUPPORT_NON_STRING_MESSAGE:an(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:an(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:an(),NOT_SUPPORT_LOCALE_TYPE:an(),__EXTEND_POINT__:an()};function mo(e){return $n(e,null,void 0)}function As(e,t){return t.locale!=null?nu(t.locale):nu(e.locale)}let Es;function nu(e){if(fe(e))return e;if(tt(e)){if(e.resolvedOnce&&Es!=null)return Es;if(e.constructor.name==="Function"){const t=e();if(ub(t))throw mo(Qt.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Es=t}else throw mo(Qt.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw mo(Qt.NOT_SUPPORT_LOCALE_TYPE)}function yy(e,t,o){return[...new Set([o,...rt(t)?t:Ke(t)?Object.keys(t):fe(t)?[t]:[o]])]}function au(e,t,o){const n=fe(o)?o:En,a=e;a.__localeChainCache||(a.__localeChainCache=new Map);let r=a.__localeChainCache.get(n);if(!r){r=[];let s=[o];for(;rt(s);)s=ru(r,s,t);const i=rt(t)||!Te(t)?t:t.default?t.default:null;s=fe(i)?[i]:i,rt(s)&&ru(r,s,!1),a.__localeChainCache.set(n,r)}return r}function ru(e,t,o){let n=!0;for(let a=0;a`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function wy(){return{upper:(e,t)=>t==="text"&&fe(e)?e.toUpperCase():t==="vnode"&&Ke(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&fe(e)?e.toLowerCase():t==="vnode"&&Ke(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&fe(e)?iu(e):t==="vnode"&&Ke(e)&&"__v_isVNode"in e?iu(e.children):e}}let lu;function cu(e){lu=e}let uu;function xy(e){uu=e}let du;function $y(e){du=e}let pu=null;const Sy=e=>{pu=e},Ay=()=>pu;let gu=null;const fu=e=>{gu=e},Ey=()=>gu;let hu=0;function Cy(e={}){const t=tt(e.onWarn)?e.onWarn:nb,o=fe(e.version)?e.version:ky,n=fe(e.locale)||tt(e.locale)?e.locale:En,a=tt(n)?En:n,r=rt(e.fallbackLocale)||Te(e.fallbackLocale)||fe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:a,s=Te(e.messages)?e.messages:Cs(a),i=Te(e.datetimeFormats)?e.datetimeFormats:Cs(a),l=Te(e.numberFormats)?e.numberFormats:Cs(a),c=Lt(Je(),e.modifiers,wy()),u=e.pluralRules||Je(),p=tt(e.missing)?e.missing:null,f=Re(e.missingWarn)||Bo(e.missingWarn)?e.missingWarn:!0,w=Re(e.fallbackWarn)||Bo(e.fallbackWarn)?e.fallbackWarn:!0,x=!!e.fallbackFormat,y=!!e.unresolving,d=tt(e.postTranslation)?e.postTranslation:null,g=Te(e.processor)?e.processor:null,b=Re(e.warnHtmlMessage)?e.warnHtmlMessage:!0,h=!!e.escapeParameter,k=tt(e.messageCompiler)?e.messageCompiler:lu,$=tt(e.messageResolver)?e.messageResolver:uu||oy,v=tt(e.localeFallbacker)?e.localeFallbacker:du||yy,C=Ke(e.fallbackContext)?e.fallbackContext:void 0,T=e,R=Ke(T.__datetimeFormatters)?T.__datetimeFormatters:new Map,H=Ke(T.__numberFormatters)?T.__numberFormatters:new Map,Y=Ke(T.__meta)?T.__meta:{};hu++;const ae={version:o,cid:hu,locale:n,fallbackLocale:r,messages:s,modifiers:c,pluralRules:u,missing:p,missingWarn:f,fallbackWarn:w,fallbackFormat:x,unresolving:y,postTranslation:d,processor:g,warnHtmlMessage:b,escapeParameter:h,messageCompiler:k,messageResolver:$,localeFallbacker:v,fallbackContext:C,onWarn:t,__meta:Y};return ae.datetimeFormats=i,ae.numberFormats=l,ae.__datetimeFormatters=R,ae.__numberFormatters=H,__INTLIFY_PROD_DEVTOOLS__&&gy(ae,o,Y),ae}const Cs=e=>({[e]:Je()});function Ls(e,t,o,n,a){const{missing:r,onWarn:s}=e;if(r!==null){const i=r(e,o,t,a);return fe(i)?i:t}else return t}function la(e,t,o){const n=e;n.__localeChainCache=new Map,e.localeFallbacker(e,o,t)}function Ly(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function Ty(e,t){const o=t.indexOf(e);if(o===-1)return!1;for(let n=o+1;nPy(o,e)}function Py(e,t){const o=zb(t);if(o==null)throw sa(0);if(Ss(o)===1){const r=Hb(o);return e.plural(r.reduce((s,i)=>[...s,mu(e,i)],[]))}else return mu(e,o)}function mu(e,t){const o=Vb(t);if(o!=null)return e.type==="text"?o:e.normalize([o]);{const n=Wb(t).reduce((a,r)=>[...a,Ps(e,r)],[]);return e.normalize(n)}}function Ps(e,t){const o=Ss(t);switch(o){case 3:return pr(t,o);case 9:return pr(t,o);case 4:{const n=t;if(Xt(n,"k")&&n.k)return e.interpolate(e.named(n.k));if(Xt(n,"key")&&n.key)return e.interpolate(e.named(n.key));throw sa(o)}case 5:{const n=t;if(Xt(n,"i")&>(n.i))return e.interpolate(e.list(n.i));if(Xt(n,"index")&>(n.index))return e.interpolate(e.list(n.index));throw sa(o)}case 6:{const n=t,a=Yb(n),r=qb(n);return e.linked(Ps(e,r),a?Ps(e,a):void 0,e.type)}case 7:return pr(t,o);case 8:return pr(t,o);default:throw new Error(`unhandled node on format message part: ${o}`)}}const bu=e=>e;let Cn=Je();function yu(e,t={}){let o=!1;const n=t.onError||_b;return t.onError=a=>{o=!0,n(a)},{...Ub(e,t),detectError:o}}const My=(e,t)=>{if(!fe(e))throw mo(Qt.NOT_SUPPORT_NON_STRING_MESSAGE);{Re(t.warnHtmlMessage)&&t.warnHtmlMessage;const n=(t.onCacheKey||bu)(e),a=Cn[n];if(a)return a;const{code:r,detectError:s}=yu(e,t),i=new Function(`return ${r}`)();return s?i:Cn[n]=i}};function Ny(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&fe(e)){Re(t.warnHtmlMessage)&&t.warnHtmlMessage;const n=(t.onCacheKey||bu)(e),a=Cn[n];if(a)return a;const{ast:r,detectError:s}=yu(e,{...t,location:!1,jit:!0}),i=Ts(r);return s?i:Cn[n]=i}else{const o=e.cacheKey;if(o){const n=Cn[o];return n||(Cn[o]=Ts(e))}else return Ts(e)}}const _u=()=>"",Wt=e=>tt(e);function vu(e,...t){const{fallbackFormat:o,postTranslation:n,unresolving:a,messageCompiler:r,fallbackLocale:s,messages:i}=e,[l,c]=Ms(...t),u=Re(c.missingWarn)?c.missingWarn:e.missingWarn,p=Re(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,f=Re(c.escapeParameter)?c.escapeParameter:e.escapeParameter,w=!!c.resolvedMessage,x=fe(c.default)||Re(c.default)?Re(c.default)?r?l:()=>l:c.default:o?r?l:()=>l:"",y=o||x!=="",d=As(e,c);f&&Iy(c);let[g,b,h]=w?[l,d,i[d]||Je()]:ku(e,l,d,s,p,u),k=g,$=l;if(!w&&!(fe(k)||ho(k)||Wt(k))&&y&&(k=x,$=k),!w&&(!(fe(k)||ho(k)||Wt(k))||!fe(b)))return a?gr:l;let v=!1;const C=()=>{v=!0},T=Wt(k)?k:wu(e,l,b,k,$,C);if(v)return k;const R=Oy(e,b,h,c),H=dy(R),Y=Ry(e,T,H);let ae=n?n(Y,l):Y;if(f&&fe(ae)&&(ae=lb(ae)),__INTLIFY_PROD_DEVTOOLS__){const P={timestamp:Date.now(),key:fe(l)?l:Wt(k)?k.key:"",locale:b||(Wt(k)?k.locale:""),format:fe(k)?k:Wt(k)?k.source:"",message:ae};P.meta=Lt({},e.__meta,Ay()||{}),fy(P)}return ae}function Iy(e){rt(e.list)?e.list=e.list.map(t=>fe(t)?Ic(t):t):Ke(e.named)&&Object.keys(e.named).forEach(t=>{fe(e.named[t])&&(e.named[t]=Ic(e.named[t]))})}function ku(e,t,o,n,a,r){const{messages:s,onWarn:i,messageResolver:l,localeFallbacker:c}=e,u=c(e,n,o);let p=Je(),f,w=null;const x="translate";for(let y=0;yn;return c.locale=o,c.key=t,c}const l=s(n,Fy(e,o,a,n,i,r));return l.locale=o,l.key=t,l.source=n,l}function Ry(e,t,o){return t(o)}function Ms(...e){const[t,o,n]=e,a=Je();if(!fe(t)&&!gt(t)&&!Wt(t)&&!ho(t))throw mo(Qt.INVALID_ARGUMENT);const r=gt(t)?String(t):(Wt(t),t);return gt(o)?a.plural=o:fe(o)?a.default=o:Te(o)&&!ir(o)?a.named=o:rt(o)&&(a.list=o),gt(n)?a.plural=n:fe(n)?a.default=n:Te(n)&&Lt(a,n),[r,a]}function Fy(e,t,o,n,a,r){return{locale:t,key:o,warnHtmlMessage:a,onError:s=>{throw r&&r(s),s},onCacheKey:s=>ab(t,o,s)}}function Oy(e,t,o,n){const{modifiers:a,pluralRules:r,messageResolver:s,fallbackLocale:i,fallbackWarn:l,missingWarn:c,fallbackContext:u}=e,f={locale:t,modifiers:a,pluralRules:r,messages:w=>{let x=s(o,w);if(x==null&&u){const[,,y]=ku(u,w,t,i,l,c);x=s(y,w)}if(fe(x)||ho(x)){let y=!1;const g=wu(e,w,t,x,w,()=>{y=!0});return y?_u:g}else return Wt(x)?x:_u}};return e.processor&&(f.processor=e.processor),n.list&&(f.list=n.list),n.named&&(f.named=n.named),gt(n.plural)&&(f.pluralIndex=n.plural),f}function xu(e,...t){const{datetimeFormats:o,unresolving:n,fallbackLocale:a,onWarn:r,localeFallbacker:s}=e,{__datetimeFormatters:i}=e,[l,c,u,p]=Ns(...t),f=Re(u.missingWarn)?u.missingWarn:e.missingWarn;Re(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const w=!!u.part,x=As(e,u),y=s(e,a,x);if(!fe(l)||l==="")return new Intl.DateTimeFormat(x,p).format(c);let d={},g,b=null;const h="datetime format";for(let v=0;v{$u.includes(l)?s[l]=o[l]:r[l]=o[l]}),fe(n)?r.locale=n:Te(n)&&(s=n),Te(a)&&(s=a),[r.key||"",i,r,s]}function Su(e,t,o){const n=e;for(const a in o){const r=`${t}__${a}`;n.__datetimeFormatters.has(r)&&n.__datetimeFormatters.delete(r)}}function Au(e,...t){const{numberFormats:o,unresolving:n,fallbackLocale:a,onWarn:r,localeFallbacker:s}=e,{__numberFormatters:i}=e,[l,c,u,p]=Is(...t),f=Re(u.missingWarn)?u.missingWarn:e.missingWarn;Re(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const w=!!u.part,x=As(e,u),y=s(e,a,x);if(!fe(l)||l==="")return new Intl.NumberFormat(x,p).format(c);let d={},g,b=null;const h="number format";for(let v=0;v{Eu.includes(l)?s[l]=o[l]:r[l]=o[l]}),fe(n)?r.locale=n:Te(n)&&(s=n),Te(a)&&(s=a),[r.key||"",i,r,s]}function Cu(e,t,o){const n=e;for(const a in o){const r=`${t}__${a}`;n.__numberFormatters.has(r)&&n.__numberFormatters.delete(r)}}Kb();/*! + */function Qb(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Co().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Co().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Co().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function ho(e){return He(e)&&Ss(e)===0&&(Xt(e,"b")||Xt(e,"body"))}const Hc=["b","body"];function ey(e){return jo(e,Hc)}const Vc=["c","cases"];function ty(e){return jo(e,Vc,[])}const Wc=["s","static"];function oy(e){return jo(e,Wc)}const Yc=["i","items"];function ny(e){return jo(e,Yc,[])}const qc=["t","type"];function Ss(e){return jo(e,qc)}const Jc=["v","value"];function pr(e,t){const o=jo(e,Jc);if(o!=null)return o;throw sa(t)}const Xc=["m","modifier"];function ay(e){return jo(e,Xc)}const Zc=["k","key"];function ry(e){const t=jo(e,Zc);if(t)return t;throw sa(6)}function jo(e,t,o){for(let n=0;n{s===void 0?s=i:s+=i},g[1]=()=>{s!==void 0&&(t.push(s),s=void 0)},g[2]=()=>{g[0](),a++},g[3]=()=>{if(a>0)a--,n=4,g[0]();else{if(a=0,s===void 0||(s=uy(s),s===!1))return!1;g[1]()}};function k(){const w=e[o+1];if(n===5&&w==="'"||n===6&&w==='"')return o++,i="\\"+w,g[0](),!0}for(;n!==null;)if(o++,r=e[o],!(r==="\\"&&k())){if(l=cy(r),p=Uo[n],u=p[l]||p.l||8,u===8||(n=u[0],u[1]!==void 0&&(c=g[u[1]],c&&(i=r,c()===!1))))return;if(n===7)return t}}const eu=new Map;function py(e,t){return He(e)?e[t]:null}function gy(e,t){if(!He(e))return null;let o=eu.get(t);if(o||(o=dy(t),o&&eu.set(t,o)),!o)return null;const n=o.length;let a=e,r=0;for(;re,hy=e=>"",my="text",by=e=>e.length===0?"":wb(e),yy=kb;function tu(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function _y(e){const t=gt(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(gt(e.named.count)||gt(e.named.n))?gt(e.named.count)?e.named.count:gt(e.named.n)?e.named.n:t:t}function vy(e,t){t.count||(t.count=e),t.n||(t.n=e)}function ky(e={}){const t=e.locale,o=_y(e),n=He(e.pluralRules)&&fe(t)&&nt(e.pluralRules[t])?e.pluralRules[t]:tu,a=He(e.pluralRules)&&fe(t)&&nt(e.pluralRules[t])?tu:void 0,r=h=>h[n(o,h.length,a)],s=e.list||[],i=h=>s[h],l=e.named||Qe();gt(e.pluralIndex)&&vy(o,l);const u=h=>l[h];function c(h){const f=nt(e.messages)?e.messages(h):He(e.messages)?e.messages[h]:!1;return f||(e.parent?e.parent.message(h):hy)}const p=h=>e.modifiers?e.modifiers[h]:fy,g=Le(e.processor)&&nt(e.processor.normalize)?e.processor.normalize:by,k=Le(e.processor)&&nt(e.processor.interpolate)?e.processor.interpolate:yy,w=Le(e.processor)&&fe(e.processor.type)?e.processor.type:my,d={list:i,named:u,plural:r,linked:(h,...f)=>{const[m,v]=f;let x="text",A="";f.length===1?He(m)?(A=m.modifier||A,x=m.type||x):fe(m)&&(A=m||A):f.length===2&&(fe(m)&&(A=m||A),fe(v)&&(x=v||x));const S=c(h)(d),T=x==="vnode"&&it(S)&&A?S[0]:S;return A?p(A)(T,x):T},message:c,type:w,interpolate:k,normalize:g,values:Lt(Qe(),s,l)};return d}let ia=null;function wy(e){ia=e}function xy(e,t,o){ia&&ia.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:o})}const Ay=Sy("function:translate");function Sy(e){return t=>ia&&ia.emit(e,t)}const $y=xs.__EXTEND_POINT__,nn=lr($y),Ey={FALLBACK_TO_TRANSLATE:nn(),CANNOT_FORMAT_NUMBER:nn(),FALLBACK_TO_NUMBER_FORMAT:nn(),CANNOT_FORMAT_DATE:nn(),FALLBACK_TO_DATE_FORMAT:nn(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:nn(),__EXTEND_POINT__:nn()},ou=Se.__EXTEND_POINT__,an=lr(ou),Qt={INVALID_ARGUMENT:ou,INVALID_DATE_ARGUMENT:an(),INVALID_ISO_DATE_ARGUMENT:an(),NOT_SUPPORT_NON_STRING_MESSAGE:an(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:an(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:an(),NOT_SUPPORT_LOCALE_TYPE:an(),__EXTEND_POINT__:an()};function mo(e){return An(e,null,void 0)}function $s(e,t){return t.locale!=null?nu(t.locale):nu(e.locale)}let Es;function nu(e){if(fe(e))return e;if(nt(e)){if(e.resolvedOnce&&Es!=null)return Es;if(e.constructor.name==="Function"){const t=e();if(vb(t))throw mo(Qt.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Es=t}else throw mo(Qt.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw mo(Qt.NOT_SUPPORT_LOCALE_TYPE)}function Cy(e,t,o){return[...new Set([o,...it(t)?t:He(t)?Object.keys(t):fe(t)?[t]:[o]])]}function au(e,t,o){const n=fe(o)?o:En,a=e;a.__localeChainCache||(a.__localeChainCache=new Map);let r=a.__localeChainCache.get(n);if(!r){r=[];let s=[o];for(;it(s);)s=ru(r,s,t);const i=it(t)||!Le(t)?t:t.default?t.default:null;s=fe(i)?[i]:i,it(s)&&ru(r,s,!1),a.__localeChainCache.set(n,r)}return r}function ru(e,t,o){let n=!0;for(let a=0;a`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function My(){return{upper:(e,t)=>t==="text"&&fe(e)?e.toUpperCase():t==="vnode"&&He(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&fe(e)?e.toLowerCase():t==="vnode"&&He(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&fe(e)?iu(e):t==="vnode"&&He(e)&&"__v_isVNode"in e?iu(e.children):e}}let lu;function cu(e){lu=e}let uu;function Ny(e){uu=e}let du;function Ry(e){du=e}let pu=null;const Iy=e=>{pu=e},Oy=()=>pu;let gu=null;const fu=e=>{gu=e},Fy=()=>gu;let hu=0;function Dy(e={}){const t=nt(e.onWarn)?e.onWarn:gb,o=fe(e.version)?e.version:Py,n=fe(e.locale)||nt(e.locale)?e.locale:En,a=nt(n)?En:n,r=it(e.fallbackLocale)||Le(e.fallbackLocale)||fe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:a,s=Le(e.messages)?e.messages:Cs(a),i=Le(e.datetimeFormats)?e.datetimeFormats:Cs(a),l=Le(e.numberFormats)?e.numberFormats:Cs(a),u=Lt(Qe(),e.modifiers,My()),c=e.pluralRules||Qe(),p=nt(e.missing)?e.missing:null,g=De(e.missingWarn)||Bo(e.missingWarn)?e.missingWarn:!0,k=De(e.fallbackWarn)||Bo(e.fallbackWarn)?e.fallbackWarn:!0,w=!!e.fallbackFormat,_=!!e.unresolving,d=nt(e.postTranslation)?e.postTranslation:null,h=Le(e.processor)?e.processor:null,f=De(e.warnHtmlMessage)?e.warnHtmlMessage:!0,m=!!e.escapeParameter,v=nt(e.messageCompiler)?e.messageCompiler:lu,x=nt(e.messageResolver)?e.messageResolver:uu||py,A=nt(e.localeFallbacker)?e.localeFallbacker:du||Cy,S=He(e.fallbackContext)?e.fallbackContext:void 0,T=e,I=He(T.__datetimeFormatters)?T.__datetimeFormatters:new Map,H=He(T.__numberFormatters)?T.__numberFormatters:new Map,W=He(T.__meta)?T.__meta:{};hu++;const re={version:o,cid:hu,locale:n,fallbackLocale:r,messages:s,modifiers:u,pluralRules:c,missing:p,missingWarn:g,fallbackWarn:k,fallbackFormat:w,unresolving:_,postTranslation:d,processor:h,warnHtmlMessage:f,escapeParameter:m,messageCompiler:v,messageResolver:x,localeFallbacker:A,fallbackContext:S,onWarn:t,__meta:W};return re.datetimeFormats=i,re.numberFormats=l,re.__datetimeFormatters=I,re.__numberFormatters=H,__INTLIFY_PROD_DEVTOOLS__&&xy(re,o,W),re}const Cs=e=>({[e]:Qe()});function Ls(e,t,o,n,a){const{missing:r,onWarn:s}=e;if(r!==null){const i=r(e,o,t,a);return fe(i)?i:t}else return t}function la(e,t,o){const n=e;n.__localeChainCache=new Map,e.localeFallbacker(e,o,t)}function By(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function Gy(e,t){const o=t.indexOf(e);if(o===-1)return!1;for(let n=o+1;njy(o,e)}function jy(e,t){const o=ey(t);if(o==null)throw sa(0);if(Ss(o)===1){const r=ty(o);return e.plural(r.reduce((s,i)=>[...s,mu(e,i)],[]))}else return mu(e,o)}function mu(e,t){const o=oy(t);if(o!=null)return e.type==="text"?o:e.normalize([o]);{const n=ny(t).reduce((a,r)=>[...a,Ps(e,r)],[]);return e.normalize(n)}}function Ps(e,t){const o=Ss(t);switch(o){case 3:return pr(t,o);case 9:return pr(t,o);case 4:{const n=t;if(Xt(n,"k")&&n.k)return e.interpolate(e.named(n.k));if(Xt(n,"key")&&n.key)return e.interpolate(e.named(n.key));throw sa(o)}case 5:{const n=t;if(Xt(n,"i")&>(n.i))return e.interpolate(e.list(n.i));if(Xt(n,"index")&>(n.index))return e.interpolate(e.list(n.index));throw sa(o)}case 6:{const n=t,a=ay(n),r=ry(n);return e.linked(Ps(e,r),a?Ps(e,a):void 0,e.type)}case 7:return pr(t,o);case 8:return pr(t,o);default:throw new Error(`unhandled node on format message part: ${o}`)}}const bu=e=>e;let Cn=Qe();function yu(e,t={}){let o=!1;const n=t.onError||Lb;return t.onError=a=>{o=!0,n(a)},{...Zb(e,t),detectError:o}}const Uy=(e,t)=>{if(!fe(e))throw mo(Qt.NOT_SUPPORT_NON_STRING_MESSAGE);{De(t.warnHtmlMessage)&&t.warnHtmlMessage;const n=(t.onCacheKey||bu)(e),a=Cn[n];if(a)return a;const{code:r,detectError:s}=yu(e,t),i=new Function(`return ${r}`)();return s?i:Cn[n]=i}};function Ky(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&fe(e)){De(t.warnHtmlMessage)&&t.warnHtmlMessage;const n=(t.onCacheKey||bu)(e),a=Cn[n];if(a)return a;const{ast:r,detectError:s}=yu(e,{...t,location:!1,jit:!0}),i=Ts(r);return s?i:Cn[n]=i}else{const o=e.cacheKey;if(o){const n=Cn[o];return n||(Cn[o]=Ts(e))}else return Ts(e)}}const _u=()=>"",Wt=e=>nt(e);function vu(e,...t){const{fallbackFormat:o,postTranslation:n,unresolving:a,messageCompiler:r,fallbackLocale:s,messages:i}=e,[l,u]=Ms(...t),c=De(u.missingWarn)?u.missingWarn:e.missingWarn,p=De(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn,g=De(u.escapeParameter)?u.escapeParameter:e.escapeParameter,k=!!u.resolvedMessage,w=fe(u.default)||De(u.default)?De(u.default)?r?l:()=>l:u.default:o?r?l:()=>l:"",_=o||w!=="",d=$s(e,u);g&&zy(u);let[h,f,m]=k?[l,d,i[d]||Qe()]:ku(e,l,d,s,p,c),v=h,x=l;if(!k&&!(fe(v)||ho(v)||Wt(v))&&_&&(v=w,x=v),!k&&(!(fe(v)||ho(v)||Wt(v))||!fe(f)))return a?gr:l;let A=!1;const S=()=>{A=!0},T=Wt(v)?v:wu(e,l,f,v,x,S);if(A)return v;const I=Wy(e,f,m,u),H=ky(I),W=Hy(e,T,H);let re=n?n(W,l):W;if(g&&fe(re)&&(re=yb(re)),__INTLIFY_PROD_DEVTOOLS__){const P={timestamp:Date.now(),key:fe(l)?l:Wt(v)?v.key:"",locale:f||(Wt(v)?v.locale:""),format:fe(v)?v:Wt(v)?v.source:"",message:re};P.meta=Lt({},e.__meta,Oy()||{}),Ay(P)}return re}function zy(e){it(e.list)?e.list=e.list.map(t=>fe(t)?Rc(t):t):He(e.named)&&Object.keys(e.named).forEach(t=>{fe(e.named[t])&&(e.named[t]=Rc(e.named[t]))})}function ku(e,t,o,n,a,r){const{messages:s,onWarn:i,messageResolver:l,localeFallbacker:u}=e,c=u(e,n,o);let p=Qe(),g,k=null;const w="translate";for(let _=0;_n;return u.locale=o,u.key=t,u}const l=s(n,Vy(e,o,a,n,i,r));return l.locale=o,l.key=t,l.source=n,l}function Hy(e,t,o){return t(o)}function Ms(...e){const[t,o,n]=e,a=Qe();if(!fe(t)&&!gt(t)&&!Wt(t)&&!ho(t))throw mo(Qt.INVALID_ARGUMENT);const r=gt(t)?String(t):(Wt(t),t);return gt(o)?a.plural=o:fe(o)?a.default=o:Le(o)&&!ir(o)?a.named=o:it(o)&&(a.list=o),gt(n)?a.plural=n:fe(n)?a.default=n:Le(n)&&Lt(a,n),[r,a]}function Vy(e,t,o,n,a,r){return{locale:t,key:o,warnHtmlMessage:a,onError:s=>{throw r&&r(s),s},onCacheKey:s=>fb(t,o,s)}}function Wy(e,t,o,n){const{modifiers:a,pluralRules:r,messageResolver:s,fallbackLocale:i,fallbackWarn:l,missingWarn:u,fallbackContext:c}=e,g={locale:t,modifiers:a,pluralRules:r,messages:k=>{let w=s(o,k);if(w==null&&c){const[,,_]=ku(c,k,t,i,l,u);w=s(_,k)}if(fe(w)||ho(w)){let _=!1;const h=wu(e,k,t,w,k,()=>{_=!0});return _?_u:h}else return Wt(w)?w:_u}};return e.processor&&(g.processor=e.processor),n.list&&(g.list=n.list),n.named&&(g.named=n.named),gt(n.plural)&&(g.pluralIndex=n.plural),g}function xu(e,...t){const{datetimeFormats:o,unresolving:n,fallbackLocale:a,onWarn:r,localeFallbacker:s}=e,{__datetimeFormatters:i}=e,[l,u,c,p]=Ns(...t),g=De(c.missingWarn)?c.missingWarn:e.missingWarn;De(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn;const k=!!c.part,w=$s(e,c),_=s(e,a,w);if(!fe(l)||l==="")return new Intl.DateTimeFormat(w,p).format(u);let d={},h,f=null;const m="datetime format";for(let A=0;A<_.length&&(h=_[A],d=o[h]||{},f=d[l],!Le(f));A++)Ls(e,l,h,g,m);if(!Le(f)||!fe(h))return n?gr:l;let v=`${h}__${l}`;ir(p)||(v=`${v}__${JSON.stringify(p)}`);let x=i.get(v);return x||(x=new Intl.DateTimeFormat(h,Lt({},f,p)),i.set(v,x)),k?x.formatToParts(u):x.format(u)}const Au=["localeMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName","formatMatcher","hour12","timeZone","dateStyle","timeStyle","calendar","dayPeriod","numberingSystem","hourCycle","fractionalSecondDigits"];function Ns(...e){const[t,o,n,a]=e,r=Qe();let s=Qe(),i;if(fe(t)){const l=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!l)throw mo(Qt.INVALID_ISO_DATE_ARGUMENT);const u=l[3]?l[3].trim().startsWith("T")?`${l[1].trim()}${l[3].trim()}`:`${l[1].trim()}T${l[3].trim()}`:l[1].trim();i=new Date(u);try{i.toISOString()}catch{throw mo(Qt.INVALID_ISO_DATE_ARGUMENT)}}else if(mb(t)){if(isNaN(t.getTime()))throw mo(Qt.INVALID_DATE_ARGUMENT);i=t}else if(gt(t))i=t;else throw mo(Qt.INVALID_ARGUMENT);return fe(o)?r.key=o:Le(o)&&Object.keys(o).forEach(l=>{Au.includes(l)?s[l]=o[l]:r[l]=o[l]}),fe(n)?r.locale=n:Le(n)&&(s=n),Le(a)&&(s=a),[r.key||"",i,r,s]}function Su(e,t,o){const n=e;for(const a in o){const r=`${t}__${a}`;n.__datetimeFormatters.has(r)&&n.__datetimeFormatters.delete(r)}}function $u(e,...t){const{numberFormats:o,unresolving:n,fallbackLocale:a,onWarn:r,localeFallbacker:s}=e,{__numberFormatters:i}=e,[l,u,c,p]=Rs(...t),g=De(c.missingWarn)?c.missingWarn:e.missingWarn;De(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn;const k=!!c.part,w=$s(e,c),_=s(e,a,w);if(!fe(l)||l==="")return new Intl.NumberFormat(w,p).format(u);let d={},h,f=null;const m="number format";for(let A=0;A<_.length&&(h=_[A],d=o[h]||{},f=d[l],!Le(f));A++)Ls(e,l,h,g,m);if(!Le(f)||!fe(h))return n?gr:l;let v=`${h}__${l}`;ir(p)||(v=`${v}__${JSON.stringify(p)}`);let x=i.get(v);return x||(x=new Intl.NumberFormat(h,Lt({},f,p)),i.set(v,x)),k?x.formatToParts(u):x.format(u)}const Eu=["localeMatcher","style","currency","currencyDisplay","currencySign","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","compactDisplay","notation","signDisplay","unit","unitDisplay","roundingMode","roundingPriority","roundingIncrement","trailingZeroDisplay"];function Rs(...e){const[t,o,n,a]=e,r=Qe();let s=Qe();if(!gt(t))throw mo(Qt.INVALID_ARGUMENT);const i=t;return fe(o)?r.key=o:Le(o)&&Object.keys(o).forEach(l=>{Eu.includes(l)?s[l]=o[l]:r[l]=o[l]}),fe(n)?r.locale=n:Le(n)&&(s=n),Le(a)&&(s=a),[r.key||"",i,r,s]}function Cu(e,t,o){const n=e;for(const a in o){const r=`${t}__${a}`;n.__numberFormatters.has(r)&&n.__numberFormatters.delete(r)}}Qb();/*! * vue-i18n v9.14.5 * (c) 2025 kazuya kawaguchi * Released under the MIT License. - */const Dy="9.14.5";function By(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(Co().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(Co().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Co().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Co().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Co().__INTLIFY_PROD_DEVTOOLS__=!1)}const Gy=by.__EXTEND_POINT__,To=lr(Gy);To(),To(),To(),To(),To(),To(),To(),To(),To();const Lu=Qt.__EXTEND_POINT__,Dt=lr(Lu),bt={UNEXPECTED_RETURN_TYPE:Lu,INVALID_ARGUMENT:Dt(),MUST_BE_CALL_SETUP_TOP:Dt(),NOT_INSTALLED:Dt(),NOT_AVAILABLE_IN_LEGACY_MODE:Dt(),REQUIRED_VALUE:Dt(),INVALID_VALUE:Dt(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Dt(),NOT_INSTALLED_WITH_PROVIDE:Dt(),UNEXPECTED_ERROR:Dt(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Dt(),BRIDGE_SUPPORT_VUE_2_ONLY:Dt(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Dt(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Dt(),__EXTEND_POINT__:Dt()};function kt(e,...t){return $n(e,null,void 0)}const Rs=Do("__translateVNode"),Fs=Do("__datetimeParts"),Os=Do("__numberParts"),Tu=Do("__setPluralRules"),Pu=Do("__injectWithOption"),Ds=Do("__dispose");function ca(e){if(!Ke(e)||ho(e))return e;for(const t in e)if(Xt(e,t))if(!t.includes("."))Ke(e[t])&&ca(e[t]);else{const o=t.split("."),n=o.length-1;let a=e,r=!1;for(let s=0;s{if("locale"in i&&"resource"in i){const{locale:l,resource:c}=i;l?(s[l]=s[l]||Je(),ur(c,s[l])):ur(c,s)}else fe(i)&&ur(JSON.parse(i),s)}),a==null&&r)for(const i in s)Xt(s,i)&&ca(s[i]);return s}function Mu(e){return e.type}function Nu(e,t,o){let n=Ke(t.messages)?t.messages:Je();"__i18nGlobal"in o&&(n=fr(e.locale.value,{messages:n,__i18n:o.__i18nGlobal}));const a=Object.keys(n);a.length&&a.forEach(r=>{e.mergeLocaleMessage(r,n[r])});{if(Ke(t.datetimeFormats)){const r=Object.keys(t.datetimeFormats);r.length&&r.forEach(s=>{e.mergeDateTimeFormat(s,t.datetimeFormats[s])})}if(Ke(t.numberFormats)){const r=Object.keys(t.numberFormats);r.length&&r.forEach(s=>{e.mergeNumberFormat(s,t.numberFormats[s])})}}}function Iu(e){return He(Zn,null,e,0)}const Ru="__INTLIFY_META__",Fu=()=>[],jy=()=>!1;let Ou=0;function Du(e){return(t,o,n,a)=>e(o,n,Ao()||void 0,a)}const Uy=()=>{const e=Ao();let t=null;return e&&(t=Mu(e)[Ru])?{[Ru]:t}:null};function Bs(e={},t){const{__root:o,__injectWithOption:n}=e,a=o===void 0,r=e.flatJson,s=sr?de:fn,i=!!e.translateExistCompatible;let l=Re(e.inheritLocale)?e.inheritLocale:!0;const c=s(o&&l?o.locale.value:fe(e.locale)?e.locale:En),u=s(o&&l?o.fallbackLocale.value:fe(e.fallbackLocale)||rt(e.fallbackLocale)||Te(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),p=s(fr(c.value,e)),f=s(Te(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),w=s(Te(e.numberFormats)?e.numberFormats:{[c.value]:{}});let x=o?o.missingWarn:Re(e.missingWarn)||Bo(e.missingWarn)?e.missingWarn:!0,y=o?o.fallbackWarn:Re(e.fallbackWarn)||Bo(e.fallbackWarn)?e.fallbackWarn:!0,d=o?o.fallbackRoot:Re(e.fallbackRoot)?e.fallbackRoot:!0,g=!!e.fallbackFormat,b=tt(e.missing)?e.missing:null,h=tt(e.missing)?Du(e.missing):null,k=tt(e.postTranslation)?e.postTranslation:null,$=o?o.warnHtmlMessage:Re(e.warnHtmlMessage)?e.warnHtmlMessage:!0,v=!!e.escapeParameter;const C=o?o.modifiers:Te(e.modifiers)?e.modifiers:{};let T=e.pluralRules||o&&o.pluralRules,R;R=(()=>{a&&fu(null);const G={version:Dy,locale:c.value,fallbackLocale:u.value,messages:p.value,modifiers:C,pluralRules:T,missing:h===null?void 0:h,missingWarn:x,fallbackWarn:y,fallbackFormat:g,unresolving:!0,postTranslation:k===null?void 0:k,warnHtmlMessage:$,escapeParameter:v,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};G.datetimeFormats=f.value,G.numberFormats=w.value,G.__datetimeFormatters=Te(R)?R.__datetimeFormatters:void 0,G.__numberFormatters=Te(R)?R.__numberFormatters:void 0;const q=Cy(G);return a&&fu(q),q})(),la(R,c.value,u.value);function Y(){return[c.value,u.value,p.value,f.value,w.value]}const ae=oe({get:()=>c.value,set:G=>{c.value=G,R.locale=c.value}}),P=oe({get:()=>u.value,set:G=>{u.value=G,R.fallbackLocale=u.value,la(R,c.value,G)}}),A=oe(()=>p.value),M=oe(()=>f.value),S=oe(()=>w.value);function E(){return tt(k)?k:null}function V(G){k=G,R.postTranslation=G}function ie(){return b}function F(G){G!==null&&(h=Du(G)),b=G,R.missing=h}const ce=(G,q,me,xe,De,D)=>{Y();let U;try{__INTLIFY_PROD_DEVTOOLS__,a||(R.fallbackContext=o?Ey():void 0),U=G(R)}finally{__INTLIFY_PROD_DEVTOOLS__,a||(R.fallbackContext=void 0)}if(me!=="translate exists"&>(U)&&U===gr||me==="translate exists"&&!U){const[he,ve]=q();return o&&d?xe(o):De(he)}else{if(D(U))return U;throw kt(bt.UNEXPECTED_RETURN_TYPE)}};function pe(...G){return ce(q=>Reflect.apply(vu,null,[q,...G]),()=>Ms(...G),"translate",q=>Reflect.apply(q.t,q,[...G]),q=>q,q=>fe(q))}function se(...G){const[q,me,xe]=G;if(xe&&!Ke(xe))throw kt(bt.INVALID_ARGUMENT);return pe(q,me,Lt({resolvedMessage:!0},xe||{}))}function $e(...G){return ce(q=>Reflect.apply(xu,null,[q,...G]),()=>Ns(...G),"datetime format",q=>Reflect.apply(q.d,q,[...G]),()=>su,q=>fe(q))}function Ee(...G){return ce(q=>Reflect.apply(Au,null,[q,...G]),()=>Is(...G),"number format",q=>Reflect.apply(q.n,q,[...G]),()=>su,q=>fe(q))}function Fe(G){return G.map(q=>fe(q)||gt(q)||Re(q)?Iu(String(q)):q)}const Ye={normalize:Fe,interpolate:G=>G,type:"vnode"};function ft(...G){return ce(q=>{let me;const xe=q;try{xe.processor=Ye,me=Reflect.apply(vu,null,[xe,...G])}finally{xe.processor=null}return me},()=>Ms(...G),"translate",q=>q[Rs](...G),q=>[Iu(q)],q=>rt(q))}function Ze(...G){return ce(q=>Reflect.apply(Au,null,[q,...G]),()=>Is(...G),"number format",q=>q[Os](...G),Fu,q=>fe(q)||rt(q))}function dt(...G){return ce(q=>Reflect.apply(xu,null,[q,...G]),()=>Ns(...G),"datetime format",q=>q[Fs](...G),Fu,q=>fe(q)||rt(q))}function L(G){T=G,R.pluralRules=T}function O(G,q){return ce(()=>{if(!G)return!1;const me=fe(q)?q:c.value,xe=Z(me),De=R.messageResolver(xe,G);return i?De!=null:ho(De)||Wt(De)||fe(De)},()=>[G],"translate exists",me=>Reflect.apply(me.te,me,[G,q]),jy,me=>Re(me))}function I(G){let q=null;const me=au(R,u.value,c.value);for(let xe=0;xe{l&&(c.value=G,R.locale=G,la(R,c.value,u.value))}),lt(o.fallbackLocale,G=>{l&&(u.value=G,R.fallbackLocale=G,la(R,c.value,u.value))}));const re={id:Ou,locale:ae,fallbackLocale:P,get inheritLocale(){return l},set inheritLocale(G){l=G,G&&o&&(c.value=o.locale.value,u.value=o.fallbackLocale.value,la(R,c.value,u.value))},get availableLocales(){return Object.keys(p.value).sort()},messages:A,get modifiers(){return C},get pluralRules(){return T||{}},get isGlobal(){return a},get missingWarn(){return x},set missingWarn(G){x=G,R.missingWarn=x},get fallbackWarn(){return y},set fallbackWarn(G){y=G,R.fallbackWarn=y},get fallbackRoot(){return d},set fallbackRoot(G){d=G},get fallbackFormat(){return g},set fallbackFormat(G){g=G,R.fallbackFormat=g},get warnHtmlMessage(){return $},set warnHtmlMessage(G){$=G,R.warnHtmlMessage=G},get escapeParameter(){return v},set escapeParameter(G){v=G,R.escapeParameter=G},t:pe,getLocaleMessage:Z,setLocaleMessage:X,mergeLocaleMessage:ee,getPostTranslationHandler:E,setPostTranslationHandler:V,getMissingHandler:ie,setMissingHandler:F,[Tu]:L};return re.datetimeFormats=M,re.numberFormats=S,re.rt=se,re.te=O,re.tm=z,re.d=$e,re.n=Ee,re.getDateTimeFormat=Q,re.setDateTimeFormat=m,re.mergeDateTimeFormat=_,re.getNumberFormat=B,re.setNumberFormat=W,re.mergeNumberFormat=ue,re[Pu]=n,re[Rs]=ft,re[Fs]=dt,re[Os]=Ze,re}function Ky(e){const t=fe(e.locale)?e.locale:En,o=fe(e.fallbackLocale)||rt(e.fallbackLocale)||Te(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,n=tt(e.missing)?e.missing:void 0,a=Re(e.silentTranslationWarn)||Bo(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,r=Re(e.silentFallbackWarn)||Bo(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,s=Re(e.fallbackRoot)?e.fallbackRoot:!0,i=!!e.formatFallbackMessages,l=Te(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,u=tt(e.postTranslation)?e.postTranslation:void 0,p=fe(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,f=!!e.escapeParameterHtml,w=Re(e.sync)?e.sync:!0;let x=e.messages;if(Te(e.sharedMessages)){const v=e.sharedMessages;x=Object.keys(v).reduce((T,R)=>{const H=T[R]||(T[R]={});return Lt(H,v[R]),T},x||{})}const{__i18n:y,__root:d,__injectWithOption:g}=e,b=e.datetimeFormats,h=e.numberFormats,k=e.flatJson,$=e.translateExistCompatible;return{locale:t,fallbackLocale:o,messages:x,flatJson:k,datetimeFormats:b,numberFormats:h,missing:n,missingWarn:a,fallbackWarn:r,fallbackRoot:s,fallbackFormat:i,modifiers:l,pluralRules:c,postTranslation:u,warnHtmlMessage:p,escapeParameter:f,messageResolver:e.messageResolver,inheritLocale:w,translateExistCompatible:$,__i18n:y,__root:d,__injectWithOption:g}}function Gs(e={},t){{const o=Bs(Ky(e)),{__extender:n}=e,a={id:o.id,get locale(){return o.locale.value},set locale(r){o.locale.value=r},get fallbackLocale(){return o.fallbackLocale.value},set fallbackLocale(r){o.fallbackLocale.value=r},get messages(){return o.messages.value},get datetimeFormats(){return o.datetimeFormats.value},get numberFormats(){return o.numberFormats.value},get availableLocales(){return o.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(r){},get missing(){return o.getMissingHandler()},set missing(r){o.setMissingHandler(r)},get silentTranslationWarn(){return Re(o.missingWarn)?!o.missingWarn:o.missingWarn},set silentTranslationWarn(r){o.missingWarn=Re(r)?!r:r},get silentFallbackWarn(){return Re(o.fallbackWarn)?!o.fallbackWarn:o.fallbackWarn},set silentFallbackWarn(r){o.fallbackWarn=Re(r)?!r:r},get modifiers(){return o.modifiers},get formatFallbackMessages(){return o.fallbackFormat},set formatFallbackMessages(r){o.fallbackFormat=r},get postTranslation(){return o.getPostTranslationHandler()},set postTranslation(r){o.setPostTranslationHandler(r)},get sync(){return o.inheritLocale},set sync(r){o.inheritLocale=r},get warnHtmlInMessage(){return o.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(r){o.warnHtmlMessage=r!=="off"},get escapeParameterHtml(){return o.escapeParameter},set escapeParameterHtml(r){o.escapeParameter=r},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(r){},get pluralizationRules(){return o.pluralRules||{}},__composer:o,t(...r){const[s,i,l]=r,c={};let u=null,p=null;if(!fe(s))throw kt(bt.INVALID_ARGUMENT);const f=s;return fe(i)?c.locale=i:rt(i)?u=i:Te(i)&&(p=i),rt(l)?u=l:Te(l)&&(p=l),Reflect.apply(o.t,o,[f,u||p||{},c])},rt(...r){return Reflect.apply(o.rt,o,[...r])},tc(...r){const[s,i,l]=r,c={plural:1};let u=null,p=null;if(!fe(s))throw kt(bt.INVALID_ARGUMENT);const f=s;return fe(i)?c.locale=i:gt(i)?c.plural=i:rt(i)?u=i:Te(i)&&(p=i),fe(l)?c.locale=l:rt(l)?u=l:Te(l)&&(p=l),Reflect.apply(o.t,o,[f,u||p||{},c])},te(r,s){return o.te(r,s)},tm(r){return o.tm(r)},getLocaleMessage(r){return o.getLocaleMessage(r)},setLocaleMessage(r,s){o.setLocaleMessage(r,s)},mergeLocaleMessage(r,s){o.mergeLocaleMessage(r,s)},d(...r){return Reflect.apply(o.d,o,[...r])},getDateTimeFormat(r){return o.getDateTimeFormat(r)},setDateTimeFormat(r,s){o.setDateTimeFormat(r,s)},mergeDateTimeFormat(r,s){o.mergeDateTimeFormat(r,s)},n(...r){return Reflect.apply(o.n,o,[...r])},getNumberFormat(r){return o.getNumberFormat(r)},setNumberFormat(r,s){o.setNumberFormat(r,s)},mergeNumberFormat(r,s){o.mergeNumberFormat(r,s)},getChoiceIndex(r,s){return-1}};return a.__extender=n,a}}const js={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function zy({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((n,a)=>[...n,...a.type===Me?a.children:[a]],[]):t.reduce((o,n)=>{const a=e[n];return a&&(o[n]=a()),o},Je())}function Bu(e){return Me}const Gu=Yn({name:"i18n-t",props:Lt({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>gt(e)||!isNaN(e)}},js),setup(e,t){const{slots:o,attrs:n}=t,a=e.i18n||yt({useScope:e.scope,__useComponent:!0});return()=>{const r=Object.keys(o).filter(p=>p!=="_"),s=Je();e.locale&&(s.locale=e.locale),e.plural!==void 0&&(s.plural=fe(e.plural)?+e.plural:e.plural);const i=zy(t,r),l=a[Rs](e.keypath,i,s),c=Lt(Je(),n),u=fe(e.tag)||Ke(e.tag)?e.tag:Bu();return ic(u,c,l)}}});function Hy(e){return rt(e)&&!fe(e[0])}function ju(e,t,o,n){const{slots:a,attrs:r}=t;return()=>{const s={part:!0};let i=Je();e.locale&&(s.locale=e.locale),fe(e.format)?s.key=e.format:Ke(e.format)&&(fe(e.format.key)&&(s.key=e.format.key),i=Object.keys(e.format).reduce((f,w)=>o.includes(w)?Lt(Je(),f,{[w]:e.format[w]}):f,Je()));const l=n(e.value,s,i);let c=[s.key];rt(l)?c=l.map((f,w)=>{const x=a[f.type],y=x?x({[f.type]:f.value,index:w,parts:l}):[f.value];return Hy(y)&&(y[0].key=`${f.type}-${w}`),y}):fe(l)&&(c=[l]);const u=Lt(Je(),r),p=fe(e.tag)||Ke(e.tag)?e.tag:Bu();return ic(p,u,c)}}const Uu=Yn({name:"i18n-n",props:Lt({value:{type:Number,required:!0},format:{type:[String,Object]}},js),setup(e,t){const o=e.i18n||yt({useScope:e.scope,__useComponent:!0});return ju(e,t,Eu,(...n)=>o[Os](...n))}}),Ku=Yn({name:"i18n-d",props:Lt({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},js),setup(e,t){const o=e.i18n||yt({useScope:e.scope,__useComponent:!0});return ju(e,t,$u,(...n)=>o[Fs](...n))}});function Vy(e,t){const o=e;if(e.mode==="composition")return o.__getInstance(t)||e.global;{const n=o.__getInstance(t);return n!=null?n.__composer:e.global.__composer}}function Wy(e){const t=s=>{const{instance:i,modifiers:l,value:c}=s;if(!i||!i.$)throw kt(bt.UNEXPECTED_ERROR);const u=Vy(e,i.$),p=zu(c);return[Reflect.apply(u.t,u,[...Hu(p)]),u]};return{created:(s,i)=>{const[l,c]=t(i);sr&&e.global===c&&(s.__i18nWatcher=lt(c.locale,()=>{i.instance&&i.instance.$forceUpdate()})),s.__composer=c,s.textContent=l},unmounted:s=>{sr&&s.__i18nWatcher&&(s.__i18nWatcher(),s.__i18nWatcher=void 0,delete s.__i18nWatcher),s.__composer&&(s.__composer=void 0,delete s.__composer)},beforeUpdate:(s,{value:i})=>{if(s.__composer){const l=s.__composer,c=zu(i);s.textContent=Reflect.apply(l.t,l,[...Hu(c)])}},getSSRProps:s=>{const[i]=t(s);return{textContent:i}}}}function zu(e){if(fe(e))return{path:e};if(Te(e)){if(!("path"in e))throw kt(bt.REQUIRED_VALUE,"path");return e}else throw kt(bt.INVALID_VALUE)}function Hu(e){const{path:t,locale:o,args:n,choice:a,plural:r}=e,s={},i=n||{};return fe(o)&&(s.locale=o),gt(a)&&(s.plural=a),gt(r)&&(s.plural=r),[t,i,s]}function Yy(e,t,...o){const n=Te(o[0])?o[0]:{},a=!!n.useI18nComponentName;(Re(n.globalInstall)?n.globalInstall:!0)&&([a?"i18n":Gu.name,"I18nT"].forEach(s=>e.component(s,Gu)),[Uu.name,"I18nN"].forEach(s=>e.component(s,Uu)),[Ku.name,"I18nD"].forEach(s=>e.component(s,Ku))),e.directive("t",Wy(t))}function qy(e,t,o){return{beforeCreate(){const n=Ao();if(!n)throw kt(bt.UNEXPECTED_ERROR);const a=this.$options;if(a.i18n){const r=a.i18n;if(a.__i18n&&(r.__i18n=a.__i18n),r.__root=t,this===this.$root)this.$i18n=Vu(e,r);else{r.__injectWithOption=!0,r.__extender=o.__vueI18nExtend,this.$i18n=Gs(r);const s=this.$i18n;s.__extender&&(s.__disposer=s.__extender(this.$i18n))}}else if(a.__i18n)if(this===this.$root)this.$i18n=Vu(e,a);else{this.$i18n=Gs({__i18n:a.__i18n,__injectWithOption:!0,__extender:o.__vueI18nExtend,__root:t});const r=this.$i18n;r.__extender&&(r.__disposer=r.__extender(this.$i18n))}else this.$i18n=e;a.__i18nGlobal&&Nu(t,a,a),this.$t=(...r)=>this.$i18n.t(...r),this.$rt=(...r)=>this.$i18n.rt(...r),this.$tc=(...r)=>this.$i18n.tc(...r),this.$te=(r,s)=>this.$i18n.te(r,s),this.$d=(...r)=>this.$i18n.d(...r),this.$n=(...r)=>this.$i18n.n(...r),this.$tm=r=>this.$i18n.tm(r),o.__setInstance(n,this.$i18n)},mounted(){},unmounted(){const n=Ao();if(!n)throw kt(bt.UNEXPECTED_ERROR);const a=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,a.__disposer&&(a.__disposer(),delete a.__disposer,delete a.__extender),o.__deleteInstance(n),delete this.$i18n}}}function Vu(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Tu](t.pluralizationRules||e.pluralizationRules);const o=fr(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(o).forEach(n=>e.mergeLocaleMessage(n,o[n])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}const Jy=Do("global-vue-i18n");function Xy(e={},t){const o=__VUE_I18N_LEGACY_API__&&Re(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=Re(e.globalInjection)?e.globalInjection:!0,a=__VUE_I18N_LEGACY_API__&&o?!!e.allowComposition:!0,r=new Map,[s,i]=Zy(e,o),l=Do("");function c(f){return r.get(f)||null}function u(f,w){r.set(f,w)}function p(f){r.delete(f)}{const f={get mode(){return __VUE_I18N_LEGACY_API__&&o?"legacy":"composition"},get allowComposition(){return a},async install(w,...x){if(w.__VUE_I18N_SYMBOL__=l,w.provide(w.__VUE_I18N_SYMBOL__,f),Te(x[0])){const g=x[0];f.__composerExtend=g.__composerExtend,f.__vueI18nExtend=g.__vueI18nExtend}let y=null;!o&&n&&(y=i0(w,f.global)),__VUE_I18N_FULL_INSTALL__&&Yy(w,f,...x),__VUE_I18N_LEGACY_API__&&o&&w.mixin(qy(i,i.__composer,f));const d=w.unmount;w.unmount=()=>{y&&y(),f.dispose(),d()}},get global(){return i},dispose(){s.stop()},__instances:r,__getInstance:c,__setInstance:u,__deleteInstance:p};return f}}function yt(e={}){const t=Ao();if(t==null)throw kt(bt.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw kt(bt.NOT_INSTALLED);const o=Qy(t),n=t0(o),a=Mu(t),r=e0(e,a);if(__VUE_I18N_LEGACY_API__&&o.mode==="legacy"&&!e.__useComponent){if(!o.allowComposition)throw kt(bt.NOT_AVAILABLE_IN_LEGACY_MODE);return r0(t,r,n,e)}if(r==="global")return Nu(n,e,a),n;if(r==="parent"){let l=o0(o,t,e.__useComponent);return l==null&&(l=n),l}const s=o;let i=s.__getInstance(t);if(i==null){const l=Lt({},e);"__i18n"in a&&(l.__i18n=a.__i18n),n&&(l.__root=n),i=Bs(l),s.__composerExtend&&(i[Ds]=s.__composerExtend(i)),a0(s,t,i),s.__setInstance(t,i)}return i}function Zy(e,t,o){const n=Rr();{const a=__VUE_I18N_LEGACY_API__&&t?n.run(()=>Gs(e)):n.run(()=>Bs(e));if(a==null)throw kt(bt.UNEXPECTED_ERROR);return[n,a]}}function Qy(e){{const t=Ie(e.isCE?Jy:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw kt(e.isCE?bt.NOT_INSTALLED_WITH_PROVIDE:bt.UNEXPECTED_ERROR);return t}}function e0(e,t){return ir(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function t0(e){return e.mode==="composition"?e.global:e.global.__composer}function o0(e,t,o=!1){let n=null;const a=t.root;let r=n0(t,o);for(;r!=null;){const s=e;if(e.mode==="composition")n=s.__getInstance(r);else if(__VUE_I18N_LEGACY_API__){const i=s.__getInstance(r);i!=null&&(n=i.__composer,o&&n&&!n[Pu]&&(n=null))}if(n!=null||a===r)break;r=r.parent}return n}function n0(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function a0(e,t,o){co(()=>{},t),Va(()=>{const n=o;e.__deleteInstance(t);const a=n[Ds];a&&(a(),delete n[Ds])},t)}function r0(e,t,o,n={}){const a=t==="local",r=fn(null);if(a&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw kt(bt.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const s=Re(n.inheritLocale)?n.inheritLocale:!fe(n.locale),i=de(!a||s?o.locale.value:fe(n.locale)?n.locale:En),l=de(!a||s?o.fallbackLocale.value:fe(n.fallbackLocale)||rt(n.fallbackLocale)||Te(n.fallbackLocale)||n.fallbackLocale===!1?n.fallbackLocale:i.value),c=de(fr(i.value,n)),u=de(Te(n.datetimeFormats)?n.datetimeFormats:{[i.value]:{}}),p=de(Te(n.numberFormats)?n.numberFormats:{[i.value]:{}}),f=a?o.missingWarn:Re(n.missingWarn)||Bo(n.missingWarn)?n.missingWarn:!0,w=a?o.fallbackWarn:Re(n.fallbackWarn)||Bo(n.fallbackWarn)?n.fallbackWarn:!0,x=a?o.fallbackRoot:Re(n.fallbackRoot)?n.fallbackRoot:!0,y=!!n.fallbackFormat,d=tt(n.missing)?n.missing:null,g=tt(n.postTranslation)?n.postTranslation:null,b=a?o.warnHtmlMessage:Re(n.warnHtmlMessage)?n.warnHtmlMessage:!0,h=!!n.escapeParameter,k=a?o.modifiers:Te(n.modifiers)?n.modifiers:{},$=n.pluralRules||a&&o.pluralRules;function v(){return[i.value,l.value,c.value,u.value,p.value]}const C=oe({get:()=>r.value?r.value.locale.value:i.value,set:I=>{r.value&&(r.value.locale.value=I),i.value=I}}),T=oe({get:()=>r.value?r.value.fallbackLocale.value:l.value,set:I=>{r.value&&(r.value.fallbackLocale.value=I),l.value=I}}),R=oe(()=>r.value?r.value.messages.value:c.value),H=oe(()=>u.value),Y=oe(()=>p.value);function ae(){return r.value?r.value.getPostTranslationHandler():g}function P(I){r.value&&r.value.setPostTranslationHandler(I)}function A(){return r.value?r.value.getMissingHandler():d}function M(I){r.value&&r.value.setMissingHandler(I)}function S(I){return v(),I()}function E(...I){return r.value?S(()=>Reflect.apply(r.value.t,null,[...I])):S(()=>"")}function V(...I){return r.value?Reflect.apply(r.value.rt,null,[...I]):""}function ie(...I){return r.value?S(()=>Reflect.apply(r.value.d,null,[...I])):S(()=>"")}function F(...I){return r.value?S(()=>Reflect.apply(r.value.n,null,[...I])):S(()=>"")}function ce(I){return r.value?r.value.tm(I):{}}function pe(I,z){return r.value?r.value.te(I,z):!1}function se(I){return r.value?r.value.getLocaleMessage(I):{}}function $e(I,z){r.value&&(r.value.setLocaleMessage(I,z),c.value[I]=z)}function Ee(I,z){r.value&&r.value.mergeLocaleMessage(I,z)}function Fe(I){return r.value?r.value.getDateTimeFormat(I):{}}function st(I,z){r.value&&(r.value.setDateTimeFormat(I,z),u.value[I]=z)}function Ye(I,z){r.value&&r.value.mergeDateTimeFormat(I,z)}function ft(I){return r.value?r.value.getNumberFormat(I):{}}function Ze(I,z){r.value&&(r.value.setNumberFormat(I,z),p.value[I]=z)}function dt(I,z){r.value&&r.value.mergeNumberFormat(I,z)}const L={get id(){return r.value?r.value.id:-1},locale:C,fallbackLocale:T,messages:R,datetimeFormats:H,numberFormats:Y,get inheritLocale(){return r.value?r.value.inheritLocale:s},set inheritLocale(I){r.value&&(r.value.inheritLocale=I)},get availableLocales(){return r.value?r.value.availableLocales:Object.keys(c.value)},get modifiers(){return r.value?r.value.modifiers:k},get pluralRules(){return r.value?r.value.pluralRules:$},get isGlobal(){return r.value?r.value.isGlobal:!1},get missingWarn(){return r.value?r.value.missingWarn:f},set missingWarn(I){r.value&&(r.value.missingWarn=I)},get fallbackWarn(){return r.value?r.value.fallbackWarn:w},set fallbackWarn(I){r.value&&(r.value.missingWarn=I)},get fallbackRoot(){return r.value?r.value.fallbackRoot:x},set fallbackRoot(I){r.value&&(r.value.fallbackRoot=I)},get fallbackFormat(){return r.value?r.value.fallbackFormat:y},set fallbackFormat(I){r.value&&(r.value.fallbackFormat=I)},get warnHtmlMessage(){return r.value?r.value.warnHtmlMessage:b},set warnHtmlMessage(I){r.value&&(r.value.warnHtmlMessage=I)},get escapeParameter(){return r.value?r.value.escapeParameter:h},set escapeParameter(I){r.value&&(r.value.escapeParameter=I)},t:E,getPostTranslationHandler:ae,setPostTranslationHandler:P,getMissingHandler:A,setMissingHandler:M,rt:V,d:ie,n:F,tm:ce,te:pe,getLocaleMessage:se,setLocaleMessage:$e,mergeLocaleMessage:Ee,getDateTimeFormat:Fe,setDateTimeFormat:st,mergeDateTimeFormat:Ye,getNumberFormat:ft,setNumberFormat:Ze,mergeNumberFormat:dt};function O(I){I.locale.value=i.value,I.fallbackLocale.value=l.value,Object.keys(c.value).forEach(z=>{I.mergeLocaleMessage(z,c.value[z])}),Object.keys(u.value).forEach(z=>{I.mergeDateTimeFormat(z,u.value[z])}),Object.keys(p.value).forEach(z=>{I.mergeNumberFormat(z,p.value[z])}),I.escapeParameter=h,I.fallbackFormat=y,I.fallbackRoot=x,I.fallbackWarn=w,I.missingWarn=f,I.warnHtmlMessage=b}return $l(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw kt(bt.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const I=r.value=e.proxy.$i18n.__composer;t==="global"?(i.value=I.locale.value,l.value=I.fallbackLocale.value,c.value=I.messages.value,u.value=I.datetimeFormats.value,p.value=I.numberFormats.value):a&&O(I)}),L}const s0=["locale","fallbackLocale","availableLocales"],Wu=["t","rt","d","n","tm","te"];function i0(e,t){const o=Object.create(null);return s0.forEach(a=>{const r=Object.getOwnPropertyDescriptor(t,a);if(!r)throw kt(bt.UNEXPECTED_ERROR);const s=at(r.value)?{get(){return r.value.value},set(i){r.value.value=i}}:{get(){return r.get&&r.get()}};Object.defineProperty(o,a,s)}),e.config.globalProperties.$i18n=o,Wu.forEach(a=>{const r=Object.getOwnPropertyDescriptor(t,a);if(!r||!r.value)throw kt(bt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${a}`,r)}),()=>{delete e.config.globalProperties.$i18n,Wu.forEach(a=>{delete e.config.globalProperties[`$${a}`]})}}if(By(),__INTLIFY_JIT_COMPILATION__?cu(Ny):cu(My),xy(ny),$y(au),__INTLIFY_PROD_DEVTOOLS__){const e=Co();e.__INTLIFY__=!0,py(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const l0=Object.assign({"./locales/ar/aria.json":sh,"./locales/ar/buttons.json":ih,"./locales/ar/detail.json":lh,"./locales/ar/legend.json":ch,"./locales/ar/messages.json":uh,"./locales/ar/options.json":dh,"./locales/ar/prayerLaps.json":ph,"./locales/ar/regions.json":gh,"./locales/ar/search.json":fh,"./locales/ar/tabs.json":hh,"./locales/de/aria.json":mh,"./locales/de/buttons.json":bh,"./locales/de/detail.json":yh,"./locales/de/legend.json":_h,"./locales/de/messages.json":vh,"./locales/de/options.json":kh,"./locales/de/prayerLaps.json":wh,"./locales/de/regions.json":xh,"./locales/de/search.json":$h,"./locales/de/tabs.json":Sh,"./locales/en/aria.json":Ah,"./locales/en/buttons.json":Eh,"./locales/en/detail.json":Ch,"./locales/en/legend.json":Lh,"./locales/en/messages.json":Th,"./locales/en/options.json":Ph,"./locales/en/popup.json":Mh,"./locales/en/prayerLaps.json":Nh,"./locales/en/regions.json":Ih,"./locales/en/search.json":Rh,"./locales/en/tabs.json":Fh,"./locales/es/aria.json":Oh,"./locales/es/buttons.json":Dh,"./locales/es/detail.json":Bh,"./locales/es/legend.json":Gh,"./locales/es/messages.json":jh,"./locales/es/options.json":Uh,"./locales/es/prayerLaps.json":Kh,"./locales/es/regions.json":zh,"./locales/es/search.json":Hh,"./locales/es/tabs.json":Vh,"./locales/fr/aria.json":Wh,"./locales/fr/buttons.json":Yh,"./locales/fr/detail.json":qh,"./locales/fr/legend.json":Jh,"./locales/fr/messages.json":Xh,"./locales/fr/options.json":Zh,"./locales/fr/popup.json":Qh,"./locales/fr/prayerLaps.json":em,"./locales/fr/regions.json":tm,"./locales/fr/search.json":om,"./locales/fr/tabs.json":nm,"./locales/hi/aria.json":am,"./locales/hi/buttons.json":rm,"./locales/hi/detail.json":sm,"./locales/hi/legend.json":im,"./locales/hi/messages.json":lm,"./locales/hi/options.json":cm,"./locales/hi/prayerLaps.json":um,"./locales/hi/regions.json":dm,"./locales/hi/search.json":pm,"./locales/it/aria.json":gm,"./locales/it/buttons.json":fm,"./locales/it/detail.json":hm,"./locales/it/legend.json":mm,"./locales/it/messages.json":bm,"./locales/it/options.json":ym,"./locales/it/prayerLaps.json":_m,"./locales/it/search.json":vm,"./locales/pt/aria.json":km,"./locales/pt/buttons.json":wm,"./locales/pt/detail.json":xm,"./locales/pt/legend.json":$m,"./locales/pt/messages.json":Sm,"./locales/pt/options.json":Am,"./locales/pt/prayerLaps.json":Em,"./locales/pt/regions.json":Cm,"./locales/pt/search.json":Lm,"./locales/pt/tabs.json":Tm,"./locales/ro/aria.json":Pm,"./locales/ro/buttons.json":Mm,"./locales/ro/detail.json":Nm,"./locales/ro/legend.json":Im,"./locales/ro/messages.json":Rm,"./locales/ro/options.json":Fm,"./locales/ro/prayerLaps.json":Om,"./locales/ro/search.json":Dm,"./locales/ru/aria.json":Bm,"./locales/ru/buttons.json":Gm,"./locales/ru/detail.json":jm,"./locales/ru/legend.json":Um,"./locales/ru/messages.json":Km,"./locales/ru/options.json":zm,"./locales/ru/prayerLaps.json":Hm,"./locales/ru/regions.json":Vm,"./locales/ru/search.json":Wm,"./locales/ru/tabs.json":Ym,"./locales/zh/aria.json":qm,"./locales/zh/buttons.json":Jm,"./locales/zh/detail.json":Xm,"./locales/zh/legend.json":Zm,"./locales/zh/messages.json":Qm,"./locales/zh/options.json":eb,"./locales/zh/prayerLaps.json":tb,"./locales/zh/search.json":ob}),ua={};for(const[e,t]of Object.entries(l0)){const o=e.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const[,n,a]=o;ua[n]??(ua[n]={}),ua[n][a]=t}const Yu=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"];function c0(){var o;const t=(((o=document==null?void 0:document.documentElement)==null?void 0:o.lang)||"").split("-")[0].toLowerCase();return Yu.includes(t)?t:"en"}function u0(){return Xy({legacy:!1,globalInjection:!0,locale:c0(),fallbackLocale:"en",messages:ua,missingWarn:!1,fallbackWarn:!1})}function wt(e,t){const o=t||d0(e);co(()=>{var i;const n=Ao();if(!n)return;const a=(i=n.proxy)==null?void 0:i.$el;if(!a)return;const r=a.getRootNode();if(!(r instanceof ShadowRoot)||r.querySelector(`style[data-shadow-styles="${o}"]`))return;const s=document.createElement("style");s.setAttribute("data-shadow-styles",o),s.textContent=e,r.appendChild(s)})}function d0(e){let t=0;for(let o=0;o(t==null?void 0:t.theme)==="dark"),a=oe(()=>{var d;return((d=o==null?void 0:o.value)==null?void 0:d.pinHintLabel)||"Tap a coloured dot — someone still needs prayer"}),r=de(!1),s=de(null);let i=null,l=null,c=null,u=null,p=null;function f(){r.value=!1}function w(d,g){var h;let b=d==null?void 0:d.parentElement;for(let k=0;b&&k<12;k++,b=b.parentElement){if(b===g||(h=b.classList)!=null&&h.contains("profile-loader"))return null;let $="";try{$=getComputedStyle(b).position}catch{}if($&&$!=="static"){const v=b.getBoundingClientRect();if(v.height>=120&&v.width>=160)return b}}return null}function x(){const d=s.value;if(d)try{d.style.removeProperty("--pin-hint-lift");const g=d.getBoundingClientRect();if(!g.height)return;const b=Math.round(g.bottom-window.innerHeight);b>0&&d.style.setProperty("--pin-hint-lift",b+8+"px")}catch{}}function y(d){const g=s.value;if(!g||!(d!=null&&d.querySelector))return;let b=0;try{const k=d.querySelector(".mapboxgl-ctrl-bottom-right .mapboxgl-ctrl-attrib, .mapboxgl-ctrl-bottom-right .doxa-attribution, .doxa-attribution");if(k){const $=k.getBoundingClientRect(),v=g.parentElement,C=v?v.getBoundingClientRect():null;if(b=C?Math.max($.height||0,C.bottom-$.top):$.height||0,p!==k&&typeof ResizeObserver<"u"){if(c)try{c.disconnect()}catch{}p=k,c=new ResizeObserver(()=>y(d)),c.observe(k)}}}catch{}const h=Math.min(Math.max(Math.ceil(b)||20,20),72);g.style.setProperty("--pin-hint-attrib-clear",h+"px"),x()}return co(()=>{var h,k,$;const d=Ao(),g=($=(k=(h=d==null?void 0:d.proxy)==null?void 0:h.$el)==null?void 0:k.getRootNode)==null?void 0:$.call(k);if(!g||typeof g.querySelector!="function")return;let b=0;i=setInterval(()=>{b++;const v=g.querySelector("canvas");v?(clearInterval(i),i=null,r.value=!0,lo(()=>{const C=w(v,g),T=s.value;if(C&&T&&T.parentElement!==C)try{C.appendChild(T),l=C}catch{}y(g),x();try{const R=s.value&&s.value.offsetParent||null;if(R&&typeof ResizeObserver<"u"){if(u)try{u.disconnect()}catch{}u=new ResizeObserver(()=>x()),u.observe(R)}}catch{}})):b>40&&(clearInterval(i),i=null)},300)}),uo(()=>{var d;if(i&&clearInterval(i),c){try{c.disconnect()}catch{}c=null}if(p=null,u){try{u.disconnect()}catch{}u=null}if(l&&((d=s.value)==null?void 0:d.parentElement)===l)try{l.removeChild(s.value)}catch{}l=null}),wt(` + */const Yy="9.14.5";function qy(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(Co().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(Co().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Co().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Co().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Co().__INTLIFY_PROD_DEVTOOLS__=!1)}const Jy=Ey.__EXTEND_POINT__,To=lr(Jy);To(),To(),To(),To(),To(),To(),To(),To(),To();const Lu=Qt.__EXTEND_POINT__,Dt=lr(Lu),bt={UNEXPECTED_RETURN_TYPE:Lu,INVALID_ARGUMENT:Dt(),MUST_BE_CALL_SETUP_TOP:Dt(),NOT_INSTALLED:Dt(),NOT_AVAILABLE_IN_LEGACY_MODE:Dt(),REQUIRED_VALUE:Dt(),INVALID_VALUE:Dt(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Dt(),NOT_INSTALLED_WITH_PROVIDE:Dt(),UNEXPECTED_ERROR:Dt(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Dt(),BRIDGE_SUPPORT_VUE_2_ONLY:Dt(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Dt(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Dt(),__EXTEND_POINT__:Dt()};function kt(e,...t){return An(e,null,void 0)}const Is=Do("__translateVNode"),Os=Do("__datetimeParts"),Fs=Do("__numberParts"),Tu=Do("__setPluralRules"),Pu=Do("__injectWithOption"),Ds=Do("__dispose");function ca(e){if(!He(e)||ho(e))return e;for(const t in e)if(Xt(e,t))if(!t.includes("."))He(e[t])&&ca(e[t]);else{const o=t.split("."),n=o.length-1;let a=e,r=!1;for(let s=0;s{if("locale"in i&&"resource"in i){const{locale:l,resource:u}=i;l?(s[l]=s[l]||Qe(),ur(u,s[l])):ur(u,s)}else fe(i)&&ur(JSON.parse(i),s)}),a==null&&r)for(const i in s)Xt(s,i)&&ca(s[i]);return s}function Mu(e){return e.type}function Nu(e,t,o){let n=He(t.messages)?t.messages:Qe();"__i18nGlobal"in o&&(n=fr(e.locale.value,{messages:n,__i18n:o.__i18nGlobal}));const a=Object.keys(n);a.length&&a.forEach(r=>{e.mergeLocaleMessage(r,n[r])});{if(He(t.datetimeFormats)){const r=Object.keys(t.datetimeFormats);r.length&&r.forEach(s=>{e.mergeDateTimeFormat(s,t.datetimeFormats[s])})}if(He(t.numberFormats)){const r=Object.keys(t.numberFormats);r.length&&r.forEach(s=>{e.mergeNumberFormat(s,t.numberFormats[s])})}}}function Ru(e){return We(Zn,null,e,0)}const Iu="__INTLIFY_META__",Ou=()=>[],Xy=()=>!1;let Fu=0;function Du(e){return(t,o,n,a)=>e(o,n,$o()||void 0,a)}const Zy=()=>{const e=$o();let t=null;return e&&(t=Mu(e)[Iu])?{[Iu]:t}:null};function Bs(e={},t){const{__root:o,__injectWithOption:n}=e,a=o===void 0,r=e.flatJson,s=sr?de:fn,i=!!e.translateExistCompatible;let l=De(e.inheritLocale)?e.inheritLocale:!0;const u=s(o&&l?o.locale.value:fe(e.locale)?e.locale:En),c=s(o&&l?o.fallbackLocale.value:fe(e.fallbackLocale)||it(e.fallbackLocale)||Le(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:u.value),p=s(fr(u.value,e)),g=s(Le(e.datetimeFormats)?e.datetimeFormats:{[u.value]:{}}),k=s(Le(e.numberFormats)?e.numberFormats:{[u.value]:{}});let w=o?o.missingWarn:De(e.missingWarn)||Bo(e.missingWarn)?e.missingWarn:!0,_=o?o.fallbackWarn:De(e.fallbackWarn)||Bo(e.fallbackWarn)?e.fallbackWarn:!0,d=o?o.fallbackRoot:De(e.fallbackRoot)?e.fallbackRoot:!0,h=!!e.fallbackFormat,f=nt(e.missing)?e.missing:null,m=nt(e.missing)?Du(e.missing):null,v=nt(e.postTranslation)?e.postTranslation:null,x=o?o.warnHtmlMessage:De(e.warnHtmlMessage)?e.warnHtmlMessage:!0,A=!!e.escapeParameter;const S=o?o.modifiers:Le(e.modifiers)?e.modifiers:{};let T=e.pluralRules||o&&o.pluralRules,I;I=(()=>{a&&fu(null);const G={version:Yy,locale:u.value,fallbackLocale:c.value,messages:p.value,modifiers:S,pluralRules:T,missing:m===null?void 0:m,missingWarn:w,fallbackWarn:_,fallbackFormat:h,unresolving:!0,postTranslation:v===null?void 0:v,warnHtmlMessage:x,escapeParameter:A,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};G.datetimeFormats=g.value,G.numberFormats=k.value,G.__datetimeFormatters=Le(I)?I.__datetimeFormatters:void 0,G.__numberFormatters=Le(I)?I.__numberFormatters:void 0;const Y=Dy(G);return a&&fu(Y),Y})(),la(I,u.value,c.value);function W(){return[u.value,c.value,p.value,g.value,k.value]}const re=te({get:()=>u.value,set:G=>{u.value=G,I.locale=u.value}}),P=te({get:()=>c.value,set:G=>{c.value=G,I.fallbackLocale=c.value,la(I,u.value,G)}}),$=te(()=>p.value),M=te(()=>g.value),C=te(()=>k.value);function N(){return nt(v)?v:null}function ne(G){v=G,I.postTranslation=G}function ge(){return f}function L(G){G!==null&&(m=Du(G)),f=G,I.missing=m}const ae=(G,Y,me,Ae,Ge,D)=>{W();let U;try{__INTLIFY_PROD_DEVTOOLS__,a||(I.fallbackContext=o?Fy():void 0),U=G(I)}finally{__INTLIFY_PROD_DEVTOOLS__,a||(I.fallbackContext=void 0)}if(me!=="translate exists"&>(U)&&U===gr||me==="translate exists"&&!U){const[he,ve]=Y();return o&&d?Ae(o):Ge(he)}else{if(D(U))return U;throw kt(bt.UNEXPECTED_RETURN_TYPE)}};function ie(...G){return ae(Y=>Reflect.apply(vu,null,[Y,...G]),()=>Ms(...G),"translate",Y=>Reflect.apply(Y.t,Y,[...G]),Y=>Y,Y=>fe(Y))}function le(...G){const[Y,me,Ae]=G;if(Ae&&!He(Ae))throw kt(bt.INVALID_ARGUMENT);return ie(Y,me,Lt({resolvedMessage:!0},Ae||{}))}function we(...G){return ae(Y=>Reflect.apply(xu,null,[Y,...G]),()=>Ns(...G),"datetime format",Y=>Reflect.apply(Y.d,Y,[...G]),()=>su,Y=>fe(Y))}function Me(...G){return ae(Y=>Reflect.apply($u,null,[Y,...G]),()=>Rs(...G),"number format",Y=>Reflect.apply(Y.n,Y,[...G]),()=>su,Y=>fe(Y))}function Re(G){return G.map(Y=>fe(Y)||gt(Y)||De(Y)?Ru(String(Y)):Y)}const Ie={normalize:Re,interpolate:G=>G,type:"vnode"};function Je(...G){return ae(Y=>{let me;const Ae=Y;try{Ae.processor=Ie,me=Reflect.apply(vu,null,[Ae,...G])}finally{Ae.processor=null}return me},()=>Ms(...G),"translate",Y=>Y[Is](...G),Y=>[Ru(Y)],Y=>it(Y))}function Xe(...G){return ae(Y=>Reflect.apply($u,null,[Y,...G]),()=>Rs(...G),"number format",Y=>Y[Fs](...G),Ou,Y=>fe(Y)||it(Y))}function ft(...G){return ae(Y=>Reflect.apply(xu,null,[Y,...G]),()=>Ns(...G),"datetime format",Y=>Y[Os](...G),Ou,Y=>fe(Y)||it(Y))}function E(G){T=G,I.pluralRules=T}function F(G,Y){return ae(()=>{if(!G)return!1;const me=fe(Y)?Y:u.value,Ae=X(me),Ge=I.messageResolver(Ae,G);return i?Ge!=null:ho(Ge)||Wt(Ge)||fe(Ge)},()=>[G],"translate exists",me=>Reflect.apply(me.te,me,[G,Y]),Xy,me=>De(me))}function O(G){let Y=null;const me=au(I,c.value,u.value);for(let Ae=0;Ae{l&&(u.value=G,I.locale=G,la(I,u.value,c.value))}),ct(o.fallbackLocale,G=>{l&&(c.value=G,I.fallbackLocale=G,la(I,u.value,c.value))}));const se={id:Fu,locale:re,fallbackLocale:P,get inheritLocale(){return l},set inheritLocale(G){l=G,G&&o&&(u.value=o.locale.value,c.value=o.fallbackLocale.value,la(I,u.value,c.value))},get availableLocales(){return Object.keys(p.value).sort()},messages:$,get modifiers(){return S},get pluralRules(){return T||{}},get isGlobal(){return a},get missingWarn(){return w},set missingWarn(G){w=G,I.missingWarn=w},get fallbackWarn(){return _},set fallbackWarn(G){_=G,I.fallbackWarn=_},get fallbackRoot(){return d},set fallbackRoot(G){d=G},get fallbackFormat(){return h},set fallbackFormat(G){h=G,I.fallbackFormat=h},get warnHtmlMessage(){return x},set warnHtmlMessage(G){x=G,I.warnHtmlMessage=G},get escapeParameter(){return A},set escapeParameter(G){A=G,I.escapeParameter=G},t:ie,getLocaleMessage:X,setLocaleMessage:J,mergeLocaleMessage:Z,getPostTranslationHandler:N,setPostTranslationHandler:ne,getMissingHandler:ge,setMissingHandler:L,[Tu]:E};return se.datetimeFormats=M,se.numberFormats=C,se.rt=le,se.te=F,se.tm=K,se.d=we,se.n=Me,se.getDateTimeFormat=Q,se.setDateTimeFormat=b,se.mergeDateTimeFormat=y,se.getNumberFormat=B,se.setNumberFormat=V,se.mergeNumberFormat=ue,se[Pu]=n,se[Is]=Je,se[Os]=ft,se[Fs]=Xe,se}function Qy(e){const t=fe(e.locale)?e.locale:En,o=fe(e.fallbackLocale)||it(e.fallbackLocale)||Le(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,n=nt(e.missing)?e.missing:void 0,a=De(e.silentTranslationWarn)||Bo(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,r=De(e.silentFallbackWarn)||Bo(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,s=De(e.fallbackRoot)?e.fallbackRoot:!0,i=!!e.formatFallbackMessages,l=Le(e.modifiers)?e.modifiers:{},u=e.pluralizationRules,c=nt(e.postTranslation)?e.postTranslation:void 0,p=fe(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,g=!!e.escapeParameterHtml,k=De(e.sync)?e.sync:!0;let w=e.messages;if(Le(e.sharedMessages)){const A=e.sharedMessages;w=Object.keys(A).reduce((T,I)=>{const H=T[I]||(T[I]={});return Lt(H,A[I]),T},w||{})}const{__i18n:_,__root:d,__injectWithOption:h}=e,f=e.datetimeFormats,m=e.numberFormats,v=e.flatJson,x=e.translateExistCompatible;return{locale:t,fallbackLocale:o,messages:w,flatJson:v,datetimeFormats:f,numberFormats:m,missing:n,missingWarn:a,fallbackWarn:r,fallbackRoot:s,fallbackFormat:i,modifiers:l,pluralRules:u,postTranslation:c,warnHtmlMessage:p,escapeParameter:g,messageResolver:e.messageResolver,inheritLocale:k,translateExistCompatible:x,__i18n:_,__root:d,__injectWithOption:h}}function Gs(e={},t){{const o=Bs(Qy(e)),{__extender:n}=e,a={id:o.id,get locale(){return o.locale.value},set locale(r){o.locale.value=r},get fallbackLocale(){return o.fallbackLocale.value},set fallbackLocale(r){o.fallbackLocale.value=r},get messages(){return o.messages.value},get datetimeFormats(){return o.datetimeFormats.value},get numberFormats(){return o.numberFormats.value},get availableLocales(){return o.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(r){},get missing(){return o.getMissingHandler()},set missing(r){o.setMissingHandler(r)},get silentTranslationWarn(){return De(o.missingWarn)?!o.missingWarn:o.missingWarn},set silentTranslationWarn(r){o.missingWarn=De(r)?!r:r},get silentFallbackWarn(){return De(o.fallbackWarn)?!o.fallbackWarn:o.fallbackWarn},set silentFallbackWarn(r){o.fallbackWarn=De(r)?!r:r},get modifiers(){return o.modifiers},get formatFallbackMessages(){return o.fallbackFormat},set formatFallbackMessages(r){o.fallbackFormat=r},get postTranslation(){return o.getPostTranslationHandler()},set postTranslation(r){o.setPostTranslationHandler(r)},get sync(){return o.inheritLocale},set sync(r){o.inheritLocale=r},get warnHtmlInMessage(){return o.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(r){o.warnHtmlMessage=r!=="off"},get escapeParameterHtml(){return o.escapeParameter},set escapeParameterHtml(r){o.escapeParameter=r},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(r){},get pluralizationRules(){return o.pluralRules||{}},__composer:o,t(...r){const[s,i,l]=r,u={};let c=null,p=null;if(!fe(s))throw kt(bt.INVALID_ARGUMENT);const g=s;return fe(i)?u.locale=i:it(i)?c=i:Le(i)&&(p=i),it(l)?c=l:Le(l)&&(p=l),Reflect.apply(o.t,o,[g,c||p||{},u])},rt(...r){return Reflect.apply(o.rt,o,[...r])},tc(...r){const[s,i,l]=r,u={plural:1};let c=null,p=null;if(!fe(s))throw kt(bt.INVALID_ARGUMENT);const g=s;return fe(i)?u.locale=i:gt(i)?u.plural=i:it(i)?c=i:Le(i)&&(p=i),fe(l)?u.locale=l:it(l)?c=l:Le(l)&&(p=l),Reflect.apply(o.t,o,[g,c||p||{},u])},te(r,s){return o.te(r,s)},tm(r){return o.tm(r)},getLocaleMessage(r){return o.getLocaleMessage(r)},setLocaleMessage(r,s){o.setLocaleMessage(r,s)},mergeLocaleMessage(r,s){o.mergeLocaleMessage(r,s)},d(...r){return Reflect.apply(o.d,o,[...r])},getDateTimeFormat(r){return o.getDateTimeFormat(r)},setDateTimeFormat(r,s){o.setDateTimeFormat(r,s)},mergeDateTimeFormat(r,s){o.mergeDateTimeFormat(r,s)},n(...r){return Reflect.apply(o.n,o,[...r])},getNumberFormat(r){return o.getNumberFormat(r)},setNumberFormat(r,s){o.setNumberFormat(r,s)},mergeNumberFormat(r,s){o.mergeNumberFormat(r,s)},getChoiceIndex(r,s){return-1}};return a.__extender=n,a}}const js={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function e0({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((n,a)=>[...n,...a.type===Pe?a.children:[a]],[]):t.reduce((o,n)=>{const a=e[n];return a&&(o[n]=a()),o},Qe())}function Bu(e){return Pe}const Gu=Yn({name:"i18n-t",props:Lt({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>gt(e)||!isNaN(e)}},js),setup(e,t){const{slots:o,attrs:n}=t,a=e.i18n||yt({useScope:e.scope,__useComponent:!0});return()=>{const r=Object.keys(o).filter(p=>p!=="_"),s=Qe();e.locale&&(s.locale=e.locale),e.plural!==void 0&&(s.plural=fe(e.plural)?+e.plural:e.plural);const i=e0(t,r),l=a[Is](e.keypath,i,s),u=Lt(Qe(),n),c=fe(e.tag)||He(e.tag)?e.tag:Bu();return ic(c,u,l)}}});function t0(e){return it(e)&&!fe(e[0])}function ju(e,t,o,n){const{slots:a,attrs:r}=t;return()=>{const s={part:!0};let i=Qe();e.locale&&(s.locale=e.locale),fe(e.format)?s.key=e.format:He(e.format)&&(fe(e.format.key)&&(s.key=e.format.key),i=Object.keys(e.format).reduce((g,k)=>o.includes(k)?Lt(Qe(),g,{[k]:e.format[k]}):g,Qe()));const l=n(e.value,s,i);let u=[s.key];it(l)?u=l.map((g,k)=>{const w=a[g.type],_=w?w({[g.type]:g.value,index:k,parts:l}):[g.value];return t0(_)&&(_[0].key=`${g.type}-${k}`),_}):fe(l)&&(u=[l]);const c=Lt(Qe(),r),p=fe(e.tag)||He(e.tag)?e.tag:Bu();return ic(p,c,u)}}const Uu=Yn({name:"i18n-n",props:Lt({value:{type:Number,required:!0},format:{type:[String,Object]}},js),setup(e,t){const o=e.i18n||yt({useScope:e.scope,__useComponent:!0});return ju(e,t,Eu,(...n)=>o[Fs](...n))}}),Ku=Yn({name:"i18n-d",props:Lt({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},js),setup(e,t){const o=e.i18n||yt({useScope:e.scope,__useComponent:!0});return ju(e,t,Au,(...n)=>o[Os](...n))}});function o0(e,t){const o=e;if(e.mode==="composition")return o.__getInstance(t)||e.global;{const n=o.__getInstance(t);return n!=null?n.__composer:e.global.__composer}}function n0(e){const t=s=>{const{instance:i,modifiers:l,value:u}=s;if(!i||!i.$)throw kt(bt.UNEXPECTED_ERROR);const c=o0(e,i.$),p=zu(u);return[Reflect.apply(c.t,c,[...Hu(p)]),c]};return{created:(s,i)=>{const[l,u]=t(i);sr&&e.global===u&&(s.__i18nWatcher=ct(u.locale,()=>{i.instance&&i.instance.$forceUpdate()})),s.__composer=u,s.textContent=l},unmounted:s=>{sr&&s.__i18nWatcher&&(s.__i18nWatcher(),s.__i18nWatcher=void 0,delete s.__i18nWatcher),s.__composer&&(s.__composer=void 0,delete s.__composer)},beforeUpdate:(s,{value:i})=>{if(s.__composer){const l=s.__composer,u=zu(i);s.textContent=Reflect.apply(l.t,l,[...Hu(u)])}},getSSRProps:s=>{const[i]=t(s);return{textContent:i}}}}function zu(e){if(fe(e))return{path:e};if(Le(e)){if(!("path"in e))throw kt(bt.REQUIRED_VALUE,"path");return e}else throw kt(bt.INVALID_VALUE)}function Hu(e){const{path:t,locale:o,args:n,choice:a,plural:r}=e,s={},i=n||{};return fe(o)&&(s.locale=o),gt(a)&&(s.plural=a),gt(r)&&(s.plural=r),[t,i,s]}function a0(e,t,...o){const n=Le(o[0])?o[0]:{},a=!!n.useI18nComponentName;(De(n.globalInstall)?n.globalInstall:!0)&&([a?"i18n":Gu.name,"I18nT"].forEach(s=>e.component(s,Gu)),[Uu.name,"I18nN"].forEach(s=>e.component(s,Uu)),[Ku.name,"I18nD"].forEach(s=>e.component(s,Ku))),e.directive("t",n0(t))}function r0(e,t,o){return{beforeCreate(){const n=$o();if(!n)throw kt(bt.UNEXPECTED_ERROR);const a=this.$options;if(a.i18n){const r=a.i18n;if(a.__i18n&&(r.__i18n=a.__i18n),r.__root=t,this===this.$root)this.$i18n=Vu(e,r);else{r.__injectWithOption=!0,r.__extender=o.__vueI18nExtend,this.$i18n=Gs(r);const s=this.$i18n;s.__extender&&(s.__disposer=s.__extender(this.$i18n))}}else if(a.__i18n)if(this===this.$root)this.$i18n=Vu(e,a);else{this.$i18n=Gs({__i18n:a.__i18n,__injectWithOption:!0,__extender:o.__vueI18nExtend,__root:t});const r=this.$i18n;r.__extender&&(r.__disposer=r.__extender(this.$i18n))}else this.$i18n=e;a.__i18nGlobal&&Nu(t,a,a),this.$t=(...r)=>this.$i18n.t(...r),this.$rt=(...r)=>this.$i18n.rt(...r),this.$tc=(...r)=>this.$i18n.tc(...r),this.$te=(r,s)=>this.$i18n.te(r,s),this.$d=(...r)=>this.$i18n.d(...r),this.$n=(...r)=>this.$i18n.n(...r),this.$tm=r=>this.$i18n.tm(r),o.__setInstance(n,this.$i18n)},mounted(){},unmounted(){const n=$o();if(!n)throw kt(bt.UNEXPECTED_ERROR);const a=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,a.__disposer&&(a.__disposer(),delete a.__disposer,delete a.__extender),o.__deleteInstance(n),delete this.$i18n}}}function Vu(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Tu](t.pluralizationRules||e.pluralizationRules);const o=fr(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(o).forEach(n=>e.mergeLocaleMessage(n,o[n])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}const s0=Do("global-vue-i18n");function i0(e={},t){const o=__VUE_I18N_LEGACY_API__&&De(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=De(e.globalInjection)?e.globalInjection:!0,a=__VUE_I18N_LEGACY_API__&&o?!!e.allowComposition:!0,r=new Map,[s,i]=l0(e,o),l=Do("");function u(g){return r.get(g)||null}function c(g,k){r.set(g,k)}function p(g){r.delete(g)}{const g={get mode(){return __VUE_I18N_LEGACY_API__&&o?"legacy":"composition"},get allowComposition(){return a},async install(k,...w){if(k.__VUE_I18N_SYMBOL__=l,k.provide(k.__VUE_I18N_SYMBOL__,g),Le(w[0])){const h=w[0];g.__composerExtend=h.__composerExtend,g.__vueI18nExtend=h.__vueI18nExtend}let _=null;!o&&n&&(_=b0(k,g.global)),__VUE_I18N_FULL_INSTALL__&&a0(k,g,...w),__VUE_I18N_LEGACY_API__&&o&&k.mixin(r0(i,i.__composer,g));const d=k.unmount;k.unmount=()=>{_&&_(),g.dispose(),d()}},get global(){return i},dispose(){s.stop()},__instances:r,__getInstance:u,__setInstance:c,__deleteInstance:p};return g}}function yt(e={}){const t=$o();if(t==null)throw kt(bt.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw kt(bt.NOT_INSTALLED);const o=c0(t),n=d0(o),a=Mu(t),r=u0(e,a);if(__VUE_I18N_LEGACY_API__&&o.mode==="legacy"&&!e.__useComponent){if(!o.allowComposition)throw kt(bt.NOT_AVAILABLE_IN_LEGACY_MODE);return h0(t,r,n,e)}if(r==="global")return Nu(n,e,a),n;if(r==="parent"){let l=p0(o,t,e.__useComponent);return l==null&&(l=n),l}const s=o;let i=s.__getInstance(t);if(i==null){const l=Lt({},e);"__i18n"in a&&(l.__i18n=a.__i18n),n&&(l.__root=n),i=Bs(l),s.__composerExtend&&(i[Ds]=s.__composerExtend(i)),f0(s,t,i),s.__setInstance(t,i)}return i}function l0(e,t,o){const n=Ir();{const a=__VUE_I18N_LEGACY_API__&&t?n.run(()=>Gs(e)):n.run(()=>Bs(e));if(a==null)throw kt(bt.UNEXPECTED_ERROR);return[n,a]}}function c0(e){{const t=Fe(e.isCE?s0:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw kt(e.isCE?bt.NOT_INSTALLED_WITH_PROVIDE:bt.UNEXPECTED_ERROR);return t}}function u0(e,t){return ir(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function d0(e){return e.mode==="composition"?e.global:e.global.__composer}function p0(e,t,o=!1){let n=null;const a=t.root;let r=g0(t,o);for(;r!=null;){const s=e;if(e.mode==="composition")n=s.__getInstance(r);else if(__VUE_I18N_LEGACY_API__){const i=s.__getInstance(r);i!=null&&(n=i.__composer,o&&n&&!n[Pu]&&(n=null))}if(n!=null||a===r)break;r=r.parent}return n}function g0(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function f0(e,t,o){co(()=>{},t),Va(()=>{const n=o;e.__deleteInstance(t);const a=n[Ds];a&&(a(),delete n[Ds])},t)}function h0(e,t,o,n={}){const a=t==="local",r=fn(null);if(a&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw kt(bt.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const s=De(n.inheritLocale)?n.inheritLocale:!fe(n.locale),i=de(!a||s?o.locale.value:fe(n.locale)?n.locale:En),l=de(!a||s?o.fallbackLocale.value:fe(n.fallbackLocale)||it(n.fallbackLocale)||Le(n.fallbackLocale)||n.fallbackLocale===!1?n.fallbackLocale:i.value),u=de(fr(i.value,n)),c=de(Le(n.datetimeFormats)?n.datetimeFormats:{[i.value]:{}}),p=de(Le(n.numberFormats)?n.numberFormats:{[i.value]:{}}),g=a?o.missingWarn:De(n.missingWarn)||Bo(n.missingWarn)?n.missingWarn:!0,k=a?o.fallbackWarn:De(n.fallbackWarn)||Bo(n.fallbackWarn)?n.fallbackWarn:!0,w=a?o.fallbackRoot:De(n.fallbackRoot)?n.fallbackRoot:!0,_=!!n.fallbackFormat,d=nt(n.missing)?n.missing:null,h=nt(n.postTranslation)?n.postTranslation:null,f=a?o.warnHtmlMessage:De(n.warnHtmlMessage)?n.warnHtmlMessage:!0,m=!!n.escapeParameter,v=a?o.modifiers:Le(n.modifiers)?n.modifiers:{},x=n.pluralRules||a&&o.pluralRules;function A(){return[i.value,l.value,u.value,c.value,p.value]}const S=te({get:()=>r.value?r.value.locale.value:i.value,set:O=>{r.value&&(r.value.locale.value=O),i.value=O}}),T=te({get:()=>r.value?r.value.fallbackLocale.value:l.value,set:O=>{r.value&&(r.value.fallbackLocale.value=O),l.value=O}}),I=te(()=>r.value?r.value.messages.value:u.value),H=te(()=>c.value),W=te(()=>p.value);function re(){return r.value?r.value.getPostTranslationHandler():h}function P(O){r.value&&r.value.setPostTranslationHandler(O)}function $(){return r.value?r.value.getMissingHandler():d}function M(O){r.value&&r.value.setMissingHandler(O)}function C(O){return A(),O()}function N(...O){return r.value?C(()=>Reflect.apply(r.value.t,null,[...O])):C(()=>"")}function ne(...O){return r.value?Reflect.apply(r.value.rt,null,[...O]):""}function ge(...O){return r.value?C(()=>Reflect.apply(r.value.d,null,[...O])):C(()=>"")}function L(...O){return r.value?C(()=>Reflect.apply(r.value.n,null,[...O])):C(()=>"")}function ae(O){return r.value?r.value.tm(O):{}}function ie(O,K){return r.value?r.value.te(O,K):!1}function le(O){return r.value?r.value.getLocaleMessage(O):{}}function we(O,K){r.value&&(r.value.setLocaleMessage(O,K),u.value[O]=K)}function Me(O,K){r.value&&r.value.mergeLocaleMessage(O,K)}function Re(O){return r.value?r.value.getDateTimeFormat(O):{}}function Oe(O,K){r.value&&(r.value.setDateTimeFormat(O,K),c.value[O]=K)}function Ie(O,K){r.value&&r.value.mergeDateTimeFormat(O,K)}function Je(O){return r.value?r.value.getNumberFormat(O):{}}function Xe(O,K){r.value&&(r.value.setNumberFormat(O,K),p.value[O]=K)}function ft(O,K){r.value&&r.value.mergeNumberFormat(O,K)}const E={get id(){return r.value?r.value.id:-1},locale:S,fallbackLocale:T,messages:I,datetimeFormats:H,numberFormats:W,get inheritLocale(){return r.value?r.value.inheritLocale:s},set inheritLocale(O){r.value&&(r.value.inheritLocale=O)},get availableLocales(){return r.value?r.value.availableLocales:Object.keys(u.value)},get modifiers(){return r.value?r.value.modifiers:v},get pluralRules(){return r.value?r.value.pluralRules:x},get isGlobal(){return r.value?r.value.isGlobal:!1},get missingWarn(){return r.value?r.value.missingWarn:g},set missingWarn(O){r.value&&(r.value.missingWarn=O)},get fallbackWarn(){return r.value?r.value.fallbackWarn:k},set fallbackWarn(O){r.value&&(r.value.missingWarn=O)},get fallbackRoot(){return r.value?r.value.fallbackRoot:w},set fallbackRoot(O){r.value&&(r.value.fallbackRoot=O)},get fallbackFormat(){return r.value?r.value.fallbackFormat:_},set fallbackFormat(O){r.value&&(r.value.fallbackFormat=O)},get warnHtmlMessage(){return r.value?r.value.warnHtmlMessage:f},set warnHtmlMessage(O){r.value&&(r.value.warnHtmlMessage=O)},get escapeParameter(){return r.value?r.value.escapeParameter:m},set escapeParameter(O){r.value&&(r.value.escapeParameter=O)},t:N,getPostTranslationHandler:re,setPostTranslationHandler:P,getMissingHandler:$,setMissingHandler:M,rt:ne,d:ge,n:L,tm:ae,te:ie,getLocaleMessage:le,setLocaleMessage:we,mergeLocaleMessage:Me,getDateTimeFormat:Re,setDateTimeFormat:Oe,mergeDateTimeFormat:Ie,getNumberFormat:Je,setNumberFormat:Xe,mergeNumberFormat:ft};function F(O){O.locale.value=i.value,O.fallbackLocale.value=l.value,Object.keys(u.value).forEach(K=>{O.mergeLocaleMessage(K,u.value[K])}),Object.keys(c.value).forEach(K=>{O.mergeDateTimeFormat(K,c.value[K])}),Object.keys(p.value).forEach(K=>{O.mergeNumberFormat(K,p.value[K])}),O.escapeParameter=m,O.fallbackFormat=_,O.fallbackRoot=w,O.fallbackWarn=k,O.missingWarn=g,O.warnHtmlMessage=f}return Al(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw kt(bt.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const O=r.value=e.proxy.$i18n.__composer;t==="global"?(i.value=O.locale.value,l.value=O.fallbackLocale.value,u.value=O.messages.value,c.value=O.datetimeFormats.value,p.value=O.numberFormats.value):a&&F(O)}),E}const m0=["locale","fallbackLocale","availableLocales"],Wu=["t","rt","d","n","tm","te"];function b0(e,t){const o=Object.create(null);return m0.forEach(a=>{const r=Object.getOwnPropertyDescriptor(t,a);if(!r)throw kt(bt.UNEXPECTED_ERROR);const s=st(r.value)?{get(){return r.value.value},set(i){r.value.value=i}}:{get(){return r.get&&r.get()}};Object.defineProperty(o,a,s)}),e.config.globalProperties.$i18n=o,Wu.forEach(a=>{const r=Object.getOwnPropertyDescriptor(t,a);if(!r||!r.value)throw kt(bt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${a}`,r)}),()=>{delete e.config.globalProperties.$i18n,Wu.forEach(a=>{delete e.config.globalProperties[`$${a}`]})}}if(qy(),__INTLIFY_JIT_COMPILATION__?cu(Ky):cu(Uy),Ny(gy),Ry(au),__INTLIFY_PROD_DEVTOOLS__){const e=Co();e.__INTLIFY__=!0,wy(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const y0=Object.assign({"./locales/ar/aria.json":mh,"./locales/ar/buttons.json":bh,"./locales/ar/detail.json":yh,"./locales/ar/legend.json":_h,"./locales/ar/messages.json":vh,"./locales/ar/options.json":kh,"./locales/ar/prayerLaps.json":wh,"./locales/ar/regions.json":xh,"./locales/ar/search.json":Ah,"./locales/ar/tabs.json":Sh,"./locales/de/aria.json":$h,"./locales/de/buttons.json":Eh,"./locales/de/detail.json":Ch,"./locales/de/legend.json":Lh,"./locales/de/messages.json":Th,"./locales/de/options.json":Ph,"./locales/de/prayerLaps.json":Mh,"./locales/de/regions.json":Nh,"./locales/de/search.json":Rh,"./locales/de/tabs.json":Ih,"./locales/en/aria.json":Oh,"./locales/en/buttons.json":Fh,"./locales/en/detail.json":Dh,"./locales/en/legend.json":Bh,"./locales/en/messages.json":Gh,"./locales/en/options.json":jh,"./locales/en/popup.json":Uh,"./locales/en/prayerLaps.json":Kh,"./locales/en/regions.json":zh,"./locales/en/search.json":Hh,"./locales/en/tabs.json":Vh,"./locales/es/aria.json":Wh,"./locales/es/buttons.json":Yh,"./locales/es/detail.json":qh,"./locales/es/legend.json":Jh,"./locales/es/messages.json":Xh,"./locales/es/options.json":Zh,"./locales/es/prayerLaps.json":Qh,"./locales/es/regions.json":em,"./locales/es/search.json":tm,"./locales/es/tabs.json":om,"./locales/fr/aria.json":nm,"./locales/fr/buttons.json":am,"./locales/fr/detail.json":rm,"./locales/fr/legend.json":sm,"./locales/fr/messages.json":im,"./locales/fr/options.json":lm,"./locales/fr/popup.json":cm,"./locales/fr/prayerLaps.json":um,"./locales/fr/regions.json":dm,"./locales/fr/search.json":pm,"./locales/fr/tabs.json":gm,"./locales/hi/aria.json":fm,"./locales/hi/buttons.json":hm,"./locales/hi/detail.json":mm,"./locales/hi/legend.json":bm,"./locales/hi/messages.json":ym,"./locales/hi/options.json":_m,"./locales/hi/prayerLaps.json":vm,"./locales/hi/regions.json":km,"./locales/hi/search.json":wm,"./locales/it/aria.json":xm,"./locales/it/buttons.json":Am,"./locales/it/detail.json":Sm,"./locales/it/legend.json":$m,"./locales/it/messages.json":Em,"./locales/it/options.json":Cm,"./locales/it/prayerLaps.json":Lm,"./locales/it/search.json":Tm,"./locales/pt/aria.json":Pm,"./locales/pt/buttons.json":Mm,"./locales/pt/detail.json":Nm,"./locales/pt/legend.json":Rm,"./locales/pt/messages.json":Im,"./locales/pt/options.json":Om,"./locales/pt/prayerLaps.json":Fm,"./locales/pt/regions.json":Dm,"./locales/pt/search.json":Bm,"./locales/pt/tabs.json":Gm,"./locales/ro/aria.json":jm,"./locales/ro/buttons.json":Um,"./locales/ro/detail.json":Km,"./locales/ro/legend.json":zm,"./locales/ro/messages.json":Hm,"./locales/ro/options.json":Vm,"./locales/ro/prayerLaps.json":Wm,"./locales/ro/search.json":Ym,"./locales/ru/aria.json":qm,"./locales/ru/buttons.json":Jm,"./locales/ru/detail.json":Xm,"./locales/ru/legend.json":Zm,"./locales/ru/messages.json":Qm,"./locales/ru/options.json":eb,"./locales/ru/prayerLaps.json":tb,"./locales/ru/regions.json":ob,"./locales/ru/search.json":nb,"./locales/ru/tabs.json":ab,"./locales/zh/aria.json":rb,"./locales/zh/buttons.json":sb,"./locales/zh/detail.json":ib,"./locales/zh/legend.json":lb,"./locales/zh/messages.json":cb,"./locales/zh/options.json":ub,"./locales/zh/prayerLaps.json":db,"./locales/zh/search.json":pb}),ua={};for(const[e,t]of Object.entries(y0)){const o=e.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const[,n,a]=o;ua[n]??(ua[n]={}),ua[n][a]=t}const Yu=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"];function _0(){var o;const t=(((o=document==null?void 0:document.documentElement)==null?void 0:o.lang)||"").split("-")[0].toLowerCase();return Yu.includes(t)?t:"en"}function v0(){return i0({legacy:!1,globalInjection:!0,locale:_0(),fallbackLocale:"en",messages:ua,missingWarn:!1,fallbackWarn:!1})}function wt(e,t){const o=t||k0(e);co(()=>{var i;const n=$o();if(!n)return;const a=(i=n.proxy)==null?void 0:i.$el;if(!a)return;const r=a.getRootNode();if(!(r instanceof ShadowRoot)||r.querySelector(`style[data-shadow-styles="${o}"]`))return;const s=document.createElement("style");s.setAttribute("data-shadow-styles",o),s.textContent=e,r.appendChild(s)})}function k0(e){let t=0;for(let o=0;o(t==null?void 0:t.theme)==="dark"),a=te(()=>{var d;return((d=o==null?void 0:o.value)==null?void 0:d.pinHintLabel)||"Tap a coloured dot — someone still needs prayer"}),r=de(!1),s=de(null);let i=null,l=null,u=null,c=null,p=null;function g(){r.value=!1}function k(d,h){var m;let f=d==null?void 0:d.parentElement;for(let v=0;f&&v<12;v++,f=f.parentElement){if(f===h||(m=f.classList)!=null&&m.contains("profile-loader"))return null;let x="";try{x=getComputedStyle(f).position}catch{}if(x&&x!=="static"){const A=f.getBoundingClientRect();if(A.height>=120&&A.width>=160)return f}}return null}function w(){const d=s.value;if(d)try{d.style.removeProperty("--pin-hint-lift");const h=d.getBoundingClientRect();if(!h.height)return;const f=Math.round(h.bottom-window.innerHeight);f>0&&d.style.setProperty("--pin-hint-lift",f+8+"px")}catch{}}function _(d){const h=s.value;if(!h||!(d!=null&&d.querySelector))return;let f=0;try{const v=d.querySelector(".mapboxgl-ctrl-bottom-right .mapboxgl-ctrl-attrib, .mapboxgl-ctrl-bottom-right .doxa-attribution, .doxa-attribution");if(v){const x=v.getBoundingClientRect(),A=h.parentElement,S=A?A.getBoundingClientRect():null;if(f=S?Math.max(x.height||0,S.bottom-x.top):x.height||0,p!==v&&typeof ResizeObserver<"u"){if(u)try{u.disconnect()}catch{}p=v,u=new ResizeObserver(()=>_(d)),u.observe(v)}}}catch{}const m=Math.min(Math.max(Math.ceil(f)||20,20),72);h.style.setProperty("--pin-hint-attrib-clear",m+"px"),w()}return co(()=>{var m,v,x;const d=$o(),h=(x=(v=(m=d==null?void 0:d.proxy)==null?void 0:m.$el)==null?void 0:v.getRootNode)==null?void 0:x.call(v);if(!h||typeof h.querySelector!="function")return;let f=0;i=setInterval(()=>{f++;const A=h.querySelector("canvas");A?(clearInterval(i),i=null,r.value=!0,lo(()=>{const S=k(A,h),T=s.value;if(S&&T&&T.parentElement!==S)try{S.appendChild(T),l=S}catch{}_(h),w();try{const I=s.value&&s.value.offsetParent||null;if(I&&typeof ResizeObserver<"u"){if(c)try{c.disconnect()}catch{}c=new ResizeObserver(()=>w()),c.observe(I)}}catch{}})):f>40&&(clearInterval(i),i=null)},300)}),uo(()=>{var d;if(i&&clearInterval(i),u){try{u.disconnect()}catch{}u=null}if(p=null,c){try{c.disconnect()}catch{}c=null}if(l&&((d=s.value)==null?void 0:d.parentElement)===l)try{l.removeChild(s.value)}catch{}l=null}),wt(` .pin-hint { position: absolute; left: 50%; bottom: calc(var(--pin-hint-attrib-clear, 20px) + 12px + var(--pin-hint-lift, 0px)); transform: translateX(-50%); z-index: 2147482000; pointer-events: none; @@ -69,7 +69,7 @@ @media (prefers-reduced-motion: reduce) { .pin-hint, .pin-hint-pill, .pin-hint-dot::after { animation: none !important; } } -`,"pin-hint"),(d,g)=>r.value?(K(),te("div",{key:0,ref_key:"hintEl",ref:s,class:Ne(["pin-hint",{dark:n.value}]),role:"status"},[N("span",p0,[g[0]||(g[0]=N("span",{class:"pin-hint-dot","aria-hidden":"true"},null,-1)),mt(" "+ge(a.value)+" ",1),N("button",{class:"pin-hint-x",type:"button","aria-label":"Dismiss hint",onClick:f},"×")])],2)):ye("",!0)}},f0=!1;let h0=0;const m0=vs("ui",{state:()=>({_storeInstanceId:++h0,theme:"light",colorScheme:"default",reducedMotion:!1,highContrast:!1,activeTab:"doxa-regions",sidebarCollapsed:!1,mobileMenuOpen:!1,legendState:"collapsed",_customLegendHeight:null,searchMode:!1,hamburgerMenuOpen:!1,legendMode:"prayer",prayerFilter:null,engagementFilter:null,adoptionFilter:null,religionFilter:null,selectedPeopleGroup:null,breakpoint:"desktop",windowSize:{width:window.innerWidth,height:window.innerHeight},toasts:[],nextToastId:1,toastDuration:5e3,openModals:[],modalData:new Map,isGlobalLoading:!1,globalLoadingMessage:"Loading...",loadingStates:new Map,interactionHistory:[],maxHistoryLength:20,keyboardShortcutsEnabled:!0,screenReaderAnnouncement:"",focusTrapActive:!1,debugMode:!1,showPerformanceOverlay:!1}),getters:{isDarkTheme:e=>!1,isMobile:e=>e.breakpoint==="mobile",isTablet:e=>e.breakpoint==="tablet",isDesktop:e=>e.breakpoint==="desktop"||e.breakpoint==="wide",legendHeight:e=>e._customLegendHeight?e._customLegendHeight:e.legendState==="collapsed"?"48px":e.legendState==="open"?"30%":e.legendState==="fullyOpen"?"calc(100% - 80px)":"48px",caretRotation:e=>e.legendState==="collapsed"?0:90,showPullTab:e=>e.legendState==="open"||e.legendState==="fullyOpen",getToastsByType:e=>t=>e.toasts.filter(o=>o.type===t),hasOpenModal:e=>e.openModals.length>0,topModal:e=>e.openModals.length===0?null:e.openModals[e.openModals.length-1],isModalOpen:e=>t=>e.openModals.includes(t),isAnyLoading:e=>e.isGlobalLoading||e.loadingStates.size>0,isLoading:e=>t=>e.loadingStates.get(t)||!1},actions:{setTheme(e){if(!["light","dark","auto"].includes(e))return;e="light",this.theme=e;const o=this.isDarkTheme;document.documentElement.setAttribute("data-theme",o?"dark":"light");try{localStorage.setItem("theme",e)}catch{}},toggleTheme(){const e=this.theme==="light"?"dark":"light";this.setTheme(e)},setColorScheme(e){this.colorScheme=e,document.documentElement.setAttribute("data-color-scheme",e)},toggleReducedMotion(){this.reducedMotion=!this.reducedMotion,document.documentElement.setAttribute("data-reduced-motion",this.reducedMotion)},toggleHighContrast(){this.highContrast=!this.highContrast,document.documentElement.setAttribute("data-high-contrast",this.highContrast)},setActiveTab(e){this.activeTab=e,this.addToHistory({type:"tab-change",tabId:e,timestamp:Date.now()})},toggleSidebar(){this.sidebarCollapsed=!this.sidebarCollapsed},openMobileMenu(){this.mobileMenuOpen=!0},closeMobileMenu(){this.mobileMenuOpen=!1},setLegendMode(e){["prayer","detail"].includes(e)&&(this.legendMode=e)},setPrayerFilter(e){[null,"noPrayer","hasPrayer","fullPrayer"].includes(e)&&(this.prayerFilter=e)},setEngagementFilter(e){[null,"notEngaged","hasEngagement"].includes(e)&&(this.engagementFilter=e)},setAdoptionFilter(e){[null,"notAdopted","hasAdoption"].includes(e)&&(this.adoptionFilter=e)},setReligionFilter(e){[null,"C","M","H","B","E","J","S","N","O","U"].includes(e)&&(this.religionFilter=e)},selectPeopleGroup(e){this.selectedPeopleGroup=e,e?(this._legendStateBeforeDetail=this.legendState,this.legendState="open",this._customLegendHeight=null,this.setLegendMode("detail")):(this.legendState=this._legendStateBeforeDetail||"open",this._customLegendHeight=null,this.setLegendMode("prayer"))},setLegendState(e){["collapsed","open","fullyOpen"].includes(e)&&(this.legendState=e)},toggleSearchMode(){this.searchMode=!this.searchMode},setSearchMode(e){this.searchMode=e},toggleHamburgerMenu(){this.hamburgerMenuOpen=!this.hamburgerMenuOpen},updateBreakpoint(e){let t;e<768?t="mobile":e<1024?t="tablet":e<1920?t="desktop":t="wide",t!==this.breakpoint&&(this.breakpoint=t)},updateWindowSize(e,t){this.windowSize.width=e,this.windowSize.height=t,this.updateBreakpoint(e)},showToast(e){const{message:t,type:o="info",duration:n=this.toastDuration,action:a=null,persistent:r=!1}=e,s={id:this.nextToastId++,message:t,type:o,duration:n,action:a,persistent:r,createdAt:Date.now()};return this.toasts.push(s),!r&&n>0&&setTimeout(()=>{this.removeToast(s.id)},n),s.id},showSuccess(e,t={}){return this.showToast({message:e,type:"success",...t})},showError(e,t={}){return this.showToast({message:e,type:"error",duration:7e3,...t})},showWarning(e,t={}){return this.showToast({message:e,type:"warning",...t})},showInfo(e,t={}){return this.showToast({message:e,type:"info",...t})},removeToast(e){const t=this.toasts.findIndex(o=>o.id===e);t!==-1&&this.toasts.splice(t,1)},clearAllToasts(){this.toasts=[]},openModal(e,t={}){this.openModals.includes(e)||(this.openModals.push(e),this.modalData.set(e,t),this.focusTrapActive=!0)},closeModal(e=null){if(e){const t=this.openModals.indexOf(e);t!==-1&&(this.openModals.splice(t,1),this.modalData.delete(e))}else{const t=this.openModals.pop();t&&this.modalData.delete(t)}this.openModals.length===0&&(this.focusTrapActive=!1)},closeAllModals(){this.openModals=[],this.modalData.clear(),this.focusTrapActive=!1},getModalData(e){return this.modalData.get(e)},showGlobalLoading(e="Loading..."){this.isGlobalLoading=!0,this.globalLoadingMessage=e},hideGlobalLoading(){this.isGlobalLoading=!1},setLoading(e,t=!0){t?this.loadingStates.set(e,!0):this.loadingStates.delete(e)},addToHistory(e){this.interactionHistory.push(e),this.interactionHistory.length>this.maxHistoryLength&&this.interactionHistory.shift()},clearHistory(){this.interactionHistory=[]},announce(e,t="polite"){this.screenReaderAnnouncement=e,setTimeout(()=>{this.screenReaderAnnouncement===e&&(this.screenReaderAnnouncement="")},1e3)},toggleKeyboardShortcuts(){this.keyboardShortcutsEnabled=!this.keyboardShortcutsEnabled},toggleDebugMode(){this.debugMode=!this.debugMode},togglePerformanceOverlay(){this.showPerformanceOverlay=!this.showPerformanceOverlay},toggleLegend(){this.legendState==="fullyOpen"?this.legendState="open":this.legendState==="open"?this.legendState="collapsed":this.legendState="open",this._customLegendHeight=null},openLegend(){this.legendState="open",this._customLegendHeight=null},fullyOpenLegend(){this.legendState="fullyOpen",this._customLegendHeight=null},collapseLegend(){this.legendState="collapsed",this._customLegendHeight=null},setLegendHeight(e){this._customLegendHeight=e},handleLegendItemClick(){this.legendState==="fullyOpen"&&(this.legendState="open")},enableSearchMode(){this.searchMode=!0},disableSearchMode(){this.searchMode=!1},toggleHamburgerMenu(){this.hamburgerMenuOpen=!this.hamburgerMenuOpen},openHamburgerMenu(){this.hamburgerMenuOpen=!0},closeHamburgerMenu(){this.hamburgerMenuOpen=!1},init(){let e=null;try{e=localStorage.getItem("theme")}catch{}e&&this.setTheme(e),new ResizeObserver(o=>{for(const n of o)this.updateWindowSize(n.contentRect.width,n.contentRect.height)}).observe(document.documentElement),window.matchMedia&&(window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",o=>{this.theme==="auto"&&document.documentElement.setAttribute("data-theme",o.matches?"dark":"light")}),window.matchMedia("(prefers-reduced-motion: reduce)").addEventListener("change",o=>{this.reducedMotion=o.matches,document.documentElement.setAttribute("data-reduced-motion",o.matches)}))}}}),b0=vs("map",{state:()=>({maps:{},activeMapId:null,selectedRegion:null,selectedFamily:null,selectedAffinityBlock:null,selectedLanguage:null,selectedDialect:null,activeLegendTab:"family",selectedResource:null,selectedPeopleGroup:null,selectedPinIds:[],globalFilters:{},searchQuery:"",autoFly:{isActive:!1,speed:1,interval:5e3,currentIndex:0,items:[],timerId:null},guidedTour:{isActive:!1,currentStep:0,steps:[]},showClusters:!1,clusterMode:"region",clusterFilterProperty:null,clusterFilterValue:null,flySpeed:"normal",fullscreenMapId:null,preferences:{theme:"light",defaultMapStyle:"streets",enableAnimations:!0,autoSavePreferences:!0}}),getters:{getMapById:e=>t=>e.maps[t],activeMap:e=>e.activeMapId?e.maps[e.activeMapId]:null,hasMap:e=>t=>t in e.maps,allMapIds:e=>Object.keys(e.maps),hasSelection:e=>!!(e.selectedRegion||e.selectedFamily||e.selectedAffinityBlock||e.selectedPeopleGroup),isAutoFlying:e=>e.autoFly.isActive,isGuidedTourActive:e=>e.guidedTour.isActive,isMapFullscreen:e=>t=>e.fullscreenMapId===t},actions:{registerMap(e,t,o={}){let n=1.5;o.zoom!==void 0?n=o.zoom:t&&typeof t.getZoom=="function"&&(n=t.getZoom());let a=[0,0];if(o.center)a=o.center;else if(t&&typeof t.getCenter=="function"){const r=t.getCenter();r&&(a=[r.lng,r.lat])}this.maps[e]={instance:t,config:o,isReady:!1,zoom:n,center:a,registeredAt:Date.now()},this.activeMapId||(this.activeMapId=e)},setMapReady(e){const t=this.maps[e];t&&(t.isReady=!0)},updateMapState(e,t){const o=this.maps[e];o&&Object.assign(o,t)},unregisterMap(e){if(delete this.maps[e],this.activeMapId===e){const t=this.allMapIds;this.activeMapId=t.length>0?t[0]:null}},setActiveMap(e){e in this.maps&&(this.activeMapId=e)},selectRegion(e){this.selectedFamily=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedRegion=e},selectFamily(e){this.selectedRegion=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedLanguage=null,this.selectedDialect=null,this.selectedFamily=e},setActiveLegendTab(e){this.activeLegendTab=e},selectLanguage(e){this.selectedRegion=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedFamily=null,this.selectedDialect=null,this.selectedLanguage=e},selectDialect(e){this.selectedRegion=null,this.selectedFamily=null,this.selectedLanguage=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedDialect=e},selectAffinityBlock(e){this.selectedRegion=null,this.selectedFamily=null,this.selectedPeopleGroup=null,this.selectedAffinityBlock=e},selectPeopleGroup(e){this.selectedPeopleGroup=e},selectResource(e){this.selectedRegion=null,this.selectedFamily=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedResource===e?this.selectedResource=null:this.selectedResource=e},clearSelections(){this.selectedRegion=null,this.selectedFamily=null,this.selectedLanguage=null,this.selectedDialect=null,this.selectedAffinityBlock=null,this.selectedResource=null,this.selectedPeopleGroup=null,this.selectedPinIds=[],this.showClusters=!1,this.clusterMode="region"},setSelectedPinIds(e){this.selectedPinIds=e||[]},setFilter(e,t){this.globalFilters[e]=t},removeFilter(e){delete this.globalFilters[e]},clearFilters(){this.globalFilters={},this.searchQuery=""},setSearchQuery(e){this.searchQuery=e},startAutoFly(e,t=1){this.stopAutoFly(),this.autoFly.isActive=!0,this.autoFly.speed=t,this.autoFly.items=e,this.autoFly.currentIndex=0},stopAutoFly(){this.autoFly.timerId&&(clearInterval(this.autoFly.timerId),this.autoFly.timerId=null),this.autoFly.isActive=!1,this.autoFly.currentIndex=0},setAutoFlySpeed(e){this.autoFly.speed=Math.max(.5,Math.min(2,e))},nextAutoFlyItem(){if(!this.autoFly.isActive||this.autoFly.items.length===0)return;this.autoFly.currentIndex=(this.autoFly.currentIndex+1)%this.autoFly.items.length;const e=this.autoFly.items[this.autoFly.currentIndex];e.type==="region"?this.selectRegion(e):e.type==="family"&&this.selectFamily(e)},toggleClusters(e){typeof e=="boolean"?this.showClusters=e:this.showClusters=!this.showClusters},setClusterMode(e){["region","language-family","affinity-block","mst","resource"].includes(e)&&(this.clusterMode=e)},setClusterFilter(e,t){this.clusterFilterProperty=e||null,this.clusterFilterValue=t||null},clearClusterFilter(){this.clusterFilterProperty=null,this.clusterFilterValue=null},setFlySpeed(e){["slow","normal","fast"].includes(e)&&(this.flySpeed=e)},setSelectedFamily(e){this.selectFamily(e)},clearSelectedFamily(){this.selectFamily(null)},setSelectedRegion(e){this.selectRegion(e)},clearSelectedRegion(){this.selectRegion(null)},clearSelectedResource(){this.selectResource(null)},clearSelectedLanguage(){this.selectLanguage(null)},clearSelectedDialect(){this.selectDialect(null)},toggleFullscreen(e){this.fullscreenMapId===e?this.fullscreenMapId=null:this.fullscreenMapId=e},loadPreferences(){try{const e=localStorage.getItem("mapUserPreferences");if(e){const t=JSON.parse(e);this.preferences={...this.preferences,...t}}}catch(e){console.error("[mapStore] Failed to load preferences:",e)}},savePreferences(){try{localStorage.setItem("mapUserPreferences",JSON.stringify(this.preferences))}catch(e){console.error("[mapStore] Failed to save preferences:",e)}},setPreference(e,t){this.preferences[e]=t,this.preferences.autoSavePreferences&&this.savePreferences()}}}),y0=vs("data",{state:()=>({sources:{},loadingStates:{}}),actions:{async load(e,t){if(!this.sources[e]){this.loadingStates[e]={isLoading:!0,error:null};try{const o=await t();this.sources[e]=qo({features:o,timestamp:Date.now()}),this.loadingStates[e]={isLoading:!1,error:null}}catch(o){console.error(`[dataStore] Failed to load source "${e}":`,o),this.loadingStates[e]={isLoading:!1,error:o}}}},clearSource(e){delete this.sources[e],delete this.loadingStates[e]},cacheSourceData(e,t){this.sources[e]=qo({features:t.normalizedData||[],timestamp:t.timestamp||Date.now()})},hasSourceData(e){return!!this.sources[e]},getSourceData(e){return this.sources[e]?{normalizedData:this.sources[e].features}:null}},getters:{getData:e=>t=>{var o;return((o=e.sources[t])==null?void 0:o.features)??null},isLoading:e=>t=>{var o;return((o=e.loadingStates[t])==null?void 0:o.isLoading)??!1},getError:e=>t=>{var o;return((o=e.loadingStates[t])==null?void 0:o.error)??null}}}),da={_meta:{_comment:"Single source of truth for data-source connections across all doxa-maps bundles.",_comment_token:"Mapbox access token is fetched at runtime from window.MAP_TOKEN_URL (same modular pattern as window.MAP_APP_API_URL). Not hardcoded to any host — set mapboxTokenUrl below or override window.MAP_TOKEN_URL on the host page.",mapboxTokenUrl:"window.MAP_TOKEN_URL"},activeSource:"pray-tools",sources:{"pray-tools":{id:"pray-tools",name:"Prayer.Tools API",type:"rest-api",description:"pray.doxa.life live API — people-group prayer, engagement, and adoption data. Base URL read from window.MAP_APP_API_URL or VITE_API_BASE_URL at runtime.",endpoints:{bulk:"/api/people-groups/list",detail:"/api/people-groups/detail/{slug}",statistics:"/api/people-groups/statistics"},queryParams:{lang:"en"},defaultFields:["slug","name","latitude","longitude","wagf_region","wagf_block","wagf_member","rop1","imb_reg_of_people_2","imb_reg_of_people_25","imb_reg_of_people_3","country_code","religion","population","has_photo","image_url","people_praying","people_committed","adopted_by_churches","engagement_status","imb_gsec","primary_language","imb_language_family","imb_language_class","imb_language_speakers"],pollFields:["slug","people_praying"],pollInterval:3e5,fallbackSourceId:null,fieldMappings:{uniqueId:"slug",slug:"slug",name:"name",latitude:"latitude",longitude:"longitude",wagfRegion:"wagf_region",doxaRegion:"wagf_region",wagfBlock:"wagf_block",wagfMember:"wagf_member",affinityBlock:"rop1",countryIso:"country_code",religion:"religion",religionCode:"religion",population:"population",hasPhoto:"has_photo",imageUrl:"image_url",photoUrl:"image_url",peoplePraying:"people_praying",peopleCommitted:"people_committed",engagementStatus:"engagement_status",adoptionStatus:"adopted_by_churches",language:"primary_language",cluster:"imb_reg_of_people_2",peopleGroup:"imb_reg_of_people_25",peopleGroupCountry:"imb_reg_of_people_3",languageFamily:"imb_language_family",languageClass:"imb_language_class",languageSpeakers:"imb_language_speakers"},imageConfig:{useField:"imageUrl",fallbackField:null,fallbackUrlTemplate:null,placeholderUrl:"https://www.peoplegroups.org/images/pgphotosearch/NoImageAvailable_search.jpg",useSvgPlaceholder:!0}},"doxa-csv":{id:"doxa-csv",name:"DOXA People Groups CSV",type:"csv",path:"assets/data/Joshua-project-ids-Doxa-1439.csv",description:"People groups dataset from DOXA / Joshua Project",fieldMappings:{uniqueId:"ROP3",peopleGroupId:"ROP3",countryCode:"ROG",peopleId3:"PeopleID3",name:"Name",displayName:"NmDisp",alternateName:"NmAlt",description:"PeopleDesc",locationDescription:"LocationDe",country:"Ctry",countryIso:"ISOalpha3",region:"Regn",subRegion:"RegnSub",wagfRegion:"WAGF Region",doxaRegion:"WAGF Region",wagfBlock:"WAGF BLOCK",affinityBloc:"Affbloc",affinityBlock:"ROP1",affinityCode:"AffCd",affinityName:"Aff",peopleCluster:"PplClstr",ethneName:"Ethne",latitude:"Latitude",longitude:"Longitude",population:"Pop",populationClass:"PopCls",status:"Status",engagementStatus:"EngStat",evangelicalLevel:"EvngLvl",gsec:"GSEC",gsecBrief:"GSECbrf",gsecLong:"GSEClng",spiScore:"SPI",spiDescription:"SPIdesc",language:"Lang",languageCode:"ROL",languageFamily:"LangFamily",religion:"Rlgn",religionCode:"ROR",religionDescription:"RORdesc",religionBase:"RlgnBs",religionDiv:"RlgnDiv",bible:"Bible",jesusFilm:"Jesus",radio:"Radio",gospel:"Gospel",audio:"Audio",stories:"Stories",resourcesTotal:"ResTot",bibleLevel:"LvlBible",yearPublished:"YrPub",photoCredit:"PicCrdt",photoUrl:"PicURL",hasPhoto:"Photo",isIndigenous:"Indigenous"},imageConfig:{useField:"photoUrl",fallbackField:"peopleId3",fallbackUrlTemplate:"https://joshuaproject.net/assets/media/profiles/photos/p{peopleId3}.jpg",placeholderUrl:"https://www.peoplegroups.org/images/pgphotosearch/NoImageAvailable_search.jpg"}}},systemFields:{uniqueId:{description:"Unique identifier per row (slug for API, ROP3+ROG for CSV)",required:!0},peopleGroupId:{description:"People group ID — same group can appear in multiple countries",required:!0},name:{description:"People group display name",required:!0},latitude:{description:"Latitude coordinate for map pin",required:!0},longitude:{description:"Longitude coordinate for map pin",required:!0},engagementStatus:{description:"Boolean — true if engaged_status = 'engaged'",required:!1},adoptionStatus:{description:"Boolean — true if adopted_by_churches > 0",required:!1},peoplePraying:{description:"Number of people currently praying for this group — from pray-tools API",required:!1},peopleCommitted:{description:"Raw count of committed workers for this group — source of engagementStatus",required:!1},languageFamily:{description:"Language family name",required:!1},religion:{description:"Primary religion",required:!1},population:{description:"Population count",required:!1},doxaRegion:{description:"WAGF/DOXA region name",required:!1},photoUrl:{description:"URL to people group photo",required:!1},description:{description:"People group description text",required:!1}}},_0=".profile-loader[data-v-ba19fc13]{border-radius:var(--map-radius-corners, var(--map-radius, 0px));width:100%;height:100%;min-height:var(--profile-min-h, 100dvh);position:relative}.profile-error[data-v-ba19fc13]{padding:1rem;background:#fff3cd;border:1px solid #ffc107;border-radius:4px;font-family:monospace;font-size:13px}",Ln=(e,t)=>{const o=e.__vccOpts||e;for(const[n,a]of t)o[n]=a;return o},v0={class:"profile-loader"},k0={key:0,class:"profile-error"},w0={key:1,class:"profile-error"},x0=Ln({__name:"ProfileLoader",props:{profileConfig:{type:String,default:""}},setup(e){var $;const o=e,n=Ie("profileConfig",null),a=oe(()=>{var C;if(!o.profileConfig)return null;let v;try{v=JSON.parse(o.profileConfig)}catch{return console.error("[ProfileLoader] Invalid profile-config JSON:",o.profileConfig),null}if(v&&v.assetsBase===void 0){const T=(C=n==null?void 0:n.value)==null?void 0:C.assetsBase;typeof T=="string"&&T&&(v.assetsBase=T)}return v}),r=oe(()=>{var v;return((v=a.value)==null?void 0:v.profile)||null}),s=rh(),i=oe(()=>{var C;const v=(C=a.value)==null?void 0:C.tk;return typeof v=="string"&&v?v:s.value||""});lt(()=>{var v;return(v=a.value)==null?void 0:v.tk},v=>{typeof v=="string"&&v&&Pc(v)},{immediate:!0});const l=oe(()=>{var v;return((v=a.value)==null?void 0:v.dataSource)||da.activeSource}),c=oe(()=>{var v;return((v=a.value)==null?void 0:v.colorSet)||"default"}),u=oe(()=>!1),p=oe(()=>{var v;return((v=a.value)==null?void 0:v.pinHint)!==!1}),f=oe(()=>{var C,T;const v=(((C=a.value)==null?void 0:C.locale)||((T=a.value)==null?void 0:T.lang)||"").split("-")[0].toLowerCase();return Yu.includes(v)?v:""}),w=Ie("appI18n",null);cg(()=>{f.value&&w&&(w.global.locale.value=f.value)});const x=oe(()=>{var v,C;return f.value||((C=(v=w==null?void 0:w.global)==null?void 0:v.locale)==null?void 0:C.value)||"en"}),y=oe(()=>{var v;return((v=a.value)==null?void 0:v.instanceId)||"doxa-map-"+Math.random().toString(36).slice(2,9)}),d=Ie("profileModules",null);if(!d)throw new Error('[ProfileLoader] No profileModules provided. Bundle entry must `app.provide("profileModules", import.meta.glob("./*.vue"))`');const g=oe(()=>{if(!r.value)return null;const v=`./${r.value}.vue`;return d[v]?Mc(d[v]):(console.error(`[ProfileLoader] Profile not found: "${r.value}". Available:`,Object.keys(d)),null)});Ot("mapboxToken",i),Ot("dataSource",l),Ot("colorSet",c),Ot("profileConfig",a),Ot("instanceId",y),Ot("lang",x);const b=m0(),h=b0(),k=y0();try{const v=typeof localStorage<"u"?localStorage.getItem("theme"):null;v&&(($=b.setTheme)==null||$.call(b,v))}catch{}return Ot("uiStore",b),Ot("mapStore",h),Ot("dataStore",k),(v,C)=>(K(),te("div",v0,[a.value?g.value?(K(),pt(Al(g.value),{key:2})):(K(),te("div",w0,[N("p",null,[C[1]||(C[1]=mt("⚠️ Profile ",-1)),N("strong",null,'"'+ge(r.value)+'"',1),C[2]||(C[2]=mt(" not found.",-1))])])):(K(),te("div",k0,[...C[0]||(C[0]=[N("p",null,[mt("⚠️ "),N("strong",null,"doxa-map"),mt(": missing or invalid "),N("code",null,"profile-config"),mt(" prop.")],-1),N("p",null,[mt("Example: "),N("code",null,`profile-config='{"profile":"example-map","tk":"pk.eyJ..."}'`)],-1)])])),g.value&&u.value?(K(),pt(Al(_e(null)),{key:3})):ye("",!0),g.value&&p.value?(K(),pt(g0,{key:4})):ye("",!0)]))}},[["styles",[_0]],["__scopeId","data-v-ba19fc13"]]),$0=Object.assign({"./poster-wall.vue":()=>to(()=>Promise.resolve().then(()=>r_),void 0),"./upg-100-list.vue":()=>to(()=>Promise.resolve().then(()=>Bw),void 0),"./upg-100-mfe.vue":()=>to(()=>Promise.resolve().then(()=>hx),void 0)});if(typeof window<"u"&&((ip=window.mapboxgl)!=null&&ip.setRTLTextPlugin))try{window.mapboxgl.setRTLTextPlugin("https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.3.0/mapbox-gl-rtl-text.js",null,!0)}catch{}function S0(){return Bf(x0,{configureApp(e){e.use(Zf()),e.use(u0()),e.provide("profileModules",$0)}})}const A0=S0();typeof customElements<"u"&&(customElements.get("my-upg-100-list-map")||customElements.define("my-upg-100-list-map",A0));function E0(e){const t=(e==null?void 0:e.parentElement)||e;if(!t||!t.ownerDocument)return{x:0,y:0};const o=t.ownerDocument.createElement("div");o.style.cssText="position:fixed;top:0;left:0;width:0;height:0;pointer-events:none;opacity:0",t.appendChild(o);const n=o.getBoundingClientRect();return o.remove(),{x:n.left,y:n.top}}function qu(e){const t=de(null),o=fn({position:"fixed",inset:"0"}),n=()=>{var u,p;const r=t.value;if(!r)return;const s=E0(r),i=r.ownerDocument||(typeof document<"u"?document:null),l=((u=i==null?void 0:i.documentElement)==null?void 0:u.clientWidth)||0,c=((p=i==null?void 0:i.documentElement)==null?void 0:p.clientHeight)||0;o.value={position:"fixed",top:`${-s.y}px`,left:`${-s.x}px`,right:"auto",bottom:"auto",width:`${l}px`,height:`${c}px`,boxSizing:"border-box"}};lt(e,r=>{r&&requestAnimationFrame(()=>{n(),requestAnimationFrame(n)})},{flush:"post"});const a=()=>{e.value&&n()};return typeof window<"u"&&window.addEventListener("resize",a),uo(()=>{typeof window<"u"&&window.removeEventListener("resize",a)}),{scrimRef:t,scrimStyle:o}}const Ju=[{id:"west-africa",label:"West Africa",count:118,selector:{type:"wagf_block",value:"west_africa"},bbox:[-21.3926,4.2189,27.2705,17.4735]},{id:"sudan",label:"Sudan",count:105,selector:{type:"country_code",value:"SDN"},bbox:[20.1672,9.0707,39.723,20.499]},{id:"brazil",label:"Brazil",count:103,selector:{type:"country_code",value:"BRA"},bbox:[-77.9152,-25.4802,-32.2913,7.3352]},{id:"east-africa",label:"East Africa",count:96,selector:{type:"wagf_block",value:"east_africa"},bbox:[22.3455,-14.3059,47.7947,20.0984]},{id:"laos",label:"Laos",count:95,selector:{type:"country_code",value:"LAO"},bbox:[99.8741,13.6759,108.2843,23.2186]},{id:"middle-east-core",label:"Middle East Core",count:71,selector:{type:"country_codes",values:["IRN","YEM","IRQ","OMN","SYR","LBN","PSE","QAT","SAU","JOR","BHR","ARE","KWT"]},bbox:[31.1468,9.3265,63.7915,42.0085]},{id:"andean-caribbean",label:"Andean + Caribbean",count:63,selector:{type:"country_codes",values:["COL","PER","VEN","ECU","BOL","PRY","PAN","CUB","SUR","ATG","ABW","BHS","BRB","CYM","CUW","GRD","JAM","LCA","SXM","TCA","VCT","GUY"]},bbox:[-85.7034,-31.2233,-51.7537,31.0655]},{id:"central-africa",label:"Central Africa",count:61,selector:{type:"wagf_block",value:"central_africa"},bbox:[.6063,-11.2806,32.2325,15.7303]},{id:"europe",label:"Europe",count:55,selector:{type:"wagf_region",value:"europe"},bbox:[-42.2659,-27.2213,168.5645,85]},{id:"oceania-indonesia",label:"Oceania + Indonesia",count:53,selector:{type:"union",selectors:[{type:"wagf_region",value:"oceania"},{type:"country_code",value:"IDN"}]},bbox:[83.9392,-43.091,-136.017,21.4266]},{id:"mainland-se-asia-philippines",label:"Mainland SE Asia + Philippines",count:50,selector:{type:"country_codes",values:["VNM","MYS","THA","MMR","BRN","KHM","PHL"]},bbox:[88.6434,.084,129.7854,26.789]},{id:"maghreb-egypt",label:"Maghreb + Egypt",count:47,selector:{type:"country_codes",values:["DZA","LBY","MAR","MRT","ESH","EGY","TUN"]},bbox:[-21.8716,14.0878,37.0339,39.1426]},{id:"southern-africa-islands",label:"Southern Africa + Islands of East Africa",count:39,selector:{type:"union",selectors:[{type:"wagf_block",value:"southern_africa"},{type:"wagf_block",value:"islands_of_east_africa"}]},bbox:[.638,-38.0929,63.5885,4.4534]}],Xu=[{id:"asia-india-rajasthan",label:"Northwest India",count:116,selector:{type:"pg_slugs",values:["arain-dogri","arain-punjabi","badi-marwari","bania-dogri","bania-kashmiri","baret","bargi","bhand-kashmiri","bhojki","bhopa","bhutta","bomba","brukpa","budhan","campa","cejara","chadwa","cheintz","chheepi","chobdar","chopan","chungar","cudigar","dadupanthi","damami","daoli","daule","dhaki","dhobi-dogri","dhola","dhyar","dokhpa","domal","dosali","gagra","galwan","ganz","gardi","ghihara","gorkun","gosain-kangri","gosain-rajasthani","gurru","hadi","hajjam-haryanvi","hajjam-kashmiri","hesi","hiranbaj","kawoj","khadim","kharol","khatik-chambeali","khatik-punjabi","kraal","kriyagar","kucband","lakhera-haryanvi","laskari","lohar-dogri","malaneese","mangnyar-muslims","manhas","manjygur-muslims","masku","moghol-dogri","moghol-marwari","mogia","mon-india","murhid","nagbansi-dogri","nagda","nai-mewari","najjar","namdagur","naqqas","nar","nicar","nyaria","pajabgar","pakhimara","pangwal-buddhists","pangwala","pinjara-punjabi","pohul","purig-pa","racband","rajkumhar","rajpurohit","ratal","rath","rehar","runwalas","sain","sanchia","sanhai","sansoi","santia","saraogi","sayyid-pahari","seok","shaksaz","shikari","shina-india","singiwala","sofi","sorgars","sudhan","sunga","swangla","tak","thavi","usta","van-baoriya","ved","vijabargiya","waza"]},bbox:[69.9484,22.3586,79.972,35.9424],provinceLabel:"Rājasthān + Haryāna + Himāchal Pradesh + Jammu and Kashmīr + Punjab + Chandīgarh + Ladākh"},{id:"asia-india-andhra-pradesh",label:"South-Central India",count:107,selector:{type:"pg_slugs",values:["accukattavandlu","aguru","aiyarakulu","andhra-vaisnawa","ansari-momin-telugu","arakala","are-bondili","are-kapu","are-katika","atollu","attagara","bandollu","bania-agarwal-telegu","bayita-kammara","berad","bhatrajulu","bhondari","bindla","bolla","budakukkala","cakketakare","camadollu","cippollu","cundollu","dammali","dasari","gandalla","gandla","gangireddula","ganta-sayebulu","garadi","gavara","godagali","godari","gosangi","guddi-eluguwallu","gurika","hajjam-telugu","hatgar","jains-telugu","jakkula","jandra","jethi","kachi","kaikali","karnam","karnibhakthulu","katipamula","khatik-telugu","kommu-dasari","konda-kammara","kuliya","kurakula","lakkamari-kapu","madiga-dasu","majjula","mala-masti","malis","mandula","manna-dhora","matangi","medari","mitha-ayyalavar","moghal-telugu","mondivogula","muchi-chamar","muli","musti-chenchu","nagavamsam","nakhasa","neyyala","ontaris","padigarajulu","pagativeshagallu","paky","pambala","pamidi","pamula","pancaratra-srivaisnavas-brahmans","pariki-muggula","patkars","rajannalu","reddi-dora","reddika","runjalavallu","sadaru","sadhu-chetty","sakunapaksollu","samayavallu","saradagallu","senapathi","silavantulu","sindhollu","swakulasali-koshti","tamboli-telugu","thogataveera-kshatriya","tirugatigantla","tolakari","udupula","uppara","vaikhanasa-brahmans","verra-musti","vipravinodulu","yata","yatagiri","yatla","yite"]},bbox:[76.462,12.5091,84.8294,19.785],provinceLabel:"Andhra Pradesh + Telangāna"},{id:"asia-india-odisha",label:"East India",count:88,selector:{type:"pg_slugs",values:["badhai-chhattisgarhi","baha-i","bairagi-chhattisgarhi","bairagi-odia","bangti","banka","bargah","bari-odia","bauti","bavuri","beldar-chhattisgarhi","bhangi-chhattisgarhi","bharewa","bharia-bhumia-chhattisgarhi","bhattra-bhatri","bhoi-odia","bhunjia","bondo","brahman-jyoti","candhai-maru","chaikwa","chatarkheya","cherua","citrakar","daitapati","damla","darji-odia","dhakad-halbi","dhera","didayi","dom-chhattisgarhi","eneti-dora","ghadwa","ghantarghada","ghogia","ghusuria","godra","gosain-chhattisgarhi","guna","irika","janughanta","jogi-halbi","jogi-odia","kachchi-alia","kalal-sadri","kamila","kapasiya","kasar-odia","khadura","khairwar-chhattisgarhi","khandwal","khati-odia","khatik-chhattisgarhi","kobari","kol-chhattisgarhi","koraga","kuda","kuli","kurunga","kusta","liari","maghia","mahuria","malia","markande-kanjia","mundapotta","munnewar","nai-odia","naksia","noliya","oriya","panara","pando","panka-odia","parenga","radhi","rana","sabakhia","samasi","sanei","sayyid-chhattisgarhi","sayyid-odia","sinduria","son-koli","suda","thanapati","tharua","tula-vina"]},bbox:[80.3325,17.5357,87.6538,23.9578],provinceLabel:"Odisha + Chhattīsgarh"},{id:"asia-india-gujarat",label:"West India",count:90,selector:{type:"pg_slugs",values:["agaria","agri","anjana-patel-gujarati","bafan","bairagi-gujarati","baloch","bamcha","banjania","barot","barthari","bhodala","borpi","caki","champta","cunara","dafer","dangasiya","dasnami-bawa","depala","dudhwala","gadhai","galiara","garmatan","garvi","gavli","ghantiya","golarana","gosain-gujarati","hajjam-gujarati","halaypotra","hingora","hingorza","jat-muslim","juneja","kahar-gujarati","kamalia","kambodia-bhagat","kapadi","kasar-gujarati","kasbati","kathi","ker","khalpa","khaskeli","khatik-gujarati","langa","machhiyara","majothi","makrani","mandali-muslims","mer","mir","miyana","moghol-gujarati","mujavar","muslim-khatri","muslim-lakhera","muslim-patel","mutwa","narsinghpura","nayak-muslims","node","padhar","panar","paradhi","patanwadia","patni-jamat","patni-vankars","pomla","rathodia","raysipotra","royma","sagar","sandhai-muslims","saranias","sayyid-gujarati","shravan","siddi","sompura-salat","tai","targala","theba","tirgar","turi-barot","vadi","vahivanca-barot","vayati","vyapari","wagheri","wandharo"]},bbox:[68.1752,20.1033,74.3448,24.7906],provinceLabel:"Gujarāt"},{id:"asia-india-karnataka",label:"Southwest India",count:86,selector:{type:"pg_slugs",values:["adiyan","agasa","ansari-momin-kannada","arasu","ayri","bagga","baira","balasantoshi","bandi","bania-kannada","bania-konkani","batada","bayil-kammara","bayil-pattar","bellara","bestha","chaptegar","charodi","chenna-dasar","dombi-dasa","durga-murga","gabit","galada-kokani","ganti-chores","gatti","gauli","ghadi","godda","gomantak-maratha","gond-kannada","gudikara","guraw","hajjam-kannada","halleer","harkantra","hasalaru","helawa","holeya-dasari","jatigar","jaweri","jogi-telugu","jogi-tulu","khakar","kolari","komara-panta","koosa","koraga-korra","kottari","koyava","kudiya","kudubi","kummara-kumbara","kurahina-setti","ladar","maila","malaikudi","maleru","manser","meda","mhalo","mith-gauda","mogaveera","mundala","nadors","nai-kannada","nairy","natua","nawaiyat","padarthis","padiyar","pambada","pattegar","pendar","pinjara-kannada","rachavar","raddi","rajapuri","raneyar","raval","raya-rawat","sapalyas","sayyid-kannada","soligaru","sudir","thammadi","vilyagaras"]},bbox:[73.2695,11.4418,78.7305,18.4466],provinceLabel:"Karnātaka + Goa"},{id:"asia-india-kerala",label:"Malabar Coast",count:78,selector:{type:"pg_slugs",values:["allar","ambalavasi","anthur-nair","arayavati","ayyanavar","bakuda","bania-malayalam","bowis-mogeyar","cakkala","cakkyar-nambiyar","chakkiyar","chamar-muchi-malayalam","chengazhi-nambiar","cingatanmar","dheevara","erawallan","ezhavathi","ilayatu","indo-french","indo-vietnamese","kakkalan","kalanadies","kalladi","kallattu-kurup","karimpalan","kavara","kavuthiyan","kidaran","kocu-wellan","kollan","kootan","kumar-kshatriya","kummara-kusuvan","kunduvadian","kurukkal","laccadive","malai-pandaram","malayalar","maran-nairs","marasari","mavilan","moger-malayalam","moothan","mukkari","musari","muttatu","nalkadaya","nambutiris","narsanna","nasuvan","nayadi","otans","padannan","palakad-tandans","pandithar","pathinaickans","pathiyan","pisaroti","poduval","pulisari","puspakan-unni","reddi","samanthan","sonavar","thachanad-moopan","tiyattunni","urindavan","vadugan","valinjiyar","vetan","vettalaikarans","vettiyan","vilkurup","visavan","wainadan-cetti","wainadan-kader","wainadan-pulayan","wayanad-pathiyan"]},bbox:[72.8992,7.9875,80.5765,13.0102],provinceLabel:"Kerala + Puducherry + Lakshadweep"},{id:"asia-india-tamil-nadu",label:"Southeast India + Andaman Islands",count:73,selector:{type:"pg_slugs",values:["alavan","andamanese","ansari-momin-tamil","anuppan","aranadan","baig","bhatu-andamani","bondili","brahmin-andamani","cekkala","chamar-muchi-tamil","chayakkaran","coorgi-andamanese","dasa-palanjika","dayare","dhobi-tamil","gangawar","great-andamanese","gudugudupandi","gurukkal","jains-tamil","jarawas","jati-pillai","kambalattan","kambar","kannada-naicker","kannada-saineegar","karaiyar","karlar","karna-sale","katesar","kattiakaran","kayalar","kepmari","koliyan","kongu-vaisnawa","kongu-vellala-gounder","kota","krishnavaka","kudumi","kuluvan","kummara-kummari","kunnuva-vellalar","malai-vellala","maleyan","maniyattikkaran","mudugar","nakkala","namdeo-maratha","nanjil-mudali","onge","pannadi","panniandi","parkavakulam","parvatarajakulam","pattanavan","perumkollar","salivahanam","savalakkarar","sayyid-tamil","semman","senaithalaivar","sentinelese","siviar","tambiran","telengi","tholuva-naicker","thoraiyar","tondman","uppillian","urikkar-naicker","vellaiyan-kuppam-padaiyaci","vettaikkaran"]},bbox:[74.7588,7.4577,94.7701,13.968],provinceLabel:"Tamil Nādu + Andaman and Nicobar Islands"},{id:"asia-india-madhya-pradesh",label:"Central India",count:88,selector:{type:"pg_slugs",values:["anjana","attar-saibulu","baharupi","banchada","baraua","barda","bari-hindi","bari-marathi","basudeva","berar","bhanumati","bharwad","bhoi-marathi","bhurtia","chari","chitari","citrakathi","dhawad","dhed","dom-marathi","gachha","garodi","garpagari","gondhali","gopal","hajjam-hindi","hardas","hatkar","jadam","jains-hindi","jhadi","kachchi-kushwaha","kachera-bagheli","kaghzi","kandera","kapewar","kasar-hindi","kasikapadi","kathar","kharvi","khatik-marathi","kokaniz","kolhati","kudimahan","ladia","ladsi","lahangir","lajjhar","lodha-marathi","lonar","mana","manbhav","mankar","mitna","mondiwar","muskhan","muslim-gond","muslim-kachera","nahal","naikpod","naita","namdeo","nandiwala","naoda","nat-bagheli","neeli","nema","nilkanth","pangul","phularis","pinjara-marathi","pochammalollu","prabhu-patane","rujjhar","sagharias","sahi","sais","sanghar","sarodi","sikligar","sisgars","soria","sutar-mistry","takari","velip","waidu","yelmar","zamral"]},bbox:[69.6832,14.969,83.1757,26.995],provinceLabel:"Madhya Pradesh + Mahārāshtra + Dādra and Nagar Haveli and Damān and Diu"},{id:"asia-india-uttarakhand",label:"North India + Nepal",count:92,selector:{type:"pg_slugs",values:["ahmadiya","anwal","arain-kannauji","badhik","badi","balahar","banpar","bargala","bargujar","bhuiyar","bisati","camma","charwaha","chaudangsi","dhamin","dhekaro","gadhia","gadihar","gandharv","habura","hijra","hindu-santarash","jadupetia","jains-maithili","jarkhandi-hajjam","jarkhandi-julaha","jharkhandi-nai","jimdar","jogi-angika","kadar","kankali","khangar-bundeli","khatbune","kuthliya-bora","modaks","mujavir","mukeri","nagbansi","nalband","pankhiya","patari","puran","putliwale","rai-bhat-muslims","rajdhop","raji-india","rastogi","rave","sahisia","sayyid-garhwali","sheikhzade","shershabadia","sukiyar","tagewale","thakurai","tikulhara","tilli","turuk-pasi","baniya","barae","bhand","bhediyar","bodo","byangsi","chidmar","churaute","dhobi","dhunia","dura","gangai","gyasumdoba","halkhor","haluwai","jaine","kaike","kamar","kanu","kayastha","lodha","makalu-sherpa","mali","mallah","marwadi","nurang","pahari-nagarkotis","puma","rajbhar","raji-nepal","shaikh-bhojpuri","sudhi","surel","tseku"]},extraCountryCodes:["NPL"],bbox:[76.0644,22.1727,88.8858,31.2428],adm0:["NPL"],provinces:["Uttarākhand","Uttar Pradesh","Bihār","Jhārkhand","Delhi"],provinceLabel:"North India + Nepal"},{id:"asia-india-west-bengal",label:"Northeast India + Bangladesh + Bhutan",count:87,selector:{type:"pg_slugs",values:["aiton","angarok","ansari-momin-bengali","bagti","baida","baisya","bajandar","banai","banik-bania","barua","bhakta","bhalla","bhujel","bilaspuri","byadh","chamar-assamese","chunari","dalu-india","dhal-kstriya","dhimal","ghazi","hajjam-assamese","hajjam-bengali","haluadas","jains-bengali","kakmara","kanda","kapuria","kasar-bengali","khairwar-bengali","khalifa","khamba","khamyang","khatik-bengali","khowa","koiren","kumhar-assamese","kurol","lois","mahisyadas","malakar","man","maria-muslims","matak","mirshikar","momba","mukhi","na","nai-assamese","namasudra-assamese","paharia","pangans","pinjara-dhunia-bengali","sabar","saha","serdukpen","shabdakar","siyalgar","sudra-das","sunuwar","sutradhar","taiphake","tamboli-bengali","teli-assamese","thanga","tripuri-kumhar","tripuri-namasudra","turun","yakha","yatibi","zakhrin","brokkat","chali","dalu-bangladesh","deaf-bhutanese","doya","dzalakha","gongduk","koda","kurtop","lakha","lunape","matpa","nupbi","nyenpa","ole","ushoi"]},extraCountryCodes:["BGD","BTN"],bbox:[84.6438,21.028,98.3478,29.4168],provinceLabel:"West Bengal + Sikkim + Meghālaya + Assam + Arunāchal Pradesh + Manipur + Tripura + Bangladesh + Bhutan",adm0:["BGD","BTN"]},{id:"asia-china-yunnan-province",label:"Southern China",count:109,selector:{type:"pg_slugs",values:["a-ou","ai-cham","akeu","aling","alu","angku","ani","aoka","apu","baonuo","beidongnuo","bit-china","black-thai","bugan","buyang","cai","changpao","chesu","dianbao","diao","doupo","eastern-samadu","eastern-xiangxi-miao","ga-mong","gao","gelao","guaigun","ha-li","hagei","hongjin-tai","hu","huishui-miao","jiamao-li","jiasou","jino","khmu","kong-ge","kucong","laba","labapo","laowu","lati-china","lawu","liang-e","linghua","liping-baheng","liude","liujia","longjia","lu","lupanshui-miao","mang-china","manmet","mashan-miao","meifu-li","mengwu","mishaba-laluo","mo","mosuo","mozhihei","muda","muzi","naheng","nanjingren","northern-awu","northern-dong","northern-muji","numao","palyu","panxian-nasu","pingdi-yao","popei","pubiao","puman","pusha","qanu","qiubei-zhuang","qixingmin","rao","rumai-de-ang","sanda","sanqiao","shenzhou","sichuan-mongols","ta-er","tagu","tai-lu","tai-pong","tulao","tusu","wenma-zhuang","western-gaisu","western-samadu","wopu","wunai","xi","xialusi","xiaoliangshan-nosu","xijima","xinping-lalu","xuzhang-lalu","ya","yanghuang","yerong","yizi","youmai","younuo-bunu","yunnan-mongol","yunnan-shui"]},bbox:[96.3204,17.3374,113.2066,29.9169],provinceLabel:"Yunnan Province + Guizhou Province + Guangxi Zhuang Autonomous Region + Hunan Province + Hainan Province",provinces:["Yunnan Province","Guizhou Province","Guangxi Zhuang Autonomous Region","Hunan Province","Hainan Province"]},{id:"asia-china-tibet-autonomous-region",label:"Mainland China + Mongolia",count:53,selector:{type:"pg_slugs",values:["adi","ainu-china","alxa-mongols","bogar-lhoba","bogol","boyu-tibetans","bunan","buryat","butuo-nosu","cona-monba","darang-deng","enger-yugur","ersu","geman-deng","heishui","henan-mongols","keji","kyrgyz","luzu","manyak","medog-monba","miguba","ming","minyak","naju","namuyi","nghari-tibetans","olot","ongkor","puroik","saman","saragh-yugur","sarikoli-tajiks","shixing","suodi-nosu","tongren-bonan","uzbeks","wakhi-china","western-xibe","wutun","yidu-lhoba","yinuo-nosu","za"]},extraCountryCodes:["MNG","PRK","JPN"],bbox:[69.2237,24.2385,130.4094,51.3865],provinceLabel:"Tibet Autonomous Region + Sichuan Province + Xinjiang Uyghur Autonomous Region + Gansu Province + Inner Mongolia Autonomous Region + Qinghai Province + Heilongjiang Province + Mongolia + Japan + North Korea",provinces:["Tibet Autonomous Region","Sichuan Province","Xinjiang Uyghur Autonomous Region","Gansu Province","Inner Mongolia Autonomous Region","Qinghai Province","Heilongjiang Province"],adm0:["MNG"]}],Zu=[{id:"uncovered-scatter",label:"Scattered / Diaspora",count:8,contiguous:!1,contiguityExempt:!0,flag:"allowed non-contiguous bucket (S5-D3) — diaspora/island/micro-territory strays + 2 unstamped CHN border PGs",selector:{type:"country_codes",values:["AND","CCK","GUF","USA"]},extra_slugs:["jing","pana-china"],bbox:[-150.7534,-18.855,123.4288,50.0639]},{id:"uncovered-nas-a",label:"Central Asia + Pakistan",count:55,contiguous:!0,contiguityExempt:!1,flag:"NAS-A real frontier zone (09b-asia-contiguity-v2 N-D6): MERGE of the former uncovered-sa-west (AFG+PAK) + uncovered-central-asia (AZE/KGZ/TJK/UZB) into ONE zone owning BOTH the legend count AND the ADM0 render coverage. AFG-PAK-UZB-TJK-KGZ form one contiguous land-border core; AZE is the flagged Caspian-separated near-member (S5-D2). KAZ stays deaf-only (its only PG is deaf-kazakhstanis). Target coverage 55 (design directive; uncovered coverage counts are carried through, not recomputable from admin-membership — NOTE-COUNT). ID kept in the uncovered-* family (NOT asia-frontier-nas-a) because zone-geometry.isAsiaZone() routes any asia-*-prefixed id down the ADM1 listId path — an asia-* id would resolve 0 ADM0 polys and render NOTHING. uncovered-* keeps it on the country_codes/ADM0 render path; re-prefixing is the render-layer's NEXT slice, not this one.",selector:{type:"country_codes",values:["AFG","AZE","KGZ","PAK","TJK","UZB"]},bbox:[42.6538,23.2204,79.3424,44.9954],provinceLabel:"Pakistan + Afghanistan + Uzbekistan + Tajikistan + Kyrgyzstan + Kazakhstan + Azerbaijan"}],C0=cn&&cn.tagName.toUpperCase()==="SCRIPT"&&cn.src||new URL("my-upg-100-list.js",document.baseURI).href,Ko=e=>String(e||"").trim().replace(/\/+$/,"");function Qu(){try{const t=String(C0||"").split(/[?#]/)[0].match(/^(.*)\/([^/]+)\/([^/]+)\.js$/);return!t||t[2]!==t[3]?null:t[1]||null}catch{return null}}function L0(e){const t=e==null?void 0:e.embedBaseUrl;if(typeof t=="string"&&t.trim())return Ko(t);if(typeof window<"u"){const o=window.MAP_EMBED_BASE_URL;if(typeof o=="string"&&o.trim())return Ko(o)}return Ko(Qu()||"")}function hr(e){const t=e==null?void 0:e.assetsBase;if(typeof t=="string"&&t.trim()){const n=Ko(t);if(/^https?:\/\//i.test(n)||n.startsWith("/"))return n}const o=Ko((e==null?void 0:e.treeBase)||"")||Ko(Qu()||"");if(o)try{const n=typeof document<"u"?document.baseURI:void 0;return Ko(new URL(o+"/../assets",n).href)}catch{return Ko(o.replace(/\/[^/]*$/,"")+"/assets")}return"./assets"}function T0({shareUrl:e,embedPath:t,profileConfig:o}={}){const n=o||null,a=typeof window<"u",r=e||(n==null?void 0:n.shareUrl);if(typeof r=="string"&&r.trim())return r.trim();const s=String(t||(n==null?void 0:n.shareEmbedPath)||"").trim();if(s){if(/^https?:\/\//i.test(s))return s;if(s.startsWith("/"))return a?window.location.origin+s:s;const i=L0(n),l=s.replace(/^\.\//,"");if(i)return i+"/"+l;if(typeof document<"u")try{return new URL(l,document.baseURI).href}catch{}return l}return a?window.location.origin+window.location.pathname:""}const P0=["country_code","wagf_region","wagf_block","primary_language","religion"];function M0(e){return e==null?{value:null,label:null}:typeof e=="object"?{value:e.value??null,label:e.label??null}:{value:e,label:null}}function N0(e){if(e==null||typeof e!="object")return e;const t={...e};for(const o of P0)if(o in t){const{value:n,label:a}=M0(t[o]);t[o]=n,a!=null&&(t[`${o}_label`]=a)}return t}function mr(e){return Array.isArray(e)?e.map(N0):[]}function br(e){return Array.isArray(e)?e:e&&typeof e=="object"?e.posts||e.data||e.records||e.results||e.items||[]:[]}function Tn(e){return e==null||typeof e!="object"?null:e.slug??null}function ed(e){return typeof e=="string"&&e.toLowerCase().includes("deaf")}function I0(e){const t=e==null?null:e.rop1;return t==null?null:typeof t=="object"?t.value??null:t}function Pn(e,t){const o=new Set;if(e==null||typeof e!="object"||typeof e.type!="string")throw new Error(`selector-evaluator: malformed selector (expected an object with a string \`type\`), got: ${JSON.stringify(e)}`);const n=Array.isArray(t)?t:[];switch(e.type){case"country_code":{const a=e.value;for(const r of n)if(r&&r.country_code===a){const s=Tn(r);s!=null&&o.add(s)}return o}case"country_codes":{const a=new Set(Array.isArray(e.values)?e.values:[]);for(const r of n)if(r&&a.has(r.country_code)){const s=Tn(r);s!=null&&o.add(s)}return o}case"wagf_block":{const a=e.value;for(const r of n)if(r&&r.wagf_block===a){const s=Tn(r);s!=null&&o.add(s)}return o}case"wagf_region":{const a=e.value;for(const r of n)if(r&&r.wagf_region===a){const s=Tn(r);s!=null&&o.add(s)}return o}case"union":{const a=Array.isArray(e.selectors)?e.selectors:[];for(const r of a){const s=Pn(r,n);for(const i of s)o.add(i)}return o}case"deaf_predicate":{const a=new Set(Array.isArray(e.regions)?e.regions:[]);for(const r of n){if(!r)continue;if((ed(r.slug)||ed(r.name))&&a.has(r.wagf_region)){const i=Tn(r);i!=null&&o.add(i)}}return o}case"affinity_bloc":{const a=e.rop1;for(const r of n)if(r&&I0(r)===a){const s=Tn(r);s!=null&&o.add(s)}return o}default:throw new Error(`selector-evaluator: unknown selector type "${e.type}" (supported: country_code, country_codes, wagf_block, wagf_region, union, deaf_predicate, affinity_bloc)`)}}const td=Object.freeze(Object.defineProperty({__proto__:null,default:Pn,evaluate:Pn},Symbol.toStringTag,{value:"Module"})),R0={class:"sec-head"},F0={class:"sec-name"},O0={class:"sec-count"},D0={class:"grid"},B0=["data-list-id"],G0=["aria-label","onClick"],j0={class:"hcount"},U0={class:"main"},K0=["src","alt","title","onClick","onKeydown","onError"],z0={key:1,class:"ph"},H0={class:"ph-label"},V0={key:0,class:"ph-count"},W0={class:"tape pfs"},Y0=["onClick","aria-label"],q0=["onClick","aria-label"],J0=["onClick","aria-label"],X0=["value"],Z0={class:"modal",role:"dialog","aria-live":"polite"},Q0={class:"modal-kind"},e_={class:"modal-title"},t_={class:"modal-err"},o_={class:"modal-soon"},n_={class:"bar"},a_={class:"modal-phase"},r_=Object.freeze(Object.defineProperty({__proto__:null,default:{__name:"poster-wall",setup(e){const t={lists:Ju,asia_lists:Xu,uncovered_lists:Zu},o=Ie("profileConfig",de(null)),n=oe(()=>{var A;return((A=o.value)==null?void 0:A.instanceId)||"upg-100-wall"}),a=oe(()=>{var A;return((A=o.value)==null?void 0:A.isDark)===!0}),r=oe(()=>hr(o.value)),s=A=>`${r.value}/posters/${A}.webp`,i=typeof window<"u"&&window.MAP_APP_API_URL||void 0||"",l={"west-africa":"Africa",sudan:"Africa","east-africa":"Africa","central-africa":"Africa","southern-africa-islands":"Africa","maghreb-egypt":"Middle East","middle-east-core":"Middle East","uncovered-nas-a":"Central Asia",laos:"Southeast Asia + Oceania","oceania-indonesia":"Southeast Asia + Oceania","mainland-se-asia-philippines":"Southeast Asia + Oceania",brazil:"Americas","andean-caribbean":"Americas","uncovered-scatter":"Americas",europe:"Europe"},c=A=>l[A]?l[A]:A.startsWith("asia-india-")?"India":A.startsWith("asia-china-")?"China + Mongolia":"Other",u=oe(()=>[...t.lists||[],...t.asia_lists||[],...t.uncovered_lists||[]].filter(A=>A&&A.id)),p=oe(()=>{const A=new Map;for(const M of u.value){const S=c(M.id);A.has(S)||A.set(S,[]),A.get(S).push(M)}return[...A.entries()].map(([M,S])=>({name:M,items:S.slice().sort((E,V)=>(V.count||0)-(E.count||0)),total:S.reduce((E,V)=>E+(V.count||0),0)})).sort((M,S)=>S.total-M.total)}),f=de(null);function w(A){const M=f.value===A.id;f.value=M?null:A.id,window.dispatchEvent(new CustomEvent("doxa-upg-100-list:show-on-map",{detail:{instanceId:n.value,listId:M?null:A.id,label:M?null:A.label}}))}const x=A=>`${r.value}/previews/${A}.webp`,y=de({}),d=de(null),g=[{id:"poker",label:"Card 2.5 × 3.5 in"},{id:"postcard",label:"Postcard 4 × 6 in"},{id:"a6",label:"A6 105 × 148 mm"}],b=de("poker"),{locale:h}=yt();function k(){const A=h&&(h.value??h);return typeof A=="string"&&A||"en"}const{scrimRef:$,scrimStyle:v}=qu(d);function C(A,M,{autoprint:S=!1}={}){const E=document.createElement("iframe");E.setAttribute("aria-hidden","true"),E.style.cssText="position:fixed;right:0;bottom:0;width:1px;height:1px;opacity:0;border:0",document.body.appendChild(E);const V=E.contentDocument;if(!V)return E.remove(),null;V.open(),V.write(M),S&&V.write(' - + - + - + - + - + - +