{
  "version": 3,
  "sources": ["../../vendor/mg-design/js/overlays.js", "../../src/assets/javascripts/lib/explorer.js", "../../src/assets/javascripts/lib/filters.js", "../../src/assets/javascripts/lib/flash.js", "../../src/assets/javascripts/lib/last-login.js", "../../src/assets/javascripts/lib/pricing.js", "../../src/assets/javascripts/lib/secret.js", "../../src/assets/javascripts/lib/shell.js", "../../src/assets/javascripts/lib/theme.js", "../../src/assets/javascripts/index.js"],
  "sourcesContent": ["// mg-design behavior for menus, flyouts, popovers, modals and tabs \u2014 progressive enhancement and additive: every panel renders and every item is a real control without this file; this adds toggling, keyboard nav, dismissal, the modal focus trap, focus restoration, and the tab strip's roving tabindex.\n// Tabs are not an overlay and the file name says otherwise, which is the smaller of two costs: the name sits in every consumer's import line and in every page that documents one of these components, while a second behavior file would mean a second import, a second delegation guard, and a consumer who wired one and not the other. One module that wires everything is the property worth keeping.\n// Listeners are delegated from `document` rather than bound per element, because consumers re-render whole regions (an HTMX swap, a client-side router) and per-element listeners don't survive the swap that replaces their element.\n// No framework, no dependencies, no build step \u2014 import it and it wires itself up: `import \"mg-design/js/overlays.js\";`\n\nconst FOCUSABLE =\n    'a[href],button:not([disabled]),input:not([disabled]),select,textarea,[tabindex]:not([tabindex=\"-1\"])';\n\n// The guard is a marker on `document`, not a module-level flag alone, because a bundler can instantiate this module twice under two specifiers and each copy would otherwise bind its own pair of listeners, firing every handler twice.\nconst BOUND = Symbol.for(\"mg-design.overlays.bound\");\n\n// What had focus when the current dialog opened; restored by `closeModal`.\nlet lastTrigger = null;\n\n// True only while `closeAllPopups` hands focus back to a trigger. A flyout opens on `focusin`, so that restoration would otherwise reopen the panel Escape just closed.\nlet restoringFlyout = false;\n\n// Same idea for drawers, keyed by panel rather than held as one value: a page may carry more than one, and each has to hand focus back to whatever opened it rather than to whatever opened the last one.\nconst drawerTrigger = new WeakMap();\n\n// A toggled panel is modal when it is rendered as a fixed overlay with a scrim over the page \u2014 the rail below `sm`, never the same rail as a permanent column above it.\n// The used value of `position` is the test rather than a breakpoint repeated in JS, so the stylesheet stays the single place that decides where a rail stops being furniture and starts being a dialog. Re-testing a width here would be a second copy of that number, free to drift.\nfunction modalPanel(panel) {\n    if (!panel || panel.hidden) return null;\n    return getComputedStyle(panel).position === \"fixed\" ? panel : null;\n}\n\n// Every open drawer on the page, in DOM order.\nfunction openDrawers() {\n    return [...document.querySelectorAll(\"[data-toggle][aria-controls]\")]\n        .map((t) => document.getElementById(t.getAttribute(\"aria-controls\")))\n        .filter((panel, i, all) => panel && all.indexOf(panel) === i)\n        .filter((panel) => modalPanel(panel));\n}\n\nfunction closeDrawer(panel) {\n    panel.hidden = true;\n    for (const t of document.querySelectorAll(`[aria-controls=\"${panel.id}\"][aria-expanded]`)) {\n        t.setAttribute(\"aria-expanded\", \"false\");\n    }\n    // \uD83D\uDEA8 The same restoration the dialog does, and the same reason: without it, dismissing the drawer leaves focus on an element that has just stopped rendering, and the next Tab starts from the top of the document.\n    const trigger = drawerTrigger.get(panel);\n    if (trigger && document.contains(trigger)) trigger.focus();\n    drawerTrigger.delete(panel);\n}\n\n// Passing the panel that is about to open as `except` is what enforces \"only one popup at a time\" without closing and immediately reopening the one being toggled.\nfunction closeAllPopups(except) {\n    for (const panel of document.querySelectorAll(\".menu:not([hidden]),.pop:not([hidden]),.flyout:not([hidden])\")) {\n        if (panel === except) continue;\n        // Read before the panel is hidden, since hiding the element that holds focus is what drops a keyboard user at the top of the document \u2014 the same failure `closeModal` guards against. On a click outside, focus has already moved to whatever was clicked, so this is false and nothing is stolen back.\n        const held = panel.contains(document.activeElement);\n        panel.hidden = true;\n        const owner = document.querySelector(`[aria-controls=\"${panel.id}\"]`);\n        if (owner) owner.setAttribute(\"aria-expanded\", \"false\");\n        if (held && owner && document.contains(owner)) {\n            restoringFlyout = true;\n            owner.focus();\n            restoringFlyout = false;\n        }\n    }\n}\n\nfunction openModal(box) {\n    // Captured before the dialog takes focus, so there is still something to hand focus back to.\n    lastTrigger = document.activeElement;\n    box.hidden = false;\n    const first = box.querySelector(FOCUSABLE);\n    if (first) first.focus();\n}\n\nfunction closeModal(box) {\n    box.hidden = true;\n    // \uD83D\uDEA8 Returning focus to whatever opened the dialog is the half of this easiest to drop, and its absence is invisible to anyone testing with a mouse \u2014 without it, closing a dialog dumps a keyboard user back at the top of the document with no idea where they were.\n    // The `document.contains` check covers the case where the dialog's own action removed the trigger from the page.\n    if (lastTrigger && document.contains(lastTrigger)) lastTrigger.focus();\n    lastTrigger = null;\n}\n\n// Removing the node that holds focus drops a keyboard user at the top of the document, the same failure closeModal guards against. Focus moves to a neighboring message where there is one; otherwise to the container, which is the nearest thing to where the reader was.\nfunction dismissNote(note) {\n    const held = note.contains(document.activeElement);\n    const sibling = [note.nextElementSibling, note.previousElementSibling].find((s) => s && s.matches(\".flash,.banner\"));\n    const parent = note.parentElement;\n    note.remove();\n    if (!held) return;\n    const next = sibling ? sibling.querySelector(\"[data-dismiss]\") : null;\n    if (next) {\n        next.focus();\n        return;\n    }\n    // A banner has no required container, so the parent can be anything up to the body \u2014 which is where focus lands on its own, and not worth borrowing an attribute for.\n    if (!parent || !parent.isConnected || parent === document.body || parent === document.documentElement) return;\n    // Borrowed, not granted: a consumer's markup must not be permanently altered by dismissing a message, so the attribute comes off again once focus leaves.\n    const borrowed = !parent.hasAttribute(\"tabindex\");\n    if (borrowed) {\n        parent.setAttribute(\"tabindex\", \"-1\");\n        parent.addEventListener(\"blur\", () => parent.removeAttribute(\"tabindex\"), { once: true });\n    }\n    parent.focus();\n}\n\n// Selection, the roving tabindex and the panels are one operation, because they are three statements of one fact and any pair of them agreeing while the third does not is a set that lies to somebody. `aria-selected=\"false\"` is written rather than dropped, so a tab always reports a state instead of leaving one to be inferred.\n// Driven by role rather than by class, unlike the menu below it: `role=\"tab\"` and `role=\"tablist\"` are what `MARKUP.md` obliges a consumer to write, so they are the one hook that is guaranteed present \u2014 and any conforming tab set gets this behavior, whether or not it took our stylesheet.\nfunction selectTab(tab) {\n    const list = tab.closest('[role=\"tablist\"]');\n    if (!list) return;\n    for (const t of list.querySelectorAll('[role=\"tab\"]')) {\n        const on = t === tab;\n        t.setAttribute(\"aria-selected\", String(on));\n        // The whole strip is one tab stop: Tab reaches the selected tab and then leaves for the panel, and the arrows move within. Without this every tab is its own stop and a six-tab strip costs six presses to walk past.\n        t.setAttribute(\"tabindex\", on ? \"0\" : \"-1\");\n        const panel = document.getElementById(t.getAttribute(\"aria-controls\"));\n        if (panel) panel.hidden = !on;\n    }\n    // Safari does not focus a button when it is clicked, so without this the roving tabindex has nothing to rove from: a mouse user who selects a tab and then presses ArrowRight moves nothing.\n    tab.focus();\n}\n\nfunction onClick(e) {\n    // A click can land on a node that isn't an Element (the document itself, a text node) which has no `closest`; treating that as a click outside every popup is both correct and cheaper than guarding each lookup below.\n    const target = e.target instanceof Element ? e.target : null;\n    if (!target) {\n        closeAllPopups(null);\n        return;\n    }\n\n    const toggle = target.closest(\"[data-toggle]\");\n    if (toggle) {\n        const panel = document.getElementById(toggle.getAttribute(\"aria-controls\"));\n        if (panel) {\n            const willOpen = panel.hidden;\n            closeAllPopups(panel);\n            panel.hidden = !willOpen;\n            // Every element pointing at this panel, not just the one clicked \u2014 c-rail's drawer has three (open trigger, internal close button, scrim) sharing one aria-controls target, and a trigger left unsynced announces a state the panel no longer has.\n            for (const t of document.querySelectorAll(`[aria-controls=\"${panel.id}\"][aria-expanded]`)) {\n                t.setAttribute(\"aria-expanded\", String(willOpen));\n            }\n            // Focus moves to the first item so the arrow keys have somewhere to start; a popover has no items and keeps focus on its trigger.\n            if (willOpen) {\n                const firstItem = panel.querySelector(\".menu-item\");\n                if (firstItem) firstItem.focus();\n            }\n            // A drawer is a dialog while it is open, so it takes focus on the way in and gives it back on the way out. Captured after the panel is shown, because whether it counts as modal depends on how it is now rendered.\n            if (willOpen && modalPanel(panel)) {\n                drawerTrigger.set(panel, toggle);\n                const first = panel.querySelector(FOCUSABLE);\n                if (first) first.focus();\n            } else if (!willOpen) {\n                const trigger = drawerTrigger.get(panel);\n                if (trigger && document.contains(trigger)) trigger.focus();\n                drawerTrigger.delete(panel);\n            }\n        }\n        return;\n    }\n\n    const opener = target.closest(\"[data-open]\");\n    if (opener) {\n        const box = document.getElementById(opener.dataset.open);\n        if (box) openModal(box);\n        return;\n    }\n\n    const closer = target.closest(\"[data-dismiss]\");\n    if (closer) {\n        // One lookup, so the NEAREST of the three wins. Asking for `.modal-scrim` first would make a flash rendered inside a dialog close the whole dialog, and `_flash.scss` blesses inline placement.\n        const owner = closer.closest(\".modal-scrim,.flash,.banner\");\n        if (owner && owner.classList.contains(\"modal-scrim\")) {\n            closeModal(owner);\n            return;\n        }\n        // A flash or a banner is dismissed by removal rather than by hiding \u2014 it is a message that has been read, not a panel that might reopen. Without this branch the dismiss button is visible, focusable and correctly labeled, and does nothing, which is a worse failure than having no button at all.\n        if (owner) dismissNote(owner);\n        return;\n    }\n\n    if (target.classList.contains(\"modal-scrim\")) {\n        closeModal(target);\n        return;\n    }\n\n    // No early return: selecting a tab is also a click outside every open popup, and the line below is what closes them.\n    const tab = target.closest('[role=\"tab\"]');\n    if (tab) selectTab(tab);\n\n    if (!target.closest(\".menu,.pop,.flyout\")) closeAllPopups(null);\n}\n\n// A flyout's trigger may be a link that navigates, which is why this is a separate path from `[data-toggle]` rather than a wider reading of it: `onClick` binds that attribute, and a control that both navigates and toggles does neither predictably. Hover and focus are what open this one, so the two write the same pair of facts the click path writes.\nfunction setFlyout(wrap, open) {\n    const trigger = wrap.querySelector(\"[aria-controls]\");\n    const panel = trigger && document.getElementById(trigger.getAttribute(\"aria-controls\"));\n    if (!panel || panel.hidden === !open) return;\n    if (open) closeAllPopups(panel);\n    panel.hidden = !open;\n    for (const t of document.querySelectorAll(`[aria-controls=\"${panel.id}\"][aria-expanded]`)) {\n        t.setAttribute(\"aria-expanded\", String(open));\n    }\n}\n\n// `pointerover` and `pointerout` rather than `pointerenter`/`pointerleave`: only the bubbling pair can be delegated from `document`, which is what keeps a flyout arriving in a swapped-in fragment working with no re-initialization.\nfunction onPointer(e) {\n    // \uD83D\uDEA8 Mouse only. A tap fires these too, so on a touch device a link trigger would open the panel and navigate away from it in one gesture \u2014 the reader never sees what they opened. Touch gets the click path, where a button trigger toggles and a link trigger simply goes where it says.\n    if (e.pointerType !== \"mouse\") return;\n    const wrap = e.target instanceof Element ? e.target.closest(\".flyout-wrap\") : null;\n    if (!wrap) return;\n    // Moving between the trigger and the panel is still inside the wrapper; without this test every internal transition would close and reopen the panel under the pointer.\n    const to = e.relatedTarget instanceof Element ? e.relatedTarget.closest(\".flyout-wrap\") : null;\n    if (to === wrap) return;\n    setFlyout(wrap, e.type === \"pointerover\");\n}\n\n// The keyboard half, and the reason a link trigger stays reachable without a second control in the bar: `focusin` opens the panel when the trigger takes focus, so Tab walks straight from the trigger into the links it discloses. Both events bubble, so both delegate.\nfunction onFocusShift(e) {\n    const wrap = e.target instanceof Element ? e.target.closest(\".flyout-wrap\") : null;\n    const to = e.relatedTarget instanceof Element ? e.relatedTarget.closest(\".flyout-wrap\") : null;\n    if (wrap && e.type === \"focusin\") {\n        // Set while Escape hands focus back to the trigger, because that restoration lands here as a `focusin` on the very wrapper just closed and would otherwise reopen it.\n        if (!restoringFlyout) setFlyout(wrap, true);\n        return;\n    }\n    // Closing on the way out is what stops a panel the reader has tabbed past staying open behind them. Tabbing from the trigger into its own panel is not on the way out.\n    if (wrap && to !== wrap) setFlyout(wrap, false);\n}\n\nfunction onKeydown(e) {\n    if (e.key === \"Escape\") {\n        // A dialog outranks a popup: if both are open, Escape closes the dialog and leaves the popup for the next press.\n        const openBox = document.querySelector(\".modal-scrim:not([hidden])\");\n        if (openBox) {\n            closeModal(openBox);\n            return;\n        }\n        // Then a drawer, for the same reason a dialog outranks a popup: whatever is covering the page is what Escape is asking to get out of.\n        const drawer = openDrawers().pop();\n        if (drawer) {\n            closeDrawer(drawer);\n            return;\n        }\n        closeAllPopups(null);\n        return;\n    }\n\n    const box = document.querySelector(\".modal-scrim:not([hidden])\") || openDrawers().pop();\n    if (box && e.key === \"Tab\") {\n        // The focus trap \u2014 without it, Tab walks straight out of the dialog into the page behind the scrim, hidden from sight but still fully reachable by keyboard. The `offsetParent` filter drops controls inside a collapsed section, focusable in the DOM but not on screen.\n        const items = [...box.querySelectorAll(FOCUSABLE)].filter((el) => el.offsetParent !== null);\n        if (!items.length) return;\n        const first = items[0];\n        const last = items[items.length - 1];\n        if (e.shiftKey && document.activeElement === first) {\n            e.preventDefault();\n            last.focus();\n        } else if (!e.shiftKey && document.activeElement === last) {\n            e.preventDefault();\n            first.focus();\n        }\n        return;\n    }\n\n    const menu = e.target instanceof Element ? e.target.closest(\".menu\") : null;\n    if (menu && (e.key === \"ArrowDown\" || e.key === \"ArrowUp\" || e.key === \"Home\" || e.key === \"End\")) {\n        // The default has to go: ArrowDown scrolls the page behind the menu, and Home jumps it to the top.\n        e.preventDefault();\n        const opts = [...menu.querySelectorAll(\".menu-item\")];\n        const at = opts.indexOf(document.activeElement);\n        // The modulo is what wraps: ArrowDown off the last item lands on the first, ArrowUp off the first lands on the last.\n        const next =\n            e.key === \"Home\"\n                ? 0\n                : e.key === \"End\"\n                  ? opts.length - 1\n                  : e.key === \"ArrowDown\"\n                    ? (at + 1) % opts.length\n                    : (at - 1 + opts.length) % opts.length;\n        if (opts[next]) opts[next].focus();\n        return;\n    }\n\n    const tab = e.target instanceof Element ? e.target.closest('[role=\"tab\"]') : null;\n    const list = tab ? tab.closest('[role=\"tablist\"]') : null;\n    if (list && (e.key === \"ArrowRight\" || e.key === \"ArrowLeft\" || e.key === \"Home\" || e.key === \"End\")) {\n        // Same default to suppress as the menu's, one axis over: Home and End throw the page to its ends, and the arrows scroll it sideways under a strip that is itself a scroller.\n        e.preventDefault();\n        const tabs = [...list.querySelectorAll('[role=\"tab\"]')];\n        const at = tabs.indexOf(tab);\n        // An arrow key means \"the next tab along\", and which one that is depends on which way the strip runs \u2014 a right arrow in RTL moves toward the start of the list, the same as it does in every native control the reader already uses.\n        const forward = getComputedStyle(list).direction === \"rtl\" ? e.key === \"ArrowLeft\" : e.key === \"ArrowRight\";\n        // The modulo wraps, matching the menu above: a strip is a closed set of a handful of choices, so arrowing off one end and stopping dead reads as the key having failed rather than as an edge.\n        const next =\n            e.key === \"Home\"\n                ? 0\n                : e.key === \"End\"\n                  ? tabs.length - 1\n                  : forward\n                    ? (at + 1) % tabs.length\n                    : (at - 1 + tabs.length) % tabs.length;\n        // Selection follows focus, which is only correct because every panel is already in the DOM \u2014 there is nothing to fetch, so making the reader confirm with Enter would be a second press for no information. A set whose panels were built on demand would want the opposite, and would not be this component.\n        if (tabs[next]) selectTab(tabs[next]);\n    }\n}\n\n// Idempotent \u2014 safe to call any number of times, and called once automatically below so a bare import is enough; a consumer only calls it directly when the module loaded somewhere `document` didn't exist yet.\nexport function init() {\n    if (typeof document === \"undefined\" || document[BOUND]) return;\n    document[BOUND] = true;\n    document.addEventListener(\"click\", onClick);\n    document.addEventListener(\"keydown\", onKeydown);\n    document.addEventListener(\"pointerover\", onPointer);\n    document.addEventListener(\"pointerout\", onPointer);\n    document.addEventListener(\"focusin\", onFocusShift);\n    document.addEventListener(\"focusout\", onFocusShift);\n}\n\ninit();\n", "// The API Explorer (`/explorer/`): Scalar mounted in the account shell, our rail's per-operation links, and the landing page's search.\n// The server decides what a reader may do; this file only enforces it in the browser (`api.reference.mark_for_reader`) and never widens it.\n\nfunction readJson(id) {\n    const node = document.getElementById(id);\n    return node ? JSON.parse(node.textContent) : null;\n}\n\nfunction darkMode() {\n    const stamped = document.documentElement.getAttribute('data-theme');\n    if (stamped) return stamped === 'dark';\n    return window.matchMedia('(prefers-color-scheme: dark)').matches;\n}\n\n// `/api/contracts/{key}/` \u2192 a pattern for a concrete request path.\nfunction pathPattern(template) {\n    const escaped = template.replace(/[.*+?^$()|[\\]\\\\]/g, '\\\\$&').replace(/\\{[^}]+\\}/g, '[^/]+');\n    return new RegExp('^' + escaped + '$');\n}\n\nfunction compileBlocked(blocked) {\n    return blocked.map(function (entry) {\n        return Object.assign({ pattern: pathPattern(entry.path) }, entry);\n    });\n}\n\n// The first rule the request trips, or null: a blocked operation, or a locked filter parameter it carries.\nfunction refusal(rules, method, url) {\n    for (const rule of rules) {\n        if (rule.method !== method || !rule.pattern.test(url.pathname)) continue;\n        if (rule.kind !== 'parameter' || url.searchParams.has(rule.parameter)) return rule;\n    }\n    return null;\n}\n\nfunction requestParts(input, init) {\n    const url = new URL(input instanceof Request ? input.url : String(input), window.location.origin);\n    const method = ((init && init.method) || (input instanceof Request ? input.method : 'GET')).toUpperCase();\n    return { url: url, method: method };\n}\n\n// \uD83D\uDEA8 The page is the only thing that knows to refuse, so this guard is the backstop for every send \u2014 Test Request, the client modal's own list, and a re-sent request alike.\nfunction explorerFetch(rules, upgradeUrl) {\n    return function (input, init) {\n        const parts = requestParts(input, init);\n        const rule = refusal(rules, parts.method, parts.url);\n        if (rule) {\n            const body = { detail: rule.message, sent: false };\n            if (rule.upgrade) body.compare_plans = new URL(upgradeUrl, window.location.origin).href;\n            return Promise.resolve(\n                new Response(JSON.stringify(body, null, 2), {\n                    status: 403,\n                    statusText: 'Not sent from the Explorer',\n                    headers: { 'Content-Type': 'application/json' },\n                }),\n            );\n        }\n        // Tags the reader's requests so analytics can split explorer traffic from SDK traffic (`analytics.middleware.EXPLORER_CLIENT`).\n        const headers = new Headers((init && init.headers) || (input instanceof Request ? input.headers : undefined));\n        headers.set('X-Tango-Client', 'explorer');\n        return fetch(input, Object.assign({}, init, { headers: headers }));\n    };\n}\n\n// A blocked operation keeps its documentation but loses its Test Request button, replaced by why and, when a plan fixes it, where.\nfunction replaceBlockedButtons(root, rules, upgradeUrl) {\n    const operations = rules.filter(function (rule) {\n        return rule.kind !== 'parameter';\n    });\n    root.querySelectorAll('button.show-api-client-button:not([data-explorer-checked])').forEach(function (button) {\n        button.setAttribute('data-explorer-checked', '');\n        const match = /\\((\\w+) ([^)]+)\\)/.exec(button.textContent);\n        if (!match) return;\n        const method = match[1].toUpperCase();\n        const rule = operations.find(function (r) {\n            return r.method === method && r.pattern.test(match[2].trim().replace(/\\{[^}]+\\}/g, 'x'));\n        });\n        if (!rule) return;\n        const note = document.createElement('p');\n        note.className = 'explorer-blocked-note';\n        note.textContent = rule.message + ' ';\n        if (rule.upgrade) {\n            const link = document.createElement('a');\n            link.href = upgradeUrl;\n            link.textContent = 'Compare plans';\n            note.appendChild(link);\n        }\n        button.replaceWith(note);\n    });\n}\n\n// Scalar skips its initial focus under reduced motion, so put focus inside the client ourselves.\nfunction focusClientOnOpen(root) {\n    root.addEventListener(\n        'click',\n        function (event) {\n            if (!event.target.closest('.show-api-client-button')) return;\n            let frames = 0;\n            (function settle() {\n                const dialog = document.querySelector('.scalar-client[role=dialog]');\n                if (dialog && getComputedStyle(dialog).visibility === 'visible') {\n                    if (!dialog.contains(document.activeElement)) {\n                        const first = dialog.querySelector(\"button:not([disabled]), [href], input, [tabindex]:not([tabindex='-1'])\");\n                        if (first) first.focus();\n                    }\n                    return;\n                }\n                if (++frames < 120) requestAnimationFrame(settle);\n            })();\n        },\n        true,\n    );\n}\n\n// Scalar reads `forceDarkModeState` once, so later shell theme changes are mirrored onto its body classes, which set `color-scheme`.\nfunction syncThemeWithShell() {\n    function sync() {\n        const dark = darkMode();\n        document.body.classList.toggle('dark-mode', dark);\n        document.body.classList.toggle('light-mode', !dark);\n    }\n    new MutationObserver(sync).observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] });\n    window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', sync);\n}\n\n// Our rail's operation links target Scalar's section ids; Scalar renders sections lazily, so a link it has not built yet falls back to its own hash routing.\nfunction linkRailToReference() {\n    const resource = document.querySelector(\".explorer-nav-link[aria-current='page']\");\n    if (resource) resource.scrollIntoView({ block: 'nearest' });\n\n    const links = Array.from(document.querySelectorAll('.explorer-nav-op'));\n    if (!links.length) return;\n\n    function markCurrent(anchor) {\n        links.forEach(function (link) {\n            if (link.getAttribute('data-anchor') === anchor) {\n                link.setAttribute('aria-current', 'location');\n            } else {\n                link.removeAttribute('aria-current');\n            }\n        });\n    }\n\n    // Scalar routes the hash itself, lazily rendered sections included, so the link's own navigation is left alone.\n    // Its section ids carry a document prefix (`api-1/tag/\u2026`) the hash omits, hence the suffix match when handing focus over.\n    links.forEach(function (link) {\n        link.addEventListener('click', function () {\n            const anchor = link.getAttribute('data-anchor');\n            markCurrent(anchor);\n            setTimeout(function () {\n                const section = Array.from(document.querySelectorAll('#explorer-app [id]')).find(function (el) {\n                    return el.id === anchor || el.id.endsWith('/' + anchor);\n                });\n                const heading = section && section.querySelector('h1, h2, h3');\n                if (heading) {\n                    heading.setAttribute('tabindex', '-1');\n                    heading.focus({ preventScroll: true });\n                }\n            }, 600);\n        });\n    });\n\n    // Scalar rewrites the hash with `replaceState` as the reader scrolls, which fires no event, so the scroller is watched instead.\n    const scroller = document.querySelector('.shell-main') || window;\n    let pending = false;\n    function syncFromHash() {\n        pending = false;\n        const anchor = decodeURIComponent(window.location.hash.slice(1));\n        if (links.some((link) => link.getAttribute('data-anchor') === anchor)) markCurrent(anchor);\n    }\n    scroller.addEventListener(\n        'scroll',\n        function () {\n            if (!pending) {\n                pending = true;\n                requestAnimationFrame(syncFromHash);\n            }\n        },\n        { passive: true },\n    );\n    window.addEventListener('hashchange', syncFromHash);\n    syncFromHash();\n}\n\nfunction mountReference() {\n    const root = document.getElementById('explorer-app');\n    if (!root || typeof window.Scalar === 'undefined') return;\n\n    const upgradeUrl = root.getAttribute('data-upgrade-url');\n    const rules = compileBlocked(readJson('explorer-blocked') || []);\n    const key = readJson('explorer-key');\n    const config = {\n        content: readJson('explorer-schema'),\n        // The schema advertises the production host; requests must hit whichever deploy served the page.\n        servers: [{ url: window.location.origin }],\n        theme: 'none',\n        withDefaultFonts: false,\n        showSidebar: false,\n        hideDarkModeToggle: true,\n        hideModels: true,\n        documentDownloadType: 'none',\n        showDeveloperTools: 'never',\n        persistAuth: false,\n        // \uD83D\uDEA8 Every request carries the reader's live key, so Scalar's telemetry, hosted agent and MCP generator stay off.\n        telemetry: false,\n        agent: { disabled: true },\n        mcp: { disabled: true },\n        customFetch: explorerFetch(rules, upgradeUrl),\n        // \"Test Request\" read as firing in place; it opens Scalar's client, which also writes the request as code.\n        localization: { translations: { operation: { testRequest: 'Open in API client' } } },\n        // No `defaultHttpClient`: Scalar restores the reader's last-picked client itself, and setting one here overwrites it on every load.\n        forceDarkModeState: darkMode() ? 'dark' : 'light',\n    };\n    if (key) {\n        config.authentication = {\n            preferredSecurityScheme: 'API Key',\n            securitySchemes: { 'API Key': { value: key } },\n        };\n    }\n    window.Scalar.createApiReference('#explorer-app', config);\n\n    replaceBlockedButtons(root, rules, upgradeUrl);\n    new MutationObserver(function () {\n        replaceBlockedButtons(root, rules, upgradeUrl);\n    }).observe(root, { childList: true, subtree: true });\n\n    syncThemeWithShell();\n    focusClientOnOpen(root);\n    linkRailToReference();\n}\n\n// The landing page's endpoint search: an ARIA 1.2 combobox over every operation the reader may see.\nfunction mountSearch() {\n    const input = document.getElementById('explorer-search');\n    const list = document.getElementById('explorer-search-results');\n    const status = document.getElementById('explorer-search-status');\n    const index = readJson('explorer-index');\n    if (!input || !list || !index) return;\n\n    const base = input.getAttribute('data-tag-url');\n    const limit = 12;\n    let results = [];\n    let active = -1;\n\n    const entries = index.map(function (op) {\n        return Object.assign({ haystack: (op.method + ' ' + op.path + ' ' + op.summary + ' ' + op.resource).toLowerCase() }, op);\n    });\n\n    function hrefFor(op) {\n        return base.replace('__tag__', encodeURIComponent(op.tag)) + '#' + op.anchor;\n    }\n\n    const METHODS = ['get', 'post', 'put', 'patch', 'delete'];\n\n    function score(op, terms) {\n        let total = 0;\n        for (const term of terms) {\n            // A method name matches only the method, or \"get\" would rank /budget-flows/ over the resource itself.\n            if (METHODS.includes(term)) {\n                if (op.method.toLowerCase() !== term) return -1;\n                total += 1;\n                continue;\n            }\n            const at = op.haystack.indexOf(term);\n            if (at === -1) return -1;\n            total += op.path.toLowerCase().includes(term) ? 2 : 1;\n            if (at === 0) total += 1;\n        }\n        return total;\n    }\n\n    function close() {\n        list.hidden = true;\n        input.setAttribute('aria-expanded', 'false');\n        input.removeAttribute('aria-activedescendant');\n        active = -1;\n    }\n\n    function setActive(next) {\n        const options = list.querySelectorAll('[role=option]');\n        if (!options.length) return;\n        active = (next + options.length) % options.length;\n        options.forEach(function (option, i) {\n            option.setAttribute('aria-selected', String(i === active));\n        });\n        input.setAttribute('aria-activedescendant', options[active].id);\n        options[active].scrollIntoView({ block: 'nearest' });\n    }\n\n    function render() {\n        const terms = input.value.toLowerCase().split(/\\s+/).filter(Boolean);\n        list.innerHTML = '';\n        if (!terms.length) {\n            results = [];\n            status.textContent = '';\n            close();\n            return;\n        }\n        results = entries\n            .map(function (op) {\n                return { op: op, score: score(op, terms) };\n            })\n            .filter(function (r) {\n                return r.score >= 0;\n            })\n            .sort(function (a, b) {\n                return b.score - a.score || a.op.path.split('/').length - b.op.path.split('/').length || a.op.path.length - b.op.path.length;\n            })\n            .slice(0, limit)\n            .map(function (r) {\n                return r.op;\n            });\n        results.forEach(function (op, i) {\n            const option = document.createElement('li');\n            option.id = 'explorer-search-option-' + i;\n            option.setAttribute('role', 'option');\n            option.setAttribute('aria-selected', 'false');\n            option.className = 'explorer-search-option';\n            const method = document.createElement('span');\n            method.className = 'explorer-method explorer-method--' + op.method.toLowerCase();\n            method.textContent = op.method;\n            const path = document.createElement('span');\n            path.className = 'explorer-search-path';\n            path.textContent = op.path;\n            const resource = document.createElement('span');\n            resource.className = 'explorer-search-resource';\n            resource.textContent = op.resource;\n            option.append(method, path, resource);\n            option.addEventListener('mousedown', function (event) {\n                event.preventDefault();\n                window.location.href = hrefFor(op);\n            });\n            list.appendChild(option);\n        });\n        status.textContent = results.length ? results.length + (results.length === 1 ? ' endpoint' : ' endpoints') + ' found' : 'No endpoints match';\n        list.hidden = !results.length;\n        input.setAttribute('aria-expanded', String(!!results.length));\n        active = -1;\n        input.removeAttribute('aria-activedescendant');\n    }\n\n    input.addEventListener('input', render);\n    input.addEventListener('keydown', function (event) {\n        if (event.key === 'ArrowDown') {\n            event.preventDefault();\n            if (list.hidden) render();\n            setActive(active + 1);\n        } else if (event.key === 'ArrowUp') {\n            event.preventDefault();\n            setActive(active - 1);\n        } else if (event.key === 'Enter') {\n            const op = results[active >= 0 ? active : 0];\n            if (op) {\n                event.preventDefault();\n                window.location.href = hrefFor(op);\n            }\n        } else if (event.key === 'Escape') {\n            if (!list.hidden) {\n                event.preventDefault();\n                close();\n            } else {\n                input.value = '';\n                render();\n            }\n        }\n    });\n    input.addEventListener('blur', close);\n}\n\n// A one-time pointer to what the API client can do; dismissing it is remembered per browser.\nfunction mountClientHint() {\n    const hint = document.getElementById('explorer-client-hint');\n    if (!hint) return;\n    const key = 'tango-explorer-client-hint-dismissed';\n    try {\n        if (localStorage.getItem(key) === '1') return;\n    } catch (e) {\n        // Without storage the hint shows every time, which is only a small cost.\n    }\n    hint.hidden = false;\n    hint.querySelector('button').addEventListener('click', function () {\n        hint.hidden = true;\n        try {\n            localStorage.setItem(key, '1');\n        } catch (e) {\n            // Nothing to do; it will show again next time.\n        }\n    });\n}\n\nfunction initializeExplorer() {\n    mountReference();\n    mountClientHint();\n    mountSearch();\n}\n\nmodule.exports = {\n    initializeExplorer,\n    pathPattern,\n    refusal,\n};\n", "// A scoping form submits itself when its selects change, so the reader never picks a period and then has to confirm it.\n// \uD83D\uDEA8 The submit button stays in the markup and is removed HERE, not in the template: without scripting the form still needs a way to submit, and a template that ships no button would strand every reader who arrives before this file does.\nfunction initializeFilters() {\n    document.querySelectorAll('form[data-autosubmit]').forEach(function (form) {\n        const actions = form.querySelector('.form-actions');\n        if (actions) actions.remove();\n\n        form.querySelectorAll('select').forEach(function (select) {\n            select.addEventListener('change', function () {\n                form.submit();\n            });\n        });\n    });\n}\n\nmodule.exports = {\n    initializeFilters,\n};\n", "// `data-auto-dismiss` \u2014 app-side by design. mg-design ships the dismiss BUTTON's behavior in `overlays.js` and deliberately not the timer: how long a message should stay is a product decision, not a design-system one.\n// Only a success flash ever carries the attribute. A reader who has to act on a warning or an error loses that chance the moment a timer takes it off the screen for them.\n\nconst DISMISS_AFTER_MS = 6000;\n\nfunction dismiss(flash) {\n    // Same removal `overlays.js` performs for a click, so a timed dismissal and a clicked one leave the DOM in the same state.\n    flash.remove();\n}\n\nfunction initializeFlashes() {\n    const flashes = document.querySelectorAll('.flash[data-auto-dismiss]');\n\n    flashes.forEach(function (flash) {\n        let timer = window.setTimeout(function () {\n            dismiss(flash);\n        }, DISMISS_AFTER_MS);\n\n        // A reader pointing at the message or tabbed into it is still reading it. Canceling outright rather than restarting keeps it on screen until they dismiss it themselves.\n        ['mouseenter', 'focusin'].forEach(function (event) {\n            flash.addEventListener(event, function () {\n                window.clearTimeout(timer);\n                timer = null;\n            });\n        });\n    });\n}\n\nmodule.exports = {\n    initializeFlashes,\n};\n", "// \"You used this last time\" on the provider button a returning reader last reached for, so they don't guess wrong and create a second account against a different provider.\n// \uD83D\uDEA8 The write goes on the form's `submit`, which fires before the round-trip \u2014 so this records ATTEMPTED, not succeeded, and someone who bounces off a consent screen is still told they used that provider. Recording success means reading it back after the callback lands, which is a server round-trip and a different mechanism.\n// The code form is marked on its submit button, not its field: `.marker` centers over the control it points at, and the control here is the button that sends the code.\n\nconst KEY = 'tango.lastLoginMethod';\n\nfunction read() {\n    try {\n        return localStorage.getItem(KEY);\n    } catch (e) {\n        // A private window throws on access rather than returning null, so the catch is the fallback path, not a formality.\n        return null;\n    }\n}\n\nfunction write(value) {\n    try {\n        localStorage.setItem(KEY, value);\n    } catch (e) {\n        // Nothing to do \u2014 signing in still works, it just will not be remembered.\n    }\n}\n\n// \uD83D\uDEA8 A sibling BEFORE the button, never inside it: inside, the marker joins the button's accessible name and \"GitHub\" announces as \"You used this last time GitHub\".\n// \uD83D\uDEA8 Above or below is measured, not assumed: `.pbtn-group` wraps, so which row a button sits in changes with the viewport \u2014 2x2 down to 700px, one column below that. A marker above a button on the second row lands on top of the button above it.\nfunction mark(wrap, label, below) {\n    const marker = document.createElement('span');\n    marker.className = below ? 'marker marker--below' : 'marker';\n    marker.textContent = label;\n    wrap.insertBefore(marker, wrap.firstChild);\n}\n\nfunction hasARowBeneath(wrap, group) {\n    const bottom = wrap.getBoundingClientRect().bottom;\n    return [...group.querySelectorAll('.marker-wrap')].some(function (other) {\n        return other.getBoundingClientRect().top >= bottom;\n    });\n}\n\nfunction isBelowTheFirstRow(wrap, group) {\n    if (!group) return true;\n    const first = group.querySelector('.marker-wrap');\n    return !!first && wrap.getBoundingClientRect().top > first.getBoundingClientRect().top;\n}\n\nfunction initializeLastLogin() {\n    // Scoped to the entrance: the same provider partial serves the account page's connect flow, where \"you used this last time\" is not the question being asked.\n    const entrance = document.querySelector('.entrance-auth');\n    if (!entrance) return;\n\n    const group = entrance.querySelector('.pbtn-group');\n    const label = group && group.getAttribute('data-last-login-label');\n    const last = read();\n\n    entrance.querySelectorAll('form[data-login-method]').forEach(function (form) {\n        const method = form.getAttribute('data-login-method');\n\n        form.addEventListener('submit', function () {\n            write(method);\n        });\n\n        if (!label || method !== last) return;\n\n        // The provider forms ARE the wrap; the code form nests one around its submit button, since a marker centers over the control it points at and the field above is not that control.\n        const wrap = form.matches('.marker-wrap') ? form : form.querySelector('.marker-wrap');\n        if (!wrap) return;\n\n        // The code form's marker always goes below: above it would sit over the email field it belongs to.\n        const inGroup = group && group.contains(form);\n        const below = inGroup ? isBelowTheFirstRow(wrap, group) : true;\n        mark(wrap, label, below);\n\n        // A below-marker overlaps whatever sits under it, which only happens once the group has stacked \u2014 in the 2x2 the marked button's neighbour is beside it, not beneath.\n        if (inGroup && below && hasARowBeneath(wrap, group)) {\n            group.classList.add('pbtn-group--marker-needs-room');\n        }\n    });\n}\n\nmodule.exports = {\n    initializeLastLogin,\n};\n", "// The pricing page's two access types, addressable by URL.\n// The radios still own the selection; this only keeps the fragment and the checked segment agreeing both ways, so a link to `#team` opens on Team and a click on Team leaves an address worth sending.\n// \uD83D\uDEA8 No element on the page carries these ids, deliberately: a matching id makes the browser scroll to the pane on load, and landing halfway down the page is not what a shared link is asking for.\n\nconst PANES = ['individual', 'team'];\n\nfunction paneFromHash() {\n    const name = location.hash.slice(1);\n    return PANES.includes(name) ? name : null;\n}\n\nfunction initializePricingPanes() {\n    const radios = Array.from(document.querySelectorAll('.access-switch input[name=\"access\"]'));\n    if (!radios.length) {\n        return;\n    }\n\n    const select = (name) => {\n        const radio = document.getElementById(`access-${name}`);\n        if (radio && !radio.checked) {\n            radio.checked = true;\n        }\n    };\n\n    const fromHash = paneFromHash();\n    if (fromHash) {\n        select(fromHash);\n    }\n\n    radios.forEach((radio) => {\n        // `replaceState` rather than `pushState`: switching panes is looking at the same page from another angle, and a back button full of toggles is worse than one that leaves the page.\n        radio.addEventListener('change', () => {\n            if (radio.checked) {\n                history.replaceState(null, '', `#${radio.value}`);\n            }\n        });\n    });\n\n    window.addEventListener('hashchange', () => {\n        const name = paneFromHash();\n        if (name) {\n            select(name);\n        }\n    });\n}\n\nmodule.exports = { initializePricingPanes };\n", "// Reveal and copy for mg-design's secret field.\n// The component ships the CSS contract and no script \u2014 `overlays.js` covers menus, modals, popovers and the rail drawer, and nothing else.\n// \uD83D\uDEA8 That contract is entirely attribute-driven: `aria-pressed` on the toggle, `data-copied` on the copy button, icon swaps keyed off both in CSS. Touch those two attributes and nothing else; never add or remove a class.\n\n// Long enough to read, short enough that the button is back to its resting state before it is needed again.\nconst COPIED_MS = 1600;\n\nfunction announce(root, text) {\n    const region = root.querySelector('[data-secret-status]');\n    if (region) region.textContent = text;\n}\n\nfunction onToggle(button) {\n    const secret = button.closest('.secret');\n    if (!secret) return;\n    const input = secret.querySelector('.secret-value');\n    if (!input) return;\n\n    const revealed = button.getAttribute('aria-pressed') === 'true';\n    button.setAttribute('aria-pressed', String(!revealed));\n    input.type = revealed ? 'password' : 'text';\n    // The label has to move with the state \u2014 a button that says \"Show\" while the value is already on screen is confidently wrong.\n    // Taken from the markup where it names its own record, because a page with several secrets needs \"Show Laptop\", not five buttons all called \"Show value\".\n    const show = button.getAttribute('data-label-show') || 'Show value';\n    const hide = button.getAttribute('data-label-hide') || 'Hide value';\n    button.setAttribute('aria-label', revealed ? show : hide);\n}\n\nfunction onCopy(button) {\n    const secret = button.closest('.secret');\n    if (!secret) return;\n    const input = secret.querySelector('.secret-value');\n    if (!input) return;\n\n    // `data-copy` is the component's declared payload source and the input's value is only a fallback: the two agree while the field holds the whole secret, and stop agreeing the moment it renders a masked prefix.\n    const payload = button.getAttribute('data-copy') || input.value;\n\n    const done = function () {\n        button.setAttribute('data-copied', '');\n        announce(secret, 'Copied.');\n        window.setTimeout(function () {\n            button.removeAttribute('data-copied');\n            announce(secret, '');\n        }, COPIED_MS);\n    };\n\n    // `navigator.clipboard` is absent on a page served over plain HTTP, which is every local dev checkout that is not on localhost \u2014 so the selection fallback is a real path, not defensive padding.\n    if (navigator.clipboard && navigator.clipboard.writeText) {\n        navigator.clipboard.writeText(payload).then(done, function () {\n            announce(secret, 'Could not copy. Select the value and copy it.');\n        });\n        return;\n    }\n\n    const wasPassword = input.type === 'password';\n    if (wasPassword) input.type = 'text';\n    input.select();\n    try {\n        document.execCommand('copy');\n        done();\n    } catch (e) {\n        announce(secret, 'Could not copy. Select the value and copy it.');\n    }\n    if (wasPassword) input.type = 'password';\n}\n\nfunction initializeSecrets() {\n    document.addEventListener('click', function (event) {\n        const toggle = event.target.closest('.secret-toggle');\n        if (toggle) {\n            onToggle(toggle);\n            return;\n        }\n        const copy = event.target.closest('.secret-copy');\n        if (copy) onCopy(copy);\n    });\n}\n\nmodule.exports = {\n    initializeSecrets,\n};\n", "// The two bits of shell behavior mg-design deliberately leaves to the consumer.\n// Everything else the shell needs \u2014 opening the drawer, trapping focus inside it, closing it on Escape or scrim click, and handing focus back \u2014 is `vendor/mg-design/js/overlays.js`, imported by `index.js`. Do not reimplement any of that here.\n\nconst KEY = 'tango-rail-collapsed';\n\n// `aria-pressed` on the toggle is the single source of truth: `.rail` and `.shell` both react to it through `:has()`, so there is no second class to keep in step.\n// The label has to move with it. A button that says \"Collapse navigation\" while the rail is already collapsed is worse than an unlabeled one, because it is confidently wrong.\nfunction setCollapsed(button, collapsed) {\n    button.setAttribute('aria-pressed', String(collapsed));\n    button.setAttribute('aria-label', collapsed ? 'Expand navigation' : 'Collapse navigation');\n}\n\n// A page can claim its own preference with `data-rail-scope` on the body (the Explorer does), which defaults to collapsed until the reader chooses.\nfunction scopedKey() {\n    const scope = document.body.getAttribute('data-rail-scope');\n    return scope ? KEY + ':' + scope : null;\n}\n\n// mg-design describes the toggle mechanics and not persistence, which is right for a single-page prototype and wrong here: tango renders a new document on every navigation, so an unstored collapse is undone by the next link the reader clicks.\nfunction readCollapsed() {\n    try {\n        const scoped = scopedKey();\n        if (scoped) return localStorage.getItem(scoped) !== '0';\n        return localStorage.getItem(KEY) === '1';\n    } catch (e) {\n        return Boolean(scopedKey());\n    }\n}\n\nfunction storeCollapsed(collapsed) {\n    try {\n        const scoped = scopedKey();\n        if (scoped) {\n            localStorage.setItem(scoped, collapsed ? '1' : '0');\n        } else if (collapsed) {\n            localStorage.setItem(KEY, '1');\n        } else {\n            localStorage.removeItem(KEY);\n        }\n    } catch (e) {\n        // The toggle still works for this page; it just will not survive the next navigation.\n    }\n}\n\nfunction initializeShell() {\n    const button = document.querySelector('.rail-collapse');\n    if (!button) return;\n\n    setCollapsed(button, readCollapsed());\n\n    button.addEventListener('click', function () {\n        const collapsed = button.getAttribute('aria-pressed') !== 'true';\n        setCollapsed(button, collapsed);\n        storeCollapsed(collapsed);\n    });\n}\n\nmodule.exports = {\n    initializeShell,\n};\n", "// Three-state theme control: system, light, dark.\n// \uD83D\uDEA8 \"System\" is the ABSENCE of a `data-theme` attribute, not a third value: mg-design's token layer resolves its dark palette from `prefers-color-scheme` whenever the root carries no stamp, so stamping anything at all takes the choice away from the OS.\n// \uD83D\uDEA8 First paint is deliberately NOT this file's job \u2014 a blocking snippet in `base.html` owns it, because a deferred bundle runs after the stylesheet has painted and flashes the light palette at every dark-theme reader. This file owns the control, the head owns the initial state, and `KEY` is all they share.\n\nconst KEY = 'tango-theme';\n// The set of valid modes, not a cycle order \u2014 each button names the state it selects, so nothing here decides what comes next.\nconst MODES = ['system', 'light', 'dark'];\n\nfunction read() {\n    try {\n        const stored = localStorage.getItem(KEY);\n        return MODES.indexOf(stored) > 0 ? stored : 'system';\n    } catch (e) {\n        // A private window throws on access rather than returning null, so the catch is the fallback path, not a formality.\n        return 'system';\n    }\n}\n\nfunction apply(mode) {\n    const root = document.documentElement;\n    if (mode === 'system') {\n        root.removeAttribute('data-theme');\n    } else {\n        root.setAttribute('data-theme', mode);\n    }\n\n    try {\n        if (mode === 'system') {\n            localStorage.removeItem(KEY);\n        } else {\n            localStorage.setItem(KEY, mode);\n        }\n    } catch (e) {\n        // Nothing to do \u2014 the theme still applies for this page, it just will not be remembered.\n    }\n\n    // `aria-pressed` is the state itself; the segment's tint only reinforces it for sighted readers.\n    document.querySelectorAll('[data-theme-set]').forEach(function (button) {\n        button.setAttribute('aria-pressed', String(button.getAttribute('data-theme-set') === mode));\n    });\n}\n\nfunction initializeTheme() {\n    apply(read());\n\n    document.addEventListener('click', function (event) {\n        const button = event.target.closest('[data-theme-set]');\n        if (!button) return;\n        const mode = button.getAttribute('data-theme-set');\n        if (MODES.indexOf(mode) !== -1) apply(mode);\n    });\n}\n\nmodule.exports = {\n    initializeTheme,\n};\n", "// mg-design's overlay behavior \u2014 menus, flyouts, popovers, modals, and the nav rail's drawer below 640px. It binds itself on import and is additive: every control it touches still renders and is operable without it.\nrequire('../../../vendor/mg-design/js/overlays.js');\n\nconst { initializeExplorer } = require('./lib/explorer');\nconst { initializeFilters } = require('./lib/filters');\nconst { initializeFlashes } = require('./lib/flash');\nconst { initializeLastLogin } = require('./lib/last-login');\nconst { initializePricingPanes } = require('./lib/pricing');\nconst { initializeSecrets } = require('./lib/secret');\nconst { initializeShell } = require('./lib/shell');\nconst { initializeTheme } = require('./lib/theme');\n\nif (location.search.includes('debug')) {\n    window.debug = true;\n}\n\n// \uD83D\uDEA8 Not `load`, which waits on images: the shell's controls announce their state through `aria-pressed` and are wrong until synced, so `load` leaves a theme segment saying the wrong thing for as long as the slowest asset takes.\ndocument.addEventListener('DOMContentLoaded', () => {\n    initializeTheme();\n    initializeShell();\n    initializeSecrets();\n    initializeFlashes();\n    initializeFilters();\n    initializeLastLogin();\n    initializePricingPanes();\n    initializeExplorer();\n});\n"],
  "mappings": "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",
  "names": ["overlays_exports", "__export", "init", "modalPanel", "panel", "openDrawers", "t", "i", "all", "closeDrawer", "trigger", "drawerTrigger", "closeAllPopups", "except", "held", "owner", "restoringFlyout", "openModal", "box", "lastTrigger", "first", "FOCUSABLE", "closeModal", "dismissNote", "note", "sibling", "s", "parent", "next", "selectTab", "tab", "list", "on", "onClick", "target", "toggle", "willOpen", "firstItem", "opener", "closer", "setFlyout", "wrap", "open", "onPointer", "onFocusShift", "to", "onKeydown", "openBox", "drawer", "items", "el", "last", "menu", "opts", "at", "tabs", "forward", "BOUND", "init_overlays", "__esmMin", "require_explorer", "__commonJSMin", "exports", "module", "readJson", "id", "node", "darkMode", "stamped", "pathPattern", "template", "escaped", "compileBlocked", "blocked", "entry", "refusal", "rules", "method", "url", "rule", "requestParts", "input", "init", "explorerFetch", "upgradeUrl", "parts", "body", "headers", "replaceBlockedButtons", "root", "operations", "button", "match", "r", "note", "link", "focusClientOnOpen", "event", "frames", "settle", "dialog", "first", "syncThemeWithShell", "sync", "dark", "linkRailToReference", "resource", "links", "markCurrent", "anchor", "section", "el", "heading", "scroller", "pending", "syncFromHash", "mountReference", "key", "config", "mountSearch", "list", "status", "index", "base", "limit", "results", "active", "entries", "op", "hrefFor", "METHODS", "score", "terms", "total", "term", "at", "close", "setActive", "next", "options", "option", "i", "render", "a", "b", "path", "mountClientHint", "hint", "e", "initializeExplorer", "require_filters", "__commonJSMin", "exports", "module", "initializeFilters", "form", "actions", "select", "require_flash", "__commonJSMin", "exports", "module", "dismiss", "flash", "initializeFlashes", "timer", "event", "require_last_login", "__commonJSMin", "exports", "module", "KEY", "read", "write", "value", "e", "mark", "wrap", "label", "below", "marker", "hasARowBeneath", "group", "bottom", "other", "isBelowTheFirstRow", "first", "initializeLastLogin", "entrance", "last", "form", "method", "inGroup", "require_pricing", "__commonJSMin", "exports", "module", "PANES", "paneFromHash", "name", "initializePricingPanes", "radios", "select", "radio", "fromHash", "require_secret", "__commonJSMin", "exports", "module", "announce", "root", "text", "region", "onToggle", "button", "secret", "input", "revealed", "show", "hide", "onCopy", "payload", "done", "wasPassword", "e", "initializeSecrets", "event", "toggle", "copy", "require_shell", "__commonJSMin", "exports", "module", "KEY", "setCollapsed", "button", "collapsed", "scopedKey", "scope", "readCollapsed", "scoped", "storeCollapsed", "e", "initializeShell", "require_theme", "__commonJSMin", "exports", "module", "KEY", "MODES", "read", "stored", "apply", "mode", "root", "e", "button", "initializeTheme", "event", "initializeExplorer", "initializeFilters", "initializeFlashes", "initializeLastLogin", "initializePricingPanes", "initializeSecrets", "initializeShell", "initializeTheme"]
}
