@tn3w/openage 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"openage.umd.js","sources":["../src/ui.js","../src/constants.js","../src/widget.js","../src/face-tracker.js","../src/positioning.js","../src/age-estimator.js","../src/liveness.js","../src/transport.js","../src/vm-client.js","../src/challenge.js","../src/index.js"],"sourcesContent":["export const FACE_SVG = `<svg viewBox=\"0 0 100 120\"\n fill=\"none\" class=\"oa-face-svg\">\n <ellipse cx=\"50\" cy=\"55\" rx=\"35\" ry=\"45\"\n stroke=\"currentColor\" stroke-width=\"1.8\"/>\n <ellipse cx=\"36\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <ellipse cx=\"64\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <line x1=\"50\" y1=\"52\" x2=\"48\" y2=\"62\"\n stroke=\"currentColor\" stroke-width=\"1.5\"\n stroke-linecap=\"round\"/>\n <path d=\"M40 72 Q50 79 60 72\"\n stroke=\"currentColor\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" fill=\"none\"/>\n</svg>`;\n\nexport const FACE_ICON_SVG = `<svg viewBox=\"0 0 100 120\"\n fill=\"none\" class=\"oa-face-icon-svg\">\n <ellipse cx=\"50\" cy=\"55\" rx=\"35\" ry=\"45\"\n stroke=\"currentColor\" stroke-width=\"2\"/>\n <ellipse cx=\"36\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <ellipse cx=\"64\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <line x1=\"50\" y1=\"52\" x2=\"48\" y2=\"62\"\n stroke=\"currentColor\" stroke-width=\"1.65\"\n stroke-linecap=\"round\"/>\n <path d=\"M40 72 Q50 79 60 72\"\n stroke=\"currentColor\" stroke-width=\"1.65\"\n stroke-linecap=\"round\" fill=\"none\"/>\n</svg>`;\n\nexport const FACE_GUIDE_SVG = `<svg viewBox=\"0 0 100 120\"\n fill=\"none\" class=\"oa-face-svg\">\n <ellipse cx=\"50\" cy=\"55\" rx=\"35\" ry=\"45\"\n stroke=\"currentColor\" stroke-width=\"1.8\"\n stroke-dasharray=\"6 4\"/>\n <ellipse cx=\"36\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <ellipse cx=\"64\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <line x1=\"50\" y1=\"52\" x2=\"48\" y2=\"62\"\n stroke=\"currentColor\" stroke-width=\"1.5\"\n stroke-linecap=\"round\"/>\n <path d=\"M40 72 Q50 79 60 72\"\n stroke=\"currentColor\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" fill=\"none\"/>\n</svg>`;\n\nexport const CHECK_SVG = `<svg viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"/>\n</svg>`;\n\nexport const CLOSE_SVG = `<svg viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>\n</svg>`;\n\nexport const RETRY_SVG = `<svg viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\">\n <path d=\"m14.955 7.986.116.01a1 1 0 0 1 .85 1.13 8 8 0 0 1-13.374 4.728l-.84.84c-.63.63-1.707.184-1.707-.707V10h3.987c.89 0 1.337 1.077.707 1.707l-.731.731a6 6 0 0 0 8.347-.264 6 6 0 0 0 1.63-3.33 1 1 0 0 1 1.131-.848zM11.514.813a8 8 0 0 1 1.942 1.336l.837-.837c.63-.63 1.707-.184 1.707.707V6h-3.981c-.89 0-1.337-1.077-.707-1.707l.728-.729a6 6 0 0 0-9.98 3.591 1 1 0 1 1-1.98-.281A8 8 0 0 1 11.514.813\"/>\n</svg>`;\n\nexport const SPINNER_SVG = `<svg viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" opacity=\"0.2\"/>\n <path d=\"M12 2 A10 10 0 0 1 22 12\"\n stroke-linecap=\"round\">\n <animateTransform attributeName=\"transform\"\n type=\"rotate\" from=\"0 12 12\" to=\"360 12 12\"\n dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n</svg>`;\n\nexport const SHIELD_SVG = `<svg viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n <path d=\"M12 2l8 4v6c0 5.5-3.8 10-8 12\n C7.8 22 4 17.5 4 12V6l8-4z\"/>\n <path d=\"M9 12l2 2 4-4\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>`;\n\nexport function resolveTheme(theme) {\n if (theme === 'light' || theme === 'dark') return theme;\n return resolveAutoTheme();\n}\n\nexport function watchTheme(host, theme) {\n if (theme === 'light' || theme === 'dark') return;\n if (typeof window === 'undefined') return;\n\n const update = () => {\n host.setAttribute('data-theme', resolveAutoTheme());\n };\n\n const cleanups = [];\n\n for (const query of ['(prefers-color-scheme: dark)', '(prefers-color-scheme: light)']) {\n const cleanup = watchMediaQuery(query, update);\n if (cleanup) cleanups.push(cleanup);\n }\n\n if (typeof MutationObserver === 'function') {\n const observer = new MutationObserver(update);\n const options = {\n attributes: true,\n attributeFilter: ['class', 'data-theme', 'style'],\n };\n\n if (document.documentElement) {\n observer.observe(document.documentElement, options);\n }\n\n if (document.body) {\n observer.observe(document.body, options);\n }\n\n cleanups.push(() => observer.disconnect());\n }\n\n return () => {\n for (const cleanup of cleanups) {\n cleanup();\n }\n };\n}\n\nfunction resolveAutoTheme() {\n if (typeof window === 'undefined') return 'dark';\n\n const documentTheme = resolveDocumentTheme();\n if (documentTheme) return documentTheme;\n\n const systemTheme = resolveSystemTheme();\n if (systemTheme) return systemTheme;\n\n return 'dark';\n}\n\nfunction resolveSystemTheme() {\n if (typeof window.matchMedia !== 'function') {\n return null;\n }\n\n if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n return 'dark';\n }\n\n if (window.matchMedia('(prefers-color-scheme: light)').matches) {\n return 'light';\n }\n\n return null;\n}\n\nfunction resolveDocumentTheme() {\n if (typeof document === 'undefined') return null;\n\n for (const element of [document.documentElement, document.body]) {\n const theme = readThemeHint(element);\n if (theme) return theme;\n }\n\n return null;\n}\n\nfunction readThemeHint(element) {\n if (!element || typeof window.getComputedStyle !== 'function') {\n return null;\n }\n\n const explicit = readExplicitTheme(element);\n if (explicit) return explicit;\n\n const styles = window.getComputedStyle(element);\n const scheme = parseColorScheme(styles.colorScheme);\n if (scheme) return scheme;\n\n return parseBackgroundTheme(styles.backgroundColor);\n}\n\nfunction readExplicitTheme(element) {\n const attrTheme = element.getAttribute('data-theme');\n if (attrTheme === 'light' || attrTheme === 'dark') {\n return attrTheme;\n }\n\n const className = element.className;\n if (typeof className !== 'string') return null;\n\n if (/\\bdark\\b|theme-dark|dark-theme/i.test(className)) {\n return 'dark';\n }\n\n if (/\\blight\\b|theme-light|light-theme/i.test(className)) {\n return 'light';\n }\n\n return null;\n}\n\nfunction parseColorScheme(value) {\n if (!value || value === 'normal') return null;\n\n const normalized = value.toLowerCase();\n const hasDark = normalized.includes('dark');\n const hasLight = normalized.includes('light');\n\n if (hasDark && !hasLight) return 'dark';\n if (hasLight && !hasDark) return 'light';\n\n return null;\n}\n\nfunction parseBackgroundTheme(value) {\n if (!value || value === 'transparent') return null;\n\n const match = value.match(/rgba?\\(([^)]+)\\)/i);\n if (!match) return null;\n\n const parts = match[1]\n .split(',')\n .slice(0, 3)\n .map((part) => Number.parseFloat(part.trim()));\n\n if (parts.length !== 3 || parts.some(Number.isNaN)) {\n return null;\n }\n\n const [red, green, blue] = parts;\n const brightness = (red * 299 + green * 587 + blue * 114) / 1000;\n\n if (brightness <= 140) return 'dark';\n if (brightness >= 180) return 'light';\n\n return null;\n}\n\nfunction watchMediaQuery(query, listener) {\n if (typeof window.matchMedia !== 'function') {\n return null;\n }\n\n const mediaQuery = window.matchMedia(query);\n\n if (typeof mediaQuery.addEventListener === 'function') {\n mediaQuery.addEventListener('change', listener);\n return () => {\n mediaQuery.removeEventListener('change', listener);\n };\n }\n\n if (typeof mediaQuery.addListener === 'function') {\n mediaQuery.addListener(listener);\n return () => {\n mediaQuery.removeListener(listener);\n };\n }\n\n return null;\n}\n\nexport const STYLES = `\n:host {\n --oa-bg: #0b0d11;\n --oa-surface: #14161d;\n --oa-border: #1f2230;\n --oa-text: #e8e8ed;\n --oa-text-muted: #7a7d8c;\n --oa-accent: #4ae68a;\n --oa-accent-dim: rgba(74, 230, 138, 0.12);\n --oa-danger: #ef4444;\n --oa-warn: #f59e0b;\n --oa-radius: 16px;\n --oa-font: 'DM Sans', system-ui, -apple-system,\n sans-serif;\n --oa-mono: 'Space Mono', monospace;\n\n display: block;\n font-family: var(--oa-font);\n color: var(--oa-text);\n line-height: 1.4;\n}\n\n:host([data-theme=\"light\"]) {\n --oa-bg: #f8f9fb;\n --oa-surface: #ffffff;\n --oa-border: #e2e4ea;\n --oa-text: #1a1c24;\n --oa-text-muted: #6b6e7b;\n --oa-accent: #22c55e;\n --oa-accent-dim: rgba(34, 197, 94, 0.1);\n}\n\n* { box-sizing: border-box; margin: 0; padding: 0; }\n\n/* ── Checkbox ────────────────────────────────── */\n\n.oa-checkbox {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: var(--oa-surface);\n border: 2px solid var(--oa-border);\n border-radius: var(--oa-radius);\n cursor: pointer;\n user-select: none;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n\n.oa-checkbox:hover {\n border-color: var(--oa-text-muted);\n}\n\n.oa-checkbox.oa-verified {\n border-color: var(--oa-accent);\n cursor: default;\n}\n\n.oa-checkbox.oa-failed {\n border-color: var(--oa-danger);\n}\n\n.oa-checkbox.oa-retry {\n border-color: var(--oa-danger);\n}\n\n.oa-checkbox.oa-expired {\n border-color: var(--oa-warn);\n}\n\n.oa-checkbox.oa-loading {\n align-items: center;\n}\n\n.oa-check-box {\n width: 24px;\n height: 24px;\n border: 2px solid var(--oa-border);\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: all 0.2s;\n}\n\n.oa-loading .oa-check-box {\n border-color: transparent;\n background: transparent;\n}\n\n.oa-loading .oa-check-box .oa-spinner {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translateY(2px);\n}\n\n.oa-verified .oa-check-box {\n background: var(--oa-accent);\n border-color: var(--oa-accent);\n color: var(--oa-bg);\n}\n\n.oa-failed .oa-check-box {\n background: var(--oa-danger);\n border-color: var(--oa-danger);\n color: white;\n}\n\n.oa-retry .oa-check-box {\n background: var(--oa-danger);\n border-color: var(--oa-danger);\n color: white;\n}\n\n.oa-check-box svg {\n width: 14px;\n height: 14px;\n}\n\n.oa-check-box .oa-spinner svg {\n width: 18px;\n height: 18px;\n}\n\n.oa-label {\n display: flex;\n flex-direction: column;\n gap: 1px;\n flex: 1;\n min-width: 0;\n}\n\n.oa-label-text {\n font-size: 13px;\n font-weight: 600;\n}\n\n.oa-right-section {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n margin-left: auto;\n}\n\n.oa-face-icon-wrap {\n width: 18px;\n height: 22px;\n color: var(--oa-text-muted);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.oa-face-icon-wrap .oa-face-icon-svg {\n width: 100%;\n height: 100%;\n}\n\n.oa-face-icon-wrap .oa-eye {\n transform-box: fill-box;\n transform-origin: center;\n animation: oa-idle-blink 5s ease-in-out infinite;\n}\n\n.oa-face-icon-wrap .oa-face-icon-svg {\n animation: oa-breathe 4s ease-in-out infinite;\n}\n\n.oa-branding-row {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n}\n\n.oa-branding-link {\n font-size: 10px;\n font-weight: 700;\n font-family: var(--oa-mono);\n color: var(--oa-text-muted);\n text-decoration: none;\n letter-spacing: -0.02em;\n cursor: pointer;\n}\n\n.oa-branding-link:hover {\n color: var(--oa-text);\n}\n\n.oa-links-row {\n display: flex;\n gap: 6px;\n justify-content: center;\n}\n\n.oa-links-row a {\n font-size: 9px;\n color: var(--oa-text-muted);\n text-decoration: none;\n opacity: 0.7;\n cursor: pointer;\n}\n\n.oa-links-row a:hover {\n opacity: 1;\n text-decoration: underline;\n}\n\n.oa-compact .oa-label-text {\n font-size: 11px;\n}\n\n.oa-compact .oa-face-icon-wrap {\n width: 16px;\n height: 20px;\n}\n\n/* ── Error banner (inline in checkbox) ───────── */\n\n.oa-error-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n margin-top: 6px;\n background: rgba(239, 68, 68, 0.08);\n border: 1px solid rgba(239, 68, 68, 0.2);\n border-radius: 8px;\n font-size: 12px;\n color: var(--oa-danger);\n animation: oa-fade-in 0.3s ease;\n}\n\n.oa-error-banner button {\n margin-left: auto;\n background: none;\n border: 1px solid var(--oa-danger);\n border-radius: 6px;\n color: var(--oa-danger);\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n cursor: pointer;\n font-family: var(--oa-font);\n flex-shrink: 0;\n}\n\n.oa-error-banner button:hover {\n background: rgba(239, 68, 68, 0.1);\n}\n\n/* ── Popup / Modal shell ─────────────────────── */\n\n.oa-popup {\n position: fixed;\n z-index: 100000;\n background: var(--oa-bg);\n border: 1px solid var(--oa-border);\n border-radius: var(--oa-radius);\n box-shadow: 0 20px 60px rgba(0,0,0,0.4),\n 0 0 0 1px rgba(0,0,0,0.08);\n width: 340px;\n max-height: 90vh;\n overflow: hidden;\n animation: oa-popup-in 0.25s ease;\n display: flex;\n flex-direction: column;\n}\n\n.oa-modal-overlay {\n position: fixed;\n inset: 0;\n z-index: 99999;\n background: rgba(0,0,0,0.65);\n display: flex;\n align-items: center;\n justify-content: center;\n animation: oa-fade-in 0.2s ease;\n backdrop-filter: blur(6px);\n}\n\n.oa-modal {\n background: var(--oa-bg);\n border: 1px solid var(--oa-border);\n border-radius: var(--oa-radius);\n width: 360px;\n max-width: 95vw;\n max-height: 95vh;\n overflow: hidden;\n animation: oa-slide-in 0.3s ease;\n display: flex;\n flex-direction: column;\n}\n\n/* ── Header ──────────────────────────────────── */\n\n.oa-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n border-bottom: 1px solid var(--oa-border);\n flex-shrink: 0;\n}\n\n.oa-logo {\n font-family: var(--oa-mono);\n font-size: 0.85rem;\n letter-spacing: -0.03em;\n color: var(--oa-text-muted);\n text-decoration: none;\n cursor: pointer;\n}\n\n.oa-logo:hover {\n color: var(--oa-text);\n}\n\n.oa-logo strong {\n color: var(--oa-text);\n font-weight: 700;\n}\n\n.oa-badge {\n font-size: 0.55rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--oa-accent);\n background: var(--oa-accent-dim);\n padding: 2px 6px;\n border-radius: 100px;\n margin-left: 6px;\n}\n\n.oa-title {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.oa-close-btn {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n color: var(--oa-text-muted);\n transition: background 0.15s, color 0.15s;\n}\n\n.oa-close-btn:hover {\n background: var(--oa-border);\n color: var(--oa-text);\n}\n\n.oa-close-btn svg {\n width: 16px;\n height: 16px;\n}\n\n/* ── Body (viewport) ─────────────────────────── */\n\n.oa-body {\n flex: 1;\n position: relative;\n overflow: hidden;\n}\n\n/* ── Hero / start screen ─────────────────────── */\n\n.oa-hero {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n padding: 2rem 1.2rem 1.2rem;\n background: var(--oa-surface);\n border: 1px solid var(--oa-border);\n border-radius: var(--oa-radius);\n margin: 10px;\n animation: oa-fade-in 0.4s ease;\n}\n\n.oa-hero-icon {\n width: 80px;\n height: 96px;\n color: var(--oa-text-muted);\n}\n\n.oa-hero-icon .oa-face-svg.oa-idle {\n animation: oa-breathe 4s ease-in-out infinite;\n}\n\n.oa-hero-icon .oa-eye {\n transform-box: fill-box;\n transform-origin: center;\n animation: oa-idle-blink 5s ease-in-out infinite;\n}\n\n.oa-hero-status {\n color: var(--oa-text-muted);\n font-size: 0.8rem;\n font-weight: 500;\n text-align: center;\n min-height: 1.4em;\n}\n\n.oa-hero-privacy {\n font-size: 0.68rem;\n color: var(--oa-text-muted);\n text-align: center;\n line-height: 1.5;\n max-width: 260px;\n opacity: 0.7;\n}\n\n.oa-hero-privacy svg {\n width: 10px;\n height: 10px;\n vertical-align: -2px;\n margin-right: 2px;\n}\n\n/* ── Start / Retry button ────────────────────── */\n\n.oa-actions {\n display: flex;\n justify-content: center;\n padding: 0 14px 14px;\n flex-shrink: 0;\n}\n\n.oa-btn {\n font-family: var(--oa-font);\n padding: 0.55rem 1.5rem;\n border: none;\n border-radius: 10px;\n font-size: 0.8rem;\n font-weight: 600;\n cursor: pointer;\n background: var(--oa-accent);\n color: var(--oa-bg);\n transition: transform 0.12s, opacity 0.15s;\n width: 100%;\n max-width: 240px;\n}\n\n.oa-btn:hover { opacity: 0.88; }\n.oa-btn:active { transform: scale(0.97); }\n\n/* ── Video area ──────────────────────────────── */\n\n.oa-video-area {\n position: relative;\n width: 100%;\n aspect-ratio: 3/4;\n max-height: 55vh;\n background: var(--oa-surface);\n overflow: hidden;\n border-radius: var(--oa-radius);\n margin: 10px;\n width: calc(100% - 20px);\n border: 1px solid var(--oa-border);\n animation: oa-fade-in 0.3s ease;\n}\n\n.oa-video-area video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n transform: scaleX(-1);\n}\n\n/* ── Face guide overlay ──────────────────────── */\n\n.oa-face-guide {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 80%;\n max-width: 360px;\n aspect-ratio: 5/6;\n perspective: 400px;\n color: rgba(255, 255, 255, 0.45);\n pointer-events: none;\n z-index: 2;\n transition: opacity 0.4s ease;\n}\n\n.oa-face-guide .oa-face-svg {\n width: 100%;\n height: 100%;\n transform-origin: center center;\n filter: drop-shadow(\n 0 0 16px rgba(15, 23, 42, 0.16)\n );\n}\n\n.oa-face-guide .oa-eye {\n transform-box: fill-box;\n transform-origin: center;\n}\n\n.oa-face-guide[data-task=\"turn-left\"] .oa-face-svg {\n animation: oa-turn-left 2s ease-in-out infinite;\n}\n.oa-face-guide[data-task=\"turn-right\"] .oa-face-svg {\n animation: oa-turn-right 2s ease-in-out infinite;\n}\n.oa-face-guide[data-task=\"nod\"] .oa-face-svg {\n animation: oa-nod 2s ease-in-out infinite;\n}\n.oa-face-guide[data-task=\"blink-twice\"] .oa-eye {\n animation: oa-blink 2.4s ease-in-out infinite;\n}\n.oa-face-guide[data-task=\"move-closer\"] .oa-face-svg {\n animation: oa-closer 2.5s ease-in-out infinite;\n}\n\n/* ── Challenge HUD (bottom gradient overlay) ── */\n\n.oa-challenge-hud {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n padding: 1rem 0.8rem 0.6rem;\n background: linear-gradient(\n to top,\n rgba(11, 13, 17, 0.92) 0%,\n rgba(11, 13, 17, 0) 100%\n );\n z-index: 3;\n pointer-events: none;\n}\n\n.oa-challenge-text {\n font-size: 0.85rem;\n font-weight: 600;\n text-align: center;\n color: var(--oa-text);\n text-shadow: 0 1px 6px rgba(0, 0, 0, 0.7);\n margin-bottom: 0.4rem;\n}\n\n.oa-challenge-bar {\n height: 3px;\n background: rgba(255, 255, 255, 0.1);\n border-radius: 2px;\n overflow: hidden;\n}\n\n.oa-challenge-fill {\n height: 100%;\n background: var(--oa-accent);\n border-radius: 2px;\n transition: width 0.25s ease;\n}\n\n/* ── Video status (top gradient overlay) ─────── */\n\n.oa-video-status {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n padding: 0.8rem 0.8rem 1.2rem;\n background: linear-gradient(\n to bottom,\n rgba(11, 13, 17, 0.85) 0%,\n rgba(11, 13, 17, 0) 100%\n );\n z-index: 3;\n pointer-events: none;\n}\n\n.oa-video-status p {\n font-size: 0.75rem;\n font-weight: 500;\n text-align: center;\n color: var(--oa-text-muted);\n text-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);\n}\n\n/* ── Result area ─────────────────────────────── */\n\n.oa-result {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.5rem;\n padding: 2rem 1.2rem;\n background: var(--oa-surface);\n border: 1px solid var(--oa-border);\n border-radius: var(--oa-radius);\n margin: 10px;\n animation: oa-fade-in 0.4s ease;\n}\n\n.oa-result-icon {\n font-size: 2.4rem;\n line-height: 1;\n}\n\n.oa-result-text {\n font-size: 0.85rem;\n font-weight: 500;\n text-align: center;\n}\n\n.oa-result-pass { color: var(--oa-accent); }\n.oa-result-fail { color: var(--oa-danger); }\n.oa-result-retry { color: var(--oa-warn); }\n\n.oa-hidden { display: none !important; }\n\n/* ── Animations ──────────────────────────────── */\n\n@keyframes oa-popup-in {\n from { opacity: 0; transform: scale(0.95); }\n to { opacity: 1; transform: scale(1); }\n}\n\n@keyframes oa-fade-in {\n from { opacity: 0; transform: translateY(6px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes oa-slide-in {\n from { opacity: 0; transform: translateY(16px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes oa-breathe {\n 0%, 100% { transform: scale(1); }\n 50% { transform: scale(1.04); }\n}\n\n@keyframes oa-idle-blink {\n 0%, 42%, 48%, 100% { transform: scaleY(1); }\n 44%, 46% { transform: scaleY(0.05); }\n}\n\n@keyframes oa-turn-left {\n 0%, 100% { transform: rotateY(0); }\n 35%, 65% { transform: rotateY(-30deg); }\n}\n\n@keyframes oa-turn-right {\n 0%, 100% { transform: rotateY(0); }\n 35%, 65% { transform: rotateY(30deg); }\n}\n\n@keyframes oa-nod {\n 0%, 100% { transform: rotateX(0); }\n 30%, 50% { transform: rotateX(25deg); }\n}\n\n@keyframes oa-blink {\n 0%, 18%, 32%, 50%, 100% { transform: scaleY(1); }\n 22%, 28% { transform: scaleY(0.05); }\n 40%, 46% { transform: scaleY(0.05); }\n}\n\n@keyframes oa-closer {\n 0%, 100% { transform: scale(1); }\n 35%, 55% { transform: scale(1.3); }\n}\n`;\n\nexport function checkboxTemplate(labelText) {\n return `\n <div class=\"oa-widget-wrap\">\n <div class=\"oa-checkbox\" role=\"checkbox\"\n aria-checked=\"false\" tabindex=\"0\">\n <div class=\"oa-check-box\"></div>\n <div class=\"oa-label\">\n <span class=\"oa-label-text\">${labelText}</span>\n </div>\n <div class=\"oa-right-section\">\n <div class=\"oa-branding-row\">\n <div class=\"oa-face-icon-wrap\">\n ${FACE_ICON_SVG}\n </div>\n <a class=\"oa-branding-link\"\n href=\"https://github.com/tn3w/OpenAge\"\n target=\"_blank\" rel=\"noopener\">OpenAge</a>\n </div>\n <div class=\"oa-links-row\">\n <a href=\"https://github.com/tn3w/OpenAge\"\n target=\"_blank\"\n rel=\"noopener\">Terms</a>\n <a href=\"https://github.com/tn3w/OpenAge\"\n target=\"_blank\"\n rel=\"noopener\">Privacy</a>\n </div>\n </div>\n </div>\n <div class=\"oa-error-slot\"></div>\n </div>\n `;\n}\n\nexport function heroTemplate(statusText) {\n return `\n <div class=\"oa-hero\">\n <div class=\"oa-hero-icon\">\n ${FACE_SVG.replace('class=\"oa-face-svg\"', 'class=\"oa-face-svg oa-idle\"')}\n </div>\n <p class=\"oa-hero-status\">${statusText}</p>\n <p class=\"oa-hero-privacy\">\n ${SHIELD_SVG}\n Open-source &amp; privacy-focused.\n No photos or camera data leave your device.\n </p>\n </div>\n `;\n}\n\nexport function challengeTemplate() {\n return `\n <div class=\"oa-video-area\">\n <video autoplay playsinline muted></video>\n <div class=\"oa-face-guide\">\n ${FACE_GUIDE_SVG}\n </div>\n <div class=\"oa-challenge-hud oa-hidden\">\n <p class=\"oa-challenge-text\"></p>\n <div class=\"oa-challenge-bar\">\n <div class=\"oa-challenge-fill\"\n style=\"width:0%\"></div>\n </div>\n </div>\n <div class=\"oa-video-status\">\n <p></p>\n </div>\n </div>\n `;\n}\n\nexport function resultTemplate(outcome, message) {\n const icons = {\n fail: '✕',\n retry: '↻',\n };\n const classes = {\n fail: 'oa-result-fail',\n retry: 'oa-result-retry',\n };\n return `\n <div class=\"oa-result ${classes[outcome] || ''}\">\n <div class=\"oa-result-icon\">\n ${icons[outcome] || '?'}\n </div>\n <div class=\"oa-result-text\">${message}</div>\n </div>\n `;\n}\n\nexport function errorBannerTemplate(message) {\n return `\n <div class=\"oa-error-banner\">\n <span>${message}</span>\n <button class=\"oa-retry-btn\">Retry</button>\n </div>\n `;\n}\n","export const VERSION = '1.0.0';\n\nexport const MEDIAPIPE_CDN = 'https://cdn.jsdelivr.net/npm/' + '@mediapipe/tasks-vision@0.10.17';\n\nexport const MEDIAPIPE_WASM = `${MEDIAPIPE_CDN}/wasm`;\n\nexport const MEDIAPIPE_VISION = `${MEDIAPIPE_CDN}/vision_bundle.mjs`;\n\nexport const MEDIAPIPE_MODEL =\n 'https://storage.googleapis.com/mediapipe-models/' +\n 'face_landmarker/face_landmarker/float16/1/' +\n 'face_landmarker.task';\n\nexport const FACEAPI_CDN =\n 'https://cdn.jsdelivr.net/npm/' + 'face-api.js@0.22.2/dist/face-api.min.js';\n\nexport const FACEAPI_MODEL_CDN =\n 'https://cdn.jsdelivr.net/gh/' + 'justadudewhohacks/face-api.js@master/weights';\n\nexport const MAX_RETRIES = 3;\nexport const BURST_FRAMES = 5;\nexport const BURST_INTERVAL_MS = 200;\nexport const POSITION_CHECK_MS = 100;\nexport const MOTION_CAPTURE_MS = 3000;\nexport const MOTION_SAMPLE_MS = 100;\nexport const TOKEN_EXPIRY_S = 300;\nexport const STABLE_FRAMES_REQUIRED = 10;\n\nexport const TASK_TIMEOUT_MS = 8000;\nexport const MIN_TASK_TIME_MS = 500;\nexport const TASK_COUNT = 3;\nexport const REQUIRED_TASK_PASSES = 2;\n\nexport const POPUP_MIN_WIDTH = 340;\nexport const POPUP_MIN_HEIGHT = 520;\nexport const POPUP_MARGIN = 12;\n","import {\n STYLES,\n checkboxTemplate,\n heroTemplate,\n challengeTemplate,\n resultTemplate,\n resolveTheme,\n watchTheme,\n SPINNER_SVG,\n CHECK_SVG,\n CLOSE_SVG,\n RETRY_SVG,\n} from './ui.js';\nimport { POPUP_MIN_WIDTH, POPUP_MIN_HEIGHT, POPUP_MARGIN } from './constants.js';\n\nlet widgetCounter = 0;\n\nexport class Widget {\n constructor(container, params) {\n this.id = `oa-${++widgetCounter}`;\n this.params = params;\n this.container = resolveContainer(container);\n this.anchorElement = null;\n this.state = 'idle';\n this.token = null;\n this.popup = null;\n this.shadow = null;\n this.elements = {};\n this.onChallenge = null;\n this.onStartClick = null;\n this.popupFrame = 0;\n this.themeCleanup = null;\n\n this.render();\n }\n\n render() {\n const host = document.createElement('div');\n host.id = this.id;\n this.shadow = host.attachShadow({ mode: 'open' });\n\n const style = document.createElement('style');\n style.textContent = STYLES;\n this.shadow.appendChild(style);\n\n const theme = resolveTheme(this.params.theme);\n host.setAttribute('data-theme', theme);\n this.themeCleanup = watchTheme(host, this.params.theme);\n\n if (this.params.size === 'invisible') {\n host.style.display = 'none';\n this.container.appendChild(host);\n this.host = host;\n return;\n }\n\n const label = 'I am of age';\n\n const wrapper = document.createElement('div');\n wrapper.innerHTML = checkboxTemplate(label);\n this.shadow.appendChild(wrapper.firstElementChild);\n\n const checkbox = this.shadow.querySelector('.oa-checkbox');\n\n if (this.params.size === 'compact') {\n checkbox.classList.add('oa-compact');\n }\n\n checkbox.addEventListener('click', (event) => {\n if (event.target.closest('a')) return;\n if (this.state === 'verified') return;\n if (this.state === 'loading') return;\n this.clearError();\n this.startChallenge();\n });\n\n checkbox.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n checkbox.click();\n }\n });\n\n this.elements.checkbox = checkbox;\n this.elements.checkBox = this.shadow.querySelector('.oa-check-box');\n this.elements.errorSlot = this.shadow.querySelector('.oa-error-slot');\n\n this.container.appendChild(host);\n this.host = host;\n }\n\n startChallenge() {\n this.setState('loading');\n\n if (this.onChallenge) {\n this.onChallenge(this);\n }\n }\n\n createPopupShell() {\n const theme = resolveTheme(this.params.theme);\n const popupHost = document.createElement('div');\n popupHost.setAttribute('data-theme', theme);\n const popupShadow = popupHost.attachShadow({\n mode: 'open',\n });\n\n const style = document.createElement('style');\n style.textContent = STYLES;\n popupShadow.appendChild(style);\n\n const themeCleanup = watchTheme(popupHost, this.params.theme);\n\n return {\n popupHost,\n popupShadow,\n themeCleanup,\n };\n }\n\n openPopup() {\n if (this.popup) return this.getVideo();\n\n const anchor = this.getPopupAnchor();\n\n if (!anchor) {\n return this.openModal();\n }\n\n const { popupHost, popupShadow, themeCleanup } = this.createPopupShell();\n\n const popup = document.createElement('div');\n popup.className = 'oa-popup';\n popup.innerHTML = this.buildPopupContent();\n popup.style.visibility = 'hidden';\n popup.style.pointerEvents = 'none';\n\n popupShadow.appendChild(popup);\n document.body.appendChild(popupHost);\n\n this.popup = {\n anchor,\n host: popupHost,\n root: popup,\n themeCleanup,\n };\n\n const anchorRect = anchor.getBoundingClientRect();\n const popupRect = popup.getBoundingClientRect();\n const position = findPopupPosition(anchorRect, popupRect);\n\n if (position.mode === 'modal') {\n popupHost.remove();\n themeCleanup?.();\n this.popup = null;\n return this.openModal();\n }\n\n this.bindPopupEvents(popup, popupShadow);\n this.updatePopupPosition();\n this.startPopupTracking();\n return this.getVideo();\n }\n\n openModal() {\n const { popupHost, popupShadow, themeCleanup } = this.createPopupShell();\n\n const overlay = document.createElement('div');\n overlay.className = 'oa-modal-overlay';\n\n const modal = document.createElement('div');\n modal.className = 'oa-modal';\n modal.innerHTML = this.buildPopupContent();\n\n overlay.appendChild(modal);\n popupShadow.appendChild(overlay);\n document.body.appendChild(popupHost);\n\n overlay.addEventListener('click', (event) => {\n if (event.target === overlay) this.closePopup();\n });\n\n this.popup = {\n host: popupHost,\n root: modal,\n overlay,\n themeCleanup,\n };\n this.bindPopupEvents(modal, popupShadow);\n return this.getVideo();\n }\n\n getPopupAnchor() {\n return this.anchorElement || this.elements.checkbox || this.host || null;\n }\n\n startPopupTracking() {\n if (!this.popup || this.popup.overlay) return;\n\n const schedule = () => {\n this.schedulePopupPosition();\n };\n\n const cleanups = [];\n const addWindowListener = (name, options) => {\n window.addEventListener(name, schedule, options);\n cleanups.push(() => {\n window.removeEventListener(name, schedule, options);\n });\n };\n\n addWindowListener('resize', { passive: true });\n addWindowListener('scroll', {\n capture: true,\n passive: true,\n });\n\n if (window.visualViewport) {\n const viewport = window.visualViewport;\n viewport.addEventListener('resize', schedule);\n viewport.addEventListener('scroll', schedule);\n cleanups.push(() => {\n viewport.removeEventListener('resize', schedule);\n viewport.removeEventListener('scroll', schedule);\n });\n }\n\n if (typeof ResizeObserver === 'function') {\n const observer = new ResizeObserver(() => {\n schedule();\n });\n observer.observe(this.popup.root);\n observer.observe(this.popup.anchor);\n observer.observe(document.documentElement);\n if (document.body) {\n observer.observe(document.body);\n }\n cleanups.push(() => observer.disconnect());\n }\n\n this.popup.cleanup = () => {\n if (this.popupFrame) {\n cancelAnimationFrame(this.popupFrame);\n this.popupFrame = 0;\n }\n for (const cleanup of cleanups) {\n cleanup();\n }\n };\n }\n\n schedulePopupPosition() {\n if (!this.popup || this.popup.overlay) return;\n if (this.popupFrame) return;\n\n this.popupFrame = requestAnimationFrame(() => {\n this.popupFrame = 0;\n this.updatePopupPosition();\n });\n }\n\n updatePopupPosition() {\n if (!this.popup || this.popup.overlay) return;\n\n const anchor = this.getPopupAnchor();\n if (!anchor || !anchor.isConnected) {\n this.closePopup();\n return;\n }\n\n this.popup.anchor = anchor;\n\n const anchorRect = anchor.getBoundingClientRect();\n const popupRect = this.popup.root.getBoundingClientRect();\n const position = findPopupPosition(anchorRect, popupRect);\n\n if (position.mode === 'modal') {\n this.closePopup();\n this.openModal();\n return;\n }\n\n const top = `${Math.round(position.top)}px`;\n const left = `${Math.round(position.left)}px`;\n\n if (this.popup.root.style.top !== top) {\n this.popup.root.style.top = top;\n }\n\n if (this.popup.root.style.left !== left) {\n this.popup.root.style.left = left;\n }\n\n this.popup.root.dataset.placement = position.placement;\n this.popup.root.style.visibility = 'visible';\n this.popup.root.style.pointerEvents = 'auto';\n }\n\n buildPopupContent() {\n return `\n <div class=\"oa-header\">\n <div class=\"oa-title\">\n <a class=\"oa-logo\"\n href=\"https://github.com/tn3w/OpenAge\"\n target=\"_blank\" rel=\"noopener\">\n Open<strong>Age</strong>\n </a>\n <span class=\"oa-badge\">on-device</span>\n </div>\n <button class=\"oa-close-btn\"\n aria-label=\"Close\">\n ${CLOSE_SVG}\n </button>\n </div>\n <div class=\"oa-body\">\n ${heroTemplate('Initializing…')}\n </div>\n <div class=\"oa-actions oa-hidden\">\n <button class=\"oa-btn oa-start-btn\">\n Begin Verification\n </button>\n </div>\n `;\n }\n\n bindPopupEvents(root, shadow) {\n const closeBtn = root.querySelector('.oa-close-btn');\n if (closeBtn) {\n closeBtn.addEventListener('click', () => {\n this.closePopup();\n this.params.closeCallback?.();\n });\n }\n\n const startBtn = root.querySelector('.oa-start-btn');\n if (startBtn) {\n startBtn.addEventListener('click', () => {\n if (this.onStartClick) this.onStartClick();\n });\n }\n\n this.popupElements = {\n body: root.querySelector('.oa-body'),\n actions: root.querySelector('.oa-actions'),\n startBtn,\n heroStatus: root.querySelector('.oa-hero-status'),\n };\n }\n\n getVideo() {\n if (!this.popup) return null;\n return this.popup.root.querySelector('video');\n }\n\n showHero(statusText) {\n if (!this.popupElements?.body) return;\n this.popupElements.body.innerHTML = heroTemplate(statusText);\n this.popupElements.heroStatus = this.popupElements.body.querySelector('.oa-hero-status');\n this.hideActions();\n }\n\n showReady() {\n this.setHeroStatus('Ready to verify your age.');\n this.showActions('Begin Verification');\n }\n\n showCamera() {\n if (!this.popupElements?.body) return;\n this.popupElements.body.innerHTML = challengeTemplate();\n\n this.popupElements.video = this.popupElements.body.querySelector('video');\n this.popupElements.faceGuide = this.popupElements.body.querySelector('.oa-face-guide');\n this.popupElements.challengeHud =\n this.popupElements.body.querySelector('.oa-challenge-hud');\n this.popupElements.challengeText =\n this.popupElements.body.querySelector('.oa-challenge-text');\n this.popupElements.challengeFill =\n this.popupElements.body.querySelector('.oa-challenge-fill');\n this.popupElements.videoStatus =\n this.popupElements.body.querySelector('.oa-video-status p');\n\n this.hideActions();\n return this.popupElements.video;\n }\n\n showLiveness() {\n if (this.popupElements?.faceGuide) {\n this.popupElements.faceGuide.classList.remove('oa-hidden');\n }\n if (this.popupElements?.challengeHud) {\n this.popupElements.challengeHud.classList.remove('oa-hidden');\n }\n }\n\n setHeroStatus(text) {\n if (this.popupElements?.heroStatus) {\n this.popupElements.heroStatus.textContent = text;\n }\n }\n\n setVideoStatus(text) {\n if (this.popupElements?.videoStatus) {\n this.popupElements.videoStatus.textContent = text;\n }\n }\n\n setInstruction(text) {\n if (this.popupElements?.challengeText) {\n this.popupElements.challengeText.textContent = text;\n }\n }\n\n setStatus(text) {\n this.setVideoStatus(text);\n }\n\n setProgress(fraction) {\n if (this.popupElements?.challengeFill) {\n this.popupElements.challengeFill.style.width = `${Math.round(fraction * 100)}%`;\n }\n }\n\n setTask(taskId) {\n if (this.popupElements?.faceGuide) {\n this.popupElements.faceGuide.setAttribute('data-task', taskId || '');\n }\n }\n\n showActions(label) {\n if (!this.popupElements?.actions) return;\n this.popupElements.actions.classList.remove('oa-hidden');\n if (this.popupElements.startBtn) {\n this.popupElements.startBtn.textContent = label;\n }\n }\n\n hideActions() {\n if (this.popupElements?.actions) {\n this.popupElements.actions.classList.add('oa-hidden');\n }\n }\n\n showResult(outcome, message) {\n if (outcome === 'pass') {\n this.closePopup();\n this.setState('verified');\n return;\n }\n\n if (outcome === 'fail') {\n if (this.params.size === 'invisible') {\n if (this.popupElements?.body) {\n this.popupElements.body.innerHTML = resultTemplate(outcome, message);\n }\n this.hideActions();\n this.showActions('Try Again');\n } else {\n this.closePopup();\n this.setState('retry');\n }\n return;\n }\n\n if (outcome === 'retry') {\n if (this.params.size !== 'invisible') {\n this.closePopup();\n this.setState('retry');\n return;\n }\n\n if (this.popupElements?.body) {\n this.popupElements.body.innerHTML = resultTemplate(outcome, message);\n }\n this.hideActions();\n this.showActions('Try Again');\n }\n }\n\n showError() {\n this.setState('retry');\n }\n\n clearError() {\n if (this.elements.errorSlot) {\n this.elements.errorSlot.innerHTML = '';\n }\n }\n\n closePopup() {\n if (!this.popup) return;\n this.popup.cleanup?.();\n this.popup.themeCleanup?.();\n this.popup.host.remove();\n this.popup = null;\n this.popupElements = null;\n\n if (this.state === 'loading') {\n this.setState('idle');\n }\n }\n\n setState(newState) {\n this.state = newState;\n const cb = this.elements.checkbox;\n const box = this.elements.checkBox;\n if (!cb || !box) return;\n\n cb.classList.remove('oa-loading', 'oa-verified', 'oa-failed', 'oa-retry', 'oa-expired');\n cb.setAttribute('aria-checked', 'false');\n box.innerHTML = '';\n\n switch (newState) {\n case 'loading':\n cb.classList.add('oa-loading');\n box.innerHTML = `<span class=\"oa-spinner\">` + `${SPINNER_SVG}</span>`;\n break;\n case 'verified':\n cb.classList.add('oa-verified');\n cb.setAttribute('aria-checked', 'true');\n box.innerHTML = CHECK_SVG;\n break;\n case 'failed':\n cb.classList.add('oa-failed');\n box.innerHTML = '✕';\n break;\n case 'retry':\n cb.classList.add('oa-retry');\n box.innerHTML = RETRY_SVG;\n break;\n case 'expired':\n cb.classList.add('oa-expired');\n cb.setAttribute('aria-checked', 'false');\n break;\n default:\n break;\n }\n }\n\n getToken() {\n return this.token;\n }\n\n reset() {\n this.token = null;\n this.closePopup();\n this.setState('idle');\n }\n\n destroy() {\n this.closePopup();\n this.themeCleanup?.();\n this.host?.remove();\n }\n}\n\nexport function createModalWidget(params) {\n const widget = new Widget(document.createElement('div'), { ...params, size: 'invisible' });\n return widget;\n}\n\nfunction resolveContainer(container) {\n if (typeof container === 'string') {\n return document.querySelector(container);\n }\n return container;\n}\n\nfunction findPopupPosition(anchorRect, popupRect) {\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n const popupWidth = Math.max(popupRect.width || 0, POPUP_MIN_WIDTH);\n const popupHeight = Math.max(popupRect.height || 0, POPUP_MIN_HEIGHT);\n const availableWidth = viewport.width - POPUP_MARGIN * 2;\n const availableHeight = viewport.height - POPUP_MARGIN * 2;\n\n if (popupWidth > availableWidth || popupHeight > availableHeight) {\n return { mode: 'modal' };\n }\n\n const left = clampLeft(\n anchorRect.left + anchorRect.width / 2 - popupWidth / 2,\n viewport.width,\n popupWidth\n );\n\n const topBelow = anchorRect.bottom + POPUP_MARGIN;\n const topAbove = anchorRect.top - popupHeight - POPUP_MARGIN;\n const fitsBelow = topBelow + popupHeight <= viewport.height - POPUP_MARGIN;\n const fitsAbove = topAbove >= POPUP_MARGIN;\n\n if (fitsBelow || !fitsAbove) {\n return {\n mode: 'popup',\n placement: 'below',\n top: clampTop(topBelow, viewport.height, popupHeight),\n left,\n };\n }\n\n return {\n mode: 'popup',\n placement: 'above',\n top: clampTop(topAbove, viewport.height, popupHeight),\n left,\n };\n}\n\nfunction clampLeft(left, viewportWidth, popupWidth) {\n return Math.min(Math.max(POPUP_MARGIN, left), viewportWidth - popupWidth - POPUP_MARGIN);\n}\n\nfunction clampTop(top, viewportHeight, popupHeight) {\n return Math.min(Math.max(POPUP_MARGIN, top), viewportHeight - popupHeight - POPUP_MARGIN);\n}\n","import { MEDIAPIPE_CDN, MEDIAPIPE_WASM, MEDIAPIPE_VISION, MEDIAPIPE_MODEL } from './constants.js';\n\nlet FaceLandmarker = null;\nlet landmarker = null;\nlet lastTimestampMs = -1;\nlet visionModule = null;\n\nexport async function loadVision() {\n if (visionModule) return visionModule;\n visionModule = await import(MEDIAPIPE_VISION);\n FaceLandmarker = visionModule.FaceLandmarker;\n return visionModule;\n}\n\nexport async function loadModel() {\n const response = await fetch(MEDIAPIPE_MODEL);\n if (!response.ok) {\n throw new Error('Failed to load face landmarker model');\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n\nexport async function initTracker(modelBuffer) {\n const vision = await loadVision();\n const resolver = await vision.FilesetResolver.forVisionTasks(MEDIAPIPE_WASM);\n\n if (landmarker) {\n landmarker.close();\n }\n lastTimestampMs = -1;\n\n landmarker = await FaceLandmarker.createFromOptions(resolver, {\n baseOptions: {\n modelAssetBuffer: new Uint8Array(modelBuffer),\n delegate: 'GPU',\n },\n runningMode: 'VIDEO',\n numFaces: 2,\n outputFaceBlendshapes: true,\n outputFacialTransformationMatrixes: true,\n });\n}\n\nexport function track(video, timestampMs) {\n if (!landmarker) return null;\n\n const normalized = normalizeTimestamp(timestampMs);\n const result = landmarker.detectForVideo(video, normalized);\n const faceCount = result.faceLandmarks?.length ?? 0;\n\n if (faceCount === 0) {\n return { faceCount: 0, timestampMs: normalized };\n }\n\n const landmarks = result.faceLandmarks[0];\n\n return {\n faceCount,\n timestampMs: normalized,\n landmarks,\n blendshapes: parseBlendshapes(result.faceBlendshapes?.[0]),\n headPose: extractHeadPose(result.facialTransformationMatrixes?.[0]),\n boundingBox: computeBoundingBox(landmarks),\n };\n}\n\nexport function destroyTracker() {\n if (landmarker) {\n landmarker.close();\n landmarker = null;\n }\n lastTimestampMs = -1;\n}\n\nexport function isTrackerReady() {\n return landmarker !== null;\n}\n\nfunction normalizeTimestamp(timestampMs) {\n const safe = Number.isFinite(timestampMs) ? timestampMs : performance.now();\n const whole = Math.floor(safe);\n const normalized = Math.max(whole, lastTimestampMs + 1);\n lastTimestampMs = normalized;\n return normalized;\n}\n\nfunction parseBlendshapes(blendshapeResult) {\n if (!blendshapeResult?.categories) return {};\n const map = {};\n for (const category of blendshapeResult.categories) {\n map[category.categoryName] = category.score;\n }\n return map;\n}\n\nfunction extractHeadPose(matrix) {\n if (!matrix?.data || matrix.data.length < 16) {\n return { yaw: 0, pitch: 0, roll: 0 };\n }\n const m = matrix.data;\n const deg = 180 / Math.PI;\n return {\n yaw: Math.atan2(m[8], m[10]) * deg,\n pitch: Math.asin(-Math.max(-1, Math.min(1, m[9]))) * deg,\n roll: Math.atan2(m[1], m[5]) * deg,\n };\n}\n\nfunction computeBoundingBox(landmarks) {\n let minX = 1,\n minY = 1,\n maxX = 0,\n maxY = 0;\n\n for (const point of landmarks) {\n if (point.x < minX) minX = point.x;\n if (point.y < minY) minY = point.y;\n if (point.x > maxX) maxX = point.x;\n if (point.y > maxY) maxY = point.y;\n }\n\n const width = maxX - minX;\n const height = maxY - minY;\n\n return {\n x: minX,\n y: minY,\n width,\n height,\n area: width * height,\n };\n}\n","import { track } from './face-tracker.js';\nimport { STABLE_FRAMES_REQUIRED, POSITION_CHECK_MS } from './constants.js';\n\nexport function startPositioning(video, callbacks) {\n let stableFrames = 0;\n let cancelled = false;\n\n const check = () => {\n if (cancelled) return;\n\n const result = track(video, performance.now());\n\n if (!result || result.faceCount === 0) {\n callbacks.onStatus?.('Look at the camera');\n stableFrames = 0;\n } else if (result.faceCount > 1) {\n callbacks.onStatus?.('Only one person please');\n stableFrames = 0;\n } else {\n callbacks.onStatus?.('Hold still…');\n stableFrames++;\n }\n\n if (stableFrames >= STABLE_FRAMES_REQUIRED) {\n callbacks.onReady?.();\n return;\n }\n\n setTimeout(check, POSITION_CHECK_MS);\n };\n\n check();\n\n return {\n cancel: () => {\n cancelled = true;\n },\n };\n}\n","import { FACEAPI_CDN, FACEAPI_MODEL_CDN } from './constants.js';\n\nlet initialized = false;\nlet faceapi = null;\n\nfunction loadScript(url) {\n return new Promise((resolve, reject) => {\n if (typeof window === 'undefined') {\n return reject(new Error('No DOM available'));\n }\n\n const existing = document.querySelector(`script[src=\"${url}\"]`);\n if (existing) {\n if (window.faceapi) return resolve(window.faceapi);\n existing.addEventListener('load', () => resolve(window.faceapi));\n return;\n }\n\n const script = document.createElement('script');\n script.src = url;\n script.crossOrigin = 'anonymous';\n script.onload = () => resolve(window.faceapi);\n script.onerror = () => reject(new Error(`Failed to load ${url}`));\n document.head.appendChild(script);\n });\n}\n\nexport async function initAgeEstimator() {\n if (initialized) return;\n\n faceapi = await loadScript(FACEAPI_CDN);\n\n await Promise.all([\n faceapi.nets.tinyFaceDetector.loadFromUri(FACEAPI_MODEL_CDN),\n faceapi.nets.faceLandmark68TinyNet.loadFromUri(FACEAPI_MODEL_CDN),\n faceapi.nets.ageGenderNet.loadFromUri(FACEAPI_MODEL_CDN),\n ]);\n\n initialized = true;\n}\n\nexport async function estimateAge(canvas) {\n if (!faceapi) {\n throw new Error('Age estimator not initialized');\n }\n\n const detection = await faceapi\n .detectSingleFace(\n canvas,\n new faceapi.TinyFaceDetectorOptions({\n inputSize: 224,\n })\n )\n .withFaceLandmarks(true)\n .withAgeAndGender();\n\n if (!detection) return null;\n\n return {\n age: detection.age,\n gender: detection.gender,\n confidence: detection.detection.score,\n };\n}\n\nexport async function estimateAgeBurst(frames) {\n const results = [];\n for (const frame of frames) {\n const result = await estimateAge(frame);\n if (result) results.push(result);\n }\n return results;\n}\n\nexport function isInitialized() {\n return initialized;\n}\n","import {\n TASK_TIMEOUT_MS,\n MIN_TASK_TIME_MS,\n TASK_COUNT,\n REQUIRED_TASK_PASSES,\n} from './constants.js';\n\nconst TASKS = [\n {\n id: 'turn-left',\n instruction: 'Turn your head to the left',\n check: (h) => detectYawShift(h, 20),\n },\n {\n id: 'turn-right',\n instruction: 'Turn your head to the right',\n check: (h) => detectYawShift(h, -20),\n },\n {\n id: 'nod',\n instruction: 'Nod your head down then up',\n check: (h) => detectNod(h),\n },\n {\n id: 'blink-twice',\n instruction: 'Blink twice',\n check: (h) => detectDoubleBlink(h),\n },\n {\n id: 'move-closer',\n instruction: 'Move closer then back',\n check: (h) => detectDistanceChange(h),\n },\n];\n\nexport function pickTasks(count = TASK_COUNT) {\n const shuffled = [...TASKS].sort(() => Math.random() - 0.5);\n return shuffled.slice(0, count);\n}\n\nexport function createSession(tasks) {\n return {\n tasks: tasks || pickTasks(),\n currentIndex: 0,\n history: [],\n taskStartTime: 0,\n completedTasks: 0,\n requiredPasses: REQUIRED_TASK_PASSES,\n failed: false,\n failReason: null,\n };\n}\n\nexport function processFrame(session, trackingResult) {\n if (session.failed || isComplete(session)) return;\n if (session.currentIndex >= session.tasks.length) return;\n if (!trackingResult || trackingResult.faceCount === 0) return;\n\n if (trackingResult.faceCount > 1) {\n session.failed = true;\n session.failReason = null;\n return;\n }\n\n const entry = {\n timestamp: trackingResult.timestampMs,\n headPose: trackingResult.headPose,\n blendshapes: trackingResult.blendshapes,\n boundingBox: trackingResult.boundingBox,\n };\n\n if (session.history.length === 0) {\n session.taskStartTime = trackingResult.timestampMs;\n }\n\n session.history.push(entry);\n\n const elapsed = trackingResult.timestampMs - session.taskStartTime;\n\n if (elapsed > TASK_TIMEOUT_MS) {\n advanceTask(session);\n return;\n }\n\n if (elapsed < MIN_TASK_TIME_MS) return;\n\n const task = session.tasks[session.currentIndex];\n if (!task.check(session.history)) return;\n\n if (isSuspicious(session.history)) {\n session.failed = true;\n session.failReason = null;\n return;\n }\n\n session.completedTasks++;\n advanceTask(session);\n}\n\nexport function isComplete(session) {\n return session.currentIndex >= session.tasks.length;\n}\n\nexport function isPassed(session) {\n return session.completedTasks >= session.requiredPasses;\n}\n\nexport function currentInstruction(session) {\n if (session.currentIndex >= session.tasks.length) {\n return null;\n }\n return session.tasks[session.currentIndex].instruction;\n}\n\nexport function currentTaskId(session) {\n if (session.currentIndex >= session.tasks.length) {\n return null;\n }\n return session.tasks[session.currentIndex].id;\n}\n\nexport function progress(session) {\n if (session.tasks.length === 0) return 1;\n return Math.min(session.currentIndex / session.tasks.length, 1);\n}\n\nfunction advanceTask(session) {\n session.currentIndex++;\n session.history = [];\n session.taskStartTime = 0;\n\n const remaining = session.tasks.length - session.currentIndex;\n const canStillPass = session.completedTasks + remaining >= session.requiredPasses;\n\n if (!canStillPass) {\n session.failed = true;\n session.failReason = null;\n }\n}\n\nfunction detectYawShift(history, targetDelta) {\n if (history.length < 5) return false;\n const baseYaw = history[0].headPose.yaw;\n const direction = Math.sign(targetDelta);\n const threshold = Math.abs(targetDelta);\n\n return history.some((entry) => {\n const delta = (entry.headPose.yaw - baseYaw) * direction;\n return delta > threshold;\n });\n}\n\nfunction detectNod(history) {\n if (history.length < 10) return false;\n const basePitch = history[0].headPose.pitch;\n let wentDown = false;\n let cameBack = false;\n\n for (const entry of history) {\n const delta = entry.headPose.pitch - basePitch;\n if (delta > 15) wentDown = true;\n if (wentDown && Math.abs(delta) < 8) cameBack = true;\n }\n\n return wentDown && cameBack;\n}\n\nfunction detectDoubleBlink(history) {\n if (history.length < 10) return false;\n let blinkCount = 0;\n let eyesClosed = false;\n\n for (const entry of history) {\n const left = entry.blendshapes.eyeBlinkLeft ?? 0;\n const right = entry.blendshapes.eyeBlinkRight ?? 0;\n const bothClosed = left > 0.6 && right > 0.6;\n\n if (bothClosed && !eyesClosed) {\n blinkCount++;\n eyesClosed = true;\n } else if (!bothClosed) {\n eyesClosed = false;\n }\n }\n\n return blinkCount >= 2;\n}\n\nfunction detectDistanceChange(history) {\n if (history.length < 10) return false;\n const baseArea = history[0].boundingBox.area;\n let wentCloser = false;\n let cameBack = false;\n\n for (const entry of history) {\n const ratio = entry.boundingBox.area / baseArea;\n if (ratio > 1.3) wentCloser = true;\n if (wentCloser && ratio < 1.15) cameBack = true;\n }\n\n return wentCloser && cameBack;\n}\n\nexport function isSuspicious(history) {\n if (history.length < 5) return false;\n\n const deltas = [];\n for (let i = 1; i < history.length; i++) {\n const dy = Math.abs(history[i].headPose.yaw - history[i - 1].headPose.yaw);\n const dp = Math.abs(history[i].headPose.pitch - history[i - 1].headPose.pitch);\n deltas.push(dy + dp);\n }\n\n if (deltas.every((d) => d < 0.1)) return true;\n\n const mean = deltas.reduce((a, b) => a + b, 0) / deltas.length;\n const variance = deltas.reduce((s, d) => s + (d - mean) ** 2, 0) / deltas.length;\n\n return variance < 0.01 && mean > 0.5;\n}\n","import { TOKEN_EXPIRY_S } from './constants.js';\n\nfunction base64UrlEncode(data) {\n const text = typeof data === 'string' ? data : String.fromCharCode(...new Uint8Array(data));\n return btoa(text).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\nfunction base64UrlDecode(str) {\n const padded = str + '='.repeat((4 - (str.length % 4)) % 4);\n const binary = atob(padded.replace(/-/g, '+').replace(/_/g, '/'));\n return Uint8Array.from(binary, (c) => c.charCodeAt(0));\n}\n\nasync function getSigningKey() {\n const raw = crypto.getRandomValues(new Uint8Array(32));\n return crypto.subtle.importKey('raw', raw, { name: 'HMAC', hash: 'SHA-256' }, false, [\n 'sign',\n 'verify',\n ]);\n}\n\nlet cachedKey = null;\n\nasync function ensureKey() {\n if (!cachedKey) cachedKey = await getSigningKey();\n return cachedKey;\n}\n\nexport async function createToken(payload) {\n const key = await ensureKey();\n\n const header = base64UrlEncode(JSON.stringify({ alg: 'HS256', typ: 'JWT' }));\n\n const body = base64UrlEncode(\n JSON.stringify({\n ...payload,\n iat: Math.floor(Date.now() / 1000),\n exp: Math.floor(Date.now() / 1000) + TOKEN_EXPIRY_S,\n })\n );\n\n const data = new TextEncoder().encode(`${header}.${body}`);\n const signature = await crypto.subtle.sign('HMAC', key, data);\n\n return `${header}.${body}.${base64UrlEncode(signature)}`;\n}\n\nexport async function verifyToken(token) {\n const key = await ensureKey();\n const [header, body, sig] = token.split('.');\n\n if (!header || !body || !sig) return null;\n\n let signature;\n let data;\n try {\n data = new TextEncoder().encode(`${header}.${body}`);\n signature = base64UrlDecode(sig);\n } catch {\n return null;\n }\n\n const valid = await crypto.subtle.verify('HMAC', key, signature, data);\n\n if (!valid) return null;\n\n const decoded = JSON.parse(new TextDecoder().decode(base64UrlDecode(body)));\n\n if (decoded.exp && decoded.exp < Date.now() / 1000) {\n return null;\n }\n\n return decoded;\n}\n\nexport function decodeToken(token) {\n const [, body] = token.split('.');\n if (!body) return null;\n return JSON.parse(new TextDecoder().decode(base64UrlDecode(body)));\n}\n\nexport function createTransport(mode, options = {}) {\n if (mode === 'serverless') {\n return createServerlessTransport(options);\n }\n\n const baseUrl = mode === 'custom' ? options.server : 'https://api.openage.dev';\n\n return createServerTransport(baseUrl, options);\n}\n\nfunction createServerlessTransport(options) {\n return {\n async verify(payload) {\n const { estimatedAge, livenessOk } = payload;\n\n if (!livenessOk) {\n return { success: false, token: null };\n }\n\n const token = await createToken({\n estimatedAge,\n livenessOk: true,\n mode: 'serverless',\n });\n\n return { success: true, token };\n },\n close() {},\n };\n}\n\nfunction createServerTransport(baseUrl, options) {\n let session = null;\n let channel = null;\n\n return {\n async createSession() {\n const transports = [];\n if (typeof WebSocket !== 'undefined') {\n transports.push('websocket');\n }\n transports.push('poll');\n\n const response = await fetch(`${baseUrl}/api/session`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n sitekey: options.sitekey,\n action: options.action,\n supportedTransports: transports,\n }),\n });\n\n if (!response.ok) {\n throw new Error('Request failed');\n }\n\n session = await response.json();\n return session;\n },\n\n openChannel() {\n if (!session) {\n throw new Error('No session');\n }\n\n if (session.transport === 'websocket') {\n channel = createWsChannel(baseUrl, session.sessionId);\n } else {\n channel = createPollChannel(baseUrl, session.sessionId);\n }\n },\n\n async receive() {\n if (!channel) return null;\n return channel.receive();\n },\n\n async send(data) {\n if (!channel) return;\n return channel.send(data);\n },\n\n async sendAndReceive(data) {\n if (!channel) return null;\n return channel.sendAndReceive(data);\n },\n\n async verify(payload) {\n if (channel) {\n return this.verifyViaChannel(payload);\n }\n\n const response = await fetch(`${baseUrl}/verify`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n response: payload.token,\n sitekey: options.sitekey,\n action: options.action,\n }),\n });\n\n if (!response.ok) {\n return {\n success: false,\n token: null,\n };\n }\n\n return response.json();\n },\n\n async verifyViaChannel(payload) {\n await channel.send(payload);\n return channel.receive();\n },\n\n getSession() {\n return session;\n },\n\n close() {\n channel?.close();\n channel = null;\n session = null;\n },\n };\n}\n\nfunction createWsChannel(baseUrl, sessionId) {\n const wsUrl = baseUrl.replace(/^http/, 'ws').replace(/\\/$/, '');\n const url = `${wsUrl}/api/ws/${sessionId}`;\n const ws = new WebSocket(url);\n let pending = [];\n let ready = false;\n let closed = false;\n\n const waitReady = new Promise((resolve, reject) => {\n ws.onopen = () => {\n ready = true;\n resolve();\n };\n ws.onerror = () => {\n reject(new Error('Connection failed'));\n };\n });\n\n ws.onmessage = (event) => {\n const message = JSON.parse(event.data);\n const resolver = pending.shift();\n if (resolver) resolver(message);\n };\n\n ws.onclose = () => {\n closed = true;\n for (const resolver of pending) resolver(null);\n pending = [];\n };\n\n return {\n receive() {\n if (closed) return Promise.resolve(null);\n return new Promise((resolve) => {\n pending.push(resolve);\n });\n },\n async send(data) {\n await waitReady;\n ws.send(JSON.stringify(data));\n },\n async sendAndReceive(data) {\n await waitReady;\n ws.send(JSON.stringify(data));\n return this.receive();\n },\n close() {\n closed = true;\n ws.close();\n },\n };\n}\n\nfunction createPollChannel(baseUrl, sessionId) {\n return {\n async receive() {\n const response = await fetch(`${baseUrl}/api/poll/${sessionId}`);\n if (!response.ok) {\n throw new Error('Request failed');\n }\n return response.json();\n },\n async send(data) {\n const response = await fetch(`${baseUrl}/api/verify/${sessionId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(data),\n });\n if (!response.ok) {\n throw new Error('Request failed');\n }\n },\n async sendAndReceive(data) {\n const response = await fetch(`${baseUrl}/api/verify/${sessionId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(data),\n });\n if (!response.ok) {\n throw new Error('Request failed');\n }\n return response.json();\n },\n close() {},\n };\n}\n","let wasmModule = null;\nlet vmSession = null;\nlet challengeBundle = null;\nlet _faceData = null;\nlet _challengeParams = null;\nlet _bridge = null;\n\nfunction loadScript(url) {\n return new Promise((resolve, reject) => {\n const existing = document.querySelector(`script[src=\"${url}\"]`);\n if (existing) return resolve();\n\n const script = document.createElement('script');\n script.src = url;\n script.onload = resolve;\n script.onerror = () => {\n reject(new Error(`Failed to load ${url}`));\n };\n document.head.appendChild(script);\n });\n}\n\nexport async function initVM(session) {\n vmSession = session;\n\n await loadScript(session.wasmJs);\n\n const loaderModule = await import(session.loaderJs);\n wasmModule = await loaderModule.initModule(session.wasmBin);\n\n const initFn = session.exports.vm_init;\n const result = wasmModule[`_${initFn}`]();\n if (result !== 0) throw new Error('VM init failed');\n\n const bundleResponse = await fetch(session.challengeVmbc);\n challengeBundle = new Uint8Array(await bundleResponse.arrayBuffer());\n}\n\nexport async function decryptModel(session, modelId) {\n if (!wasmModule || !vmSession) {\n throw new Error('VM not loaded');\n }\n\n const modelInfo = session.models[modelId];\n if (!modelInfo) {\n throw new Error(`Unknown model: ${modelId}`);\n }\n\n const response = await fetch(modelInfo.url);\n if (!response.ok) {\n throw new Error(`Failed to fetch model: ${modelId}`);\n }\n\n const encrypted = new Uint8Array(await response.arrayBuffer());\n\n const decryptFn = session.exports.vm_decrypt_blob;\n const freeFn = session.exports.vm_free;\n const length = encrypted.length;\n\n const inputPtr = wasmModule._malloc(length);\n wasmModule.HEAPU8.set(encrypted, inputPtr);\n\n const outLenPtr = wasmModule._malloc(4);\n const outPtr = wasmModule[`_${decryptFn}`](inputPtr, length, outLenPtr);\n wasmModule._free(inputPtr);\n\n if (!outPtr) {\n wasmModule._free(outLenPtr);\n throw new Error(`Decryption failed: ${modelId}`);\n }\n\n const outLen = readU32(wasmModule, outLenPtr);\n wasmModule._free(outLenPtr);\n\n const result = new Uint8Array(outLen);\n result.set(wasmModule.HEAPU8.subarray(outPtr, outPtr + outLen));\n wasmModule[`_${freeFn}`](outPtr);\n return result.buffer;\n}\n\nfunction readU32(mod, ptr) {\n return (\n mod.HEAPU8[ptr] |\n (mod.HEAPU8[ptr + 1] << 8) |\n (mod.HEAPU8[ptr + 2] << 16) |\n (mod.HEAPU8[ptr + 3] << 24)\n );\n}\n\nfunction defineVmGlobal(name, getter) {\n try {\n delete window[name];\n } catch (_) {}\n Object.defineProperty(window, name, {\n get: getter,\n set() {},\n configurable: true,\n });\n}\n\nexport function setFaceData(faceData) {\n _faceData = faceData;\n defineVmGlobal('__vmFaceData', () => _faceData);\n}\n\nexport function setChallengeParams(params) {\n _challengeParams = params;\n defineVmGlobal('__vmChallenge', () => _challengeParams);\n}\n\nexport function registerBridge(bridge) {\n _bridge = Object.freeze({ ...bridge });\n defineVmGlobal('__vmBridge', () => _bridge);\n}\n\nexport function unregisterBridge() {\n _bridge = null;\n try {\n delete window.__vmBridge;\n } catch (_) {}\n}\n\nexport function executeChallenge() {\n if (!wasmModule || !challengeBundle) {\n throw new Error('VM not loaded');\n }\n\n const execFn = vmSession.exports.vm_exec_bytecode;\n const freeFn = vmSession.exports.vm_free;\n const length = challengeBundle.length;\n\n const inputPtr = wasmModule._malloc(length);\n wasmModule.HEAPU8.set(challengeBundle, inputPtr);\n\n const outLenPtr = wasmModule._malloc(4);\n const outPtr = wasmModule[`_${execFn}`](inputPtr, length, outLenPtr);\n wasmModule._free(inputPtr);\n\n if (!outPtr) {\n wasmModule._free(outLenPtr);\n const errFn = vmSession.exports.vm_last_error;\n let message = 'VM execution failed';\n if (errFn) {\n const errPtr = wasmModule[`_${errFn}`]();\n if (errPtr) {\n const detail = wasmModule.UTF8ToString(errPtr);\n if (detail) message = detail;\n }\n }\n throw new Error(message);\n }\n\n const outLen = readU32(wasmModule, outLenPtr);\n wasmModule._free(outLenPtr);\n\n const result = new Uint8Array(outLen);\n result.set(wasmModule.HEAPU8.subarray(outPtr, outPtr + outLen));\n wasmModule[`_${freeFn}`](outPtr);\n return result;\n}\n\nexport function toBase64(bytes) {\n let binary = '';\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n\nexport function destroyVM() {\n if (!wasmModule || !vmSession) return;\n\n const destroyFn = vmSession.exports.vm_destroy;\n if (destroyFn) {\n wasmModule[`_${destroyFn}`]();\n }\n\n wasmModule = null;\n vmSession = null;\n challengeBundle = null;\n _faceData = null;\n _challengeParams = null;\n _bridge = null;\n\n for (const name of ['__vmFaceData', '__vmChallenge', '__vmBridge']) {\n try {\n delete window[name];\n } catch (_) {}\n }\n}\n\nexport function isVMLoaded() {\n return wasmModule !== null && vmSession !== null;\n}\n\nconst decryptedCache = new Map();\n\nasync function decryptAndCache(session, modelId) {\n if (decryptedCache.has(modelId)) {\n return decryptedCache.get(modelId);\n }\n\n const buffer = await decryptModel(session, modelId);\n decryptedCache.set(modelId, buffer);\n return buffer;\n}\n\nexport async function ensureModels(session, onProgress) {\n await decryptAndCache(session, 'mediapipe');\n onProgress?.(1);\n}\n\nexport async function getMediaPipeModelBuffer(session) {\n return decryptAndCache(session, 'mediapipe');\n}\n\nexport function clearModelCache() {\n decryptedCache.clear();\n}\n","import { loadVision, loadModel, initTracker, track, destroyTracker } from './face-tracker.js';\nimport { startPositioning } from './positioning.js';\nimport { initAgeEstimator, estimateAgeBurst } from './age-estimator.js';\nimport {\n createSession as createLivenessSession,\n processFrame,\n isComplete,\n isPassed,\n currentInstruction,\n currentTaskId,\n progress,\n} from './liveness.js';\nimport { createTransport } from './transport.js';\nimport {\n initVM,\n setFaceData,\n setChallengeParams,\n executeChallenge as execVM,\n registerBridge,\n unregisterBridge,\n destroyVM,\n toBase64,\n ensureModels,\n getMediaPipeModelBuffer,\n clearModelCache,\n} from './vm-client.js';\nimport {\n BURST_FRAMES,\n BURST_INTERVAL_MS,\n MAX_RETRIES,\n MOTION_CAPTURE_MS,\n MOTION_SAMPLE_MS,\n} from './constants.js';\n\nlet stream = null;\nlet videoElement = null;\n\nconst CAMERA_CONSTRAINTS = {\n video: {\n facingMode: 'user',\n width: { ideal: 640 },\n height: { ideal: 480 },\n },\n};\n\nexport function startCamera(video) {\n return navigator.mediaDevices.getUserMedia(CAMERA_CONSTRAINTS).then((s) => {\n stream = s;\n video.srcObject = stream;\n videoElement = video;\n\n return new Promise((resolve) => {\n video.onloadedmetadata = () => {\n video.play();\n resolve({\n width: video.videoWidth,\n height: video.videoHeight,\n });\n };\n });\n });\n}\n\nexport function captureFrame() {\n if (!videoElement) return null;\n\n const canvas = document.createElement('canvas');\n canvas.width = videoElement.videoWidth;\n canvas.height = videoElement.videoHeight;\n\n const context = canvas.getContext('2d');\n context.drawImage(videoElement, 0, 0);\n return canvas;\n}\n\nexport function stopCamera() {\n if (stream) {\n stream.getTracks().forEach((track) => track.stop());\n stream = null;\n }\n if (videoElement) {\n videoElement.srcObject = null;\n videoElement = null;\n }\n}\n\nexport function isCameraActive() {\n return stream !== null && videoElement !== null;\n}\n\nfunction computeAge(ageResults) {\n if (!ageResults || ageResults.length === 0) return null;\n\n const ages = ageResults.map((r) => r.age).sort((a, b) => a - b);\n\n const trimmed = ages.length >= 3 ? ages.slice(1, -1) : ages;\n\n return trimmed.reduce((s, a) => s + a, 0) / trimmed.length;\n}\n\nconst TASK_LABELS = {\n 'turn-left': 'Turn your head left',\n 'turn-right': 'Turn your head right',\n nod: 'Nod your head',\n 'blink-twice': 'Blink twice',\n 'move-closer': 'Move closer then back',\n};\n\nfunction sleep(ms) {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nexport async function runChallenge(widget, emitter) {\n const mode = widget.params.mode || 'serverless';\n\n if (mode !== 'serverless' && !widget.params.sitekey) {\n const err = new Error('Configuration error');\n widget.showResult?.('fail', 'Verification failed');\n emitter.emit('error', err, widget.id);\n widget.params.errorCallback?.(err);\n return;\n }\n\n if (mode === 'serverless') {\n return runServerless(widget, emitter);\n }\n return runServer(widget, emitter);\n}\n\nasync function runServerless(widget, emitter) {\n const params = widget.params;\n let retryCount = 0;\n let modelBuffer = null;\n\n try {\n widget.openPopup();\n widget.setHeroStatus('Loading…');\n\n await Promise.all([loadVision(), initAgeEstimator()]);\n\n modelBuffer = await loadModel();\n widget.showReady();\n\n await waitForStart(widget);\n await startCameraFlow(widget, modelBuffer);\n\n const transport = createTransport('serverless', params);\n\n const attempt = async () => {\n widget.showLiveness();\n widget.setInstruction('');\n widget.setVideoStatus('Verifying…');\n\n const session = createLivenessSession();\n await runLivenessLoop(widget.popupElements.video, session, widget);\n\n if (session.failed || !isPassed(session)) {\n return { outcome: 'retry' };\n }\n\n widget.setInstruction('Hold still…');\n widget.setVideoStatus('Processing…');\n const frames = await captureFrameBurst(BURST_FRAMES, BURST_INTERVAL_MS);\n\n const ageResults = await estimateAgeBurst(frames);\n const estimatedAge = computeAge(ageResults);\n\n const result = await transport.verify({\n estimatedAge,\n livenessOk: true,\n });\n\n return {\n outcome: result.token ? 'pass' : 'fail',\n token: result.token,\n };\n };\n\n let result = await attempt();\n\n while (result.outcome === 'retry' && retryCount < MAX_RETRIES) {\n retryCount++;\n widget.showResult('retry', 'Please try again');\n await waitForStart(widget);\n await startCameraFlow(widget, modelBuffer);\n result = await attempt();\n }\n\n cleanupLocal();\n emitResult(widget, emitter, result);\n } catch (error) {\n cleanupLocal();\n console.log('Error during challenge:', error);\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', error, widget.id);\n params.errorCallback?.(error);\n }\n}\n\nasync function runServer(widget, emitter) {\n const params = widget.params;\n\n try {\n widget.openPopup();\n widget.setHeroStatus('Connecting…');\n\n const transport = createTransport(params.mode, params);\n const session = await transport.createSession();\n\n widget.setHeroStatus('Loading…');\n await initVM(session);\n\n widget.setHeroStatus('Preparing…');\n await ensureModels(session, () => {});\n\n await loadVision();\n const buf = await getMediaPipeModelBuffer(session);\n await initTracker(buf);\n\n registerBridge({\n trackFace: () => {\n const video = widget.popupElements?.video;\n if (!video) return 'null';\n const r = track(video, performance.now());\n if (!r) return 'null';\n return JSON.stringify({\n ts: r.timestampMs ?? performance.now(),\n faceCount: r.faceCount,\n headPose: r.headPose || null,\n blendshapes: r.blendshapes || null,\n boundingBox: r.boundingBox || null,\n });\n },\n captureFrame: () => (captureFrame() ? 'true' : 'null'),\n });\n\n widget.showReady();\n await waitForStart(widget);\n\n const video = widget.showCamera();\n widget.setVideoStatus('Requesting camera…');\n await startCamera(video);\n exposeMirrorVideo(video);\n\n widget.setVideoStatus('Position your face');\n await waitForPositioning(video, widget);\n\n widget.showLiveness();\n transport.openChannel();\n\n let challenge = await transport.receive();\n const rounds = session.rounds;\n\n for (let i = 0; i < rounds; i++) {\n if (!challenge) {\n cleanupVM(transport);\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n return;\n }\n\n if (challenge.type === 'verdict') {\n cleanupVM(transport);\n emitVerdict(widget, emitter, challenge);\n return;\n }\n\n if (challenge.type === 'timeout') {\n cleanupVM(transport);\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n return;\n }\n\n widget.setVideoStatus(`Step ${i + 1} of ${rounds}`);\n\n const task = challenge.token?.task;\n widget.setInstruction(TASK_LABELS[task] ?? 'Look at the camera');\n widget.setTask(task);\n widget.setProgress(i / rounds);\n\n const faceData = await captureMotion(widget);\n setFaceData(faceData);\n setChallengeParams(challenge.token);\n\n let vmOut;\n try {\n vmOut = execVM();\n } catch {\n cleanupVM(transport);\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n return;\n }\n\n const payload = {\n token: challenge.token,\n tokenSignature: challenge.tokenSignature,\n response: toBase64(vmOut),\n };\n\n const result = await transport.sendAndReceive(payload);\n\n if (!result) {\n cleanupVM(transport);\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n return;\n }\n\n if (result.complete) {\n cleanupVM(transport);\n emitVerdict(widget, emitter, result);\n return;\n }\n\n if (result.hint) {\n widget.setVideoStatus(result.hint);\n await sleep(1000);\n }\n\n challenge = result.nextChallenge || null;\n }\n\n cleanupVM(transport);\n } catch (error) {\n console.log('Error during challenge:', error);\n cleanupVM();\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', error, widget.id);\n params.errorCallback?.(error);\n }\n}\n\nfunction emitVerdict(widget, emitter, response) {\n const verdict = response?.verdict || response;\n const token = verdict?.token || null;\n const params = widget.params;\n\n if (token) {\n widget.token = token;\n widget.showResult('pass', 'Verified');\n emitter.emit('verified', token, widget.id);\n params.callback?.(token);\n return;\n }\n\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n params.errorCallback?.('failed');\n}\n\nasync function captureMotion(widget) {\n const video = widget.popupElements?.video;\n const history = [];\n const start = performance.now();\n\n while (performance.now() - start < MOTION_CAPTURE_MS) {\n const r = track(video, performance.now());\n if (r && r.faceCount === 1) {\n history.push({\n ts: r.timestampMs,\n headPose: r.headPose,\n blendshapes: r.blendshapes,\n boundingBox: r.boundingBox,\n });\n }\n await sleep(MOTION_SAMPLE_MS);\n }\n\n return {\n faceCount: history.length > 0 ? 1 : 0,\n motionHistory: history,\n };\n}\n\nfunction emitResult(widget, emitter, result) {\n const params = widget.params;\n\n if (result.outcome === 'pass') {\n widget.token = result.token || null;\n widget.showResult('pass', 'Verified');\n emitter.emit('verified', result.token, widget.id);\n params.callback?.(result.token);\n } else {\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n params.errorCallback?.('failed');\n }\n}\n\nfunction waitForStart(widget) {\n return new Promise((resolve) => {\n widget.onStartClick = () => {\n widget.onStartClick = null;\n resolve();\n };\n });\n}\n\nasync function startCameraFlow(widget, modelBuffer) {\n const video = widget.showCamera();\n widget.setVideoStatus('Requesting camera…');\n await startCamera(video);\n\n widget.setVideoStatus('Preparing…');\n await initTracker(modelBuffer);\n\n widget.setVideoStatus('Position your face');\n await waitForPositioning(video, widget);\n}\n\nfunction waitForPositioning(video, widget) {\n return new Promise((resolve, reject) => {\n const handle = startPositioning(video, {\n onStatus: (text) => widget.setVideoStatus(text),\n onReady: () => resolve(),\n });\n\n setTimeout(() => {\n handle.cancel();\n reject(new Error('Positioning timeout'));\n }, 30000);\n });\n}\n\nasync function runLivenessLoop(video, session, widget) {\n return new Promise((resolve) => {\n const loop = () => {\n const tracking = track(video, performance.now());\n if (tracking) processFrame(session, tracking);\n\n widget.setInstruction(currentInstruction(session) || 'Done');\n widget.setTask(currentTaskId(session));\n widget.setProgress(progress(session));\n widget.setVideoStatus(\n `Check ` +\n `${Math.min(session.currentIndex + 1, session.tasks.length)}` +\n ` of ${session.tasks.length}`\n );\n\n if (session.failed || isComplete(session)) {\n resolve();\n return;\n }\n\n requestAnimationFrame(loop);\n };\n\n requestAnimationFrame(loop);\n });\n}\n\nasync function captureFrameBurst(count, interval) {\n const frames = [];\n for (let i = 0; i < count; i++) {\n const frame = captureFrame();\n if (frame) frames.push(frame);\n if (i < count - 1) await sleep(interval);\n }\n return frames;\n}\n\nfunction cleanupLocal() {\n stopCamera();\n destroyTracker();\n}\n\nfunction cleanupVM(transport) {\n stopCamera();\n removeMirrorVideo();\n destroyTracker();\n unregisterBridge();\n destroyVM();\n clearModelCache();\n transport?.close();\n}\n\nfunction exposeMirrorVideo(source) {\n removeMirrorVideo();\n if (!source?.srcObject) return;\n const mirror = document.createElement('video');\n mirror.id = '__openage_mirror';\n mirror.srcObject = source.srcObject;\n mirror.autoplay = true;\n mirror.muted = true;\n mirror.playsInline = true;\n mirror.style.cssText =\n 'position:fixed;width:1px;height:1px;' + 'opacity:0;pointer-events:none;z-index:-1;';\n document.body.appendChild(mirror);\n}\n\nfunction removeMirrorVideo() {\n document.getElementById('__openage_mirror')?.remove();\n}\n","import { Widget, createModalWidget } from './widget.js';\nimport { runChallenge } from './challenge.js';\nimport { verifyToken, decodeToken } from './transport.js';\nimport { VERSION } from './constants.js';\n\nexport class EventEmitter {\n constructor() {\n this.listeners = new Map();\n }\n\n on(event, handler) {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n this.listeners.get(event).add(handler);\n return this;\n }\n\n off(event, handler) {\n const handlers = this.listeners.get(event);\n if (handlers) handlers.delete(handler);\n return this;\n }\n\n once(event, handler) {\n const wrapper = (...args) => {\n this.off(event, wrapper);\n handler(...args);\n };\n wrapper._original = handler;\n return this.on(event, wrapper);\n }\n\n emit(event, ...args) {\n const handlers = this.listeners.get(event);\n if (!handlers) return;\n for (const handler of [...handlers]) {\n handler(...args);\n }\n }\n\n removeAllListeners(event) {\n if (event) {\n this.listeners.delete(event);\n } else {\n this.listeners.clear();\n }\n return this;\n }\n}\n\nconst emitter = new EventEmitter();\nconst widgets = new Map();\n\nfunction normalizeParams(params) {\n const globalConfig = typeof window !== 'undefined' ? window.openage || {} : {};\n\n return {\n mode: 'serverless',\n theme: 'auto',\n size: 'normal',\n minAge: 18,\n ...globalConfig,\n ...params,\n };\n}\n\nfunction startWidget(widget) {\n widget.onChallenge = () => {\n emitter.emit('opened', widget.id);\n runChallenge(widget, emitter);\n };\n}\n\nfunction render(container, params = {}) {\n const normalized = normalizeParams(params);\n const widget = new Widget(container, normalized);\n widgets.set(widget.id, widget);\n startWidget(widget);\n return widget.id;\n}\n\nfunction open(params = {}) {\n const normalized = normalizeParams(params);\n const widget = createModalWidget(normalized);\n widget.anchorElement = normalized.anchorElement || null;\n widgets.set(widget.id, widget);\n\n widget.onChallenge = () => {\n emitter.emit('opened', widget.id);\n runChallenge(widget, emitter);\n };\n\n widget.startChallenge();\n return widget.id;\n}\n\nfunction bind(element, params = {}) {\n const normalized = normalizeParams(params);\n const target = typeof element === 'string' ? document.querySelector(element) : element;\n\n if (!target) {\n throw new Error('OpenAge: element not found');\n }\n\n let isReplayingClick = false;\n let activeWidgetId = null;\n\n const replayTargetClick = () => {\n isReplayingClick = true;\n try {\n target.click();\n } finally {\n isReplayingClick = false;\n }\n };\n\n const clearActiveWidget = () => {\n activeWidgetId = null;\n };\n\n const handler = (event) => {\n if (isReplayingClick || activeWidgetId) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation?.();\n\n const widgetId = open({\n ...normalized,\n anchorElement: target,\n callback: (token) => {\n normalized.callback?.(token);\n clearActiveWidget();\n replayTargetClick();\n },\n errorCallback: (error) => {\n clearActiveWidget();\n normalized.errorCallback?.(error);\n },\n closeCallback: () => {\n clearActiveWidget();\n normalized.closeCallback?.();\n },\n });\n\n activeWidgetId = widgetId;\n\n return widgetId;\n };\n\n target.addEventListener('click', handler, true);\n\n return () => {\n target.removeEventListener('click', handler, true);\n };\n}\n\nfunction reset(widgetId) {\n widgets.get(widgetId)?.reset();\n}\n\nfunction remove(widgetId) {\n const widget = widgets.get(widgetId);\n if (!widget) return;\n widget.destroy();\n widgets.delete(widgetId);\n}\n\nfunction getToken(widgetId) {\n return widgets.get(widgetId)?.getToken() || null;\n}\n\nfunction execute(widgetId) {\n const widget = widgets.get(widgetId);\n if (!widget) return;\n widget.startChallenge();\n}\n\nfunction challenge(params = {}) {\n return new Promise((resolve, reject) => {\n open({\n ...params,\n callback: (token) => resolve(token),\n errorCallback: (error) => reject(typeof error === 'string' ? new Error(error) : error),\n closeCallback: () => reject(new Error('User dismissed')),\n });\n });\n}\n\nfunction on(event, handler) {\n emitter.on(event, handler);\n}\n\nfunction off(event, handler) {\n emitter.off(event, handler);\n}\n\nfunction once(event, handler) {\n emitter.once(event, handler);\n}\n\nfunction autoRender() {\n if (typeof document === 'undefined') return;\n\n const globalConfig = typeof window !== 'undefined' ? window.openage || {} : {};\n\n if (globalConfig.render === 'explicit') return;\n\n const elements = document.querySelectorAll('.openage');\n\n for (const element of elements) {\n const params = {\n sitekey: element.dataset.sitekey,\n theme: element.dataset.theme,\n size: element.dataset.size,\n action: element.dataset.action,\n mode: element.dataset.mode,\n server: element.dataset.server,\n };\n\n if (element.dataset.callback) {\n params.callback = (token) => {\n const fn = window[element.dataset.callback];\n if (typeof fn === 'function') fn(token);\n };\n }\n\n if (element.dataset.errorCallback) {\n params.errorCallback = (error) => {\n const fn = window[element.dataset.errorCallback];\n if (typeof fn === 'function') fn(error);\n };\n }\n\n if (element.dataset.expiredCallback) {\n params.expiredCallback = () => {\n const fn = window[element.dataset.expiredCallback];\n if (typeof fn === 'function') fn();\n };\n }\n\n if (element.dataset.bind) {\n const target = document.getElementById(element.dataset.bind);\n if (target) {\n bind(target, params);\n continue;\n }\n }\n\n render(element, params);\n }\n\n const onloadName = document.currentScript?.dataset?.onload;\n if (onloadName && typeof window[onloadName] === 'function') {\n window[onloadName]();\n }\n}\n\nif (typeof document !== 'undefined') {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', autoRender);\n } else {\n autoRender();\n }\n}\n\nconst OpenAge = {\n render,\n open,\n bind,\n reset,\n remove,\n getToken,\n execute,\n challenge,\n on,\n off,\n once,\n verify: verifyToken,\n decode: decodeToken,\n version: VERSION,\n};\n\nexport default OpenAge;\nexport {\n render,\n open,\n bind,\n reset,\n remove,\n getToken,\n execute,\n challenge,\n on,\n off,\n once,\n verifyToken as verify,\n decodeToken as decode,\n VERSION as version,\n};\n"],"names":["loadScript","createLivenessSession","execVM"],"mappings":"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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AA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"}
1
+ {"version":3,"file":"openage.umd.js","sources":["../src/ui.js","../src/constants.js","../src/widget.js","../src/face-tracker.js","../src/positioning.js","../src/age-estimator.js","../src/liveness.js","../src/transport.js","../src/vm-client.js","../src/challenge.js","../src/index.js"],"sourcesContent":["export const FACE_SVG = `<svg viewBox=\"0 0 100 120\"\n fill=\"none\" class=\"oa-face-svg\">\n <ellipse cx=\"50\" cy=\"55\" rx=\"35\" ry=\"45\"\n stroke=\"currentColor\" stroke-width=\"1.8\"/>\n <ellipse cx=\"36\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <ellipse cx=\"64\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <line x1=\"50\" y1=\"52\" x2=\"48\" y2=\"62\"\n stroke=\"currentColor\" stroke-width=\"1.5\"\n stroke-linecap=\"round\"/>\n <path d=\"M40 72 Q50 79 60 72\"\n stroke=\"currentColor\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" fill=\"none\"/>\n</svg>`;\n\nexport const FACE_ICON_SVG = `<svg viewBox=\"0 0 100 120\"\n fill=\"none\" class=\"oa-face-icon-svg\">\n <ellipse cx=\"50\" cy=\"55\" rx=\"35\" ry=\"45\"\n stroke=\"currentColor\" stroke-width=\"2\"/>\n <ellipse cx=\"36\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <ellipse cx=\"64\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <line x1=\"50\" y1=\"52\" x2=\"48\" y2=\"62\"\n stroke=\"currentColor\" stroke-width=\"1.65\"\n stroke-linecap=\"round\"/>\n <path d=\"M40 72 Q50 79 60 72\"\n stroke=\"currentColor\" stroke-width=\"1.65\"\n stroke-linecap=\"round\" fill=\"none\"/>\n</svg>`;\n\nexport const FACE_GUIDE_SVG = `<svg viewBox=\"0 0 100 120\"\n fill=\"none\" class=\"oa-face-svg\">\n <ellipse cx=\"50\" cy=\"55\" rx=\"35\" ry=\"45\"\n stroke=\"currentColor\" stroke-width=\"1.8\"\n stroke-dasharray=\"6 4\"/>\n <ellipse cx=\"36\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <ellipse cx=\"64\" cy=\"45\" rx=\"5\" ry=\"3.5\"\n fill=\"currentColor\" class=\"oa-eye\"/>\n <line x1=\"50\" y1=\"52\" x2=\"48\" y2=\"62\"\n stroke=\"currentColor\" stroke-width=\"1.5\"\n stroke-linecap=\"round\"/>\n <path d=\"M40 72 Q50 79 60 72\"\n stroke=\"currentColor\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" fill=\"none\"/>\n</svg>`;\n\nexport const CHECK_SVG = `<svg viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"/>\n</svg>`;\n\nexport const CLOSE_SVG = `<svg viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>\n</svg>`;\n\nexport const RETRY_SVG = `<svg viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\">\n <path d=\"m14.955 7.986.116.01a1 1 0 0 1 .85 1.13 8 8 0 0 1-13.374 4.728l-.84.84c-.63.63-1.707.184-1.707-.707V10h3.987c.89 0 1.337 1.077.707 1.707l-.731.731a6 6 0 0 0 8.347-.264 6 6 0 0 0 1.63-3.33 1 1 0 0 1 1.131-.848zM11.514.813a8 8 0 0 1 1.942 1.336l.837-.837c.63-.63 1.707-.184 1.707.707V6h-3.981c-.89 0-1.337-1.077-.707-1.707l.728-.729a6 6 0 0 0-9.98 3.591 1 1 0 1 1-1.98-.281A8 8 0 0 1 11.514.813\"/>\n</svg>`;\n\nexport const SPINNER_SVG = `<svg viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" opacity=\"0.2\"/>\n <path d=\"M12 2 A10 10 0 0 1 22 12\"\n stroke-linecap=\"round\">\n <animateTransform attributeName=\"transform\"\n type=\"rotate\" from=\"0 12 12\" to=\"360 12 12\"\n dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n</svg>`;\n\nexport const SHIELD_SVG = `<svg viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n <path d=\"M12 2l8 4v6c0 5.5-3.8 10-8 12\n C7.8 22 4 17.5 4 12V6l8-4z\"/>\n <path d=\"M9 12l2 2 4-4\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>`;\n\nexport function resolveTheme(theme) {\n if (theme === 'light' || theme === 'dark') return theme;\n return resolveAutoTheme();\n}\n\nexport function watchTheme(host, theme) {\n if (theme === 'light' || theme === 'dark') return;\n if (typeof window === 'undefined') return;\n\n const update = () => {\n host.setAttribute('data-theme', resolveAutoTheme());\n };\n\n const cleanups = [];\n\n for (const query of ['(prefers-color-scheme: dark)', '(prefers-color-scheme: light)']) {\n const cleanup = watchMediaQuery(query, update);\n if (cleanup) cleanups.push(cleanup);\n }\n\n if (typeof MutationObserver === 'function') {\n const observer = new MutationObserver(update);\n const options = {\n attributes: true,\n attributeFilter: ['class', 'data-theme', 'style'],\n };\n\n if (document.documentElement) {\n observer.observe(document.documentElement, options);\n }\n\n if (document.body) {\n observer.observe(document.body, options);\n }\n\n cleanups.push(() => observer.disconnect());\n }\n\n return () => {\n for (const cleanup of cleanups) {\n cleanup();\n }\n };\n}\n\nfunction resolveAutoTheme() {\n if (typeof window === 'undefined') return 'dark';\n\n const documentTheme = resolveDocumentTheme();\n if (documentTheme) return documentTheme;\n\n const systemTheme = resolveSystemTheme();\n if (systemTheme) return systemTheme;\n\n return 'dark';\n}\n\nfunction resolveSystemTheme() {\n if (typeof window.matchMedia !== 'function') {\n return null;\n }\n\n if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n return 'dark';\n }\n\n if (window.matchMedia('(prefers-color-scheme: light)').matches) {\n return 'light';\n }\n\n return null;\n}\n\nfunction resolveDocumentTheme() {\n if (typeof document === 'undefined') return null;\n\n for (const element of [document.documentElement, document.body]) {\n const theme = readThemeHint(element);\n if (theme) return theme;\n }\n\n return null;\n}\n\nfunction readThemeHint(element) {\n if (!element || typeof window.getComputedStyle !== 'function') {\n return null;\n }\n\n const explicit = readExplicitTheme(element);\n if (explicit) return explicit;\n\n const styles = window.getComputedStyle(element);\n const scheme = parseColorScheme(styles.colorScheme);\n if (scheme) return scheme;\n\n return parseBackgroundTheme(styles.backgroundColor);\n}\n\nfunction readExplicitTheme(element) {\n const attrTheme = element.getAttribute('data-theme');\n if (attrTheme === 'light' || attrTheme === 'dark') {\n return attrTheme;\n }\n\n const className = element.className;\n if (typeof className !== 'string') return null;\n\n if (/\\bdark\\b|theme-dark|dark-theme/i.test(className)) {\n return 'dark';\n }\n\n if (/\\blight\\b|theme-light|light-theme/i.test(className)) {\n return 'light';\n }\n\n return null;\n}\n\nfunction parseColorScheme(value) {\n if (!value || value === 'normal') return null;\n\n const normalized = value.toLowerCase();\n const hasDark = normalized.includes('dark');\n const hasLight = normalized.includes('light');\n\n if (hasDark && !hasLight) return 'dark';\n if (hasLight && !hasDark) return 'light';\n\n return null;\n}\n\nfunction parseBackgroundTheme(value) {\n if (!value || value === 'transparent') return null;\n\n const match = value.match(/rgba?\\(([^)]+)\\)/i);\n if (!match) return null;\n\n const parts = match[1]\n .split(',')\n .slice(0, 3)\n .map((part) => Number.parseFloat(part.trim()));\n\n if (parts.length !== 3 || parts.some(Number.isNaN)) {\n return null;\n }\n\n const [red, green, blue] = parts;\n const brightness = (red * 299 + green * 587 + blue * 114) / 1000;\n\n if (brightness <= 140) return 'dark';\n if (brightness >= 180) return 'light';\n\n return null;\n}\n\nfunction watchMediaQuery(query, listener) {\n if (typeof window.matchMedia !== 'function') {\n return null;\n }\n\n const mediaQuery = window.matchMedia(query);\n\n if (typeof mediaQuery.addEventListener === 'function') {\n mediaQuery.addEventListener('change', listener);\n return () => {\n mediaQuery.removeEventListener('change', listener);\n };\n }\n\n if (typeof mediaQuery.addListener === 'function') {\n mediaQuery.addListener(listener);\n return () => {\n mediaQuery.removeListener(listener);\n };\n }\n\n return null;\n}\n\nexport const STYLES = `\n:host {\n --oa-bg: #0b0d11;\n --oa-surface: #14161d;\n --oa-border: #1f2230;\n --oa-text: #e8e8ed;\n --oa-text-muted: #7a7d8c;\n --oa-accent: #4ae68a;\n --oa-accent-dim: rgba(74, 230, 138, 0.12);\n --oa-danger: #ef4444;\n --oa-warn: #f59e0b;\n --oa-radius: 16px;\n --oa-font: 'DM Sans', system-ui, -apple-system,\n sans-serif;\n --oa-mono: 'Space Mono', monospace;\n\n display: block;\n font-family: var(--oa-font);\n color: var(--oa-text);\n line-height: 1.4;\n}\n\n:host([data-theme=\"light\"]) {\n --oa-bg: #f8f9fb;\n --oa-surface: #ffffff;\n --oa-border: #e2e4ea;\n --oa-text: #1a1c24;\n --oa-text-muted: #6b6e7b;\n --oa-accent: #22c55e;\n --oa-accent-dim: rgba(34, 197, 94, 0.1);\n}\n\n* { box-sizing: border-box; margin: 0; padding: 0; }\n\n/* ── Checkbox ────────────────────────────────── */\n\n.oa-checkbox {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: var(--oa-surface);\n border: 2px solid var(--oa-border);\n border-radius: var(--oa-radius);\n cursor: pointer;\n user-select: none;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n\n.oa-checkbox:hover {\n border-color: var(--oa-text-muted);\n}\n\n.oa-checkbox.oa-verified {\n border-color: var(--oa-accent);\n cursor: default;\n}\n\n.oa-checkbox.oa-failed {\n border-color: var(--oa-danger);\n}\n\n.oa-checkbox.oa-retry {\n border-color: var(--oa-danger);\n}\n\n.oa-checkbox.oa-expired {\n border-color: var(--oa-warn);\n}\n\n.oa-checkbox.oa-loading {\n align-items: center;\n}\n\n.oa-check-box {\n width: 24px;\n height: 24px;\n border: 2px solid var(--oa-border);\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: all 0.2s;\n}\n\n.oa-loading .oa-check-box {\n border-color: transparent;\n background: transparent;\n}\n\n.oa-loading .oa-check-box .oa-spinner {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translateY(2px);\n}\n\n.oa-verified .oa-check-box {\n background: var(--oa-accent);\n border-color: var(--oa-accent);\n color: var(--oa-bg);\n}\n\n.oa-failed .oa-check-box {\n background: var(--oa-danger);\n border-color: var(--oa-danger);\n color: white;\n}\n\n.oa-retry .oa-check-box {\n background: var(--oa-danger);\n border-color: var(--oa-danger);\n color: white;\n}\n\n.oa-check-box svg {\n width: 14px;\n height: 14px;\n}\n\n.oa-check-box .oa-spinner svg {\n width: 18px;\n height: 18px;\n}\n\n.oa-label {\n display: flex;\n flex-direction: column;\n gap: 1px;\n flex: 1;\n min-width: 0;\n}\n\n.oa-label-text {\n font-size: 13px;\n font-weight: 600;\n}\n\n.oa-right-section {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n margin-left: auto;\n}\n\n.oa-face-icon-wrap {\n width: 18px;\n height: 22px;\n color: var(--oa-text-muted);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.oa-face-icon-wrap .oa-face-icon-svg {\n width: 100%;\n height: 100%;\n}\n\n.oa-face-icon-wrap .oa-eye {\n transform-box: fill-box;\n transform-origin: center;\n animation: oa-idle-blink 5s ease-in-out infinite;\n}\n\n.oa-face-icon-wrap .oa-face-icon-svg {\n animation: oa-breathe 4s ease-in-out infinite;\n}\n\n.oa-branding-row {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n}\n\n.oa-branding-link {\n font-size: 10px;\n font-weight: 700;\n font-family: var(--oa-mono);\n color: var(--oa-text-muted);\n text-decoration: none;\n letter-spacing: -0.02em;\n cursor: pointer;\n}\n\n.oa-branding-link:hover {\n color: var(--oa-text);\n}\n\n.oa-links-row {\n display: flex;\n gap: 6px;\n justify-content: center;\n}\n\n.oa-links-row a {\n font-size: 9px;\n color: var(--oa-text-muted);\n text-decoration: none;\n opacity: 0.7;\n cursor: pointer;\n}\n\n.oa-links-row a:hover {\n opacity: 1;\n text-decoration: underline;\n}\n\n.oa-compact .oa-label-text {\n font-size: 11px;\n}\n\n.oa-compact .oa-face-icon-wrap {\n width: 16px;\n height: 20px;\n}\n\n/* ── Error banner (inline in checkbox) ───────── */\n\n.oa-error-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n margin-top: 6px;\n background: rgba(239, 68, 68, 0.08);\n border: 1px solid rgba(239, 68, 68, 0.2);\n border-radius: 8px;\n font-size: 12px;\n color: var(--oa-danger);\n animation: oa-fade-in 0.3s ease;\n}\n\n.oa-error-banner button {\n margin-left: auto;\n background: none;\n border: 1px solid var(--oa-danger);\n border-radius: 6px;\n color: var(--oa-danger);\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n cursor: pointer;\n font-family: var(--oa-font);\n flex-shrink: 0;\n}\n\n.oa-error-banner button:hover {\n background: rgba(239, 68, 68, 0.1);\n}\n\n/* ── Popup / Modal shell ─────────────────────── */\n\n.oa-popup {\n position: fixed;\n z-index: 100000;\n background: var(--oa-bg);\n border: 1px solid var(--oa-border);\n border-radius: var(--oa-radius);\n box-shadow: 0 20px 60px rgba(0,0,0,0.4),\n 0 0 0 1px rgba(0,0,0,0.08);\n width: 340px;\n max-height: 90vh;\n overflow: hidden;\n animation: oa-popup-in 0.25s ease;\n display: flex;\n flex-direction: column;\n}\n\n.oa-inline-shell {\n background: var(--oa-bg);\n border: 1px solid var(--oa-border);\n border-radius: var(--oa-radius);\n box-shadow: 0 20px 60px rgba(0,0,0,0.18),\n 0 0 0 1px rgba(0,0,0,0.06);\n width: min(100%, 360px);\n max-width: 100%;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n margin: 0 auto;\n}\n\n.oa-modal-overlay {\n position: fixed;\n inset: 0;\n z-index: 99999;\n background: rgba(0,0,0,0.65);\n display: flex;\n align-items: center;\n justify-content: center;\n animation: oa-fade-in 0.2s ease;\n backdrop-filter: blur(6px);\n}\n\n.oa-modal {\n background: var(--oa-bg);\n border: 1px solid var(--oa-border);\n border-radius: var(--oa-radius);\n width: 360px;\n max-width: 95vw;\n max-height: 95vh;\n overflow: hidden;\n animation: oa-slide-in 0.3s ease;\n display: flex;\n flex-direction: column;\n}\n\n/* ── Header ──────────────────────────────────── */\n\n.oa-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n border-bottom: 1px solid var(--oa-border);\n flex-shrink: 0;\n}\n\n.oa-logo {\n font-family: var(--oa-mono);\n font-size: 0.85rem;\n letter-spacing: -0.03em;\n color: var(--oa-text-muted);\n text-decoration: none;\n cursor: pointer;\n}\n\n.oa-logo:hover {\n color: var(--oa-text);\n}\n\n.oa-logo strong {\n color: var(--oa-text);\n font-weight: 700;\n}\n\n.oa-badge {\n font-size: 0.55rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--oa-accent);\n background: var(--oa-accent-dim);\n padding: 2px 6px;\n border-radius: 100px;\n margin-left: 6px;\n}\n\n.oa-title {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.oa-close-btn {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n color: var(--oa-text-muted);\n transition: background 0.15s, color 0.15s;\n}\n\n.oa-close-btn:hover {\n background: var(--oa-border);\n color: var(--oa-text);\n}\n\n.oa-close-btn svg {\n width: 16px;\n height: 16px;\n}\n\n/* ── Body (viewport) ─────────────────────────── */\n\n.oa-body {\n flex: 1;\n position: relative;\n overflow: hidden;\n}\n\n/* ── Hero / start screen ─────────────────────── */\n\n.oa-hero {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n padding: 2rem 1.2rem 1.2rem;\n background: var(--oa-surface);\n border: 1px solid var(--oa-border);\n border-radius: var(--oa-radius);\n margin: 10px;\n animation: oa-fade-in 0.4s ease;\n}\n\n.oa-hero-icon {\n width: 80px;\n height: 96px;\n color: var(--oa-text-muted);\n}\n\n.oa-hero-icon .oa-face-svg.oa-idle {\n animation: oa-breathe 4s ease-in-out infinite;\n}\n\n.oa-hero-icon .oa-eye {\n transform-box: fill-box;\n transform-origin: center;\n animation: oa-idle-blink 5s ease-in-out infinite;\n}\n\n.oa-hero-status {\n color: var(--oa-text-muted);\n font-size: 0.8rem;\n font-weight: 500;\n text-align: center;\n min-height: 1.4em;\n}\n\n.oa-hero-privacy {\n font-size: 0.68rem;\n color: var(--oa-text-muted);\n text-align: center;\n line-height: 1.5;\n max-width: 260px;\n opacity: 0.7;\n}\n\n.oa-hero-privacy svg {\n width: 10px;\n height: 10px;\n vertical-align: -2px;\n margin-right: 2px;\n}\n\n/* ── Start / Retry button ────────────────────── */\n\n.oa-actions {\n display: flex;\n justify-content: center;\n padding: 0 14px 14px;\n flex-shrink: 0;\n}\n\n.oa-btn {\n font-family: var(--oa-font);\n padding: 0.55rem 1.5rem;\n border: none;\n border-radius: 10px;\n font-size: 0.8rem;\n font-weight: 600;\n cursor: pointer;\n background: var(--oa-accent);\n color: var(--oa-bg);\n transition: transform 0.12s, opacity 0.15s;\n width: 100%;\n max-width: 240px;\n}\n\n.oa-btn:hover { opacity: 0.88; }\n.oa-btn:active { transform: scale(0.97); }\n\n/* ── Video area ──────────────────────────────── */\n\n.oa-video-area {\n position: relative;\n width: 100%;\n aspect-ratio: 3/4;\n max-height: 55vh;\n background: var(--oa-surface);\n overflow: hidden;\n border-radius: var(--oa-radius);\n margin: 10px;\n width: calc(100% - 20px);\n border: 1px solid var(--oa-border);\n animation: oa-fade-in 0.3s ease;\n}\n\n.oa-video-area video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n transform: scaleX(-1);\n}\n\n/* ── Face guide overlay ──────────────────────── */\n\n.oa-face-guide {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 80%;\n max-width: 360px;\n aspect-ratio: 5/6;\n perspective: 400px;\n color: rgba(255, 255, 255, 0.45);\n pointer-events: none;\n z-index: 2;\n transition: opacity 0.4s ease;\n}\n\n.oa-face-guide .oa-face-svg {\n width: 100%;\n height: 100%;\n transform-origin: center center;\n filter: drop-shadow(\n 0 0 16px rgba(15, 23, 42, 0.16)\n );\n}\n\n.oa-face-guide .oa-eye {\n transform-box: fill-box;\n transform-origin: center;\n}\n\n.oa-face-guide[data-task=\"turn-left\"] .oa-face-svg {\n animation: oa-turn-left 2s ease-in-out infinite;\n}\n.oa-face-guide[data-task=\"turn-right\"] .oa-face-svg {\n animation: oa-turn-right 2s ease-in-out infinite;\n}\n.oa-face-guide[data-task=\"nod\"] .oa-face-svg {\n animation: oa-nod 2s ease-in-out infinite;\n}\n.oa-face-guide[data-task=\"blink-twice\"] .oa-eye {\n animation: oa-blink 2.4s ease-in-out infinite;\n}\n.oa-face-guide[data-task=\"move-closer\"] .oa-face-svg {\n animation: oa-closer 2.5s ease-in-out infinite;\n}\n\n/* ── Challenge HUD (bottom gradient overlay) ── */\n\n.oa-challenge-hud {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n padding: 1rem 0.8rem 0.6rem;\n background: linear-gradient(\n to top,\n rgba(11, 13, 17, 0.92) 0%,\n rgba(11, 13, 17, 0) 100%\n );\n z-index: 3;\n pointer-events: none;\n}\n\n.oa-challenge-text {\n font-size: 0.85rem;\n font-weight: 600;\n text-align: center;\n color: var(--oa-text);\n text-shadow: 0 1px 6px rgba(0, 0, 0, 0.7);\n margin-bottom: 0.4rem;\n}\n\n.oa-challenge-bar {\n height: 3px;\n background: rgba(255, 255, 255, 0.1);\n border-radius: 2px;\n overflow: hidden;\n}\n\n.oa-challenge-fill {\n height: 100%;\n background: var(--oa-accent);\n border-radius: 2px;\n transition: width 0.25s ease;\n}\n\n/* ── Video status (top gradient overlay) ─────── */\n\n.oa-video-status {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n padding: 0.8rem 0.8rem 1.2rem;\n background: linear-gradient(\n to bottom,\n rgba(11, 13, 17, 0.85) 0%,\n rgba(11, 13, 17, 0) 100%\n );\n z-index: 3;\n pointer-events: none;\n}\n\n.oa-video-status p {\n font-size: 0.75rem;\n font-weight: 500;\n text-align: center;\n color: var(--oa-text-muted);\n text-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);\n}\n\n/* ── Result area ─────────────────────────────── */\n\n.oa-result {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.5rem;\n padding: 2rem 1.2rem;\n background: var(--oa-surface);\n border: 1px solid var(--oa-border);\n border-radius: var(--oa-radius);\n margin: 10px;\n animation: oa-fade-in 0.4s ease;\n}\n\n.oa-result-icon {\n font-size: 2.4rem;\n line-height: 1;\n}\n\n.oa-result-text {\n font-size: 0.85rem;\n font-weight: 500;\n text-align: center;\n}\n\n.oa-result-pass { color: var(--oa-accent); }\n.oa-result-fail { color: var(--oa-danger); }\n.oa-result-retry { color: var(--oa-warn); }\n\n.oa-error-step {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.7rem;\n padding: 2rem 1.2rem;\n background: var(--oa-surface);\n border: 1px solid var(--oa-border);\n border-radius: var(--oa-radius);\n margin: 10px;\n animation: oa-fade-in 0.4s ease;\n text-align: center;\n}\n\n.oa-error-step-icon {\n width: 3rem;\n height: 3rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 999px;\n background: rgba(239, 68, 68, 0.12);\n color: var(--oa-danger);\n font-size: 1.7rem;\n line-height: 1;\n}\n\n.oa-error-step-title {\n font-size: 1rem;\n font-weight: 700;\n color: var(--oa-text);\n}\n\n.oa-error-step-message {\n font-size: 0.84rem;\n line-height: 1.5;\n color: var(--oa-text-muted);\n max-width: 260px;\n}\n\n.oa-error-step-countdown {\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--oa-danger);\n}\n\n.oa-hidden { display: none !important; }\n\n/* ── Animations ──────────────────────────────── */\n\n@keyframes oa-popup-in {\n from { opacity: 0; transform: scale(0.95); }\n to { opacity: 1; transform: scale(1); }\n}\n\n@keyframes oa-fade-in {\n from { opacity: 0; transform: translateY(6px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes oa-slide-in {\n from { opacity: 0; transform: translateY(16px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes oa-breathe {\n 0%, 100% { transform: scale(1); }\n 50% { transform: scale(1.04); }\n}\n\n@keyframes oa-idle-blink {\n 0%, 42%, 48%, 100% { transform: scaleY(1); }\n 44%, 46% { transform: scaleY(0.05); }\n}\n\n@keyframes oa-turn-left {\n 0%, 100% { transform: rotateY(0); }\n 35%, 65% { transform: rotateY(-30deg); }\n}\n\n@keyframes oa-turn-right {\n 0%, 100% { transform: rotateY(0); }\n 35%, 65% { transform: rotateY(30deg); }\n}\n\n@keyframes oa-nod {\n 0%, 100% { transform: rotateX(0); }\n 30%, 50% { transform: rotateX(25deg); }\n}\n\n@keyframes oa-blink {\n 0%, 18%, 32%, 50%, 100% { transform: scaleY(1); }\n 22%, 28% { transform: scaleY(0.05); }\n 40%, 46% { transform: scaleY(0.05); }\n}\n\n@keyframes oa-closer {\n 0%, 100% { transform: scale(1); }\n 35%, 55% { transform: scale(1.3); }\n}\n`;\n\nexport function checkboxTemplate(labelText) {\n return `\n <div class=\"oa-widget-wrap\">\n <div class=\"oa-checkbox\" role=\"checkbox\"\n aria-checked=\"false\" tabindex=\"0\">\n <div class=\"oa-check-box\"></div>\n <div class=\"oa-label\">\n <span class=\"oa-label-text\">${labelText}</span>\n </div>\n <div class=\"oa-right-section\">\n <div class=\"oa-branding-row\">\n <div class=\"oa-face-icon-wrap\">\n ${FACE_ICON_SVG}\n </div>\n <a class=\"oa-branding-link\"\n href=\"https://github.com/tn3w/OpenAge\"\n target=\"_blank\" rel=\"noopener\">OpenAge</a>\n </div>\n <div class=\"oa-links-row\">\n <a href=\"https://github.com/tn3w/OpenAge\"\n target=\"_blank\"\n rel=\"noopener\">Terms</a>\n <a href=\"https://github.com/tn3w/OpenAge\"\n target=\"_blank\"\n rel=\"noopener\">Privacy</a>\n </div>\n </div>\n </div>\n <div class=\"oa-error-slot\"></div>\n </div>\n `;\n}\n\nexport function heroTemplate(statusText) {\n return `\n <div class=\"oa-hero\">\n <div class=\"oa-hero-icon\">\n ${FACE_SVG.replace('class=\"oa-face-svg\"', 'class=\"oa-face-svg oa-idle\"')}\n </div>\n <p class=\"oa-hero-status\">${statusText}</p>\n <p class=\"oa-hero-privacy\">\n ${SHIELD_SVG}\n Open-source &amp; privacy-focused.\n No photos or camera data leave your device.\n </p>\n </div>\n `;\n}\n\nexport function challengeTemplate() {\n return `\n <div class=\"oa-video-area\">\n <video autoplay playsinline muted></video>\n <div class=\"oa-face-guide\">\n ${FACE_GUIDE_SVG}\n </div>\n <div class=\"oa-challenge-hud oa-hidden\">\n <p class=\"oa-challenge-text\"></p>\n <div class=\"oa-challenge-bar\">\n <div class=\"oa-challenge-fill\"\n style=\"width:0%\"></div>\n </div>\n </div>\n <div class=\"oa-video-status\">\n <p></p>\n </div>\n </div>\n `;\n}\n\nexport function errorStepTemplate(message) {\n return `\n <div class=\"oa-error-step\">\n <div class=\"oa-error-step-icon\">✕</div>\n <div class=\"oa-error-step-title\">Verification stopped</div>\n <div class=\"oa-error-step-message\">${message}</div>\n <div class=\"oa-error-step-countdown\"></div>\n </div>\n `;\n}\n\nexport function resultTemplate(outcome, message) {\n const icons = {\n fail: '✕',\n retry: '↻',\n };\n const classes = {\n fail: 'oa-result-fail',\n retry: 'oa-result-retry',\n };\n return `\n <div class=\"oa-result ${classes[outcome] || ''}\">\n <div class=\"oa-result-icon\">\n ${icons[outcome] || '?'}\n </div>\n <div class=\"oa-result-text\">${message}</div>\n </div>\n `;\n}\n\nexport function errorBannerTemplate(message) {\n return `\n <div class=\"oa-error-banner\">\n <span>${message}</span>\n <button class=\"oa-retry-btn\">Retry</button>\n </div>\n `;\n}\n","export const VERSION = '1.0.0';\n\nexport const MEDIAPIPE_CDN = 'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.17';\n\nexport const MEDIAPIPE_WASM = `${MEDIAPIPE_CDN}/wasm`;\n\nexport const MEDIAPIPE_VISION = `${MEDIAPIPE_CDN}/vision_bundle.mjs`;\n\nexport const MEDIAPIPE_MODEL =\n 'https://storage.googleapis.com/mediapipe-models/' +\n 'face_landmarker/face_landmarker/float16/1/' +\n 'face_landmarker.task';\n\nexport const FACEAPI_CDN = 'https://cdn.jsdelivr.net/npm/face-api.js@0.22.2/dist/face-api.min.js';\n\nexport const FACEAPI_MODEL_CDN =\n 'https://cdn.jsdelivr.net/gh/justadudewhohacks/face-api.js@master/weights';\n\nexport const MAX_RETRIES = 3;\nexport const ERROR_STEP_SECONDS = 5;\nexport const BURST_FRAMES = 5;\nexport const BURST_INTERVAL_MS = 200;\nexport const POSITION_CHECK_MS = 100;\nexport const MOTION_CAPTURE_MS = 3000;\nexport const MOTION_SAMPLE_MS = 100;\nexport const TOKEN_EXPIRY_S = 300;\nexport const STABLE_FRAMES_REQUIRED = 10;\n\nexport const TASK_TIMEOUT_MS = 8000;\nexport const MIN_TASK_TIME_MS = 500;\nexport const TASK_COUNT = 3;\nexport const REQUIRED_TASK_PASSES = 2;\n\nexport const POPUP_MIN_WIDTH = 340;\nexport const POPUP_MIN_HEIGHT = 520;\nexport const POPUP_MARGIN = 12;\n","import {\n STYLES,\n checkboxTemplate,\n heroTemplate,\n challengeTemplate,\n errorStepTemplate,\n resultTemplate,\n resolveTheme,\n watchTheme,\n SPINNER_SVG,\n CHECK_SVG,\n CLOSE_SVG,\n RETRY_SVG,\n} from './ui.js';\nimport { POPUP_MIN_WIDTH, POPUP_MIN_HEIGHT, POPUP_MARGIN } from './constants.js';\n\nlet widgetCounter = 0;\n\nexport class Widget {\n constructor(container, params) {\n this.id = `oa-${++widgetCounter}`;\n this.params = params;\n this.container = resolveContainer(container);\n this.anchorElement = null;\n this.state = 'idle';\n this.token = null;\n this.popup = null;\n this.shadow = null;\n this.elements = {};\n this.popupElements = null;\n this.onChallenge = null;\n this.onStartClick = null;\n this.popupFrame = 0;\n this.themeCleanup = null;\n\n this.render();\n }\n\n render() {\n const host = document.createElement('div');\n host.id = this.id;\n this.shadow = host.attachShadow({ mode: 'open' });\n this.host = host;\n\n const style = document.createElement('style');\n style.textContent = STYLES;\n this.shadow.appendChild(style);\n\n const theme = resolveTheme(this.params.theme);\n host.setAttribute('data-theme', theme);\n this.themeCleanup = watchTheme(host, this.params.theme);\n\n if (this.params.size === 'invisible') {\n host.style.display = 'none';\n this.container.appendChild(host);\n return;\n }\n\n if (this.isInlineLayout()) {\n this.renderInlineShell();\n this.container.appendChild(host);\n return;\n }\n\n const label = 'I am of age';\n\n const wrapper = document.createElement('div');\n wrapper.innerHTML = checkboxTemplate(label);\n this.shadow.appendChild(wrapper.firstElementChild);\n\n const checkbox = this.shadow.querySelector('.oa-checkbox');\n\n if (this.params.size === 'compact') {\n checkbox.classList.add('oa-compact');\n }\n\n checkbox.addEventListener('click', (event) => {\n if (event.target.closest('a')) return;\n if (this.state === 'verified') return;\n if (this.state === 'loading') return;\n this.clearError();\n this.startChallenge();\n });\n\n checkbox.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n checkbox.click();\n }\n });\n\n this.elements.checkbox = checkbox;\n this.elements.checkBox = this.shadow.querySelector('.oa-check-box');\n this.elements.errorSlot = this.shadow.querySelector('.oa-error-slot');\n\n this.container.appendChild(host);\n }\n\n isInlineLayout() {\n return this.params.layout === 'inline';\n }\n\n renderInlineShell() {\n const inlineShell = document.createElement('div');\n inlineShell.className = 'oa-inline-shell';\n inlineShell.innerHTML = this.buildPopupContent({ closeable: false });\n this.shadow.appendChild(inlineShell);\n\n this.popup = {\n host: this.host,\n root: inlineShell,\n inline: true,\n };\n\n this.bindPopupEvents(inlineShell);\n }\n\n resetInlineShell() {\n if (!this.popup?.root) return;\n\n this.popup.root.innerHTML = this.buildPopupContent({ closeable: false });\n this.bindPopupEvents(this.popup.root);\n }\n\n startChallenge() {\n this.setState('loading');\n\n if (this.onChallenge) {\n this.onChallenge(this);\n }\n }\n\n createPopupShell() {\n const theme = resolveTheme(this.params.theme);\n const popupHost = document.createElement('div');\n popupHost.setAttribute('data-theme', theme);\n const popupShadow = popupHost.attachShadow({\n mode: 'open',\n });\n\n const style = document.createElement('style');\n style.textContent = STYLES;\n popupShadow.appendChild(style);\n\n const themeCleanup = watchTheme(popupHost, this.params.theme);\n\n return {\n popupHost,\n popupShadow,\n themeCleanup,\n };\n }\n\n openPopup() {\n if (this.isInlineLayout()) {\n if (!this.popup) {\n this.renderInlineShell();\n }\n\n return this.getVideo();\n }\n\n if (this.popup) return this.getVideo();\n\n const anchor = this.getPopupAnchor();\n\n if (!anchor) {\n return this.openModal();\n }\n\n const { popupHost, popupShadow, themeCleanup } = this.createPopupShell();\n\n const popup = document.createElement('div');\n popup.className = 'oa-popup';\n popup.innerHTML = this.buildPopupContent();\n popup.style.visibility = 'hidden';\n popup.style.pointerEvents = 'none';\n\n popupShadow.appendChild(popup);\n document.body.appendChild(popupHost);\n\n this.popup = {\n anchor,\n host: popupHost,\n root: popup,\n themeCleanup,\n };\n\n const anchorRect = anchor.getBoundingClientRect();\n const popupRect = popup.getBoundingClientRect();\n const position = findPopupPosition(anchorRect, popupRect);\n\n if (position.mode === 'modal') {\n popupHost.remove();\n themeCleanup?.();\n this.popup = null;\n return this.openModal();\n }\n\n this.bindPopupEvents(popup, popupShadow);\n this.updatePopupPosition();\n this.startPopupTracking();\n return this.getVideo();\n }\n\n openModal() {\n const { popupHost, popupShadow, themeCleanup } = this.createPopupShell();\n\n const overlay = document.createElement('div');\n overlay.className = 'oa-modal-overlay';\n\n const modal = document.createElement('div');\n modal.className = 'oa-modal';\n modal.innerHTML = this.buildPopupContent();\n\n overlay.appendChild(modal);\n popupShadow.appendChild(overlay);\n document.body.appendChild(popupHost);\n\n overlay.addEventListener('click', (event) => {\n if (event.target === overlay) this.closePopup();\n });\n\n this.popup = {\n host: popupHost,\n root: modal,\n overlay,\n themeCleanup,\n };\n this.bindPopupEvents(modal, popupShadow);\n return this.getVideo();\n }\n\n getPopupAnchor() {\n return this.anchorElement || this.elements.checkbox || this.host || null;\n }\n\n startPopupTracking() {\n if (!this.popup || this.popup.overlay) return;\n\n const schedule = () => {\n this.schedulePopupPosition();\n };\n\n const cleanups = [];\n const addWindowListener = (name, options) => {\n window.addEventListener(name, schedule, options);\n cleanups.push(() => {\n window.removeEventListener(name, schedule, options);\n });\n };\n\n addWindowListener('resize', { passive: true });\n addWindowListener('scroll', {\n capture: true,\n passive: true,\n });\n\n if (window.visualViewport) {\n const viewport = window.visualViewport;\n viewport.addEventListener('resize', schedule);\n viewport.addEventListener('scroll', schedule);\n cleanups.push(() => {\n viewport.removeEventListener('resize', schedule);\n viewport.removeEventListener('scroll', schedule);\n });\n }\n\n if (typeof ResizeObserver === 'function') {\n const observer = new ResizeObserver(() => {\n schedule();\n });\n observer.observe(this.popup.root);\n observer.observe(this.popup.anchor);\n observer.observe(document.documentElement);\n if (document.body) {\n observer.observe(document.body);\n }\n cleanups.push(() => observer.disconnect());\n }\n\n this.popup.cleanup = () => {\n if (this.popupFrame) {\n cancelAnimationFrame(this.popupFrame);\n this.popupFrame = 0;\n }\n for (const cleanup of cleanups) {\n cleanup();\n }\n };\n }\n\n schedulePopupPosition() {\n if (!this.popup || this.popup.overlay) return;\n if (this.popupFrame) return;\n\n this.popupFrame = requestAnimationFrame(() => {\n this.popupFrame = 0;\n this.updatePopupPosition();\n });\n }\n\n updatePopupPosition() {\n if (!this.popup || this.popup.overlay) return;\n\n const anchor = this.getPopupAnchor();\n if (!anchor || !anchor.isConnected) {\n this.closePopup();\n return;\n }\n\n this.popup.anchor = anchor;\n\n const anchorRect = anchor.getBoundingClientRect();\n const popupRect = this.popup.root.getBoundingClientRect();\n const position = findPopupPosition(anchorRect, popupRect);\n\n if (position.mode === 'modal') {\n this.closePopup();\n this.openModal();\n return;\n }\n\n const top = `${Math.round(position.top)}px`;\n const left = `${Math.round(position.left)}px`;\n\n if (this.popup.root.style.top !== top) {\n this.popup.root.style.top = top;\n }\n\n if (this.popup.root.style.left !== left) {\n this.popup.root.style.left = left;\n }\n\n this.popup.root.dataset.placement = position.placement;\n this.popup.root.style.visibility = 'visible';\n this.popup.root.style.pointerEvents = 'auto';\n }\n\n buildPopupContent({ closeable = true } = {}) {\n return `\n <div class=\"oa-header\">\n <div class=\"oa-title\">\n <a class=\"oa-logo\"\n href=\"https://github.com/tn3w/OpenAge\"\n target=\"_blank\" rel=\"noopener\">\n Open<strong>Age</strong>\n </a>\n <span class=\"oa-badge\">on-device</span>\n </div>\n ${\n closeable\n ? `<button class=\"oa-close-btn\"\n aria-label=\"Close\">\n ${CLOSE_SVG}\n </button>`\n : ''\n }\n </div>\n <div class=\"oa-body\">\n ${heroTemplate('Initializing…')}\n </div>\n <div class=\"oa-actions oa-hidden\">\n <button class=\"oa-btn oa-start-btn\">\n Begin Verification\n </button>\n </div>\n `;\n }\n\n bindPopupEvents(root) {\n const closeBtn = root.querySelector('.oa-close-btn');\n if (closeBtn) {\n closeBtn.addEventListener('click', () => {\n this.closePopup();\n this.params.closeCallback?.();\n });\n }\n\n const startBtn = root.querySelector('.oa-start-btn');\n if (startBtn) {\n startBtn.addEventListener('click', () => {\n if (this.onStartClick) this.onStartClick();\n });\n }\n\n this.popupElements = {\n body: root.querySelector('.oa-body'),\n actions: root.querySelector('.oa-actions'),\n startBtn,\n heroStatus: root.querySelector('.oa-hero-status'),\n };\n }\n\n getVideo() {\n if (!this.popup) return null;\n return this.popup.root.querySelector('video');\n }\n\n showHero(statusText) {\n if (!this.popupElements?.body) return;\n this.popupElements.body.innerHTML = heroTemplate(statusText);\n this.popupElements.heroStatus = this.popupElements.body.querySelector('.oa-hero-status');\n this.hideActions();\n }\n\n showReady() {\n this.setHeroStatus('Ready to verify your age.');\n this.showActions('Begin Verification');\n }\n\n showCamera() {\n if (!this.popupElements?.body) return;\n this.popupElements.body.innerHTML = challengeTemplate();\n\n this.popupElements.video = this.popupElements.body.querySelector('video');\n this.popupElements.faceGuide = this.popupElements.body.querySelector('.oa-face-guide');\n this.popupElements.challengeHud =\n this.popupElements.body.querySelector('.oa-challenge-hud');\n this.popupElements.challengeText =\n this.popupElements.body.querySelector('.oa-challenge-text');\n this.popupElements.challengeFill =\n this.popupElements.body.querySelector('.oa-challenge-fill');\n this.popupElements.videoStatus =\n this.popupElements.body.querySelector('.oa-video-status p');\n\n this.hideActions();\n return this.popupElements.video;\n }\n\n showLiveness() {\n if (this.popupElements?.faceGuide) {\n this.popupElements.faceGuide.classList.remove('oa-hidden');\n }\n if (this.popupElements?.challengeHud) {\n this.popupElements.challengeHud.classList.remove('oa-hidden');\n }\n }\n\n setHeroStatus(text) {\n if (this.popupElements?.heroStatus) {\n this.popupElements.heroStatus.textContent = text;\n }\n }\n\n setVideoStatus(text) {\n if (this.popupElements?.videoStatus) {\n this.popupElements.videoStatus.textContent = text;\n }\n }\n\n setInstruction(text) {\n if (this.popupElements?.challengeText) {\n this.popupElements.challengeText.textContent = text;\n }\n }\n\n setStatus(text) {\n this.setVideoStatus(text);\n }\n\n setProgress(fraction) {\n if (this.popupElements?.challengeFill) {\n this.popupElements.challengeFill.style.width = `${Math.round(fraction * 100)}%`;\n }\n }\n\n setTask(taskId) {\n if (this.popupElements?.faceGuide) {\n this.popupElements.faceGuide.setAttribute('data-task', taskId || '');\n }\n }\n\n showActions(label) {\n if (!this.popupElements?.actions) return;\n this.popupElements.actions.classList.remove('oa-hidden');\n if (this.popupElements.startBtn) {\n this.popupElements.startBtn.textContent = label;\n }\n }\n\n hideActions() {\n if (this.popupElements?.actions) {\n this.popupElements.actions.classList.add('oa-hidden');\n }\n }\n\n showResult(outcome, message) {\n if (this.isInlineLayout()) {\n if (!this.popupElements?.body) return;\n\n this.popupElements.body.innerHTML = resultTemplate(outcome, message);\n this.hideActions();\n\n if (outcome === 'pass') {\n this.setState('verified');\n return;\n }\n\n this.setState(outcome === 'fail' ? 'failed' : 'retry');\n this.showActions('Try Again');\n return;\n }\n\n if (outcome === 'pass') {\n this.closePopup();\n this.setState('verified');\n return;\n }\n\n if (outcome === 'fail') {\n if (this.params.size === 'invisible') {\n if (this.popupElements?.body) {\n this.popupElements.body.innerHTML = resultTemplate(outcome, message);\n }\n this.hideActions();\n this.showActions('Try Again');\n } else {\n this.closePopup();\n this.setState('retry');\n }\n return;\n }\n\n if (outcome === 'retry') {\n if (this.params.size !== 'invisible') {\n this.closePopup();\n this.setState('retry');\n return;\n }\n\n if (this.popupElements?.body) {\n this.popupElements.body.innerHTML = resultTemplate(outcome, message);\n }\n this.hideActions();\n this.showActions('Try Again');\n }\n }\n\n showError(message) {\n if (!this.popupElements?.body) return;\n\n this.popupElements.body.innerHTML = errorStepTemplate(message);\n this.popupElements.errorCountdown = this.popupElements.body.querySelector(\n '.oa-error-step-countdown'\n );\n this.hideActions();\n }\n\n setErrorCountdown(seconds) {\n if (!this.popupElements?.errorCountdown) return;\n\n const unit = seconds === 1 ? 'second' : 'seconds';\n this.popupElements.errorCountdown.textContent = `Closing in ${seconds} ${unit}…`;\n }\n\n clearError() {\n if (this.elements.errorSlot) {\n this.elements.errorSlot.innerHTML = '';\n }\n }\n\n closePopup() {\n if (!this.popup) return;\n\n if (this.popup.inline) {\n this.popup.cleanup?.();\n if (this.popupFrame) {\n cancelAnimationFrame(this.popupFrame);\n this.popupFrame = 0;\n }\n this.resetInlineShell();\n\n if (this.state === 'loading') {\n this.setState('idle');\n }\n\n return;\n }\n\n this.popup.cleanup?.();\n this.popup.themeCleanup?.();\n this.popup.host.remove();\n this.popup = null;\n this.popupElements = null;\n\n if (this.state === 'loading') {\n this.setState('idle');\n }\n }\n\n setState(newState) {\n this.state = newState;\n const cb = this.elements.checkbox;\n const box = this.elements.checkBox;\n if (!cb || !box) return;\n\n cb.classList.remove('oa-loading', 'oa-verified', 'oa-failed', 'oa-retry', 'oa-expired');\n cb.setAttribute('aria-checked', 'false');\n box.innerHTML = '';\n\n switch (newState) {\n case 'loading':\n cb.classList.add('oa-loading');\n box.innerHTML = `<span class=\"oa-spinner\">` + `${SPINNER_SVG}</span>`;\n break;\n case 'verified':\n cb.classList.add('oa-verified');\n cb.setAttribute('aria-checked', 'true');\n box.innerHTML = CHECK_SVG;\n break;\n case 'failed':\n cb.classList.add('oa-failed');\n box.innerHTML = '✕';\n break;\n case 'retry':\n cb.classList.add('oa-retry');\n box.innerHTML = RETRY_SVG;\n break;\n case 'expired':\n cb.classList.add('oa-expired');\n cb.setAttribute('aria-checked', 'false');\n break;\n default:\n break;\n }\n }\n\n getToken() {\n return this.token;\n }\n\n reset() {\n this.token = null;\n this.closePopup();\n this.setState('idle');\n }\n\n destroy() {\n this.closePopup();\n this.themeCleanup?.();\n this.host?.remove();\n }\n}\n\nexport function createModalWidget(params) {\n const widget = new Widget(document.createElement('div'), { ...params, size: 'invisible' });\n return widget;\n}\n\nfunction resolveContainer(container) {\n if (typeof container === 'string') {\n return document.querySelector(container);\n }\n return container;\n}\n\nfunction findPopupPosition(anchorRect, popupRect) {\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n const popupWidth = Math.max(popupRect.width || 0, POPUP_MIN_WIDTH);\n const popupHeight = Math.max(popupRect.height || 0, POPUP_MIN_HEIGHT);\n const availableWidth = viewport.width - POPUP_MARGIN * 2;\n const availableHeight = viewport.height - POPUP_MARGIN * 2;\n\n if (popupWidth > availableWidth || popupHeight > availableHeight) {\n return { mode: 'modal' };\n }\n\n const left = clampLeft(\n anchorRect.left + anchorRect.width / 2 - popupWidth / 2,\n viewport.width,\n popupWidth\n );\n\n const topBelow = anchorRect.bottom + POPUP_MARGIN;\n const topAbove = anchorRect.top - popupHeight - POPUP_MARGIN;\n const fitsBelow = topBelow + popupHeight <= viewport.height - POPUP_MARGIN;\n const fitsAbove = topAbove >= POPUP_MARGIN;\n\n if (fitsBelow || !fitsAbove) {\n return {\n mode: 'popup',\n placement: 'below',\n top: clampTop(topBelow, viewport.height, popupHeight),\n left,\n };\n }\n\n return {\n mode: 'popup',\n placement: 'above',\n top: clampTop(topAbove, viewport.height, popupHeight),\n left,\n };\n}\n\nfunction clampLeft(left, viewportWidth, popupWidth) {\n return Math.min(Math.max(POPUP_MARGIN, left), viewportWidth - popupWidth - POPUP_MARGIN);\n}\n\nfunction clampTop(top, viewportHeight, popupHeight) {\n return Math.min(Math.max(POPUP_MARGIN, top), viewportHeight - popupHeight - POPUP_MARGIN);\n}\n","import { MEDIAPIPE_CDN, MEDIAPIPE_WASM, MEDIAPIPE_VISION, MEDIAPIPE_MODEL } from './constants.js';\n\nlet FaceLandmarker = null;\nlet landmarker = null;\nlet lastTimestampMs = -1;\nlet visionModule = null;\n\nexport async function loadVision() {\n if (visionModule) return visionModule;\n visionModule = await import(MEDIAPIPE_VISION);\n FaceLandmarker = visionModule.FaceLandmarker;\n return visionModule;\n}\n\nexport async function loadModel() {\n const response = await fetch(MEDIAPIPE_MODEL);\n if (!response.ok) {\n throw new Error('Failed to load face landmarker model');\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n\nexport async function initTracker(modelBuffer) {\n const vision = await loadVision();\n const resolver = await vision.FilesetResolver.forVisionTasks(MEDIAPIPE_WASM);\n\n if (landmarker) {\n landmarker.close();\n }\n lastTimestampMs = -1;\n\n landmarker = await FaceLandmarker.createFromOptions(resolver, {\n baseOptions: {\n modelAssetBuffer: new Uint8Array(modelBuffer),\n delegate: 'GPU',\n },\n runningMode: 'VIDEO',\n numFaces: 2,\n outputFaceBlendshapes: true,\n outputFacialTransformationMatrixes: true,\n });\n}\n\nexport function track(video, timestampMs) {\n if (!landmarker) return null;\n\n const normalized = normalizeTimestamp(timestampMs);\n const result = landmarker.detectForVideo(video, normalized);\n const faceCount = result.faceLandmarks?.length ?? 0;\n\n if (faceCount === 0) {\n return { faceCount: 0, timestampMs: normalized };\n }\n\n const landmarks = result.faceLandmarks[0];\n\n return {\n faceCount,\n timestampMs: normalized,\n landmarks,\n blendshapes: parseBlendshapes(result.faceBlendshapes?.[0]),\n headPose: extractHeadPose(result.facialTransformationMatrixes?.[0]),\n boundingBox: computeBoundingBox(landmarks),\n };\n}\n\nexport function destroyTracker() {\n if (landmarker) {\n landmarker.close();\n landmarker = null;\n }\n lastTimestampMs = -1;\n}\n\nexport function isTrackerReady() {\n return landmarker !== null;\n}\n\nfunction normalizeTimestamp(timestampMs) {\n const safe = Number.isFinite(timestampMs) ? timestampMs : performance.now();\n const whole = Math.floor(safe);\n const normalized = Math.max(whole, lastTimestampMs + 1);\n lastTimestampMs = normalized;\n return normalized;\n}\n\nfunction parseBlendshapes(blendshapeResult) {\n if (!blendshapeResult?.categories) return {};\n const map = {};\n for (const category of blendshapeResult.categories) {\n map[category.categoryName] = category.score;\n }\n return map;\n}\n\nfunction extractHeadPose(matrix) {\n if (!matrix?.data || matrix.data.length < 16) {\n return { yaw: 0, pitch: 0, roll: 0 };\n }\n const m = matrix.data;\n const deg = 180 / Math.PI;\n return {\n yaw: Math.atan2(m[8], m[10]) * deg,\n pitch: Math.asin(-Math.max(-1, Math.min(1, m[9]))) * deg,\n roll: Math.atan2(m[1], m[5]) * deg,\n };\n}\n\nfunction computeBoundingBox(landmarks) {\n let minX = 1,\n minY = 1,\n maxX = 0,\n maxY = 0;\n\n for (const point of landmarks) {\n if (point.x < minX) minX = point.x;\n if (point.y < minY) minY = point.y;\n if (point.x > maxX) maxX = point.x;\n if (point.y > maxY) maxY = point.y;\n }\n\n const width = maxX - minX;\n const height = maxY - minY;\n\n return {\n x: minX,\n y: minY,\n width,\n height,\n area: width * height,\n };\n}\n","import { track } from './face-tracker.js';\nimport { STABLE_FRAMES_REQUIRED, POSITION_CHECK_MS } from './constants.js';\n\nexport function startPositioning(video, callbacks) {\n let stableFrames = 0;\n let cancelled = false;\n\n const check = () => {\n if (cancelled) return;\n\n const result = track(video, performance.now());\n\n if (!result || result.faceCount === 0) {\n callbacks.onStatus?.('Look at the camera');\n stableFrames = 0;\n } else if (result.faceCount > 1) {\n callbacks.onStatus?.('Only one person please');\n stableFrames = 0;\n } else {\n callbacks.onStatus?.('Hold still…');\n stableFrames++;\n }\n\n if (stableFrames >= STABLE_FRAMES_REQUIRED) {\n callbacks.onReady?.();\n return;\n }\n\n setTimeout(check, POSITION_CHECK_MS);\n };\n\n check();\n\n return {\n cancel: () => {\n cancelled = true;\n },\n };\n}\n","import { FACEAPI_CDN, FACEAPI_MODEL_CDN } from './constants.js';\n\nlet initialized = false;\nlet faceapi = null;\n\nfunction loadScript(url) {\n return new Promise((resolve, reject) => {\n if (typeof window === 'undefined') {\n return reject(new Error('No DOM available'));\n }\n\n const existing = document.querySelector(`script[src=\"${url}\"]`);\n if (existing) {\n if (window.faceapi) return resolve(window.faceapi);\n existing.addEventListener('load', () => resolve(window.faceapi));\n return;\n }\n\n const script = document.createElement('script');\n script.src = url;\n script.crossOrigin = 'anonymous';\n script.onload = () => resolve(window.faceapi);\n script.onerror = () => reject(new Error(`Failed to load ${url}`));\n document.head.appendChild(script);\n });\n}\n\nexport async function initAgeEstimator() {\n if (initialized) return;\n\n faceapi = await loadScript(FACEAPI_CDN);\n\n await Promise.all([\n faceapi.nets.tinyFaceDetector.loadFromUri(FACEAPI_MODEL_CDN),\n faceapi.nets.faceLandmark68TinyNet.loadFromUri(FACEAPI_MODEL_CDN),\n faceapi.nets.ageGenderNet.loadFromUri(FACEAPI_MODEL_CDN),\n ]);\n\n initialized = true;\n}\n\nexport async function estimateAge(canvas) {\n if (!faceapi) {\n throw new Error('Age estimator not initialized');\n }\n\n const detection = await faceapi\n .detectSingleFace(\n canvas,\n new faceapi.TinyFaceDetectorOptions({\n inputSize: 224,\n })\n )\n .withFaceLandmarks(true)\n .withAgeAndGender();\n\n if (!detection) return null;\n\n return {\n age: detection.age,\n gender: detection.gender,\n confidence: detection.detection.score,\n };\n}\n\nexport async function estimateAgeBurst(frames) {\n const results = [];\n for (const frame of frames) {\n const result = await estimateAge(frame);\n if (result) results.push(result);\n }\n return results;\n}\n\nexport function isInitialized() {\n return initialized;\n}\n","import {\n TASK_TIMEOUT_MS,\n MIN_TASK_TIME_MS,\n TASK_COUNT,\n REQUIRED_TASK_PASSES,\n} from './constants.js';\n\nconst TASKS = [\n {\n id: 'turn-left',\n instruction: 'Turn your head to the left',\n check: (h) => detectYawShift(h, 20),\n },\n {\n id: 'turn-right',\n instruction: 'Turn your head to the right',\n check: (h) => detectYawShift(h, -20),\n },\n {\n id: 'nod',\n instruction: 'Nod your head down then up',\n check: (h) => detectNod(h),\n },\n {\n id: 'blink-twice',\n instruction: 'Blink twice',\n check: (h) => detectDoubleBlink(h),\n },\n {\n id: 'move-closer',\n instruction: 'Move closer then back',\n check: (h) => detectDistanceChange(h),\n },\n];\n\nexport function pickTasks(count = TASK_COUNT) {\n const shuffled = [...TASKS].sort(() => Math.random() - 0.5);\n return shuffled.slice(0, count);\n}\n\nexport function createSession(tasks) {\n return {\n tasks: tasks || pickTasks(),\n currentIndex: 0,\n history: [],\n taskStartTime: 0,\n completedTasks: 0,\n requiredPasses: REQUIRED_TASK_PASSES,\n failed: false,\n failReason: null,\n };\n}\n\nexport function processFrame(session, trackingResult) {\n if (session.failed || isComplete(session)) return;\n if (session.currentIndex >= session.tasks.length) return;\n if (!trackingResult || trackingResult.faceCount === 0) return;\n\n if (trackingResult.faceCount > 1) {\n session.failed = true;\n session.failReason = null;\n return;\n }\n\n const entry = {\n timestamp: trackingResult.timestampMs,\n headPose: trackingResult.headPose,\n blendshapes: trackingResult.blendshapes,\n boundingBox: trackingResult.boundingBox,\n };\n\n if (session.history.length === 0) {\n session.taskStartTime = trackingResult.timestampMs;\n }\n\n session.history.push(entry);\n\n const elapsed = trackingResult.timestampMs - session.taskStartTime;\n\n if (elapsed > TASK_TIMEOUT_MS) {\n advanceTask(session);\n return;\n }\n\n if (elapsed < MIN_TASK_TIME_MS) return;\n\n const task = session.tasks[session.currentIndex];\n if (!task.check(session.history)) return;\n\n if (isSuspicious(session.history)) {\n session.failed = true;\n session.failReason = null;\n return;\n }\n\n session.completedTasks++;\n advanceTask(session);\n}\n\nexport function isComplete(session) {\n return session.currentIndex >= session.tasks.length;\n}\n\nexport function isPassed(session) {\n return session.completedTasks >= session.requiredPasses;\n}\n\nexport function currentInstruction(session) {\n if (session.currentIndex >= session.tasks.length) {\n return null;\n }\n return session.tasks[session.currentIndex].instruction;\n}\n\nexport function currentTaskId(session) {\n if (session.currentIndex >= session.tasks.length) {\n return null;\n }\n return session.tasks[session.currentIndex].id;\n}\n\nexport function progress(session) {\n if (session.tasks.length === 0) return 1;\n return Math.min(session.currentIndex / session.tasks.length, 1);\n}\n\nfunction advanceTask(session) {\n session.currentIndex++;\n session.history = [];\n session.taskStartTime = 0;\n\n const remaining = session.tasks.length - session.currentIndex;\n const canStillPass = session.completedTasks + remaining >= session.requiredPasses;\n\n if (!canStillPass) {\n session.failed = true;\n session.failReason = null;\n }\n}\n\nfunction detectYawShift(history, targetDelta) {\n if (history.length < 5) return false;\n const baseYaw = history[0].headPose.yaw;\n const direction = Math.sign(targetDelta);\n const threshold = Math.abs(targetDelta);\n\n return history.some((entry) => {\n const delta = (entry.headPose.yaw - baseYaw) * direction;\n return delta > threshold;\n });\n}\n\nfunction detectNod(history) {\n if (history.length < 10) return false;\n const basePitch = history[0].headPose.pitch;\n let wentDown = false;\n let cameBack = false;\n\n for (const entry of history) {\n const delta = entry.headPose.pitch - basePitch;\n if (delta > 15) wentDown = true;\n if (wentDown && Math.abs(delta) < 8) cameBack = true;\n }\n\n return wentDown && cameBack;\n}\n\nfunction detectDoubleBlink(history) {\n if (history.length < 10) return false;\n let blinkCount = 0;\n let eyesClosed = false;\n\n for (const entry of history) {\n const left = entry.blendshapes.eyeBlinkLeft ?? 0;\n const right = entry.blendshapes.eyeBlinkRight ?? 0;\n const bothClosed = left > 0.6 && right > 0.6;\n\n if (bothClosed && !eyesClosed) {\n blinkCount++;\n eyesClosed = true;\n } else if (!bothClosed) {\n eyesClosed = false;\n }\n }\n\n return blinkCount >= 2;\n}\n\nfunction detectDistanceChange(history) {\n if (history.length < 10) return false;\n const baseArea = history[0].boundingBox.area;\n let wentCloser = false;\n let cameBack = false;\n\n for (const entry of history) {\n const ratio = entry.boundingBox.area / baseArea;\n if (ratio > 1.3) wentCloser = true;\n if (wentCloser && ratio < 1.15) cameBack = true;\n }\n\n return wentCloser && cameBack;\n}\n\nexport function isSuspicious(history) {\n if (history.length < 5) return false;\n\n const deltas = [];\n for (let i = 1; i < history.length; i++) {\n const dy = Math.abs(history[i].headPose.yaw - history[i - 1].headPose.yaw);\n const dp = Math.abs(history[i].headPose.pitch - history[i - 1].headPose.pitch);\n deltas.push(dy + dp);\n }\n\n if (deltas.every((d) => d < 0.1)) return true;\n\n const mean = deltas.reduce((a, b) => a + b, 0) / deltas.length;\n const variance = deltas.reduce((s, d) => s + (d - mean) ** 2, 0) / deltas.length;\n\n return variance < 0.01 && mean > 0.5;\n}\n","import { TOKEN_EXPIRY_S } from './constants.js';\n\nfunction base64UrlEncode(data) {\n const text = typeof data === 'string' ? data : String.fromCharCode(...new Uint8Array(data));\n return btoa(text).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\nfunction base64UrlDecode(str) {\n const padded = str + '='.repeat((4 - (str.length % 4)) % 4);\n const binary = atob(padded.replace(/-/g, '+').replace(/_/g, '/'));\n return Uint8Array.from(binary, (c) => c.charCodeAt(0));\n}\n\nasync function getSigningKey() {\n const raw = crypto.getRandomValues(new Uint8Array(32));\n return crypto.subtle.importKey('raw', raw, { name: 'HMAC', hash: 'SHA-256' }, false, [\n 'sign',\n 'verify',\n ]);\n}\n\nlet cachedKey = null;\n\nasync function ensureKey() {\n if (!cachedKey) cachedKey = await getSigningKey();\n return cachedKey;\n}\n\nexport async function createToken(payload) {\n const key = await ensureKey();\n\n const header = base64UrlEncode(JSON.stringify({ alg: 'HS256', typ: 'JWT' }));\n\n const body = base64UrlEncode(\n JSON.stringify({\n ...payload,\n iat: Math.floor(Date.now() / 1000),\n exp: Math.floor(Date.now() / 1000) + TOKEN_EXPIRY_S,\n })\n );\n\n const data = new TextEncoder().encode(`${header}.${body}`);\n const signature = await crypto.subtle.sign('HMAC', key, data);\n\n return `${header}.${body}.${base64UrlEncode(signature)}`;\n}\n\nexport async function verifyToken(token) {\n const key = await ensureKey();\n const [header, body, sig] = token.split('.');\n\n if (!header || !body || !sig) return null;\n\n let signature;\n let data;\n try {\n data = new TextEncoder().encode(`${header}.${body}`);\n signature = base64UrlDecode(sig);\n } catch {\n return null;\n }\n\n const valid = await crypto.subtle.verify('HMAC', key, signature, data);\n\n if (!valid) return null;\n\n const decoded = JSON.parse(new TextDecoder().decode(base64UrlDecode(body)));\n\n if (decoded.exp && decoded.exp < Date.now() / 1000) {\n return null;\n }\n\n return decoded;\n}\n\nexport function decodeToken(token) {\n const [, body] = token.split('.');\n if (!body) return null;\n return JSON.parse(new TextDecoder().decode(base64UrlDecode(body)));\n}\n\nexport function createTransport(mode, options = {}) {\n if (mode === 'serverless') {\n return createServerlessTransport(options);\n }\n\n const baseUrl = mode === 'custom' ? options.server : 'https://api.openage.dev';\n\n return createServerTransport(baseUrl, options);\n}\n\nfunction createServerlessTransport(options) {\n return {\n async verify(payload) {\n const { estimatedAge, livenessOk } = payload;\n\n if (!livenessOk) {\n return { success: false, token: null };\n }\n\n const token = await createToken({\n estimatedAge,\n livenessOk: true,\n mode: 'serverless',\n });\n\n return { success: true, token };\n },\n close() {},\n };\n}\n\nfunction createServerTransport(baseUrl, options) {\n let session = null;\n let channel = null;\n\n return {\n async createSession() {\n const transports = [];\n if (typeof WebSocket !== 'undefined') {\n transports.push('websocket');\n }\n transports.push('poll');\n\n const response = await fetch(`${baseUrl}/api/session`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n sitekey: options.sitekey,\n action: options.action,\n supportedTransports: transports,\n }),\n });\n\n if (!response.ok) {\n throw new Error('Request failed');\n }\n\n session = await response.json();\n return session;\n },\n\n openChannel() {\n if (!session) {\n throw new Error('No session');\n }\n\n if (session.transport === 'websocket') {\n channel = createWsChannel(baseUrl, session.sessionId);\n } else {\n channel = createPollChannel(baseUrl, session.sessionId);\n }\n },\n\n async receive() {\n if (!channel) return null;\n return channel.receive();\n },\n\n async send(data) {\n if (!channel) return;\n return channel.send(data);\n },\n\n async sendAndReceive(data) {\n if (!channel) return null;\n return channel.sendAndReceive(data);\n },\n\n async verify(payload) {\n if (channel) {\n return this.verifyViaChannel(payload);\n }\n\n const response = await fetch(`${baseUrl}/verify`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n response: payload.token,\n sitekey: options.sitekey,\n action: options.action,\n }),\n });\n\n if (!response.ok) {\n return {\n success: false,\n token: null,\n };\n }\n\n return response.json();\n },\n\n async verifyViaChannel(payload) {\n await channel.send(payload);\n return channel.receive();\n },\n\n getSession() {\n return session;\n },\n\n close() {\n channel?.close();\n channel = null;\n session = null;\n },\n };\n}\n\nfunction createWsChannel(baseUrl, sessionId) {\n const wsUrl = baseUrl.replace(/^http/, 'ws').replace(/\\/$/, '');\n const url = `${wsUrl}/api/ws/${sessionId}`;\n const ws = new WebSocket(url);\n let pending = [];\n let ready = false;\n let closed = false;\n\n const waitReady = new Promise((resolve, reject) => {\n ws.onopen = () => {\n ready = true;\n resolve();\n };\n ws.onerror = () => {\n reject(new Error('Connection failed'));\n };\n });\n\n ws.onmessage = (event) => {\n const message = JSON.parse(event.data);\n const resolver = pending.shift();\n if (resolver) resolver(message);\n };\n\n ws.onclose = () => {\n closed = true;\n for (const resolver of pending) resolver(null);\n pending = [];\n };\n\n return {\n receive() {\n if (closed) return Promise.resolve(null);\n return new Promise((resolve) => {\n pending.push(resolve);\n });\n },\n async send(data) {\n await waitReady;\n ws.send(JSON.stringify(data));\n },\n async sendAndReceive(data) {\n await waitReady;\n ws.send(JSON.stringify(data));\n return this.receive();\n },\n close() {\n closed = true;\n ws.close();\n },\n };\n}\n\nfunction createPollChannel(baseUrl, sessionId) {\n return {\n async receive() {\n const response = await fetch(`${baseUrl}/api/poll/${sessionId}`);\n if (!response.ok) {\n throw new Error('Request failed');\n }\n return response.json();\n },\n async send(data) {\n const response = await fetch(`${baseUrl}/api/verify/${sessionId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(data),\n });\n if (!response.ok) {\n throw new Error('Request failed');\n }\n },\n async sendAndReceive(data) {\n const response = await fetch(`${baseUrl}/api/verify/${sessionId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(data),\n });\n if (!response.ok) {\n throw new Error('Request failed');\n }\n return response.json();\n },\n close() {},\n };\n}\n","let wasmModule = null;\nlet vmSession = null;\nlet challengeBundle = null;\nlet _faceData = null;\nlet _challengeParams = null;\nlet _bridge = null;\n\nfunction loadScript(url) {\n return new Promise((resolve, reject) => {\n const existing = document.querySelector(`script[src=\"${url}\"]`);\n if (existing) return resolve();\n\n const script = document.createElement('script');\n script.src = url;\n script.onload = resolve;\n script.onerror = () => {\n reject(new Error(`Failed to load ${url}`));\n };\n document.head.appendChild(script);\n });\n}\n\nexport async function initVM(session) {\n vmSession = session;\n\n await loadScript(session.wasmJs);\n\n const loaderModule = await import(session.loaderJs);\n wasmModule = await loaderModule.initModule(session.wasmBin);\n\n const initFn = session.exports.vm_init;\n const result = wasmModule[`_${initFn}`]();\n if (result !== 0) throw new Error('VM init failed');\n\n const bundleResponse = await fetch(session.challengeVmbc);\n challengeBundle = new Uint8Array(await bundleResponse.arrayBuffer());\n}\n\nexport async function decryptModel(session, modelId) {\n if (!wasmModule || !vmSession) {\n throw new Error('VM not loaded');\n }\n\n const modelInfo = session.models[modelId];\n if (!modelInfo) {\n throw new Error(`Unknown model: ${modelId}`);\n }\n\n const response = await fetch(modelInfo.url);\n if (!response.ok) {\n throw new Error(`Failed to fetch model: ${modelId}`);\n }\n\n const encrypted = new Uint8Array(await response.arrayBuffer());\n\n const decryptFn = session.exports.vm_decrypt_blob;\n const freeFn = session.exports.vm_free;\n const length = encrypted.length;\n\n const inputPtr = wasmModule._malloc(length);\n wasmModule.HEAPU8.set(encrypted, inputPtr);\n\n const outLenPtr = wasmModule._malloc(4);\n const outPtr = wasmModule[`_${decryptFn}`](inputPtr, length, outLenPtr);\n wasmModule._free(inputPtr);\n\n if (!outPtr) {\n wasmModule._free(outLenPtr);\n throw new Error(`Decryption failed: ${modelId}`);\n }\n\n const outLen = readU32(wasmModule, outLenPtr);\n wasmModule._free(outLenPtr);\n\n const result = new Uint8Array(outLen);\n result.set(wasmModule.HEAPU8.subarray(outPtr, outPtr + outLen));\n wasmModule[`_${freeFn}`](outPtr);\n return result.buffer;\n}\n\nfunction readU32(mod, ptr) {\n return (\n mod.HEAPU8[ptr] |\n (mod.HEAPU8[ptr + 1] << 8) |\n (mod.HEAPU8[ptr + 2] << 16) |\n (mod.HEAPU8[ptr + 3] << 24)\n );\n}\n\nfunction defineVmGlobal(name, getter) {\n try {\n delete window[name];\n } catch (_) {}\n Object.defineProperty(window, name, {\n get: getter,\n set() {},\n configurable: true,\n });\n}\n\nexport function setFaceData(faceData) {\n _faceData = faceData;\n defineVmGlobal('__vmFaceData', () => _faceData);\n}\n\nexport function setChallengeParams(params) {\n _challengeParams = params;\n defineVmGlobal('__vmChallenge', () => _challengeParams);\n}\n\nexport function registerBridge(bridge) {\n _bridge = Object.freeze({ ...bridge });\n defineVmGlobal('__vmBridge', () => _bridge);\n}\n\nexport function unregisterBridge() {\n _bridge = null;\n try {\n delete window.__vmBridge;\n } catch (_) {}\n}\n\nexport function executeChallenge() {\n if (!wasmModule || !challengeBundle) {\n throw new Error('VM not loaded');\n }\n\n const execFn = vmSession.exports.vm_exec_bytecode;\n const freeFn = vmSession.exports.vm_free;\n const length = challengeBundle.length;\n\n const inputPtr = wasmModule._malloc(length);\n wasmModule.HEAPU8.set(challengeBundle, inputPtr);\n\n const outLenPtr = wasmModule._malloc(4);\n const outPtr = wasmModule[`_${execFn}`](inputPtr, length, outLenPtr);\n wasmModule._free(inputPtr);\n\n if (!outPtr) {\n wasmModule._free(outLenPtr);\n const errFn = vmSession.exports.vm_last_error;\n let message = 'VM execution failed';\n if (errFn) {\n const errPtr = wasmModule[`_${errFn}`]();\n if (errPtr) {\n const detail = wasmModule.UTF8ToString(errPtr);\n if (detail) message = detail;\n }\n }\n throw new Error(message);\n }\n\n const outLen = readU32(wasmModule, outLenPtr);\n wasmModule._free(outLenPtr);\n\n const result = new Uint8Array(outLen);\n result.set(wasmModule.HEAPU8.subarray(outPtr, outPtr + outLen));\n wasmModule[`_${freeFn}`](outPtr);\n return result;\n}\n\nexport function toBase64(bytes) {\n let binary = '';\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n\nexport function destroyVM() {\n if (!wasmModule || !vmSession) return;\n\n const destroyFn = vmSession.exports.vm_destroy;\n if (destroyFn) {\n wasmModule[`_${destroyFn}`]();\n }\n\n wasmModule = null;\n vmSession = null;\n challengeBundle = null;\n _faceData = null;\n _challengeParams = null;\n _bridge = null;\n\n for (const name of ['__vmFaceData', '__vmChallenge', '__vmBridge']) {\n try {\n delete window[name];\n } catch (_) {}\n }\n}\n\nexport function isVMLoaded() {\n return wasmModule !== null && vmSession !== null;\n}\n\nconst decryptedCache = new Map();\n\nasync function decryptAndCache(session, modelId) {\n if (decryptedCache.has(modelId)) {\n return decryptedCache.get(modelId);\n }\n\n const buffer = await decryptModel(session, modelId);\n decryptedCache.set(modelId, buffer);\n return buffer;\n}\n\nexport async function ensureModels(session, onProgress) {\n await decryptAndCache(session, 'mediapipe');\n onProgress?.(1);\n}\n\nexport async function getMediaPipeModelBuffer(session) {\n return decryptAndCache(session, 'mediapipe');\n}\n\nexport function clearModelCache() {\n decryptedCache.clear();\n}\n","import { loadVision, loadModel, initTracker, track, destroyTracker } from './face-tracker.js';\nimport { startPositioning } from './positioning.js';\nimport { initAgeEstimator, estimateAgeBurst } from './age-estimator.js';\nimport {\n createSession as createLivenessSession,\n processFrame,\n isComplete,\n isPassed,\n currentInstruction,\n currentTaskId,\n progress,\n} from './liveness.js';\nimport { createTransport } from './transport.js';\nimport {\n initVM,\n setFaceData,\n setChallengeParams,\n executeChallenge as execVM,\n registerBridge,\n unregisterBridge,\n destroyVM,\n toBase64,\n ensureModels,\n getMediaPipeModelBuffer,\n clearModelCache,\n} from './vm-client.js';\nimport {\n BURST_FRAMES,\n BURST_INTERVAL_MS,\n ERROR_STEP_SECONDS,\n MAX_RETRIES,\n MOTION_CAPTURE_MS,\n MOTION_SAMPLE_MS,\n} from './constants.js';\n\nlet stream = null;\nlet videoElement = null;\n\nconst CAMERA_CONSTRAINTS = {\n video: {\n facingMode: 'user',\n width: { ideal: 640 },\n height: { ideal: 480 },\n },\n};\n\nexport function startCamera(video) {\n return navigator.mediaDevices.getUserMedia(CAMERA_CONSTRAINTS).then((s) => {\n stream = s;\n video.srcObject = stream;\n videoElement = video;\n\n return new Promise((resolve) => {\n video.onloadedmetadata = () => {\n video.play();\n resolve({\n width: video.videoWidth,\n height: video.videoHeight,\n });\n };\n });\n });\n}\n\nexport function captureFrame() {\n if (!videoElement) return null;\n\n const canvas = document.createElement('canvas');\n canvas.width = videoElement.videoWidth;\n canvas.height = videoElement.videoHeight;\n\n const context = canvas.getContext('2d');\n context.drawImage(videoElement, 0, 0);\n return canvas;\n}\n\nexport function stopCamera() {\n if (stream) {\n stream.getTracks().forEach((track) => track.stop());\n stream = null;\n }\n if (videoElement) {\n videoElement.srcObject = null;\n videoElement = null;\n }\n}\n\nexport function isCameraActive() {\n return stream !== null && videoElement !== null;\n}\n\nfunction computeAge(ageResults) {\n if (!ageResults || ageResults.length === 0) return null;\n\n const ages = ageResults.map((r) => r.age).sort((a, b) => a - b);\n\n const trimmed = ages.length >= 3 ? ages.slice(1, -1) : ages;\n\n return trimmed.reduce((s, a) => s + a, 0) / trimmed.length;\n}\n\nconst TASK_LABELS = {\n 'turn-left': 'Turn your head left',\n 'turn-right': 'Turn your head right',\n nod: 'Nod your head',\n 'blink-twice': 'Blink twice',\n 'move-closer': 'Move closer then back',\n};\n\nfunction sleep(ms) {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nfunction resolveChallengeErrorMessage(error) {\n const name = typeof error?.name === 'string' ? error.name : '';\n const message = typeof error?.message === 'string' ? error.message : String(error || '');\n const normalized = `${name} ${message}`.toLowerCase();\n\n if (\n name === 'NotFoundError' ||\n /request is not allowed by the user agent or the platform in the current context/.test(\n normalized\n ) ||\n /requested device not found|device not found|no camera|could not start video source/.test(\n normalized\n )\n ) {\n return 'No camera available. Plug in a camera and try again.';\n }\n\n if (\n name === 'NotAllowedError' ||\n name === 'PermissionDeniedError' ||\n /permission|camera access|access denied/.test(normalized)\n ) {\n return 'Camera access was blocked. Allow camera access and try again.';\n }\n\n if (/positioning timeout/.test(normalized)) {\n return 'Face positioning timed out. Reopen the check and try again.';\n }\n\n return 'Verification failed. Please try again.';\n}\n\nfunction isInlineLayout(widget) {\n return widget?.params?.layout === 'inline';\n}\n\nasync function showErrorStep(widget, error) {\n const message = resolveChallengeErrorMessage(error);\n\n if (isInlineLayout(widget)) {\n widget.showResult?.('retry', message);\n return;\n }\n\n if (!widget.popup) {\n widget.openPopup?.();\n }\n\n widget.showError?.(message);\n\n for (let seconds = ERROR_STEP_SECONDS; seconds > 0; seconds--) {\n if (!widget.popup) break;\n widget.setErrorCountdown?.(seconds);\n await sleep(1000);\n }\n\n widget.closePopup?.();\n widget.setState?.('retry');\n}\n\nasync function handleChallengeError(widget, emitter, error) {\n console.log('Error during challenge:', error);\n await showErrorStep(widget, error);\n emitter.emit('error', error, widget.id);\n widget.params.errorCallback?.(error);\n}\n\nexport async function runChallenge(widget, emitter) {\n const mode = widget.params.mode || 'serverless';\n\n if (mode !== 'serverless' && !widget.params.sitekey) {\n const err = new Error('Configuration error');\n widget.showResult?.('fail', 'Verification failed');\n emitter.emit('error', err, widget.id);\n widget.params.errorCallback?.(err);\n return;\n }\n\n if (mode === 'serverless') {\n return runServerless(widget, emitter);\n }\n return runServer(widget, emitter);\n}\n\nasync function runServerless(widget, emitter) {\n const params = widget.params;\n let retryCount = 0;\n let modelBuffer = null;\n\n try {\n widget.openPopup();\n widget.setHeroStatus('Loading…');\n\n await Promise.all([loadVision(), initAgeEstimator()]);\n\n modelBuffer = await loadModel();\n\n if (isInlineLayout(widget)) {\n await startCameraFlow(widget, modelBuffer);\n } else {\n widget.showReady();\n await waitForStart(widget);\n await startCameraFlow(widget, modelBuffer);\n }\n\n const transport = createTransport('serverless', params);\n\n const attempt = async () => {\n widget.showLiveness();\n widget.setInstruction('');\n widget.setVideoStatus('Verifying…');\n\n const session = createLivenessSession();\n await runLivenessLoop(widget.popupElements.video, session, widget);\n\n if (session.failed || !isPassed(session)) {\n return { outcome: 'retry' };\n }\n\n widget.setInstruction('Hold still…');\n widget.setVideoStatus('Processing…');\n const frames = await captureFrameBurst(BURST_FRAMES, BURST_INTERVAL_MS);\n\n const ageResults = await estimateAgeBurst(frames);\n const estimatedAge = computeAge(ageResults);\n\n const result = await transport.verify({\n estimatedAge,\n livenessOk: true,\n });\n\n return {\n outcome: result.token ? 'pass' : 'fail',\n token: result.token,\n };\n };\n\n let result = await attempt();\n\n while (result.outcome === 'retry' && retryCount < MAX_RETRIES) {\n retryCount++;\n widget.showResult('retry', 'Please try again');\n await waitForStart(widget);\n await startCameraFlow(widget, modelBuffer);\n result = await attempt();\n }\n\n cleanupLocal();\n emitResult(widget, emitter, result);\n } catch (error) {\n cleanupLocal();\n await handleChallengeError(widget, emitter, error);\n }\n}\n\nasync function runServer(widget, emitter) {\n const params = widget.params;\n\n try {\n widget.openPopup();\n widget.setHeroStatus('Connecting…');\n\n const transport = createTransport(params.mode, params);\n const session = await transport.createSession();\n\n widget.setHeroStatus('Loading…');\n await initVM(session);\n\n widget.setHeroStatus('Preparing…');\n await ensureModels(session, () => {});\n\n await loadVision();\n const buf = await getMediaPipeModelBuffer(session);\n await initTracker(buf);\n\n registerBridge({\n trackFace: () => {\n const video = widget.popupElements?.video;\n if (!video) return 'null';\n const r = track(video, performance.now());\n if (!r) return 'null';\n return JSON.stringify({\n ts: r.timestampMs ?? performance.now(),\n faceCount: r.faceCount,\n headPose: r.headPose || null,\n blendshapes: r.blendshapes || null,\n boundingBox: r.boundingBox || null,\n });\n },\n captureFrame: () => (captureFrame() ? 'true' : 'null'),\n });\n\n let video;\n\n if (isInlineLayout(widget)) {\n video = widget.showCamera();\n } else {\n widget.showReady();\n await waitForStart(widget);\n video = widget.showCamera();\n }\n\n widget.setVideoStatus('Requesting camera…');\n await startCamera(video);\n exposeMirrorVideo(video);\n\n widget.setVideoStatus('Position your face');\n await waitForPositioning(video, widget);\n\n widget.showLiveness();\n transport.openChannel();\n\n let challenge = await transport.receive();\n const rounds = session.rounds;\n\n for (let i = 0; i < rounds; i++) {\n if (!challenge) {\n cleanupVM(transport);\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n return;\n }\n\n if (challenge.type === 'verdict') {\n cleanupVM(transport);\n emitVerdict(widget, emitter, challenge);\n return;\n }\n\n if (challenge.type === 'timeout') {\n cleanupVM(transport);\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n return;\n }\n\n widget.setVideoStatus(`Step ${i + 1} of ${rounds}`);\n\n const task = challenge.token?.task;\n widget.setInstruction(TASK_LABELS[task] ?? 'Look at the camera');\n widget.setTask(task);\n widget.setProgress(i / rounds);\n\n const faceData = await captureMotion(widget);\n setFaceData(faceData);\n setChallengeParams(challenge.token);\n\n let vmOut;\n try {\n vmOut = execVM();\n } catch {\n cleanupVM(transport);\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n return;\n }\n\n const payload = {\n token: challenge.token,\n tokenSignature: challenge.tokenSignature,\n response: toBase64(vmOut),\n };\n\n const result = await transport.sendAndReceive(payload);\n\n if (!result) {\n cleanupVM(transport);\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n return;\n }\n\n if (result.complete) {\n cleanupVM(transport);\n emitVerdict(widget, emitter, result);\n return;\n }\n\n if (result.hint) {\n widget.setVideoStatus(result.hint);\n await sleep(1000);\n }\n\n challenge = result.nextChallenge || null;\n }\n\n cleanupVM(transport);\n } catch (error) {\n cleanupVM();\n await handleChallengeError(widget, emitter, error);\n }\n}\n\nfunction emitVerdict(widget, emitter, response) {\n const verdict = response?.verdict || response;\n const token = verdict?.token || null;\n const params = widget.params;\n\n if (token) {\n widget.token = token;\n widget.showResult('pass', 'Verified');\n emitter.emit('verified', token, widget.id);\n params.callback?.(token);\n return;\n }\n\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n params.errorCallback?.('failed');\n}\n\nasync function captureMotion(widget) {\n const video = widget.popupElements?.video;\n const history = [];\n const start = performance.now();\n\n while (performance.now() - start < MOTION_CAPTURE_MS) {\n const r = track(video, performance.now());\n if (r && r.faceCount === 1) {\n history.push({\n ts: r.timestampMs,\n headPose: r.headPose,\n blendshapes: r.blendshapes,\n boundingBox: r.boundingBox,\n });\n }\n await sleep(MOTION_SAMPLE_MS);\n }\n\n return {\n faceCount: history.length > 0 ? 1 : 0,\n motionHistory: history,\n };\n}\n\nfunction emitResult(widget, emitter, result) {\n const params = widget.params;\n\n if (result.outcome === 'pass') {\n widget.token = result.token || null;\n widget.showResult('pass', 'Verified');\n emitter.emit('verified', result.token, widget.id);\n params.callback?.(result.token);\n } else {\n widget.showResult('fail', 'Verification failed');\n emitter.emit('error', 'failed', widget.id);\n params.errorCallback?.('failed');\n }\n}\n\nfunction waitForStart(widget) {\n return new Promise((resolve) => {\n widget.onStartClick = () => {\n widget.onStartClick = null;\n resolve();\n };\n });\n}\n\nasync function startCameraFlow(widget, modelBuffer) {\n const video = widget.showCamera();\n widget.setVideoStatus('Requesting camera…');\n await startCamera(video);\n\n widget.setVideoStatus('Preparing…');\n await initTracker(modelBuffer);\n\n widget.setVideoStatus('Position your face');\n await waitForPositioning(video, widget);\n}\n\nfunction waitForPositioning(video, widget) {\n return new Promise((resolve, reject) => {\n const handle = startPositioning(video, {\n onStatus: (text) => widget.setVideoStatus(text),\n onReady: () => resolve(),\n });\n\n setTimeout(() => {\n handle.cancel();\n reject(new Error('Positioning timeout'));\n }, 30000);\n });\n}\n\nasync function runLivenessLoop(video, session, widget) {\n return new Promise((resolve) => {\n const loop = () => {\n const tracking = track(video, performance.now());\n if (tracking) processFrame(session, tracking);\n\n widget.setInstruction(currentInstruction(session) || 'Done');\n widget.setTask(currentTaskId(session));\n widget.setProgress(progress(session));\n widget.setVideoStatus(\n `Check ` +\n `${Math.min(session.currentIndex + 1, session.tasks.length)}` +\n ` of ${session.tasks.length}`\n );\n\n if (session.failed || isComplete(session)) {\n resolve();\n return;\n }\n\n requestAnimationFrame(loop);\n };\n\n requestAnimationFrame(loop);\n });\n}\n\nasync function captureFrameBurst(count, interval) {\n const frames = [];\n for (let i = 0; i < count; i++) {\n const frame = captureFrame();\n if (frame) frames.push(frame);\n if (i < count - 1) await sleep(interval);\n }\n return frames;\n}\n\nfunction cleanupLocal() {\n stopCamera();\n destroyTracker();\n}\n\nfunction cleanupVM(transport) {\n stopCamera();\n removeMirrorVideo();\n destroyTracker();\n unregisterBridge();\n destroyVM();\n clearModelCache();\n transport?.close();\n}\n\nfunction exposeMirrorVideo(source) {\n removeMirrorVideo();\n if (!source?.srcObject) return;\n const mirror = document.createElement('video');\n mirror.id = '__openage_mirror';\n mirror.srcObject = source.srcObject;\n mirror.autoplay = true;\n mirror.muted = true;\n mirror.playsInline = true;\n mirror.style.cssText =\n 'position:fixed;width:1px;height:1px;' + 'opacity:0;pointer-events:none;z-index:-1;';\n document.body.appendChild(mirror);\n}\n\nfunction removeMirrorVideo() {\n document.getElementById('__openage_mirror')?.remove();\n}\n","import { Widget, createModalWidget } from './widget.js';\nimport { runChallenge } from './challenge.js';\nimport { verifyToken, decodeToken } from './transport.js';\nimport { VERSION } from './constants.js';\n\nexport class EventEmitter {\n constructor() {\n this.listeners = new Map();\n }\n\n on(event, handler) {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n this.listeners.get(event).add(handler);\n return this;\n }\n\n off(event, handler) {\n const handlers = this.listeners.get(event);\n if (handlers) handlers.delete(handler);\n return this;\n }\n\n once(event, handler) {\n const wrapper = (...args) => {\n this.off(event, wrapper);\n handler(...args);\n };\n wrapper._original = handler;\n return this.on(event, wrapper);\n }\n\n emit(event, ...args) {\n const handlers = this.listeners.get(event);\n if (!handlers) return;\n for (const handler of [...handlers]) {\n handler(...args);\n }\n }\n\n removeAllListeners(event) {\n if (event) {\n this.listeners.delete(event);\n } else {\n this.listeners.clear();\n }\n return this;\n }\n}\n\nconst emitter = new EventEmitter();\nconst widgets = new Map();\n\nfunction normalizeLayout(layout) {\n if (layout === 'inline' || layout === 'embed' || layout === 'embedded') {\n return 'inline';\n }\n\n return 'widget';\n}\n\nfunction normalizeParams(params) {\n const globalConfig = typeof window !== 'undefined' ? window.openage || {} : {};\n const layout = normalizeLayout(\n params.layout ?? params.display ?? globalConfig.layout ?? globalConfig.display\n );\n\n return {\n mode: 'serverless',\n theme: 'auto',\n size: 'normal',\n minAge: 18,\n ...globalConfig,\n ...params,\n layout,\n };\n}\n\nfunction startWidget(widget) {\n widget.onChallenge = () => {\n emitter.emit('opened', widget.id);\n runChallenge(widget, emitter);\n };\n\n if (widget.params.layout === 'inline') {\n widget.startChallenge();\n }\n}\n\nfunction render(container, params = {}) {\n const normalized = normalizeParams(params);\n const widget = new Widget(container, normalized);\n widgets.set(widget.id, widget);\n startWidget(widget);\n return widget.id;\n}\n\nfunction open(params = {}) {\n const normalized = normalizeParams(params);\n const widget = createModalWidget(normalized);\n widget.anchorElement = normalized.anchorElement || null;\n widgets.set(widget.id, widget);\n\n widget.onChallenge = () => {\n emitter.emit('opened', widget.id);\n runChallenge(widget, emitter);\n };\n\n widget.startChallenge();\n return widget.id;\n}\n\nfunction bind(element, params = {}) {\n const normalized = normalizeParams(params);\n const target = typeof element === 'string' ? document.querySelector(element) : element;\n\n if (!target) {\n throw new Error('OpenAge: element not found');\n }\n\n let isReplayingClick = false;\n let activeWidgetId = null;\n\n const replayTargetClick = () => {\n isReplayingClick = true;\n try {\n target.click();\n } finally {\n isReplayingClick = false;\n }\n };\n\n const clearActiveWidget = () => {\n activeWidgetId = null;\n };\n\n const handler = (event) => {\n if (isReplayingClick || activeWidgetId) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation?.();\n\n const widgetId = open({\n ...normalized,\n anchorElement: target,\n callback: (token) => {\n normalized.callback?.(token);\n clearActiveWidget();\n replayTargetClick();\n },\n errorCallback: (error) => {\n clearActiveWidget();\n normalized.errorCallback?.(error);\n },\n closeCallback: () => {\n clearActiveWidget();\n normalized.closeCallback?.();\n },\n });\n\n activeWidgetId = widgetId;\n\n return widgetId;\n };\n\n target.addEventListener('click', handler, true);\n\n return () => {\n target.removeEventListener('click', handler, true);\n };\n}\n\nfunction reset(widgetId) {\n widgets.get(widgetId)?.reset();\n}\n\nfunction remove(widgetId) {\n const widget = widgets.get(widgetId);\n if (!widget) return;\n widget.destroy();\n widgets.delete(widgetId);\n}\n\nfunction getToken(widgetId) {\n return widgets.get(widgetId)?.getToken() || null;\n}\n\nfunction execute(widgetId) {\n const widget = widgets.get(widgetId);\n if (!widget) return;\n widget.startChallenge();\n}\n\nfunction challenge(params = {}) {\n return new Promise((resolve, reject) => {\n open({\n ...params,\n callback: (token) => resolve(token),\n errorCallback: (error) => reject(typeof error === 'string' ? new Error(error) : error),\n closeCallback: () => reject(new Error('User dismissed')),\n });\n });\n}\n\nfunction on(event, handler) {\n emitter.on(event, handler);\n}\n\nfunction off(event, handler) {\n emitter.off(event, handler);\n}\n\nfunction once(event, handler) {\n emitter.once(event, handler);\n}\n\nfunction autoRender() {\n if (typeof document === 'undefined') return;\n\n const globalConfig = typeof window !== 'undefined' ? window.openage || {} : {};\n\n if (globalConfig.render === 'explicit') return;\n\n const elements = document.querySelectorAll('.openage');\n\n for (const element of elements) {\n const params = {\n sitekey: element.dataset.sitekey,\n theme: element.dataset.theme,\n size: element.dataset.size,\n action: element.dataset.action,\n mode: element.dataset.mode,\n layout: element.dataset.layout || element.dataset.display,\n server: element.dataset.server,\n };\n\n if (element.dataset.callback) {\n params.callback = (token) => {\n const fn = window[element.dataset.callback];\n if (typeof fn === 'function') fn(token);\n };\n }\n\n if (element.dataset.errorCallback) {\n params.errorCallback = (error) => {\n const fn = window[element.dataset.errorCallback];\n if (typeof fn === 'function') fn(error);\n };\n }\n\n if (element.dataset.expiredCallback) {\n params.expiredCallback = () => {\n const fn = window[element.dataset.expiredCallback];\n if (typeof fn === 'function') fn();\n };\n }\n\n if (element.dataset.bind) {\n const target = document.getElementById(element.dataset.bind);\n if (target) {\n bind(target, params);\n continue;\n }\n }\n\n render(element, params);\n }\n\n const onloadName = document.currentScript?.dataset?.onload;\n if (onloadName && typeof window[onloadName] === 'function') {\n window[onloadName]();\n }\n}\n\nif (typeof document !== 'undefined') {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', autoRender);\n } else {\n autoRender();\n }\n}\n\nconst OpenAge = {\n render,\n open,\n bind,\n reset,\n remove,\n getToken,\n execute,\n challenge,\n on,\n off,\n once,\n verify: verifyToken,\n decode: decodeToken,\n version: VERSION,\n};\n\nexport default OpenAge;\nexport {\n render,\n open,\n bind,\n reset,\n remove,\n getToken,\n execute,\n challenge,\n on,\n off,\n once,\n verifyToken as verify,\n decodeToken as decode,\n VERSION as version,\n};\n"],"names":["loadScript","createLivenessSession","execVM"],"mappings":"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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA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"}