{"version":3,"file":"Components.CafYnV4m.mjs","names":["addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","Transition","config","value","Variants","humanReadableVariantMap","getProps","props","createLayoutDependency","Component","cx","className","css","serializationHash","variantClassNames","transition1","Transition","config","value","Variants","getProps","props","createLayoutDependency","Component","cx","className","css","serializationHash","variantClassNames","animation","transition1","transition2","Transition","config","value","Variants","getProps","props","createLayoutDependency","Component","cx","className","componentPresets.props[\"bGrj_P5Hk\"]","css","componentPresets.fonts?.[\"bGrj_P5Hk\"]","addPropertyOverrides","enabledGestures","cycleOrder","serializationHash","variantClassNames","transition1","Transition","config","value","Variants","humanReadableVariantMap","getProps","props","createLayoutDependency","Component","useRef","cx","className","css","serializationHash","variantClassNames","transition1","Transition","config","value","Variants","getProps","props","createLayoutDependency","Component","cx","className","componentPresets.props[\"bGrj_P5Hk\"]","css","componentPresets.fonts?.[\"bGrj_P5Hk\"]","addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","Transition","config","value","Variants","humanReadableVariantMap","getProps","props","createLayoutDependency","Component","cx","className","css","addPropertyOverrides","ClassBadge","cycleOrder","serializationHash","variantClassNames","transition1","value","Transition","config","Variants","humanReadableVariantMap","getProps","props","createLayoutDependency","Component","cx","className","css","css","serializationHash","variantClassNames","transition1","Transition","config","value","Variants","getProps","props","createLayoutDependency","Component","useRef","cx","className","css","WebButton","PaymentsPaymentForm","serializationHash","variantClassNames","transition1","Transition","config","value","Variants","getProps","props","createLayoutDependency","Component","cx","className","_Fragment","css","config","value","props","cx","className","PaymentButton","Arrow","U","e","ce","fe","oe","I","l","value","noop","config","version","name","url","uuid","re","ae","W","pe","Y","B","ye","X","$","ue","F","Me","te","se","G","ie","parts","description","on","cache","empty","chars","colors","Te","ResizeObserver","globalThisShim","get","u","parse","props","p","ne4","ee5","te5","y4","ue5","ye4","useRef","useState","e","Fragment","Spinner","Ae","Arrow","VideoList","_a","useState","Fragment","e","Button","CourseTitle","VideoItem","NordyInfo","LiveEventInfo","HandleMobileRedirection","url","ClassList","CourseCard","Framer101_2","Framer101_3","\\uC77C","\\uC2DC\\uAC04","\\uBD84","\\uCD08","useState","colors","CheckIcon","i","StarIcon","colors","useState","Framer101","\\uC77C","\\uC2DC\\uAC04","\\uBD84","\\uCD08","useState","i","useState","Reviews","b","a","e","__awaiter","value","P","e","resolveFetch","name","__awaiter$1","url","_a","crossFetch","_a","status","c","format","value","config","url","x","version","DEFAULT_HEADERS","name","version","version$1","require$$0$1","w3cwebsocket","__commonjs_module0","version","DEFAULT_HEADERS","decoder","status","_a","h","m","x","value","toArray","_","__awaiter","P","e","config","_a2","i","push","_e","k","__awaiter$1","c","url","_handleRequest","__awaiter$1","url","_getRequestParams","handleError","status","__awaiter","value","P","e","resolveFetch","_getErrorMessage","__awaiter$2","version","DEFAULT_HEADERS","__awaiter$3","v","c","_a","url","name","i","value","parts","__awaiter","e","__awaiter$1","P","resolveFetch","status","p","__awaiter$2","_e","version","DEFAULT_HEADERS","x","now","url","defaults","crossFetch","value","P","e","_a","_e","name","Init","props","useState","Login","Spinner","UserButton","MenuItem","Fragment","CompareImage","ee","_a","e","te","i","u","m","re","H","C","E","y","ne","N","O","Le","ge","be","a","g","le","ce","pe","p","M","j","d","L","q","V","me","x","w","ue","fe","J","l","P","c","R","b","A","D","h","S","Pe","Ee","ye","Q","z","Z","_","n","Re","v","T","Se","Ce","k","He","de","ve","Y","K","he","xe","we","Ae","Counter","useState","Fragment","MuxPlayer","useState","useRef","Ae","Waitlist","useState","e","name","value","j","i","n","k","c","l","e","b","m","$2","p","description","_a","_a2","name","delay","v","Component","props","m.Init.propertyControls","m.CompareImage.propertyControls","m.Counter.propertyControls","m.VideoList.propertyControls","m.MuxPlayer.propertyControls","m.Reviews.propertyControls","m.Framer101.propertyControls","m.Framer101_2.propertyControls","m.Framer101_3.propertyControls"],"sources":["https:/framer.com/m/web-Spinner-IdTB.js","https:/framer.com/m/web-MenuItem-oSWT.js","https:/framer.com/m/web-Course-Card-oJCo.js","https:/framer.com/m/web-Button-amAd.js","https:/framer.com/m/class-Course-Title-s240.js","https:/framerusercontent.com/modules/PPKGDPDpNwE7Pib5UrtX/9q40P0jbWZu2mrfDKAmR/L_qgV81kS.js","https:/framer.com/m/class-Video-Item-Qr97.js","https:/framerusercontent.com/modules/1PPf8Z5LxViZZGNUlf8W/ekChcq8DOCbOnMvXnsjx/Y9iy1zFI3.js","https:/framer.com/m/class-Info-ii1V.js","https:/framer.com/m/payments-Payment-Button-oYzB.js","https:/framer.com/m/LiveEventInfo-1uhR.js","https:/esm.ngrok.dev/chunk-SDKSBXQ2.mjs","https:/esm.ngrok.dev/chunk-RZ4MXR2C.mjs","https:/esm.ngrok.dev/chunk-EJKG6TUT.mjs","https:/esm.ngrok.dev/chunk-PO4BOMMR.mjs","https:/esm.ngrok.dev/chunk-RIZ22KMY.mjs","https:/esm.ngrok.dev/chunk-MFTLEAG5.mjs","https:/esm.ngrok.dev/chunk-K6SZ2T5H.mjs","https:/esm.ngrok.dev/chunk-WZEPUR35.mjs","https:/esm.ngrok.dev/chunk-SVBYECQE.mjs","https:/esm.ngrok.dev/chunk-WTDJDUJN.mjs","https:/esm.ngrok.dev/chunk-6OBOGQ5Q.mjs","https:/esm.ngrok.dev/chunk-NLIN542D.mjs","https:/esm.ngrok.dev/chunk-C3N5J3D3.mjs","https:/cdn.skypack.dev/-/@supabase/functions-js@v2.1.0-RnZ2mgdVtYJw6BDBGbAJ/dist=es2019,mode=imports/optimized/@supabase/functions-js.js","https:/cdn.skypack.dev/-/@supabase/postgrest-js@v1.4.1-M6VL6LW6WNlsBWTBZFbq/dist=es2019,mode=imports/optimized/@supabase/postgrest-js.js","https:/cdn.skypack.dev/-/es5-ext@v0.10.53-QgoIgxGeG8vPfAwjei6y/dist=es2019,mode=imports/unoptimized/global.js","https:/cdn.skypack.dev/-/websocket@v1.0.34-bITKCQn27Ks1QQoRgk94/dist=es2019,mode=imports/optimized/websocket.js","https:/cdn.skypack.dev/-/@supabase/realtime-js@v2.6.0-KChn2jQyrOOE0GhQ08fE/dist=es2019,mode=imports/optimized/@supabase/realtime-js.js","https:/cdn.skypack.dev/-/@supabase/storage-js@v2.3.1-BHfs8j7jU6qHoJRSHZPL/dist=es2019,mode=imports/optimized/@supabase/storage-js.js","https:/cdn.skypack.dev/-/@supabase/gotrue-js@v2.12.1-U9V71OI5x9GUonOWwkxZ/dist=es2019,mode=imports/optimized/@supabase/gotrue-js.js","https:/cdn.skypack.dev/-/@supabase/supabase-js@v2.10.0-iuC42NKMzc0WgF6sPBaq/dist=es2019,mode=imports/optimized/@supabase/supabase-js.js","https:/cdn.skypack.dev/@supabase/supabase-js@2.10.0","https:/esm.ngrok.dev/chunk-L3UNR3GX.mjs","https:/esm.ngrok.dev/chunk-OOZRIUSN.mjs","https:/esm.ngrok.dev/chunk-IRHTPABC.mjs","https:/esm.ngrok.dev/chunk-M4QTGDPE.mjs","https:/esm.ngrok.dev/chunk-GTWKNZFA.mjs","https:/esm.ngrok.dev/chunk-G3BYDXSR.mjs","https:/esm.ngrok.dev/chunk-C3VYQ5YF.mjs","https:/esm.ngrok.dev/index.mjs","https:/esm.ngrok.dev/chunk-DEZTVITG.mjs","https:/esm.ngrok.dev/chunk-X6ESPM5B.mjs","https:/esm.ngrok.dev/utils/live-reload/useRealtimeComponent.mjs","https:/framerusercontent.com/modules/vOfYfdbvNgrwYkPTjTl9/cKPPJlUy1UlX1zrfETJ5/Components.js"],"sourcesContent":["// Generated by Framer (15813d8)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useOnVariantChange,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const cycleOrder=[\"cV7fhZBcl\",\"Jcfb4aAH4\"];const serializationHash=\"framer-1wZQ2\";const variantClassNames={cV7fhZBcl:\"framer-v-4txj8v\",Jcfb4aAH4:\"framer-v-1bm6mvd\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:1e3,ease:[0,0,1,1],type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={\"Variant 1\":\"cV7fhZBcl\",\"Variant 2\":\"Jcfb4aAH4\"};const getProps=({height,id,width,...props})=>{var _humanReadableVariantMap_props_variant,_ref;return{...props,variant:(_ref=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref!==void 0?_ref:\"cV7fhZBcl\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"cV7fhZBcl\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onAppearl4lp60=activeVariantCallback(async(...args)=>{setVariant(\"Jcfb4aAH4\");});useOnVariantChange(baseVariant,{default:onAppearl4lp60});const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-4txj8v\",className,classNames),\"data-framer-name\":\"Variant 1\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"cV7fhZBcl\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},...addPropertyOverrides({Jcfb4aAH4:{\"data-framer-name\":\"Variant 2\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1avnaaj\",\"data-framer-name\":\"graphic\",fill:\"black\",intrinsicHeight:24,intrinsicWidth:24,layoutDependency:layoutDependency,layoutId:\"dFk6m_r9P\",style:{rotate:0},svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><defs><linearGradient x1=\"28.154%\" y1=\"63.74%\" x2=\"74.629%\" y2=\"17.783%\" id=\"a\"><stop stop-color=\"rgba(164, 164, 164, 1)\" offset=\"0%\"/><stop stop-color=\"rgba(164, 164, 164, 0)\" stop-opacity=\"0\" offset=\"100%\"/></linearGradient></defs><g transform=\"translate(2)\" fill=\"none\"><circle stroke=\"url(#a)\" stroke-width=\"4\" cx=\"10\" cy=\"12\" r=\"10\"/><path d=\"M10 2C4.477 2 0 6.477 0 12\" stroke=\"rgba(164, 164, 164, 1)\" stroke-width=\"4\"/><rect fill=\"rgba(164, 164, 164, 1)\" x=\"8\" width=\"4\" height=\"4\" rx=\"8\"/></g></svg>',variants:{Jcfb4aAH4:{rotate:36e4}},withExternalLayout:true})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-1wZQ2.framer-1ltfjnk, .framer-1wZQ2 .framer-1ltfjnk { display: block; }\",\".framer-1wZQ2.framer-4txj8v { height: 60px; overflow: visible; position: relative; width: 60px; }\",\".framer-1wZQ2 .framer-1avnaaj { aspect-ratio: 1 / 1; flex: none; height: 100%; left: 0px; position: absolute; top: 0px; width: var(--framer-aspect-ratio-supported, 60px); }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 60\n * @framerIntrinsicWidth 60\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"Jcfb4aAH4\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerubzwLPDLP=withCSS(Component,css,\"framer-1wZQ2\");export default FramerubzwLPDLP;FramerubzwLPDLP.displayName=\"web/Spinner\";FramerubzwLPDLP.defaultProps={height:60,width:60};addPropertyControls(FramerubzwLPDLP,{variant:{options:[\"cV7fhZBcl\",\"Jcfb4aAH4\"],optionTitles:[\"Variant 1\",\"Variant 2\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerubzwLPDLP,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerubzwLPDLP\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Jcfb4aAH4\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"60\",\"framerIntrinsicHeight\":\"60\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ubzwLPDLP.map","// Generated by Framer (15813d8)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const serializationHash=\"framer-243qn\";const variantClassNames={t99AyRX6u:\"framer-v-hony9l\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const getProps=({height,id,onClick,title,width,...props})=>{var _ref;return{...props,DicMLVR17:onClick!==null&&onClick!==void 0?onClick:props.DicMLVR17,GFTgizblO:(_ref=title!==null&&title!==void 0?title:props.GFTgizblO)!==null&&_ref!==void 0?_ref:\"강의실\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,DicMLVR17,GFTgizblO,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"t99AyRX6u\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1knps2q=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(DicMLVR17){const res=await DicMLVR17(...args);if(res===false)return false;}});const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-hony9l\",className,classNames),\"data-framer-name\":\"Variant 1\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"t99AyRX6u\",onTap:onTap1knps2q,ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-weight\":\"600\",\"--framer-letter-spacing\":\"0.42px\",\"--framer-line-height\":\"140%\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(37, 49, 60))\"},children:\"강의실\"})}),className:\"framer-lzy7ob\",\"data-framer-name\":\"SERVICES\",fonts:[\"__SystemDefault-600-normal__\"],layoutDependency:layoutDependency,layoutId:\"oKyFswVwe\",style:{\"--extracted-r6o4lv\":\"rgb(37, 49, 60)\"},text:GFTgizblO,verticalAlignment:\"top\",withExternalLayout:true})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-243qn.framer-1ft7ls2, .framer-243qn .framer-1ft7ls2 { display: block; }\",\".framer-243qn.framer-hony9l { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-243qn .framer-lzy7ob { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-243qn.framer-hony9l { gap: 0px; } .framer-243qn.framer-hony9l > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } .framer-243qn.framer-hony9l > :first-child { margin-top: 0px; } .framer-243qn.framer-hony9l > :last-child { margin-bottom: 0px; } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 22.5\n * @framerIntrinsicWidth 43\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"DicMLVR17\":\"onClick\",\"GFTgizblO\":\"title\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerwUFtSXOPd=withCSS(Component,css,\"framer-243qn\");export default FramerwUFtSXOPd;FramerwUFtSXOPd.displayName=\"web/MenuItem\";FramerwUFtSXOPd.defaultProps={height:22.5,width:43};addPropertyControls(FramerwUFtSXOPd,{DicMLVR17:{title:\"On Click\",type:ControlType.EventHandler},GFTgizblO:{defaultValue:\"강의실\",displayTextArea:false,title:\"Title\",type:ControlType.String}});addFonts(FramerwUFtSXOPd,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerwUFtSXOPd\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"43\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"22.5\",\"framerImmutableVariables\":\"true\",\"framerVariables\":\"{\\\"DicMLVR17\\\":\\\"onClick\\\",\\\"GFTgizblO\\\":\\\"title\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./wUFtSXOPd.map","// Generated by Framer (c563d2c)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentPresetsProvider,ControlType,cx,getFontsFromComponentPreset,getFontsFromSharedStyle,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS,withFX}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import*as componentPresets from\"https://framerusercontent.com/modules/OfOZVxq5O2A2YDp5xhsS/Rm0oOKV8vJhojPBR0Hu5/componentPresets.js\";import*as sharedStyle3 from\"https://framerusercontent.com/modules/qf8WnaeGJ3SKlV1O1xQl/OpcN00bADf7Cx0Plvexi/D3DXxP6A7.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/ORPUlZI3WxbcHtHvUanj/aIKrwl6RsacGktaFjPfX/DXjdkQnI3.js\";import*as sharedStyle6 from\"https://framerusercontent.com/modules/WFwJfXfYaLttmLvni3XT/CPcUg4PRsHlE69ChrCl2/igUmRMPj0.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/u1mf9oEcsdT6ZY35EKju/aKBdc0OCLwIFIjQkcI48/kevPKtV7h.js\";import*as sharedStyle5 from\"https://framerusercontent.com/modules/gpKoVqFiaHhnd0ovD92t/6weiTaG8fJrKaTmoa24o/R0ztcLGWn.js\";import*as sharedStyle4 from\"https://framerusercontent.com/modules/E8iS3ykzc4VVNFg4Q0j4/e0p5VUklaAGl2DkhwD5L/sJ2QEITYH.js\";import*as sharedStyle2 from\"https://framerusercontent.com/modules/Ckw3BYDTnwzv14e9Z0QG/JufQFcF7Uj7bjcOGNBav/VKSZtsCFD.js\";const MotionAWithFX=withFX(motion.a);const serializationHash=\"framer-ankia\";const variantClassNames={cqB6gnJOn:\"framer-v-10umvpq\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const animation={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transformPerspective:1200,x:0,y:-32};const transition1={damping:40,delay:.1,mass:1,stiffness:200,type:\"spring\"};const transition2={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({content,height,id,link,smallTitle,subTitle,width,...props})=>{return{...props,g6Gj_B3C8:smallTitle??props.g6Gj_B3C8??\"[기간 한정 무료 강의]\",OF8b_4AWY:content??props.OF8b_4AWY??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsxs(motion.p,{children:[\"ComfyUI 가 처음 이신가요?\",/*#__PURE__*/_jsx(motion.br,{}),\"이 강의를 통해  UI 를 Comfy 시작해 보세요\",/*#__PURE__*/_jsx(motion.br,{}),/*#__PURE__*/_jsx(motion.br,{}),\"실제 광고 모델을 만들면서,\",/*#__PURE__*/_jsx(motion.br,{}),\"AI 가 어떻게 작동하는지 구체적으로 배워보실 수 있습니다\"]})}),SNA6l19Uu:subTitle??props.SNA6l19Uu??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsxs(motion.p,{children:[\"ComfyUI 배우고\",/*#__PURE__*/_jsx(motion.br,{}),\"AI 연예인 모델 만들기\"]})}),tELsFd721:link??props.tELsFd721};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,g6Gj_B3C8,tELsFd721,SNA6l19Uu,OF8b_4AWY,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"cqB6gnJOn\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className,sharedStyle2.className,sharedStyle3.className,sharedStyle4.className,sharedStyle5.className,sharedStyle6.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition2,children:/*#__PURE__*/_jsx(Link,{href:tELsFd721,nodeId:\"cqB6gnJOn\",openInNewTab:false,children:/*#__PURE__*/_jsxs(MotionAWithFX,{...restProps,...gestureHandlers,__framer__animate:{transition:transition1},__framer__animateOnce:true,__framer__enter:animation,__framer__styleAppearEffectEnabled:true,__framer__threshold:.5,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:`${cx(scopingClassNames,\"framer-10umvpq\",className,classNames)} framer-1g5vgzs`,\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"cqB6gnJOn\",ref:ref??ref1,style:{background:'linear-gradient(132deg, var(--token-7271da1b-9f0a-41bd-91b9-d7098d8944de, rgb(244, 237, 255)) /* {\"name\":\"HighlightLight1\"} */ 0%, var(--token-a37e6c3e-a10c-437b-b258-07d1d49555da, rgb(252, 235, 239)) /* {\"name\":\"HighlightGradient2\"} */ 100%)',borderBottomLeftRadius:40,borderBottomRightRadius:40,borderTopLeftRadius:40,borderTopRightRadius:40,...style},children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-v7fwg\",layoutDependency:layoutDependency,layoutId:\"g9CQgmjJe\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgQm9sZA==\",\"--framer-font-family\":'\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\"},children:\"[기간 한정 무료 강의]\"})}),className:\"framer-9w2it1\",fonts:[\"CUSTOM;Pretendard Bold\"],layoutDependency:layoutDependency,layoutId:\"TbmyzTFst\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:g6Gj_B3C8,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(ComponentPresetsProvider,{presets:{\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\":componentPresets.props[\"bGrj_P5Hk\"]},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:SNA6l19Uu,className:\"framer-r6pbk4\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"lMSldpxcB\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},stylesPresetsClassNames:{a:\"framer-styles-preset-1x5q87\",h1:\"framer-styles-preset-1x4saly\",h2:\"framer-styles-preset-1uqk9bj\",h3:\"framer-styles-preset-12fssox\",h4:\"framer-styles-preset-u2ed1w\",h5:\"framer-styles-preset-13rf66x\",h6:\"framer-styles-preset-chmam8\",img:\"framer-styles-preset-1d582qa\",p:\"framer-styles-preset-1shyyex\"},verticalAlignment:\"top\",withExternalLayout:true})})]}),/*#__PURE__*/_jsx(ComponentPresetsProvider,{presets:{\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\":componentPresets.props[\"bGrj_P5Hk\"]},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:OF8b_4AWY,className:\"framer-1j6mtsd\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"wlk3icv3R\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},stylesPresetsClassNames:{a:\"framer-styles-preset-1x5q87\",h1:\"framer-styles-preset-1x4saly\",h2:\"framer-styles-preset-1uqk9bj\",h3:\"framer-styles-preset-12fssox\",h4:\"framer-styles-preset-17umqzd\",h5:\"framer-styles-preset-13rf66x\",h6:\"framer-styles-preset-chmam8\",img:\"framer-styles-preset-1d582qa\",p:\"framer-styles-preset-1at8hnm\"},verticalAlignment:\"top\",withExternalLayout:true})})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-ankia.framer-1g5vgzs, .framer-ankia .framer-1g5vgzs { display: block; }\",\".framer-ankia.framer-10umvpq { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 32px; height: min-content; justify-content: center; overflow: visible; padding: 40px; position: relative; text-decoration: none; width: 515px; }\",\".framer-ankia .framer-v7fwg { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-ankia .framer-9w2it1, .framer-ankia .framer-r6pbk4 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-ankia .framer-1j6mtsd { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-ankia.framer-10umvpq, .framer-ankia .framer-v7fwg { gap: 0px; } .framer-ankia.framer-10umvpq > * { margin: 0px; margin-bottom: calc(32px / 2); margin-top: calc(32px / 2); } .framer-ankia.framer-10umvpq > :first-child, .framer-ankia .framer-v7fwg > :first-child { margin-top: 0px; } .framer-ankia.framer-10umvpq > :last-child, .framer-ankia .framer-v7fwg > :last-child { margin-bottom: 0px; } .framer-ankia .framer-v7fwg > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } }\",...sharedStyle.css,...sharedStyle1.css,...sharedStyle2.css,...sharedStyle3.css,...sharedStyle4.css,...sharedStyle5.css,...sharedStyle6.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 273\n * @framerIntrinsicWidth 515\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"g6Gj_B3C8\":\"smallTitle\",\"tELsFd721\":\"link\",\"SNA6l19Uu\":\"subTitle\",\"OF8b_4AWY\":\"content\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerpNHUzUY_J=withCSS(Component,css,\"framer-ankia\");export default FramerpNHUzUY_J;FramerpNHUzUY_J.displayName=\"web / Course Card\";FramerpNHUzUY_J.defaultProps={height:273,width:515};addPropertyControls(FramerpNHUzUY_J,{g6Gj_B3C8:{defaultValue:\"[기간 한정 무료 강의]\",displayTextArea:false,title:\"smallTitle\",type:ControlType.String},tELsFd721:{title:\"Link\",type:ControlType.Link},SNA6l19Uu:{defaultValue:\"<p>ComfyUI 배우고<br>AI 연예인 모델 만들기</p>\",title:\"subTitle\",type:ControlType.RichText},OF8b_4AWY:{defaultValue:\"<p>ComfyUI 가 처음 이신가요?<br>이 강의를 통해  UI 를 Comfy 시작해 보세요<br><br>실제 광고 모델을 만들면서,<br>AI 가 어떻게 작동하는지 구체적으로 배워보실 수 있습니다</p>\",title:\"content\",type:ControlType.RichText}});addFonts(FramerpNHUzUY_J,[{explicitInter:true,fonts:[{family:\"Pretendard Bold\",source:\"custom\",url:\"https://framerusercontent.com/assets/GHJPBmd4yxGhh5oPHY0HmX7Jl4.woff2\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts),...getFontsFromSharedStyle(sharedStyle2.fonts),...getFontsFromSharedStyle(sharedStyle3.fonts),...getFontsFromSharedStyle(sharedStyle4.fonts),...getFontsFromSharedStyle(sharedStyle5.fonts),...getFontsFromSharedStyle(sharedStyle6.fonts),...componentPresets.fonts?.[\"bGrj_P5Hk\"]?getFontsFromComponentPreset(componentPresets.fonts?.[\"bGrj_P5Hk\"]):[]],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerpNHUzUY_J\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"273\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicWidth\":\"515\",\"framerDisplayContentsDiv\":\"false\",\"framerVariables\":\"{\\\"g6Gj_B3C8\\\":\\\"smallTitle\\\",\\\"tELsFd721\\\":\\\"link\\\",\\\"SNA6l19Uu\\\":\\\"subTitle\\\",\\\"OF8b_4AWY\\\":\\\"content\\\"}\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (c85c929)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,Link,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const enabledGestures={IyQPoiN0q:{hover:true,pressed:true}};const cycleOrder=[\"NpaQO0Dn0\",\"vps4u2qCI\",\"IyQPoiN0q\",\"AzUj4u7TL\",\"eoD3Go7N_\"];const serializationHash=\"framer-4BjFL\";const variantClassNames={AzUj4u7TL:\"framer-v-14l9mr8\",eoD3Go7N_:\"framer-v-1g4co6h\",IyQPoiN0q:\"framer-v-1luoeai\",NpaQO0Dn0:\"framer-v-12mie5b\",vps4u2qCI:\"framer-v-v4758p\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={\"Variant 1\":\"NpaQO0Dn0\",\"Variant 2\":\"vps4u2qCI\",mobile:\"eoD3Go7N_\",primary:\"IyQPoiN0q\",secondary:\"AzUj4u7TL\"};const getProps=({height,id,link,newTab,onClick,text,width,...props})=>{return{...props,qdfjHAymA:onClick??props.qdfjHAymA,qGd_L3zY2:text??props.qGd_L3zY2??\"Button\",s4doLI9Je:link??props.s4doLI9Je,sLwHAfjpJ:newTab??props.sLwHAfjpJ??true,variant:humanReadableVariantMap[props.variant]??props.variant??\"NpaQO0Dn0\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,qGd_L3zY2,qdfjHAymA,s4doLI9Je,sLwHAfjpJ,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"NpaQO0Dn0\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap15wv0rg=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(qdfjHAymA){const res=await qdfjHAymA(...args);if(res===false)return false;}});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:s4doLI9Je,motionChild:true,nodeId:\"NpaQO0Dn0\",openInNewTab:true,scopeId:\"e26fWTkl8\",smoothScroll:true,...addPropertyOverrides({eoD3Go7N_:{openInNewTab:sLwHAfjpJ},IyQPoiN0q:{openInNewTab:sLwHAfjpJ}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-12mie5b\",className,classNames)} framer-f9b8tr`,\"data-framer-name\":\"Variant 1\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"NpaQO0Dn0\",onTap:onTap15wv0rg,ref:refBinding,style:{backgroundColor:\"rgb(4, 13, 215)\",...style},variants:{\"IyQPoiN0q-hover\":{backgroundColor:\"rgb(0, 75, 204)\"},\"IyQPoiN0q-pressed\":{backgroundColor:\"rgb(0, 75, 204)\"},AzUj4u7TL:{backgroundColor:\"var(--token-ba113d51-2711-49f7-8d1f-4c48e4f03721, rgb(252, 235, 239))\"},eoD3Go7N_:{backgroundColor:\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},IyQPoiN0q:{backgroundColor:\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},vps4u2qCI:{backgroundColor:\"var(--token-44346858-b4d1-40d6-96a5-04ed45d16ac4, rgb(190, 255, 173))\"}},...addPropertyOverrides({\"IyQPoiN0q-hover\":{\"data-framer-name\":undefined},\"IyQPoiN0q-pressed\":{\"data-framer-name\":undefined},AzUj4u7TL:{\"data-framer-name\":\"secondary\"},eoD3Go7N_:{\"data-framer-name\":\"mobile\"},IyQPoiN0q:{\"data-framer-name\":\"primary\"},vps4u2qCI:{\"data-framer-name\":\"Variant 2\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"20px\",\"--framer-font-weight\":\"600\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(189, 255, 173))\"},children:\"신청하기 (7/9 시작) ─ 선착순 15명\"})}),className:\"framer-cra20u\",\"data-framer-name\":\"Learn more\",fonts:[\"__SystemDefault-600-normal__\"],layoutDependency:layoutDependency,layoutId:\"INXYWnQX5\",style:{\"--extracted-r6o4lv\":\"rgb(189, 255, 173)\"},text:qGd_L3zY2,variants:{AzUj4u7TL:{\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},eoD3Go7N_:{\"--extracted-r6o4lv\":\"var(--token-3a8ad279-9069-49db-9c10-595ba41895ec, rgb(252, 235, 239))\"},IyQPoiN0q:{\"--extracted-r6o4lv\":\"var(--token-3a8ad279-9069-49db-9c10-595ba41895ec, rgb(252, 235, 239))\"},vps4u2qCI:{\"--extracted-r6o4lv\":\"var(--token-2553e41c-f318-4f53-b171-f4e13a8d7a0f, rgb(4, 13, 215))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({AzUj4u7TL:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"20px\",\"--framer-font-weight\":\"600\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\"},children:\"Button\"})})},eoD3Go7N_:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-weight\":\"600\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-3a8ad279-9069-49db-9c10-595ba41895ec, rgb(252, 235, 239)))\"},children:\"Button\"})})},IyQPoiN0q:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"20px\",\"--framer-font-weight\":\"600\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-3a8ad279-9069-49db-9c10-595ba41895ec, rgb(252, 235, 239)))\"},children:\"Button\"})})},vps4u2qCI:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"20px\",\"--framer-font-weight\":\"600\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2553e41c-f318-4f53-b171-f4e13a8d7a0f, rgb(4, 13, 215)))\"},children:\"Button\"})})}},baseVariant,gestureVariant)})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-4BjFL.framer-f9b8tr, .framer-4BjFL .framer-f9b8tr { display: block; }\",\".framer-4BjFL.framer-12mie5b { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; padding: 16px 20px 16px 20px; position: relative; text-decoration: none; width: min-content; }\",\".framer-4BjFL .framer-cra20u { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-4BjFL.framer-v-1g4co6h.framer-12mie5b { padding: 12px 16px 12px 16px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 56\n * @framerIntrinsicWidth 102\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"vps4u2qCI\":{\"layout\":[\"auto\",\"auto\"]},\"IyQPoiN0q\":{\"layout\":[\"auto\",\"auto\"]},\"AzUj4u7TL\":{\"layout\":[\"auto\",\"auto\"]},\"eoD3Go7N_\":{\"layout\":[\"auto\",\"auto\"]},\"DxGZUWZmE\":{\"layout\":[\"auto\",\"auto\"]},\"pRaBWh2dI\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"qGd_L3zY2\":\"text\",\"qdfjHAymA\":\"onClick\",\"s4doLI9Je\":\"link\",\"sLwHAfjpJ\":\"newTab\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const Framere26fWTkl8=withCSS(Component,css,\"framer-4BjFL\");export default Framere26fWTkl8;Framere26fWTkl8.displayName=\"web / Button\";Framere26fWTkl8.defaultProps={height:56,width:102};addPropertyControls(Framere26fWTkl8,{variant:{options:[\"NpaQO0Dn0\",\"vps4u2qCI\",\"IyQPoiN0q\",\"AzUj4u7TL\",\"eoD3Go7N_\"],optionTitles:[\"Variant 1\",\"Variant 2\",\"primary\",\"secondary\",\"mobile\"],title:\"Variant\",type:ControlType.Enum},qGd_L3zY2:{defaultValue:\"Button\",displayTextArea:false,placeholder:\"\",title:\"Text\",type:ControlType.String},qdfjHAymA:{title:\"On Click\",type:ControlType.EventHandler},s4doLI9Je:{title:\"Link\",type:ControlType.Link},sLwHAfjpJ:{defaultValue:true,title:\"New Tab\",type:ControlType.Boolean}});addFonts(Framere26fWTkl8,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Framere26fWTkl8\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"56\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerVariables\":\"{\\\"qGd_L3zY2\\\":\\\"text\\\",\\\"qdfjHAymA\\\":\\\"onClick\\\",\\\"s4doLI9Je\\\":\\\"link\\\",\\\"sLwHAfjpJ\\\":\\\"newTab\\\"}\",\"framerAutoSizeImages\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"vps4u2qCI\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"IyQPoiN0q\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"AzUj4u7TL\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"eoD3Go7N_\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"DxGZUWZmE\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"pRaBWh2dI\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"102\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./e26fWTkl8.map","// Generated by Framer (c563d2c)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentPresetsProvider,ControlType,cx,getFontsFromComponentPreset,getFontsFromSharedStyle,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import*as componentPresets from\"https://framerusercontent.com/modules/OfOZVxq5O2A2YDp5xhsS/Rm0oOKV8vJhojPBR0Hu5/componentPresets.js\";import*as sharedStyle3 from\"https://framerusercontent.com/modules/qf8WnaeGJ3SKlV1O1xQl/OpcN00bADf7Cx0Plvexi/D3DXxP6A7.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/ORPUlZI3WxbcHtHvUanj/aIKrwl6RsacGktaFjPfX/DXjdkQnI3.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/u1mf9oEcsdT6ZY35EKju/aKBdc0OCLwIFIjQkcI48/kevPKtV7h.js\";import*as sharedStyle5 from\"https://framerusercontent.com/modules/gpKoVqFiaHhnd0ovD92t/6weiTaG8fJrKaTmoa24o/R0ztcLGWn.js\";import*as sharedStyle4 from\"https://framerusercontent.com/modules/E8iS3ykzc4VVNFg4Q0j4/e0p5VUklaAGl2DkhwD5L/sJ2QEITYH.js\";import*as sharedStyle2 from\"https://framerusercontent.com/modules/Ckw3BYDTnwzv14e9Z0QG/JufQFcF7Uj7bjcOGNBav/VKSZtsCFD.js\";const serializationHash=\"framer-HPdTI\";const variantClassNames={QKratsr4q:\"framer-v-1z94h\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,title,width,...props})=>{return{...props,ZjOataw8x:title??props.ZjOataw8x??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{children:\"진짜 광고 이미지를 만들면서 배우는 AI (ComfyUI)\"})})};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,ZjOataw8x,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"QKratsr4q\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className,sharedStyle2.className,sharedStyle3.className,sharedStyle4.className,sharedStyle5.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1z94h\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"QKratsr4q\",ref:ref??ref1,style:{...style},children:/*#__PURE__*/_jsx(ComponentPresetsProvider,{presets:{\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\":componentPresets.props[\"bGrj_P5Hk\"]},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:ZjOataw8x,className:\"framer-1pa6yoz\",fonts:[\"CUSTOM;Pretendard Bold\"],layoutDependency:layoutDependency,layoutId:\"qhfetsWw0\",style:{\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},stylesPresetsClassNames:{a:\"framer-styles-preset-1x5q87\",h1:\"framer-styles-preset-1x4saly\",h2:\"framer-styles-preset-1uqk9bj\",h3:\"framer-styles-preset-12fssox\",img:\"framer-styles-preset-1d582qa\",p:\"framer-styles-preset-1shyyex\"},verticalAlignment:\"top\",withExternalLayout:true})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-HPdTI.framer-d3l0lq, .framer-HPdTI .framer-d3l0lq { display: block; }\",\".framer-HPdTI.framer-1z94h { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 485px; }\",\".framer-HPdTI .framer-1pa6yoz { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-HPdTI.framer-1z94h { gap: 0px; } .framer-HPdTI.framer-1z94h > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } .framer-HPdTI.framer-1z94h > :first-child { margin-top: 0px; } .framer-HPdTI.framer-1z94h > :last-child { margin-bottom: 0px; } }\",...sharedStyle.css,...sharedStyle1.css,...sharedStyle2.css,...sharedStyle3.css,...sharedStyle4.css,...sharedStyle5.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 252\n * @framerIntrinsicWidth 485\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"ZjOataw8x\":\"title\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerqZtbqVS6g=withCSS(Component,css,\"framer-HPdTI\");export default FramerqZtbqVS6g;FramerqZtbqVS6g.displayName=\"class / Course Title\";FramerqZtbqVS6g.defaultProps={height:252,width:485};addPropertyControls(FramerqZtbqVS6g,{ZjOataw8x:{defaultValue:\"<h1>진짜 광고 이미지를 만들면서 배우는 AI (ComfyUI)</h1>\",title:\"Title\",type:ControlType.RichText}});addFonts(FramerqZtbqVS6g,[{explicitInter:true,fonts:[{family:\"Pretendard Bold\",source:\"custom\",url:\"https://framerusercontent.com/assets/GHJPBmd4yxGhh5oPHY0HmX7Jl4.woff2\"}]},...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts),...getFontsFromSharedStyle(sharedStyle2.fonts),...getFontsFromSharedStyle(sharedStyle3.fonts),...getFontsFromSharedStyle(sharedStyle4.fonts),...getFontsFromSharedStyle(sharedStyle5.fonts),...componentPresets.fonts?.[\"bGrj_P5Hk\"]?getFontsFromComponentPreset(componentPresets.fonts?.[\"bGrj_P5Hk\"]):[]],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerqZtbqVS6g\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerVariables\":\"{\\\"ZjOataw8x\\\":\\\"title\\\"}\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"485\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicHeight\":\"252\",\"framerContractVersion\":\"1\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (15813d8)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const cycleOrder=[\"m6CGN0c1a\",\"EOXxliv42\",\"DmlfyxLV4\",\"gu8c0uaz0\"];const serializationHash=\"framer-XKPpq\";const variantClassNames={DmlfyxLV4:\"framer-v-10imz3x\",EOXxliv42:\"framer-v-13hxbjr\",gu8c0uaz0:\"framer-v-1cwx5gn\",m6CGN0c1a:\"framer-v-z3vf65\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={blue300:\"m6CGN0c1a\",positive:\"gu8c0uaz0\",primary500:\"EOXxliv42\",primary700:\"DmlfyxLV4\"};const getProps=({height,id,title,width,...props})=>{var _ref,_humanReadableVariantMap_props_variant,_ref1;return{...props,HmIe2CS40:(_ref=title!==null&&title!==void 0?title:props.HmIe2CS40)!==null&&_ref!==void 0?_ref:\"Basic\",variant:(_ref1=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref1!==void 0?_ref1:\"m6CGN0c1a\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,HmIe2CS40,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"m6CGN0c1a\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-z3vf65\",className,classNames),\"data-framer-name\":\"blue300\",layoutDependency:layoutDependency,layoutId:\"m6CGN0c1a\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{backgroundColor:\"rgba(0, 153, 255, 0.1)\",borderBottomLeftRadius:5,borderBottomRightRadius:5,borderTopLeftRadius:5,borderTopRightRadius:5,...style},variants:{DmlfyxLV4:{backgroundColor:\"rgba(0, 92, 250, 0.1)\"},EOXxliv42:{backgroundColor:\"rgba(32, 128, 253, 0.1)\"},gu8c0uaz0:{backgroundColor:\"rgba(14, 183, 131, 0.1)\"}},...addPropertyOverrides({DmlfyxLV4:{\"data-framer-name\":\"primary700\"},EOXxliv42:{\"data-framer-name\":\"primary500\"},gu8c0uaz0:{\"data-framer-name\":\"positive\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTcwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"10px\",\"--framer-font-weight\":\"700\",\"--framer-line-height\":\"11px\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(0, 153, 255))\",\"--framer-text-transform\":\"uppercase\"},children:\"Basic\"})}),className:\"framer-ugzqh6\",fonts:[\"__SystemDefault-700-normal__\"],layoutDependency:layoutDependency,layoutId:\"S7iSxDPRh\",style:{\"--extracted-r6o4lv\":\"rgb(0, 153, 255)\"},text:HmIe2CS40,variants:{DmlfyxLV4:{\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},EOXxliv42:{\"--extracted-r6o4lv\":\"rgb(32, 128, 253)\"},gu8c0uaz0:{\"--extracted-r6o4lv\":\"rgb(14, 183, 131)\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({DmlfyxLV4:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTcwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"10px\",\"--framer-font-weight\":\"700\",\"--framer-line-height\":\"11px\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\",\"--framer-text-transform\":\"uppercase\"},children:\"Basic\"})})},EOXxliv42:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTcwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"10px\",\"--framer-font-weight\":\"700\",\"--framer-line-height\":\"11px\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(32, 128, 253))\",\"--framer-text-transform\":\"uppercase\"},children:\"Basic\"})})},gu8c0uaz0:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTcwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"10px\",\"--framer-font-weight\":\"700\",\"--framer-line-height\":\"11px\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(14, 183, 131))\",\"--framer-text-transform\":\"uppercase\"},children:\"Basic\"})})}},baseVariant,gestureVariant)})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-XKPpq.framer-pyt4e2, .framer-XKPpq .framer-pyt4e2 { display: block; }\",\".framer-XKPpq.framer-z3vf65 { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; padding: 3px 4px 3px 4px; position: relative; width: min-content; }\",\".framer-XKPpq .framer-ugzqh6 { -webkit-user-select: none; flex: none; height: auto; pointer-events: auto; position: relative; user-select: none; white-space: pre; width: auto; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-XKPpq.framer-z3vf65 { gap: 0px; } .framer-XKPpq.framer-z3vf65 > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-XKPpq.framer-z3vf65 > :first-child { margin-top: 0px; } .framer-XKPpq.framer-z3vf65 > :last-child { margin-bottom: 0px; } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 17\n * @framerIntrinsicWidth 40\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"EOXxliv42\":{\"layout\":[\"auto\",\"auto\"]},\"DmlfyxLV4\":{\"layout\":[\"auto\",\"auto\"]},\"gu8c0uaz0\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"HmIe2CS40\":\"title\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerL_qgV81kS=withCSS(Component,css,\"framer-XKPpq\");export default FramerL_qgV81kS;FramerL_qgV81kS.displayName=\"class / Badge\";FramerL_qgV81kS.defaultProps={height:17,width:40};addPropertyControls(FramerL_qgV81kS,{variant:{options:[\"m6CGN0c1a\",\"EOXxliv42\",\"DmlfyxLV4\",\"gu8c0uaz0\"],optionTitles:[\"blue300\",\"primary500\",\"primary700\",\"positive\"],title:\"Variant\",type:ControlType.Enum},HmIe2CS40:{defaultValue:\"Basic\",displayTextArea:false,title:\"Title\",type:ControlType.String}});addFonts(FramerL_qgV81kS,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerL_qgV81kS\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"HmIe2CS40\\\":\\\"title\\\"}\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"EOXxliv42\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"DmlfyxLV4\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"gu8c0uaz0\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicWidth\":\"40\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"17\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./L_qgV81kS.map","// Generated by Framer (15813d8)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,RichText,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import ClassBadge from\"https://framerusercontent.com/modules/PPKGDPDpNwE7Pib5UrtX/9q40P0jbWZu2mrfDKAmR/L_qgV81kS.js\";const ClassBadgeFonts=getFonts(ClassBadge);const enabledGestures={IohDfcPBy:{hover:true}};const cycleOrder=[\"IohDfcPBy\",\"NZfMI2NWA\",\"DLrRrcEgb\"];const serializationHash=\"framer-e8eSn\";const variantClassNames={DLrRrcEgb:\"framer-v-rjx21w\",IohDfcPBy:\"framer-v-1jgcywx\",NZfMI2NWA:\"framer-v-1r9jacy\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const isSet=value=>{return value!==undefined&&value!==null&&value!==\"\";};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={active:\"NZfMI2NWA\",default:\"IohDfcPBy\",locked:\"DLrRrcEgb\"};const getProps=({category,height,id,onClick,showBadge,showBadges,title,width,...props})=>{var _ref,_humanReadableVariantMap_props_variant,_ref1;return{...props,B_OfjITaX:showBadges!==null&&showBadges!==void 0?showBadges:props.B_OfjITaX,BsCHs94Gy:category!==null&&category!==void 0?category:props.BsCHs94Gy,K0LT0h_gV:(_ref=title!==null&&title!==void 0?title:props.K0LT0h_gV)!==null&&_ref!==void 0?_ref:\"Comfy UI 설치하기 (10:23)\",oaG9Chr4C:showBadge!==null&&showBadge!==void 0?showBadge:props.oaG9Chr4C,variant:(_ref1=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref1!==void 0?_ref1:\"IohDfcPBy\",vUdH30LGf:onClick!==null&&onClick!==void 0?onClick:props.vUdH30LGf};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,vUdH30LGf,K0LT0h_gV,B_OfjITaX,oaG9Chr4C,BsCHs94Gy,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"IohDfcPBy\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1rr2kdx=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(vUdH30LGf){const res=await vUdH30LGf(...args);if(res===false)return false;}});const ref1=React.useRef(null);const isDisplayed=()=>{if(baseVariant===\"DLrRrcEgb\")return true;return false;};const visible=isSet(BsCHs94Gy);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-1jgcywx\",className,classNames),\"data-framer-name\":\"default\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"IohDfcPBy\",onTap:onTap1rr2kdx,ref:ref!==null&&ref!==void 0?ref:ref1,style:{borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,...style},...addPropertyOverrides({\"IohDfcPBy-hover\":{\"data-framer-name\":undefined},DLrRrcEgb:{\"data-framer-name\":\"locked\",\"data-highlight\":undefined,onTap:undefined},NZfMI2NWA:{\"data-framer-name\":\"active\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-letter-spacing\":\"-0.2px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-26444142-8ce9-44e5-934a-21ee2c38f77b, rgb(25, 20, 57)))\"},children:\"Comfy UI 설치하기 (10:23)\"})}),className:\"framer-229wnw\",fonts:[\"CUSTOM;Pretendard SemiBold\"],layoutDependency:layoutDependency,layoutId:\"sUqLJYXyu\",style:{\"--extracted-r6o4lv\":\"var(--token-26444142-8ce9-44e5-934a-21ee2c38f77b, rgb(25, 20, 57))\",\"--framer-link-current-text-color\":\"var(--token-797ef18e-f527-41d0-aadb-3551de64ffca, rgb(34, 0, 255))\",\"--framer-link-hover-text-color\":\"var(--token-797ef18e-f527-41d0-aadb-3551de64ffca, rgb(34, 0, 255))\",\"--framer-link-text-color\":\"var(--token-26444142-8ce9-44e5-934a-21ee2c38f77b, rgb(25, 20, 57))\",\"--framer-link-text-decoration\":\"none\"},text:K0LT0h_gV,variants:{\"IohDfcPBy-hover\":{\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},DLrRrcEgb:{\"--extracted-r6o4lv\":\"rgb(186, 186, 186)\"},NZfMI2NWA:{\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({\"IohDfcPBy-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-letter-spacing\":\"-0.2px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\"},children:\"Comfy UI 설치하기 (10:23)\"})})},DLrRrcEgb:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-letter-spacing\":\"-0.2px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(186, 186, 186))\"},children:\"Comfy UI 설치하기 (10:23)\"})})},NZfMI2NWA:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-letter-spacing\":\"-0.2px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\"},children:\"Comfy UI 설치하기 (10:23)\"})})}},baseVariant,gestureVariant)}),isDisplayed()&&/*#__PURE__*/_jsx(SVG,{className:\"framer-zlss69\",\"data-framer-name\":\"graphic\",fill:\"black\",intrinsicHeight:16,intrinsicWidth:16,layoutDependency:layoutDependency,layoutId:\"yGrP9QxMh\",svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" viewBox=\"0 0 24 24\" style=\"display:block;margin:0 auto\"><path d=\"M5 22a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2Zm2-11V7a5 5 0 0 1 10 0v4\" fill=\"transparent\" stroke-width=\"2\" stroke=\"#bababa\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>',withExternalLayout:true}),B_OfjITaX&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ku5z74\",layoutDependency:layoutDependency,layoutId:\"tuaVIGw3h\",children:[visible&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:17,y:((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+(16+(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32-(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32)*1)/2)+(0+((((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32)*1-0-17)/2),...addPropertyOverrides({DLrRrcEgb:{y:((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+(16+(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32-(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32)*1)/2)+(0+((((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32)*1-0-17)/2)}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1gv8558-container\",layoutDependency:layoutDependency,layoutId:\"gawDjmk21-container\",children:/*#__PURE__*/_jsx(ClassBadge,{height:\"100%\",HmIe2CS40:BsCHs94Gy,id:\"gawDjmk21\",layoutId:\"gawDjmk21\",variant:\"m6CGN0c1a\",width:\"100%\"})})}),oaG9Chr4C&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:17,y:((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+(16+(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32-(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32)*1)/2)+(0+((((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32)*1-0-17)/2),...addPropertyOverrides({DLrRrcEgb:{y:((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+(16+(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32-(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32)*1)/2)+(0+((((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32)*1-0-17)/2)}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-hp145s-container\",layoutDependency:layoutDependency,layoutId:\"Sl0Yq_O8n-container\",children:/*#__PURE__*/_jsx(ClassBadge,{height:\"100%\",HmIe2CS40:\"New\",id:\"Sl0Yq_O8n\",layoutId:\"Sl0Yq_O8n\",variant:\"m6CGN0c1a\",width:\"100%\"})})})]})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-e8eSn.framer-4dh2y1, .framer-e8eSn .framer-4dh2y1 { display: block; }\",\".framer-e8eSn.framer-1jgcywx { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 48px; height: min-content; justify-content: flex-start; overflow: visible; padding: 16px 4px 16px 4px; position: relative; width: 200px; }\",\".framer-e8eSn .framer-229wnw { flex: 1 0 0px; height: auto; overflow: visible; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-e8eSn .framer-zlss69 { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 16px); position: relative; width: 16px; }\",\".framer-e8eSn .framer-1ku5z74 { align-content: center; align-items: center; align-self: stretch; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: auto; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-e8eSn .framer-1gv8558-container, .framer-e8eSn .framer-hp145s-container { flex: none; height: auto; position: relative; width: auto; z-index: 1; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-e8eSn.framer-1jgcywx, .framer-e8eSn .framer-1ku5z74 { gap: 0px; } .framer-e8eSn.framer-1jgcywx > * { margin: 0px; margin-left: calc(48px / 2); margin-right: calc(48px / 2); } .framer-e8eSn.framer-1jgcywx > :first-child, .framer-e8eSn .framer-1ku5z74 > :first-child { margin-left: 0px; } .framer-e8eSn.framer-1jgcywx > :last-child, .framer-e8eSn .framer-1ku5z74 > :last-child { margin-right: 0px; } .framer-e8eSn .framer-1ku5z74 > * { margin: 0px; margin-left: calc(8px / 2); margin-right: calc(8px / 2); } }\",\".framer-e8eSn.framer-v-rjx21w.framer-1jgcywx { cursor: unset; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 53\n * @framerIntrinsicWidth 200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"NZfMI2NWA\":{\"layout\":[\"fixed\",\"auto\"]},\"DLrRrcEgb\":{\"layout\":[\"fixed\",\"auto\"]},\"HvNgYiFQS\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"vUdH30LGf\":\"onClick\",\"K0LT0h_gV\":\"title\",\"B_OfjITaX\":\"showBadges\",\"oaG9Chr4C\":\"showBadge\",\"BsCHs94Gy\":\"category\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerrTlTWfSvU=withCSS(Component,css,\"framer-e8eSn\");export default FramerrTlTWfSvU;FramerrTlTWfSvU.displayName=\"class / Video Item\";FramerrTlTWfSvU.defaultProps={height:53,width:200};addPropertyControls(FramerrTlTWfSvU,{variant:{options:[\"IohDfcPBy\",\"NZfMI2NWA\",\"DLrRrcEgb\"],optionTitles:[\"default\",\"active\",\"locked\"],title:\"Variant\",type:ControlType.Enum},vUdH30LGf:{title:\"On Click\",type:ControlType.EventHandler},K0LT0h_gV:{defaultValue:\"Comfy UI 설치하기 (10:23)\",displayTextArea:false,title:\"title\",type:ControlType.String},B_OfjITaX:{defaultValue:false,title:\"showBadges\",type:ControlType.Boolean},oaG9Chr4C:{defaultValue:false,title:\"showBadge\",type:ControlType.Boolean},BsCHs94Gy:{defaultValue:\"\",displayTextArea:false,placeholder:\"\",title:\"category\",type:ControlType.String}});addFonts(FramerrTlTWfSvU,[{explicitInter:true,fonts:[{family:\"Pretendard SemiBold\",source:\"custom\",url:\"https://framerusercontent.com/assets/DXCK3bs3vdiYSbHJOQav9W2nkwk.woff2\"}]},...ClassBadgeFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerrTlTWfSvU\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"NZfMI2NWA\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"DLrRrcEgb\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"HvNgYiFQS\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerVariables\":\"{\\\"vUdH30LGf\\\":\\\"onClick\\\",\\\"K0LT0h_gV\\\":\\\"title\\\",\\\"B_OfjITaX\\\":\\\"showBadges\\\",\\\"oaG9Chr4C\\\":\\\"showBadge\\\",\\\"BsCHs94Gy\\\":\\\"category\\\"}\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"53\",\"framerIntrinsicWidth\":\"200\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./rTlTWfSvU.map","// Generated by Framer (5bbf1f3)\nimport{fontStore}from\"framer\";fontStore.loadFonts([]);export const fonts=[{explicitInter:true,fonts:[]}];export const css=[\".framer-TEXV6 .framer-styles-preset-pjlu09:not(.rich-text-wrapper), .framer-TEXV6 .framer-styles-preset-pjlu09.rich-text-wrapper a { --framer-link-current-text-color: #111111; --framer-link-current-text-decoration: underline; --framer-link-hover-text-color: #0088ff; --framer-link-hover-text-decoration: underline; --framer-link-text-color: var(--token-7c9a8c52-ae10-4871-a89f-bc8d071de9aa, #005dfa); --framer-link-text-decoration: none; }\"];export const className=\"framer-TEXV6\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (861d57e)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,cx,getFontsFromSharedStyle,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/1PPf8Z5LxViZZGNUlf8W/ekChcq8DOCbOnMvXnsjx/Y9iy1zFI3.js\";const serializationHash=\"framer-grw6A\";const variantClassNames={hGQhNbWFT:\"framer-v-1n8mczs\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"hGQhNbWFT\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1n8mczs\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"hGQhNbWFT\",ref:refBinding,style:{...style},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\"},children:\"[중요 공지] Harbor School 전용 ComfyUI 라이트닝 템플릿 출시\"}),/*#__PURE__*/_jsxs(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-2gxw0f, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:[\"\\b설치, 모델 다운로등 복잡한 과정 없이 \",/*#__PURE__*/_jsx(motion.br,{}),\"한번에 강의에 포함된 내용을 따라오실 수 있습니다\"]}),/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-1iakedh, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:/*#__PURE__*/_jsx(Link,{href:\"https://lightning.ai/harborschool/studios/harbor-school-ai-comfyui\",motionChild:true,nodeId:\"nDLlFj8sx\",openInNewTab:true,relValues:[],scopeId:\"U_w7ouzJ4\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-pjlu09\",\"data-styles-preset\":\"Y9iy1zFI3\",children:\"→ 라이트닝 스튜디오 템플릿 바로가기\"})})})]}),className:\"framer-o499qk\",fonts:[\"CUSTOM;Pretendard Medium\"],layoutDependency:layoutDependency,layoutId:\"nDLlFj8sx\",style:{\"--extracted-1iakedh\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-2gxw0f\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\"},children:\"[이벤트] Nordy AI x Harbor School\"}),/*#__PURE__*/_jsxs(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-2gxw0f, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:[\"nordy.ai 마이페이지 쿠폰 창에 \",/*#__PURE__*/_jsx(motion.strong,{children:\"HARBOR-SCHOOL\"}),\" 를 입력하면 \",/*#__PURE__*/_jsx(motion.br,{}),\"15시간 (3만원 상당) GPU 무료 제공\"]})]}),className:\"framer-qhtvgo\",fonts:[\"CUSTOM;Pretendard Medium\"],layoutDependency:layoutDependency,layoutId:\"OJMXRjqzq\",style:{\"--extracted-2gxw0f\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-grw6A.framer-1f55drx, .framer-grw6A .framer-1f55drx { display: block; }\",\".framer-grw6A.framer-1n8mczs { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 32px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-grw6A .framer-o499qk, .framer-grw6A .framer-qhtvgo { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 256\n * @framerIntrinsicWidth 414\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerU_w7ouzJ4=withCSS(Component,css,\"framer-grw6A\");export default FramerU_w7ouzJ4;FramerU_w7ouzJ4.displayName=\"class / Info\";FramerU_w7ouzJ4.defaultProps={height:256,width:414};addFonts(FramerU_w7ouzJ4,[{explicitInter:true,fonts:[{family:\"Pretendard Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/epBtQURZXgL4OLYz60X1zhOh4o4.woff2\"}]},...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerU_w7ouzJ4\",\"slots\":[],\"annotations\":{\"framerAutoSizeImages\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"256\",\"framerIntrinsicWidth\":\"414\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./U_w7ouzJ4.map","// Generated by Framer (15813d8)\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,Floating,getFonts,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useOverlayState,useVariantState,withCSS,withFX}from\"framer\";import{AnimatePresence,LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import PaymentsPaymentForm from\"https://framerusercontent.com/modules/fC6tZRuwKF5gt2iNqU7K/tBuf6phxcbElwSjeCH2N/ctqoUUpVh.js\";import WebButton from\"https://framerusercontent.com/modules/mzDv8x1AG3iUry9rhWll/yTZYKS7L3gWdaKakQAGM/e26fWTkl8.js\";const WebButtonFonts=getFonts(WebButton);const PaymentsPaymentFormFonts=getFonts(PaymentsPaymentForm);const MotionDivWithFX=withFX(motion.div);const cycleOrder=[\"tcOsmc_jo\",\"gZgzbS5Cq\"];const serializationHash=\"framer-dunMK\";const variantClassNames={gZgzbS5Cq:\"framer-v-1z7eu4\",tcOsmc_jo:\"framer-v-jwlkf\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const transition2={damping:30,delay:0,mass:1,stiffness:400,type:\"spring\"};const animation={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition2,x:0,y:0};const animation1={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition2,x:0,y:0};const animation2={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0};const Overlay=({children,blockDocumentScrolling,enabled=true})=>{const[visible,setVisible]=useOverlayState({blockDocumentScrolling});return children({hide:()=>setVisible(false),show:()=>setVisible(true),toggle:()=>setVisible(!visible),visible:enabled&&visible});};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={Desktop:\"tcOsmc_jo\",Phone:\"gZgzbS5Cq\"};const getProps=({click,height,id,width,...props})=>{return{...props,Qb7DnJ8iN:click??props.Qb7DnJ8iN,variant:humanReadableVariantMap[props.variant]??props.variant??\"tcOsmc_jo\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,Qb7DnJ8iN,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"tcOsmc_jo\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const qdfjHAymA10lo0u3=({overlay,paginationInfo})=>activeVariantCallback(async(...args)=>{if(Qb7DnJ8iN){const res=await Qb7DnJ8iN(...args);if(res===false)return false;}overlay.show();});const ref1=React.useRef(null);const ref2=React.useRef(null);const ref3=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-jwlkf\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"tcOsmc_jo\",ref:ref??ref1,style:{...style},...addPropertyOverrides({gZgzbS5Cq:{\"data-framer-name\":\"Phone\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(Overlay,{blockDocumentScrolling:false,children:overlay=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:56,y:(componentViewport?.y||0)+(0+((componentViewport?.height||56)-0-56)/2),children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-m8mpso-container\",id:`${layoutId}-m8mpso`,layoutDependency:layoutDependency,layoutId:\"dSrX_dmuV-container\",ref:ref2,children:[/*#__PURE__*/_jsx(WebButton,{height:\"100%\",id:\"dSrX_dmuV\",layoutId:\"dSrX_dmuV\",qdfjHAymA:qdfjHAymA10lo0u3({overlay}),qGd_L3zY2:\"수강 신청하기\",sLwHAfjpJ:true,variant:\"IyQPoiN0q\",width:\"100%\"}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay.visible&&/*#__PURE__*/_jsx(Floating,{alignment:\"center\",anchorRef:ref2,className:cx(serializationHash,classNames,...sharedStyleClassNames),collisionDetection:true,collisionDetectionPadding:20,\"data-framer-portal-id\":`${layoutId}-m8mpso`,offsetX:0,offsetY:10,onDismiss:overlay.hide,placement:\"bottom\",portalSelector:\"#overlay\",safeArea:true,zIndex:11,children:/*#__PURE__*/_jsx(MotionDivWithFX,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation1,className:\"framer-sllywk\",exit:animation,initial:animation2,layoutDependency:layoutDependency,layoutId:\"SRTIlbIkS\",ref:ref3,role:\"dialog\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:10,borderBottomRightRadius:10,borderTopLeftRadius:10,borderTopRightRadius:10,boxShadow:\"0px 10px 20px 0px rgba(0,0,0,0.05)\"},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:537,width:\"292px\",y:(componentViewport?.y||0)+(0+((componentViewport?.height||56)-0-56)/2)+0+0,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-qzr0fv-container\",layoutDependency:layoutDependency,layoutId:\"SLZJIfx7y-container\",children:/*#__PURE__*/_jsx(PaymentsPaymentForm,{height:\"100%\",id:\"SLZJIfx7y\",layoutId:\"SLZJIfx7y\",style:{width:\"100%\"},variant:\"eVKiPLOAw\",width:\"100%\"})})})})})})]})})})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-dunMK.framer-10766ln, .framer-dunMK .framer-10766ln { display: block; }\",\".framer-dunMK.framer-jwlkf { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-dunMK .framer-m8mpso-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-dunMK .framer-sllywk { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; will-change: var(--framer-will-change-override, transform); }\",\".framer-dunMK .framer-qzr0fv-container { flex: none; height: auto; position: relative; width: 292px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-dunMK.framer-jwlkf, .framer-dunMK .framer-sllywk { gap: 0px; } .framer-dunMK.framer-jwlkf > *, .framer-dunMK .framer-sllywk > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-dunMK.framer-jwlkf > :first-child, .framer-dunMK .framer-sllywk > :first-child { margin-left: 0px; } .framer-dunMK.framer-jwlkf > :last-child, .framer-dunMK .framer-sllywk > :last-child { margin-right: 0px; } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 56\n * @framerIntrinsicWidth 148.5\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"gZgzbS5Cq\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"Qb7DnJ8iN\":\"click\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramergMV56Irc9=withCSS(Component,css,\"framer-dunMK\");export default FramergMV56Irc9;FramergMV56Irc9.displayName=\"payments / Payment Button\";FramergMV56Irc9.defaultProps={height:56,width:148.5};addPropertyControls(FramergMV56Irc9,{variant:{options:[\"tcOsmc_jo\",\"gZgzbS5Cq\"],optionTitles:[\"Desktop\",\"Phone\"],title:\"Variant\",type:ControlType.Enum},Qb7DnJ8iN:{title:\"Click\",type:ControlType.EventHandler}});addFonts(FramergMV56Irc9,[{explicitInter:true,fonts:[]},...WebButtonFonts,...PaymentsPaymentFormFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramergMV56Irc9\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"56\",\"framerIntrinsicWidth\":\"148.5\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"gZgzbS5Cq\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerVariables\":\"{\\\"Qb7DnJ8iN\\\":\\\"click\\\"}\",\"framerDisplayContentsDiv\":\"false\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (5bbf1f3)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,cx,getFontsFromSharedStyle,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/1PPf8Z5LxViZZGNUlf8W/ekChcq8DOCbOnMvXnsjx/Y9iy1zFI3.js\";const serializationHash=\"framer-hsAw6\";const variantClassNames={hkOi4v0eI:\"framer-v-19ejqhy\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Variants=motion.create(React.Fragment);const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"hkOi4v0eI\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-19ejqhy\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"hkOi4v0eI\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsxs(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-0ebb279a-44c9-4ca9-b5ee-9429bfef2737, rgb(37, 49, 60)))\"},children:[/*#__PURE__*/_jsx(motion.strong,{children:\"[온라인 Live / 3주 과정]\"}),/*#__PURE__*/_jsx(motion.strong,{children:/*#__PURE__*/_jsx(motion.br,{})}),/*#__PURE__*/_jsx(motion.strong,{children:\"진짜 광고 이미지를 만들면서 배우는 ComfyUI\"}),/*#__PURE__*/_jsx(motion.strong,{children:/*#__PURE__*/_jsx(motion.br,{})}),/*#__PURE__*/_jsx(motion.br,{}),/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-143mgqx, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:\"Live 기념 쿠폰 코드 : OPENKAKAO\"}),/*#__PURE__*/_jsx(motion.br,{}),/*#__PURE__*/_jsx(Link,{href:\"https://ai.harbor.school/courses/comfy-for-real-ads-live\",nodeId:\"m9iPTur51\",openInNewTab:true,smoothScroll:false,children:/*#__PURE__*/_jsxs(motion.a,{className:\"framer-styles-preset-pjlu09\",\"data-styles-preset\":\"Y9iy1zFI3\",children:[/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-158ds2i, var(--token-7c9a8c52-ae10-4871-a89f-bc8d071de9aa, rgb(0, 93, 250)))\"},children:\"→ 신청하기 \"}),/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-5bx7kw, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:\"(21만원 → 19만원)\"})]})})]})}),className:\"framer-kfhtan\",fonts:[\"CUSTOM;Pretendard Medium\"],layoutDependency:layoutDependency,layoutId:\"m9iPTur51\",style:{\"--extracted-143mgqx\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-158ds2i\":\"var(--token-7c9a8c52-ae10-4871-a89f-bc8d071de9aa, rgb(0, 93, 250))\",\"--extracted-5bx7kw\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-r6o4lv\":\"var(--token-0ebb279a-44c9-4ca9-b5ee-9429bfef2737, rgb(37, 49, 60))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsxs(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-0ebb279a-44c9-4ca9-b5ee-9429bfef2737, rgb(37, 49, 60)))\"},children:[/*#__PURE__*/_jsx(motion.strong,{children:\"[VOD 강의 / 18강 완성]\"}),/*#__PURE__*/_jsx(motion.strong,{children:/*#__PURE__*/_jsx(motion.br,{})}),/*#__PURE__*/_jsx(motion.strong,{children:\"진짜 광고 이미지를 만들면서 배우는 ComfyUI\"}),/*#__PURE__*/_jsx(motion.strong,{children:/*#__PURE__*/_jsx(motion.br,{})}),/*#__PURE__*/_jsx(motion.br,{}),/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-143mgqx, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:\"Live 기념 쿠폰 코드 : OPENKAKAO2\"}),/*#__PURE__*/_jsx(motion.br,{}),/*#__PURE__*/_jsx(Link,{href:\"https://ai.harbor.school/courses/comfy-for-real-ads\",nodeId:\"MVHmusnkc\",openInNewTab:true,smoothScroll:false,children:/*#__PURE__*/_jsxs(motion.a,{className:\"framer-styles-preset-pjlu09\",\"data-styles-preset\":\"Y9iy1zFI3\",children:[/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-158ds2i, var(--token-7c9a8c52-ae10-4871-a89f-bc8d071de9aa, rgb(0, 93, 250)))\"},children:\"→ 신청하기 \"}),/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-5bx7kw, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:\"(35만원 → 29만원)\"})]})})]})}),className:\"framer-1q2hi5z\",fonts:[\"CUSTOM;Pretendard Medium\"],layoutDependency:layoutDependency,layoutId:\"MVHmusnkc\",style:{\"--extracted-143mgqx\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-158ds2i\":\"var(--token-7c9a8c52-ae10-4871-a89f-bc8d071de9aa, rgb(0, 93, 250))\",\"--extracted-5bx7kw\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-r6o4lv\":\"var(--token-0ebb279a-44c9-4ca9-b5ee-9429bfef2737, rgb(37, 49, 60))\"},verticalAlignment:\"top\",withExternalLayout:true})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-hsAw6.framer-1vpqrr0, .framer-hsAw6 .framer-1vpqrr0 { display: block; }\",\".framer-hsAw6.framer-19ejqhy { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 60px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-hsAw6 .framer-kfhtan, .framer-hsAw6 .framer-1q2hi5z { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-hsAw6.framer-19ejqhy { gap: 0px; } .framer-hsAw6.framer-19ejqhy > * { margin: 0px; margin-bottom: calc(60px / 2); margin-top: calc(60px / 2); } .framer-hsAw6.framer-19ejqhy > :first-child { margin-top: 0px; } .framer-hsAw6.framer-19ejqhy > :last-child { margin-bottom: 0px; } }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 380\n * @framerIntrinsicWidth 290.5\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerJ_CUIzUcf=withCSS(Component,css,\"framer-hsAw6\");export default FramerJ_CUIzUcf;FramerJ_CUIzUcf.displayName=\"LiveEventInfo\";FramerJ_CUIzUcf.defaultProps={height:380,width:290.5};addFonts(FramerJ_CUIzUcf,[{explicitInter:true,fonts:[{family:\"Pretendard Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/epBtQURZXgL4OLYz60X1zhOh4o4.woff2\"}]},...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerJ_CUIzUcf\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"290.5\",\"framerIntrinsicHeight\":\"380\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./J_CUIzUcf.map","// src/designComponents/index.ts\nimport Spinner from \"https://framer.com/m/web-Spinner-IdTB.js\";\nimport MenuItem from \"https://framer.com/m/web-MenuItem-oSWT.js\";\nimport CourseCard from \"https://framer.com/m/web-Course-Card-oJCo.js\";\nimport Button from \"https://framer.com/m/web-Button-amAd.js\";\nimport CourseTitle from \"https://framer.com/m/class-Course-Title-s240.js\";\nimport VideoItem from \"https://framer.com/m/class-Video-Item-Qr97.js\";\nimport NordyInfo from \"https://framer.com/m/class-Info-ii1V.js\";\nimport PaymentButton from \"https://framer.com/m/payments-Payment-Button-oYzB.js\";\nimport LiveEventInfo from \"https://framer.com/m/LiveEventInfo-1uhR.js\";\n\nexport {\n  Spinner,\n  MenuItem,\n  CourseCard,\n  Button,\n  CourseTitle,\n  VideoItem,\n  NordyInfo,\n  PaymentButton,\n  LiveEventInfo\n};\n","import {\n  PaymentButton\n} from \"./chunk-SDKSBXQ2.mjs\";\n\n// src/payments/NeedPayment.tsx\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction NeedPayment() {\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      style: {\n        fontSize: 20,\n        display: \"flex\",\n        gap: 12,\n        flexDirection: \"column\",\n        alignItems: \"center\",\n        whiteSpace: \"nowrap\"\n      },\n      children: [\n        \"\\uAC15\\uC758 \\uAD6C\\uB9E4\\uAC00 \\uD544\\uC694\\uD569\\uB2C8\\uB2E4\",\n        /* @__PURE__ */ jsx(PaymentButton, {})\n      ]\n    }\n  );\n}\n\nexport {\n  NeedPayment\n};\n","// src/class/Arrow.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction Arrow({ className }) {\n  return /* @__PURE__ */ jsx(\n    \"svg\",\n    {\n      viewBox: \"0 0 24 24\",\n      strokeWidth: \"2\",\n      fill: \"none\",\n      xmlns: \"http://www.w3.org/2000/svg\",\n      color: \"#005DFA\",\n      className,\n      children: /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M6.00005 19L19 5.99996M19 5.99996V18.48M19 5.99996H6.52005\",\n          stroke: \"#005DFA\",\n          strokeWidth: \"2\",\n          strokeLinecap: \"round\",\n          strokeLinejoin: \"round\"\n        }\n      )\n    }\n  );\n}\n\nexport {\n  Arrow\n};\n","import {\n  __async,\n  __objRest,\n  __pow,\n  __spreadProps,\n  __spreadValues,\n  __superGet\n} from \"./chunk-JWK35I2R.mjs\";\n\n// node_modules/.pnpm/@mux+mux-player-react@2.9.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@mux/mux-player-react/dist/index.mjs\nimport y4, { useEffect as ue5 } from \"react\";\n\n// node_modules/.pnpm/mux-embed@5.2.1/node_modules/mux-embed/dist/mux.mjs\nvar $r = Object.create;\nvar ct = Object.defineProperty;\nvar Zr = Object.getOwnPropertyDescriptor;\nvar ei = Object.getOwnPropertyNames;\nvar ti = Object.getPrototypeOf;\nvar ri = Object.prototype.hasOwnProperty;\nvar ft = function(r10, e) {\n  return function() {\n    return r10 && (e = r10(r10 = 0)), e;\n  };\n};\nvar H = function(r10, e) {\n  return function() {\n    return e || r10((e = { exports: {} }).exports, e), e.exports;\n  };\n};\nvar ii = function(r10, e, t2, a2) {\n  if (e && typeof e == \"object\" || typeof e == \"function\") for (var i2 = ei(e), n2 = 0, o = i2.length, s; n2 < o; n2++) s = i2[n2], !ri.call(r10, s) && s !== t2 && ct(r10, s, { get: function(f) {\n    return e[f];\n  }.bind(null, s), enumerable: !(a2 = Zr(e, s)) || a2.enumerable });\n  return r10;\n};\nvar B = function(r10, e, t2) {\n  return t2 = r10 != null ? $r(ti(r10)) : {}, ii(e || !r10 || !r10.__esModule ? ct(t2, \"default\", { value: r10, enumerable: true }) : t2, r10);\n};\nvar J = H(function(za, ht2) {\n  var Te4;\n  typeof window != \"undefined\" ? Te4 = window : typeof global != \"undefined\" ? Te4 = global : typeof self != \"undefined\" ? Te4 = self : Te4 = {};\n  ht2.exports = Te4;\n});\nfunction C(r10) {\n  \"@swc/helpers - typeof\";\n  return r10 && typeof Symbol != \"undefined\" && r10.constructor === Symbol ? \"symbol\" : typeof r10;\n}\nvar ke = ft(function() {\n});\nvar gt = H(function(yt4, Ae4) {\n  ke();\n  (function(r10, e) {\n    \"use strict\";\n    typeof define == \"function\" && define.amd ? define(e) : typeof Ae4 == \"object\" && Ae4.exports ? Ae4.exports = e() : r10.log = e();\n  })(yt4, function() {\n    \"use strict\";\n    var r10 = function() {\n    }, e = \"undefined\", t2 = (typeof window == \"undefined\" ? \"undefined\" : C(window)) !== e && C(window.navigator) !== e && /Trident\\/|MSIE /.test(window.navigator.userAgent), a2 = [\"trace\", \"debug\", \"info\", \"warn\", \"error\"];\n    function i2(l, w2) {\n      var D3 = l[w2];\n      if (typeof D3.bind == \"function\") return D3.bind(l);\n      try {\n        return Function.prototype.bind.call(D3, l);\n      } catch (p3) {\n        return function() {\n          return Function.prototype.apply.apply(D3, [l, arguments]);\n        };\n      }\n    }\n    function n2() {\n      console.log && (console.log.apply ? console.log.apply(console, arguments) : Function.prototype.apply.apply(console.log, [console, arguments])), console.trace && console.trace();\n    }\n    function o(l) {\n      return l === \"debug\" && (l = \"log\"), (typeof console == \"undefined\" ? \"undefined\" : C(console)) === e ? false : l === \"trace\" && t2 ? n2 : console[l] !== void 0 ? i2(console, l) : console.log !== void 0 ? i2(console, \"log\") : r10;\n    }\n    function s(l, w2) {\n      for (var D3 = 0; D3 < a2.length; D3++) {\n        var p3 = a2[D3];\n        this[p3] = D3 < l ? r10 : this.methodFactory(p3, l, w2);\n      }\n      this.log = this.debug;\n    }\n    function f(l, w2, D3) {\n      return function() {\n        (typeof console == \"undefined\" ? \"undefined\" : C(console)) !== e && (s.call(this, w2, D3), this[l].apply(this, arguments));\n      };\n    }\n    function h3(l, w2, D3) {\n      return o(l) || f.apply(this, arguments);\n    }\n    function T3(l, w2, D3) {\n      var p3 = this, _3;\n      w2 = w2 == null ? \"WARN\" : w2;\n      var c4 = \"loglevel\";\n      typeof l == \"string\" ? c4 += \":\" + l : (typeof l == \"undefined\" ? \"undefined\" : C(l)) === \"symbol\" && (c4 = void 0);\n      function u3(m3) {\n        var q3 = (a2[m3] || \"silent\").toUpperCase();\n        if (!((typeof window == \"undefined\" ? \"undefined\" : C(window)) === e || !c4)) {\n          try {\n            window.localStorage[c4] = q3;\n            return;\n          } catch (P2) {\n          }\n          try {\n            window.document.cookie = encodeURIComponent(c4) + \"=\" + q3 + \";\";\n          } catch (P2) {\n          }\n        }\n      }\n      function y5() {\n        var m3;\n        if (!((typeof window == \"undefined\" ? \"undefined\" : C(window)) === e || !c4)) {\n          try {\n            m3 = window.localStorage[c4];\n          } catch (L2) {\n          }\n          if ((typeof m3 == \"undefined\" ? \"undefined\" : C(m3)) === e) try {\n            var q3 = window.document.cookie, P2 = q3.indexOf(encodeURIComponent(c4) + \"=\");\n            P2 !== -1 && (m3 = /^([^;]+)/.exec(q3.slice(P2))[1]);\n          } catch (L2) {\n          }\n          return p3.levels[m3] === void 0 && (m3 = void 0), m3;\n        }\n      }\n      function E4() {\n        if (!((typeof window == \"undefined\" ? \"undefined\" : C(window)) === e || !c4)) {\n          try {\n            window.localStorage.removeItem(c4);\n            return;\n          } catch (m3) {\n          }\n          try {\n            window.document.cookie = encodeURIComponent(c4) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n          } catch (m3) {\n          }\n        }\n      }\n      p3.name = l, p3.levels = { TRACE: 0, DEBUG: 1, INFO: 2, WARN: 3, ERROR: 4, SILENT: 5 }, p3.methodFactory = D3 || h3, p3.getLevel = function() {\n        return _3;\n      }, p3.setLevel = function(m3, q3) {\n        if (typeof m3 == \"string\" && p3.levels[m3.toUpperCase()] !== void 0 && (m3 = p3.levels[m3.toUpperCase()]), typeof m3 == \"number\" && m3 >= 0 && m3 <= p3.levels.SILENT) {\n          if (_3 = m3, q3 !== false && u3(m3), s.call(p3, m3, l), (typeof console == \"undefined\" ? \"undefined\" : C(console)) === e && m3 < p3.levels.SILENT) return \"No console available for logging\";\n        } else throw \"log.setLevel() called with invalid level: \" + m3;\n      }, p3.setDefaultLevel = function(m3) {\n        w2 = m3, y5() || p3.setLevel(m3, false);\n      }, p3.resetLevel = function() {\n        p3.setLevel(w2, false), E4();\n      }, p3.enableAll = function(m3) {\n        p3.setLevel(p3.levels.TRACE, m3);\n      }, p3.disableAll = function(m3) {\n        p3.setLevel(p3.levels.SILENT, m3);\n      };\n      var k3 = y5();\n      k3 == null && (k3 = w2), p3.setLevel(k3, false);\n    }\n    var g2 = new T3(), x4 = {};\n    g2.getLogger = function(w2) {\n      if ((typeof w2 == \"undefined\" ? \"undefined\" : C(w2)) !== \"symbol\" && typeof w2 != \"string\" || w2 === \"\") throw new TypeError(\"You must supply a name when creating a logger.\");\n      var D3 = x4[w2];\n      return D3 || (D3 = x4[w2] = new T3(w2, g2.getLevel(), g2.methodFactory)), D3;\n    };\n    var v4 = (typeof window == \"undefined\" ? \"undefined\" : C(window)) !== e ? window.log : void 0;\n    return g2.noConflict = function() {\n      return (typeof window == \"undefined\" ? \"undefined\" : C(window)) !== e && window.log === g2 && (window.log = v4), g2;\n    }, g2.getLoggers = function() {\n      return x4;\n    }, g2.default = g2, g2;\n  });\n});\nfunction U(r10, e) {\n  return e != null && typeof Symbol != \"undefined\" && e[Symbol.hasInstance] ? !!e[Symbol.hasInstance](r10) : U(r10, e);\n}\nvar Z = ft(function() {\n  Z();\n});\nvar Xt = H(function(Ge3) {\n  \"use strict\";\n  var Ai = Object.prototype.hasOwnProperty, Oi;\n  function Kt3(r10) {\n    try {\n      return decodeURIComponent(r10.replace(/\\+/g, \" \"));\n    } catch (e) {\n      return null;\n    }\n  }\n  function Yt3(r10) {\n    try {\n      return encodeURIComponent(r10);\n    } catch (e) {\n      return null;\n    }\n  }\n  function Ii(r10) {\n    for (var e = /([^=?#&]+)=?([^&]*)/g, t2 = {}, a2; a2 = e.exec(r10); ) {\n      var i2 = Kt3(a2[1]), n2 = Kt3(a2[2]);\n      i2 === null || n2 === null || i2 in t2 || (t2[i2] = n2);\n    }\n    return t2;\n  }\n  function Li(r10, e) {\n    e = e || \"\";\n    var t2 = [], a2, i2;\n    typeof e != \"string\" && (e = \"?\");\n    for (i2 in r10) if (Ai.call(r10, i2)) {\n      if (a2 = r10[i2], !a2 && (a2 === null || a2 === Oi || isNaN(a2)) && (a2 = \"\"), i2 = Yt3(i2), a2 = Yt3(a2), i2 === null || a2 === null) continue;\n      t2.push(i2 + \"=\" + a2);\n    }\n    return t2.length ? e + t2.join(\"&\") : \"\";\n  }\n  Ge3.stringify = Li;\n  Ge3.parse = Ii;\n});\nvar er = H(function($t3, Zt4) {\n  \"use strict\";\n  (function(r10) {\n    var e = false;\n    if (typeof define == \"function\" && define.amd && (define(r10), e = true), typeof $t3 == \"object\" && (Zt4.exports = r10(), e = true), !e) {\n      var t2 = window.Cookies, a2 = window.Cookies = r10();\n      a2.noConflict = function() {\n        return window.Cookies = t2, a2;\n      };\n    }\n  })(function() {\n    var r10 = function() {\n      for (var a2 = 0, i2 = {}; a2 < arguments.length; a2++) {\n        var n2 = arguments[a2];\n        for (var o in n2) i2[o] = n2[o];\n      }\n      return i2;\n    };\n    function e(t2) {\n      function a2(i2, n2, o) {\n        var s;\n        if (typeof document != \"undefined\") {\n          if (arguments.length > 1) {\n            if (o = r10({ path: \"/\" }, a2.defaults, o), typeof o.expires == \"number\") {\n              var f = /* @__PURE__ */ new Date();\n              f.setMilliseconds(f.getMilliseconds() + o.expires * 864e5), o.expires = f;\n            }\n            try {\n              s = JSON.stringify(n2), /^[\\{\\[]/.test(s) && (n2 = s);\n            } catch (w2) {\n            }\n            return t2.write ? n2 = t2.write(n2, i2) : n2 = encodeURIComponent(String(n2)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent), i2 = encodeURIComponent(String(i2)), i2 = i2.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent), i2 = i2.replace(/[\\(\\)]/g, escape), document.cookie = [i2, \"=\", n2, o.expires ? \"; expires=\" + o.expires.toUTCString() : \"\", o.path ? \"; path=\" + o.path : \"\", o.domain ? \"; domain=\" + o.domain : \"\", o.secure ? \"; secure\" : \"\"].join(\"\");\n          }\n          i2 || (s = {});\n          for (var h3 = document.cookie ? document.cookie.split(\"; \") : [], T3 = /(%[0-9A-Z]{2})+/g, g2 = 0; g2 < h3.length; g2++) {\n            var x4 = h3[g2].split(\"=\"), v4 = x4.slice(1).join(\"=\");\n            v4.charAt(0) === '\"' && (v4 = v4.slice(1, -1));\n            try {\n              var l = x4[0].replace(T3, decodeURIComponent);\n              if (v4 = t2.read ? t2.read(v4, l) : t2(v4, l) || v4.replace(T3, decodeURIComponent), this.json) try {\n                v4 = JSON.parse(v4);\n              } catch (w2) {\n              }\n              if (i2 === l) {\n                s = v4;\n                break;\n              }\n              i2 || (s[l] = v4);\n            } catch (w2) {\n            }\n          }\n          return s;\n        }\n      }\n      return a2.set = a2, a2.get = function(i2) {\n        return a2.call(a2, i2);\n      }, a2.getJSON = function() {\n        return a2.apply({ json: true }, [].slice.call(arguments));\n      }, a2.defaults = {}, a2.remove = function(i2, n2) {\n        a2(i2, \"\", r10(n2, { expires: -1 }));\n      }, a2.withConverter = e, a2;\n    }\n    return e(function() {\n    });\n  });\n});\nvar Ke = H(function(du, gr) {\n  var yr = Array.prototype.slice;\n  gr.exports = $i;\n  function $i(r10, e) {\n    for ((\"length\" in r10) || (r10 = [r10]), r10 = yr.call(r10); r10.length; ) {\n      var t2 = r10.shift(), a2 = e(t2);\n      if (a2) return a2;\n      t2.childNodes && t2.childNodes.length && (r10 = yr.call(t2.childNodes).concat(r10));\n    }\n  }\n});\nvar wr = H(function(cu, br) {\n  Z();\n  br.exports = pe4;\n  function pe4(r10, e) {\n    if (!U(this, pe4)) return new pe4(r10, e);\n    this.data = r10, this.nodeValue = r10, this.length = r10.length, this.ownerDocument = e || null;\n  }\n  pe4.prototype.nodeType = 8;\n  pe4.prototype.nodeName = \"#comment\";\n  pe4.prototype.toString = function() {\n    return \"[object Comment]\";\n  };\n});\nvar Er = H(function(_u, Tr) {\n  Z();\n  Tr.exports = re5;\n  function re5(r10, e) {\n    if (!U(this, re5)) return new re5(r10);\n    this.data = r10 || \"\", this.length = this.data.length, this.ownerDocument = e || null;\n  }\n  re5.prototype.type = \"DOMTextNode\";\n  re5.prototype.nodeType = 3;\n  re5.prototype.nodeName = \"#text\";\n  re5.prototype.toString = function() {\n    return this.data;\n  };\n  re5.prototype.replaceData = function(e, t2, a2) {\n    var i2 = this.data, n2 = i2.substring(0, e), o = i2.substring(e + t2, i2.length);\n    this.data = n2 + a2 + o, this.length = this.data.length;\n  };\n});\nvar Ye = H(function(pu, kr) {\n  kr.exports = Zi;\n  function Zi(r10) {\n    var e = this, t2 = r10.type;\n    r10.target || (r10.target = e), e.listeners || (e.listeners = {});\n    var a2 = e.listeners[t2];\n    if (a2) return a2.forEach(function(i2) {\n      r10.currentTarget = e, typeof i2 == \"function\" ? i2(r10) : i2.handleEvent(r10);\n    });\n    e.parentNode && e.parentNode.dispatchEvent(r10);\n  }\n});\nvar Xe = H(function(vu, xr) {\n  xr.exports = ea;\n  function ea(r10, e) {\n    var t2 = this;\n    t2.listeners || (t2.listeners = {}), t2.listeners[r10] || (t2.listeners[r10] = []), t2.listeners[r10].indexOf(e) === -1 && t2.listeners[r10].push(e);\n  }\n});\nvar $e = H(function(mu, Dr) {\n  Dr.exports = ta2;\n  function ta2(r10, e) {\n    var t2 = this;\n    if (t2.listeners && t2.listeners[r10]) {\n      var a2 = t2.listeners[r10], i2 = a2.indexOf(e);\n      i2 !== -1 && a2.splice(i2, 1);\n    }\n  }\n});\nvar Ar = H(function(yu, qr) {\n  ke();\n  qr.exports = Sr;\n  var ra2 = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"menuitem\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"];\n  function Sr(r10) {\n    switch (r10.nodeType) {\n      case 3:\n        return Ze3(r10.data);\n      case 8:\n        return \"<!--\" + r10.data + \"-->\";\n      default:\n        return ia2(r10);\n    }\n  }\n  function ia2(r10) {\n    var e = [], t2 = r10.tagName;\n    return r10.namespaceURI === \"http://www.w3.org/1999/xhtml\" && (t2 = t2.toLowerCase()), e.push(\"<\" + t2 + sa2(r10) + oa2(r10)), ra2.indexOf(t2) > -1 ? e.push(\" />\") : (e.push(\">\"), r10.childNodes.length ? e.push.apply(e, r10.childNodes.map(Sr)) : r10.textContent || r10.innerText ? e.push(Ze3(r10.textContent || r10.innerText)) : r10.innerHTML && e.push(r10.innerHTML), e.push(\"</\" + t2 + \">\")), e.join(\"\");\n  }\n  function aa(r10, e) {\n    var t2 = C(r10[e]);\n    return e === \"style\" && Object.keys(r10.style).length > 0 ? true : r10.hasOwnProperty(e) && (t2 === \"string\" || t2 === \"boolean\" || t2 === \"number\") && e !== \"nodeName\" && e !== \"className\" && e !== \"tagName\" && e !== \"textContent\" && e !== \"innerText\" && e !== \"namespaceURI\" && e !== \"innerHTML\";\n  }\n  function na2(r10) {\n    if (typeof r10 == \"string\") return r10;\n    var e = \"\";\n    return Object.keys(r10).forEach(function(t2) {\n      var a2 = r10[t2];\n      t2 = t2.replace(/[A-Z]/g, function(i2) {\n        return \"-\" + i2.toLowerCase();\n      }), e += t2 + \":\" + a2 + \";\";\n    }), e;\n  }\n  function oa2(r10) {\n    var e = r10.dataset, t2 = [];\n    for (var a2 in e) t2.push({ name: \"data-\" + a2, value: e[a2] });\n    return t2.length ? Rr(t2) : \"\";\n  }\n  function Rr(r10) {\n    var e = [];\n    return r10.forEach(function(t2) {\n      var a2 = t2.name, i2 = t2.value;\n      a2 === \"style\" && (i2 = na2(i2)), e.push(a2 + '=\"' + ua2(i2) + '\"');\n    }), e.length ? \" \" + e.join(\" \") : \"\";\n  }\n  function sa2(r10) {\n    var e = [];\n    for (var t2 in r10) aa(r10, t2) && e.push({ name: t2, value: r10[t2] });\n    for (var a2 in r10._attributes) for (var i2 in r10._attributes[a2]) {\n      var n2 = r10._attributes[a2][i2], o = (n2.prefix ? n2.prefix + \":\" : \"\") + i2;\n      e.push({ name: o, value: n2.value });\n    }\n    return r10.className && e.push({ name: \"class\", value: r10.className }), e.length ? Rr(e) : \"\";\n  }\n  function Ze3(r10) {\n    var e = \"\";\n    return typeof r10 == \"string\" ? e = r10 : r10 && (e = r10.toString()), e.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n  }\n  function ua2(r10) {\n    return Ze3(r10).replace(/\"/g, \"&quot;\");\n  }\n});\nvar tt = H(function(bu, Ir) {\n  Z();\n  var et3 = Ke(), da2 = Ye(), la2 = Xe(), ca = $e(), fa2 = Ar(), Or = \"http://www.w3.org/1999/xhtml\";\n  Ir.exports = N3;\n  function N3(r10, e, t2) {\n    if (!U(this, N3)) return new N3(r10);\n    var a2 = t2 === void 0 ? Or : t2 || null;\n    this.tagName = a2 === Or ? String(r10).toUpperCase() : r10, this.nodeName = this.tagName, this.className = \"\", this.dataset = {}, this.childNodes = [], this.parentNode = null, this.style = {}, this.ownerDocument = e || null, this.namespaceURI = a2, this._attributes = {}, this.tagName === \"INPUT\" && (this.type = \"text\");\n  }\n  N3.prototype.type = \"DOMElement\";\n  N3.prototype.nodeType = 1;\n  N3.prototype.appendChild = function(e) {\n    return e.parentNode && e.parentNode.removeChild(e), this.childNodes.push(e), e.parentNode = this, e;\n  };\n  N3.prototype.replaceChild = function(e, t2) {\n    e.parentNode && e.parentNode.removeChild(e);\n    var a2 = this.childNodes.indexOf(t2);\n    return t2.parentNode = null, this.childNodes[a2] = e, e.parentNode = this, t2;\n  };\n  N3.prototype.removeChild = function(e) {\n    var t2 = this.childNodes.indexOf(e);\n    return this.childNodes.splice(t2, 1), e.parentNode = null, e;\n  };\n  N3.prototype.insertBefore = function(e, t2) {\n    e.parentNode && e.parentNode.removeChild(e);\n    var a2 = t2 == null ? -1 : this.childNodes.indexOf(t2);\n    return a2 > -1 ? this.childNodes.splice(a2, 0, e) : this.childNodes.push(e), e.parentNode = this, e;\n  };\n  N3.prototype.setAttributeNS = function(e, t2, a2) {\n    var i2 = null, n2 = t2, o = t2.indexOf(\":\");\n    if (o > -1 && (i2 = t2.substr(0, o), n2 = t2.substr(o + 1)), this.tagName === \"INPUT\" && t2 === \"type\") this.type = a2;\n    else {\n      var s = this._attributes[e] || (this._attributes[e] = {});\n      s[n2] = { value: a2, prefix: i2 };\n    }\n  };\n  N3.prototype.getAttributeNS = function(e, t2) {\n    var a2 = this._attributes[e], i2 = a2 && a2[t2] && a2[t2].value;\n    return this.tagName === \"INPUT\" && t2 === \"type\" ? this.type : typeof i2 != \"string\" ? null : i2;\n  };\n  N3.prototype.removeAttributeNS = function(e, t2) {\n    var a2 = this._attributes[e];\n    a2 && delete a2[t2];\n  };\n  N3.prototype.hasAttributeNS = function(e, t2) {\n    var a2 = this._attributes[e];\n    return !!a2 && t2 in a2;\n  };\n  N3.prototype.setAttribute = function(e, t2) {\n    return this.setAttributeNS(null, e, t2);\n  };\n  N3.prototype.getAttribute = function(e) {\n    return this.getAttributeNS(null, e);\n  };\n  N3.prototype.removeAttribute = function(e) {\n    return this.removeAttributeNS(null, e);\n  };\n  N3.prototype.hasAttribute = function(e) {\n    return this.hasAttributeNS(null, e);\n  };\n  N3.prototype.removeEventListener = ca;\n  N3.prototype.addEventListener = la2;\n  N3.prototype.dispatchEvent = da2;\n  N3.prototype.focus = function() {\n  };\n  N3.prototype.toString = function() {\n    return fa2(this);\n  };\n  N3.prototype.getElementsByClassName = function(e) {\n    var t2 = e.split(\" \"), a2 = [];\n    return et3(this, function(i2) {\n      if (i2.nodeType === 1) {\n        var n2 = i2.className || \"\", o = n2.split(\" \");\n        t2.every(function(s) {\n          return o.indexOf(s) !== -1;\n        }) && a2.push(i2);\n      }\n    }), a2;\n  };\n  N3.prototype.getElementsByTagName = function(e) {\n    e = e.toLowerCase();\n    var t2 = [];\n    return et3(this.childNodes, function(a2) {\n      a2.nodeType === 1 && (e === \"*\" || a2.tagName.toLowerCase() === e) && t2.push(a2);\n    }), t2;\n  };\n  N3.prototype.contains = function(e) {\n    return et3(this, function(t2) {\n      return e === t2;\n    }) || false;\n  };\n});\nvar Nr = H(function(Tu, Lr) {\n  Z();\n  var rt3 = tt();\n  Lr.exports = z2;\n  function z2(r10) {\n    if (!U(this, z2)) return new z2();\n    this.childNodes = [], this.parentNode = null, this.ownerDocument = r10 || null;\n  }\n  z2.prototype.type = \"DocumentFragment\";\n  z2.prototype.nodeType = 11;\n  z2.prototype.nodeName = \"#document-fragment\";\n  z2.prototype.appendChild = rt3.prototype.appendChild;\n  z2.prototype.replaceChild = rt3.prototype.replaceChild;\n  z2.prototype.removeChild = rt3.prototype.removeChild;\n  z2.prototype.toString = function() {\n    return this.childNodes.map(function(e) {\n      return String(e);\n    }).join(\"\");\n  };\n});\nvar Cr = H(function(Eu, Pr) {\n  Pr.exports = it2;\n  function it2(r10) {\n  }\n  it2.prototype.initEvent = function(e, t2, a2) {\n    this.type = e, this.bubbles = t2, this.cancelable = a2;\n  };\n  it2.prototype.preventDefault = function() {\n  };\n});\nvar Hr = H(function(xu, Mr) {\n  Z();\n  var _a3 = Ke(), pa2 = wr(), va = Er(), Se3 = tt(), ma2 = Nr(), ha2 = Cr(), ya = Ye(), ga2 = Xe(), ba2 = $e();\n  Mr.exports = He3;\n  function He3() {\n    if (!U(this, He3)) return new He3();\n    this.head = this.createElement(\"head\"), this.body = this.createElement(\"body\"), this.documentElement = this.createElement(\"html\"), this.documentElement.appendChild(this.head), this.documentElement.appendChild(this.body), this.childNodes = [this.documentElement], this.nodeType = 9;\n  }\n  var V4 = He3.prototype;\n  V4.createTextNode = function(e) {\n    return new va(e, this);\n  };\n  V4.createElementNS = function(e, t2) {\n    var a2 = e === null ? null : String(e);\n    return new Se3(t2, this, a2);\n  };\n  V4.createElement = function(e) {\n    return new Se3(e, this);\n  };\n  V4.createDocumentFragment = function() {\n    return new ma2(this);\n  };\n  V4.createEvent = function(e) {\n    return new ha2(e);\n  };\n  V4.createComment = function(e) {\n    return new pa2(e, this);\n  };\n  V4.getElementById = function(e) {\n    e = String(e);\n    var t2 = _a3(this.childNodes, function(a2) {\n      if (String(a2.id) === e) return a2;\n    });\n    return t2 || null;\n  };\n  V4.getElementsByClassName = Se3.prototype.getElementsByClassName;\n  V4.getElementsByTagName = Se3.prototype.getElementsByTagName;\n  V4.contains = Se3.prototype.contains;\n  V4.removeEventListener = ba2;\n  V4.addEventListener = ga2;\n  V4.dispatchEvent = ya;\n});\nvar Ur = H(function(Du, Br) {\n  var wa2 = Hr();\n  Br.exports = new wa2();\n});\nvar Wr = H(function(Su, Vr) {\n  var Fr = typeof global != \"undefined\" ? global : typeof window != \"undefined\" ? window : {}, Ta = Ur(), Re4;\n  typeof document != \"undefined\" ? Re4 = document : (Re4 = Fr[\"__GLOBAL_DOCUMENT_CACHE@4\"], Re4 || (Re4 = Fr[\"__GLOBAL_DOCUMENT_CACHE@4\"] = Ta));\n  Vr.exports = Re4;\n});\nfunction _t(r10) {\n  if (Array.isArray(r10)) return r10;\n}\nfunction pt(r10, e) {\n  var t2 = r10 == null ? null : typeof Symbol != \"undefined\" && r10[Symbol.iterator] || r10[\"@@iterator\"];\n  if (t2 != null) {\n    var a2 = [], i2 = true, n2 = false, o, s;\n    try {\n      for (t2 = t2.call(r10); !(i2 = (o = t2.next()).done) && (a2.push(o.value), !(e && a2.length === e)); i2 = true) ;\n    } catch (f) {\n      n2 = true, s = f;\n    } finally {\n      try {\n        !i2 && t2.return != null && t2.return();\n      } finally {\n        if (n2) throw s;\n      }\n    }\n    return a2;\n  }\n}\nfunction vt() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction We(r10, e) {\n  (e == null || e > r10.length) && (e = r10.length);\n  for (var t2 = 0, a2 = new Array(e); t2 < e; t2++) a2[t2] = r10[t2];\n  return a2;\n}\nfunction mt(r10, e) {\n  if (r10) {\n    if (typeof r10 == \"string\") return We(r10, e);\n    var t2 = Object.prototype.toString.call(r10).slice(8, -1);\n    if (t2 === \"Object\" && r10.constructor && (t2 = r10.constructor.name), t2 === \"Map\" || t2 === \"Set\") return Array.from(t2);\n    if (t2 === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t2)) return We(r10, e);\n  }\n}\nfunction j(r10, e) {\n  return _t(r10) || pt(r10, e) || mt(r10, e) || vt();\n}\nvar ye = B(J());\nvar X = function() {\n  return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(e) {\n    var t2 = Math.random() * 16 | 0, a2 = e === \"x\" ? t2 : t2 & 3 | 8;\n    return a2.toString(16);\n  });\n};\nvar qe = function() {\n  return (\"000000\" + (Math.random() * Math.pow(36, 6) << 0).toString(36)).slice(-6);\n};\nvar $ = function(e) {\n  if (e && typeof e.nodeName != \"undefined\") return e.muxId || (e.muxId = qe()), e.muxId;\n  var t2;\n  try {\n    t2 = document.querySelector(e);\n  } catch (a2) {\n  }\n  return t2 && !t2.muxId && (t2.muxId = e), (t2 == null ? void 0 : t2.muxId) || e;\n};\nvar Ee = function(e) {\n  var t2;\n  e && typeof e.nodeName != \"undefined\" ? (t2 = e, e = $(t2)) : t2 = document.querySelector(e);\n  var a2 = t2 && t2.nodeName ? t2.nodeName.toLowerCase() : \"\";\n  return [t2, e, a2];\n};\nvar ue = B(gt());\nvar ai = ue.default.methodFactory;\nue.default.methodFactory = function(r10, e, t2) {\n  var a2 = ai(r10, e, t2);\n  return function() {\n    for (var i2 = [\"[mux]\"], n2 = 0; n2 < arguments.length; n2++) i2.push(arguments[n2]);\n    a2.apply(void 0, i2);\n  };\n};\nue.default.setLevel(ue.default.getLevel());\nvar I = ue.default;\nvar Oe = B(J());\nfunction de() {\n  var r10 = Oe.default.doNotTrack || Oe.default.navigator && Oe.default.navigator.doNotTrack;\n  return r10 === \"1\";\n}\nvar bt = B(J());\nvar ni = { now: function() {\n  var r10 = bt.default.performance, e = r10 && r10.timing, t2 = e && e.navigationStart, a2 = typeof t2 == \"number\" && typeof r10.now == \"function\" ? t2 + r10.now() : Date.now();\n  return Math.round(a2);\n} };\nvar A = ni;\nfunction b(r10) {\n  if (r10 === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return r10;\n}\nZ();\nfunction S(r10, e) {\n  if (!U(r10, e)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction wt(r10, e) {\n  for (var t2 = 0; t2 < e.length; t2++) {\n    var a2 = e[t2];\n    a2.enumerable = a2.enumerable || false, a2.configurable = true, \"value\" in a2 && (a2.writable = true), Object.defineProperty(r10, a2.key, a2);\n  }\n}\nfunction M(r10, e, t2) {\n  return e && wt(r10.prototype, e), t2 && wt(r10, t2), r10;\n}\nfunction d(r10, e, t2) {\n  return e in r10 ? Object.defineProperty(r10, e, { value: t2, enumerable: true, configurable: true, writable: true }) : r10[e] = t2, r10;\n}\nfunction Ie(r10, e) {\n  return Ie = Object.setPrototypeOf || function(a2, i2) {\n    return a2.__proto__ = i2, a2;\n  }, Ie(r10, e);\n}\nfunction Tt(r10, e) {\n  if (typeof e != \"function\" && e !== null) throw new TypeError(\"Super expression must either be null or a function\");\n  r10.prototype = Object.create(e && e.prototype, { constructor: { value: r10, writable: true, configurable: true } }), e && Ie(r10, e);\n}\nfunction xe(r10) {\n  return xe = Object.setPrototypeOf ? Object.getPrototypeOf : function(t2) {\n    return t2.__proto__ || Object.getPrototypeOf(t2);\n  }, xe(r10);\n}\nfunction Et() {\n  if (typeof Reflect == \"undefined\" || !Reflect.construct || Reflect.construct.sham) return false;\n  if (typeof Proxy == \"function\") return true;\n  try {\n    return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {\n    })), true;\n  } catch (r10) {\n    return false;\n  }\n}\nke();\nfunction kt(r10, e) {\n  return e && (C(e) === \"object\" || typeof e == \"function\") ? e : b(r10);\n}\nfunction xt(r10) {\n  var e = Et();\n  return function() {\n    var a2 = xe(r10), i2;\n    if (e) {\n      var n2 = xe(this).constructor;\n      i2 = Reflect.construct(a2, arguments, n2);\n    } else i2 = a2.apply(this, arguments);\n    return kt(this, i2);\n  };\n}\nvar F = function(r10) {\n  return ee(r10)[0];\n};\nvar ee = function(r10) {\n  if (typeof r10 != \"string\" || r10 === \"\") return [\"localhost\"];\n  var e = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/, t2 = r10.match(e) || [], a2 = t2[4], i2;\n  return a2 && (i2 = (a2.match(/[^\\.]+\\.[^\\.]+$/) || [])[0]), [a2, i2];\n};\nvar Le = B(J());\nvar oi = { exists: function() {\n  var r10 = Le.default.performance, e = r10 && r10.timing;\n  return e !== void 0;\n}, domContentLoadedEventEnd: function() {\n  var r10 = Le.default.performance, e = r10 && r10.timing;\n  return e && e.domContentLoadedEventEnd;\n}, navigationStart: function() {\n  var r10 = Le.default.performance, e = r10 && r10.timing;\n  return e && e.navigationStart;\n} };\nvar le = oi;\nfunction O(r10, e, t2) {\n  t2 = t2 === void 0 ? 1 : t2, r10[e] = r10[e] || 0, r10[e] += t2;\n}\nfunction ne(r10) {\n  for (var e = 1; e < arguments.length; e++) {\n    var t2 = arguments[e] != null ? arguments[e] : {}, a2 = Object.keys(t2);\n    typeof Object.getOwnPropertySymbols == \"function\" && (a2 = a2.concat(Object.getOwnPropertySymbols(t2).filter(function(i2) {\n      return Object.getOwnPropertyDescriptor(t2, i2).enumerable;\n    }))), a2.forEach(function(i2) {\n      d(r10, i2, t2[i2]);\n    });\n  }\n  return r10;\n}\nfunction si(r10, e) {\n  var t2 = Object.keys(r10);\n  if (Object.getOwnPropertySymbols) {\n    var a2 = Object.getOwnPropertySymbols(r10);\n    e && (a2 = a2.filter(function(i2) {\n      return Object.getOwnPropertyDescriptor(r10, i2).enumerable;\n    })), t2.push.apply(t2, a2);\n  }\n  return t2;\n}\nfunction ce(r10, e) {\n  return e = e != null ? e : {}, Object.getOwnPropertyDescriptors ? Object.defineProperties(r10, Object.getOwnPropertyDescriptors(e)) : si(Object(e)).forEach(function(t2) {\n    Object.defineProperty(r10, t2, Object.getOwnPropertyDescriptor(e, t2));\n  }), r10;\n}\nvar ui = [\"x-cdn\", \"content-type\"];\nvar Dt = [\"x-request-id\", \"cf-ray\", \"x-amz-cf-id\", \"x-akamai-request-id\"];\nvar di = ui.concat(Dt);\nfunction fe(r10) {\n  r10 = r10 || \"\";\n  var e = {}, t2 = r10.trim().split(/[\\r\\n]+/);\n  return t2.forEach(function(a2) {\n    if (a2) {\n      var i2 = a2.split(\": \"), n2 = i2.shift();\n      n2 && (di.indexOf(n2.toLowerCase()) >= 0 || n2.toLowerCase().indexOf(\"x-litix-\") === 0) && (e[n2] = i2.join(\": \"));\n    }\n  }), e;\n}\nfunction oe(r10) {\n  if (r10) {\n    var e = Dt.find(function(t2) {\n      return r10[t2] !== void 0;\n    });\n    return e ? r10[e] : void 0;\n  }\n}\nvar li = function(r10) {\n  var e = {};\n  for (var t2 in r10) {\n    var a2 = r10[t2], i2 = a2[\"DATA-ID\"].search(\"io.litix.data.\");\n    if (i2 !== -1) {\n      var n2 = a2[\"DATA-ID\"].replace(\"io.litix.data.\", \"\");\n      e[n2] = a2.VALUE;\n    }\n  }\n  return e;\n};\nvar Ne = li;\nvar Pe = function(r10) {\n  if (!r10) return {};\n  var e = le.navigationStart(), t2 = r10.loading, a2 = t2 ? t2.start : r10.trequest, i2 = t2 ? t2.first : r10.tfirst, n2 = t2 ? t2.end : r10.tload;\n  return { bytesLoaded: r10.total, requestStart: Math.round(e + a2), responseStart: Math.round(e + i2), responseEnd: Math.round(e + n2) };\n};\nvar De = function(r10) {\n  if (!(!r10 || typeof r10.getAllResponseHeaders != \"function\")) return fe(r10.getAllResponseHeaders());\n};\nvar St = function(r10, e, t2) {\n  var a2 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, i2 = arguments.length > 4 ? arguments[4] : void 0, n2 = r10.log, o = r10.utils.secondsToMs, s = function(p3) {\n    var _3 = parseInt(i2.version), c4;\n    return _3 === 1 && p3.programDateTime !== null && (c4 = p3.programDateTime), _3 === 0 && p3.pdt !== null && (c4 = p3.pdt), c4;\n  };\n  if (!le.exists()) {\n    n2.warn(\"performance timing not supported. Not tracking HLS.js.\");\n    return;\n  }\n  var f = function(p3, _3) {\n    return r10.emit(e, p3, _3);\n  }, h3 = function(p3, _3) {\n    var c4 = _3.levels, u3 = _3.audioTracks, y5 = _3.url, E4 = _3.stats, k3 = _3.networkDetails, m3 = _3.sessionData, q3 = {}, P2 = {};\n    c4.forEach(function(W4, ae5) {\n      q3[ae5] = { width: W4.width, height: W4.height, bitrate: W4.bitrate, attrs: W4.attrs };\n    }), u3.forEach(function(W4, ae5) {\n      P2[ae5] = { name: W4.name, language: W4.lang, bitrate: W4.bitrate };\n    });\n    var L2 = Pe(E4), R2 = L2.bytesLoaded, Y5 = L2.requestStart, ge4 = L2.responseStart, be3 = L2.responseEnd;\n    f(\"requestcompleted\", ce(ne({}, Ne(m3)), { request_event_type: p3, request_bytes_loaded: R2, request_start: Y5, request_response_start: ge4, request_response_end: be3, request_type: \"manifest\", request_hostname: F(y5), request_response_headers: De(k3), request_rendition_lists: { media: q3, audio: P2, video: {} } }));\n  };\n  t2.on(i2.Events.MANIFEST_LOADED, h3);\n  var T3 = function(p3, _3) {\n    var c4 = _3.details, u3 = _3.level, y5 = _3.networkDetails, E4 = _3.stats, k3 = Pe(E4), m3 = k3.bytesLoaded, q3 = k3.requestStart, P2 = k3.responseStart, L2 = k3.responseEnd, R2 = c4.fragments[c4.fragments.length - 1], Y5 = s(R2) + o(R2.duration);\n    f(\"requestcompleted\", { request_event_type: p3, request_bytes_loaded: m3, request_start: q3, request_response_start: P2, request_response_end: L2, request_current_level: u3, request_type: \"manifest\", request_hostname: F(c4.url), request_response_headers: De(y5), video_holdback: c4.holdBack && o(c4.holdBack), video_part_holdback: c4.partHoldBack && o(c4.partHoldBack), video_part_target_duration: c4.partTarget && o(c4.partTarget), video_target_duration: c4.targetduration && o(c4.targetduration), video_source_is_live: c4.live, player_manifest_newest_program_time: isNaN(Y5) ? void 0 : Y5 });\n  };\n  t2.on(i2.Events.LEVEL_LOADED, T3);\n  var g2 = function(p3, _3) {\n    var c4 = _3.details, u3 = _3.networkDetails, y5 = _3.stats, E4 = Pe(y5), k3 = E4.bytesLoaded, m3 = E4.requestStart, q3 = E4.responseStart, P2 = E4.responseEnd;\n    f(\"requestcompleted\", { request_event_type: p3, request_bytes_loaded: k3, request_start: m3, request_response_start: q3, request_response_end: P2, request_type: \"manifest\", request_hostname: F(c4.url), request_response_headers: De(u3) });\n  };\n  t2.on(i2.Events.AUDIO_TRACK_LOADED, g2);\n  var x4 = function(p3, _3) {\n    var c4 = _3.stats, u3 = _3.networkDetails, y5 = _3.frag;\n    c4 = c4 || y5.stats;\n    var E4 = Pe(c4), k3 = E4.bytesLoaded, m3 = E4.requestStart, q3 = E4.responseStart, P2 = E4.responseEnd, L2 = u3 ? De(u3) : void 0, R2 = { request_event_type: p3, request_bytes_loaded: k3, request_start: m3, request_response_start: q3, request_response_end: P2, request_hostname: u3 ? F(u3.responseURL) : void 0, request_id: L2 ? oe(L2) : void 0, request_response_headers: L2, request_media_duration: y5.duration, request_url: u3 == null ? void 0 : u3.responseURL };\n    y5.type === \"main\" ? (R2.request_type = \"media\", R2.request_current_level = y5.level, R2.request_video_width = (t2.levels[y5.level] || {}).width, R2.request_video_height = (t2.levels[y5.level] || {}).height, R2.request_labeled_bitrate = (t2.levels[y5.level] || {}).bitrate) : R2.request_type = y5.type, f(\"requestcompleted\", R2);\n  };\n  t2.on(i2.Events.FRAG_LOADED, x4);\n  var v4 = function(p3, _3) {\n    var c4 = _3.frag, u3 = c4.start, y5 = s(c4), E4 = { currentFragmentPDT: y5, currentFragmentStart: o(u3) };\n    f(\"fragmentchange\", E4);\n  };\n  t2.on(i2.Events.FRAG_CHANGED, v4);\n  var l = function(p3, _3) {\n    var c4 = _3.type, u3 = _3.details, y5 = _3.response, E4 = _3.fatal, k3 = _3.frag, m3 = _3.networkDetails, q3 = (k3 == null ? void 0 : k3.url) || _3.url || \"\", P2 = m3 ? De(m3) : void 0;\n    if ((u3 === i2.ErrorDetails.MANIFEST_LOAD_ERROR || u3 === i2.ErrorDetails.MANIFEST_LOAD_TIMEOUT || u3 === i2.ErrorDetails.FRAG_LOAD_ERROR || u3 === i2.ErrorDetails.FRAG_LOAD_TIMEOUT || u3 === i2.ErrorDetails.LEVEL_LOAD_ERROR || u3 === i2.ErrorDetails.LEVEL_LOAD_TIMEOUT || u3 === i2.ErrorDetails.AUDIO_TRACK_LOAD_ERROR || u3 === i2.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT || u3 === i2.ErrorDetails.SUBTITLE_LOAD_ERROR || u3 === i2.ErrorDetails.SUBTITLE_LOAD_TIMEOUT || u3 === i2.ErrorDetails.KEY_LOAD_ERROR || u3 === i2.ErrorDetails.KEY_LOAD_TIMEOUT) && f(\"requestfailed\", { request_error: u3, request_url: q3, request_hostname: F(q3), request_id: P2 ? oe(P2) : void 0, request_type: u3 === i2.ErrorDetails.FRAG_LOAD_ERROR || u3 === i2.ErrorDetails.FRAG_LOAD_TIMEOUT ? \"media\" : u3 === i2.ErrorDetails.AUDIO_TRACK_LOAD_ERROR || u3 === i2.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT ? \"audio\" : u3 === i2.ErrorDetails.SUBTITLE_LOAD_ERROR || u3 === i2.ErrorDetails.SUBTITLE_LOAD_TIMEOUT ? \"subtitle\" : u3 === i2.ErrorDetails.KEY_LOAD_ERROR || u3 === i2.ErrorDetails.KEY_LOAD_TIMEOUT ? \"encryption\" : \"manifest\", request_error_code: y5 == null ? void 0 : y5.code, request_error_text: y5 == null ? void 0 : y5.text }), E4) {\n      var L2, R2 = \"\".concat(q3 ? \"url: \".concat(q3, \"\\n\") : \"\") + \"\".concat(y5 && (y5.code || y5.text) ? \"response: \".concat(y5.code, \", \").concat(y5.text, \"\\n\") : \"\") + \"\".concat(_3.reason ? \"failure reason: \".concat(_3.reason, \"\\n\") : \"\") + \"\".concat(_3.level ? \"level: \".concat(_3.level, \"\\n\") : \"\") + \"\".concat(_3.parent ? \"parent stream controller: \".concat(_3.parent, \"\\n\") : \"\") + \"\".concat(_3.buffer ? \"buffer length: \".concat(_3.buffer, \"\\n\") : \"\") + \"\".concat(_3.error ? \"error: \".concat(_3.error, \"\\n\") : \"\") + \"\".concat(_3.event ? \"event: \".concat(_3.event, \"\\n\") : \"\") + \"\".concat(_3.err ? \"error message: \".concat((L2 = _3.err) === null || L2 === void 0 ? void 0 : L2.message, \"\\n\") : \"\");\n      f(\"error\", { player_error_code: c4, player_error_message: u3, player_error_context: R2 });\n    }\n  };\n  t2.on(i2.Events.ERROR, l);\n  var w2 = function(p3, _3) {\n    var c4 = _3.frag, u3 = c4 && c4._url || \"\";\n    f(\"requestcanceled\", { request_event_type: p3, request_url: u3, request_type: \"media\", request_hostname: F(u3) });\n  };\n  t2.on(i2.Events.FRAG_LOAD_EMERGENCY_ABORTED, w2);\n  var D3 = function(p3, _3) {\n    var c4 = _3.level, u3 = t2.levels[c4];\n    if (u3 && u3.attrs && u3.attrs.BANDWIDTH) {\n      var y5 = u3.attrs.BANDWIDTH, E4, k3 = parseFloat(u3.attrs[\"FRAME-RATE\"]);\n      isNaN(k3) || (E4 = k3), y5 ? f(\"renditionchange\", { video_source_fps: E4, video_source_bitrate: y5, video_source_width: u3.width, video_source_height: u3.height, video_source_rendition_name: u3.name, video_source_codec: u3 == null ? void 0 : u3.videoCodec }) : n2.warn(\"missing BANDWIDTH from HLS manifest parsed by HLS.js\");\n    }\n  };\n  t2.on(i2.Events.LEVEL_SWITCHED, D3), t2._stopMuxMonitor = function() {\n    t2.off(i2.Events.MANIFEST_LOADED, h3), t2.off(i2.Events.LEVEL_LOADED, T3), t2.off(i2.Events.AUDIO_TRACK_LOADED, g2), t2.off(i2.Events.FRAG_LOADED, x4), t2.off(i2.Events.FRAG_CHANGED, v4), t2.off(i2.Events.ERROR, l), t2.off(i2.Events.FRAG_LOAD_EMERGENCY_ABORTED, w2), t2.off(i2.Events.LEVEL_SWITCHED, D3), t2.off(i2.Events.DESTROYING, t2._stopMuxMonitor), delete t2._stopMuxMonitor;\n  }, t2.on(i2.Events.DESTROYING, t2._stopMuxMonitor);\n};\nvar Rt = function(r10) {\n  r10 && typeof r10._stopMuxMonitor == \"function\" && r10._stopMuxMonitor();\n};\nvar qt = function(r10, e) {\n  if (!r10 || !r10.requestEndDate) return {};\n  var t2 = F(r10.url), a2 = r10.url, i2 = r10.bytesLoaded, n2 = new Date(r10.requestStartDate).getTime(), o = new Date(r10.firstByteDate).getTime(), s = new Date(r10.requestEndDate).getTime(), f = isNaN(r10.duration) ? 0 : r10.duration, h3 = typeof e.getMetricsFor == \"function\" ? e.getMetricsFor(r10.mediaType).HttpList : e.getDashMetrics().getHttpRequests(r10.mediaType), T3;\n  h3.length > 0 && (T3 = fe(h3[h3.length - 1]._responseHeaders || \"\"));\n  var g2 = T3 ? oe(T3) : void 0;\n  return { requestStart: n2, requestResponseStart: o, requestResponseEnd: s, requestBytesLoaded: i2, requestResponseHeaders: T3, requestMediaDuration: f, requestHostname: t2, requestUrl: a2, requestId: g2 };\n};\nvar ci = function(r10, e) {\n  var t2 = e.getQualityFor(r10), a2 = e.getCurrentTrackFor(r10).bitrateList;\n  return a2 ? { currentLevel: t2, renditionWidth: a2[t2].width || null, renditionHeight: a2[t2].height || null, renditionBitrate: a2[t2].bandwidth } : {};\n};\nvar fi = function(r10) {\n  var e;\n  return (e = r10.match(/.*codecs\\*?=\"(.*)\"/)) === null || e === void 0 ? void 0 : e[1];\n};\nvar _i = function(e) {\n  try {\n    var t2, a2, i2 = (a2 = e.getVersion) === null || a2 === void 0 || (t2 = a2.call(e)) === null || t2 === void 0 ? void 0 : t2.split(\".\").map(function(n2) {\n      return parseInt(n2);\n    })[0];\n    return i2;\n  } catch (n2) {\n    return false;\n  }\n};\nvar At = function(r10, e, t2) {\n  var a2 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, i2 = r10.log;\n  if (!t2 || !t2.on) {\n    i2.warn(\"Invalid dash.js player reference. Monitoring blocked.\");\n    return;\n  }\n  var n2 = _i(t2), o = function(c4, u3) {\n    return r10.emit(e, c4, u3);\n  }, s = function(c4) {\n    var u3 = c4.type, y5 = c4.data, E4 = (y5 || {}).url;\n    o(\"requestcompleted\", { request_event_type: u3, request_start: 0, request_response_start: 0, request_response_end: 0, request_bytes_loaded: -1, request_type: \"manifest\", request_hostname: F(E4), request_url: E4 });\n  };\n  t2.on(\"manifestLoaded\", s);\n  var f = {}, h3 = function(c4) {\n    if (typeof c4.getRequests != \"function\") return null;\n    var u3 = c4.getRequests({ state: \"executed\" });\n    return u3.length === 0 ? null : u3[u3.length - 1];\n  }, T3 = function(c4) {\n    var u3 = c4.type, y5 = c4.fragmentModel, E4 = c4.chunk, k3 = h3(y5);\n    g2({ type: u3, request: k3, chunk: E4 });\n  }, g2 = function(c4) {\n    var u3 = c4.type, y5 = c4.chunk, E4 = c4.request, k3 = (y5 || {}).mediaInfo, m3 = k3 || {}, q3 = m3.type, P2 = m3.bitrateList;\n    P2 = P2 || [];\n    var L2 = {};\n    P2.forEach(function(we4, Q5) {\n      L2[Q5] = {}, L2[Q5].width = we4.width, L2[Q5].height = we4.height, L2[Q5].bitrate = we4.bandwidth, L2[Q5].attrs = {};\n    }), q3 === \"video\" ? f.video = L2 : q3 === \"audio\" ? f.audio = L2 : f.media = L2;\n    var R2 = qt(E4, t2), Y5 = R2.requestStart, ge4 = R2.requestResponseStart, be3 = R2.requestResponseEnd, W4 = R2.requestResponseHeaders, ae5 = R2.requestMediaDuration, Ue4 = R2.requestHostname, Fe3 = R2.requestUrl, Ve4 = R2.requestId;\n    o(\"requestcompleted\", { request_event_type: u3, request_start: Y5, request_response_start: ge4, request_response_end: be3, request_bytes_loaded: -1, request_type: q3 + \"_init\", request_response_headers: W4, request_hostname: Ue4, request_id: Ve4, request_url: Fe3, request_media_duration: ae5, request_rendition_lists: f });\n  };\n  n2 >= 4 ? t2.on(\"initFragmentLoaded\", g2) : t2.on(\"initFragmentLoaded\", T3);\n  var x4 = function(c4) {\n    var u3 = c4.type, y5 = c4.fragmentModel, E4 = c4.chunk, k3 = h3(y5);\n    v4({ type: u3, request: k3, chunk: E4 });\n  }, v4 = function(c4) {\n    var u3 = c4.type, y5 = c4.chunk, E4 = c4.request, k3 = y5 || {}, m3 = k3.mediaInfo, q3 = k3.start, P2 = m3 || {}, L2 = P2.type, R2 = qt(E4, t2), Y5 = R2.requestStart, ge4 = R2.requestResponseStart, be3 = R2.requestResponseEnd, W4 = R2.requestBytesLoaded, ae5 = R2.requestResponseHeaders, Ue4 = R2.requestMediaDuration, Fe3 = R2.requestHostname, Ve4 = R2.requestUrl, we4 = R2.requestId, Q5 = ci(L2, t2), zr = Q5.currentLevel, Kr = Q5.renditionWidth, Yr = Q5.renditionHeight, Xr = Q5.renditionBitrate;\n    o(\"requestcompleted\", { request_event_type: u3, request_start: Y5, request_response_start: ge4, request_response_end: be3, request_bytes_loaded: W4, request_type: L2, request_response_headers: ae5, request_hostname: Fe3, request_id: we4, request_url: Ve4, request_media_start_time: q3, request_media_duration: Ue4, request_current_level: zr, request_labeled_bitrate: Xr, request_video_width: Kr, request_video_height: Yr });\n  };\n  n2 >= 4 ? t2.on(\"mediaFragmentLoaded\", v4) : t2.on(\"mediaFragmentLoaded\", x4);\n  var l = { video: void 0, audio: void 0, totalBitrate: void 0 }, w2 = function() {\n    if (l.video && typeof l.video.bitrate == \"number\") {\n      if (!(l.video.width && l.video.height)) {\n        i2.warn(\"have bitrate info for video but missing width/height\");\n        return;\n      }\n      var c4 = l.video.bitrate;\n      if (l.audio && typeof l.audio.bitrate == \"number\" && (c4 += l.audio.bitrate), c4 !== l.totalBitrate) return l.totalBitrate = c4, { video_source_bitrate: c4, video_source_height: l.video.height, video_source_width: l.video.width, video_source_codec: fi(l.video.codec) };\n    }\n  }, D3 = function(c4, u3, y5) {\n    if (typeof c4.newQuality != \"number\") {\n      i2.warn(\"missing evt.newQuality in qualityChangeRendered event\", c4);\n      return;\n    }\n    var E4 = c4.mediaType;\n    if (E4 === \"audio\" || E4 === \"video\") {\n      var k3 = t2.getBitrateInfoListFor(E4).find(function(q3) {\n        var P2 = q3.qualityIndex;\n        return P2 === c4.newQuality;\n      });\n      if (!(k3 && typeof k3.bitrate == \"number\")) {\n        i2.warn(\"missing bitrate info for \".concat(E4));\n        return;\n      }\n      l[E4] = ce(ne({}, k3), { codec: t2.getCurrentTrackFor(E4).codec });\n      var m3 = w2();\n      m3 && o(\"renditionchange\", m3);\n    }\n  };\n  t2.on(\"qualityChangeRendered\", D3);\n  var p3 = function(c4) {\n    var u3 = c4.request, y5 = c4.mediaType;\n    u3 = u3 || {}, o(\"requestcanceled\", { request_event_type: u3.type + \"_\" + u3.action, request_url: u3.url, request_type: y5, request_hostname: F(u3.url) });\n  };\n  t2.on(\"fragmentLoadingAbandoned\", p3);\n  var _3 = function(c4) {\n    var u3 = c4.error, y5, E4, k3 = (u3 == null || (y5 = u3.data) === null || y5 === void 0 ? void 0 : y5.request) || {}, m3 = (u3 == null || (E4 = u3.data) === null || E4 === void 0 ? void 0 : E4.response) || {};\n    (u3 == null ? void 0 : u3.code) === 27 && o(\"requestfailed\", { request_error: k3.type + \"_\" + k3.action, request_url: k3.url, request_hostname: F(k3.url), request_type: k3.mediaType, request_error_code: m3.status, request_error_text: m3.statusText });\n    var q3 = \"\".concat(k3 != null && k3.url ? \"url: \".concat(k3.url, \"\\n\") : \"\") + \"\".concat(m3 != null && m3.status || m3 != null && m3.statusText ? \"response: \".concat(m3 == null ? void 0 : m3.status, \", \").concat(m3 == null ? void 0 : m3.statusText, \"\\n\") : \"\");\n    o(\"error\", { player_error_code: u3 == null ? void 0 : u3.code, player_error_message: u3 == null ? void 0 : u3.message, player_error_context: q3 });\n  };\n  t2.on(\"error\", _3), t2._stopMuxMonitor = function() {\n    t2.off(\"manifestLoaded\", s), t2.off(\"initFragmentLoaded\", g2), t2.off(\"mediaFragmentLoaded\", v4), t2.off(\"qualityChangeRendered\", D3), t2.off(\"error\", _3), t2.off(\"fragmentLoadingAbandoned\", p3), delete t2._stopMuxMonitor;\n  };\n};\nvar Ot = function(r10) {\n  r10 && typeof r10._stopMuxMonitor == \"function\" && r10._stopMuxMonitor();\n};\nvar It = 0;\nvar pi = function() {\n  \"use strict\";\n  function r10() {\n    S(this, r10), d(this, \"_listeners\", void 0);\n  }\n  return M(r10, [{ key: \"on\", value: function(t2, a2, i2) {\n    return a2._eventEmitterGuid = a2._eventEmitterGuid || ++It, this._listeners = this._listeners || {}, this._listeners[t2] = this._listeners[t2] || [], i2 && (a2 = a2.bind(i2)), this._listeners[t2].push(a2), a2;\n  } }, { key: \"off\", value: function(t2, a2) {\n    var i2 = this._listeners && this._listeners[t2];\n    i2 && i2.forEach(function(n2, o) {\n      n2._eventEmitterGuid === a2._eventEmitterGuid && i2.splice(o, 1);\n    });\n  } }, { key: \"one\", value: function(t2, a2, i2) {\n    var n2 = this;\n    a2._eventEmitterGuid = a2._eventEmitterGuid || ++It;\n    var o = function() {\n      n2.off(t2, o), a2.apply(i2 || this, arguments);\n    };\n    o._eventEmitterGuid = a2._eventEmitterGuid, this.on(t2, o);\n  } }, { key: \"emit\", value: function(t2, a2) {\n    var i2 = this;\n    if (this._listeners) {\n      a2 = a2 || {};\n      var n2 = this._listeners[\"before*\"] || [], o = this._listeners[t2] || [], s = this._listeners[\"after\" + t2] || [], f = function(h3, T3) {\n        h3 = h3.slice(), h3.forEach(function(g2) {\n          g2.call(i2, { type: t2 }, T3);\n        });\n      };\n      f(n2, a2), f(o, a2), f(s, a2);\n    }\n  } }]), r10;\n}();\nvar Lt = pi;\nvar Ce = B(J());\nvar vi = function() {\n  \"use strict\";\n  function r10(e) {\n    var t2 = this;\n    S(this, r10), d(this, \"_playbackHeartbeatInterval\", void 0), d(this, \"_playheadShouldBeProgressing\", void 0), d(this, \"pm\", void 0), this.pm = e, this._playbackHeartbeatInterval = null, this._playheadShouldBeProgressing = false, e.on(\"playing\", function() {\n      t2._playheadShouldBeProgressing = true;\n    }), e.on(\"play\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"playing\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"adbreakstart\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"adplay\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"adplaying\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"devicewake\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"viewstart\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"rebufferstart\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"pause\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"ended\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"viewend\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"error\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"aderror\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"adpause\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"adended\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"adbreakend\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"seeked\", function() {\n      e.data.player_is_paused ? t2._stopPlaybackHeartbeatInterval() : t2._startPlaybackHeartbeatInterval();\n    }), e.on(\"timeupdate\", function() {\n      t2._playbackHeartbeatInterval !== null && e.emit(\"playbackheartbeat\");\n    }), e.on(\"devicesleep\", function(a2, i2) {\n      t2._playbackHeartbeatInterval !== null && (Ce.default.clearInterval(t2._playbackHeartbeatInterval), e.emit(\"playbackheartbeatend\", { viewer_time: i2.viewer_time }), t2._playbackHeartbeatInterval = null);\n    });\n  }\n  return M(r10, [{ key: \"_startPlaybackHeartbeatInterval\", value: function() {\n    var t2 = this;\n    this._playbackHeartbeatInterval === null && (this.pm.emit(\"playbackheartbeat\"), this._playbackHeartbeatInterval = Ce.default.setInterval(function() {\n      t2.pm.emit(\"playbackheartbeat\");\n    }, this.pm.playbackHeartbeatTime));\n  } }, { key: \"_stopPlaybackHeartbeatInterval\", value: function() {\n    this._playheadShouldBeProgressing = false, this._playbackHeartbeatInterval !== null && (Ce.default.clearInterval(this._playbackHeartbeatInterval), this.pm.emit(\"playbackheartbeatend\"), this._playbackHeartbeatInterval = null);\n  } }]), r10;\n}();\nvar Nt = vi;\nvar mi = function r(e) {\n  \"use strict\";\n  var t2 = this;\n  S(this, r), d(this, \"viewErrored\", void 0), e.on(\"viewinit\", function() {\n    t2.viewErrored = false;\n  }), e.on(\"error\", function(a2, i2) {\n    try {\n      var n2 = e.errorTranslator({ player_error_code: i2.player_error_code, player_error_message: i2.player_error_message, player_error_context: i2.player_error_context, player_error_severity: i2.player_error_severity, player_error_business_exception: i2.player_error_business_exception });\n      n2 && (e.data.player_error_code = n2.player_error_code || i2.player_error_code, e.data.player_error_message = n2.player_error_message || i2.player_error_message, e.data.player_error_context = n2.player_error_context || i2.player_error_context, e.data.player_error_severity = n2.player_error_severity || i2.player_error_severity, e.data.player_error_business_exception = n2.player_error_business_exception || i2.player_error_business_exception, t2.viewErrored = true);\n    } catch (o) {\n      e.mux.log.warn(\"Exception in error translator callback.\", o), t2.viewErrored = true;\n    }\n  }), e.on(\"aftererror\", function() {\n    var a2, i2, n2, o, s;\n    (a2 = e.data) === null || a2 === void 0 || delete a2.player_error_code, (i2 = e.data) === null || i2 === void 0 || delete i2.player_error_message, (n2 = e.data) === null || n2 === void 0 || delete n2.player_error_context, (o = e.data) === null || o === void 0 || delete o.player_error_severity, (s = e.data) === null || s === void 0 || delete s.player_error_business_exception;\n  });\n};\nvar Pt = mi;\nvar hi = function() {\n  \"use strict\";\n  function r10(e) {\n    S(this, r10), d(this, \"_watchTimeTrackerLastCheckedTime\", void 0), d(this, \"pm\", void 0), this.pm = e, this._watchTimeTrackerLastCheckedTime = null, e.on(\"playbackheartbeat\", this._updateWatchTime.bind(this)), e.on(\"playbackheartbeatend\", this._clearWatchTimeState.bind(this));\n  }\n  return M(r10, [{ key: \"_updateWatchTime\", value: function(t2, a2) {\n    var i2 = a2.viewer_time;\n    this._watchTimeTrackerLastCheckedTime === null && (this._watchTimeTrackerLastCheckedTime = i2), O(this.pm.data, \"view_watch_time\", i2 - this._watchTimeTrackerLastCheckedTime), this._watchTimeTrackerLastCheckedTime = i2;\n  } }, { key: \"_clearWatchTimeState\", value: function(t2, a2) {\n    this._updateWatchTime(t2, a2), this._watchTimeTrackerLastCheckedTime = null;\n  } }]), r10;\n}();\nvar Ct = hi;\nvar yi = function() {\n  \"use strict\";\n  function r10(e) {\n    var t2 = this;\n    S(this, r10), d(this, \"_playbackTimeTrackerLastPlayheadPosition\", void 0), d(this, \"_lastTime\", void 0), d(this, \"_isAdPlaying\", void 0), d(this, \"_callbackUpdatePlaybackTime\", void 0), d(this, \"pm\", void 0), this.pm = e, this._playbackTimeTrackerLastPlayheadPosition = -1, this._lastTime = A.now(), this._isAdPlaying = false, this._callbackUpdatePlaybackTime = null;\n    var a2 = this._startPlaybackTimeTracking.bind(this);\n    e.on(\"playing\", a2), e.on(\"adplaying\", a2), e.on(\"seeked\", a2);\n    var i2 = this._stopPlaybackTimeTracking.bind(this);\n    e.on(\"playbackheartbeatend\", i2), e.on(\"seeking\", i2), e.on(\"adplaying\", function() {\n      t2._isAdPlaying = true;\n    }), e.on(\"adended\", function() {\n      t2._isAdPlaying = false;\n    }), e.on(\"adpause\", function() {\n      t2._isAdPlaying = false;\n    }), e.on(\"adbreakstart\", function() {\n      t2._isAdPlaying = false;\n    }), e.on(\"adbreakend\", function() {\n      t2._isAdPlaying = false;\n    }), e.on(\"adplay\", function() {\n      t2._isAdPlaying = false;\n    }), e.on(\"viewinit\", function() {\n      t2._playbackTimeTrackerLastPlayheadPosition = -1, t2._lastTime = A.now(), t2._isAdPlaying = false, t2._callbackUpdatePlaybackTime = null;\n    });\n  }\n  return M(r10, [{ key: \"_startPlaybackTimeTracking\", value: function() {\n    this._callbackUpdatePlaybackTime === null && (this._callbackUpdatePlaybackTime = this._updatePlaybackTime.bind(this), this._playbackTimeTrackerLastPlayheadPosition = this.pm.data.player_playhead_time, this.pm.on(\"playbackheartbeat\", this._callbackUpdatePlaybackTime));\n  } }, { key: \"_stopPlaybackTimeTracking\", value: function() {\n    this._callbackUpdatePlaybackTime && (this._updatePlaybackTime(), this.pm.off(\"playbackheartbeat\", this._callbackUpdatePlaybackTime), this._callbackUpdatePlaybackTime = null, this._playbackTimeTrackerLastPlayheadPosition = -1);\n  } }, { key: \"_updatePlaybackTime\", value: function() {\n    var t2 = this.pm.data.player_playhead_time, a2 = A.now(), i2 = -1;\n    this._playbackTimeTrackerLastPlayheadPosition >= 0 && t2 > this._playbackTimeTrackerLastPlayheadPosition ? i2 = t2 - this._playbackTimeTrackerLastPlayheadPosition : this._isAdPlaying && (i2 = a2 - this._lastTime), i2 > 0 && i2 <= 1e3 && O(this.pm.data, \"view_content_playback_time\", i2), this._playbackTimeTrackerLastPlayheadPosition = t2, this._lastTime = a2;\n  } }]), r10;\n}();\nvar Mt = yi;\nvar gi = function() {\n  \"use strict\";\n  function r10(e) {\n    S(this, r10), d(this, \"pm\", void 0), this.pm = e;\n    var t2 = this._updatePlayheadTime.bind(this);\n    e.on(\"playbackheartbeat\", t2), e.on(\"playbackheartbeatend\", t2), e.on(\"timeupdate\", t2), e.on(\"destroy\", function() {\n      e.off(\"timeupdate\", t2);\n    });\n  }\n  return M(r10, [{ key: \"_updateMaxPlayheadPosition\", value: function() {\n    this.pm.data.view_max_playhead_position = typeof this.pm.data.view_max_playhead_position == \"undefined\" ? this.pm.data.player_playhead_time : Math.max(this.pm.data.view_max_playhead_position, this.pm.data.player_playhead_time);\n  } }, { key: \"_updatePlayheadTime\", value: function(t2, a2) {\n    var i2 = this, n2 = function() {\n      i2.pm.currentFragmentPDT && i2.pm.currentFragmentStart && (i2.pm.data.player_program_time = i2.pm.currentFragmentPDT + i2.pm.data.player_playhead_time - i2.pm.currentFragmentStart);\n    };\n    if (a2 && a2.player_playhead_time) this.pm.data.player_playhead_time = a2.player_playhead_time, n2(), this._updateMaxPlayheadPosition();\n    else if (this.pm.getPlayheadTime) {\n      var o = this.pm.getPlayheadTime();\n      typeof o != \"undefined\" && (this.pm.data.player_playhead_time = o, n2(), this._updateMaxPlayheadPosition());\n    }\n  } }]), r10;\n}();\nvar Ht = gi;\nvar Bt = 5 * 60 * 1e3;\nvar bi = function r2(e) {\n  \"use strict\";\n  if (S(this, r2), !e.disableRebufferTracking) {\n    var t2, a2 = function(n2, o) {\n      i2(o), t2 = void 0;\n    }, i2 = function(n2) {\n      if (t2) {\n        var o = n2.viewer_time - t2;\n        O(e.data, \"view_rebuffer_duration\", o), t2 = n2.viewer_time, e.data.view_rebuffer_duration > Bt && (e.emit(\"viewend\"), e.send(\"viewend\"), e.mux.log.warn(\"Ending view after rebuffering for longer than \".concat(Bt, \"ms, future events will be ignored unless a programchange or videochange occurs.\")));\n      }\n      e.data.view_watch_time >= 0 && e.data.view_rebuffer_count > 0 && (e.data.view_rebuffer_frequency = e.data.view_rebuffer_count / e.data.view_watch_time, e.data.view_rebuffer_percentage = e.data.view_rebuffer_duration / e.data.view_watch_time);\n    };\n    e.on(\"playbackheartbeat\", function(n2, o) {\n      return i2(o);\n    }), e.on(\"rebufferstart\", function(n2, o) {\n      t2 || (O(e.data, \"view_rebuffer_count\", 1), t2 = o.viewer_time, e.one(\"rebufferend\", a2));\n    }), e.on(\"viewinit\", function() {\n      t2 = void 0, e.off(\"rebufferend\", a2);\n    });\n  }\n};\nvar Ut = bi;\nvar wi = function() {\n  \"use strict\";\n  function r10(e) {\n    var t2 = this;\n    S(this, r10), d(this, \"_lastCheckedTime\", void 0), d(this, \"_lastPlayheadTime\", void 0), d(this, \"_lastPlayheadTimeUpdatedTime\", void 0), d(this, \"_rebuffering\", void 0), d(this, \"pm\", void 0), this.pm = e, !(e.disableRebufferTracking || e.disablePlayheadRebufferTracking) && (this._lastCheckedTime = null, this._lastPlayheadTime = null, this._lastPlayheadTimeUpdatedTime = null, e.on(\"playbackheartbeat\", this._checkIfRebuffering.bind(this)), e.on(\"playbackheartbeatend\", this._cleanupRebufferTracker.bind(this)), e.on(\"seeking\", function() {\n      t2._cleanupRebufferTracker(null, { viewer_time: A.now() });\n    }));\n  }\n  return M(r10, [{ key: \"_checkIfRebuffering\", value: function(t2, a2) {\n    if (this.pm.seekingTracker.isSeeking || this.pm.adTracker.isAdBreak || !this.pm.playbackHeartbeat._playheadShouldBeProgressing) {\n      this._cleanupRebufferTracker(t2, a2);\n      return;\n    }\n    if (this._lastCheckedTime === null) {\n      this._prepareRebufferTrackerState(a2.viewer_time);\n      return;\n    }\n    if (this._lastPlayheadTime !== this.pm.data.player_playhead_time) {\n      this._cleanupRebufferTracker(t2, a2, true);\n      return;\n    }\n    var i2 = a2.viewer_time - this._lastPlayheadTimeUpdatedTime;\n    typeof this.pm.sustainedRebufferThreshold == \"number\" && i2 >= this.pm.sustainedRebufferThreshold && (this._rebuffering || (this._rebuffering = true, this.pm.emit(\"rebufferstart\", { viewer_time: this._lastPlayheadTimeUpdatedTime }))), this._lastCheckedTime = a2.viewer_time;\n  } }, { key: \"_clearRebufferTrackerState\", value: function() {\n    this._lastCheckedTime = null, this._lastPlayheadTime = null, this._lastPlayheadTimeUpdatedTime = null;\n  } }, { key: \"_prepareRebufferTrackerState\", value: function(t2) {\n    this._lastCheckedTime = t2, this._lastPlayheadTime = this.pm.data.player_playhead_time, this._lastPlayheadTimeUpdatedTime = t2;\n  } }, { key: \"_cleanupRebufferTracker\", value: function(t2, a2) {\n    var i2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n    if (this._rebuffering) this._rebuffering = false, this.pm.emit(\"rebufferend\", { viewer_time: a2.viewer_time });\n    else {\n      if (this._lastCheckedTime === null) return;\n      var n2 = this.pm.data.player_playhead_time - this._lastPlayheadTime, o = a2.viewer_time - this._lastPlayheadTimeUpdatedTime;\n      typeof this.pm.minimumRebufferDuration == \"number\" && n2 > 0 && o - n2 > this.pm.minimumRebufferDuration && (this._lastCheckedTime = null, this.pm.emit(\"rebufferstart\", { viewer_time: this._lastPlayheadTimeUpdatedTime }), this.pm.emit(\"rebufferend\", { viewer_time: this._lastPlayheadTimeUpdatedTime + o - n2 }));\n    }\n    i2 ? this._prepareRebufferTrackerState(a2.viewer_time) : this._clearRebufferTrackerState();\n  } }]), r10;\n}();\nvar Ft = wi;\nvar Ti = function() {\n  \"use strict\";\n  function r10(e) {\n    var t2 = this;\n    S(this, r10), d(this, \"NAVIGATION_START\", void 0), d(this, \"pm\", void 0), this.pm = e, e.on(\"viewinit\", function() {\n      var a2 = e.data, i2 = a2.view_id;\n      if (!a2.view_program_changed) {\n        var n2 = function(o, s) {\n          var f = s.viewer_time;\n          o.type === \"playing\" && typeof e.data.view_time_to_first_frame == \"undefined\" ? t2.calculateTimeToFirstFrame(f || A.now(), i2) : o.type === \"adplaying\" && (typeof e.data.view_time_to_first_frame == \"undefined\" || t2._inPrerollPosition()) && t2.calculateTimeToFirstFrame(f || A.now(), i2);\n        };\n        e.one(\"playing\", n2), e.one(\"adplaying\", n2), e.one(\"viewend\", function() {\n          e.off(\"playing\", n2), e.off(\"adplaying\", n2);\n        });\n      }\n    });\n  }\n  return M(r10, [{ key: \"_inPrerollPosition\", value: function() {\n    return typeof this.pm.data.view_content_playback_time == \"undefined\" || this.pm.data.view_content_playback_time <= 1e3;\n  } }, { key: \"calculateTimeToFirstFrame\", value: function(t2, a2) {\n    a2 === this.pm.data.view_id && (this.pm.watchTimeTracker._updateWatchTime(null, { viewer_time: t2 }), this.pm.data.view_time_to_first_frame = this.pm.data.view_watch_time, (this.pm.data.player_autoplay_on || this.pm.data.video_is_autoplay) && this.NAVIGATION_START && (this.pm.data.view_aggregate_startup_time = this.pm.data.view_start + this.pm.data.view_watch_time - this.NAVIGATION_START));\n  } }]), r10;\n}();\nvar Vt = Ti;\nvar Ei = function r3(e) {\n  \"use strict\";\n  var t2 = this;\n  S(this, r3), d(this, \"_lastPlayerHeight\", void 0), d(this, \"_lastPlayerWidth\", void 0), d(this, \"_lastPlayheadPosition\", void 0), d(this, \"_lastSourceHeight\", void 0), d(this, \"_lastSourceWidth\", void 0), e.on(\"viewinit\", function() {\n    t2._lastPlayheadPosition = -1;\n  });\n  var a2 = [\"pause\", \"rebufferstart\", \"seeking\", \"error\", \"adbreakstart\", \"hb\"], i2 = [\"playing\", \"hb\"];\n  a2.forEach(function(n2) {\n    e.on(n2, function() {\n      if (t2._lastPlayheadPosition >= 0 && e.data.player_playhead_time >= 0 && t2._lastPlayerWidth >= 0 && t2._lastSourceWidth > 0 && t2._lastPlayerHeight >= 0 && t2._lastSourceHeight > 0) {\n        var o = e.data.player_playhead_time - t2._lastPlayheadPosition;\n        if (o < 0) {\n          t2._lastPlayheadPosition = -1;\n          return;\n        }\n        var s = Math.min(t2._lastPlayerWidth / t2._lastSourceWidth, t2._lastPlayerHeight / t2._lastSourceHeight), f = Math.max(0, s - 1), h3 = Math.max(0, 1 - s);\n        e.data.view_max_upscale_percentage = Math.max(e.data.view_max_upscale_percentage || 0, f), e.data.view_max_downscale_percentage = Math.max(e.data.view_max_downscale_percentage || 0, h3), O(e.data, \"view_total_content_playback_time\", o), O(e.data, \"view_total_upscaling\", f * o), O(e.data, \"view_total_downscaling\", h3 * o);\n      }\n      t2._lastPlayheadPosition = -1;\n    });\n  }), i2.forEach(function(n2) {\n    e.on(n2, function() {\n      t2._lastPlayheadPosition = e.data.player_playhead_time, t2._lastPlayerWidth = e.data.player_width, t2._lastPlayerHeight = e.data.player_height, t2._lastSourceWidth = e.data.video_source_width, t2._lastSourceHeight = e.data.video_source_height;\n    });\n  });\n};\nvar Wt = Ei;\nvar ki = 2e3;\nvar xi = function r4(e) {\n  \"use strict\";\n  var t2 = this;\n  S(this, r4), d(this, \"isSeeking\", void 0), this.isSeeking = false;\n  var a2 = -1, i2 = function() {\n    var n2 = A.now(), o = (e.data.viewer_time || n2) - (a2 || n2);\n    O(e.data, \"view_seek_duration\", o), e.data.view_max_seek_time = Math.max(e.data.view_max_seek_time || 0, o), t2.isSeeking = false, a2 = -1;\n  };\n  e.on(\"seeking\", function(n2, o) {\n    if (Object.assign(e.data, o), t2.isSeeking && o.viewer_time - a2 <= ki) {\n      a2 = o.viewer_time;\n      return;\n    }\n    t2.isSeeking && i2(), t2.isSeeking = true, a2 = o.viewer_time, O(e.data, \"view_seek_count\", 1), e.send(\"seeking\");\n  }), e.on(\"seeked\", function() {\n    i2();\n  }), e.on(\"viewend\", function() {\n    t2.isSeeking && (i2(), e.send(\"seeked\")), t2.isSeeking = false, a2 = -1;\n  });\n};\nvar jt = xi;\nvar Gt = function(e, t2) {\n  e.push(t2), e.sort(function(a2, i2) {\n    return a2.viewer_time - i2.viewer_time;\n  });\n};\nvar Di = [\"adbreakstart\", \"adrequest\", \"adresponse\", \"adplay\", \"adplaying\", \"adpause\", \"adended\", \"adbreakend\", \"aderror\", \"adclicked\", \"adskipped\"];\nvar Si = function() {\n  \"use strict\";\n  function r10(e) {\n    var t2 = this;\n    S(this, r10), d(this, \"_adHasPlayed\", void 0), d(this, \"_adRequests\", void 0), d(this, \"_adResponses\", void 0), d(this, \"_currentAdRequestNumber\", void 0), d(this, \"_currentAdResponseNumber\", void 0), d(this, \"_prerollPlayTime\", void 0), d(this, \"_wouldBeNewAdPlay\", void 0), d(this, \"isAdBreak\", void 0), d(this, \"pm\", void 0), this.pm = e, e.on(\"viewinit\", function() {\n      t2.isAdBreak = false, t2._currentAdRequestNumber = 0, t2._currentAdResponseNumber = 0, t2._adRequests = [], t2._adResponses = [], t2._adHasPlayed = false, t2._wouldBeNewAdPlay = true, t2._prerollPlayTime = void 0;\n    }), Di.forEach(function(i2) {\n      return e.on(i2, t2._updateAdData.bind(t2));\n    });\n    var a2 = function() {\n      t2.isAdBreak = false;\n    };\n    e.on(\"adbreakstart\", function() {\n      t2.isAdBreak = true;\n    }), e.on(\"play\", a2), e.on(\"playing\", a2), e.on(\"viewend\", a2), e.on(\"adrequest\", function(i2, n2) {\n      n2 = Object.assign({ ad_request_id: \"generatedAdRequestId\" + t2._currentAdRequestNumber++ }, n2), Gt(t2._adRequests, n2), O(e.data, \"view_ad_request_count\"), t2.inPrerollPosition() && (e.data.view_preroll_requested = true, t2._adHasPlayed || O(e.data, \"view_preroll_request_count\"));\n    }), e.on(\"adresponse\", function(i2, n2) {\n      n2 = Object.assign({ ad_request_id: \"generatedAdRequestId\" + t2._currentAdResponseNumber++ }, n2), Gt(t2._adResponses, n2);\n      var o = t2.findAdRequest(n2.ad_request_id);\n      o && O(e.data, \"view_ad_request_time\", Math.max(0, n2.viewer_time - o.viewer_time));\n    }), e.on(\"adplay\", function(i2, n2) {\n      t2._adHasPlayed = true, t2._wouldBeNewAdPlay && (t2._wouldBeNewAdPlay = false, O(e.data, \"view_ad_played_count\")), t2.inPrerollPosition() && !e.data.view_preroll_played && (e.data.view_preroll_played = true, t2._adRequests.length > 0 && (e.data.view_preroll_request_time = Math.max(0, n2.viewer_time - t2._adRequests[0].viewer_time)), e.data.view_start && (e.data.view_startup_preroll_request_time = Math.max(0, n2.viewer_time - e.data.view_start)), t2._prerollPlayTime = n2.viewer_time);\n    }), e.on(\"adplaying\", function(i2, n2) {\n      t2.inPrerollPosition() && typeof e.data.view_preroll_load_time == \"undefined\" && typeof t2._prerollPlayTime != \"undefined\" && (e.data.view_preroll_load_time = n2.viewer_time - t2._prerollPlayTime, e.data.view_startup_preroll_load_time = n2.viewer_time - t2._prerollPlayTime);\n    }), e.on(\"adclicked\", function(i2, n2) {\n      t2._wouldBeNewAdPlay || O(e.data, \"view_ad_clicked_count\");\n    }), e.on(\"adskipped\", function(i2, n2) {\n      t2._wouldBeNewAdPlay || O(e.data, \"view_ad_skipped_count\");\n    }), e.on(\"adended\", function() {\n      t2._wouldBeNewAdPlay = true;\n    }), e.on(\"aderror\", function() {\n      t2._wouldBeNewAdPlay = true;\n    });\n  }\n  return M(r10, [{ key: \"inPrerollPosition\", value: function() {\n    return typeof this.pm.data.view_content_playback_time == \"undefined\" || this.pm.data.view_content_playback_time <= 1e3;\n  } }, { key: \"findAdRequest\", value: function(t2) {\n    for (var a2 = 0; a2 < this._adRequests.length; a2++) if (this._adRequests[a2].ad_request_id === t2) return this._adRequests[a2];\n  } }, { key: \"_updateAdData\", value: function(t2, a2) {\n    if (this.inPrerollPosition()) {\n      if (!this.pm.data.view_preroll_ad_tag_hostname && a2.ad_tag_url) {\n        var i2 = j(ee(a2.ad_tag_url), 2), n2 = i2[0], o = i2[1];\n        this.pm.data.view_preroll_ad_tag_domain = o, this.pm.data.view_preroll_ad_tag_hostname = n2;\n      }\n      if (!this.pm.data.view_preroll_ad_asset_hostname && a2.ad_asset_url) {\n        var s = j(ee(a2.ad_asset_url), 2), f = s[0], h3 = s[1];\n        this.pm.data.view_preroll_ad_asset_domain = h3, this.pm.data.view_preroll_ad_asset_hostname = f;\n      }\n    }\n    this.pm.data.ad_asset_url = a2 == null ? void 0 : a2.ad_asset_url, this.pm.data.ad_tag_url = a2 == null ? void 0 : a2.ad_tag_url, this.pm.data.ad_creative_id = a2 == null ? void 0 : a2.ad_creative_id, this.pm.data.ad_id = a2 == null ? void 0 : a2.ad_id, this.pm.data.ad_universal_id = a2 == null ? void 0 : a2.ad_universal_id;\n  } }]), r10;\n}();\nvar Jt = Si;\nvar je = B(J());\nvar Ri = function r5(e) {\n  \"use strict\";\n  S(this, r5);\n  var t2, a2, i2 = function() {\n    e.disableRebufferTracking || (O(e.data, \"view_waiting_rebuffer_count\", 1), t2 = A.now(), a2 = je.default.setInterval(function() {\n      if (t2) {\n        var h3 = A.now();\n        O(e.data, \"view_waiting_rebuffer_duration\", h3 - t2), t2 = h3;\n      }\n    }, 250));\n  }, n2 = function() {\n    e.disableRebufferTracking || t2 && (O(e.data, \"view_waiting_rebuffer_duration\", A.now() - t2), t2 = false, je.default.clearInterval(a2));\n  }, o = false, s = function() {\n    o = true;\n  }, f = function() {\n    o = false, n2();\n  };\n  e.on(\"waiting\", function() {\n    o && i2();\n  }), e.on(\"playing\", function() {\n    n2(), s();\n  }), e.on(\"pause\", f), e.on(\"seeking\", f);\n};\nvar Qt = Ri;\nvar qi = function r6(e) {\n  \"use strict\";\n  var t2 = this;\n  S(this, r6), d(this, \"lastWallClockTime\", void 0);\n  var a2 = function() {\n    t2.lastWallClockTime = A.now(), e.on(\"before*\", i2);\n  }, i2 = function(n2) {\n    var o = A.now(), s = t2.lastWallClockTime;\n    t2.lastWallClockTime = o, o - s > 3e4 && (e.emit(\"devicesleep\", { viewer_time: s }), Object.assign(e.data, { viewer_time: s }), e.send(\"devicesleep\"), e.emit(\"devicewake\", { viewer_time: o }), Object.assign(e.data, { viewer_time: o }), e.send(\"devicewake\"));\n  };\n  e.one(\"playbackheartbeat\", a2), e.on(\"playbackheartbeatend\", function() {\n    e.off(\"before*\", i2), e.one(\"playbackheartbeat\", a2);\n  });\n};\nvar zt = qi;\nvar Me = B(J());\nvar Je = B(Xt());\nvar Qe = B(er());\nvar tr = \"muxData\";\nvar rr = function() {\n  var e;\n  try {\n    e = Je.default.parse(Qe.default.get(tr) || \"\");\n  } catch (t2) {\n    e = {};\n  }\n  return e;\n};\nvar ir = function(e) {\n  try {\n    Qe.default.set(tr, Je.default.stringify(e), { expires: 365 });\n  } catch (t2) {\n  }\n};\nvar ar = function() {\n  var e = rr();\n  return e.mux_viewer_id = e.mux_viewer_id || X(), e.msn = e.msn || Math.random(), ir(e), { mux_viewer_id: e.mux_viewer_id, mux_sample_number: e.msn };\n};\nvar nr = function() {\n  var e = rr(), t2 = A.now();\n  return e.session_start && (e.sst = e.session_start, delete e.session_start), e.session_id && (e.sid = e.session_id, delete e.session_id), e.session_expires && (e.sex = e.session_expires, delete e.session_expires), (!e.sex || e.sex < t2) && (e.sid = X(), e.sst = t2), e.sex = t2 + 25 * 60 * 1e3, ir(e), { session_id: e.sid, session_start: e.sst, session_expires: e.sex };\n};\nfunction ze(r10, e) {\n  var t2 = e.beaconCollectionDomain, a2 = e.beaconDomain;\n  if (t2) return \"https://\" + t2;\n  r10 = r10 || \"inferred\";\n  var i2 = a2 || \"litix.io\";\n  return r10.match(/^[a-z0-9]+$/) ? \"https://\" + r10 + \".\" + i2 : \"https://img.litix.io/a.gif\";\n}\nvar or = B(J());\nvar sr = function() {\n  var e;\n  switch (ur()) {\n    case \"cellular\":\n      e = \"cellular\";\n      break;\n    case \"ethernet\":\n      e = \"wired\";\n      break;\n    case \"wifi\":\n      e = \"wifi\";\n      break;\n    case void 0:\n      break;\n    default:\n      e = \"other\";\n  }\n  return e;\n};\nvar ur = function() {\n  var e = or.default.navigator, t2 = e && (e.connection || e.mozConnection || e.webkitConnection);\n  return t2 && t2.type;\n};\nsr.getConnectionFromAPI = ur;\nvar dr = sr;\nvar Ni = { a: \"env\", b: \"beacon\", c: \"custom\", d: \"ad\", e: \"event\", f: \"experiment\", i: \"internal\", m: \"mux\", n: \"response\", p: \"player\", q: \"request\", r: \"retry\", s: \"session\", t: \"timestamp\", u: \"viewer\", v: \"video\", w: \"page\", x: \"view\", y: \"sub\" };\nvar Pi = cr(Ni);\nvar Ci = { ad: \"ad\", ag: \"aggregate\", ap: \"api\", al: \"application\", ar: \"architecture\", as: \"asset\", au: \"autoplay\", av: \"average\", bi: \"bitrate\", br: \"break\", bw: \"browser\", by: \"bytes\", bz: \"business\", ca: \"cached\", cb: \"cancel\", cc: \"codec\", cd: \"code\", cg: \"category\", ch: \"changed\", ck: \"clicked\", cl: \"canceled\", cn: \"config\", co: \"count\", ce: \"counter\", cp: \"complete\", cr: \"creative\", ct: \"content\", cu: \"current\", cx: \"connection\", cz: \"context\", dg: \"downscaling\", dm: \"domain\", dn: \"cdn\", do: \"downscale\", dr: \"drm\", dp: \"dropped\", du: \"duration\", dv: \"device\", ec: \"encoding\", ed: \"edge\", en: \"end\", eg: \"engine\", em: \"embed\", er: \"error\", ep: \"experiments\", es: \"errorcode\", et: \"errortext\", ee: \"event\", ev: \"events\", ex: \"expires\", ez: \"exception\", fa: \"failed\", fi: \"first\", fm: \"family\", ft: \"format\", fp: \"fps\", fq: \"frequency\", fr: \"frame\", fs: \"fullscreen\", ha: \"has\", hb: \"holdback\", he: \"headers\", ho: \"host\", hn: \"hostname\", ht: \"height\", id: \"id\", ii: \"init\", in: \"instance\", ip: \"ip\", is: \"is\", ke: \"key\", la: \"language\", lb: \"labeled\", le: \"level\", li: \"live\", ld: \"loaded\", lo: \"load\", ls: \"lists\", lt: \"latency\", ma: \"max\", md: \"media\", me: \"message\", mf: \"manifest\", mi: \"mime\", ml: \"midroll\", mm: \"min\", mn: \"manufacturer\", mo: \"model\", mx: \"mux\", ne: \"newest\", nm: \"name\", no: \"number\", on: \"on\", os: \"os\", pa: \"paused\", pb: \"playback\", pd: \"producer\", pe: \"percentage\", pf: \"played\", pg: \"program\", ph: \"playhead\", pi: \"plugin\", pl: \"preroll\", pn: \"playing\", po: \"poster\", pr: \"preload\", ps: \"position\", pt: \"part\", py: \"property\", ra: \"rate\", rd: \"requested\", re: \"rebuffer\", rf: \"rendition\", rm: \"remote\", ro: \"ratio\", rp: \"response\", rq: \"request\", rs: \"requests\", sa: \"sample\", sd: \"skipped\", se: \"session\", sk: \"seek\", sm: \"stream\", so: \"source\", sq: \"sequence\", sr: \"series\", st: \"start\", su: \"startup\", sv: \"server\", sw: \"software\", sy: \"severity\", ta: \"tag\", tc: \"tech\", te: \"text\", tg: \"target\", th: \"throughput\", ti: \"time\", tl: \"total\", to: \"to\", tt: \"title\", ty: \"type\", ug: \"upscaling\", un: \"universal\", up: \"upscale\", ur: \"url\", us: \"user\", va: \"variant\", vd: \"viewed\", vi: \"video\", ve: \"version\", vw: \"view\", vr: \"viewer\", wd: \"width\", wa: \"watch\", wt: \"waiting\" };\nvar lr = cr(Ci);\nfunction cr(r10) {\n  var e = {};\n  for (var t2 in r10) r10.hasOwnProperty(t2) && (e[r10[t2]] = t2);\n  return e;\n}\nfunction _e(r10) {\n  var e = {}, t2 = {};\n  return Object.keys(r10).forEach(function(a2) {\n    var i2 = false;\n    if (r10.hasOwnProperty(a2) && r10[a2] !== void 0) {\n      var n2 = a2.split(\"_\"), o = n2[0], s = Pi[o];\n      s || (I.info(\"Data key word `\" + n2[0] + \"` not expected in \" + a2), s = o + \"_\"), n2.splice(1).forEach(function(f) {\n        f === \"url\" && (i2 = true), lr[f] ? s += lr[f] : Number(f) && Math.floor(Number(f)) === Number(f) ? s += f : (I.info(\"Data key word `\" + f + \"` not expected in \" + a2), s += \"_\" + f + \"_\");\n      }), i2 ? t2[s] = r10[a2] : e[s] = r10[a2];\n    }\n  }), Object.assign(e, t2);\n}\nvar te = B(J());\nvar Mi = { maxBeaconSize: 300, maxQueueLength: 3600, baseTimeBetweenBeacons: 1e4, maxPayloadKBSize: 500 };\nvar Hi = 56 * 1024;\nvar Bi = [\"hb\", \"requestcompleted\", \"requestfailed\", \"requestcanceled\"];\nvar Ui = \"https://img.litix.io\";\nvar K = function(e) {\n  var t2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n  this._beaconUrl = e || Ui, this._eventQueue = [], this._postInFlight = false, this._failureCount = 0, this._sendTimeout = false, this._options = Object.assign({}, Mi, t2);\n};\nK.prototype.queueEvent = function(r10, e) {\n  var t2 = Object.assign({}, e);\n  return this._eventQueue.length <= this._options.maxQueueLength || r10 === \"eventrateexceeded\" ? (this._eventQueue.push(t2), this._sendTimeout || this._startBeaconSending(), this._eventQueue.length <= this._options.maxQueueLength) : false;\n};\nK.prototype.flushEvents = function() {\n  var r10 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;\n  if (r10 && this._eventQueue.length === 1) {\n    this._eventQueue.pop();\n    return;\n  }\n  this._eventQueue.length && this._sendBeaconQueue(), this._startBeaconSending();\n};\nK.prototype.destroy = function() {\n  var r10 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;\n  this.destroyed = true, r10 ? this._clearBeaconQueue() : this.flushEvents(), te.default.clearTimeout(this._sendTimeout);\n};\nK.prototype._clearBeaconQueue = function() {\n  var r10 = this._eventQueue.length > this._options.maxBeaconSize ? this._eventQueue.length - this._options.maxBeaconSize : 0, e = this._eventQueue.slice(r10);\n  r10 > 0 && Object.assign(e[e.length - 1], _e({ mux_view_message: \"event queue truncated\" }));\n  var t2 = this._createPayload(e);\n  fr(this._beaconUrl, t2, true, function() {\n  });\n};\nK.prototype._sendBeaconQueue = function() {\n  var r10 = this;\n  if (!this._postInFlight) {\n    var e = this._eventQueue.slice(0, this._options.maxBeaconSize);\n    this._eventQueue = this._eventQueue.slice(this._options.maxBeaconSize), this._postInFlight = true;\n    var t2 = this._createPayload(e), a2 = A.now();\n    fr(this._beaconUrl, t2, false, function(i2, n2) {\n      n2 ? (r10._eventQueue = e.concat(r10._eventQueue), r10._failureCount += 1, I.info(\"Error sending beacon: \" + n2)) : r10._failureCount = 0, r10._roundTripTime = A.now() - a2, r10._postInFlight = false;\n    });\n  }\n};\nK.prototype._getNextBeaconTime = function() {\n  if (!this._failureCount) return this._options.baseTimeBetweenBeacons;\n  var r10 = Math.pow(2, this._failureCount - 1);\n  return r10 = r10 * Math.random(), (1 + r10) * this._options.baseTimeBetweenBeacons;\n};\nK.prototype._startBeaconSending = function() {\n  var r10 = this;\n  te.default.clearTimeout(this._sendTimeout), !this.destroyed && (this._sendTimeout = te.default.setTimeout(function() {\n    r10._eventQueue.length && r10._sendBeaconQueue(), r10._startBeaconSending();\n  }, this._getNextBeaconTime()));\n};\nK.prototype._createPayload = function(r10) {\n  var e = this, t2 = { transmission_timestamp: Math.round(A.now()) };\n  this._roundTripTime && (t2.rtt_ms = Math.round(this._roundTripTime));\n  var a2, i2, n2, o = function() {\n    a2 = JSON.stringify({ metadata: t2, events: i2 || r10 }), n2 = a2.length / 1024;\n  }, s = function() {\n    return n2 <= e._options.maxPayloadKBSize;\n  };\n  return o(), s() || (I.info(\"Payload size is too big (\" + n2 + \" kb). Removing unnecessary events.\"), i2 = r10.filter(function(f) {\n    return Bi.indexOf(f.e) === -1;\n  }), o()), s() || (I.info(\"Payload size still too big (\" + n2 + \" kb). Cropping fields..\"), i2.forEach(function(f) {\n    for (var h3 in f) {\n      var T3 = f[h3], g2 = 50 * 1024;\n      typeof T3 == \"string\" && T3.length > g2 && (f[h3] = T3.substring(0, g2));\n    }\n  }), o()), a2;\n};\nvar Fi = function(r10) {\n  return r10.length <= Hi;\n};\nvar fr = function(r10, e, t2, a2) {\n  if (t2 && navigator && navigator.sendBeacon && navigator.sendBeacon(r10, e)) {\n    a2();\n    return;\n  }\n  if (te.default.fetch) {\n    te.default.fetch(r10, { method: \"POST\", body: e, headers: { \"Content-Type\": \"text/plain\" }, keepalive: Fi(e) }).then(function(n2) {\n      return a2(null, n2.ok ? null : \"Error\");\n    }).catch(function(n2) {\n      return a2(null, n2);\n    });\n    return;\n  }\n  if (te.default.XMLHttpRequest) {\n    var i2 = new te.default.XMLHttpRequest();\n    i2.onreadystatechange = function() {\n      if (i2.readyState === 4) return a2(null, i2.status !== 200 ? \"error\" : void 0);\n    }, i2.open(\"POST\", r10), i2.setRequestHeader(\"Content-Type\", \"text/plain\"), i2.send(e);\n    return;\n  }\n  a2();\n};\nvar _r = K;\nvar Vi = [\"env_key\", \"view_id\", \"view_sequence_number\", \"player_sequence_number\", \"beacon_domain\", \"player_playhead_time\", \"viewer_time\", \"mux_api_version\", \"event\", \"video_id\", \"player_instance_id\", \"player_error_code\", \"player_error_message\", \"player_error_context\", \"player_error_severity\", \"player_error_business_exception\"];\nvar Wi = [\"adplay\", \"adplaying\", \"adpause\", \"adfirstquartile\", \"admidpoint\", \"adthirdquartile\", \"adended\", \"adresponse\", \"adrequest\"];\nvar ji = [\"ad_id\", \"ad_creative_id\", \"ad_universal_id\"];\nvar Gi = [\"viewstart\", \"error\", \"ended\", \"viewend\"];\nvar Ji = 10 * 60 * 1e3;\nvar pr = function() {\n  \"use strict\";\n  function r10(e, t2) {\n    var a2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n    S(this, r10);\n    var i2, n2, o, s, f, h3, T3, g2, x4, v4, l, w2;\n    d(this, \"mux\", void 0), d(this, \"envKey\", void 0), d(this, \"options\", void 0), d(this, \"eventQueue\", void 0), d(this, \"sampleRate\", void 0), d(this, \"disableCookies\", void 0), d(this, \"respectDoNotTrack\", void 0), d(this, \"previousBeaconData\", void 0), d(this, \"lastEventTime\", void 0), d(this, \"rateLimited\", void 0), d(this, \"pageLevelData\", void 0), d(this, \"viewerData\", void 0), this.mux = e, this.envKey = t2, this.options = a2, this.previousBeaconData = null, this.lastEventTime = 0, this.rateLimited = false, this.eventQueue = new _r(ze(this.envKey, this.options));\n    var D3;\n    this.sampleRate = (D3 = this.options.sampleRate) !== null && D3 !== void 0 ? D3 : 1;\n    var p3;\n    this.disableCookies = (p3 = this.options.disableCookies) !== null && p3 !== void 0 ? p3 : false;\n    var _3;\n    this.respectDoNotTrack = (_3 = this.options.respectDoNotTrack) !== null && _3 !== void 0 ? _3 : false, this.previousBeaconData = null, this.lastEventTime = 0, this.rateLimited = false, this.pageLevelData = { mux_api_version: this.mux.API_VERSION, mux_embed: this.mux.NAME, mux_embed_version: this.mux.VERSION, viewer_application_name: (i2 = this.options.platform) === null || i2 === void 0 ? void 0 : i2.name, viewer_application_version: (n2 = this.options.platform) === null || n2 === void 0 ? void 0 : n2.version, viewer_application_engine: (o = this.options.platform) === null || o === void 0 ? void 0 : o.layout, viewer_device_name: (s = this.options.platform) === null || s === void 0 ? void 0 : s.product, viewer_device_category: \"\", viewer_device_manufacturer: (f = this.options.platform) === null || f === void 0 ? void 0 : f.manufacturer, viewer_os_family: (T3 = this.options.platform) === null || T3 === void 0 || (h3 = T3.os) === null || h3 === void 0 ? void 0 : h3.family, viewer_os_architecture: (x4 = this.options.platform) === null || x4 === void 0 || (g2 = x4.os) === null || g2 === void 0 ? void 0 : g2.architecture, viewer_os_version: (l = this.options.platform) === null || l === void 0 || (v4 = l.os) === null || v4 === void 0 ? void 0 : v4.version, viewer_connection_type: dr(), page_url: Me.default === null || Me.default === void 0 || (w2 = Me.default.location) === null || w2 === void 0 ? void 0 : w2.href }, this.viewerData = this.disableCookies ? {} : ar();\n  }\n  return M(r10, [{ key: \"send\", value: function(t2, a2) {\n    if (!(!t2 || !(a2 != null && a2.view_id))) {\n      if (this.respectDoNotTrack && de()) return I.info(\"Not sending `\" + t2 + \"` because Do Not Track is enabled\");\n      if (!a2 || typeof a2 != \"object\") return I.error(\"A data object was expected in send() but was not provided\");\n      var i2 = this.disableCookies ? {} : nr(), n2 = ce(ne({}, this.pageLevelData, a2, i2, this.viewerData), { event: t2, env_key: this.envKey });\n      n2.user_id && (n2.viewer_user_id = n2.user_id, delete n2.user_id);\n      var o, s = ((o = n2.mux_sample_number) !== null && o !== void 0 ? o : 0) >= this.sampleRate, f = this._deduplicateBeaconData(t2, n2), h3 = _e(f);\n      if (this.lastEventTime = this.mux.utils.now(), s) return I.info(\"Not sending event due to sample rate restriction\", t2, n2, h3);\n      if (this.envKey || I.info(\"Missing environment key (envKey) - beacons will be dropped if the video source is not a valid mux video URL\", t2, n2, h3), !this.rateLimited) {\n        if (I.info(\"Sending event\", t2, n2, h3), this.rateLimited = !this.eventQueue.queueEvent(t2, h3), this.mux.WINDOW_UNLOADING && t2 === \"viewend\") this.eventQueue.destroy(true);\n        else if (this.mux.WINDOW_HIDDEN && t2 === \"hb\" ? this.eventQueue.flushEvents(true) : Gi.indexOf(t2) >= 0 && this.eventQueue.flushEvents(), this.rateLimited) return n2.event = \"eventrateexceeded\", h3 = _e(n2), this.eventQueue.queueEvent(n2.event, h3), I.error(\"Beaconing disabled due to rate limit.\");\n      }\n    }\n  } }, { key: \"destroy\", value: function() {\n    this.eventQueue.destroy(false);\n  } }, { key: \"_deduplicateBeaconData\", value: function(t2, a2) {\n    var i2 = this, n2 = {}, o = a2.view_id;\n    if (o === \"-1\" || t2 === \"viewstart\" || t2 === \"viewend\" || !this.previousBeaconData || this.mux.utils.now() - this.lastEventTime >= Ji) n2 = ne({}, a2), o && (this.previousBeaconData = n2), o && t2 === \"viewend\" && (this.previousBeaconData = null);\n    else {\n      var s = t2.indexOf(\"request\") === 0;\n      Object.entries(a2).forEach(function(f) {\n        var h3 = j(f, 2), T3 = h3[0], g2 = h3[1];\n        i2.previousBeaconData && (g2 !== i2.previousBeaconData[T3] || Vi.indexOf(T3) > -1 || i2.objectHasChanged(s, T3, g2, i2.previousBeaconData[T3]) || i2.eventRequiresKey(t2, T3)) && (n2[T3] = g2, i2.previousBeaconData[T3] = g2);\n      });\n    }\n    return n2;\n  } }, { key: \"objectHasChanged\", value: function(t2, a2, i2, n2) {\n    return !t2 || a2.indexOf(\"request_\") !== 0 ? false : a2 === \"request_response_headers\" || typeof i2 != \"object\" || typeof n2 != \"object\" ? true : Object.keys(i2 || {}).length !== Object.keys(n2 || {}).length;\n  } }, { key: \"eventRequiresKey\", value: function(t2, a2) {\n    return !!(t2 === \"renditionchange\" && a2.indexOf(\"video_source_\") === 0 || ji.includes(a2) && Wi.includes(t2));\n  } }]), r10;\n}();\nvar Qi = function r7(e) {\n  \"use strict\";\n  S(this, r7);\n  var t2 = 0, a2 = 0, i2 = 0, n2 = 0, o = 0, s = 0, f = 0, h3 = function(x4, v4) {\n    var l = v4.request_start, w2 = v4.request_response_start, D3 = v4.request_response_end, p3 = v4.request_bytes_loaded;\n    n2++;\n    var _3, c4;\n    if (w2 ? (_3 = w2 - (l != null ? l : 0), c4 = (D3 != null ? D3 : 0) - w2) : c4 = (D3 != null ? D3 : 0) - (l != null ? l : 0), c4 > 0 && p3 && p3 > 0) {\n      var u3 = p3 / c4 * 8e3;\n      o++, a2 += p3, i2 += c4, e.data.view_min_request_throughput = Math.min(e.data.view_min_request_throughput || 1 / 0, u3), e.data.view_average_request_throughput = a2 / i2 * 8e3, e.data.view_request_count = n2, _3 > 0 && (t2 += _3, e.data.view_max_request_latency = Math.max(e.data.view_max_request_latency || 0, _3), e.data.view_average_request_latency = t2 / o);\n    }\n  }, T3 = function(x4, v4) {\n    n2++, s++, e.data.view_request_count = n2, e.data.view_request_failed_count = s;\n  }, g2 = function(x4, v4) {\n    n2++, f++, e.data.view_request_count = n2, e.data.view_request_canceled_count = f;\n  };\n  e.on(\"requestcompleted\", h3), e.on(\"requestfailed\", T3), e.on(\"requestcanceled\", g2);\n};\nvar vr = Qi;\nvar zi = 60 * 60 * 1e3;\nvar Ki = function r8(e) {\n  \"use strict\";\n  var t2 = this;\n  S(this, r8), d(this, \"_lastEventTime\", void 0), e.on(\"before*\", function(a2, i2) {\n    var n2 = i2.viewer_time, o = A.now(), s = t2._lastEventTime;\n    if (t2._lastEventTime = o, s && o - s > zi) {\n      var f = Object.keys(e.data).reduce(function(h3, T3) {\n        return T3.indexOf(\"video_\") === 0 ? Object.assign(h3, d({}, T3, e.data[T3])) : h3;\n      }, {});\n      e.mux.log.info(\"Received event after at least an hour inactivity, creating a new view\"), e.emit(\"viewinit\", Object.assign({ viewer_time: n2 }, f)), e.playbackHeartbeat._playheadShouldBeProgressing && a2.type !== \"play\" && a2.type !== \"adbreakstart\" && (e.emit(\"play\", { viewer_time: n2 }), a2.type !== \"playing\" && e.emit(\"playing\", { viewer_time: n2 }));\n    }\n  });\n};\nvar mr = Ki;\nvar Yi = [\"viewstart\", \"ended\", \"loadstart\", \"pause\", \"play\", \"playing\", \"ratechange\", \"waiting\", \"adplay\", \"adpause\", \"adended\", \"aderror\", \"adplaying\", \"adrequest\", \"adresponse\", \"adbreakstart\", \"adbreakend\", \"adfirstquartile\", \"admidpoint\", \"adthirdquartile\", \"rebufferstart\", \"rebufferend\", \"seeked\", \"error\", \"hb\", \"requestcompleted\", \"requestfailed\", \"requestcanceled\", \"renditionchange\"];\nvar Xi = function(r10) {\n  \"use strict\";\n  Tt(t2, r10);\n  var e = xt(t2);\n  function t2(a2, i2, n2) {\n    S(this, t2);\n    var o;\n    o = e.call(this), d(b(o), \"DOM_CONTENT_LOADED_EVENT_END\", void 0), d(b(o), \"NAVIGATION_START\", void 0), d(b(o), \"_destroyed\", void 0), d(b(o), \"_heartBeatTimeout\", void 0), d(b(o), \"adTracker\", void 0), d(b(o), \"dashjs\", void 0), d(b(o), \"data\", void 0), d(b(o), \"disablePlayheadRebufferTracking\", void 0), d(b(o), \"disableRebufferTracking\", void 0), d(b(o), \"errorTracker\", void 0), d(b(o), \"errorTranslator\", void 0), d(b(o), \"getAdData\", void 0), d(b(o), \"getPlayheadTime\", void 0), d(b(o), \"getStateData\", void 0), d(b(o), \"hlsjs\", void 0), d(b(o), \"id\", void 0), d(b(o), \"longResumeTracker\", void 0), d(b(o), \"minimumRebufferDuration\", void 0), d(b(o), \"mux\", void 0), d(b(o), \"oldEmit\", void 0), d(b(o), \"playbackEventDispatcher\", void 0), d(b(o), \"playbackHeartbeat\", void 0), d(b(o), \"playbackHeartbeatTime\", void 0), d(b(o), \"playheadTime\", void 0), d(b(o), \"seekingTracker\", void 0), d(b(o), \"sustainedRebufferThreshold\", void 0), d(b(o), \"watchTimeTracker\", void 0), d(b(o), \"currentFragmentPDT\", void 0), d(b(o), \"currentFragmentStart\", void 0), o.DOM_CONTENT_LOADED_EVENT_END = le.domContentLoadedEventEnd(), o.NAVIGATION_START = le.navigationStart();\n    var s = { debug: false, minimumRebufferDuration: 250, sustainedRebufferThreshold: 1e3, playbackHeartbeatTime: 25, beaconDomain: \"litix.io\", sampleRate: 1, disableCookies: false, respectDoNotTrack: false, disableRebufferTracking: false, disablePlayheadRebufferTracking: false, errorTranslator: function(v4) {\n      return v4;\n    } };\n    o.mux = a2, o.id = i2, n2 != null && n2.beaconDomain && o.mux.log.warn(\"The `beaconDomain` setting has been deprecated in favor of `beaconCollectionDomain`. Please change your integration to use `beaconCollectionDomain` instead of `beaconDomain`.\"), n2 = Object.assign(s, n2), n2.data = n2.data || {}, n2.data.property_key && (n2.data.env_key = n2.data.property_key, delete n2.data.property_key), I.setLevel(n2.debug ? \"debug\" : \"warn\"), o.getPlayheadTime = n2.getPlayheadTime, o.getStateData = n2.getStateData || function() {\n      return {};\n    }, o.getAdData = n2.getAdData || function() {\n    }, o.minimumRebufferDuration = n2.minimumRebufferDuration, o.sustainedRebufferThreshold = n2.sustainedRebufferThreshold, o.playbackHeartbeatTime = n2.playbackHeartbeatTime, o.disableRebufferTracking = n2.disableRebufferTracking, o.disableRebufferTracking && o.mux.log.warn(\"Disabling rebuffer tracking. This should only be used in specific circumstances as a last resort when your player is known to unreliably track rebuffering.\"), o.disablePlayheadRebufferTracking = n2.disablePlayheadRebufferTracking, o.errorTranslator = n2.errorTranslator, o.playbackEventDispatcher = new pr(a2, n2.data.env_key, n2), o.data = { player_instance_id: X(), mux_sample_rate: n2.sampleRate, beacon_domain: n2.beaconCollectionDomain || n2.beaconDomain }, o.data.view_sequence_number = 1, o.data.player_sequence_number = 1, o.oldEmit = o.emit, o.emit = function(v4, l) {\n      l = Object.assign({ viewer_time: this.mux.utils.now() }, l), this.oldEmit(v4, l);\n    };\n    var f = function() {\n      typeof this.data.view_start == \"undefined\" && (this.data.view_start = this.mux.utils.now(), this.emit(\"viewstart\"));\n    }.bind(b(o));\n    o.on(\"viewinit\", function(v4, l) {\n      this._resetVideoData(), this._resetViewData(), this._resetErrorData(), this._updateStateData(), Object.assign(this.data, l), this._initializeViewData(), this.one(\"play\", f), this.one(\"adbreakstart\", f);\n    });\n    var h3 = function(v4) {\n      this.emit(\"viewend\"), this.send(\"viewend\"), this.emit(\"viewinit\", v4);\n    }.bind(b(o));\n    if (o.on(\"videochange\", function(v4, l) {\n      h3(l);\n    }), o.on(\"programchange\", function(v4, l) {\n      this.data.player_is_paused && this.mux.log.warn(\"The `programchange` event is intended to be used when the content changes mid playback without the video source changing, however the video is not currently playing. If the video source is changing please use the videochange event otherwise you will lose startup time information.\"), h3(Object.assign(l, { view_program_changed: true })), f(), this.emit(\"play\"), this.emit(\"playing\");\n    }), o.on(\"fragmentchange\", function(v4, l) {\n      this.currentFragmentPDT = l.currentFragmentPDT, this.currentFragmentStart = l.currentFragmentStart;\n    }), o.on(\"destroy\", o.destroy), typeof window != \"undefined\" && typeof window.addEventListener == \"function\" && typeof window.removeEventListener == \"function\") {\n      var T3 = function() {\n        var v4 = typeof o.data.view_start != \"undefined\";\n        o.mux.WINDOW_HIDDEN = document.visibilityState === \"hidden\", v4 && o.mux.WINDOW_HIDDEN && (o.data.player_is_paused || o.emit(\"hb\"));\n      };\n      window.addEventListener(\"visibilitychange\", T3, false);\n      var g2 = function(v4) {\n        v4.persisted || o.destroy();\n      };\n      window.addEventListener(\"pagehide\", g2, false), o.on(\"destroy\", function() {\n        window.removeEventListener(\"visibilitychange\", T3), window.removeEventListener(\"pagehide\", g2);\n      });\n    }\n    o.on(\"playerready\", function(v4, l) {\n      Object.assign(this.data, l);\n    }), Yi.forEach(function(v4) {\n      o.on(v4, function(l, w2) {\n        v4.indexOf(\"ad\") !== 0 && this._updateStateData(), Object.assign(this.data, w2), this._sanitizeData();\n      }), o.on(\"after\" + v4, function() {\n        (v4 !== \"error\" || this.errorTracker.viewErrored) && this.send(v4);\n      });\n    }), o.on(\"viewend\", function(v4, l) {\n      Object.assign(o.data, l);\n    });\n    var x4 = function(l) {\n      var w2 = this.mux.utils.now();\n      this.data.player_init_time && (this.data.player_startup_time = w2 - this.data.player_init_time), !this.mux.PLAYER_TRACKED && this.NAVIGATION_START && (this.mux.PLAYER_TRACKED = true, (this.data.player_init_time || this.DOM_CONTENT_LOADED_EVENT_END) && (this.data.page_load_time = Math.min(this.data.player_init_time || 1 / 0, this.DOM_CONTENT_LOADED_EVENT_END || 1 / 0) - this.NAVIGATION_START)), this.send(\"playerready\"), delete this.data.player_startup_time, delete this.data.page_load_time;\n    };\n    return o.one(\"playerready\", x4), o.longResumeTracker = new mr(b(o)), o.errorTracker = new Pt(b(o)), new zt(b(o)), o.seekingTracker = new jt(b(o)), o.playheadTime = new Ht(b(o)), o.playbackHeartbeat = new Nt(b(o)), new Wt(b(o)), o.watchTimeTracker = new Ct(b(o)), new Mt(b(o)), o.adTracker = new Jt(b(o)), new Ft(b(o)), new Ut(b(o)), new Vt(b(o)), new Qt(b(o)), new vr(b(o)), n2.hlsjs && o.addHLSJS(n2), n2.dashjs && o.addDashJS(n2), o.emit(\"viewinit\", n2.data), o;\n  }\n  return M(t2, [{ key: \"destroy\", value: function() {\n    this._destroyed || (this._destroyed = true, typeof this.data.view_start != \"undefined\" && (this.emit(\"viewend\"), this.send(\"viewend\")), this.playbackEventDispatcher.destroy(), this.removeHLSJS(), this.removeDashJS(), window.clearTimeout(this._heartBeatTimeout));\n  } }, { key: \"send\", value: function(i2) {\n    if (this.data.view_id) {\n      var n2 = Object.assign({}, this.data), o = [\"player_program_time\", \"player_manifest_newest_program_time\", \"player_live_edge_program_time\", \"player_program_time\", \"video_holdback\", \"video_part_holdback\", \"video_target_duration\", \"video_part_target_duration\"];\n      if (n2.video_source_is_live === void 0 && (n2.player_source_duration === 1 / 0 || n2.video_source_duration === 1 / 0 ? n2.video_source_is_live = true : (n2.player_source_duration > 0 || n2.video_source_duration > 0) && (n2.video_source_is_live = false)), n2.video_source_is_live || o.forEach(function(T3) {\n        n2[T3] = void 0;\n      }), n2.video_source_url = n2.video_source_url || n2.player_source_url, n2.video_source_url) {\n        var s = j(ee(n2.video_source_url), 2), f = s[0], h3 = s[1];\n        n2.video_source_domain = h3, n2.video_source_hostname = f;\n      }\n      delete n2.ad_request_id, this.playbackEventDispatcher.send(i2, n2), this.data.view_sequence_number++, this.data.player_sequence_number++, this._restartHeartBeat(), i2 === \"viewend\" && delete this.data.view_id;\n    }\n  } }, { key: \"_updateStateData\", value: function() {\n    Object.assign(this.data, this.getStateData()), this.playheadTime._updatePlayheadTime(), this._sanitizeData();\n  } }, { key: \"_sanitizeData\", value: function() {\n    var i2 = this, n2 = [\"player_width\", \"player_height\", \"video_source_width\", \"video_source_height\", \"player_playhead_time\", \"video_source_bitrate\"];\n    n2.forEach(function(s) {\n      var f = parseInt(i2.data[s], 10);\n      i2.data[s] = isNaN(f) ? void 0 : f;\n    });\n    var o = [\"player_source_url\", \"video_source_url\"];\n    o.forEach(function(s) {\n      if (i2.data[s]) {\n        var f = i2.data[s].toLowerCase();\n        (f.indexOf(\"data:\") === 0 || f.indexOf(\"blob:\") === 0) && (i2.data[s] = \"MSE style URL\");\n      }\n    });\n  } }, { key: \"_resetVideoData\", value: function() {\n    var i2 = this;\n    Object.keys(this.data).forEach(function(n2) {\n      n2.indexOf(\"video_\") === 0 && delete i2.data[n2];\n    });\n  } }, { key: \"_resetViewData\", value: function() {\n    var i2 = this;\n    Object.keys(this.data).forEach(function(n2) {\n      n2.indexOf(\"view_\") === 0 && delete i2.data[n2];\n    }), this.data.view_sequence_number = 1;\n  } }, { key: \"_resetErrorData\", value: function() {\n    delete this.data.player_error_code, delete this.data.player_error_message, delete this.data.player_error_context, delete this.data.player_error_severity, delete this.data.player_error_business_exception;\n  } }, { key: \"_initializeViewData\", value: function() {\n    var i2 = this, n2 = this.data.view_id = X(), o = function() {\n      n2 === i2.data.view_id && O(i2.data, \"player_view_count\", 1);\n    };\n    this.data.player_is_paused ? this.one(\"play\", o) : o();\n  } }, { key: \"_restartHeartBeat\", value: function() {\n    var i2 = this;\n    window.clearTimeout(this._heartBeatTimeout), this._heartBeatTimeout = window.setTimeout(function() {\n      i2.data.player_is_paused || i2.emit(\"hb\");\n    }, 1e4);\n  } }, { key: \"addHLSJS\", value: function(i2) {\n    if (!i2.hlsjs) {\n      this.mux.log.warn(\"You must pass a valid hlsjs instance in order to track it.\");\n      return;\n    }\n    if (this.hlsjs) {\n      this.mux.log.warn(\"An instance of HLS.js is already being monitored for this player.\");\n      return;\n    }\n    this.hlsjs = i2.hlsjs, St(this.mux, this.id, i2.hlsjs, {}, i2.Hls || window.Hls);\n  } }, { key: \"removeHLSJS\", value: function() {\n    this.hlsjs && (Rt(this.hlsjs), this.hlsjs = void 0);\n  } }, { key: \"addDashJS\", value: function(i2) {\n    if (!i2.dashjs) {\n      this.mux.log.warn(\"You must pass a valid dashjs instance in order to track it.\");\n      return;\n    }\n    if (this.dashjs) {\n      this.mux.log.warn(\"An instance of Dash.js is already being monitored for this player.\");\n      return;\n    }\n    this.dashjs = i2.dashjs, At(this.mux, this.id, i2.dashjs);\n  } }, { key: \"removeDashJS\", value: function() {\n    this.dashjs && (Ot(this.dashjs), this.dashjs = void 0);\n  } }]), t2;\n}(Lt);\nvar hr = Xi;\nke();\nvar ve = B(Wr());\nfunction at() {\n  return ve.default && !!(ve.default.fullscreenElement || ve.default.webkitFullscreenElement || ve.default.mozFullScreenElement || ve.default.msFullscreenElement);\n}\nvar Ea = [\"loadstart\", \"pause\", \"play\", \"playing\", \"seeking\", \"seeked\", \"timeupdate\", \"ratechange\", \"stalled\", \"waiting\", \"error\", \"ended\"];\nvar ka = { 1: \"MEDIA_ERR_ABORTED\", 2: \"MEDIA_ERR_NETWORK\", 3: \"MEDIA_ERR_DECODE\", 4: \"MEDIA_ERR_SRC_NOT_SUPPORTED\" };\nfunction nt(r10, e, t2) {\n  var a2 = j(Ee(e), 3), i2 = a2[0], n2 = a2[1], o = a2[2], s = r10.log, f = r10.utils.getComputedStyle, h3 = r10.utils.secondsToMs, T3 = { automaticErrorTracking: true };\n  if (i2) {\n    if (o !== \"video\" && o !== \"audio\") return s.error(\"The element of `\" + n2 + \"` was not a media element.\");\n  } else return s.error(\"No element was found with the `\" + n2 + \"` query selector.\");\n  i2.mux && (i2.mux.destroy(), delete i2.mux, s.warn(\"Already monitoring this video element, replacing existing event listeners\")), t2 = Object.assign(T3, t2), t2.data = Object.assign({ player_software: \"HTML5 Video Element\", player_mux_plugin_name: \"VideoElementMonitor\", player_mux_plugin_version: r10.VERSION }, t2.data), t2.getPlayheadTime = function() {\n    return h3(i2.currentTime);\n  }, t2.getStateData = function() {\n    var x4, v4 = this.hlsjs && this.hlsjs.url, l = this.dashjs && C(this.dashjs.getSource === \"function\") && this.dashjs.getSource(), w2 = { player_is_paused: i2.paused, player_playhead_time: h3(i2.currentTime), player_width: parseInt(f(i2, \"width\")), player_height: parseInt(f(i2, \"height\")), player_autoplay_on: i2.autoplay, player_preload_on: i2.preload, player_language_code: i2.lang, player_is_fullscreen: at(), video_poster_url: i2.poster, video_source_url: v4 || l || i2.currentSrc, video_source_duration: h3(i2.duration), video_source_height: i2.videoHeight, video_source_width: i2.videoWidth, view_dropped_frame_count: i2 == null || (x4 = i2.getVideoPlaybackQuality) === null || x4 === void 0 ? void 0 : x4.call(i2).droppedVideoFrames }, D3 = t2.getPlayheadTime();\n    if (i2.getStartDate && D3 > 0) {\n      var p3 = i2.getStartDate();\n      if (p3 && typeof p3.getTime == \"function\" && p3.getTime()) {\n        var _3 = p3.getTime();\n        if (w2.player_program_time = _3 + D3, i2.seekable.length > 0) {\n          var c4 = _3 + i2.seekable.end(i2.seekable.length - 1);\n          w2.player_live_edge_program_time = c4;\n        }\n      }\n    }\n    return w2;\n  }, i2.mux = i2.mux || {}, i2.mux.deleted = false, i2.mux.emit = function(x4, v4) {\n    r10.emit(n2, x4, v4);\n  };\n  var g2 = function() {\n    s.error(\"The monitor for this video element has already been destroyed.\");\n  };\n  i2.mux.destroy = function() {\n    Object.keys(i2.mux.listeners).forEach(function(x4) {\n      i2.removeEventListener(x4, i2.mux.listeners[x4], false);\n    }), delete i2.mux.listeners, i2.mux.destroy = g2, i2.mux.swapElement = g2, i2.mux.emit = g2, i2.mux.addHLSJS = g2, i2.mux.addDashJS = g2, i2.mux.removeHLSJS = g2, i2.mux.removeDashJS = g2, i2.mux.deleted = true, r10.emit(n2, \"destroy\");\n  }, i2.mux.swapElement = function(x4) {\n    var v4 = j(Ee(x4), 3), l = v4[0], w2 = v4[1], D3 = v4[2];\n    if (l) {\n      if (D3 !== \"video\" && D3 !== \"audio\") return r10.log.error(\"The element of `\" + w2 + \"` was not a media element.\");\n    } else return r10.log.error(\"No element was found with the `\" + w2 + \"` query selector.\");\n    l.muxId = i2.muxId, delete i2.muxId, l.mux = l.mux || {}, l.mux.listeners = Object.assign({}, i2.mux.listeners), delete i2.mux.listeners, Object.keys(l.mux.listeners).forEach(function(p3) {\n      i2.removeEventListener(p3, l.mux.listeners[p3], false), l.addEventListener(p3, l.mux.listeners[p3], false);\n    }), l.mux.swapElement = i2.mux.swapElement, l.mux.destroy = i2.mux.destroy, delete i2.mux, i2 = l;\n  }, i2.mux.addHLSJS = function(x4) {\n    r10.addHLSJS(n2, x4);\n  }, i2.mux.addDashJS = function(x4) {\n    r10.addDashJS(n2, x4);\n  }, i2.mux.removeHLSJS = function() {\n    r10.removeHLSJS(n2);\n  }, i2.mux.removeDashJS = function() {\n    r10.removeDashJS(n2);\n  }, r10.init(n2, t2), r10.emit(n2, \"playerready\"), i2.paused || (r10.emit(n2, \"play\"), i2.readyState > 2 && r10.emit(n2, \"playing\")), i2.mux.listeners = {}, Ea.forEach(function(x4) {\n    x4 === \"error\" && !t2.automaticErrorTracking || (i2.mux.listeners[x4] = function() {\n      var v4 = {};\n      if (x4 === \"error\") {\n        if (!i2.error || i2.error.code === 1) return;\n        v4.player_error_code = i2.error.code, v4.player_error_message = ka[i2.error.code] || i2.error.message;\n      }\n      r10.emit(n2, x4, v4);\n    }, i2.addEventListener(x4, i2.mux.listeners[x4], false));\n  });\n}\nfunction ot(r10, e, t2, a2) {\n  var i2 = a2;\n  if (r10 && typeof r10[e] == \"function\") try {\n    i2 = r10[e].apply(r10, t2);\n  } catch (n2) {\n    I.info(\"safeCall error\", n2);\n  }\n  return i2;\n}\nvar he = B(J());\nvar me;\nhe.default && he.default.WeakMap && (me = /* @__PURE__ */ new WeakMap());\nfunction st(r10, e) {\n  if (!r10 || !e || !he.default || typeof he.default.getComputedStyle != \"function\") return \"\";\n  var t2;\n  return me && me.has(r10) && (t2 = me.get(r10)), t2 || (t2 = he.default.getComputedStyle(r10, null), me && me.set(r10, t2)), t2.getPropertyValue(e);\n}\nfunction ut(r10) {\n  return Math.floor(r10 * 1e3);\n}\nvar se = { TARGET_DURATION: \"#EXT-X-TARGETDURATION\", PART_INF: \"#EXT-X-PART-INF\", SERVER_CONTROL: \"#EXT-X-SERVER-CONTROL\", INF: \"#EXTINF\", PROGRAM_DATE_TIME: \"#EXT-X-PROGRAM-DATE-TIME\", VERSION: \"#EXT-X-VERSION\", SESSION_DATA: \"#EXT-X-SESSION-DATA\" };\nvar Be = function(e) {\n  return this.buffer = \"\", this.manifest = { segments: [], serverControl: {}, sessionData: {} }, this.currentUri = {}, this.process(e), this.manifest;\n};\nBe.prototype.process = function(r10) {\n  var e;\n  for (this.buffer += r10, e = this.buffer.indexOf(\"\\n\"); e > -1; e = this.buffer.indexOf(\"\\n\")) this.processLine(this.buffer.substring(0, e)), this.buffer = this.buffer.substring(e + 1);\n};\nBe.prototype.processLine = function(r10) {\n  var e = r10.indexOf(\":\"), t2 = Ra(r10, e), a2 = t2[0], i2 = t2.length === 2 ? lt(t2[1]) : void 0;\n  if (a2[0] !== \"#\") this.currentUri.uri = a2, this.manifest.segments.push(this.currentUri), this.manifest.targetDuration && !(\"duration\" in this.currentUri) && (this.currentUri.duration = this.manifest.targetDuration), this.currentUri = {};\n  else switch (a2) {\n    case se.TARGET_DURATION: {\n      if (!isFinite(i2) || i2 < 0) return;\n      this.manifest.targetDuration = i2, this.setHoldBack();\n      break;\n    }\n    case se.PART_INF: {\n      dt(this.manifest, t2), this.manifest.partInf.partTarget && (this.manifest.partTargetDuration = this.manifest.partInf.partTarget), this.setHoldBack();\n      break;\n    }\n    case se.SERVER_CONTROL: {\n      dt(this.manifest, t2), this.setHoldBack();\n      break;\n    }\n    case se.INF: {\n      i2 === 0 ? this.currentUri.duration = 0.01 : i2 > 0 && (this.currentUri.duration = i2);\n      break;\n    }\n    case se.PROGRAM_DATE_TIME: {\n      var n2 = i2, o = new Date(n2);\n      this.manifest.dateTimeString || (this.manifest.dateTimeString = n2, this.manifest.dateTimeObject = o), this.currentUri.dateTimeString = n2, this.currentUri.dateTimeObject = o;\n      break;\n    }\n    case se.VERSION: {\n      dt(this.manifest, t2);\n      break;\n    }\n    case se.SESSION_DATA: {\n      var s = qa(t2[1]), f = Ne(s);\n      Object.assign(this.manifest.sessionData, f);\n    }\n  }\n};\nBe.prototype.setHoldBack = function() {\n  var r10 = this.manifest, e = r10.serverControl, t2 = r10.targetDuration, a2 = r10.partTargetDuration;\n  if (e) {\n    var i2 = \"holdBack\", n2 = \"partHoldBack\", o = t2 && t2 * 3, s = a2 && a2 * 2;\n    t2 && !e.hasOwnProperty(i2) && (e[i2] = o), o && e[i2] < o && (e[i2] = o), a2 && !e.hasOwnProperty(n2) && (e[n2] = a2 * 3), a2 && e[n2] < s && (e[n2] = s);\n  }\n};\nvar dt = function(r10, e) {\n  var t2 = jr(e[0].replace(\"#EXT-X-\", \"\")), a2;\n  Sa(e[1]) ? (a2 = {}, a2 = Object.assign(Da(e[1]), a2)) : a2 = lt(e[1]), r10[t2] = a2;\n};\nvar jr = function(r10) {\n  return r10.toLowerCase().replace(/-(\\w)/g, function(e) {\n    return e[1].toUpperCase();\n  });\n};\nvar lt = function(r10) {\n  if (r10.toLowerCase() === \"yes\" || r10.toLowerCase() === \"no\") return r10.toLowerCase() === \"yes\";\n  var e = r10.indexOf(\":\") !== -1 ? r10 : parseFloat(r10);\n  return isNaN(e) ? r10 : e;\n};\nvar xa = function(r10) {\n  var e = {}, t2 = r10.split(\"=\");\n  if (t2.length > 1) {\n    var a2 = jr(t2[0]);\n    e[a2] = lt(t2[1]);\n  }\n  return e;\n};\nvar Da = function(r10) {\n  for (var e = r10.split(\",\"), t2 = {}, a2 = 0; e.length > a2; a2++) {\n    var i2 = e[a2], n2 = xa(i2);\n    t2 = Object.assign(n2, t2);\n  }\n  return t2;\n};\nvar Sa = function(r10) {\n  return r10.indexOf(\"=\") > -1;\n};\nvar Ra = function(r10, e) {\n  return e === -1 ? [r10] : [r10.substring(0, e), r10.substring(e + 1)];\n};\nvar qa = function(r10) {\n  var e = {};\n  if (r10) {\n    var t2 = r10.search(\",\"), a2 = r10.slice(0, t2), i2 = r10.slice(t2 + 1), n2 = [a2, i2];\n    return n2.forEach(function(o, s) {\n      for (var f = o.replace(/['\"]+/g, \"\").split(\"=\"), h3 = 0; h3 < f.length; h3++) f[h3] === \"DATA-ID\" && (e[\"DATA-ID\"] = f[1 - h3]), f[h3] === \"VALUE\" && (e.VALUE = f[1 - h3]);\n    }), { data: e };\n  }\n};\nvar Gr = Be;\nvar Aa = { safeCall: ot, safeIncrement: O, getComputedStyle: st, secondsToMs: ut, assign: Object.assign, headersStringToObject: fe, cdnHeadersToRequestId: oe, extractHostnameAndDomain: ee, extractHostname: F, manifestParser: Gr, generateShortID: qe, generateUUID: X, now: A.now };\nvar Jr = Aa;\nvar Oa = { PLAYER_READY: \"playerready\", VIEW_INIT: \"viewinit\", VIDEO_CHANGE: \"videochange\", PLAY: \"play\", PAUSE: \"pause\", PLAYING: \"playing\", TIME_UPDATE: \"timeupdate\", SEEKING: \"seeking\", SEEKED: \"seeked\", REBUFFER_START: \"rebufferstart\", REBUFFER_END: \"rebufferend\", ERROR: \"error\", ENDED: \"ended\", RENDITION_CHANGE: \"renditionchange\", ORIENTATION_CHANGE: \"orientationchange\", AD_REQUEST: \"adrequest\", AD_RESPONSE: \"adresponse\", AD_BREAK_START: \"adbreakstart\", AD_PLAY: \"adplay\", AD_PLAYING: \"adplaying\", AD_PAUSE: \"adpause\", AD_FIRST_QUARTILE: \"adfirstquartile\", AD_MID_POINT: \"admidpoint\", AD_THIRD_QUARTILE: \"adthirdquartile\", AD_ENDED: \"adended\", AD_BREAK_END: \"adbreakend\", AD_ERROR: \"aderror\", REQUEST_COMPLETED: \"requestcompleted\", REQUEST_FAILED: \"requestfailed\", REQUEST_CANCELLED: \"requestcanceled\" };\nvar Qr = Oa;\nvar Ia = \"mux-embed\";\nvar La = \"5.2.1\";\nvar Na = \"2.1\";\nvar G = {};\nvar ie = function(e) {\n  var t2 = arguments;\n  typeof e == \"string\" ? ie.hasOwnProperty(e) ? ye.default.setTimeout(function() {\n    t2 = Array.prototype.splice.call(t2, 1), ie[e].apply(null, t2);\n  }, 0) : I.warn(\"`\" + e + \"` is an unknown task\") : typeof e == \"function\" ? ye.default.setTimeout(function() {\n    e(ie);\n  }, 0) : I.warn(\"`\" + e + \"` is invalid.\");\n};\nvar Pa = { loaded: A.now(), NAME: Ia, VERSION: La, API_VERSION: Na, PLAYER_TRACKED: false, monitor: function(e, t2) {\n  return nt(ie, e, t2);\n}, destroyMonitor: function(e) {\n  var t2 = j(Ee(e), 1), a2 = t2[0];\n  a2 && a2.mux && typeof a2.mux.destroy == \"function\" ? a2.mux.destroy() : I.error(\"A video element monitor for `\" + e + \"` has not been initialized via `mux.monitor`.\");\n}, addHLSJS: function(e, t2) {\n  var a2 = $(e);\n  G[a2] ? G[a2].addHLSJS(t2) : I.error(\"A monitor for `\" + a2 + \"` has not been initialized.\");\n}, addDashJS: function(e, t2) {\n  var a2 = $(e);\n  G[a2] ? G[a2].addDashJS(t2) : I.error(\"A monitor for `\" + a2 + \"` has not been initialized.\");\n}, removeHLSJS: function(e) {\n  var t2 = $(e);\n  G[t2] ? G[t2].removeHLSJS() : I.error(\"A monitor for `\" + t2 + \"` has not been initialized.\");\n}, removeDashJS: function(e) {\n  var t2 = $(e);\n  G[t2] ? G[t2].removeDashJS() : I.error(\"A monitor for `\" + t2 + \"` has not been initialized.\");\n}, init: function(e, t2) {\n  de() && t2 && t2.respectDoNotTrack && I.info(\"The browser's Do Not Track flag is enabled - Mux beaconing is disabled.\");\n  var a2 = $(e);\n  G[a2] = new hr(ie, a2, t2);\n}, emit: function(e, t2, a2) {\n  var i2 = $(e);\n  G[i2] ? (G[i2].emit(t2, a2), t2 === \"destroy\" && delete G[i2]) : I.error(\"A monitor for `\" + i2 + \"` has not been initialized.\");\n}, checkDoNotTrack: de, log: I, utils: Jr, events: Qr, WINDOW_HIDDEN: false, WINDOW_UNLOADING: false };\nObject.assign(ie, Pa);\ntypeof ye.default != \"undefined\" && typeof ye.default.addEventListener == \"function\" && ye.default.addEventListener(\"pagehide\", function(r10) {\n  r10.persisted || (ie.WINDOW_UNLOADING = true);\n}, false);\nvar od = ie;\n\n// node_modules/.pnpm/hls.js@1.5.20/node_modules/hls.js/dist/hls.mjs\nfunction getDefaultExportFromCjs(x4) {\n  return x4 && x4.__esModule && Object.prototype.hasOwnProperty.call(x4, \"default\") ? x4[\"default\"] : x4;\n}\nvar urlToolkit = { exports: {} };\n(function(module, exports) {\n  (function(root) {\n    var URL_REGEX = /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n    var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n    var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n    var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n    var URLToolkit = {\n      // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n      // E.g\n      // With opts.alwaysNormalize = false (default, spec compliant)\n      // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n      // With opts.alwaysNormalize = true (not spec compliant)\n      // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n      buildAbsoluteURL: function(baseURL, relativeURL, opts) {\n        opts = opts || {};\n        baseURL = baseURL.trim();\n        relativeURL = relativeURL.trim();\n        if (!relativeURL) {\n          if (!opts.alwaysNormalize) {\n            return baseURL;\n          }\n          var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n          if (!basePartsForNormalise) {\n            throw new Error(\"Error trying to parse base URL.\");\n          }\n          basePartsForNormalise.path = URLToolkit.normalizePath(\n            basePartsForNormalise.path\n          );\n          return URLToolkit.buildURLFromParts(basePartsForNormalise);\n        }\n        var relativeParts = URLToolkit.parseURL(relativeURL);\n        if (!relativeParts) {\n          throw new Error(\"Error trying to parse relative URL.\");\n        }\n        if (relativeParts.scheme) {\n          if (!opts.alwaysNormalize) {\n            return relativeURL;\n          }\n          relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n          return URLToolkit.buildURLFromParts(relativeParts);\n        }\n        var baseParts = URLToolkit.parseURL(baseURL);\n        if (!baseParts) {\n          throw new Error(\"Error trying to parse base URL.\");\n        }\n        if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== \"/\") {\n          var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n          baseParts.netLoc = pathParts[1];\n          baseParts.path = pathParts[2];\n        }\n        if (baseParts.netLoc && !baseParts.path) {\n          baseParts.path = \"/\";\n        }\n        var builtParts = {\n          // 2c) Otherwise, the embedded URL inherits the scheme of\n          // the base URL.\n          scheme: baseParts.scheme,\n          netLoc: relativeParts.netLoc,\n          path: null,\n          params: relativeParts.params,\n          query: relativeParts.query,\n          fragment: relativeParts.fragment\n        };\n        if (!relativeParts.netLoc) {\n          builtParts.netLoc = baseParts.netLoc;\n          if (relativeParts.path[0] !== \"/\") {\n            if (!relativeParts.path) {\n              builtParts.path = baseParts.path;\n              if (!relativeParts.params) {\n                builtParts.params = baseParts.params;\n                if (!relativeParts.query) {\n                  builtParts.query = baseParts.query;\n                }\n              }\n            } else {\n              var baseURLPath = baseParts.path;\n              var newPath = baseURLPath.substring(0, baseURLPath.lastIndexOf(\"/\") + 1) + relativeParts.path;\n              builtParts.path = URLToolkit.normalizePath(newPath);\n            }\n          }\n        }\n        if (builtParts.path === null) {\n          builtParts.path = opts.alwaysNormalize ? URLToolkit.normalizePath(relativeParts.path) : relativeParts.path;\n        }\n        return URLToolkit.buildURLFromParts(builtParts);\n      },\n      parseURL: function(url) {\n        var parts = URL_REGEX.exec(url);\n        if (!parts) {\n          return null;\n        }\n        return {\n          scheme: parts[1] || \"\",\n          netLoc: parts[2] || \"\",\n          path: parts[3] || \"\",\n          params: parts[4] || \"\",\n          query: parts[5] || \"\",\n          fragment: parts[6] || \"\"\n        };\n      },\n      normalizePath: function(path) {\n        path = path.split(\"\").reverse().join(\"\").replace(SLASH_DOT_REGEX, \"\");\n        while (path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, \"\")).length) {\n        }\n        return path.split(\"\").reverse().join(\"\");\n      },\n      buildURLFromParts: function(parts) {\n        return parts.scheme + parts.netLoc + parts.path + parts.params + parts.query + parts.fragment;\n      }\n    };\n    module.exports = URLToolkit;\n  })();\n})(urlToolkit);\nvar urlToolkitExports = urlToolkit.exports;\nfunction ownKeys(e, r10) {\n  var t2 = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r10 && (o = o.filter(function(r11) {\n      return Object.getOwnPropertyDescriptor(e, r11).enumerable;\n    })), t2.push.apply(t2, o);\n  }\n  return t2;\n}\nfunction _objectSpread2(e) {\n  for (var r10 = 1; r10 < arguments.length; r10++) {\n    var t2 = null != arguments[r10] ? arguments[r10] : {};\n    r10 % 2 ? ownKeys(Object(t2), true).forEach(function(r11) {\n      _defineProperty(e, r11, t2[r11]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r11) {\n      Object.defineProperty(e, r11, Object.getOwnPropertyDescriptor(t2, r11));\n    });\n  }\n  return e;\n}\nfunction _toPrimitive(t2, r10) {\n  if (\"object\" != typeof t2 || !t2) return t2;\n  var e = t2[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i2 = e.call(t2, r10 || \"default\");\n    if (\"object\" != typeof i2) return i2;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r10 ? String : Number)(t2);\n}\nfunction _toPropertyKey(t2) {\n  var i2 = _toPrimitive(t2, \"string\");\n  return \"symbol\" == typeof i2 ? i2 : String(i2);\n}\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function(target) {\n    for (var i2 = 1; i2 < arguments.length; i2++) {\n      var source = arguments[i2];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nvar isFiniteNumber = Number.isFinite || function(value) {\n  return typeof value === \"number\" && isFinite(value);\n};\nvar isSafeInteger = Number.isSafeInteger || function(value) {\n  return typeof value === \"number\" && Math.abs(value) <= MAX_SAFE_INTEGER;\n};\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\nvar Events = /* @__PURE__ */ function(Events2) {\n  Events2[\"MEDIA_ATTACHING\"] = \"hlsMediaAttaching\";\n  Events2[\"MEDIA_ATTACHED\"] = \"hlsMediaAttached\";\n  Events2[\"MEDIA_DETACHING\"] = \"hlsMediaDetaching\";\n  Events2[\"MEDIA_DETACHED\"] = \"hlsMediaDetached\";\n  Events2[\"BUFFER_RESET\"] = \"hlsBufferReset\";\n  Events2[\"BUFFER_CODECS\"] = \"hlsBufferCodecs\";\n  Events2[\"BUFFER_CREATED\"] = \"hlsBufferCreated\";\n  Events2[\"BUFFER_APPENDING\"] = \"hlsBufferAppending\";\n  Events2[\"BUFFER_APPENDED\"] = \"hlsBufferAppended\";\n  Events2[\"BUFFER_EOS\"] = \"hlsBufferEos\";\n  Events2[\"BUFFER_FLUSHING\"] = \"hlsBufferFlushing\";\n  Events2[\"BUFFER_FLUSHED\"] = \"hlsBufferFlushed\";\n  Events2[\"MANIFEST_LOADING\"] = \"hlsManifestLoading\";\n  Events2[\"MANIFEST_LOADED\"] = \"hlsManifestLoaded\";\n  Events2[\"MANIFEST_PARSED\"] = \"hlsManifestParsed\";\n  Events2[\"LEVEL_SWITCHING\"] = \"hlsLevelSwitching\";\n  Events2[\"LEVEL_SWITCHED\"] = \"hlsLevelSwitched\";\n  Events2[\"LEVEL_LOADING\"] = \"hlsLevelLoading\";\n  Events2[\"LEVEL_LOADED\"] = \"hlsLevelLoaded\";\n  Events2[\"LEVEL_UPDATED\"] = \"hlsLevelUpdated\";\n  Events2[\"LEVEL_PTS_UPDATED\"] = \"hlsLevelPtsUpdated\";\n  Events2[\"LEVELS_UPDATED\"] = \"hlsLevelsUpdated\";\n  Events2[\"AUDIO_TRACKS_UPDATED\"] = \"hlsAudioTracksUpdated\";\n  Events2[\"AUDIO_TRACK_SWITCHING\"] = \"hlsAudioTrackSwitching\";\n  Events2[\"AUDIO_TRACK_SWITCHED\"] = \"hlsAudioTrackSwitched\";\n  Events2[\"AUDIO_TRACK_LOADING\"] = \"hlsAudioTrackLoading\";\n  Events2[\"AUDIO_TRACK_LOADED\"] = \"hlsAudioTrackLoaded\";\n  Events2[\"SUBTITLE_TRACKS_UPDATED\"] = \"hlsSubtitleTracksUpdated\";\n  Events2[\"SUBTITLE_TRACKS_CLEARED\"] = \"hlsSubtitleTracksCleared\";\n  Events2[\"SUBTITLE_TRACK_SWITCH\"] = \"hlsSubtitleTrackSwitch\";\n  Events2[\"SUBTITLE_TRACK_LOADING\"] = \"hlsSubtitleTrackLoading\";\n  Events2[\"SUBTITLE_TRACK_LOADED\"] = \"hlsSubtitleTrackLoaded\";\n  Events2[\"SUBTITLE_FRAG_PROCESSED\"] = \"hlsSubtitleFragProcessed\";\n  Events2[\"CUES_PARSED\"] = \"hlsCuesParsed\";\n  Events2[\"NON_NATIVE_TEXT_TRACKS_FOUND\"] = \"hlsNonNativeTextTracksFound\";\n  Events2[\"INIT_PTS_FOUND\"] = \"hlsInitPtsFound\";\n  Events2[\"FRAG_LOADING\"] = \"hlsFragLoading\";\n  Events2[\"FRAG_LOAD_EMERGENCY_ABORTED\"] = \"hlsFragLoadEmergencyAborted\";\n  Events2[\"FRAG_LOADED\"] = \"hlsFragLoaded\";\n  Events2[\"FRAG_DECRYPTED\"] = \"hlsFragDecrypted\";\n  Events2[\"FRAG_PARSING_INIT_SEGMENT\"] = \"hlsFragParsingInitSegment\";\n  Events2[\"FRAG_PARSING_USERDATA\"] = \"hlsFragParsingUserdata\";\n  Events2[\"FRAG_PARSING_METADATA\"] = \"hlsFragParsingMetadata\";\n  Events2[\"FRAG_PARSED\"] = \"hlsFragParsed\";\n  Events2[\"FRAG_BUFFERED\"] = \"hlsFragBuffered\";\n  Events2[\"FRAG_CHANGED\"] = \"hlsFragChanged\";\n  Events2[\"FPS_DROP\"] = \"hlsFpsDrop\";\n  Events2[\"FPS_DROP_LEVEL_CAPPING\"] = \"hlsFpsDropLevelCapping\";\n  Events2[\"MAX_AUTO_LEVEL_UPDATED\"] = \"hlsMaxAutoLevelUpdated\";\n  Events2[\"ERROR\"] = \"hlsError\";\n  Events2[\"DESTROYING\"] = \"hlsDestroying\";\n  Events2[\"KEY_LOADING\"] = \"hlsKeyLoading\";\n  Events2[\"KEY_LOADED\"] = \"hlsKeyLoaded\";\n  Events2[\"LIVE_BACK_BUFFER_REACHED\"] = \"hlsLiveBackBufferReached\";\n  Events2[\"BACK_BUFFER_REACHED\"] = \"hlsBackBufferReached\";\n  Events2[\"STEERING_MANIFEST_LOADED\"] = \"hlsSteeringManifestLoaded\";\n  return Events2;\n}({});\nvar ErrorTypes = /* @__PURE__ */ function(ErrorTypes2) {\n  ErrorTypes2[\"NETWORK_ERROR\"] = \"networkError\";\n  ErrorTypes2[\"MEDIA_ERROR\"] = \"mediaError\";\n  ErrorTypes2[\"KEY_SYSTEM_ERROR\"] = \"keySystemError\";\n  ErrorTypes2[\"MUX_ERROR\"] = \"muxError\";\n  ErrorTypes2[\"OTHER_ERROR\"] = \"otherError\";\n  return ErrorTypes2;\n}({});\nvar ErrorDetails = /* @__PURE__ */ function(ErrorDetails2) {\n  ErrorDetails2[\"KEY_SYSTEM_NO_KEYS\"] = \"keySystemNoKeys\";\n  ErrorDetails2[\"KEY_SYSTEM_NO_ACCESS\"] = \"keySystemNoAccess\";\n  ErrorDetails2[\"KEY_SYSTEM_NO_SESSION\"] = \"keySystemNoSession\";\n  ErrorDetails2[\"KEY_SYSTEM_NO_CONFIGURED_LICENSE\"] = \"keySystemNoConfiguredLicense\";\n  ErrorDetails2[\"KEY_SYSTEM_LICENSE_REQUEST_FAILED\"] = \"keySystemLicenseRequestFailed\";\n  ErrorDetails2[\"KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED\"] = \"keySystemServerCertificateRequestFailed\";\n  ErrorDetails2[\"KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED\"] = \"keySystemServerCertificateUpdateFailed\";\n  ErrorDetails2[\"KEY_SYSTEM_SESSION_UPDATE_FAILED\"] = \"keySystemSessionUpdateFailed\";\n  ErrorDetails2[\"KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED\"] = \"keySystemStatusOutputRestricted\";\n  ErrorDetails2[\"KEY_SYSTEM_STATUS_INTERNAL_ERROR\"] = \"keySystemStatusInternalError\";\n  ErrorDetails2[\"MANIFEST_LOAD_ERROR\"] = \"manifestLoadError\";\n  ErrorDetails2[\"MANIFEST_LOAD_TIMEOUT\"] = \"manifestLoadTimeOut\";\n  ErrorDetails2[\"MANIFEST_PARSING_ERROR\"] = \"manifestParsingError\";\n  ErrorDetails2[\"MANIFEST_INCOMPATIBLE_CODECS_ERROR\"] = \"manifestIncompatibleCodecsError\";\n  ErrorDetails2[\"LEVEL_EMPTY_ERROR\"] = \"levelEmptyError\";\n  ErrorDetails2[\"LEVEL_LOAD_ERROR\"] = \"levelLoadError\";\n  ErrorDetails2[\"LEVEL_LOAD_TIMEOUT\"] = \"levelLoadTimeOut\";\n  ErrorDetails2[\"LEVEL_PARSING_ERROR\"] = \"levelParsingError\";\n  ErrorDetails2[\"LEVEL_SWITCH_ERROR\"] = \"levelSwitchError\";\n  ErrorDetails2[\"AUDIO_TRACK_LOAD_ERROR\"] = \"audioTrackLoadError\";\n  ErrorDetails2[\"AUDIO_TRACK_LOAD_TIMEOUT\"] = \"audioTrackLoadTimeOut\";\n  ErrorDetails2[\"SUBTITLE_LOAD_ERROR\"] = \"subtitleTrackLoadError\";\n  ErrorDetails2[\"SUBTITLE_TRACK_LOAD_TIMEOUT\"] = \"subtitleTrackLoadTimeOut\";\n  ErrorDetails2[\"FRAG_LOAD_ERROR\"] = \"fragLoadError\";\n  ErrorDetails2[\"FRAG_LOAD_TIMEOUT\"] = \"fragLoadTimeOut\";\n  ErrorDetails2[\"FRAG_DECRYPT_ERROR\"] = \"fragDecryptError\";\n  ErrorDetails2[\"FRAG_PARSING_ERROR\"] = \"fragParsingError\";\n  ErrorDetails2[\"FRAG_GAP\"] = \"fragGap\";\n  ErrorDetails2[\"REMUX_ALLOC_ERROR\"] = \"remuxAllocError\";\n  ErrorDetails2[\"KEY_LOAD_ERROR\"] = \"keyLoadError\";\n  ErrorDetails2[\"KEY_LOAD_TIMEOUT\"] = \"keyLoadTimeOut\";\n  ErrorDetails2[\"BUFFER_ADD_CODEC_ERROR\"] = \"bufferAddCodecError\";\n  ErrorDetails2[\"BUFFER_INCOMPATIBLE_CODECS_ERROR\"] = \"bufferIncompatibleCodecsError\";\n  ErrorDetails2[\"BUFFER_APPEND_ERROR\"] = \"bufferAppendError\";\n  ErrorDetails2[\"BUFFER_APPENDING_ERROR\"] = \"bufferAppendingError\";\n  ErrorDetails2[\"BUFFER_STALLED_ERROR\"] = \"bufferStalledError\";\n  ErrorDetails2[\"BUFFER_FULL_ERROR\"] = \"bufferFullError\";\n  ErrorDetails2[\"BUFFER_SEEK_OVER_HOLE\"] = \"bufferSeekOverHole\";\n  ErrorDetails2[\"BUFFER_NUDGE_ON_STALL\"] = \"bufferNudgeOnStall\";\n  ErrorDetails2[\"INTERNAL_EXCEPTION\"] = \"internalException\";\n  ErrorDetails2[\"INTERNAL_ABORTED\"] = \"aborted\";\n  ErrorDetails2[\"UNKNOWN\"] = \"unknown\";\n  return ErrorDetails2;\n}({});\nvar noop = function noop2() {\n};\nvar fakeLogger = {\n  trace: noop,\n  debug: noop,\n  log: noop,\n  warn: noop,\n  info: noop,\n  error: noop\n};\nvar exportedLogger = fakeLogger;\nfunction consolePrintFn(type) {\n  const func = self.console[type];\n  if (func) {\n    return func.bind(self.console, `[${type}] >`);\n  }\n  return noop;\n}\nfunction exportLoggerFunctions(debugConfig, ...functions) {\n  functions.forEach(function(type) {\n    exportedLogger[type] = debugConfig[type] ? debugConfig[type].bind(debugConfig) : consolePrintFn(type);\n  });\n}\nfunction enableLogs(debugConfig, id) {\n  if (typeof console === \"object\" && debugConfig === true || typeof debugConfig === \"object\") {\n    exportLoggerFunctions(\n      debugConfig,\n      // Remove out from list here to hard-disable a log-level\n      // 'trace',\n      \"debug\",\n      \"log\",\n      \"info\",\n      \"warn\",\n      \"error\"\n    );\n    try {\n      exportedLogger.log(`Debug logs enabled for \"${id}\" in hls.js version ${\"1.5.20\"}`);\n    } catch (e) {\n      exportedLogger = fakeLogger;\n    }\n  } else {\n    exportedLogger = fakeLogger;\n  }\n}\nvar logger = exportedLogger;\nvar DECIMAL_RESOLUTION_REGEX = /^(\\d+)x(\\d+)$/;\nvar ATTR_LIST_REGEX = /(.+?)=(\".*?\"|.*?)(?:,|$)/g;\nvar AttrList = class _AttrList {\n  constructor(attrs) {\n    if (typeof attrs === \"string\") {\n      attrs = _AttrList.parseAttrList(attrs);\n    }\n    _extends(this, attrs);\n  }\n  get clientAttrs() {\n    return Object.keys(this).filter((attr) => attr.substring(0, 2) === \"X-\");\n  }\n  decimalInteger(attrName) {\n    const intValue = parseInt(this[attrName], 10);\n    if (intValue > Number.MAX_SAFE_INTEGER) {\n      return Infinity;\n    }\n    return intValue;\n  }\n  hexadecimalInteger(attrName) {\n    if (this[attrName]) {\n      let stringValue = (this[attrName] || \"0x\").slice(2);\n      stringValue = (stringValue.length & 1 ? \"0\" : \"\") + stringValue;\n      const value = new Uint8Array(stringValue.length / 2);\n      for (let i2 = 0; i2 < stringValue.length / 2; i2++) {\n        value[i2] = parseInt(stringValue.slice(i2 * 2, i2 * 2 + 2), 16);\n      }\n      return value;\n    } else {\n      return null;\n    }\n  }\n  hexadecimalIntegerAsNumber(attrName) {\n    const intValue = parseInt(this[attrName], 16);\n    if (intValue > Number.MAX_SAFE_INTEGER) {\n      return Infinity;\n    }\n    return intValue;\n  }\n  decimalFloatingPoint(attrName) {\n    return parseFloat(this[attrName]);\n  }\n  optionalFloat(attrName, defaultValue) {\n    const value = this[attrName];\n    return value ? parseFloat(value) : defaultValue;\n  }\n  enumeratedString(attrName) {\n    return this[attrName];\n  }\n  bool(attrName) {\n    return this[attrName] === \"YES\";\n  }\n  decimalResolution(attrName) {\n    const res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]);\n    if (res === null) {\n      return void 0;\n    }\n    return {\n      width: parseInt(res[1], 10),\n      height: parseInt(res[2], 10)\n    };\n  }\n  static parseAttrList(input) {\n    let match;\n    const attrs = {};\n    const quote = '\"';\n    ATTR_LIST_REGEX.lastIndex = 0;\n    while ((match = ATTR_LIST_REGEX.exec(input)) !== null) {\n      let value = match[2];\n      if (value.indexOf(quote) === 0 && value.lastIndexOf(quote) === value.length - 1) {\n        value = value.slice(1, -1);\n      }\n      const name = match[1].trim();\n      attrs[name] = value;\n    }\n    return attrs;\n  }\n};\nfunction isDateRangeCueAttribute(attrName) {\n  return attrName !== \"ID\" && attrName !== \"CLASS\" && attrName !== \"START-DATE\" && attrName !== \"DURATION\" && attrName !== \"END-DATE\" && attrName !== \"END-ON-NEXT\";\n}\nfunction isSCTE35Attribute(attrName) {\n  return attrName === \"SCTE35-OUT\" || attrName === \"SCTE35-IN\";\n}\nvar DateRange = class {\n  constructor(dateRangeAttr, dateRangeWithSameId) {\n    this.attr = void 0;\n    this._startDate = void 0;\n    this._endDate = void 0;\n    this._badValueForSameId = void 0;\n    if (dateRangeWithSameId) {\n      const previousAttr = dateRangeWithSameId.attr;\n      for (const key in previousAttr) {\n        if (Object.prototype.hasOwnProperty.call(dateRangeAttr, key) && dateRangeAttr[key] !== previousAttr[key]) {\n          logger.warn(`DATERANGE tag attribute: \"${key}\" does not match for tags with ID: \"${dateRangeAttr.ID}\"`);\n          this._badValueForSameId = key;\n          break;\n        }\n      }\n      dateRangeAttr = _extends(new AttrList({}), previousAttr, dateRangeAttr);\n    }\n    this.attr = dateRangeAttr;\n    this._startDate = new Date(dateRangeAttr[\"START-DATE\"]);\n    if (\"END-DATE\" in this.attr) {\n      const endDate = new Date(this.attr[\"END-DATE\"]);\n      if (isFiniteNumber(endDate.getTime())) {\n        this._endDate = endDate;\n      }\n    }\n  }\n  get id() {\n    return this.attr.ID;\n  }\n  get class() {\n    return this.attr.CLASS;\n  }\n  get startDate() {\n    return this._startDate;\n  }\n  get endDate() {\n    if (this._endDate) {\n      return this._endDate;\n    }\n    const duration = this.duration;\n    if (duration !== null) {\n      return new Date(this._startDate.getTime() + duration * 1e3);\n    }\n    return null;\n  }\n  get duration() {\n    if (\"DURATION\" in this.attr) {\n      const duration = this.attr.decimalFloatingPoint(\"DURATION\");\n      if (isFiniteNumber(duration)) {\n        return duration;\n      }\n    } else if (this._endDate) {\n      return (this._endDate.getTime() - this._startDate.getTime()) / 1e3;\n    }\n    return null;\n  }\n  get plannedDuration() {\n    if (\"PLANNED-DURATION\" in this.attr) {\n      return this.attr.decimalFloatingPoint(\"PLANNED-DURATION\");\n    }\n    return null;\n  }\n  get endOnNext() {\n    return this.attr.bool(\"END-ON-NEXT\");\n  }\n  get isValid() {\n    return !!this.id && !this._badValueForSameId && isFiniteNumber(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class);\n  }\n};\nvar LoadStats = class {\n  constructor() {\n    this.aborted = false;\n    this.loaded = 0;\n    this.retry = 0;\n    this.total = 0;\n    this.chunkCount = 0;\n    this.bwEstimate = 0;\n    this.loading = {\n      start: 0,\n      first: 0,\n      end: 0\n    };\n    this.parsing = {\n      start: 0,\n      end: 0\n    };\n    this.buffering = {\n      start: 0,\n      first: 0,\n      end: 0\n    };\n  }\n};\nvar ElementaryStreamTypes = {\n  AUDIO: \"audio\",\n  VIDEO: \"video\",\n  AUDIOVIDEO: \"audiovideo\"\n};\nvar BaseSegment = class {\n  constructor(baseurl) {\n    this._byteRange = null;\n    this._url = null;\n    this.baseurl = void 0;\n    this.relurl = void 0;\n    this.elementaryStreams = {\n      [ElementaryStreamTypes.AUDIO]: null,\n      [ElementaryStreamTypes.VIDEO]: null,\n      [ElementaryStreamTypes.AUDIOVIDEO]: null\n    };\n    this.baseurl = baseurl;\n  }\n  // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array\n  setByteRange(value, previous) {\n    const params = value.split(\"@\", 2);\n    let start;\n    if (params.length === 1) {\n      start = (previous == null ? void 0 : previous.byteRangeEndOffset) || 0;\n    } else {\n      start = parseInt(params[1]);\n    }\n    this._byteRange = [start, parseInt(params[0]) + start];\n  }\n  get byteRange() {\n    if (!this._byteRange) {\n      return [];\n    }\n    return this._byteRange;\n  }\n  get byteRangeStartOffset() {\n    return this.byteRange[0];\n  }\n  get byteRangeEndOffset() {\n    return this.byteRange[1];\n  }\n  get url() {\n    if (!this._url && this.baseurl && this.relurl) {\n      this._url = urlToolkitExports.buildAbsoluteURL(this.baseurl, this.relurl, {\n        alwaysNormalize: true\n      });\n    }\n    return this._url || \"\";\n  }\n  set url(value) {\n    this._url = value;\n  }\n};\nvar Fragment = class extends BaseSegment {\n  constructor(type, baseurl) {\n    super(baseurl);\n    this._decryptdata = null;\n    this.rawProgramDateTime = null;\n    this.programDateTime = null;\n    this.tagList = [];\n    this.duration = 0;\n    this.sn = 0;\n    this.levelkeys = void 0;\n    this.type = void 0;\n    this.loader = null;\n    this.keyLoader = null;\n    this.level = -1;\n    this.cc = 0;\n    this.startPTS = void 0;\n    this.endPTS = void 0;\n    this.startDTS = void 0;\n    this.endDTS = void 0;\n    this.start = 0;\n    this.deltaPTS = void 0;\n    this.maxStartPTS = void 0;\n    this.minEndPTS = void 0;\n    this.stats = new LoadStats();\n    this.data = void 0;\n    this.bitrateTest = false;\n    this.title = null;\n    this.initSegment = null;\n    this.endList = void 0;\n    this.gap = void 0;\n    this.urlId = 0;\n    this.type = type;\n  }\n  get decryptdata() {\n    const {\n      levelkeys\n    } = this;\n    if (!levelkeys && !this._decryptdata) {\n      return null;\n    }\n    if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) {\n      const key = this.levelkeys.identity;\n      if (key) {\n        this._decryptdata = key.getDecryptData(this.sn);\n      } else {\n        const keyFormats = Object.keys(this.levelkeys);\n        if (keyFormats.length === 1) {\n          return this._decryptdata = this.levelkeys[keyFormats[0]].getDecryptData(this.sn);\n        }\n      }\n    }\n    return this._decryptdata;\n  }\n  get end() {\n    return this.start + this.duration;\n  }\n  get endProgramDateTime() {\n    if (this.programDateTime === null) {\n      return null;\n    }\n    if (!isFiniteNumber(this.programDateTime)) {\n      return null;\n    }\n    const duration = !isFiniteNumber(this.duration) ? 0 : this.duration;\n    return this.programDateTime + duration * 1e3;\n  }\n  get encrypted() {\n    var _this$_decryptdata;\n    if ((_this$_decryptdata = this._decryptdata) != null && _this$_decryptdata.encrypted) {\n      return true;\n    } else if (this.levelkeys) {\n      const keyFormats = Object.keys(this.levelkeys);\n      const len = keyFormats.length;\n      if (len > 1 || len === 1 && this.levelkeys[keyFormats[0]].encrypted) {\n        return true;\n      }\n    }\n    return false;\n  }\n  setKeyFormat(keyFormat) {\n    if (this.levelkeys) {\n      const key = this.levelkeys[keyFormat];\n      if (key && !this._decryptdata) {\n        this._decryptdata = key.getDecryptData(this.sn);\n      }\n    }\n  }\n  abortRequests() {\n    var _this$loader, _this$keyLoader;\n    (_this$loader = this.loader) == null ? void 0 : _this$loader.abort();\n    (_this$keyLoader = this.keyLoader) == null ? void 0 : _this$keyLoader.abort();\n  }\n  setElementaryStreamInfo(type, startPTS, endPTS, startDTS, endDTS, partial = false) {\n    const {\n      elementaryStreams\n    } = this;\n    const info = elementaryStreams[type];\n    if (!info) {\n      elementaryStreams[type] = {\n        startPTS,\n        endPTS,\n        startDTS,\n        endDTS,\n        partial\n      };\n      return;\n    }\n    info.startPTS = Math.min(info.startPTS, startPTS);\n    info.endPTS = Math.max(info.endPTS, endPTS);\n    info.startDTS = Math.min(info.startDTS, startDTS);\n    info.endDTS = Math.max(info.endDTS, endDTS);\n  }\n  clearElementaryStreamInfo() {\n    const {\n      elementaryStreams\n    } = this;\n    elementaryStreams[ElementaryStreamTypes.AUDIO] = null;\n    elementaryStreams[ElementaryStreamTypes.VIDEO] = null;\n    elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO] = null;\n  }\n};\nvar Part = class extends BaseSegment {\n  constructor(partAttrs, frag, baseurl, index, previous) {\n    super(baseurl);\n    this.fragOffset = 0;\n    this.duration = 0;\n    this.gap = false;\n    this.independent = false;\n    this.relurl = void 0;\n    this.fragment = void 0;\n    this.index = void 0;\n    this.stats = new LoadStats();\n    this.duration = partAttrs.decimalFloatingPoint(\"DURATION\");\n    this.gap = partAttrs.bool(\"GAP\");\n    this.independent = partAttrs.bool(\"INDEPENDENT\");\n    this.relurl = partAttrs.enumeratedString(\"URI\");\n    this.fragment = frag;\n    this.index = index;\n    const byteRange = partAttrs.enumeratedString(\"BYTERANGE\");\n    if (byteRange) {\n      this.setByteRange(byteRange, previous);\n    }\n    if (previous) {\n      this.fragOffset = previous.fragOffset + previous.duration;\n    }\n  }\n  get start() {\n    return this.fragment.start + this.fragOffset;\n  }\n  get end() {\n    return this.start + this.duration;\n  }\n  get loaded() {\n    const {\n      elementaryStreams\n    } = this;\n    return !!(elementaryStreams.audio || elementaryStreams.video || elementaryStreams.audiovideo);\n  }\n};\nvar DEFAULT_TARGET_DURATION = 10;\nvar LevelDetails = class {\n  constructor(baseUrl) {\n    this.PTSKnown = false;\n    this.alignedSliding = false;\n    this.averagetargetduration = void 0;\n    this.endCC = 0;\n    this.endSN = 0;\n    this.fragments = void 0;\n    this.fragmentHint = void 0;\n    this.partList = null;\n    this.dateRanges = void 0;\n    this.live = true;\n    this.ageHeader = 0;\n    this.advancedDateTime = void 0;\n    this.updated = true;\n    this.advanced = true;\n    this.availabilityDelay = void 0;\n    this.misses = 0;\n    this.startCC = 0;\n    this.startSN = 0;\n    this.startTimeOffset = null;\n    this.targetduration = 0;\n    this.totalduration = 0;\n    this.type = null;\n    this.url = void 0;\n    this.m3u8 = \"\";\n    this.version = null;\n    this.canBlockReload = false;\n    this.canSkipUntil = 0;\n    this.canSkipDateRanges = false;\n    this.skippedSegments = 0;\n    this.recentlyRemovedDateranges = void 0;\n    this.partHoldBack = 0;\n    this.holdBack = 0;\n    this.partTarget = 0;\n    this.preloadHint = void 0;\n    this.renditionReports = void 0;\n    this.tuneInGoal = 0;\n    this.deltaUpdateFailed = void 0;\n    this.driftStartTime = 0;\n    this.driftEndTime = 0;\n    this.driftStart = 0;\n    this.driftEnd = 0;\n    this.encryptedFragments = void 0;\n    this.playlistParsingError = null;\n    this.variableList = null;\n    this.hasVariableRefs = false;\n    this.fragments = [];\n    this.encryptedFragments = [];\n    this.dateRanges = {};\n    this.url = baseUrl;\n  }\n  reloaded(previous) {\n    if (!previous) {\n      this.advanced = true;\n      this.updated = true;\n      return;\n    }\n    const partSnDiff = this.lastPartSn - previous.lastPartSn;\n    const partIndexDiff = this.lastPartIndex - previous.lastPartIndex;\n    this.updated = this.endSN !== previous.endSN || !!partIndexDiff || !!partSnDiff || !this.live;\n    this.advanced = this.endSN > previous.endSN || partSnDiff > 0 || partSnDiff === 0 && partIndexDiff > 0;\n    if (this.updated || this.advanced) {\n      this.misses = Math.floor(previous.misses * 0.6);\n    } else {\n      this.misses = previous.misses + 1;\n    }\n    this.availabilityDelay = previous.availabilityDelay;\n  }\n  get hasProgramDateTime() {\n    if (this.fragments.length) {\n      return isFiniteNumber(this.fragments[this.fragments.length - 1].programDateTime);\n    }\n    return false;\n  }\n  get levelTargetDuration() {\n    return this.averagetargetduration || this.targetduration || DEFAULT_TARGET_DURATION;\n  }\n  get drift() {\n    const runTime = this.driftEndTime - this.driftStartTime;\n    if (runTime > 0) {\n      const runDuration = this.driftEnd - this.driftStart;\n      return runDuration * 1e3 / runTime;\n    }\n    return 1;\n  }\n  get edge() {\n    return this.partEnd || this.fragmentEnd;\n  }\n  get partEnd() {\n    var _this$partList;\n    if ((_this$partList = this.partList) != null && _this$partList.length) {\n      return this.partList[this.partList.length - 1].end;\n    }\n    return this.fragmentEnd;\n  }\n  get fragmentEnd() {\n    var _this$fragments;\n    if ((_this$fragments = this.fragments) != null && _this$fragments.length) {\n      return this.fragments[this.fragments.length - 1].end;\n    }\n    return 0;\n  }\n  get age() {\n    if (this.advancedDateTime) {\n      return Math.max(Date.now() - this.advancedDateTime, 0) / 1e3;\n    }\n    return 0;\n  }\n  get lastPartIndex() {\n    var _this$partList2;\n    if ((_this$partList2 = this.partList) != null && _this$partList2.length) {\n      return this.partList[this.partList.length - 1].index;\n    }\n    return -1;\n  }\n  get lastPartSn() {\n    var _this$partList3;\n    if ((_this$partList3 = this.partList) != null && _this$partList3.length) {\n      return this.partList[this.partList.length - 1].fragment.sn;\n    }\n    return this.endSN;\n  }\n};\nfunction base64Decode(base64encodedStr) {\n  return Uint8Array.from(atob(base64encodedStr), (c4) => c4.charCodeAt(0));\n}\nfunction getKeyIdBytes(str) {\n  const keyIdbytes = strToUtf8array(str).subarray(0, 16);\n  const paddedkeyIdbytes = new Uint8Array(16);\n  paddedkeyIdbytes.set(keyIdbytes, 16 - keyIdbytes.length);\n  return paddedkeyIdbytes;\n}\nfunction changeEndianness(keyId) {\n  const swap = function swap2(array, from, to) {\n    const cur = array[from];\n    array[from] = array[to];\n    array[to] = cur;\n  };\n  swap(keyId, 0, 3);\n  swap(keyId, 1, 2);\n  swap(keyId, 4, 5);\n  swap(keyId, 6, 7);\n}\nfunction convertDataUriToArrayBytes(uri) {\n  const colonsplit = uri.split(\":\");\n  let keydata = null;\n  if (colonsplit[0] === \"data\" && colonsplit.length === 2) {\n    const semicolonsplit = colonsplit[1].split(\";\");\n    const commasplit = semicolonsplit[semicolonsplit.length - 1].split(\",\");\n    if (commasplit.length === 2) {\n      const isbase64 = commasplit[0] === \"base64\";\n      const data = commasplit[1];\n      if (isbase64) {\n        semicolonsplit.splice(-1, 1);\n        keydata = base64Decode(data);\n      } else {\n        keydata = getKeyIdBytes(data);\n      }\n    }\n  }\n  return keydata;\n}\nfunction strToUtf8array(str) {\n  return Uint8Array.from(unescape(encodeURIComponent(str)), (c4) => c4.charCodeAt(0));\n}\nvar optionalSelf = typeof self !== \"undefined\" ? self : void 0;\nvar KeySystems = {\n  CLEARKEY: \"org.w3.clearkey\",\n  FAIRPLAY: \"com.apple.fps\",\n  PLAYREADY: \"com.microsoft.playready\",\n  WIDEVINE: \"com.widevine.alpha\"\n};\nvar KeySystemFormats = {\n  CLEARKEY: \"org.w3.clearkey\",\n  FAIRPLAY: \"com.apple.streamingkeydelivery\",\n  PLAYREADY: \"com.microsoft.playready\",\n  WIDEVINE: \"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed\"\n};\nfunction keySystemFormatToKeySystemDomain(format2) {\n  switch (format2) {\n    case KeySystemFormats.FAIRPLAY:\n      return KeySystems.FAIRPLAY;\n    case KeySystemFormats.PLAYREADY:\n      return KeySystems.PLAYREADY;\n    case KeySystemFormats.WIDEVINE:\n      return KeySystems.WIDEVINE;\n    case KeySystemFormats.CLEARKEY:\n      return KeySystems.CLEARKEY;\n  }\n}\nvar KeySystemIds = {\n  CENC: \"1077efecc0b24d02ace33c1e52e2fb4b\",\n  CLEARKEY: \"e2719d58a985b3c9781ab030af78d30e\",\n  FAIRPLAY: \"94ce86fb07ff4f43adb893d2fa968ca2\",\n  PLAYREADY: \"9a04f07998404286ab92e65be0885f95\",\n  WIDEVINE: \"edef8ba979d64acea3c827dcd51d21ed\"\n};\nfunction keySystemIdToKeySystemDomain(systemId) {\n  if (systemId === KeySystemIds.WIDEVINE) {\n    return KeySystems.WIDEVINE;\n  } else if (systemId === KeySystemIds.PLAYREADY) {\n    return KeySystems.PLAYREADY;\n  } else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) {\n    return KeySystems.CLEARKEY;\n  }\n}\nfunction keySystemDomainToKeySystemFormat(keySystem) {\n  switch (keySystem) {\n    case KeySystems.FAIRPLAY:\n      return KeySystemFormats.FAIRPLAY;\n    case KeySystems.PLAYREADY:\n      return KeySystemFormats.PLAYREADY;\n    case KeySystems.WIDEVINE:\n      return KeySystemFormats.WIDEVINE;\n    case KeySystems.CLEARKEY:\n      return KeySystemFormats.CLEARKEY;\n  }\n}\nfunction getKeySystemsForConfig(config) {\n  const {\n    drmSystems,\n    widevineLicenseUrl\n  } = config;\n  const keySystemsToAttempt = drmSystems ? [KeySystems.FAIRPLAY, KeySystems.WIDEVINE, KeySystems.PLAYREADY, KeySystems.CLEARKEY].filter((keySystem) => !!drmSystems[keySystem]) : [];\n  if (!keySystemsToAttempt[KeySystems.WIDEVINE] && widevineLicenseUrl) {\n    keySystemsToAttempt.push(KeySystems.WIDEVINE);\n  }\n  return keySystemsToAttempt;\n}\nvar requestMediaKeySystemAccess = function(_optionalSelf$navigat) {\n  if (optionalSelf != null && (_optionalSelf$navigat = optionalSelf.navigator) != null && _optionalSelf$navigat.requestMediaKeySystemAccess) {\n    return self.navigator.requestMediaKeySystemAccess.bind(self.navigator);\n  } else {\n    return null;\n  }\n}();\nfunction getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, drmSystemOptions) {\n  let initDataTypes;\n  switch (keySystem) {\n    case KeySystems.FAIRPLAY:\n      initDataTypes = [\"cenc\", \"sinf\"];\n      break;\n    case KeySystems.WIDEVINE:\n    case KeySystems.PLAYREADY:\n      initDataTypes = [\"cenc\"];\n      break;\n    case KeySystems.CLEARKEY:\n      initDataTypes = [\"cenc\", \"keyids\"];\n      break;\n    default:\n      throw new Error(`Unknown key-system: ${keySystem}`);\n  }\n  return createMediaKeySystemConfigurations(initDataTypes, audioCodecs, videoCodecs, drmSystemOptions);\n}\nfunction createMediaKeySystemConfigurations(initDataTypes, audioCodecs, videoCodecs, drmSystemOptions) {\n  const baseConfig = {\n    initDataTypes,\n    persistentState: drmSystemOptions.persistentState || \"optional\",\n    distinctiveIdentifier: drmSystemOptions.distinctiveIdentifier || \"optional\",\n    sessionTypes: drmSystemOptions.sessionTypes || [drmSystemOptions.sessionType || \"temporary\"],\n    audioCapabilities: audioCodecs.map((codec) => ({\n      contentType: `audio/mp4; codecs=\"${codec}\"`,\n      robustness: drmSystemOptions.audioRobustness || \"\",\n      encryptionScheme: drmSystemOptions.audioEncryptionScheme || null\n    })),\n    videoCapabilities: videoCodecs.map((codec) => ({\n      contentType: `video/mp4; codecs=\"${codec}\"`,\n      robustness: drmSystemOptions.videoRobustness || \"\",\n      encryptionScheme: drmSystemOptions.videoEncryptionScheme || null\n    }))\n  };\n  return [baseConfig];\n}\nfunction parsePlayReadyWRM(keyBytes) {\n  const keyBytesUtf16 = new Uint16Array(keyBytes.buffer, keyBytes.byteOffset, keyBytes.byteLength / 2);\n  const keyByteStr = String.fromCharCode.apply(null, Array.from(keyBytesUtf16));\n  const xmlKeyBytes = keyByteStr.substring(keyByteStr.indexOf(\"<\"), keyByteStr.length);\n  const parser = new DOMParser();\n  const xmlDoc = parser.parseFromString(xmlKeyBytes, \"text/xml\");\n  const keyData = xmlDoc.getElementsByTagName(\"KID\")[0];\n  if (keyData) {\n    const keyId = keyData.childNodes[0] ? keyData.childNodes[0].nodeValue : keyData.getAttribute(\"VALUE\");\n    if (keyId) {\n      const keyIdArray = base64Decode(keyId).subarray(0, 16);\n      changeEndianness(keyIdArray);\n      return keyIdArray;\n    }\n  }\n  return null;\n}\nfunction sliceUint8(array, start, end) {\n  return Uint8Array.prototype.slice ? array.slice(start, end) : new Uint8Array(Array.prototype.slice.call(array, start, end));\n}\nvar isHeader$2 = (data, offset) => {\n  if (offset + 10 <= data.length) {\n    if (data[offset] === 73 && data[offset + 1] === 68 && data[offset + 2] === 51) {\n      if (data[offset + 3] < 255 && data[offset + 4] < 255) {\n        if (data[offset + 6] < 128 && data[offset + 7] < 128 && data[offset + 8] < 128 && data[offset + 9] < 128) {\n          return true;\n        }\n      }\n    }\n  }\n  return false;\n};\nvar isFooter = (data, offset) => {\n  if (offset + 10 <= data.length) {\n    if (data[offset] === 51 && data[offset + 1] === 68 && data[offset + 2] === 73) {\n      if (data[offset + 3] < 255 && data[offset + 4] < 255) {\n        if (data[offset + 6] < 128 && data[offset + 7] < 128 && data[offset + 8] < 128 && data[offset + 9] < 128) {\n          return true;\n        }\n      }\n    }\n  }\n  return false;\n};\nvar getID3Data = (data, offset) => {\n  const front = offset;\n  let length = 0;\n  while (isHeader$2(data, offset)) {\n    length += 10;\n    const size = readSize(data, offset + 6);\n    length += size;\n    if (isFooter(data, offset + 10)) {\n      length += 10;\n    }\n    offset += length;\n  }\n  if (length > 0) {\n    return data.subarray(front, front + length);\n  }\n  return void 0;\n};\nvar readSize = (data, offset) => {\n  let size = 0;\n  size = (data[offset] & 127) << 21;\n  size |= (data[offset + 1] & 127) << 14;\n  size |= (data[offset + 2] & 127) << 7;\n  size |= data[offset + 3] & 127;\n  return size;\n};\nvar canParse$2 = (data, offset) => {\n  return isHeader$2(data, offset) && readSize(data, offset + 6) + 10 <= data.length - offset;\n};\nvar getTimeStamp = (data) => {\n  const frames = getID3Frames(data);\n  for (let i2 = 0; i2 < frames.length; i2++) {\n    const frame = frames[i2];\n    if (isTimeStampFrame(frame)) {\n      return readTimeStamp(frame);\n    }\n  }\n  return void 0;\n};\nvar isTimeStampFrame = (frame) => {\n  return frame && frame.key === \"PRIV\" && frame.info === \"com.apple.streaming.transportStreamTimestamp\";\n};\nvar getFrameData = (data) => {\n  const type = String.fromCharCode(data[0], data[1], data[2], data[3]);\n  const size = readSize(data, 4);\n  const offset = 10;\n  return {\n    type,\n    size,\n    data: data.subarray(offset, offset + size)\n  };\n};\nvar getID3Frames = (id3Data) => {\n  let offset = 0;\n  const frames = [];\n  while (isHeader$2(id3Data, offset)) {\n    const size = readSize(id3Data, offset + 6);\n    offset += 10;\n    const end = offset + size;\n    while (offset + 8 < end) {\n      const frameData = getFrameData(id3Data.subarray(offset));\n      const frame = decodeFrame(frameData);\n      if (frame) {\n        frames.push(frame);\n      }\n      offset += frameData.size + 10;\n    }\n    if (isFooter(id3Data, offset)) {\n      offset += 10;\n    }\n  }\n  return frames;\n};\nvar decodeFrame = (frame) => {\n  if (frame.type === \"PRIV\") {\n    return decodePrivFrame(frame);\n  } else if (frame.type[0] === \"W\") {\n    return decodeURLFrame(frame);\n  }\n  return decodeTextFrame(frame);\n};\nvar decodePrivFrame = (frame) => {\n  if (frame.size < 2) {\n    return void 0;\n  }\n  const owner = utf8ArrayToStr(frame.data, true);\n  const privateData = new Uint8Array(frame.data.subarray(owner.length + 1));\n  return {\n    key: frame.type,\n    info: owner,\n    data: privateData.buffer\n  };\n};\nvar decodeTextFrame = (frame) => {\n  if (frame.size < 2) {\n    return void 0;\n  }\n  if (frame.type === \"TXXX\") {\n    let index = 1;\n    const description = utf8ArrayToStr(frame.data.subarray(index), true);\n    index += description.length + 1;\n    const value = utf8ArrayToStr(frame.data.subarray(index));\n    return {\n      key: frame.type,\n      info: description,\n      data: value\n    };\n  }\n  const text = utf8ArrayToStr(frame.data.subarray(1));\n  return {\n    key: frame.type,\n    data: text\n  };\n};\nvar decodeURLFrame = (frame) => {\n  if (frame.type === \"WXXX\") {\n    if (frame.size < 2) {\n      return void 0;\n    }\n    let index = 1;\n    const description = utf8ArrayToStr(frame.data.subarray(index), true);\n    index += description.length + 1;\n    const value = utf8ArrayToStr(frame.data.subarray(index));\n    return {\n      key: frame.type,\n      info: description,\n      data: value\n    };\n  }\n  const url = utf8ArrayToStr(frame.data);\n  return {\n    key: frame.type,\n    data: url\n  };\n};\nvar readTimeStamp = (timeStampFrame) => {\n  if (timeStampFrame.data.byteLength === 8) {\n    const data = new Uint8Array(timeStampFrame.data);\n    const pts33Bit = data[3] & 1;\n    let timestamp = (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];\n    timestamp /= 45;\n    if (pts33Bit) {\n      timestamp += 4772185884e-2;\n    }\n    return Math.round(timestamp);\n  }\n  return void 0;\n};\nvar utf8ArrayToStr = (array, exitOnNull = false) => {\n  const decoder2 = getTextDecoder();\n  if (decoder2) {\n    const decoded = decoder2.decode(array);\n    if (exitOnNull) {\n      const idx = decoded.indexOf(\"\\0\");\n      return idx !== -1 ? decoded.substring(0, idx) : decoded;\n    }\n    return decoded.replace(/\\0/g, \"\");\n  }\n  const len = array.length;\n  let c4;\n  let char2;\n  let char3;\n  let out = \"\";\n  let i2 = 0;\n  while (i2 < len) {\n    c4 = array[i2++];\n    if (c4 === 0 && exitOnNull) {\n      return out;\n    } else if (c4 === 0 || c4 === 3) {\n      continue;\n    }\n    switch (c4 >> 4) {\n      case 0:\n      case 1:\n      case 2:\n      case 3:\n      case 4:\n      case 5:\n      case 6:\n      case 7:\n        out += String.fromCharCode(c4);\n        break;\n      case 12:\n      case 13:\n        char2 = array[i2++];\n        out += String.fromCharCode((c4 & 31) << 6 | char2 & 63);\n        break;\n      case 14:\n        char2 = array[i2++];\n        char3 = array[i2++];\n        out += String.fromCharCode((c4 & 15) << 12 | (char2 & 63) << 6 | (char3 & 63) << 0);\n        break;\n    }\n  }\n  return out;\n};\nvar decoder;\nfunction getTextDecoder() {\n  if (navigator.userAgent.includes(\"PlayStation 4\")) {\n    return;\n  }\n  if (!decoder && typeof self.TextDecoder !== \"undefined\") {\n    decoder = new self.TextDecoder(\"utf-8\");\n  }\n  return decoder;\n}\nvar Hex = {\n  hexDump: function(array) {\n    let str = \"\";\n    for (let i2 = 0; i2 < array.length; i2++) {\n      let h3 = array[i2].toString(16);\n      if (h3.length < 2) {\n        h3 = \"0\" + h3;\n      }\n      str += h3;\n    }\n    return str;\n  }\n};\nvar UINT32_MAX$1 = Math.pow(2, 32) - 1;\nvar push = [].push;\nvar RemuxerTrackIdConfig = {\n  video: 1,\n  audio: 2,\n  id3: 3,\n  text: 4\n};\nfunction bin2str(data) {\n  return String.fromCharCode.apply(null, data);\n}\nfunction readUint16(buffer, offset) {\n  const val = buffer[offset] << 8 | buffer[offset + 1];\n  return val < 0 ? 65536 + val : val;\n}\nfunction readUint32(buffer, offset) {\n  const val = readSint32(buffer, offset);\n  return val < 0 ? 4294967296 + val : val;\n}\nfunction readUint64(buffer, offset) {\n  let result = readUint32(buffer, offset);\n  result *= Math.pow(2, 32);\n  result += readUint32(buffer, offset + 4);\n  return result;\n}\nfunction readSint32(buffer, offset) {\n  return buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];\n}\nfunction writeUint32(buffer, offset, value) {\n  buffer[offset] = value >> 24;\n  buffer[offset + 1] = value >> 16 & 255;\n  buffer[offset + 2] = value >> 8 & 255;\n  buffer[offset + 3] = value & 255;\n}\nfunction hasMoofData(data) {\n  const end = data.byteLength;\n  for (let i2 = 0; i2 < end; ) {\n    const size = readUint32(data, i2);\n    if (size > 8 && data[i2 + 4] === 109 && data[i2 + 5] === 111 && data[i2 + 6] === 111 && data[i2 + 7] === 102) {\n      return true;\n    }\n    i2 = size > 1 ? i2 + size : end;\n  }\n  return false;\n}\nfunction findBox(data, path) {\n  const results = [];\n  if (!path.length) {\n    return results;\n  }\n  const end = data.byteLength;\n  for (let i2 = 0; i2 < end; ) {\n    const size = readUint32(data, i2);\n    const type = bin2str(data.subarray(i2 + 4, i2 + 8));\n    const endbox = size > 1 ? i2 + size : end;\n    if (type === path[0]) {\n      if (path.length === 1) {\n        results.push(data.subarray(i2 + 8, endbox));\n      } else {\n        const subresults = findBox(data.subarray(i2 + 8, endbox), path.slice(1));\n        if (subresults.length) {\n          push.apply(results, subresults);\n        }\n      }\n    }\n    i2 = endbox;\n  }\n  return results;\n}\nfunction parseSegmentIndex(sidx) {\n  const references = [];\n  const version = sidx[0];\n  let index = 8;\n  const timescale = readUint32(sidx, index);\n  index += 4;\n  let earliestPresentationTime = 0;\n  let firstOffset = 0;\n  if (version === 0) {\n    earliestPresentationTime = readUint32(sidx, index);\n    firstOffset = readUint32(sidx, index + 4);\n    index += 8;\n  } else {\n    earliestPresentationTime = readUint64(sidx, index);\n    firstOffset = readUint64(sidx, index + 8);\n    index += 16;\n  }\n  index += 2;\n  let startByte = sidx.length + firstOffset;\n  const referencesCount = readUint16(sidx, index);\n  index += 2;\n  for (let i2 = 0; i2 < referencesCount; i2++) {\n    let referenceIndex = index;\n    const referenceInfo = readUint32(sidx, referenceIndex);\n    referenceIndex += 4;\n    const referenceSize = referenceInfo & 2147483647;\n    const referenceType = (referenceInfo & 2147483648) >>> 31;\n    if (referenceType === 1) {\n      logger.warn(\"SIDX has hierarchical references (not supported)\");\n      return null;\n    }\n    const subsegmentDuration = readUint32(sidx, referenceIndex);\n    referenceIndex += 4;\n    references.push({\n      referenceSize,\n      subsegmentDuration,\n      // unscaled\n      info: {\n        duration: subsegmentDuration / timescale,\n        start: startByte,\n        end: startByte + referenceSize - 1\n      }\n    });\n    startByte += referenceSize;\n    referenceIndex += 4;\n    index = referenceIndex;\n  }\n  return {\n    earliestPresentationTime,\n    timescale,\n    version,\n    referencesCount,\n    references\n  };\n}\nfunction parseInitSegment(initSegment) {\n  const result = [];\n  const traks = findBox(initSegment, [\"moov\", \"trak\"]);\n  for (let i2 = 0; i2 < traks.length; i2++) {\n    const trak = traks[i2];\n    const tkhd = findBox(trak, [\"tkhd\"])[0];\n    if (tkhd) {\n      let version = tkhd[0];\n      const trackId = readUint32(tkhd, version === 0 ? 12 : 20);\n      const mdhd = findBox(trak, [\"mdia\", \"mdhd\"])[0];\n      if (mdhd) {\n        version = mdhd[0];\n        const timescale = readUint32(mdhd, version === 0 ? 12 : 20);\n        const hdlr = findBox(trak, [\"mdia\", \"hdlr\"])[0];\n        if (hdlr) {\n          const hdlrType = bin2str(hdlr.subarray(8, 12));\n          const type = {\n            soun: ElementaryStreamTypes.AUDIO,\n            vide: ElementaryStreamTypes.VIDEO\n          }[hdlrType];\n          if (type) {\n            const stsd = findBox(trak, [\"mdia\", \"minf\", \"stbl\", \"stsd\"])[0];\n            const stsdData = parseStsd(stsd);\n            result[trackId] = {\n              timescale,\n              type\n            };\n            result[type] = _objectSpread2({\n              timescale,\n              id: trackId\n            }, stsdData);\n          }\n        }\n      }\n    }\n  }\n  const trex = findBox(initSegment, [\"moov\", \"mvex\", \"trex\"]);\n  trex.forEach((trex2) => {\n    const trackId = readUint32(trex2, 4);\n    const track = result[trackId];\n    if (track) {\n      track.default = {\n        duration: readUint32(trex2, 12),\n        flags: readUint32(trex2, 20)\n      };\n    }\n  });\n  return result;\n}\nfunction parseStsd(stsd) {\n  const sampleEntries = stsd.subarray(8);\n  const sampleEntriesEnd = sampleEntries.subarray(8 + 78);\n  const fourCC = bin2str(sampleEntries.subarray(4, 8));\n  let codec = fourCC;\n  const encrypted = fourCC === \"enca\" || fourCC === \"encv\";\n  if (encrypted) {\n    const encBox = findBox(sampleEntries, [fourCC])[0];\n    const encBoxChildren = encBox.subarray(fourCC === \"enca\" ? 28 : 78);\n    const sinfs = findBox(encBoxChildren, [\"sinf\"]);\n    sinfs.forEach((sinf) => {\n      const schm = findBox(sinf, [\"schm\"])[0];\n      if (schm) {\n        const scheme = bin2str(schm.subarray(4, 8));\n        if (scheme === \"cbcs\" || scheme === \"cenc\") {\n          const frma = findBox(sinf, [\"frma\"])[0];\n          if (frma) {\n            codec = bin2str(frma);\n          }\n        }\n      }\n    });\n  }\n  switch (codec) {\n    case \"avc1\":\n    case \"avc2\":\n    case \"avc3\":\n    case \"avc4\": {\n      const avcCBox = findBox(sampleEntriesEnd, [\"avcC\"])[0];\n      codec += \".\" + toHex(avcCBox[1]) + toHex(avcCBox[2]) + toHex(avcCBox[3]);\n      break;\n    }\n    case \"mp4a\": {\n      const codecBox = findBox(sampleEntries, [fourCC])[0];\n      const esdsBox = findBox(codecBox.subarray(28), [\"esds\"])[0];\n      if (esdsBox && esdsBox.length > 12) {\n        let i2 = 4;\n        if (esdsBox[i2++] !== 3) {\n          break;\n        }\n        i2 = skipBERInteger(esdsBox, i2);\n        i2 += 2;\n        const flags = esdsBox[i2++];\n        if (flags & 128) {\n          i2 += 2;\n        }\n        if (flags & 64) {\n          i2 += esdsBox[i2++];\n        }\n        if (esdsBox[i2++] !== 4) {\n          break;\n        }\n        i2 = skipBERInteger(esdsBox, i2);\n        const objectType = esdsBox[i2++];\n        if (objectType === 64) {\n          codec += \".\" + toHex(objectType);\n        } else {\n          break;\n        }\n        i2 += 12;\n        if (esdsBox[i2++] !== 5) {\n          break;\n        }\n        i2 = skipBERInteger(esdsBox, i2);\n        const firstByte = esdsBox[i2++];\n        let audioObjectType = (firstByte & 248) >> 3;\n        if (audioObjectType === 31) {\n          audioObjectType += 1 + ((firstByte & 7) << 3) + ((esdsBox[i2] & 224) >> 5);\n        }\n        codec += \".\" + audioObjectType;\n      }\n      break;\n    }\n    case \"hvc1\":\n    case \"hev1\": {\n      const hvcCBox = findBox(sampleEntriesEnd, [\"hvcC\"])[0];\n      const profileByte = hvcCBox[1];\n      const profileSpace = [\"\", \"A\", \"B\", \"C\"][profileByte >> 6];\n      const generalProfileIdc = profileByte & 31;\n      const profileCompat = readUint32(hvcCBox, 2);\n      const tierFlag = (profileByte & 32) >> 5 ? \"H\" : \"L\";\n      const levelIDC = hvcCBox[12];\n      const constraintIndicator = hvcCBox.subarray(6, 12);\n      codec += \".\" + profileSpace + generalProfileIdc;\n      codec += \".\" + profileCompat.toString(16).toUpperCase();\n      codec += \".\" + tierFlag + levelIDC;\n      let constraintString = \"\";\n      for (let i2 = constraintIndicator.length; i2--; ) {\n        const byte = constraintIndicator[i2];\n        if (byte || constraintString) {\n          const encodedByte = byte.toString(16).toUpperCase();\n          constraintString = \".\" + encodedByte + constraintString;\n        }\n      }\n      codec += constraintString;\n      break;\n    }\n    case \"dvh1\":\n    case \"dvhe\": {\n      const dvcCBox = findBox(sampleEntriesEnd, [\"dvcC\"])[0];\n      const profile = dvcCBox[2] >> 1 & 127;\n      const level = dvcCBox[2] << 5 & 32 | dvcCBox[3] >> 3 & 31;\n      codec += \".\" + addLeadingZero(profile) + \".\" + addLeadingZero(level);\n      break;\n    }\n    case \"vp09\": {\n      const vpcCBox = findBox(sampleEntriesEnd, [\"vpcC\"])[0];\n      const profile = vpcCBox[4];\n      const level = vpcCBox[5];\n      const bitDepth = vpcCBox[6] >> 4 & 15;\n      codec += \".\" + addLeadingZero(profile) + \".\" + addLeadingZero(level) + \".\" + addLeadingZero(bitDepth);\n      break;\n    }\n    case \"av01\": {\n      const av1CBox = findBox(sampleEntriesEnd, [\"av1C\"])[0];\n      const profile = av1CBox[1] >>> 5;\n      const level = av1CBox[1] & 31;\n      const tierFlag = av1CBox[2] >>> 7 ? \"H\" : \"M\";\n      const highBitDepth = (av1CBox[2] & 64) >> 6;\n      const twelveBit = (av1CBox[2] & 32) >> 5;\n      const bitDepth = profile === 2 && highBitDepth ? twelveBit ? 12 : 10 : highBitDepth ? 10 : 8;\n      const monochrome = (av1CBox[2] & 16) >> 4;\n      const chromaSubsamplingX = (av1CBox[2] & 8) >> 3;\n      const chromaSubsamplingY = (av1CBox[2] & 4) >> 2;\n      const chromaSamplePosition = av1CBox[2] & 3;\n      const colorPrimaries = 1;\n      const transferCharacteristics = 1;\n      const matrixCoefficients = 1;\n      const videoFullRangeFlag = 0;\n      codec += \".\" + profile + \".\" + addLeadingZero(level) + tierFlag + \".\" + addLeadingZero(bitDepth) + \".\" + monochrome + \".\" + chromaSubsamplingX + chromaSubsamplingY + chromaSamplePosition + \".\" + addLeadingZero(colorPrimaries) + \".\" + addLeadingZero(transferCharacteristics) + \".\" + addLeadingZero(matrixCoefficients) + \".\" + videoFullRangeFlag;\n      break;\n    }\n  }\n  return {\n    codec,\n    encrypted\n  };\n}\nfunction skipBERInteger(bytes, i2) {\n  const limit = i2 + 5;\n  while (bytes[i2++] & 128 && i2 < limit) {\n  }\n  return i2;\n}\nfunction toHex(x4) {\n  return (\"0\" + x4.toString(16).toUpperCase()).slice(-2);\n}\nfunction addLeadingZero(num) {\n  return (num < 10 ? \"0\" : \"\") + num;\n}\nfunction patchEncyptionData(initSegment, decryptdata) {\n  if (!initSegment || !decryptdata) {\n    return initSegment;\n  }\n  const keyId = decryptdata.keyId;\n  if (keyId && decryptdata.isCommonEncryption) {\n    const traks = findBox(initSegment, [\"moov\", \"trak\"]);\n    traks.forEach((trak) => {\n      const stsd = findBox(trak, [\"mdia\", \"minf\", \"stbl\", \"stsd\"])[0];\n      const sampleEntries = stsd.subarray(8);\n      let encBoxes = findBox(sampleEntries, [\"enca\"]);\n      const isAudio = encBoxes.length > 0;\n      if (!isAudio) {\n        encBoxes = findBox(sampleEntries, [\"encv\"]);\n      }\n      encBoxes.forEach((enc) => {\n        const encBoxChildren = isAudio ? enc.subarray(28) : enc.subarray(78);\n        const sinfBoxes = findBox(encBoxChildren, [\"sinf\"]);\n        sinfBoxes.forEach((sinf) => {\n          const tenc = parseSinf(sinf);\n          if (tenc) {\n            const tencKeyId = tenc.subarray(8, 24);\n            if (!tencKeyId.some((b4) => b4 !== 0)) {\n              logger.log(`[eme] Patching keyId in 'enc${isAudio ? \"a\" : \"v\"}>sinf>>tenc' box: ${Hex.hexDump(tencKeyId)} -> ${Hex.hexDump(keyId)}`);\n              tenc.set(keyId, 8);\n            }\n          }\n        });\n      });\n    });\n  }\n  return initSegment;\n}\nfunction parseSinf(sinf) {\n  const schm = findBox(sinf, [\"schm\"])[0];\n  if (schm) {\n    const scheme = bin2str(schm.subarray(4, 8));\n    if (scheme === \"cbcs\" || scheme === \"cenc\") {\n      return findBox(sinf, [\"schi\", \"tenc\"])[0];\n    }\n  }\n  return null;\n}\nfunction getStartDTS(initData, fmp4) {\n  return findBox(fmp4, [\"moof\", \"traf\"]).reduce((result, traf) => {\n    const tfdt = findBox(traf, [\"tfdt\"])[0];\n    const version = tfdt[0];\n    const start = findBox(traf, [\"tfhd\"]).reduce((result2, tfhd) => {\n      const id = readUint32(tfhd, 4);\n      const track = initData[id];\n      if (track) {\n        let baseTime = readUint32(tfdt, 4);\n        if (version === 1) {\n          if (baseTime === UINT32_MAX$1) {\n            logger.warn(`[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time`);\n            return result2;\n          }\n          baseTime *= UINT32_MAX$1 + 1;\n          baseTime += readUint32(tfdt, 8);\n        }\n        const scale = track.timescale || 9e4;\n        const startTime = baseTime / scale;\n        if (isFiniteNumber(startTime) && (result2 === null || startTime < result2)) {\n          return startTime;\n        }\n      }\n      return result2;\n    }, null);\n    if (start !== null && isFiniteNumber(start) && (result === null || start < result)) {\n      return start;\n    }\n    return result;\n  }, null);\n}\nfunction getDuration(data, initData) {\n  let rawDuration = 0;\n  let videoDuration = 0;\n  let audioDuration = 0;\n  const trafs = findBox(data, [\"moof\", \"traf\"]);\n  for (let i2 = 0; i2 < trafs.length; i2++) {\n    const traf = trafs[i2];\n    const tfhd = findBox(traf, [\"tfhd\"])[0];\n    const id = readUint32(tfhd, 4);\n    const track = initData[id];\n    if (!track) {\n      continue;\n    }\n    const trackDefault = track.default;\n    const tfhdFlags = readUint32(tfhd, 0) | (trackDefault == null ? void 0 : trackDefault.flags);\n    let sampleDuration = trackDefault == null ? void 0 : trackDefault.duration;\n    if (tfhdFlags & 8) {\n      if (tfhdFlags & 2) {\n        sampleDuration = readUint32(tfhd, 12);\n      } else {\n        sampleDuration = readUint32(tfhd, 8);\n      }\n    }\n    const timescale = track.timescale || 9e4;\n    const truns = findBox(traf, [\"trun\"]);\n    for (let j4 = 0; j4 < truns.length; j4++) {\n      rawDuration = computeRawDurationFromSamples(truns[j4]);\n      if (!rawDuration && sampleDuration) {\n        const sampleCount = readUint32(truns[j4], 4);\n        rawDuration = sampleDuration * sampleCount;\n      }\n      if (track.type === ElementaryStreamTypes.VIDEO) {\n        videoDuration += rawDuration / timescale;\n      } else if (track.type === ElementaryStreamTypes.AUDIO) {\n        audioDuration += rawDuration / timescale;\n      }\n    }\n  }\n  if (videoDuration === 0 && audioDuration === 0) {\n    let sidxMinStart = Infinity;\n    let sidxMaxEnd = 0;\n    let sidxDuration = 0;\n    const sidxs = findBox(data, [\"sidx\"]);\n    for (let i2 = 0; i2 < sidxs.length; i2++) {\n      const sidx = parseSegmentIndex(sidxs[i2]);\n      if (sidx != null && sidx.references) {\n        sidxMinStart = Math.min(sidxMinStart, sidx.earliestPresentationTime / sidx.timescale);\n        const subSegmentDuration = sidx.references.reduce((dur, ref) => dur + ref.info.duration || 0, 0);\n        sidxMaxEnd = Math.max(sidxMaxEnd, subSegmentDuration + sidx.earliestPresentationTime / sidx.timescale);\n        sidxDuration = sidxMaxEnd - sidxMinStart;\n      }\n    }\n    if (sidxDuration && isFiniteNumber(sidxDuration)) {\n      return sidxDuration;\n    }\n  }\n  if (videoDuration) {\n    return videoDuration;\n  }\n  return audioDuration;\n}\nfunction computeRawDurationFromSamples(trun) {\n  const flags = readUint32(trun, 0);\n  let offset = 8;\n  if (flags & 1) {\n    offset += 4;\n  }\n  if (flags & 4) {\n    offset += 4;\n  }\n  let duration = 0;\n  const sampleCount = readUint32(trun, 4);\n  for (let i2 = 0; i2 < sampleCount; i2++) {\n    if (flags & 256) {\n      const sampleDuration = readUint32(trun, offset);\n      duration += sampleDuration;\n      offset += 4;\n    }\n    if (flags & 512) {\n      offset += 4;\n    }\n    if (flags & 1024) {\n      offset += 4;\n    }\n    if (flags & 2048) {\n      offset += 4;\n    }\n  }\n  return duration;\n}\nfunction offsetStartDTS(initData, fmp4, timeOffset) {\n  findBox(fmp4, [\"moof\", \"traf\"]).forEach((traf) => {\n    findBox(traf, [\"tfhd\"]).forEach((tfhd) => {\n      const id = readUint32(tfhd, 4);\n      const track = initData[id];\n      if (!track) {\n        return;\n      }\n      const timescale = track.timescale || 9e4;\n      findBox(traf, [\"tfdt\"]).forEach((tfdt) => {\n        const version = tfdt[0];\n        const offset = timeOffset * timescale;\n        if (offset) {\n          let baseMediaDecodeTime = readUint32(tfdt, 4);\n          if (version === 0) {\n            baseMediaDecodeTime -= offset;\n            baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n            writeUint32(tfdt, 4, baseMediaDecodeTime);\n          } else {\n            baseMediaDecodeTime *= Math.pow(2, 32);\n            baseMediaDecodeTime += readUint32(tfdt, 8);\n            baseMediaDecodeTime -= offset;\n            baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n            const upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX$1 + 1));\n            const lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX$1 + 1));\n            writeUint32(tfdt, 4, upper);\n            writeUint32(tfdt, 8, lower);\n          }\n        }\n      });\n    });\n  });\n}\nfunction segmentValidRange(data) {\n  const segmentedRange = {\n    valid: null,\n    remainder: null\n  };\n  const moofs = findBox(data, [\"moof\"]);\n  if (moofs.length < 2) {\n    segmentedRange.remainder = data;\n    return segmentedRange;\n  }\n  const last = moofs[moofs.length - 1];\n  segmentedRange.valid = sliceUint8(data, 0, last.byteOffset - 8);\n  segmentedRange.remainder = sliceUint8(data, last.byteOffset - 8);\n  return segmentedRange;\n}\nfunction appendUint8Array(data1, data2) {\n  const temp = new Uint8Array(data1.length + data2.length);\n  temp.set(data1);\n  temp.set(data2, data1.length);\n  return temp;\n}\nfunction parseSamples(timeOffset, track) {\n  const seiSamples = [];\n  const videoData = track.samples;\n  const timescale = track.timescale;\n  const trackId = track.id;\n  let isHEVCFlavor = false;\n  const moofs = findBox(videoData, [\"moof\"]);\n  moofs.map((moof) => {\n    const moofOffset = moof.byteOffset - 8;\n    const trafs = findBox(moof, [\"traf\"]);\n    trafs.map((traf) => {\n      const baseTime = findBox(traf, [\"tfdt\"]).map((tfdt) => {\n        const version = tfdt[0];\n        let result = readUint32(tfdt, 4);\n        if (version === 1) {\n          result *= Math.pow(2, 32);\n          result += readUint32(tfdt, 8);\n        }\n        return result / timescale;\n      })[0];\n      if (baseTime !== void 0) {\n        timeOffset = baseTime;\n      }\n      return findBox(traf, [\"tfhd\"]).map((tfhd) => {\n        const id = readUint32(tfhd, 4);\n        const tfhdFlags = readUint32(tfhd, 0) & 16777215;\n        const baseDataOffsetPresent = (tfhdFlags & 1) !== 0;\n        const sampleDescriptionIndexPresent = (tfhdFlags & 2) !== 0;\n        const defaultSampleDurationPresent = (tfhdFlags & 8) !== 0;\n        let defaultSampleDuration = 0;\n        const defaultSampleSizePresent = (tfhdFlags & 16) !== 0;\n        let defaultSampleSize = 0;\n        const defaultSampleFlagsPresent = (tfhdFlags & 32) !== 0;\n        let tfhdOffset = 8;\n        if (id === trackId) {\n          if (baseDataOffsetPresent) {\n            tfhdOffset += 8;\n          }\n          if (sampleDescriptionIndexPresent) {\n            tfhdOffset += 4;\n          }\n          if (defaultSampleDurationPresent) {\n            defaultSampleDuration = readUint32(tfhd, tfhdOffset);\n            tfhdOffset += 4;\n          }\n          if (defaultSampleSizePresent) {\n            defaultSampleSize = readUint32(tfhd, tfhdOffset);\n            tfhdOffset += 4;\n          }\n          if (defaultSampleFlagsPresent) {\n            tfhdOffset += 4;\n          }\n          if (track.type === \"video\") {\n            isHEVCFlavor = isHEVC(track.codec);\n          }\n          findBox(traf, [\"trun\"]).map((trun) => {\n            const version = trun[0];\n            const flags = readUint32(trun, 0) & 16777215;\n            const dataOffsetPresent = (flags & 1) !== 0;\n            let dataOffset = 0;\n            const firstSampleFlagsPresent = (flags & 4) !== 0;\n            const sampleDurationPresent = (flags & 256) !== 0;\n            let sampleDuration = 0;\n            const sampleSizePresent = (flags & 512) !== 0;\n            let sampleSize = 0;\n            const sampleFlagsPresent = (flags & 1024) !== 0;\n            const sampleCompositionOffsetsPresent = (flags & 2048) !== 0;\n            let compositionOffset = 0;\n            const sampleCount = readUint32(trun, 4);\n            let trunOffset = 8;\n            if (dataOffsetPresent) {\n              dataOffset = readUint32(trun, trunOffset);\n              trunOffset += 4;\n            }\n            if (firstSampleFlagsPresent) {\n              trunOffset += 4;\n            }\n            let sampleOffset = dataOffset + moofOffset;\n            for (let ix = 0; ix < sampleCount; ix++) {\n              if (sampleDurationPresent) {\n                sampleDuration = readUint32(trun, trunOffset);\n                trunOffset += 4;\n              } else {\n                sampleDuration = defaultSampleDuration;\n              }\n              if (sampleSizePresent) {\n                sampleSize = readUint32(trun, trunOffset);\n                trunOffset += 4;\n              } else {\n                sampleSize = defaultSampleSize;\n              }\n              if (sampleFlagsPresent) {\n                trunOffset += 4;\n              }\n              if (sampleCompositionOffsetsPresent) {\n                if (version === 0) {\n                  compositionOffset = readUint32(trun, trunOffset);\n                } else {\n                  compositionOffset = readSint32(trun, trunOffset);\n                }\n                trunOffset += 4;\n              }\n              if (track.type === ElementaryStreamTypes.VIDEO) {\n                let naluTotalSize = 0;\n                while (naluTotalSize < sampleSize) {\n                  const naluSize = readUint32(videoData, sampleOffset);\n                  sampleOffset += 4;\n                  if (isSEIMessage(isHEVCFlavor, videoData[sampleOffset])) {\n                    const data = videoData.subarray(sampleOffset, sampleOffset + naluSize);\n                    parseSEIMessageFromNALu(data, isHEVCFlavor ? 2 : 1, timeOffset + compositionOffset / timescale, seiSamples);\n                  }\n                  sampleOffset += naluSize;\n                  naluTotalSize += naluSize + 4;\n                }\n              }\n              timeOffset += sampleDuration / timescale;\n            }\n          });\n        }\n      });\n    });\n  });\n  return seiSamples;\n}\nfunction isHEVC(codec) {\n  if (!codec) {\n    return false;\n  }\n  const delimit = codec.indexOf(\".\");\n  const baseCodec = delimit < 0 ? codec : codec.substring(0, delimit);\n  return baseCodec === \"hvc1\" || baseCodec === \"hev1\" || // Dolby Vision\n  baseCodec === \"dvh1\" || baseCodec === \"dvhe\";\n}\nfunction isSEIMessage(isHEVCFlavor, naluHeader) {\n  if (isHEVCFlavor) {\n    const naluType = naluHeader >> 1 & 63;\n    return naluType === 39 || naluType === 40;\n  } else {\n    const naluType = naluHeader & 31;\n    return naluType === 6;\n  }\n}\nfunction parseSEIMessageFromNALu(unescapedData, headerSize, pts, samples) {\n  const data = discardEPB(unescapedData);\n  let seiPtr = 0;\n  seiPtr += headerSize;\n  let payloadType = 0;\n  let payloadSize = 0;\n  let b4 = 0;\n  while (seiPtr < data.length) {\n    payloadType = 0;\n    do {\n      if (seiPtr >= data.length) {\n        break;\n      }\n      b4 = data[seiPtr++];\n      payloadType += b4;\n    } while (b4 === 255);\n    payloadSize = 0;\n    do {\n      if (seiPtr >= data.length) {\n        break;\n      }\n      b4 = data[seiPtr++];\n      payloadSize += b4;\n    } while (b4 === 255);\n    const leftOver = data.length - seiPtr;\n    let payPtr = seiPtr;\n    if (payloadSize < leftOver) {\n      seiPtr += payloadSize;\n    } else if (payloadSize > leftOver) {\n      logger.error(`Malformed SEI payload. ${payloadSize} is too small, only ${leftOver} bytes left to parse.`);\n      break;\n    }\n    if (payloadType === 4) {\n      const countryCode = data[payPtr++];\n      if (countryCode === 181) {\n        const providerCode = readUint16(data, payPtr);\n        payPtr += 2;\n        if (providerCode === 49) {\n          const userStructure = readUint32(data, payPtr);\n          payPtr += 4;\n          if (userStructure === 1195456820) {\n            const userDataType = data[payPtr++];\n            if (userDataType === 3) {\n              const firstByte = data[payPtr++];\n              const totalCCs = 31 & firstByte;\n              const enabled = 64 & firstByte;\n              const totalBytes = enabled ? 2 + totalCCs * 3 : 0;\n              const byteArray = new Uint8Array(totalBytes);\n              if (enabled) {\n                byteArray[0] = firstByte;\n                for (let i2 = 1; i2 < totalBytes; i2++) {\n                  byteArray[i2] = data[payPtr++];\n                }\n              }\n              samples.push({\n                type: userDataType,\n                payloadType,\n                pts,\n                bytes: byteArray\n              });\n            }\n          }\n        }\n      }\n    } else if (payloadType === 5) {\n      if (payloadSize > 16) {\n        const uuidStrArray = [];\n        for (let i2 = 0; i2 < 16; i2++) {\n          const _b = data[payPtr++].toString(16);\n          uuidStrArray.push(_b.length == 1 ? \"0\" + _b : _b);\n          if (i2 === 3 || i2 === 5 || i2 === 7 || i2 === 9) {\n            uuidStrArray.push(\"-\");\n          }\n        }\n        const length = payloadSize - 16;\n        const userDataBytes = new Uint8Array(length);\n        for (let i2 = 0; i2 < length; i2++) {\n          userDataBytes[i2] = data[payPtr++];\n        }\n        samples.push({\n          payloadType,\n          pts,\n          uuid: uuidStrArray.join(\"\"),\n          userData: utf8ArrayToStr(userDataBytes),\n          userDataBytes\n        });\n      }\n    }\n  }\n}\nfunction discardEPB(data) {\n  const length = data.byteLength;\n  const EPBPositions = [];\n  let i2 = 1;\n  while (i2 < length - 2) {\n    if (data[i2] === 0 && data[i2 + 1] === 0 && data[i2 + 2] === 3) {\n      EPBPositions.push(i2 + 2);\n      i2 += 2;\n    } else {\n      i2++;\n    }\n  }\n  if (EPBPositions.length === 0) {\n    return data;\n  }\n  const newLength = length - EPBPositions.length;\n  const newData = new Uint8Array(newLength);\n  let sourceIndex = 0;\n  for (i2 = 0; i2 < newLength; sourceIndex++, i2++) {\n    if (sourceIndex === EPBPositions[0]) {\n      sourceIndex++;\n      EPBPositions.shift();\n    }\n    newData[i2] = data[sourceIndex];\n  }\n  return newData;\n}\nfunction parseEmsg(data) {\n  const version = data[0];\n  let schemeIdUri = \"\";\n  let value = \"\";\n  let timeScale = 0;\n  let presentationTimeDelta = 0;\n  let presentationTime = 0;\n  let eventDuration = 0;\n  let id = 0;\n  let offset = 0;\n  if (version === 0) {\n    while (bin2str(data.subarray(offset, offset + 1)) !== \"\\0\") {\n      schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n    schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n    while (bin2str(data.subarray(offset, offset + 1)) !== \"\\0\") {\n      value += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n    value += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n    timeScale = readUint32(data, 12);\n    presentationTimeDelta = readUint32(data, 16);\n    eventDuration = readUint32(data, 20);\n    id = readUint32(data, 24);\n    offset = 28;\n  } else if (version === 1) {\n    offset += 4;\n    timeScale = readUint32(data, offset);\n    offset += 4;\n    const leftPresentationTime = readUint32(data, offset);\n    offset += 4;\n    const rightPresentationTime = readUint32(data, offset);\n    offset += 4;\n    presentationTime = __pow(2, 32) * leftPresentationTime + rightPresentationTime;\n    if (!isSafeInteger(presentationTime)) {\n      presentationTime = Number.MAX_SAFE_INTEGER;\n      logger.warn(\"Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box\");\n    }\n    eventDuration = readUint32(data, offset);\n    offset += 4;\n    id = readUint32(data, offset);\n    offset += 4;\n    while (bin2str(data.subarray(offset, offset + 1)) !== \"\\0\") {\n      schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n    schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n    while (bin2str(data.subarray(offset, offset + 1)) !== \"\\0\") {\n      value += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n    value += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n  }\n  const payload = data.subarray(offset, data.byteLength);\n  return {\n    schemeIdUri,\n    value,\n    timeScale,\n    presentationTime,\n    presentationTimeDelta,\n    eventDuration,\n    id,\n    payload\n  };\n}\nfunction mp4Box(type, ...payload) {\n  const len = payload.length;\n  let size = 8;\n  let i2 = len;\n  while (i2--) {\n    size += payload[i2].byteLength;\n  }\n  const result = new Uint8Array(size);\n  result[0] = size >> 24 & 255;\n  result[1] = size >> 16 & 255;\n  result[2] = size >> 8 & 255;\n  result[3] = size & 255;\n  result.set(type, 4);\n  for (i2 = 0, size = 8; i2 < len; i2++) {\n    result.set(payload[i2], size);\n    size += payload[i2].byteLength;\n  }\n  return result;\n}\nfunction mp4pssh(systemId, keyids, data) {\n  if (systemId.byteLength !== 16) {\n    throw new RangeError(\"Invalid system id\");\n  }\n  let version;\n  let kids;\n  if (keyids) {\n    version = 1;\n    kids = new Uint8Array(keyids.length * 16);\n    for (let ix = 0; ix < keyids.length; ix++) {\n      const k3 = keyids[ix];\n      if (k3.byteLength !== 16) {\n        throw new RangeError(\"Invalid key\");\n      }\n      kids.set(k3, ix * 16);\n    }\n  } else {\n    version = 0;\n    kids = new Uint8Array();\n  }\n  let kidCount;\n  if (version > 0) {\n    kidCount = new Uint8Array(4);\n    if (keyids.length > 0) {\n      new DataView(kidCount.buffer).setUint32(0, keyids.length, false);\n    }\n  } else {\n    kidCount = new Uint8Array();\n  }\n  const dataSize = new Uint8Array(4);\n  if (data && data.byteLength > 0) {\n    new DataView(dataSize.buffer).setUint32(0, data.byteLength, false);\n  }\n  return mp4Box(\n    [112, 115, 115, 104],\n    new Uint8Array([\n      version,\n      0,\n      0,\n      0\n      // Flags\n    ]),\n    systemId,\n    // 16 bytes\n    kidCount,\n    kids,\n    dataSize,\n    data || new Uint8Array()\n  );\n}\nfunction parseMultiPssh(initData) {\n  const results = [];\n  if (initData instanceof ArrayBuffer) {\n    const length = initData.byteLength;\n    let offset = 0;\n    while (offset + 32 < length) {\n      const view = new DataView(initData, offset);\n      const pssh = parsePssh(view);\n      results.push(pssh);\n      offset += pssh.size;\n    }\n  }\n  return results;\n}\nfunction parsePssh(view) {\n  const size = view.getUint32(0);\n  const offset = view.byteOffset;\n  const length = view.byteLength;\n  if (length < size) {\n    return {\n      offset,\n      size: length\n    };\n  }\n  const type = view.getUint32(4);\n  if (type !== 1886614376) {\n    return {\n      offset,\n      size\n    };\n  }\n  const version = view.getUint32(8) >>> 24;\n  if (version !== 0 && version !== 1) {\n    return {\n      offset,\n      size\n    };\n  }\n  const buffer = view.buffer;\n  const systemId = Hex.hexDump(new Uint8Array(buffer, offset + 12, 16));\n  const dataSizeOrKidCount = view.getUint32(28);\n  let kids = null;\n  let data = null;\n  if (version === 0) {\n    if (size - 32 < dataSizeOrKidCount || dataSizeOrKidCount < 22) {\n      return {\n        offset,\n        size\n      };\n    }\n    data = new Uint8Array(buffer, offset + 32, dataSizeOrKidCount);\n  } else if (version === 1) {\n    if (!dataSizeOrKidCount || length < offset + 32 + dataSizeOrKidCount * 16 + 16) {\n      return {\n        offset,\n        size\n      };\n    }\n    kids = [];\n    for (let i2 = 0; i2 < dataSizeOrKidCount; i2++) {\n      kids.push(new Uint8Array(buffer, offset + 32 + i2 * 16, 16));\n    }\n  }\n  return {\n    version,\n    systemId,\n    kids,\n    data,\n    offset,\n    size\n  };\n}\nvar keyUriToKeyIdMap = {};\nvar LevelKey = class _LevelKey {\n  static clearKeyUriToKeyIdMap() {\n    keyUriToKeyIdMap = {};\n  }\n  constructor(method, uri, format2, formatversions = [1], iv = null) {\n    this.uri = void 0;\n    this.method = void 0;\n    this.keyFormat = void 0;\n    this.keyFormatVersions = void 0;\n    this.encrypted = void 0;\n    this.isCommonEncryption = void 0;\n    this.iv = null;\n    this.key = null;\n    this.keyId = null;\n    this.pssh = null;\n    this.method = method;\n    this.uri = uri;\n    this.keyFormat = format2;\n    this.keyFormatVersions = formatversions;\n    this.iv = iv;\n    this.encrypted = method ? method !== \"NONE\" : false;\n    this.isCommonEncryption = this.encrypted && method !== \"AES-128\";\n  }\n  isSupported() {\n    if (this.method) {\n      if (this.method === \"AES-128\" || this.method === \"NONE\") {\n        return true;\n      }\n      if (this.keyFormat === \"identity\") {\n        return this.method === \"SAMPLE-AES\";\n      } else {\n        switch (this.keyFormat) {\n          case KeySystemFormats.FAIRPLAY:\n          case KeySystemFormats.WIDEVINE:\n          case KeySystemFormats.PLAYREADY:\n          case KeySystemFormats.CLEARKEY:\n            return [\"ISO-23001-7\", \"SAMPLE-AES\", \"SAMPLE-AES-CENC\", \"SAMPLE-AES-CTR\"].indexOf(this.method) !== -1;\n        }\n      }\n    }\n    return false;\n  }\n  getDecryptData(sn) {\n    if (!this.encrypted || !this.uri) {\n      return null;\n    }\n    if (this.method === \"AES-128\" && this.uri && !this.iv) {\n      if (typeof sn !== \"number\") {\n        if (this.method === \"AES-128\" && !this.iv) {\n          logger.warn(`missing IV for initialization segment with method=\"${this.method}\" - compliance issue`);\n        }\n        sn = 0;\n      }\n      const iv = createInitializationVector(sn);\n      const decryptdata = new _LevelKey(this.method, this.uri, \"identity\", this.keyFormatVersions, iv);\n      return decryptdata;\n    }\n    const keyBytes = convertDataUriToArrayBytes(this.uri);\n    if (keyBytes) {\n      switch (this.keyFormat) {\n        case KeySystemFormats.WIDEVINE:\n          this.pssh = keyBytes;\n          if (keyBytes.length >= 22) {\n            this.keyId = keyBytes.subarray(keyBytes.length - 22, keyBytes.length - 6);\n          }\n          break;\n        case KeySystemFormats.PLAYREADY: {\n          const PlayReadyKeySystemUUID = new Uint8Array([154, 4, 240, 121, 152, 64, 66, 134, 171, 146, 230, 91, 224, 136, 95, 149]);\n          this.pssh = mp4pssh(PlayReadyKeySystemUUID, null, keyBytes);\n          this.keyId = parsePlayReadyWRM(keyBytes);\n          break;\n        }\n        default: {\n          let keydata = keyBytes.subarray(0, 16);\n          if (keydata.length !== 16) {\n            const padded = new Uint8Array(16);\n            padded.set(keydata, 16 - keydata.length);\n            keydata = padded;\n          }\n          this.keyId = keydata;\n          break;\n        }\n      }\n    }\n    if (!this.keyId || this.keyId.byteLength !== 16) {\n      let keyId = keyUriToKeyIdMap[this.uri];\n      if (!keyId) {\n        const val = Object.keys(keyUriToKeyIdMap).length % Number.MAX_SAFE_INTEGER;\n        keyId = new Uint8Array(16);\n        const dv = new DataView(keyId.buffer, 12, 4);\n        dv.setUint32(0, val);\n        keyUriToKeyIdMap[this.uri] = keyId;\n      }\n      this.keyId = keyId;\n    }\n    return this;\n  }\n};\nfunction createInitializationVector(segmentNumber) {\n  const uint8View = new Uint8Array(16);\n  for (let i2 = 12; i2 < 16; i2++) {\n    uint8View[i2] = segmentNumber >> 8 * (15 - i2) & 255;\n  }\n  return uint8View;\n}\nvar VARIABLE_REPLACEMENT_REGEX = /\\{\\$([a-zA-Z0-9-_]+)\\}/g;\nfunction hasVariableReferences(str) {\n  return VARIABLE_REPLACEMENT_REGEX.test(str);\n}\nfunction substituteVariablesInAttributes(parsed, attr, attributeNames) {\n  if (parsed.variableList !== null || parsed.hasVariableRefs) {\n    for (let i2 = attributeNames.length; i2--; ) {\n      const name = attributeNames[i2];\n      const value = attr[name];\n      if (value) {\n        attr[name] = substituteVariables(parsed, value);\n      }\n    }\n  }\n}\nfunction substituteVariables(parsed, value) {\n  if (parsed.variableList !== null || parsed.hasVariableRefs) {\n    const variableList = parsed.variableList;\n    return value.replace(VARIABLE_REPLACEMENT_REGEX, (variableReference) => {\n      const variableName = variableReference.substring(2, variableReference.length - 1);\n      const variableValue = variableList == null ? void 0 : variableList[variableName];\n      if (variableValue === void 0) {\n        parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: \"${variableName}\"`));\n        return variableReference;\n      }\n      return variableValue;\n    });\n  }\n  return value;\n}\nfunction addVariableDefinition(parsed, attr, parentUrl) {\n  let variableList = parsed.variableList;\n  if (!variableList) {\n    parsed.variableList = variableList = {};\n  }\n  let NAME;\n  let VALUE;\n  if (\"QUERYPARAM\" in attr) {\n    NAME = attr.QUERYPARAM;\n    try {\n      const searchParams = new self.URL(parentUrl).searchParams;\n      if (searchParams.has(NAME)) {\n        VALUE = searchParams.get(NAME);\n      } else {\n        throw new Error(`\"${NAME}\" does not match any query parameter in URI: \"${parentUrl}\"`);\n      }\n    } catch (error) {\n      parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`EXT-X-DEFINE QUERYPARAM: ${error.message}`));\n    }\n  } else {\n    NAME = attr.NAME;\n    VALUE = attr.VALUE;\n  }\n  if (NAME in variableList) {\n    parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`EXT-X-DEFINE duplicate Variable Name declarations: \"${NAME}\"`));\n  } else {\n    variableList[NAME] = VALUE || \"\";\n  }\n}\nfunction importVariableDefinition(parsed, attr, sourceVariableList) {\n  const IMPORT = attr.IMPORT;\n  if (sourceVariableList && IMPORT in sourceVariableList) {\n    let variableList = parsed.variableList;\n    if (!variableList) {\n      parsed.variableList = variableList = {};\n    }\n    variableList[IMPORT] = sourceVariableList[IMPORT];\n  } else {\n    parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: \"${IMPORT}\"`));\n  }\n}\nfunction getMediaSource(preferManagedMediaSource = true) {\n  if (typeof self === \"undefined\") return void 0;\n  const mms = (preferManagedMediaSource || !self.MediaSource) && self.ManagedMediaSource;\n  return mms || self.MediaSource || self.WebKitMediaSource;\n}\nfunction isManagedMediaSource(source) {\n  return typeof self !== \"undefined\" && source === self.ManagedMediaSource;\n}\nvar sampleEntryCodesISO = {\n  audio: {\n    a3ds: 1,\n    \"ac-3\": 0.95,\n    \"ac-4\": 1,\n    alac: 0.9,\n    alaw: 1,\n    dra1: 1,\n    \"dts+\": 1,\n    \"dts-\": 1,\n    dtsc: 1,\n    dtse: 1,\n    dtsh: 1,\n    \"ec-3\": 0.9,\n    enca: 1,\n    fLaC: 0.9,\n    // MP4-RA listed codec entry for FLAC\n    flac: 0.9,\n    // legacy browser codec name for FLAC\n    FLAC: 0.9,\n    // some manifests may list \"FLAC\" with Apple's tools\n    g719: 1,\n    g726: 1,\n    m4ae: 1,\n    mha1: 1,\n    mha2: 1,\n    mhm1: 1,\n    mhm2: 1,\n    mlpa: 1,\n    mp4a: 1,\n    \"raw \": 1,\n    Opus: 1,\n    opus: 1,\n    // browsers expect this to be lowercase despite MP4RA says 'Opus'\n    samr: 1,\n    sawb: 1,\n    sawp: 1,\n    sevc: 1,\n    sqcp: 1,\n    ssmv: 1,\n    twos: 1,\n    ulaw: 1\n  },\n  video: {\n    avc1: 1,\n    avc2: 1,\n    avc3: 1,\n    avc4: 1,\n    avcp: 1,\n    av01: 0.8,\n    drac: 1,\n    dva1: 1,\n    dvav: 1,\n    dvh1: 0.7,\n    dvhe: 0.7,\n    encv: 1,\n    hev1: 0.75,\n    hvc1: 0.75,\n    mjp2: 1,\n    mp4v: 1,\n    mvc1: 1,\n    mvc2: 1,\n    mvc3: 1,\n    mvc4: 1,\n    resv: 1,\n    rv60: 1,\n    s263: 1,\n    svc1: 1,\n    svc2: 1,\n    \"vc-1\": 1,\n    vp08: 1,\n    vp09: 0.9\n  },\n  text: {\n    stpp: 1,\n    wvtt: 1\n  }\n};\nfunction isCodecType(codec, type) {\n  const typeCodes = sampleEntryCodesISO[type];\n  return !!typeCodes && !!typeCodes[codec.slice(0, 4)];\n}\nfunction areCodecsMediaSourceSupported(codecs, type, preferManagedMediaSource = true) {\n  return !codecs.split(\",\").some((codec) => !isCodecMediaSourceSupported(codec, type, preferManagedMediaSource));\n}\nfunction isCodecMediaSourceSupported(codec, type, preferManagedMediaSource = true) {\n  var _MediaSource$isTypeSu;\n  const MediaSource = getMediaSource(preferManagedMediaSource);\n  return (_MediaSource$isTypeSu = MediaSource == null ? void 0 : MediaSource.isTypeSupported(mimeTypeForCodec(codec, type))) != null ? _MediaSource$isTypeSu : false;\n}\nfunction mimeTypeForCodec(codec, type) {\n  return `${type}/mp4;codecs=\"${codec}\"`;\n}\nfunction videoCodecPreferenceValue(videoCodec) {\n  if (videoCodec) {\n    const fourCC = videoCodec.substring(0, 4);\n    return sampleEntryCodesISO.video[fourCC];\n  }\n  return 2;\n}\nfunction codecsSetSelectionPreferenceValue(codecSet) {\n  return codecSet.split(\",\").reduce((num, fourCC) => {\n    const preferenceValue = sampleEntryCodesISO.video[fourCC];\n    if (preferenceValue) {\n      return (preferenceValue * 2 + num) / (num ? 3 : 2);\n    }\n    return (sampleEntryCodesISO.audio[fourCC] + num) / (num ? 2 : 1);\n  }, 0);\n}\nvar CODEC_COMPATIBLE_NAMES = {};\nfunction getCodecCompatibleNameLower(lowerCaseCodec, preferManagedMediaSource = true) {\n  if (CODEC_COMPATIBLE_NAMES[lowerCaseCodec]) {\n    return CODEC_COMPATIBLE_NAMES[lowerCaseCodec];\n  }\n  const codecsToCheck = {\n    flac: [\"flac\", \"fLaC\", \"FLAC\"],\n    opus: [\"opus\", \"Opus\"]\n  }[lowerCaseCodec];\n  for (let i2 = 0; i2 < codecsToCheck.length; i2++) {\n    if (isCodecMediaSourceSupported(codecsToCheck[i2], \"audio\", preferManagedMediaSource)) {\n      CODEC_COMPATIBLE_NAMES[lowerCaseCodec] = codecsToCheck[i2];\n      return codecsToCheck[i2];\n    }\n  }\n  return lowerCaseCodec;\n}\nvar AUDIO_CODEC_REGEXP = /flac|opus/i;\nfunction getCodecCompatibleName(codec, preferManagedMediaSource = true) {\n  return codec.replace(AUDIO_CODEC_REGEXP, (m3) => getCodecCompatibleNameLower(m3.toLowerCase(), preferManagedMediaSource));\n}\nfunction pickMostCompleteCodecName(parsedCodec, levelCodec) {\n  if (parsedCodec && parsedCodec !== \"mp4a\") {\n    return parsedCodec;\n  }\n  return levelCodec ? levelCodec.split(\",\")[0] : levelCodec;\n}\nfunction convertAVC1ToAVCOTI(codec) {\n  const codecs = codec.split(\",\");\n  for (let i2 = 0; i2 < codecs.length; i2++) {\n    const avcdata = codecs[i2].split(\".\");\n    if (avcdata.length > 2) {\n      let result = avcdata.shift() + \".\";\n      result += parseInt(avcdata.shift()).toString(16);\n      result += (\"000\" + parseInt(avcdata.shift()).toString(16)).slice(-4);\n      codecs[i2] = result;\n    }\n  }\n  return codecs.join(\",\");\n}\nvar MASTER_PLAYLIST_REGEX = /#EXT-X-STREAM-INF:([^\\r\\n]*)(?:[\\r\\n](?:#[^\\r\\n]*)?)*([^\\r\\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\\r\\n]*)[\\r\\n]+/g;\nvar MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g;\nvar IS_MEDIA_PLAYLIST = /^#EXT(?:INF|-X-TARGETDURATION):/m;\nvar LEVEL_PLAYLIST_REGEX_FAST = new RegExp([\n  /#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?/.source,\n  // duration (#EXTINF:<duration>,<title>), group 1 => duration, group 2 => title\n  /(?!#) *(\\S[^\\r\\n]*)/.source,\n  // segment URI, group 3 => the URI (note newline is not eaten)\n  /#EXT-X-BYTERANGE:*(.+)/.source,\n  // next segment's byterange, group 4 => range spec (x@y)\n  /#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,\n  // next segment's program date/time group 5 => the datetime spec\n  /#.*/.source\n  // All other non-segment oriented tags will match with all groups empty\n].join(\"|\"), \"g\");\nvar LEVEL_PLAYLIST_REGEX_SLOW = new RegExp([/#(EXTM3U)/.source, /#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source, /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\\d+)/.source, /#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\\r?\\n?/.source].join(\"|\"));\nvar M3U8Parser = class _M3U8Parser {\n  static findGroup(groups, mediaGroupId) {\n    for (let i2 = 0; i2 < groups.length; i2++) {\n      const group = groups[i2];\n      if (group.id === mediaGroupId) {\n        return group;\n      }\n    }\n  }\n  static resolve(url, baseUrl) {\n    return urlToolkitExports.buildAbsoluteURL(baseUrl, url, {\n      alwaysNormalize: true\n    });\n  }\n  static isMediaPlaylist(str) {\n    return IS_MEDIA_PLAYLIST.test(str);\n  }\n  static parseMasterPlaylist(string, baseurl) {\n    const hasVariableRefs = hasVariableReferences(string);\n    const parsed = {\n      contentSteering: null,\n      levels: [],\n      playlistParsingError: null,\n      sessionData: null,\n      sessionKeys: null,\n      startTimeOffset: null,\n      variableList: null,\n      hasVariableRefs\n    };\n    const levelsWithKnownCodecs = [];\n    MASTER_PLAYLIST_REGEX.lastIndex = 0;\n    let result;\n    while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) {\n      if (result[1]) {\n        var _level$unknownCodecs;\n        const attrs = new AttrList(result[1]);\n        {\n          substituteVariablesInAttributes(parsed, attrs, [\"CODECS\", \"SUPPLEMENTAL-CODECS\", \"ALLOWED-CPC\", \"PATHWAY-ID\", \"STABLE-VARIANT-ID\", \"AUDIO\", \"VIDEO\", \"SUBTITLES\", \"CLOSED-CAPTIONS\", \"NAME\"]);\n        }\n        const uri = substituteVariables(parsed, result[2]);\n        const level = {\n          attrs,\n          bitrate: attrs.decimalInteger(\"BANDWIDTH\") || attrs.decimalInteger(\"AVERAGE-BANDWIDTH\"),\n          name: attrs.NAME,\n          url: _M3U8Parser.resolve(uri, baseurl)\n        };\n        const resolution = attrs.decimalResolution(\"RESOLUTION\");\n        if (resolution) {\n          level.width = resolution.width;\n          level.height = resolution.height;\n        }\n        setCodecs(attrs.CODECS, level);\n        if (!((_level$unknownCodecs = level.unknownCodecs) != null && _level$unknownCodecs.length)) {\n          levelsWithKnownCodecs.push(level);\n        }\n        parsed.levels.push(level);\n      } else if (result[3]) {\n        const tag = result[3];\n        const attributes = result[4];\n        switch (tag) {\n          case \"SESSION-DATA\": {\n            const sessionAttrs = new AttrList(attributes);\n            {\n              substituteVariablesInAttributes(parsed, sessionAttrs, [\"DATA-ID\", \"LANGUAGE\", \"VALUE\", \"URI\"]);\n            }\n            const dataId = sessionAttrs[\"DATA-ID\"];\n            if (dataId) {\n              if (parsed.sessionData === null) {\n                parsed.sessionData = {};\n              }\n              parsed.sessionData[dataId] = sessionAttrs;\n            }\n            break;\n          }\n          case \"SESSION-KEY\": {\n            const sessionKey = parseKey(attributes, baseurl, parsed);\n            if (sessionKey.encrypted && sessionKey.isSupported()) {\n              if (parsed.sessionKeys === null) {\n                parsed.sessionKeys = [];\n              }\n              parsed.sessionKeys.push(sessionKey);\n            } else {\n              logger.warn(`[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: \"${attributes}\"`);\n            }\n            break;\n          }\n          case \"DEFINE\": {\n            {\n              const variableAttributes = new AttrList(attributes);\n              substituteVariablesInAttributes(parsed, variableAttributes, [\"NAME\", \"VALUE\", \"QUERYPARAM\"]);\n              addVariableDefinition(parsed, variableAttributes, baseurl);\n            }\n            break;\n          }\n          case \"CONTENT-STEERING\": {\n            const contentSteeringAttributes = new AttrList(attributes);\n            {\n              substituteVariablesInAttributes(parsed, contentSteeringAttributes, [\"SERVER-URI\", \"PATHWAY-ID\"]);\n            }\n            parsed.contentSteering = {\n              uri: _M3U8Parser.resolve(contentSteeringAttributes[\"SERVER-URI\"], baseurl),\n              pathwayId: contentSteeringAttributes[\"PATHWAY-ID\"] || \".\"\n            };\n            break;\n          }\n          case \"START\": {\n            parsed.startTimeOffset = parseStartTimeOffset(attributes);\n            break;\n          }\n        }\n      }\n    }\n    const stripUnknownCodecLevels = levelsWithKnownCodecs.length > 0 && levelsWithKnownCodecs.length < parsed.levels.length;\n    parsed.levels = stripUnknownCodecLevels ? levelsWithKnownCodecs : parsed.levels;\n    if (parsed.levels.length === 0) {\n      parsed.playlistParsingError = new Error(\"no levels found in manifest\");\n    }\n    return parsed;\n  }\n  static parseMasterPlaylistMedia(string, baseurl, parsed) {\n    let result;\n    const results = {};\n    const levels = parsed.levels;\n    const groupsByType = {\n      AUDIO: levels.map((level) => ({\n        id: level.attrs.AUDIO,\n        audioCodec: level.audioCodec\n      })),\n      SUBTITLES: levels.map((level) => ({\n        id: level.attrs.SUBTITLES,\n        textCodec: level.textCodec\n      })),\n      \"CLOSED-CAPTIONS\": []\n    };\n    let id = 0;\n    MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0;\n    while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) !== null) {\n      const attrs = new AttrList(result[1]);\n      const type = attrs.TYPE;\n      if (type) {\n        const groups = groupsByType[type];\n        const medias = results[type] || [];\n        results[type] = medias;\n        {\n          substituteVariablesInAttributes(parsed, attrs, [\"URI\", \"GROUP-ID\", \"LANGUAGE\", \"ASSOC-LANGUAGE\", \"STABLE-RENDITION-ID\", \"NAME\", \"INSTREAM-ID\", \"CHARACTERISTICS\", \"CHANNELS\"]);\n        }\n        const lang = attrs.LANGUAGE;\n        const assocLang = attrs[\"ASSOC-LANGUAGE\"];\n        const channels = attrs.CHANNELS;\n        const characteristics = attrs.CHARACTERISTICS;\n        const instreamId = attrs[\"INSTREAM-ID\"];\n        const media = {\n          attrs,\n          bitrate: 0,\n          id: id++,\n          groupId: attrs[\"GROUP-ID\"] || \"\",\n          name: attrs.NAME || lang || \"\",\n          type,\n          default: attrs.bool(\"DEFAULT\"),\n          autoselect: attrs.bool(\"AUTOSELECT\"),\n          forced: attrs.bool(\"FORCED\"),\n          lang,\n          url: attrs.URI ? _M3U8Parser.resolve(attrs.URI, baseurl) : \"\"\n        };\n        if (assocLang) {\n          media.assocLang = assocLang;\n        }\n        if (channels) {\n          media.channels = channels;\n        }\n        if (characteristics) {\n          media.characteristics = characteristics;\n        }\n        if (instreamId) {\n          media.instreamId = instreamId;\n        }\n        if (groups != null && groups.length) {\n          const groupCodec = _M3U8Parser.findGroup(groups, media.groupId) || groups[0];\n          assignCodec(media, groupCodec, \"audioCodec\");\n          assignCodec(media, groupCodec, \"textCodec\");\n        }\n        medias.push(media);\n      }\n    }\n    return results;\n  }\n  static parseLevelPlaylist(string, baseurl, id, type, levelUrlId, multivariantVariableList) {\n    const level = new LevelDetails(baseurl);\n    const fragments = level.fragments;\n    let currentInitSegment = null;\n    let currentSN = 0;\n    let currentPart = 0;\n    let totalduration = 0;\n    let discontinuityCounter = 0;\n    let prevFrag = null;\n    let frag = new Fragment(type, baseurl);\n    let result;\n    let i2;\n    let levelkeys;\n    let firstPdtIndex = -1;\n    let createNextFrag = false;\n    let nextByteRange = null;\n    LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0;\n    level.m3u8 = string;\n    level.hasVariableRefs = hasVariableReferences(string);\n    while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) {\n      if (createNextFrag) {\n        createNextFrag = false;\n        frag = new Fragment(type, baseurl);\n        frag.start = totalduration;\n        frag.sn = currentSN;\n        frag.cc = discontinuityCounter;\n        frag.level = id;\n        if (currentInitSegment) {\n          frag.initSegment = currentInitSegment;\n          frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n          currentInitSegment.rawProgramDateTime = null;\n          if (nextByteRange) {\n            frag.setByteRange(nextByteRange);\n            nextByteRange = null;\n          }\n        }\n      }\n      const duration = result[1];\n      if (duration) {\n        frag.duration = parseFloat(duration);\n        const title = (\" \" + result[2]).slice(1);\n        frag.title = title || null;\n        frag.tagList.push(title ? [\"INF\", duration, title] : [\"INF\", duration]);\n      } else if (result[3]) {\n        if (isFiniteNumber(frag.duration)) {\n          frag.start = totalduration;\n          if (levelkeys) {\n            setFragLevelKeys(frag, levelkeys, level);\n          }\n          frag.sn = currentSN;\n          frag.level = id;\n          frag.cc = discontinuityCounter;\n          fragments.push(frag);\n          const uri = (\" \" + result[3]).slice(1);\n          frag.relurl = substituteVariables(level, uri);\n          assignProgramDateTime(frag, prevFrag);\n          prevFrag = frag;\n          totalduration += frag.duration;\n          currentSN++;\n          currentPart = 0;\n          createNextFrag = true;\n        }\n      } else if (result[4]) {\n        const data = (\" \" + result[4]).slice(1);\n        if (prevFrag) {\n          frag.setByteRange(data, prevFrag);\n        } else {\n          frag.setByteRange(data);\n        }\n      } else if (result[5]) {\n        frag.rawProgramDateTime = (\" \" + result[5]).slice(1);\n        frag.tagList.push([\"PROGRAM-DATE-TIME\", frag.rawProgramDateTime]);\n        if (firstPdtIndex === -1) {\n          firstPdtIndex = fragments.length;\n        }\n      } else {\n        result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW);\n        if (!result) {\n          logger.warn(\"No matches on slow regex match for level playlist!\");\n          continue;\n        }\n        for (i2 = 1; i2 < result.length; i2++) {\n          if (typeof result[i2] !== \"undefined\") {\n            break;\n          }\n        }\n        const tag = (\" \" + result[i2]).slice(1);\n        const value1 = (\" \" + result[i2 + 1]).slice(1);\n        const value2 = result[i2 + 2] ? (\" \" + result[i2 + 2]).slice(1) : \"\";\n        switch (tag) {\n          case \"PLAYLIST-TYPE\":\n            level.type = value1.toUpperCase();\n            break;\n          case \"MEDIA-SEQUENCE\":\n            currentSN = level.startSN = parseInt(value1);\n            break;\n          case \"SKIP\": {\n            const skipAttrs = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, skipAttrs, [\"RECENTLY-REMOVED-DATERANGES\"]);\n            }\n            const skippedSegments = skipAttrs.decimalInteger(\"SKIPPED-SEGMENTS\");\n            if (isFiniteNumber(skippedSegments)) {\n              level.skippedSegments = skippedSegments;\n              for (let _i2 = skippedSegments; _i2--; ) {\n                fragments.unshift(null);\n              }\n              currentSN += skippedSegments;\n            }\n            const recentlyRemovedDateranges = skipAttrs.enumeratedString(\"RECENTLY-REMOVED-DATERANGES\");\n            if (recentlyRemovedDateranges) {\n              level.recentlyRemovedDateranges = recentlyRemovedDateranges.split(\"\t\");\n            }\n            break;\n          }\n          case \"TARGETDURATION\":\n            level.targetduration = Math.max(parseInt(value1), 1);\n            break;\n          case \"VERSION\":\n            level.version = parseInt(value1);\n            break;\n          case \"INDEPENDENT-SEGMENTS\":\n          case \"EXTM3U\":\n            break;\n          case \"ENDLIST\":\n            level.live = false;\n            break;\n          case \"#\":\n            if (value1 || value2) {\n              frag.tagList.push(value2 ? [value1, value2] : [value1]);\n            }\n            break;\n          case \"DISCONTINUITY\":\n            discontinuityCounter++;\n            frag.tagList.push([\"DIS\"]);\n            break;\n          case \"GAP\":\n            frag.gap = true;\n            frag.tagList.push([tag]);\n            break;\n          case \"BITRATE\":\n            frag.tagList.push([tag, value1]);\n            break;\n          case \"DATERANGE\": {\n            const dateRangeAttr = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, dateRangeAttr, [\"ID\", \"CLASS\", \"START-DATE\", \"END-DATE\", \"SCTE35-CMD\", \"SCTE35-OUT\", \"SCTE35-IN\"]);\n              substituteVariablesInAttributes(level, dateRangeAttr, dateRangeAttr.clientAttrs);\n            }\n            const dateRange = new DateRange(dateRangeAttr, level.dateRanges[dateRangeAttr.ID]);\n            if (dateRange.isValid || level.skippedSegments) {\n              level.dateRanges[dateRange.id] = dateRange;\n            } else {\n              logger.warn(`Ignoring invalid DATERANGE tag: \"${value1}\"`);\n            }\n            frag.tagList.push([\"EXT-X-DATERANGE\", value1]);\n            break;\n          }\n          case \"DEFINE\": {\n            {\n              const variableAttributes = new AttrList(value1);\n              substituteVariablesInAttributes(level, variableAttributes, [\"NAME\", \"VALUE\", \"IMPORT\", \"QUERYPARAM\"]);\n              if (\"IMPORT\" in variableAttributes) {\n                importVariableDefinition(level, variableAttributes, multivariantVariableList);\n              } else {\n                addVariableDefinition(level, variableAttributes, baseurl);\n              }\n            }\n            break;\n          }\n          case \"DISCONTINUITY-SEQUENCE\":\n            discontinuityCounter = parseInt(value1);\n            break;\n          case \"KEY\": {\n            const levelKey = parseKey(value1, baseurl, level);\n            if (levelKey.isSupported()) {\n              if (levelKey.method === \"NONE\") {\n                levelkeys = void 0;\n                break;\n              }\n              if (!levelkeys) {\n                levelkeys = {};\n              }\n              if (levelkeys[levelKey.keyFormat]) {\n                levelkeys = _extends({}, levelkeys);\n              }\n              levelkeys[levelKey.keyFormat] = levelKey;\n            } else {\n              logger.warn(`[Keys] Ignoring invalid EXT-X-KEY tag: \"${value1}\"`);\n            }\n            break;\n          }\n          case \"START\":\n            level.startTimeOffset = parseStartTimeOffset(value1);\n            break;\n          case \"MAP\": {\n            const mapAttrs = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, mapAttrs, [\"BYTERANGE\", \"URI\"]);\n            }\n            if (frag.duration) {\n              const init = new Fragment(type, baseurl);\n              setInitSegment(init, mapAttrs, id, levelkeys);\n              currentInitSegment = init;\n              frag.initSegment = currentInitSegment;\n              if (currentInitSegment.rawProgramDateTime && !frag.rawProgramDateTime) {\n                frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n              }\n            } else {\n              const end = frag.byteRangeEndOffset;\n              if (end) {\n                const start = frag.byteRangeStartOffset;\n                nextByteRange = `${end - start}@${start}`;\n              } else {\n                nextByteRange = null;\n              }\n              setInitSegment(frag, mapAttrs, id, levelkeys);\n              currentInitSegment = frag;\n              createNextFrag = true;\n            }\n            break;\n          }\n          case \"SERVER-CONTROL\": {\n            const serverControlAttrs = new AttrList(value1);\n            level.canBlockReload = serverControlAttrs.bool(\"CAN-BLOCK-RELOAD\");\n            level.canSkipUntil = serverControlAttrs.optionalFloat(\"CAN-SKIP-UNTIL\", 0);\n            level.canSkipDateRanges = level.canSkipUntil > 0 && serverControlAttrs.bool(\"CAN-SKIP-DATERANGES\");\n            level.partHoldBack = serverControlAttrs.optionalFloat(\"PART-HOLD-BACK\", 0);\n            level.holdBack = serverControlAttrs.optionalFloat(\"HOLD-BACK\", 0);\n            break;\n          }\n          case \"PART-INF\": {\n            const partInfAttrs = new AttrList(value1);\n            level.partTarget = partInfAttrs.decimalFloatingPoint(\"PART-TARGET\");\n            break;\n          }\n          case \"PART\": {\n            let partList = level.partList;\n            if (!partList) {\n              partList = level.partList = [];\n            }\n            const previousFragmentPart = currentPart > 0 ? partList[partList.length - 1] : void 0;\n            const index = currentPart++;\n            const partAttrs = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, partAttrs, [\"BYTERANGE\", \"URI\"]);\n            }\n            const part = new Part(partAttrs, frag, baseurl, index, previousFragmentPart);\n            partList.push(part);\n            frag.duration += part.duration;\n            break;\n          }\n          case \"PRELOAD-HINT\": {\n            const preloadHintAttrs = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, preloadHintAttrs, [\"URI\"]);\n            }\n            level.preloadHint = preloadHintAttrs;\n            break;\n          }\n          case \"RENDITION-REPORT\": {\n            const renditionReportAttrs = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, renditionReportAttrs, [\"URI\"]);\n            }\n            level.renditionReports = level.renditionReports || [];\n            level.renditionReports.push(renditionReportAttrs);\n            break;\n          }\n          default:\n            logger.warn(`line parsed but not handled: ${result}`);\n            break;\n        }\n      }\n    }\n    if (prevFrag && !prevFrag.relurl) {\n      fragments.pop();\n      totalduration -= prevFrag.duration;\n      if (level.partList) {\n        level.fragmentHint = prevFrag;\n      }\n    } else if (level.partList) {\n      assignProgramDateTime(frag, prevFrag);\n      frag.cc = discontinuityCounter;\n      level.fragmentHint = frag;\n      if (levelkeys) {\n        setFragLevelKeys(frag, levelkeys, level);\n      }\n    }\n    const fragmentLength = fragments.length;\n    const firstFragment = fragments[0];\n    const lastFragment = fragments[fragmentLength - 1];\n    totalduration += level.skippedSegments * level.targetduration;\n    if (totalduration > 0 && fragmentLength && lastFragment) {\n      level.averagetargetduration = totalduration / fragmentLength;\n      const lastSn = lastFragment.sn;\n      level.endSN = lastSn !== \"initSegment\" ? lastSn : 0;\n      if (!level.live) {\n        lastFragment.endList = true;\n      }\n      if (firstFragment) {\n        level.startCC = firstFragment.cc;\n      }\n    } else {\n      level.endSN = 0;\n      level.startCC = 0;\n    }\n    if (level.fragmentHint) {\n      totalduration += level.fragmentHint.duration;\n    }\n    level.totalduration = totalduration;\n    level.endCC = discontinuityCounter;\n    if (firstPdtIndex > 0) {\n      backfillProgramDateTimes(fragments, firstPdtIndex);\n    }\n    return level;\n  }\n};\nfunction parseKey(keyTagAttributes, baseurl, parsed) {\n  var _keyAttrs$METHOD, _keyAttrs$KEYFORMAT;\n  const keyAttrs = new AttrList(keyTagAttributes);\n  {\n    substituteVariablesInAttributes(parsed, keyAttrs, [\"KEYFORMAT\", \"KEYFORMATVERSIONS\", \"URI\", \"IV\", \"URI\"]);\n  }\n  const decryptmethod = (_keyAttrs$METHOD = keyAttrs.METHOD) != null ? _keyAttrs$METHOD : \"\";\n  const decrypturi = keyAttrs.URI;\n  const decryptiv = keyAttrs.hexadecimalInteger(\"IV\");\n  const decryptkeyformatversions = keyAttrs.KEYFORMATVERSIONS;\n  const decryptkeyformat = (_keyAttrs$KEYFORMAT = keyAttrs.KEYFORMAT) != null ? _keyAttrs$KEYFORMAT : \"identity\";\n  if (decrypturi && keyAttrs.IV && !decryptiv) {\n    logger.error(`Invalid IV: ${keyAttrs.IV}`);\n  }\n  const resolvedUri = decrypturi ? M3U8Parser.resolve(decrypturi, baseurl) : \"\";\n  const keyFormatVersions = (decryptkeyformatversions ? decryptkeyformatversions : \"1\").split(\"/\").map(Number).filter(Number.isFinite);\n  return new LevelKey(decryptmethod, resolvedUri, decryptkeyformat, keyFormatVersions, decryptiv);\n}\nfunction parseStartTimeOffset(startAttributes) {\n  const startAttrs = new AttrList(startAttributes);\n  const startTimeOffset = startAttrs.decimalFloatingPoint(\"TIME-OFFSET\");\n  if (isFiniteNumber(startTimeOffset)) {\n    return startTimeOffset;\n  }\n  return null;\n}\nfunction setCodecs(codecsAttributeValue, level) {\n  let codecs = (codecsAttributeValue || \"\").split(/[ ,]+/).filter((c4) => c4);\n  [\"video\", \"audio\", \"text\"].forEach((type) => {\n    const filtered = codecs.filter((codec) => isCodecType(codec, type));\n    if (filtered.length) {\n      level[`${type}Codec`] = filtered.join(\",\");\n      codecs = codecs.filter((codec) => filtered.indexOf(codec) === -1);\n    }\n  });\n  level.unknownCodecs = codecs;\n}\nfunction assignCodec(media, groupItem, codecProperty) {\n  const codecValue = groupItem[codecProperty];\n  if (codecValue) {\n    media[codecProperty] = codecValue;\n  }\n}\nfunction backfillProgramDateTimes(fragments, firstPdtIndex) {\n  let fragPrev = fragments[firstPdtIndex];\n  for (let i2 = firstPdtIndex; i2--; ) {\n    const frag = fragments[i2];\n    if (!frag) {\n      return;\n    }\n    frag.programDateTime = fragPrev.programDateTime - frag.duration * 1e3;\n    fragPrev = frag;\n  }\n}\nfunction assignProgramDateTime(frag, prevFrag) {\n  if (frag.rawProgramDateTime) {\n    frag.programDateTime = Date.parse(frag.rawProgramDateTime);\n  } else if (prevFrag != null && prevFrag.programDateTime) {\n    frag.programDateTime = prevFrag.endProgramDateTime;\n  }\n  if (!isFiniteNumber(frag.programDateTime)) {\n    frag.programDateTime = null;\n    frag.rawProgramDateTime = null;\n  }\n}\nfunction setInitSegment(frag, mapAttrs, id, levelkeys) {\n  frag.relurl = mapAttrs.URI;\n  if (mapAttrs.BYTERANGE) {\n    frag.setByteRange(mapAttrs.BYTERANGE);\n  }\n  frag.level = id;\n  frag.sn = \"initSegment\";\n  if (levelkeys) {\n    frag.levelkeys = levelkeys;\n  }\n  frag.initSegment = null;\n}\nfunction setFragLevelKeys(frag, levelkeys, level) {\n  frag.levelkeys = levelkeys;\n  const {\n    encryptedFragments\n  } = level;\n  if ((!encryptedFragments.length || encryptedFragments[encryptedFragments.length - 1].levelkeys !== levelkeys) && Object.keys(levelkeys).some((format2) => levelkeys[format2].isCommonEncryption)) {\n    encryptedFragments.push(frag);\n  }\n}\nvar PlaylistContextType = {\n  MANIFEST: \"manifest\",\n  LEVEL: \"level\",\n  AUDIO_TRACK: \"audioTrack\",\n  SUBTITLE_TRACK: \"subtitleTrack\"\n};\nvar PlaylistLevelType = {\n  MAIN: \"main\",\n  AUDIO: \"audio\",\n  SUBTITLE: \"subtitle\"\n};\nfunction mapContextToLevelType(context) {\n  const {\n    type\n  } = context;\n  switch (type) {\n    case PlaylistContextType.AUDIO_TRACK:\n      return PlaylistLevelType.AUDIO;\n    case PlaylistContextType.SUBTITLE_TRACK:\n      return PlaylistLevelType.SUBTITLE;\n    default:\n      return PlaylistLevelType.MAIN;\n  }\n}\nfunction getResponseUrl(response, context) {\n  let url = response.url;\n  if (url === void 0 || url.indexOf(\"data:\") === 0) {\n    url = context.url;\n  }\n  return url;\n}\nvar PlaylistLoader = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.loaders = /* @__PURE__ */ Object.create(null);\n    this.variableList = null;\n    this.hls = hls;\n    this.registerListeners();\n  }\n  startLoad(startPosition) {\n  }\n  stopLoad() {\n    this.destroyInternalLoaders();\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n    hls.on(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n  }\n  unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.off(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n    hls.off(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n  }\n  /**\n   * Returns defaults or configured loader-type overloads (pLoader and loader config params)\n   */\n  createInternalLoader(context) {\n    const config = this.hls.config;\n    const PLoader = config.pLoader;\n    const Loader = config.loader;\n    const InternalLoader = PLoader || Loader;\n    const loader = new InternalLoader(config);\n    this.loaders[context.type] = loader;\n    return loader;\n  }\n  getInternalLoader(context) {\n    return this.loaders[context.type];\n  }\n  resetInternalLoader(contextType) {\n    if (this.loaders[contextType]) {\n      delete this.loaders[contextType];\n    }\n  }\n  /**\n   * Call `destroy` on all internal loader instances mapped (one per context type)\n   */\n  destroyInternalLoaders() {\n    for (const contextType in this.loaders) {\n      const loader = this.loaders[contextType];\n      if (loader) {\n        loader.destroy();\n      }\n      this.resetInternalLoader(contextType);\n    }\n  }\n  destroy() {\n    this.variableList = null;\n    this.unregisterListeners();\n    this.destroyInternalLoaders();\n  }\n  onManifestLoading(event, data) {\n    const {\n      url\n    } = data;\n    this.variableList = null;\n    this.load({\n      id: null,\n      level: 0,\n      responseType: \"text\",\n      type: PlaylistContextType.MANIFEST,\n      url,\n      deliveryDirectives: null\n    });\n  }\n  onLevelLoading(event, data) {\n    const {\n      id,\n      level,\n      pathwayId,\n      url,\n      deliveryDirectives\n    } = data;\n    this.load({\n      id,\n      level,\n      pathwayId,\n      responseType: \"text\",\n      type: PlaylistContextType.LEVEL,\n      url,\n      deliveryDirectives\n    });\n  }\n  onAudioTrackLoading(event, data) {\n    const {\n      id,\n      groupId,\n      url,\n      deliveryDirectives\n    } = data;\n    this.load({\n      id,\n      groupId,\n      level: null,\n      responseType: \"text\",\n      type: PlaylistContextType.AUDIO_TRACK,\n      url,\n      deliveryDirectives\n    });\n  }\n  onSubtitleTrackLoading(event, data) {\n    const {\n      id,\n      groupId,\n      url,\n      deliveryDirectives\n    } = data;\n    this.load({\n      id,\n      groupId,\n      level: null,\n      responseType: \"text\",\n      type: PlaylistContextType.SUBTITLE_TRACK,\n      url,\n      deliveryDirectives\n    });\n  }\n  load(context) {\n    var _context$deliveryDire;\n    const config = this.hls.config;\n    let loader = this.getInternalLoader(context);\n    if (loader) {\n      const loaderContext = loader.context;\n      if (loaderContext && loaderContext.url === context.url && loaderContext.level === context.level) {\n        logger.trace(\"[playlist-loader]: playlist request ongoing\");\n        return;\n      }\n      logger.log(`[playlist-loader]: aborting previous loader for type: ${context.type}`);\n      loader.abort();\n    }\n    let loadPolicy;\n    if (context.type === PlaylistContextType.MANIFEST) {\n      loadPolicy = config.manifestLoadPolicy.default;\n    } else {\n      loadPolicy = _extends({}, config.playlistLoadPolicy.default, {\n        timeoutRetry: null,\n        errorRetry: null\n      });\n    }\n    loader = this.createInternalLoader(context);\n    if (isFiniteNumber((_context$deliveryDire = context.deliveryDirectives) == null ? void 0 : _context$deliveryDire.part)) {\n      let levelDetails;\n      if (context.type === PlaylistContextType.LEVEL && context.level !== null) {\n        levelDetails = this.hls.levels[context.level].details;\n      } else if (context.type === PlaylistContextType.AUDIO_TRACK && context.id !== null) {\n        levelDetails = this.hls.audioTracks[context.id].details;\n      } else if (context.type === PlaylistContextType.SUBTITLE_TRACK && context.id !== null) {\n        levelDetails = this.hls.subtitleTracks[context.id].details;\n      }\n      if (levelDetails) {\n        const partTarget = levelDetails.partTarget;\n        const targetDuration = levelDetails.targetduration;\n        if (partTarget && targetDuration) {\n          const maxLowLatencyPlaylistRefresh = Math.max(partTarget * 3, targetDuration * 0.8) * 1e3;\n          loadPolicy = _extends({}, loadPolicy, {\n            maxTimeToFirstByteMs: Math.min(maxLowLatencyPlaylistRefresh, loadPolicy.maxTimeToFirstByteMs),\n            maxLoadTimeMs: Math.min(maxLowLatencyPlaylistRefresh, loadPolicy.maxTimeToFirstByteMs)\n          });\n        }\n      }\n    }\n    const legacyRetryCompatibility = loadPolicy.errorRetry || loadPolicy.timeoutRetry || {};\n    const loaderConfig = {\n      loadPolicy,\n      timeout: loadPolicy.maxLoadTimeMs,\n      maxRetry: legacyRetryCompatibility.maxNumRetry || 0,\n      retryDelay: legacyRetryCompatibility.retryDelayMs || 0,\n      maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0\n    };\n    const loaderCallbacks = {\n      onSuccess: (response, stats, context2, networkDetails) => {\n        const loader2 = this.getInternalLoader(context2);\n        this.resetInternalLoader(context2.type);\n        const string = response.data;\n        if (string.indexOf(\"#EXTM3U\") !== 0) {\n          this.handleManifestParsingError(response, context2, new Error(\"no EXTM3U delimiter\"), networkDetails || null, stats);\n          return;\n        }\n        stats.parsing.start = performance.now();\n        if (M3U8Parser.isMediaPlaylist(string)) {\n          this.handleTrackOrLevelPlaylist(response, stats, context2, networkDetails || null, loader2);\n        } else {\n          this.handleMasterPlaylist(response, stats, context2, networkDetails);\n        }\n      },\n      onError: (response, context2, networkDetails, stats) => {\n        this.handleNetworkError(context2, networkDetails, false, response, stats);\n      },\n      onTimeout: (stats, context2, networkDetails) => {\n        this.handleNetworkError(context2, networkDetails, true, void 0, stats);\n      }\n    };\n    loader.load(context, loaderConfig, loaderCallbacks);\n  }\n  handleMasterPlaylist(response, stats, context, networkDetails) {\n    const hls = this.hls;\n    const string = response.data;\n    const url = getResponseUrl(response, context);\n    const parsedResult = M3U8Parser.parseMasterPlaylist(string, url);\n    if (parsedResult.playlistParsingError) {\n      this.handleManifestParsingError(response, context, parsedResult.playlistParsingError, networkDetails, stats);\n      return;\n    }\n    const {\n      contentSteering,\n      levels,\n      sessionData,\n      sessionKeys,\n      startTimeOffset,\n      variableList\n    } = parsedResult;\n    this.variableList = variableList;\n    const {\n      AUDIO: audioTracks = [],\n      SUBTITLES: subtitles,\n      \"CLOSED-CAPTIONS\": captions\n    } = M3U8Parser.parseMasterPlaylistMedia(string, url, parsedResult);\n    if (audioTracks.length) {\n      const embeddedAudioFound = audioTracks.some((audioTrack) => !audioTrack.url);\n      if (!embeddedAudioFound && levels[0].audioCodec && !levels[0].attrs.AUDIO) {\n        logger.log(\"[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one\");\n        audioTracks.unshift({\n          type: \"main\",\n          name: \"main\",\n          groupId: \"main\",\n          default: false,\n          autoselect: false,\n          forced: false,\n          id: -1,\n          attrs: new AttrList({}),\n          bitrate: 0,\n          url: \"\"\n        });\n      }\n    }\n    hls.trigger(Events.MANIFEST_LOADED, {\n      levels,\n      audioTracks,\n      subtitles,\n      captions,\n      contentSteering,\n      url,\n      stats,\n      networkDetails,\n      sessionData,\n      sessionKeys,\n      startTimeOffset,\n      variableList\n    });\n  }\n  handleTrackOrLevelPlaylist(response, stats, context, networkDetails, loader) {\n    const hls = this.hls;\n    const {\n      id,\n      level,\n      type\n    } = context;\n    const url = getResponseUrl(response, context);\n    const levelUrlId = 0;\n    const levelId = isFiniteNumber(level) ? level : isFiniteNumber(id) ? id : 0;\n    const levelType = mapContextToLevelType(context);\n    const levelDetails = M3U8Parser.parseLevelPlaylist(response.data, url, levelId, levelType, levelUrlId, this.variableList);\n    if (type === PlaylistContextType.MANIFEST) {\n      const singleLevel = {\n        attrs: new AttrList({}),\n        bitrate: 0,\n        details: levelDetails,\n        name: \"\",\n        url\n      };\n      hls.trigger(Events.MANIFEST_LOADED, {\n        levels: [singleLevel],\n        audioTracks: [],\n        url,\n        stats,\n        networkDetails,\n        sessionData: null,\n        sessionKeys: null,\n        contentSteering: null,\n        startTimeOffset: null,\n        variableList: null\n      });\n    }\n    stats.parsing.end = performance.now();\n    context.levelDetails = levelDetails;\n    this.handlePlaylistLoaded(levelDetails, response, stats, context, networkDetails, loader);\n  }\n  handleManifestParsingError(response, context, error, networkDetails, stats) {\n    this.hls.trigger(Events.ERROR, {\n      type: ErrorTypes.NETWORK_ERROR,\n      details: ErrorDetails.MANIFEST_PARSING_ERROR,\n      fatal: context.type === PlaylistContextType.MANIFEST,\n      url: response.url,\n      err: error,\n      error,\n      reason: error.message,\n      response,\n      context,\n      networkDetails,\n      stats\n    });\n  }\n  handleNetworkError(context, networkDetails, timeout = false, response, stats) {\n    let message = `A network ${timeout ? \"timeout\" : \"error\" + (response ? \" (status \" + response.code + \")\" : \"\")} occurred while loading ${context.type}`;\n    if (context.type === PlaylistContextType.LEVEL) {\n      message += `: ${context.level} id: ${context.id}`;\n    } else if (context.type === PlaylistContextType.AUDIO_TRACK || context.type === PlaylistContextType.SUBTITLE_TRACK) {\n      message += ` id: ${context.id} group-id: \"${context.groupId}\"`;\n    }\n    const error = new Error(message);\n    logger.warn(`[playlist-loader]: ${message}`);\n    let details = ErrorDetails.UNKNOWN;\n    let fatal = false;\n    const loader = this.getInternalLoader(context);\n    switch (context.type) {\n      case PlaylistContextType.MANIFEST:\n        details = timeout ? ErrorDetails.MANIFEST_LOAD_TIMEOUT : ErrorDetails.MANIFEST_LOAD_ERROR;\n        fatal = true;\n        break;\n      case PlaylistContextType.LEVEL:\n        details = timeout ? ErrorDetails.LEVEL_LOAD_TIMEOUT : ErrorDetails.LEVEL_LOAD_ERROR;\n        fatal = false;\n        break;\n      case PlaylistContextType.AUDIO_TRACK:\n        details = timeout ? ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT : ErrorDetails.AUDIO_TRACK_LOAD_ERROR;\n        fatal = false;\n        break;\n      case PlaylistContextType.SUBTITLE_TRACK:\n        details = timeout ? ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT : ErrorDetails.SUBTITLE_LOAD_ERROR;\n        fatal = false;\n        break;\n    }\n    if (loader) {\n      this.resetInternalLoader(context.type);\n    }\n    const errorData = {\n      type: ErrorTypes.NETWORK_ERROR,\n      details,\n      fatal,\n      url: context.url,\n      loader,\n      context,\n      error,\n      networkDetails,\n      stats\n    };\n    if (response) {\n      const url = (networkDetails == null ? void 0 : networkDetails.url) || context.url;\n      errorData.response = _objectSpread2({\n        url,\n        data: void 0\n      }, response);\n    }\n    this.hls.trigger(Events.ERROR, errorData);\n  }\n  handlePlaylistLoaded(levelDetails, response, stats, context, networkDetails, loader) {\n    const hls = this.hls;\n    const {\n      type,\n      level,\n      id,\n      groupId,\n      deliveryDirectives\n    } = context;\n    const url = getResponseUrl(response, context);\n    const parent = mapContextToLevelType(context);\n    const levelIndex = typeof context.level === \"number\" && parent === PlaylistLevelType.MAIN ? level : void 0;\n    if (!levelDetails.fragments.length) {\n      const _error = new Error(\"No Segments found in Playlist\");\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.NETWORK_ERROR,\n        details: ErrorDetails.LEVEL_EMPTY_ERROR,\n        fatal: false,\n        url,\n        error: _error,\n        reason: _error.message,\n        response,\n        context,\n        level: levelIndex,\n        parent,\n        networkDetails,\n        stats\n      });\n      return;\n    }\n    if (!levelDetails.targetduration) {\n      levelDetails.playlistParsingError = new Error(\"Missing Target Duration\");\n    }\n    const error = levelDetails.playlistParsingError;\n    if (error) {\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.NETWORK_ERROR,\n        details: ErrorDetails.LEVEL_PARSING_ERROR,\n        fatal: false,\n        url,\n        error,\n        reason: error.message,\n        response,\n        context,\n        level: levelIndex,\n        parent,\n        networkDetails,\n        stats\n      });\n      return;\n    }\n    if (levelDetails.live && loader) {\n      if (loader.getCacheAge) {\n        levelDetails.ageHeader = loader.getCacheAge() || 0;\n      }\n      if (!loader.getCacheAge || isNaN(levelDetails.ageHeader)) {\n        levelDetails.ageHeader = 0;\n      }\n    }\n    switch (type) {\n      case PlaylistContextType.MANIFEST:\n      case PlaylistContextType.LEVEL:\n        hls.trigger(Events.LEVEL_LOADED, {\n          details: levelDetails,\n          level: levelIndex || 0,\n          id: id || 0,\n          stats,\n          networkDetails,\n          deliveryDirectives\n        });\n        break;\n      case PlaylistContextType.AUDIO_TRACK:\n        hls.trigger(Events.AUDIO_TRACK_LOADED, {\n          details: levelDetails,\n          id: id || 0,\n          groupId: groupId || \"\",\n          stats,\n          networkDetails,\n          deliveryDirectives\n        });\n        break;\n      case PlaylistContextType.SUBTITLE_TRACK:\n        hls.trigger(Events.SUBTITLE_TRACK_LOADED, {\n          details: levelDetails,\n          id: id || 0,\n          groupId: groupId || \"\",\n          stats,\n          networkDetails,\n          deliveryDirectives\n        });\n        break;\n    }\n  }\n};\nfunction sendAddTrackEvent(track, videoEl) {\n  let event;\n  try {\n    event = new Event(\"addtrack\");\n  } catch (err) {\n    event = document.createEvent(\"Event\");\n    event.initEvent(\"addtrack\", false, false);\n  }\n  event.track = track;\n  videoEl.dispatchEvent(event);\n}\nfunction addCueToTrack(track, cue) {\n  const mode = track.mode;\n  if (mode === \"disabled\") {\n    track.mode = \"hidden\";\n  }\n  if (track.cues && !track.cues.getCueById(cue.id)) {\n    try {\n      track.addCue(cue);\n      if (!track.cues.getCueById(cue.id)) {\n        throw new Error(`addCue is failed for: ${cue}`);\n      }\n    } catch (err) {\n      logger.debug(`[texttrack-utils]: ${err}`);\n      try {\n        const textTrackCue = new self.TextTrackCue(cue.startTime, cue.endTime, cue.text);\n        textTrackCue.id = cue.id;\n        track.addCue(textTrackCue);\n      } catch (err2) {\n        logger.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${err2}`);\n      }\n    }\n  }\n  if (mode === \"disabled\") {\n    track.mode = mode;\n  }\n}\nfunction clearCurrentCues(track) {\n  const mode = track.mode;\n  if (mode === \"disabled\") {\n    track.mode = \"hidden\";\n  }\n  if (track.cues) {\n    for (let i2 = track.cues.length; i2--; ) {\n      track.removeCue(track.cues[i2]);\n    }\n  }\n  if (mode === \"disabled\") {\n    track.mode = mode;\n  }\n}\nfunction removeCuesInRange(track, start, end, predicate) {\n  const mode = track.mode;\n  if (mode === \"disabled\") {\n    track.mode = \"hidden\";\n  }\n  if (track.cues && track.cues.length > 0) {\n    const cues = getCuesInRange(track.cues, start, end);\n    for (let i2 = 0; i2 < cues.length; i2++) {\n      if (!predicate || predicate(cues[i2])) {\n        track.removeCue(cues[i2]);\n      }\n    }\n  }\n  if (mode === \"disabled\") {\n    track.mode = mode;\n  }\n}\nfunction getFirstCueIndexAfterTime(cues, time) {\n  if (time < cues[0].startTime) {\n    return 0;\n  }\n  const len = cues.length - 1;\n  if (time > cues[len].endTime) {\n    return -1;\n  }\n  let left = 0;\n  let right = len;\n  while (left <= right) {\n    const mid = Math.floor((right + left) / 2);\n    if (time < cues[mid].startTime) {\n      right = mid - 1;\n    } else if (time > cues[mid].startTime && left < len) {\n      left = mid + 1;\n    } else {\n      return mid;\n    }\n  }\n  return cues[left].startTime - time < time - cues[right].startTime ? left : right;\n}\nfunction getCuesInRange(cues, start, end) {\n  const cuesFound = [];\n  const firstCueInRange = getFirstCueIndexAfterTime(cues, start);\n  if (firstCueInRange > -1) {\n    for (let i2 = firstCueInRange, len = cues.length; i2 < len; i2++) {\n      const cue = cues[i2];\n      if (cue.startTime >= start && cue.endTime <= end) {\n        cuesFound.push(cue);\n      } else if (cue.startTime > end) {\n        return cuesFound;\n      }\n    }\n  }\n  return cuesFound;\n}\nfunction filterSubtitleTracks(textTrackList) {\n  const tracks = [];\n  for (let i2 = 0; i2 < textTrackList.length; i2++) {\n    const track = textTrackList[i2];\n    if ((track.kind === \"subtitles\" || track.kind === \"captions\") && track.label) {\n      tracks.push(textTrackList[i2]);\n    }\n  }\n  return tracks;\n}\nvar MetadataSchema = {\n  audioId3: \"org.id3\",\n  dateRange: \"com.apple.quicktime.HLS\",\n  emsg: \"https://aomedia.org/emsg/ID3\"\n};\nvar MIN_CUE_DURATION = 0.25;\nfunction getCueClass() {\n  if (typeof self === \"undefined\") return void 0;\n  return self.VTTCue || self.TextTrackCue;\n}\nfunction createCueWithDataFields(Cue, startTime, endTime, data, type) {\n  let cue = new Cue(startTime, endTime, \"\");\n  try {\n    cue.value = data;\n    if (type) {\n      cue.type = type;\n    }\n  } catch (e) {\n    cue = new Cue(startTime, endTime, JSON.stringify(type ? _objectSpread2({\n      type\n    }, data) : data));\n  }\n  return cue;\n}\nvar MAX_CUE_ENDTIME = (() => {\n  const Cue = getCueClass();\n  try {\n    Cue && new Cue(0, Number.POSITIVE_INFINITY, \"\");\n  } catch (e) {\n    return Number.MAX_VALUE;\n  }\n  return Number.POSITIVE_INFINITY;\n})();\nfunction dateRangeDateToTimelineSeconds(date, offset) {\n  return date.getTime() / 1e3 - offset;\n}\nfunction hexToArrayBuffer(str) {\n  return Uint8Array.from(str.replace(/^0x/, \"\").replace(/([\\da-fA-F]{2}) ?/g, \"0x$1 \").replace(/ +$/, \"\").split(\" \")).buffer;\n}\nvar ID3TrackController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.id3Track = null;\n    this.media = null;\n    this.dateRangeCuesAppended = {};\n    this.hls = hls;\n    this._registerListeners();\n  }\n  destroy() {\n    this._unregisterListeners();\n    this.id3Track = null;\n    this.media = null;\n    this.dateRangeCuesAppended = {};\n    this.hls = null;\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n  // Add ID3 metatadata text track.\n  onMediaAttached(event, data) {\n    this.media = data.media;\n  }\n  onMediaDetaching() {\n    if (!this.id3Track) {\n      return;\n    }\n    clearCurrentCues(this.id3Track);\n    this.id3Track = null;\n    this.media = null;\n    this.dateRangeCuesAppended = {};\n  }\n  onManifestLoading() {\n    this.dateRangeCuesAppended = {};\n  }\n  createTrack(media) {\n    const track = this.getID3Track(media.textTracks);\n    track.mode = \"hidden\";\n    return track;\n  }\n  getID3Track(textTracks) {\n    if (!this.media) {\n      return;\n    }\n    for (let i2 = 0; i2 < textTracks.length; i2++) {\n      const textTrack = textTracks[i2];\n      if (textTrack.kind === \"metadata\" && textTrack.label === \"id3\") {\n        sendAddTrackEvent(textTrack, this.media);\n        return textTrack;\n      }\n    }\n    return this.media.addTextTrack(\"metadata\", \"id3\");\n  }\n  onFragParsingMetadata(event, data) {\n    if (!this.media) {\n      return;\n    }\n    const {\n      hls: {\n        config: {\n          enableEmsgMetadataCues,\n          enableID3MetadataCues\n        }\n      }\n    } = this;\n    if (!enableEmsgMetadataCues && !enableID3MetadataCues) {\n      return;\n    }\n    const {\n      samples\n    } = data;\n    if (!this.id3Track) {\n      this.id3Track = this.createTrack(this.media);\n    }\n    const Cue = getCueClass();\n    if (!Cue) {\n      return;\n    }\n    for (let i2 = 0; i2 < samples.length; i2++) {\n      const type = samples[i2].type;\n      if (type === MetadataSchema.emsg && !enableEmsgMetadataCues || !enableID3MetadataCues) {\n        continue;\n      }\n      const frames = getID3Frames(samples[i2].data);\n      if (frames) {\n        const startTime = samples[i2].pts;\n        let endTime = startTime + samples[i2].duration;\n        if (endTime > MAX_CUE_ENDTIME) {\n          endTime = MAX_CUE_ENDTIME;\n        }\n        const timeDiff = endTime - startTime;\n        if (timeDiff <= 0) {\n          endTime = startTime + MIN_CUE_DURATION;\n        }\n        for (let j4 = 0; j4 < frames.length; j4++) {\n          const frame = frames[j4];\n          if (!isTimeStampFrame(frame)) {\n            this.updateId3CueEnds(startTime, type);\n            const cue = createCueWithDataFields(Cue, startTime, endTime, frame, type);\n            if (cue) {\n              this.id3Track.addCue(cue);\n            }\n          }\n        }\n      }\n    }\n  }\n  updateId3CueEnds(startTime, type) {\n    var _this$id3Track;\n    const cues = (_this$id3Track = this.id3Track) == null ? void 0 : _this$id3Track.cues;\n    if (cues) {\n      for (let i2 = cues.length; i2--; ) {\n        const cue = cues[i2];\n        if (cue.type === type && cue.startTime < startTime && cue.endTime === MAX_CUE_ENDTIME) {\n          cue.endTime = startTime;\n        }\n      }\n    }\n  }\n  onBufferFlushing(event, {\n    startOffset,\n    endOffset,\n    type\n  }) {\n    const {\n      id3Track,\n      hls\n    } = this;\n    if (!hls) {\n      return;\n    }\n    const {\n      config: {\n        enableEmsgMetadataCues,\n        enableID3MetadataCues\n      }\n    } = hls;\n    if (id3Track && (enableEmsgMetadataCues || enableID3MetadataCues)) {\n      let predicate;\n      if (type === \"audio\") {\n        predicate = (cue) => cue.type === MetadataSchema.audioId3 && enableID3MetadataCues;\n      } else if (type === \"video\") {\n        predicate = (cue) => cue.type === MetadataSchema.emsg && enableEmsgMetadataCues;\n      } else {\n        predicate = (cue) => cue.type === MetadataSchema.audioId3 && enableID3MetadataCues || cue.type === MetadataSchema.emsg && enableEmsgMetadataCues;\n      }\n      removeCuesInRange(id3Track, startOffset, endOffset, predicate);\n    }\n  }\n  onLevelUpdated(event, {\n    details\n  }) {\n    if (!this.media || !details.hasProgramDateTime || !this.hls.config.enableDateRangeMetadataCues) {\n      return;\n    }\n    const {\n      dateRangeCuesAppended,\n      id3Track\n    } = this;\n    const {\n      dateRanges\n    } = details;\n    const ids = Object.keys(dateRanges);\n    if (id3Track) {\n      const idsToRemove = Object.keys(dateRangeCuesAppended).filter((id) => !ids.includes(id));\n      for (let i2 = idsToRemove.length; i2--; ) {\n        const id = idsToRemove[i2];\n        Object.keys(dateRangeCuesAppended[id].cues).forEach((key) => {\n          id3Track.removeCue(dateRangeCuesAppended[id].cues[key]);\n        });\n        delete dateRangeCuesAppended[id];\n      }\n    }\n    const lastFragment = details.fragments[details.fragments.length - 1];\n    if (ids.length === 0 || !isFiniteNumber(lastFragment == null ? void 0 : lastFragment.programDateTime)) {\n      return;\n    }\n    if (!this.id3Track) {\n      this.id3Track = this.createTrack(this.media);\n    }\n    const dateTimeOffset = lastFragment.programDateTime / 1e3 - lastFragment.start;\n    const Cue = getCueClass();\n    for (let i2 = 0; i2 < ids.length; i2++) {\n      const id = ids[i2];\n      const dateRange = dateRanges[id];\n      const startTime = dateRangeDateToTimelineSeconds(dateRange.startDate, dateTimeOffset);\n      const appendedDateRangeCues = dateRangeCuesAppended[id];\n      const cues = (appendedDateRangeCues == null ? void 0 : appendedDateRangeCues.cues) || {};\n      let durationKnown = (appendedDateRangeCues == null ? void 0 : appendedDateRangeCues.durationKnown) || false;\n      let endTime = MAX_CUE_ENDTIME;\n      const endDate = dateRange.endDate;\n      if (endDate) {\n        endTime = dateRangeDateToTimelineSeconds(endDate, dateTimeOffset);\n        durationKnown = true;\n      } else if (dateRange.endOnNext && !durationKnown) {\n        const nextDateRangeWithSameClass = ids.reduce((candidateDateRange, id2) => {\n          if (id2 !== dateRange.id) {\n            const otherDateRange = dateRanges[id2];\n            if (otherDateRange.class === dateRange.class && otherDateRange.startDate > dateRange.startDate && (!candidateDateRange || dateRange.startDate < candidateDateRange.startDate)) {\n              return otherDateRange;\n            }\n          }\n          return candidateDateRange;\n        }, null);\n        if (nextDateRangeWithSameClass) {\n          endTime = dateRangeDateToTimelineSeconds(nextDateRangeWithSameClass.startDate, dateTimeOffset);\n          durationKnown = true;\n        }\n      }\n      const attributes = Object.keys(dateRange.attr);\n      for (let j4 = 0; j4 < attributes.length; j4++) {\n        const key = attributes[j4];\n        if (!isDateRangeCueAttribute(key)) {\n          continue;\n        }\n        const cue = cues[key];\n        if (cue) {\n          if (durationKnown && !appendedDateRangeCues.durationKnown) {\n            cue.endTime = endTime;\n          }\n        } else if (Cue) {\n          let data = dateRange.attr[key];\n          if (isSCTE35Attribute(key)) {\n            data = hexToArrayBuffer(data);\n          }\n          const _cue = createCueWithDataFields(Cue, startTime, endTime, {\n            key,\n            data\n          }, MetadataSchema.dateRange);\n          if (_cue) {\n            _cue.id = id;\n            this.id3Track.addCue(_cue);\n            cues[key] = _cue;\n          }\n        }\n      }\n      dateRangeCuesAppended[id] = {\n        cues,\n        dateRange,\n        durationKnown\n      };\n    }\n  }\n};\nvar LatencyController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.config = void 0;\n    this.media = null;\n    this.levelDetails = null;\n    this.currentTime = 0;\n    this.stallCount = 0;\n    this._latency = null;\n    this.timeupdateHandler = () => this.timeupdate();\n    this.hls = hls;\n    this.config = hls.config;\n    this.registerListeners();\n  }\n  get latency() {\n    return this._latency || 0;\n  }\n  get maxLatency() {\n    const {\n      config,\n      levelDetails\n    } = this;\n    if (config.liveMaxLatencyDuration !== void 0) {\n      return config.liveMaxLatencyDuration;\n    }\n    return levelDetails ? config.liveMaxLatencyDurationCount * levelDetails.targetduration : 0;\n  }\n  get targetLatency() {\n    const {\n      levelDetails\n    } = this;\n    if (levelDetails === null) {\n      return null;\n    }\n    const {\n      holdBack,\n      partHoldBack,\n      targetduration\n    } = levelDetails;\n    const {\n      liveSyncDuration,\n      liveSyncDurationCount,\n      lowLatencyMode\n    } = this.config;\n    const userConfig = this.hls.userConfig;\n    let targetLatency = lowLatencyMode ? partHoldBack || holdBack : holdBack;\n    if (userConfig.liveSyncDuration || userConfig.liveSyncDurationCount || targetLatency === 0) {\n      targetLatency = liveSyncDuration !== void 0 ? liveSyncDuration : liveSyncDurationCount * targetduration;\n    }\n    const maxLiveSyncOnStallIncrease = targetduration;\n    const liveSyncOnStallIncrease = 1;\n    return targetLatency + Math.min(this.stallCount * liveSyncOnStallIncrease, maxLiveSyncOnStallIncrease);\n  }\n  get liveSyncPosition() {\n    const liveEdge = this.estimateLiveEdge();\n    const targetLatency = this.targetLatency;\n    const levelDetails = this.levelDetails;\n    if (liveEdge === null || targetLatency === null || levelDetails === null) {\n      return null;\n    }\n    const edge = levelDetails.edge;\n    const syncPosition = liveEdge - targetLatency - this.edgeStalled;\n    const min = edge - levelDetails.totalduration;\n    const max = edge - (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration);\n    return Math.min(Math.max(min, syncPosition), max);\n  }\n  get drift() {\n    const {\n      levelDetails\n    } = this;\n    if (levelDetails === null) {\n      return 1;\n    }\n    return levelDetails.drift;\n  }\n  get edgeStalled() {\n    const {\n      levelDetails\n    } = this;\n    if (levelDetails === null) {\n      return 0;\n    }\n    const maxLevelUpdateAge = (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration) * 3;\n    return Math.max(levelDetails.age - maxLevelUpdateAge, 0);\n  }\n  get forwardBufferLength() {\n    const {\n      media,\n      levelDetails\n    } = this;\n    if (!media || !levelDetails) {\n      return 0;\n    }\n    const bufferedRanges = media.buffered.length;\n    return (bufferedRanges ? media.buffered.end(bufferedRanges - 1) : levelDetails.edge) - this.currentTime;\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.onMediaDetaching();\n    this.levelDetails = null;\n    this.hls = this.timeupdateHandler = null;\n  }\n  registerListeners() {\n    this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    this.hls.on(Events.ERROR, this.onError, this);\n  }\n  unregisterListeners() {\n    this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    this.hls.off(Events.ERROR, this.onError, this);\n  }\n  onMediaAttached(event, data) {\n    this.media = data.media;\n    this.media.addEventListener(\"timeupdate\", this.timeupdateHandler);\n  }\n  onMediaDetaching() {\n    if (this.media) {\n      this.media.removeEventListener(\"timeupdate\", this.timeupdateHandler);\n      this.media = null;\n    }\n  }\n  onManifestLoading() {\n    this.levelDetails = null;\n    this._latency = null;\n    this.stallCount = 0;\n  }\n  onLevelUpdated(event, {\n    details\n  }) {\n    this.levelDetails = details;\n    if (details.advanced) {\n      this.timeupdate();\n    }\n    if (!details.live && this.media) {\n      this.media.removeEventListener(\"timeupdate\", this.timeupdateHandler);\n    }\n  }\n  onError(event, data) {\n    var _this$levelDetails;\n    if (data.details !== ErrorDetails.BUFFER_STALLED_ERROR) {\n      return;\n    }\n    this.stallCount++;\n    if ((_this$levelDetails = this.levelDetails) != null && _this$levelDetails.live) {\n      logger.warn(\"[playback-rate-controller]: Stall detected, adjusting target latency\");\n    }\n  }\n  timeupdate() {\n    const {\n      media,\n      levelDetails\n    } = this;\n    if (!media || !levelDetails) {\n      return;\n    }\n    this.currentTime = media.currentTime;\n    const latency = this.computeLatency();\n    if (latency === null) {\n      return;\n    }\n    this._latency = latency;\n    const {\n      lowLatencyMode,\n      maxLiveSyncPlaybackRate\n    } = this.config;\n    if (!lowLatencyMode || maxLiveSyncPlaybackRate === 1 || !levelDetails.live) {\n      return;\n    }\n    const targetLatency = this.targetLatency;\n    if (targetLatency === null) {\n      return;\n    }\n    const distanceFromTarget = latency - targetLatency;\n    const liveMinLatencyDuration = Math.min(this.maxLatency, targetLatency + levelDetails.targetduration);\n    const inLiveRange = distanceFromTarget < liveMinLatencyDuration;\n    if (inLiveRange && distanceFromTarget > 0.05 && this.forwardBufferLength > 1) {\n      const max = Math.min(2, Math.max(1, maxLiveSyncPlaybackRate));\n      const rate = Math.round(2 / (1 + Math.exp(-0.75 * distanceFromTarget - this.edgeStalled)) * 20) / 20;\n      media.playbackRate = Math.min(max, Math.max(1, rate));\n    } else if (media.playbackRate !== 1 && media.playbackRate !== 0) {\n      media.playbackRate = 1;\n    }\n  }\n  estimateLiveEdge() {\n    const {\n      levelDetails\n    } = this;\n    if (levelDetails === null) {\n      return null;\n    }\n    return levelDetails.edge + levelDetails.age;\n  }\n  computeLatency() {\n    const liveEdge = this.estimateLiveEdge();\n    if (liveEdge === null) {\n      return null;\n    }\n    return liveEdge - this.currentTime;\n  }\n};\nvar HdcpLevels = [\"NONE\", \"TYPE-0\", \"TYPE-1\", null];\nfunction isHdcpLevel(value) {\n  return HdcpLevels.indexOf(value) > -1;\n}\nvar VideoRangeValues = [\"SDR\", \"PQ\", \"HLG\"];\nfunction isVideoRange(value) {\n  return !!value && VideoRangeValues.indexOf(value) > -1;\n}\nvar HlsSkip = {\n  No: \"\",\n  Yes: \"YES\",\n  v2: \"v2\"\n};\nfunction getSkipValue(details) {\n  const {\n    canSkipUntil,\n    canSkipDateRanges,\n    age\n  } = details;\n  const playlistRecentEnough = age < canSkipUntil / 2;\n  if (canSkipUntil && playlistRecentEnough) {\n    if (canSkipDateRanges) {\n      return HlsSkip.v2;\n    }\n    return HlsSkip.Yes;\n  }\n  return HlsSkip.No;\n}\nvar HlsUrlParameters = class {\n  constructor(msn, part, skip) {\n    this.msn = void 0;\n    this.part = void 0;\n    this.skip = void 0;\n    this.msn = msn;\n    this.part = part;\n    this.skip = skip;\n  }\n  addDirectives(uri) {\n    const url = new self.URL(uri);\n    if (this.msn !== void 0) {\n      url.searchParams.set(\"_HLS_msn\", this.msn.toString());\n    }\n    if (this.part !== void 0) {\n      url.searchParams.set(\"_HLS_part\", this.part.toString());\n    }\n    if (this.skip) {\n      url.searchParams.set(\"_HLS_skip\", this.skip);\n    }\n    return url.href;\n  }\n};\nvar Level = class {\n  constructor(data) {\n    this._attrs = void 0;\n    this.audioCodec = void 0;\n    this.bitrate = void 0;\n    this.codecSet = void 0;\n    this.url = void 0;\n    this.frameRate = void 0;\n    this.height = void 0;\n    this.id = void 0;\n    this.name = void 0;\n    this.videoCodec = void 0;\n    this.width = void 0;\n    this.details = void 0;\n    this.fragmentError = 0;\n    this.loadError = 0;\n    this.loaded = void 0;\n    this.realBitrate = 0;\n    this.supportedPromise = void 0;\n    this.supportedResult = void 0;\n    this._avgBitrate = 0;\n    this._audioGroups = void 0;\n    this._subtitleGroups = void 0;\n    this._urlId = 0;\n    this.url = [data.url];\n    this._attrs = [data.attrs];\n    this.bitrate = data.bitrate;\n    if (data.details) {\n      this.details = data.details;\n    }\n    this.id = data.id || 0;\n    this.name = data.name;\n    this.width = data.width || 0;\n    this.height = data.height || 0;\n    this.frameRate = data.attrs.optionalFloat(\"FRAME-RATE\", 0);\n    this._avgBitrate = data.attrs.decimalInteger(\"AVERAGE-BANDWIDTH\");\n    this.audioCodec = data.audioCodec;\n    this.videoCodec = data.videoCodec;\n    this.codecSet = [data.videoCodec, data.audioCodec].filter((c4) => !!c4).map((s) => s.substring(0, 4)).join(\",\");\n    this.addGroupId(\"audio\", data.attrs.AUDIO);\n    this.addGroupId(\"text\", data.attrs.SUBTITLES);\n  }\n  get maxBitrate() {\n    return Math.max(this.realBitrate, this.bitrate);\n  }\n  get averageBitrate() {\n    return this._avgBitrate || this.realBitrate || this.bitrate;\n  }\n  get attrs() {\n    return this._attrs[0];\n  }\n  get codecs() {\n    return this.attrs.CODECS || \"\";\n  }\n  get pathwayId() {\n    return this.attrs[\"PATHWAY-ID\"] || \".\";\n  }\n  get videoRange() {\n    return this.attrs[\"VIDEO-RANGE\"] || \"SDR\";\n  }\n  get score() {\n    return this.attrs.optionalFloat(\"SCORE\", 0);\n  }\n  get uri() {\n    return this.url[0] || \"\";\n  }\n  hasAudioGroup(groupId) {\n    return hasGroup(this._audioGroups, groupId);\n  }\n  hasSubtitleGroup(groupId) {\n    return hasGroup(this._subtitleGroups, groupId);\n  }\n  get audioGroups() {\n    return this._audioGroups;\n  }\n  get subtitleGroups() {\n    return this._subtitleGroups;\n  }\n  addGroupId(type, groupId) {\n    if (!groupId) {\n      return;\n    }\n    if (type === \"audio\") {\n      let audioGroups = this._audioGroups;\n      if (!audioGroups) {\n        audioGroups = this._audioGroups = [];\n      }\n      if (audioGroups.indexOf(groupId) === -1) {\n        audioGroups.push(groupId);\n      }\n    } else if (type === \"text\") {\n      let subtitleGroups = this._subtitleGroups;\n      if (!subtitleGroups) {\n        subtitleGroups = this._subtitleGroups = [];\n      }\n      if (subtitleGroups.indexOf(groupId) === -1) {\n        subtitleGroups.push(groupId);\n      }\n    }\n  }\n  // Deprecated methods (retained for backwards compatibility)\n  get urlId() {\n    return 0;\n  }\n  set urlId(value) {\n  }\n  get audioGroupIds() {\n    return this.audioGroups ? [this.audioGroupId] : void 0;\n  }\n  get textGroupIds() {\n    return this.subtitleGroups ? [this.textGroupId] : void 0;\n  }\n  get audioGroupId() {\n    var _this$audioGroups;\n    return (_this$audioGroups = this.audioGroups) == null ? void 0 : _this$audioGroups[0];\n  }\n  get textGroupId() {\n    var _this$subtitleGroups;\n    return (_this$subtitleGroups = this.subtitleGroups) == null ? void 0 : _this$subtitleGroups[0];\n  }\n  addFallback() {\n  }\n};\nfunction hasGroup(groups, groupId) {\n  if (!groupId || !groups) {\n    return false;\n  }\n  return groups.indexOf(groupId) !== -1;\n}\nfunction updateFromToPTS(fragFrom, fragTo) {\n  const fragToPTS = fragTo.startPTS;\n  if (isFiniteNumber(fragToPTS)) {\n    let duration = 0;\n    let frag;\n    if (fragTo.sn > fragFrom.sn) {\n      duration = fragToPTS - fragFrom.start;\n      frag = fragFrom;\n    } else {\n      duration = fragFrom.start - fragToPTS;\n      frag = fragTo;\n    }\n    if (frag.duration !== duration) {\n      frag.duration = duration;\n    }\n  } else if (fragTo.sn > fragFrom.sn) {\n    const contiguous = fragFrom.cc === fragTo.cc;\n    if (contiguous && fragFrom.minEndPTS) {\n      fragTo.start = fragFrom.start + (fragFrom.minEndPTS - fragFrom.start);\n    } else {\n      fragTo.start = fragFrom.start + fragFrom.duration;\n    }\n  } else {\n    fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0);\n  }\n}\nfunction updateFragPTSDTS(details, frag, startPTS, endPTS, startDTS, endDTS) {\n  const parsedMediaDuration = endPTS - startPTS;\n  if (parsedMediaDuration <= 0) {\n    logger.warn(\"Fragment should have a positive duration\", frag);\n    endPTS = startPTS + frag.duration;\n    endDTS = startDTS + frag.duration;\n  }\n  let maxStartPTS = startPTS;\n  let minEndPTS = endPTS;\n  const fragStartPts = frag.startPTS;\n  const fragEndPts = frag.endPTS;\n  if (isFiniteNumber(fragStartPts)) {\n    const deltaPTS = Math.abs(fragStartPts - startPTS);\n    if (!isFiniteNumber(frag.deltaPTS)) {\n      frag.deltaPTS = deltaPTS;\n    } else {\n      frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS);\n    }\n    maxStartPTS = Math.max(startPTS, fragStartPts);\n    startPTS = Math.min(startPTS, fragStartPts);\n    startDTS = Math.min(startDTS, frag.startDTS);\n    minEndPTS = Math.min(endPTS, fragEndPts);\n    endPTS = Math.max(endPTS, fragEndPts);\n    endDTS = Math.max(endDTS, frag.endDTS);\n  }\n  const drift = startPTS - frag.start;\n  if (frag.start !== 0) {\n    frag.start = startPTS;\n  }\n  frag.duration = endPTS - frag.start;\n  frag.startPTS = startPTS;\n  frag.maxStartPTS = maxStartPTS;\n  frag.startDTS = startDTS;\n  frag.endPTS = endPTS;\n  frag.minEndPTS = minEndPTS;\n  frag.endDTS = endDTS;\n  const sn = frag.sn;\n  if (!details || sn < details.startSN || sn > details.endSN) {\n    return 0;\n  }\n  let i2;\n  const fragIdx = sn - details.startSN;\n  const fragments = details.fragments;\n  fragments[fragIdx] = frag;\n  for (i2 = fragIdx; i2 > 0; i2--) {\n    updateFromToPTS(fragments[i2], fragments[i2 - 1]);\n  }\n  for (i2 = fragIdx; i2 < fragments.length - 1; i2++) {\n    updateFromToPTS(fragments[i2], fragments[i2 + 1]);\n  }\n  if (details.fragmentHint) {\n    updateFromToPTS(fragments[fragments.length - 1], details.fragmentHint);\n  }\n  details.PTSKnown = details.alignedSliding = true;\n  return drift;\n}\nfunction mergeDetails(oldDetails, newDetails) {\n  let currentInitSegment = null;\n  const oldFragments = oldDetails.fragments;\n  for (let i2 = oldFragments.length - 1; i2 >= 0; i2--) {\n    const oldInit = oldFragments[i2].initSegment;\n    if (oldInit) {\n      currentInitSegment = oldInit;\n      break;\n    }\n  }\n  if (oldDetails.fragmentHint) {\n    delete oldDetails.fragmentHint.endPTS;\n  }\n  let PTSFrag;\n  mapFragmentIntersection(oldDetails, newDetails, (oldFrag, newFrag, newFragIndex, newFragments2) => {\n    if (newDetails.skippedSegments) {\n      if (newFrag.cc !== oldFrag.cc) {\n        const ccOffset = oldFrag.cc - newFrag.cc;\n        for (let i2 = newFragIndex; i2 < newFragments2.length; i2++) {\n          newFragments2[i2].cc += ccOffset;\n        }\n      }\n    }\n    if (isFiniteNumber(oldFrag.startPTS) && isFiniteNumber(oldFrag.endPTS)) {\n      newFrag.start = newFrag.startPTS = oldFrag.startPTS;\n      newFrag.startDTS = oldFrag.startDTS;\n      newFrag.maxStartPTS = oldFrag.maxStartPTS;\n      newFrag.endPTS = oldFrag.endPTS;\n      newFrag.endDTS = oldFrag.endDTS;\n      newFrag.minEndPTS = oldFrag.minEndPTS;\n      newFrag.duration = oldFrag.endPTS - oldFrag.startPTS;\n      if (newFrag.duration) {\n        PTSFrag = newFrag;\n      }\n      newDetails.PTSKnown = newDetails.alignedSliding = true;\n    }\n    newFrag.elementaryStreams = oldFrag.elementaryStreams;\n    newFrag.loader = oldFrag.loader;\n    newFrag.stats = oldFrag.stats;\n    if (oldFrag.initSegment) {\n      newFrag.initSegment = oldFrag.initSegment;\n      currentInitSegment = oldFrag.initSegment;\n    }\n  });\n  const newFragments = newDetails.fragments;\n  if (currentInitSegment) {\n    const fragmentsToCheck = newDetails.fragmentHint ? newFragments.concat(newDetails.fragmentHint) : newFragments;\n    fragmentsToCheck.forEach((frag) => {\n      var _currentInitSegment;\n      if (frag && (!frag.initSegment || frag.initSegment.relurl === ((_currentInitSegment = currentInitSegment) == null ? void 0 : _currentInitSegment.relurl))) {\n        frag.initSegment = currentInitSegment;\n      }\n    });\n  }\n  if (newDetails.skippedSegments) {\n    newDetails.deltaUpdateFailed = newFragments.some((frag) => !frag);\n    if (newDetails.deltaUpdateFailed) {\n      logger.warn(\"[level-helper] Previous playlist missing segments skipped in delta playlist\");\n      for (let i2 = newDetails.skippedSegments; i2--; ) {\n        newFragments.shift();\n      }\n      newDetails.startSN = newFragments[0].sn;\n    } else {\n      if (newDetails.canSkipDateRanges) {\n        newDetails.dateRanges = mergeDateRanges(oldDetails.dateRanges, newDetails.dateRanges, newDetails.recentlyRemovedDateranges);\n      }\n    }\n    newDetails.startCC = newDetails.fragments[0].cc;\n    newDetails.endCC = newFragments[newFragments.length - 1].cc;\n  }\n  mapPartIntersection(oldDetails.partList, newDetails.partList, (oldPart, newPart) => {\n    newPart.elementaryStreams = oldPart.elementaryStreams;\n    newPart.stats = oldPart.stats;\n  });\n  if (PTSFrag) {\n    updateFragPTSDTS(newDetails, PTSFrag, PTSFrag.startPTS, PTSFrag.endPTS, PTSFrag.startDTS, PTSFrag.endDTS);\n  } else {\n    adjustSliding(oldDetails, newDetails);\n  }\n  if (newFragments.length) {\n    newDetails.totalduration = newDetails.edge - newFragments[0].start;\n  }\n  newDetails.driftStartTime = oldDetails.driftStartTime;\n  newDetails.driftStart = oldDetails.driftStart;\n  const advancedDateTime = newDetails.advancedDateTime;\n  if (newDetails.advanced && advancedDateTime) {\n    const edge = newDetails.edge;\n    if (!newDetails.driftStart) {\n      newDetails.driftStartTime = advancedDateTime;\n      newDetails.driftStart = edge;\n    }\n    newDetails.driftEndTime = advancedDateTime;\n    newDetails.driftEnd = edge;\n  } else {\n    newDetails.driftEndTime = oldDetails.driftEndTime;\n    newDetails.driftEnd = oldDetails.driftEnd;\n    newDetails.advancedDateTime = oldDetails.advancedDateTime;\n  }\n}\nfunction mergeDateRanges(oldDateRanges, deltaDateRanges, recentlyRemovedDateranges) {\n  const dateRanges = _extends({}, oldDateRanges);\n  if (recentlyRemovedDateranges) {\n    recentlyRemovedDateranges.forEach((id) => {\n      delete dateRanges[id];\n    });\n  }\n  Object.keys(deltaDateRanges).forEach((id) => {\n    const dateRange = new DateRange(deltaDateRanges[id].attr, dateRanges[id]);\n    if (dateRange.isValid) {\n      dateRanges[id] = dateRange;\n    } else {\n      logger.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: \"${JSON.stringify(deltaDateRanges[id].attr)}\"`);\n    }\n  });\n  return dateRanges;\n}\nfunction mapPartIntersection(oldParts, newParts, intersectionFn) {\n  if (oldParts && newParts) {\n    let delta = 0;\n    for (let i2 = 0, len = oldParts.length; i2 <= len; i2++) {\n      const oldPart = oldParts[i2];\n      const newPart = newParts[i2 + delta];\n      if (oldPart && newPart && oldPart.index === newPart.index && oldPart.fragment.sn === newPart.fragment.sn) {\n        intersectionFn(oldPart, newPart);\n      } else {\n        delta--;\n      }\n    }\n  }\n}\nfunction mapFragmentIntersection(oldDetails, newDetails, intersectionFn) {\n  const skippedSegments = newDetails.skippedSegments;\n  const start = Math.max(oldDetails.startSN, newDetails.startSN) - newDetails.startSN;\n  const end = (oldDetails.fragmentHint ? 1 : 0) + (skippedSegments ? newDetails.endSN : Math.min(oldDetails.endSN, newDetails.endSN)) - newDetails.startSN;\n  const delta = newDetails.startSN - oldDetails.startSN;\n  const newFrags = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n  const oldFrags = oldDetails.fragmentHint ? oldDetails.fragments.concat(oldDetails.fragmentHint) : oldDetails.fragments;\n  for (let i2 = start; i2 <= end; i2++) {\n    const oldFrag = oldFrags[delta + i2];\n    let newFrag = newFrags[i2];\n    if (skippedSegments && !newFrag && i2 < skippedSegments) {\n      newFrag = newDetails.fragments[i2] = oldFrag;\n    }\n    if (oldFrag && newFrag) {\n      intersectionFn(oldFrag, newFrag, i2, newFrags);\n    }\n  }\n}\nfunction adjustSliding(oldDetails, newDetails) {\n  const delta = newDetails.startSN + newDetails.skippedSegments - oldDetails.startSN;\n  const oldFragments = oldDetails.fragments;\n  if (delta < 0 || delta >= oldFragments.length) {\n    return;\n  }\n  addSliding(newDetails, oldFragments[delta].start);\n}\nfunction addSliding(details, start) {\n  if (start) {\n    const fragments = details.fragments;\n    for (let i2 = details.skippedSegments; i2 < fragments.length; i2++) {\n      fragments[i2].start += start;\n    }\n    if (details.fragmentHint) {\n      details.fragmentHint.start += start;\n    }\n  }\n}\nfunction computeReloadInterval(newDetails, distanceToLiveEdgeMs = Infinity) {\n  let reloadInterval = 1e3 * newDetails.targetduration;\n  if (newDetails.updated) {\n    const fragments = newDetails.fragments;\n    const liveEdgeMaxTargetDurations = 4;\n    if (fragments.length && reloadInterval * liveEdgeMaxTargetDurations > distanceToLiveEdgeMs) {\n      const lastSegmentDuration = fragments[fragments.length - 1].duration * 1e3;\n      if (lastSegmentDuration < reloadInterval) {\n        reloadInterval = lastSegmentDuration;\n      }\n    }\n  } else {\n    reloadInterval /= 2;\n  }\n  return Math.round(reloadInterval);\n}\nfunction getFragmentWithSN(level, sn, fragCurrent) {\n  if (!(level != null && level.details)) {\n    return null;\n  }\n  const levelDetails = level.details;\n  let fragment = levelDetails.fragments[sn - levelDetails.startSN];\n  if (fragment) {\n    return fragment;\n  }\n  fragment = levelDetails.fragmentHint;\n  if (fragment && fragment.sn === sn) {\n    return fragment;\n  }\n  if (sn < levelDetails.startSN && fragCurrent && fragCurrent.sn === sn) {\n    return fragCurrent;\n  }\n  return null;\n}\nfunction getPartWith(level, sn, partIndex) {\n  var _level$details;\n  if (!(level != null && level.details)) {\n    return null;\n  }\n  return findPart((_level$details = level.details) == null ? void 0 : _level$details.partList, sn, partIndex);\n}\nfunction findPart(partList, sn, partIndex) {\n  if (partList) {\n    for (let i2 = partList.length; i2--; ) {\n      const part = partList[i2];\n      if (part.index === partIndex && part.fragment.sn === sn) {\n        return part;\n      }\n    }\n  }\n  return null;\n}\nfunction reassignFragmentLevelIndexes(levels) {\n  levels.forEach((level, index) => {\n    const {\n      details\n    } = level;\n    if (details != null && details.fragments) {\n      details.fragments.forEach((fragment) => {\n        fragment.level = index;\n      });\n    }\n  });\n}\nfunction isTimeoutError(error) {\n  switch (error.details) {\n    case ErrorDetails.FRAG_LOAD_TIMEOUT:\n    case ErrorDetails.KEY_LOAD_TIMEOUT:\n    case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n    case ErrorDetails.MANIFEST_LOAD_TIMEOUT:\n      return true;\n  }\n  return false;\n}\nfunction getRetryConfig(loadPolicy, error) {\n  const isTimeout = isTimeoutError(error);\n  return loadPolicy.default[`${isTimeout ? \"timeout\" : \"error\"}Retry`];\n}\nfunction getRetryDelay(retryConfig, retryCount) {\n  const backoffFactor = retryConfig.backoff === \"linear\" ? 1 : Math.pow(2, retryCount);\n  return Math.min(backoffFactor * retryConfig.retryDelayMs, retryConfig.maxRetryDelayMs);\n}\nfunction getLoaderConfigWithoutReties(loderConfig) {\n  return _objectSpread2(_objectSpread2({}, loderConfig), {\n    errorRetry: null,\n    timeoutRetry: null\n  });\n}\nfunction shouldRetry(retryConfig, retryCount, isTimeout, loaderResponse) {\n  if (!retryConfig) {\n    return false;\n  }\n  const httpStatus = loaderResponse == null ? void 0 : loaderResponse.code;\n  const retry = retryCount < retryConfig.maxNumRetry && (retryForHttpStatus(httpStatus) || !!isTimeout);\n  return retryConfig.shouldRetry ? retryConfig.shouldRetry(retryConfig, retryCount, isTimeout, loaderResponse, retry) : retry;\n}\nfunction retryForHttpStatus(httpStatus) {\n  return httpStatus === 0 && navigator.onLine === false || !!httpStatus && (httpStatus < 400 || httpStatus > 499);\n}\nvar BinarySearch = {\n  /**\n   * Searches for an item in an array which matches a certain condition.\n   * This requires the condition to only match one item in the array,\n   * and for the array to be ordered.\n   *\n   * @param list The array to search.\n   * @param comparisonFn\n   *      Called and provided a candidate item as the first argument.\n   *      Should return:\n   *          > -1 if the item should be located at a lower index than the provided item.\n   *          > 1 if the item should be located at a higher index than the provided item.\n   *          > 0 if the item is the item you're looking for.\n   *\n   * @returns the object if found, otherwise returns null\n   */\n  search: function(list, comparisonFn) {\n    let minIndex = 0;\n    let maxIndex = list.length - 1;\n    let currentIndex = null;\n    let currentElement = null;\n    while (minIndex <= maxIndex) {\n      currentIndex = (minIndex + maxIndex) / 2 | 0;\n      currentElement = list[currentIndex];\n      const comparisonResult = comparisonFn(currentElement);\n      if (comparisonResult > 0) {\n        minIndex = currentIndex + 1;\n      } else if (comparisonResult < 0) {\n        maxIndex = currentIndex - 1;\n      } else {\n        return currentElement;\n      }\n    }\n    return null;\n  }\n};\nfunction findFragmentByPDT(fragments, PDTValue, maxFragLookUpTolerance) {\n  if (PDTValue === null || !Array.isArray(fragments) || !fragments.length || !isFiniteNumber(PDTValue)) {\n    return null;\n  }\n  const startPDT = fragments[0].programDateTime;\n  if (PDTValue < (startPDT || 0)) {\n    return null;\n  }\n  const endPDT = fragments[fragments.length - 1].endProgramDateTime;\n  if (PDTValue >= (endPDT || 0)) {\n    return null;\n  }\n  maxFragLookUpTolerance = maxFragLookUpTolerance || 0;\n  for (let seg = 0; seg < fragments.length; ++seg) {\n    const frag = fragments[seg];\n    if (pdtWithinToleranceTest(PDTValue, maxFragLookUpTolerance, frag)) {\n      return frag;\n    }\n  }\n  return null;\n}\nfunction findFragmentByPTS(fragPrevious, fragments, bufferEnd = 0, maxFragLookUpTolerance = 0, nextFragLookupTolerance = 5e-3) {\n  let fragNext = null;\n  if (fragPrevious) {\n    fragNext = fragments[fragPrevious.sn - fragments[0].sn + 1] || null;\n    const bufferEdgeError = fragPrevious.endDTS - bufferEnd;\n    if (bufferEdgeError > 0 && bufferEdgeError < 15e-7) {\n      bufferEnd += 15e-7;\n    }\n  } else if (bufferEnd === 0 && fragments[0].start === 0) {\n    fragNext = fragments[0];\n  }\n  if (fragNext && ((!fragPrevious || fragPrevious.level === fragNext.level) && fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, fragNext) === 0 || fragmentWithinFastStartSwitch(fragNext, fragPrevious, Math.min(nextFragLookupTolerance, maxFragLookUpTolerance)))) {\n    return fragNext;\n  }\n  const foundFragment = BinarySearch.search(fragments, fragmentWithinToleranceTest.bind(null, bufferEnd, maxFragLookUpTolerance));\n  if (foundFragment && (foundFragment !== fragPrevious || !fragNext)) {\n    return foundFragment;\n  }\n  return fragNext;\n}\nfunction fragmentWithinFastStartSwitch(fragNext, fragPrevious, nextFragLookupTolerance) {\n  if (fragPrevious && fragPrevious.start === 0 && fragPrevious.level < fragNext.level && (fragPrevious.endPTS || 0) > 0) {\n    const firstDuration = fragPrevious.tagList.reduce((duration, tag) => {\n      if (tag[0] === \"INF\") {\n        duration += parseFloat(tag[1]);\n      }\n      return duration;\n    }, nextFragLookupTolerance);\n    return fragNext.start <= firstDuration;\n  }\n  return false;\n}\nfunction fragmentWithinToleranceTest(bufferEnd = 0, maxFragLookUpTolerance = 0, candidate) {\n  if (candidate.start <= bufferEnd && candidate.start + candidate.duration > bufferEnd) {\n    return 0;\n  }\n  const candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0));\n  if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) {\n    return 1;\n  } else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) {\n    return -1;\n  }\n  return 0;\n}\nfunction pdtWithinToleranceTest(pdtBufferEnd, maxFragLookUpTolerance, candidate) {\n  const candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)) * 1e3;\n  const endProgramDateTime = candidate.endProgramDateTime || 0;\n  return endProgramDateTime - candidateLookupTolerance > pdtBufferEnd;\n}\nfunction findFragWithCC(fragments, cc) {\n  return BinarySearch.search(fragments, (candidate) => {\n    if (candidate.cc < cc) {\n      return 1;\n    } else if (candidate.cc > cc) {\n      return -1;\n    } else {\n      return 0;\n    }\n  });\n}\nvar NetworkErrorAction = {\n  DoNothing: 0,\n  SendEndCallback: 1,\n  SendAlternateToPenaltyBox: 2,\n  RemoveAlternatePermanently: 3,\n  InsertDiscontinuity: 4,\n  RetryRequest: 5\n};\nvar ErrorActionFlags = {\n  None: 0,\n  MoveAllAlternatesMatchingHost: 1,\n  MoveAllAlternatesMatchingHDCP: 2,\n  SwitchToSDR: 4\n};\nvar ErrorController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.playlistError = 0;\n    this.penalizedRenditions = {};\n    this.log = void 0;\n    this.warn = void 0;\n    this.error = void 0;\n    this.hls = hls;\n    this.log = logger.log.bind(logger, `[info]:`);\n    this.warn = logger.warn.bind(logger, `[warning]:`);\n    this.error = logger.error.bind(logger, `[error]:`);\n    this.registerListeners();\n  }\n  registerListeners() {\n    const hls = this.hls;\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n  unregisterListeners() {\n    const hls = this.hls;\n    if (!hls) {\n      return;\n    }\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.ERROR, this.onErrorOut, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.hls = null;\n    this.penalizedRenditions = {};\n  }\n  startLoad(startPosition) {\n  }\n  stopLoad() {\n    this.playlistError = 0;\n  }\n  getVariantLevelIndex(frag) {\n    return (frag == null ? void 0 : frag.type) === PlaylistLevelType.MAIN ? frag.level : this.hls.loadLevel;\n  }\n  onManifestLoading() {\n    this.playlistError = 0;\n    this.penalizedRenditions = {};\n  }\n  onLevelUpdated() {\n    this.playlistError = 0;\n  }\n  onError(event, data) {\n    var _data$frag, _data$level;\n    if (data.fatal) {\n      return;\n    }\n    const hls = this.hls;\n    const context = data.context;\n    switch (data.details) {\n      case ErrorDetails.FRAG_LOAD_ERROR:\n      case ErrorDetails.FRAG_LOAD_TIMEOUT:\n      case ErrorDetails.KEY_LOAD_ERROR:\n      case ErrorDetails.KEY_LOAD_TIMEOUT:\n        data.errorAction = this.getFragRetryOrSwitchAction(data);\n        return;\n      case ErrorDetails.FRAG_PARSING_ERROR:\n        if ((_data$frag = data.frag) != null && _data$frag.gap) {\n          data.errorAction = {\n            action: NetworkErrorAction.DoNothing,\n            flags: ErrorActionFlags.None\n          };\n          return;\n        }\n      // falls through\n      case ErrorDetails.FRAG_GAP:\n      case ErrorDetails.FRAG_DECRYPT_ERROR: {\n        data.errorAction = this.getFragRetryOrSwitchAction(data);\n        data.errorAction.action = NetworkErrorAction.SendAlternateToPenaltyBox;\n        return;\n      }\n      case ErrorDetails.LEVEL_EMPTY_ERROR:\n      case ErrorDetails.LEVEL_PARSING_ERROR:\n        {\n          var _data$context, _data$context$levelDe;\n          const levelIndex = data.parent === PlaylistLevelType.MAIN ? data.level : hls.loadLevel;\n          if (data.details === ErrorDetails.LEVEL_EMPTY_ERROR && !!((_data$context = data.context) != null && (_data$context$levelDe = _data$context.levelDetails) != null && _data$context$levelDe.live)) {\n            data.errorAction = this.getPlaylistRetryOrSwitchAction(data, levelIndex);\n          } else {\n            data.levelRetry = false;\n            data.errorAction = this.getLevelSwitchAction(data, levelIndex);\n          }\n        }\n        return;\n      case ErrorDetails.LEVEL_LOAD_ERROR:\n      case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n        if (typeof (context == null ? void 0 : context.level) === \"number\") {\n          data.errorAction = this.getPlaylistRetryOrSwitchAction(data, context.level);\n        }\n        return;\n      case ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n      case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n      case ErrorDetails.SUBTITLE_LOAD_ERROR:\n      case ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT:\n        if (context) {\n          const level = hls.levels[hls.loadLevel];\n          if (level && (context.type === PlaylistContextType.AUDIO_TRACK && level.hasAudioGroup(context.groupId) || context.type === PlaylistContextType.SUBTITLE_TRACK && level.hasSubtitleGroup(context.groupId))) {\n            data.errorAction = this.getPlaylistRetryOrSwitchAction(data, hls.loadLevel);\n            data.errorAction.action = NetworkErrorAction.SendAlternateToPenaltyBox;\n            data.errorAction.flags = ErrorActionFlags.MoveAllAlternatesMatchingHost;\n            return;\n          }\n        }\n        return;\n      case ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:\n        {\n          const level = hls.levels[hls.loadLevel];\n          const restrictedHdcpLevel = level == null ? void 0 : level.attrs[\"HDCP-LEVEL\"];\n          if (restrictedHdcpLevel) {\n            data.errorAction = {\n              action: NetworkErrorAction.SendAlternateToPenaltyBox,\n              flags: ErrorActionFlags.MoveAllAlternatesMatchingHDCP,\n              hdcpLevel: restrictedHdcpLevel\n            };\n          } else {\n            this.keySystemError(data);\n          }\n        }\n        return;\n      case ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n      case ErrorDetails.REMUX_ALLOC_ERROR:\n      case ErrorDetails.BUFFER_APPEND_ERROR:\n        data.errorAction = this.getLevelSwitchAction(data, (_data$level = data.level) != null ? _data$level : hls.loadLevel);\n        return;\n      case ErrorDetails.INTERNAL_EXCEPTION:\n      case ErrorDetails.BUFFER_APPENDING_ERROR:\n      case ErrorDetails.BUFFER_FULL_ERROR:\n      case ErrorDetails.LEVEL_SWITCH_ERROR:\n      case ErrorDetails.BUFFER_STALLED_ERROR:\n      case ErrorDetails.BUFFER_SEEK_OVER_HOLE:\n      case ErrorDetails.BUFFER_NUDGE_ON_STALL:\n        data.errorAction = {\n          action: NetworkErrorAction.DoNothing,\n          flags: ErrorActionFlags.None\n        };\n        return;\n    }\n    if (data.type === ErrorTypes.KEY_SYSTEM_ERROR) {\n      this.keySystemError(data);\n    }\n  }\n  keySystemError(data) {\n    const levelIndex = this.getVariantLevelIndex(data.frag);\n    data.levelRetry = false;\n    data.errorAction = this.getLevelSwitchAction(data, levelIndex);\n  }\n  getPlaylistRetryOrSwitchAction(data, levelIndex) {\n    const hls = this.hls;\n    const retryConfig = getRetryConfig(hls.config.playlistLoadPolicy, data);\n    const retryCount = this.playlistError++;\n    const retry = shouldRetry(retryConfig, retryCount, isTimeoutError(data), data.response);\n    if (retry) {\n      return {\n        action: NetworkErrorAction.RetryRequest,\n        flags: ErrorActionFlags.None,\n        retryConfig,\n        retryCount\n      };\n    }\n    const errorAction = this.getLevelSwitchAction(data, levelIndex);\n    if (retryConfig) {\n      errorAction.retryConfig = retryConfig;\n      errorAction.retryCount = retryCount;\n    }\n    return errorAction;\n  }\n  getFragRetryOrSwitchAction(data) {\n    const hls = this.hls;\n    const variantLevelIndex = this.getVariantLevelIndex(data.frag);\n    const level = hls.levels[variantLevelIndex];\n    const {\n      fragLoadPolicy,\n      keyLoadPolicy\n    } = hls.config;\n    const retryConfig = getRetryConfig(data.details.startsWith(\"key\") ? keyLoadPolicy : fragLoadPolicy, data);\n    const fragmentErrors = hls.levels.reduce((acc, level2) => acc + level2.fragmentError, 0);\n    if (level) {\n      if (data.details !== ErrorDetails.FRAG_GAP) {\n        level.fragmentError++;\n      }\n      const retry = shouldRetry(retryConfig, fragmentErrors, isTimeoutError(data), data.response);\n      if (retry) {\n        return {\n          action: NetworkErrorAction.RetryRequest,\n          flags: ErrorActionFlags.None,\n          retryConfig,\n          retryCount: fragmentErrors\n        };\n      }\n    }\n    const errorAction = this.getLevelSwitchAction(data, variantLevelIndex);\n    if (retryConfig) {\n      errorAction.retryConfig = retryConfig;\n      errorAction.retryCount = fragmentErrors;\n    }\n    return errorAction;\n  }\n  getLevelSwitchAction(data, levelIndex) {\n    const hls = this.hls;\n    if (levelIndex === null || levelIndex === void 0) {\n      levelIndex = hls.loadLevel;\n    }\n    const level = this.hls.levels[levelIndex];\n    if (level) {\n      var _data$frag2, _data$context2;\n      const errorDetails = data.details;\n      level.loadError++;\n      if (errorDetails === ErrorDetails.BUFFER_APPEND_ERROR) {\n        level.fragmentError++;\n      }\n      let nextLevel = -1;\n      const {\n        levels,\n        loadLevel,\n        minAutoLevel,\n        maxAutoLevel\n      } = hls;\n      if (!hls.autoLevelEnabled) {\n        hls.loadLevel = -1;\n      }\n      const fragErrorType = (_data$frag2 = data.frag) == null ? void 0 : _data$frag2.type;\n      const isAudioCodecError = fragErrorType === PlaylistLevelType.AUDIO && errorDetails === ErrorDetails.FRAG_PARSING_ERROR || data.sourceBufferName === \"audio\" && (errorDetails === ErrorDetails.BUFFER_ADD_CODEC_ERROR || errorDetails === ErrorDetails.BUFFER_APPEND_ERROR);\n      const findAudioCodecAlternate = isAudioCodecError && levels.some(({\n        audioCodec\n      }) => level.audioCodec !== audioCodec);\n      const isVideoCodecError = data.sourceBufferName === \"video\" && (errorDetails === ErrorDetails.BUFFER_ADD_CODEC_ERROR || errorDetails === ErrorDetails.BUFFER_APPEND_ERROR);\n      const findVideoCodecAlternate = isVideoCodecError && levels.some(({\n        codecSet,\n        audioCodec\n      }) => level.codecSet !== codecSet && level.audioCodec === audioCodec);\n      const {\n        type: playlistErrorType,\n        groupId: playlistErrorGroupId\n      } = (_data$context2 = data.context) != null ? _data$context2 : {};\n      for (let i2 = levels.length; i2--; ) {\n        const candidate = (i2 + loadLevel) % levels.length;\n        if (candidate !== loadLevel && candidate >= minAutoLevel && candidate <= maxAutoLevel && levels[candidate].loadError === 0) {\n          var _level$audioGroups, _level$subtitleGroups;\n          const levelCandidate = levels[candidate];\n          if (errorDetails === ErrorDetails.FRAG_GAP && fragErrorType === PlaylistLevelType.MAIN && data.frag) {\n            const levelDetails = levels[candidate].details;\n            if (levelDetails) {\n              const fragCandidate = findFragmentByPTS(data.frag, levelDetails.fragments, data.frag.start);\n              if (fragCandidate != null && fragCandidate.gap) {\n                continue;\n              }\n            }\n          } else if (playlistErrorType === PlaylistContextType.AUDIO_TRACK && levelCandidate.hasAudioGroup(playlistErrorGroupId) || playlistErrorType === PlaylistContextType.SUBTITLE_TRACK && levelCandidate.hasSubtitleGroup(playlistErrorGroupId)) {\n            continue;\n          } else if (fragErrorType === PlaylistLevelType.AUDIO && (_level$audioGroups = level.audioGroups) != null && _level$audioGroups.some((groupId) => levelCandidate.hasAudioGroup(groupId)) || fragErrorType === PlaylistLevelType.SUBTITLE && (_level$subtitleGroups = level.subtitleGroups) != null && _level$subtitleGroups.some((groupId) => levelCandidate.hasSubtitleGroup(groupId)) || findAudioCodecAlternate && level.audioCodec === levelCandidate.audioCodec || !findAudioCodecAlternate && level.audioCodec !== levelCandidate.audioCodec || findVideoCodecAlternate && level.codecSet === levelCandidate.codecSet) {\n            continue;\n          }\n          nextLevel = candidate;\n          break;\n        }\n      }\n      if (nextLevel > -1 && hls.loadLevel !== nextLevel) {\n        data.levelRetry = true;\n        this.playlistError = 0;\n        return {\n          action: NetworkErrorAction.SendAlternateToPenaltyBox,\n          flags: ErrorActionFlags.None,\n          nextAutoLevel: nextLevel\n        };\n      }\n    }\n    return {\n      action: NetworkErrorAction.SendAlternateToPenaltyBox,\n      flags: ErrorActionFlags.MoveAllAlternatesMatchingHost\n    };\n  }\n  onErrorOut(event, data) {\n    var _data$errorAction;\n    switch ((_data$errorAction = data.errorAction) == null ? void 0 : _data$errorAction.action) {\n      case NetworkErrorAction.DoNothing:\n        break;\n      case NetworkErrorAction.SendAlternateToPenaltyBox:\n        this.sendAlternateToPenaltyBox(data);\n        if (!data.errorAction.resolved && data.details !== ErrorDetails.FRAG_GAP) {\n          data.fatal = true;\n        } else if (/MediaSource readyState: ended/.test(data.error.message)) {\n          this.warn(`MediaSource ended after \"${data.sourceBufferName}\" sourceBuffer append error. Attempting to recover from media error.`);\n          this.hls.recoverMediaError();\n        }\n        break;\n      case NetworkErrorAction.RetryRequest:\n        break;\n    }\n    if (data.fatal) {\n      this.hls.stopLoad();\n      return;\n    }\n  }\n  sendAlternateToPenaltyBox(data) {\n    const hls = this.hls;\n    const errorAction = data.errorAction;\n    if (!errorAction) {\n      return;\n    }\n    const {\n      flags,\n      hdcpLevel,\n      nextAutoLevel\n    } = errorAction;\n    switch (flags) {\n      case ErrorActionFlags.None:\n        this.switchLevel(data, nextAutoLevel);\n        break;\n      case ErrorActionFlags.MoveAllAlternatesMatchingHDCP:\n        if (hdcpLevel) {\n          hls.maxHdcpLevel = HdcpLevels[HdcpLevels.indexOf(hdcpLevel) - 1];\n          errorAction.resolved = true;\n        }\n        this.warn(`Restricting playback to HDCP-LEVEL of \"${hls.maxHdcpLevel}\" or lower`);\n        break;\n    }\n    if (!errorAction.resolved) {\n      this.switchLevel(data, nextAutoLevel);\n    }\n  }\n  switchLevel(data, levelIndex) {\n    if (levelIndex !== void 0 && data.errorAction) {\n      this.warn(`switching to level ${levelIndex} after ${data.details}`);\n      this.hls.nextAutoLevel = levelIndex;\n      data.errorAction.resolved = true;\n      this.hls.nextLoadLevel = this.hls.nextAutoLevel;\n    }\n  }\n};\nvar BasePlaylistController = class {\n  constructor(hls, logPrefix) {\n    this.hls = void 0;\n    this.timer = -1;\n    this.requestScheduled = -1;\n    this.canLoad = false;\n    this.log = void 0;\n    this.warn = void 0;\n    this.log = logger.log.bind(logger, `${logPrefix}:`);\n    this.warn = logger.warn.bind(logger, `${logPrefix}:`);\n    this.hls = hls;\n  }\n  destroy() {\n    this.clearTimer();\n    this.hls = this.log = this.warn = null;\n  }\n  clearTimer() {\n    if (this.timer !== -1) {\n      self.clearTimeout(this.timer);\n      this.timer = -1;\n    }\n  }\n  startLoad() {\n    this.canLoad = true;\n    this.requestScheduled = -1;\n    this.loadPlaylist();\n  }\n  stopLoad() {\n    this.canLoad = false;\n    this.clearTimer();\n  }\n  switchParams(playlistUri, previous, current) {\n    const renditionReports = previous == null ? void 0 : previous.renditionReports;\n    if (renditionReports) {\n      let foundIndex = -1;\n      for (let i2 = 0; i2 < renditionReports.length; i2++) {\n        const attr = renditionReports[i2];\n        let uri;\n        try {\n          uri = new self.URL(attr.URI, previous.url).href;\n        } catch (error) {\n          logger.warn(`Could not construct new URL for Rendition Report: ${error}`);\n          uri = attr.URI || \"\";\n        }\n        if (uri === playlistUri) {\n          foundIndex = i2;\n          break;\n        } else if (uri === playlistUri.substring(0, uri.length)) {\n          foundIndex = i2;\n        }\n      }\n      if (foundIndex !== -1) {\n        const attr = renditionReports[foundIndex];\n        const msn = parseInt(attr[\"LAST-MSN\"]) || (previous == null ? void 0 : previous.lastPartSn);\n        let part = parseInt(attr[\"LAST-PART\"]) || (previous == null ? void 0 : previous.lastPartIndex);\n        if (this.hls.config.lowLatencyMode) {\n          const currentGoal = Math.min(previous.age - previous.partTarget, previous.targetduration);\n          if (part >= 0 && currentGoal > previous.partTarget) {\n            part += 1;\n          }\n        }\n        const skip = current && getSkipValue(current);\n        return new HlsUrlParameters(msn, part >= 0 ? part : void 0, skip);\n      }\n    }\n  }\n  loadPlaylist(hlsUrlParameters) {\n    if (this.requestScheduled === -1) {\n      this.requestScheduled = self.performance.now();\n    }\n  }\n  shouldLoadPlaylist(playlist) {\n    return this.canLoad && !!playlist && !!playlist.url && (!playlist.details || playlist.details.live);\n  }\n  shouldReloadPlaylist(playlist) {\n    return this.timer === -1 && this.requestScheduled === -1 && this.shouldLoadPlaylist(playlist);\n  }\n  playlistLoaded(index, data, previousDetails) {\n    const {\n      details,\n      stats\n    } = data;\n    const now2 = self.performance.now();\n    const elapsed = stats.loading.first ? Math.max(0, now2 - stats.loading.first) : 0;\n    details.advancedDateTime = Date.now() - elapsed;\n    if (details.live || previousDetails != null && previousDetails.live) {\n      details.reloaded(previousDetails);\n      if (previousDetails) {\n        this.log(`live playlist ${index} ${details.advanced ? \"REFRESHED \" + details.lastPartSn + \"-\" + details.lastPartIndex : details.updated ? \"UPDATED\" : \"MISSED\"}`);\n      }\n      if (previousDetails && details.fragments.length > 0) {\n        mergeDetails(previousDetails, details);\n      }\n      if (!this.canLoad || !details.live) {\n        return;\n      }\n      let deliveryDirectives;\n      let msn = void 0;\n      let part = void 0;\n      if (details.canBlockReload && details.endSN && details.advanced) {\n        const lowLatencyMode = this.hls.config.lowLatencyMode;\n        const lastPartSn = details.lastPartSn;\n        const endSn = details.endSN;\n        const lastPartIndex = details.lastPartIndex;\n        const hasParts = lastPartIndex !== -1;\n        const lastPart = lastPartSn === endSn;\n        const nextSnStartIndex = lowLatencyMode ? 0 : lastPartIndex;\n        if (hasParts) {\n          msn = lastPart ? endSn + 1 : lastPartSn;\n          part = lastPart ? nextSnStartIndex : lastPartIndex + 1;\n        } else {\n          msn = endSn + 1;\n        }\n        const lastAdvanced = details.age;\n        const cdnAge = lastAdvanced + details.ageHeader;\n        let currentGoal = Math.min(cdnAge - details.partTarget, details.targetduration * 1.5);\n        if (currentGoal > 0) {\n          if (previousDetails && currentGoal > previousDetails.tuneInGoal) {\n            this.warn(`CDN Tune-in goal increased from: ${previousDetails.tuneInGoal} to: ${currentGoal} with playlist age: ${details.age}`);\n            currentGoal = 0;\n          } else {\n            const segments = Math.floor(currentGoal / details.targetduration);\n            msn += segments;\n            if (part !== void 0) {\n              const parts = Math.round(currentGoal % details.targetduration / details.partTarget);\n              part += parts;\n            }\n            this.log(`CDN Tune-in age: ${details.ageHeader}s last advanced ${lastAdvanced.toFixed(2)}s goal: ${currentGoal} skip sn ${segments} to part ${part}`);\n          }\n          details.tuneInGoal = currentGoal;\n        }\n        deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n        if (lowLatencyMode || !lastPart) {\n          this.loadPlaylist(deliveryDirectives);\n          return;\n        }\n      } else if (details.canBlockReload || details.canSkipUntil) {\n        deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n      }\n      const bufferInfo = this.hls.mainForwardBufferInfo;\n      const position = bufferInfo ? bufferInfo.end - bufferInfo.len : 0;\n      const distanceToLiveEdgeMs = (details.edge - position) * 1e3;\n      const reloadInterval = computeReloadInterval(details, distanceToLiveEdgeMs);\n      if (details.updated && now2 > this.requestScheduled + reloadInterval) {\n        this.requestScheduled = stats.loading.start;\n      }\n      if (msn !== void 0 && details.canBlockReload) {\n        this.requestScheduled = stats.loading.first + reloadInterval - (details.partTarget * 1e3 || 1e3);\n      } else if (this.requestScheduled === -1 || this.requestScheduled + reloadInterval < now2) {\n        this.requestScheduled = now2;\n      } else if (this.requestScheduled - now2 <= 0) {\n        this.requestScheduled += reloadInterval;\n      }\n      let estimatedTimeUntilUpdate = this.requestScheduled - now2;\n      estimatedTimeUntilUpdate = Math.max(0, estimatedTimeUntilUpdate);\n      this.log(`reload live playlist ${index} in ${Math.round(estimatedTimeUntilUpdate)} ms`);\n      this.timer = self.setTimeout(() => this.loadPlaylist(deliveryDirectives), estimatedTimeUntilUpdate);\n    } else {\n      this.clearTimer();\n    }\n  }\n  getDeliveryDirectives(details, previousDeliveryDirectives, msn, part) {\n    let skip = getSkipValue(details);\n    if (previousDeliveryDirectives != null && previousDeliveryDirectives.skip && details.deltaUpdateFailed) {\n      msn = previousDeliveryDirectives.msn;\n      part = previousDeliveryDirectives.part;\n      skip = HlsSkip.No;\n    }\n    return new HlsUrlParameters(msn, part, skip);\n  }\n  checkRetry(errorEvent) {\n    const errorDetails = errorEvent.details;\n    const isTimeout = isTimeoutError(errorEvent);\n    const errorAction = errorEvent.errorAction;\n    const {\n      action,\n      retryCount = 0,\n      retryConfig\n    } = errorAction || {};\n    const retry = !!errorAction && !!retryConfig && (action === NetworkErrorAction.RetryRequest || !errorAction.resolved && action === NetworkErrorAction.SendAlternateToPenaltyBox);\n    if (retry) {\n      var _errorEvent$context;\n      this.requestScheduled = -1;\n      if (retryCount >= retryConfig.maxNumRetry) {\n        return false;\n      }\n      if (isTimeout && (_errorEvent$context = errorEvent.context) != null && _errorEvent$context.deliveryDirectives) {\n        this.warn(`Retrying playlist loading ${retryCount + 1}/${retryConfig.maxNumRetry} after \"${errorDetails}\" without delivery-directives`);\n        this.loadPlaylist();\n      } else {\n        const delay2 = getRetryDelay(retryConfig, retryCount);\n        this.timer = self.setTimeout(() => this.loadPlaylist(), delay2);\n        this.warn(`Retrying playlist loading ${retryCount + 1}/${retryConfig.maxNumRetry} after \"${errorDetails}\" in ${delay2}ms`);\n      }\n      errorEvent.levelRetry = true;\n      errorAction.resolved = true;\n    }\n    return retry;\n  }\n};\nvar EWMA = class {\n  //  About half of the estimated value will be from the last |halfLife| samples by weight.\n  constructor(halfLife, estimate = 0, weight = 0) {\n    this.halfLife = void 0;\n    this.alpha_ = void 0;\n    this.estimate_ = void 0;\n    this.totalWeight_ = void 0;\n    this.halfLife = halfLife;\n    this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0;\n    this.estimate_ = estimate;\n    this.totalWeight_ = weight;\n  }\n  sample(weight, value) {\n    const adjAlpha = Math.pow(this.alpha_, weight);\n    this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_;\n    this.totalWeight_ += weight;\n  }\n  getTotalWeight() {\n    return this.totalWeight_;\n  }\n  getEstimate() {\n    if (this.alpha_) {\n      const zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_);\n      if (zeroFactor) {\n        return this.estimate_ / zeroFactor;\n      }\n    }\n    return this.estimate_;\n  }\n};\nvar EwmaBandWidthEstimator = class {\n  constructor(slow, fast, defaultEstimate, defaultTTFB = 100) {\n    this.defaultEstimate_ = void 0;\n    this.minWeight_ = void 0;\n    this.minDelayMs_ = void 0;\n    this.slow_ = void 0;\n    this.fast_ = void 0;\n    this.defaultTTFB_ = void 0;\n    this.ttfb_ = void 0;\n    this.defaultEstimate_ = defaultEstimate;\n    this.minWeight_ = 1e-3;\n    this.minDelayMs_ = 50;\n    this.slow_ = new EWMA(slow);\n    this.fast_ = new EWMA(fast);\n    this.defaultTTFB_ = defaultTTFB;\n    this.ttfb_ = new EWMA(slow);\n  }\n  update(slow, fast) {\n    const {\n      slow_,\n      fast_,\n      ttfb_\n    } = this;\n    if (slow_.halfLife !== slow) {\n      this.slow_ = new EWMA(slow, slow_.getEstimate(), slow_.getTotalWeight());\n    }\n    if (fast_.halfLife !== fast) {\n      this.fast_ = new EWMA(fast, fast_.getEstimate(), fast_.getTotalWeight());\n    }\n    if (ttfb_.halfLife !== slow) {\n      this.ttfb_ = new EWMA(slow, ttfb_.getEstimate(), ttfb_.getTotalWeight());\n    }\n  }\n  sample(durationMs, numBytes) {\n    durationMs = Math.max(durationMs, this.minDelayMs_);\n    const numBits = 8 * numBytes;\n    const durationS = durationMs / 1e3;\n    const bandwidthInBps = numBits / durationS;\n    this.fast_.sample(durationS, bandwidthInBps);\n    this.slow_.sample(durationS, bandwidthInBps);\n  }\n  sampleTTFB(ttfb) {\n    const seconds = ttfb / 1e3;\n    const weight = Math.sqrt(2) * Math.exp(-Math.pow(seconds, 2) / 2);\n    this.ttfb_.sample(weight, Math.max(ttfb, 5));\n  }\n  canEstimate() {\n    return this.fast_.getTotalWeight() >= this.minWeight_;\n  }\n  getEstimate() {\n    if (this.canEstimate()) {\n      return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate());\n    } else {\n      return this.defaultEstimate_;\n    }\n  }\n  getEstimateTTFB() {\n    if (this.ttfb_.getTotalWeight() >= this.minWeight_) {\n      return this.ttfb_.getEstimate();\n    } else {\n      return this.defaultTTFB_;\n    }\n  }\n  destroy() {\n  }\n};\nvar SUPPORTED_INFO_DEFAULT = {\n  supported: true,\n  configurations: [],\n  decodingInfoResults: [{\n    supported: true,\n    powerEfficient: true,\n    smooth: true\n  }]\n};\nvar SUPPORTED_INFO_CACHE = {};\nfunction requiresMediaCapabilitiesDecodingInfo(level, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference) {\n  const audioGroups = level.audioCodec ? level.audioGroups : null;\n  const audioCodecPreference = audioPreference == null ? void 0 : audioPreference.audioCodec;\n  const channelsPreference = audioPreference == null ? void 0 : audioPreference.channels;\n  const maxChannels = channelsPreference ? parseInt(channelsPreference) : audioCodecPreference ? Infinity : 2;\n  let audioChannels = null;\n  if (audioGroups != null && audioGroups.length) {\n    try {\n      if (audioGroups.length === 1 && audioGroups[0]) {\n        audioChannels = audioTracksByGroup.groups[audioGroups[0]].channels;\n      } else {\n        audioChannels = audioGroups.reduce((acc, groupId) => {\n          if (groupId) {\n            const audioTrackGroup = audioTracksByGroup.groups[groupId];\n            if (!audioTrackGroup) {\n              throw new Error(`Audio track group ${groupId} not found`);\n            }\n            Object.keys(audioTrackGroup.channels).forEach((key) => {\n              acc[key] = (acc[key] || 0) + audioTrackGroup.channels[key];\n            });\n          }\n          return acc;\n        }, {\n          2: 0\n        });\n      }\n    } catch (error) {\n      return true;\n    }\n  }\n  return level.videoCodec !== void 0 && (level.width > 1920 && level.height > 1088 || level.height > 1920 && level.width > 1088 || level.frameRate > Math.max(currentFrameRate, 30) || level.videoRange !== \"SDR\" && level.videoRange !== currentVideoRange || level.bitrate > Math.max(currentBw, 8e6)) || !!audioChannels && isFiniteNumber(maxChannels) && Object.keys(audioChannels).some((channels) => parseInt(channels) > maxChannels);\n}\nfunction getMediaDecodingInfoPromise(level, audioTracksByGroup, mediaCapabilities) {\n  const videoCodecs = level.videoCodec;\n  const audioCodecs = level.audioCodec;\n  if (!videoCodecs || !audioCodecs || !mediaCapabilities) {\n    return Promise.resolve(SUPPORTED_INFO_DEFAULT);\n  }\n  const baseVideoConfiguration = {\n    width: level.width,\n    height: level.height,\n    bitrate: Math.ceil(Math.max(level.bitrate * 0.9, level.averageBitrate)),\n    // Assume a framerate of 30fps since MediaCapabilities will not accept Level default of 0.\n    framerate: level.frameRate || 30\n  };\n  const videoRange = level.videoRange;\n  if (videoRange !== \"SDR\") {\n    baseVideoConfiguration.transferFunction = videoRange.toLowerCase();\n  }\n  const configurations = videoCodecs.split(\",\").map((videoCodec) => ({\n    type: \"media-source\",\n    video: _objectSpread2(_objectSpread2({}, baseVideoConfiguration), {}, {\n      contentType: mimeTypeForCodec(videoCodec, \"video\")\n    })\n  }));\n  if (audioCodecs && level.audioGroups) {\n    level.audioGroups.forEach((audioGroupId) => {\n      var _audioTracksByGroup$g;\n      if (!audioGroupId) {\n        return;\n      }\n      (_audioTracksByGroup$g = audioTracksByGroup.groups[audioGroupId]) == null ? void 0 : _audioTracksByGroup$g.tracks.forEach((audioTrack) => {\n        if (audioTrack.groupId === audioGroupId) {\n          const channels = audioTrack.channels || \"\";\n          const channelsNumber = parseFloat(channels);\n          if (isFiniteNumber(channelsNumber) && channelsNumber > 2) {\n            configurations.push.apply(configurations, audioCodecs.split(\",\").map((audioCodec) => ({\n              type: \"media-source\",\n              audio: {\n                contentType: mimeTypeForCodec(audioCodec, \"audio\"),\n                channels: \"\" + channelsNumber\n                // spatialRendering:\n                //   audioCodec === 'ec-3' && channels.indexOf('JOC'),\n              }\n            })));\n          }\n        }\n      });\n    });\n  }\n  return Promise.all(configurations.map((configuration) => {\n    const decodingInfoKey = getMediaDecodingInfoKey(configuration);\n    return SUPPORTED_INFO_CACHE[decodingInfoKey] || (SUPPORTED_INFO_CACHE[decodingInfoKey] = mediaCapabilities.decodingInfo(configuration));\n  })).then((decodingInfoResults) => ({\n    supported: !decodingInfoResults.some((info) => !info.supported),\n    configurations,\n    decodingInfoResults\n  })).catch((error) => ({\n    supported: false,\n    configurations,\n    decodingInfoResults: [],\n    error\n  }));\n}\nfunction getMediaDecodingInfoKey(config) {\n  const {\n    audio,\n    video\n  } = config;\n  const mediaConfig = video || audio;\n  if (mediaConfig) {\n    const codec = mediaConfig.contentType.split('\"')[1];\n    if (video) {\n      return `r${video.height}x${video.width}f${Math.ceil(video.framerate)}${video.transferFunction || \"sd\"}_${codec}_${Math.ceil(video.bitrate / 1e5)}`;\n    }\n    if (audio) {\n      return `c${audio.channels}${audio.spatialRendering ? \"s\" : \"n\"}_${codec}`;\n    }\n  }\n  return \"\";\n}\nfunction isHdrSupported() {\n  if (typeof matchMedia === \"function\") {\n    const mediaQueryList = matchMedia(\"(dynamic-range: high)\");\n    const badQuery = matchMedia(\"bad query\");\n    if (mediaQueryList.media !== badQuery.media) {\n      return mediaQueryList.matches === true;\n    }\n  }\n  return false;\n}\nfunction getVideoSelectionOptions(currentVideoRange, videoPreference) {\n  let preferHDR = false;\n  let allowedVideoRanges = [];\n  if (currentVideoRange) {\n    preferHDR = currentVideoRange !== \"SDR\";\n    allowedVideoRanges = [currentVideoRange];\n  }\n  if (videoPreference) {\n    allowedVideoRanges = videoPreference.allowedVideoRanges || VideoRangeValues.slice(0);\n    preferHDR = videoPreference.preferHDR !== void 0 ? videoPreference.preferHDR : isHdrSupported();\n    if (preferHDR) {\n      allowedVideoRanges = allowedVideoRanges.filter((range) => range !== \"SDR\");\n    } else {\n      allowedVideoRanges = [\"SDR\"];\n    }\n  }\n  return {\n    preferHDR,\n    allowedVideoRanges\n  };\n}\nfunction getStartCodecTier(codecTiers, currentVideoRange, currentBw, audioPreference, videoPreference) {\n  const codecSets = Object.keys(codecTiers);\n  const channelsPreference = audioPreference == null ? void 0 : audioPreference.channels;\n  const audioCodecPreference = audioPreference == null ? void 0 : audioPreference.audioCodec;\n  const preferStereo = channelsPreference && parseInt(channelsPreference) === 2;\n  let hasStereo = true;\n  let hasCurrentVideoRange = false;\n  let minHeight = Infinity;\n  let minFramerate = Infinity;\n  let minBitrate = Infinity;\n  let selectedScore = 0;\n  let videoRanges = [];\n  const {\n    preferHDR,\n    allowedVideoRanges\n  } = getVideoSelectionOptions(currentVideoRange, videoPreference);\n  for (let i2 = codecSets.length; i2--; ) {\n    const tier = codecTiers[codecSets[i2]];\n    hasStereo = tier.channels[2] > 0;\n    minHeight = Math.min(minHeight, tier.minHeight);\n    minFramerate = Math.min(minFramerate, tier.minFramerate);\n    minBitrate = Math.min(minBitrate, tier.minBitrate);\n    const matchingVideoRanges = allowedVideoRanges.filter((range) => tier.videoRanges[range] > 0);\n    if (matchingVideoRanges.length > 0) {\n      hasCurrentVideoRange = true;\n      videoRanges = matchingVideoRanges;\n    }\n  }\n  minHeight = isFiniteNumber(minHeight) ? minHeight : 0;\n  minFramerate = isFiniteNumber(minFramerate) ? minFramerate : 0;\n  const maxHeight = Math.max(1080, minHeight);\n  const maxFramerate = Math.max(30, minFramerate);\n  minBitrate = isFiniteNumber(minBitrate) ? minBitrate : currentBw;\n  currentBw = Math.max(minBitrate, currentBw);\n  if (!hasCurrentVideoRange) {\n    currentVideoRange = void 0;\n    videoRanges = [];\n  }\n  const codecSet = codecSets.reduce((selected, candidate) => {\n    const candidateTier = codecTiers[candidate];\n    if (candidate === selected) {\n      return selected;\n    }\n    if (candidateTier.minBitrate > currentBw) {\n      logStartCodecCandidateIgnored(candidate, `min bitrate of ${candidateTier.minBitrate} > current estimate of ${currentBw}`);\n      return selected;\n    }\n    if (!candidateTier.hasDefaultAudio) {\n      logStartCodecCandidateIgnored(candidate, `no renditions with default or auto-select sound found`);\n      return selected;\n    }\n    if (audioCodecPreference && candidate.indexOf(audioCodecPreference.substring(0, 4)) % 5 !== 0) {\n      logStartCodecCandidateIgnored(candidate, `audio codec preference \"${audioCodecPreference}\" not found`);\n      return selected;\n    }\n    if (channelsPreference && !preferStereo) {\n      if (!candidateTier.channels[channelsPreference]) {\n        logStartCodecCandidateIgnored(candidate, `no renditions with ${channelsPreference} channel sound found (channels options: ${Object.keys(candidateTier.channels)})`);\n        return selected;\n      }\n    } else if ((!audioCodecPreference || preferStereo) && hasStereo && candidateTier.channels[\"2\"] === 0) {\n      logStartCodecCandidateIgnored(candidate, `no renditions with stereo sound found`);\n      return selected;\n    }\n    if (candidateTier.minHeight > maxHeight) {\n      logStartCodecCandidateIgnored(candidate, `min resolution of ${candidateTier.minHeight} > maximum of ${maxHeight}`);\n      return selected;\n    }\n    if (candidateTier.minFramerate > maxFramerate) {\n      logStartCodecCandidateIgnored(candidate, `min framerate of ${candidateTier.minFramerate} > maximum of ${maxFramerate}`);\n      return selected;\n    }\n    if (!videoRanges.some((range) => candidateTier.videoRanges[range] > 0)) {\n      logStartCodecCandidateIgnored(candidate, `no variants with VIDEO-RANGE of ${JSON.stringify(videoRanges)} found`);\n      return selected;\n    }\n    if (candidateTier.maxScore < selectedScore) {\n      logStartCodecCandidateIgnored(candidate, `max score of ${candidateTier.maxScore} < selected max of ${selectedScore}`);\n      return selected;\n    }\n    if (selected && (codecsSetSelectionPreferenceValue(candidate) >= codecsSetSelectionPreferenceValue(selected) || candidateTier.fragmentError > codecTiers[selected].fragmentError)) {\n      return selected;\n    }\n    selectedScore = candidateTier.maxScore;\n    return candidate;\n  }, void 0);\n  return {\n    codecSet,\n    videoRanges,\n    preferHDR,\n    minFramerate,\n    minBitrate\n  };\n}\nfunction logStartCodecCandidateIgnored(codeSet, reason) {\n  logger.log(`[abr] start candidates with \"${codeSet}\" ignored because ${reason}`);\n}\nfunction getAudioTracksByGroup(allAudioTracks) {\n  return allAudioTracks.reduce((audioTracksByGroup, track) => {\n    let trackGroup = audioTracksByGroup.groups[track.groupId];\n    if (!trackGroup) {\n      trackGroup = audioTracksByGroup.groups[track.groupId] = {\n        tracks: [],\n        channels: {\n          2: 0\n        },\n        hasDefault: false,\n        hasAutoSelect: false\n      };\n    }\n    trackGroup.tracks.push(track);\n    const channelsKey = track.channels || \"2\";\n    trackGroup.channels[channelsKey] = (trackGroup.channels[channelsKey] || 0) + 1;\n    trackGroup.hasDefault = trackGroup.hasDefault || track.default;\n    trackGroup.hasAutoSelect = trackGroup.hasAutoSelect || track.autoselect;\n    if (trackGroup.hasDefault) {\n      audioTracksByGroup.hasDefaultAudio = true;\n    }\n    if (trackGroup.hasAutoSelect) {\n      audioTracksByGroup.hasAutoSelectAudio = true;\n    }\n    return audioTracksByGroup;\n  }, {\n    hasDefaultAudio: false,\n    hasAutoSelectAudio: false,\n    groups: {}\n  });\n}\nfunction getCodecTiers(levels, audioTracksByGroup, minAutoLevel, maxAutoLevel) {\n  return levels.slice(minAutoLevel, maxAutoLevel + 1).reduce((tiers, level) => {\n    if (!level.codecSet) {\n      return tiers;\n    }\n    const audioGroups = level.audioGroups;\n    let tier = tiers[level.codecSet];\n    if (!tier) {\n      tiers[level.codecSet] = tier = {\n        minBitrate: Infinity,\n        minHeight: Infinity,\n        minFramerate: Infinity,\n        maxScore: 0,\n        videoRanges: {\n          SDR: 0\n        },\n        channels: {\n          \"2\": 0\n        },\n        hasDefaultAudio: !audioGroups,\n        fragmentError: 0\n      };\n    }\n    tier.minBitrate = Math.min(tier.minBitrate, level.bitrate);\n    const lesserWidthOrHeight = Math.min(level.height, level.width);\n    tier.minHeight = Math.min(tier.minHeight, lesserWidthOrHeight);\n    tier.minFramerate = Math.min(tier.minFramerate, level.frameRate);\n    tier.maxScore = Math.max(tier.maxScore, level.score);\n    tier.fragmentError += level.fragmentError;\n    tier.videoRanges[level.videoRange] = (tier.videoRanges[level.videoRange] || 0) + 1;\n    if (audioGroups) {\n      audioGroups.forEach((audioGroupId) => {\n        if (!audioGroupId) {\n          return;\n        }\n        const audioGroup = audioTracksByGroup.groups[audioGroupId];\n        if (!audioGroup) {\n          return;\n        }\n        tier.hasDefaultAudio = tier.hasDefaultAudio || audioTracksByGroup.hasDefaultAudio ? audioGroup.hasDefault : audioGroup.hasAutoSelect || !audioTracksByGroup.hasDefaultAudio && !audioTracksByGroup.hasAutoSelectAudio;\n        Object.keys(audioGroup.channels).forEach((channels) => {\n          tier.channels[channels] = (tier.channels[channels] || 0) + audioGroup.channels[channels];\n        });\n      });\n    }\n    return tiers;\n  }, {});\n}\nfunction findMatchingOption(option, tracks, matchPredicate) {\n  if (\"attrs\" in option) {\n    const index = tracks.indexOf(option);\n    if (index !== -1) {\n      return index;\n    }\n  }\n  for (let i2 = 0; i2 < tracks.length; i2++) {\n    const track = tracks[i2];\n    if (matchesOption(option, track, matchPredicate)) {\n      return i2;\n    }\n  }\n  return -1;\n}\nfunction matchesOption(option, track, matchPredicate) {\n  const {\n    groupId,\n    name,\n    lang,\n    assocLang,\n    default: isDefault\n  } = option;\n  const forced = option.forced;\n  return (groupId === void 0 || track.groupId === groupId) && (name === void 0 || track.name === name) && (lang === void 0 || track.lang === lang) && (lang === void 0 || track.assocLang === assocLang) && (isDefault === void 0 || track.default === isDefault) && (forced === void 0 || track.forced === forced) && (!(\"characteristics\" in option) || characteristicsMatch(option.characteristics || \"\", track.characteristics)) && (matchPredicate === void 0 || matchPredicate(option, track));\n}\nfunction characteristicsMatch(characteristicsA, characteristicsB = \"\") {\n  const arrA = characteristicsA.split(\",\");\n  const arrB = characteristicsB.split(\",\");\n  return arrA.length === arrB.length && !arrA.some((el) => arrB.indexOf(el) === -1);\n}\nfunction audioMatchPredicate(option, track) {\n  const {\n    audioCodec,\n    channels\n  } = option;\n  return (audioCodec === void 0 || (track.audioCodec || \"\").substring(0, 4) === audioCodec.substring(0, 4)) && (channels === void 0 || channels === (track.channels || \"2\"));\n}\nfunction findClosestLevelWithAudioGroup(option, levels, allAudioTracks, searchIndex, matchPredicate) {\n  const currentLevel = levels[searchIndex];\n  const variants = levels.reduce((variantMap, level, index) => {\n    const uri = level.uri;\n    const renditions2 = variantMap[uri] || (variantMap[uri] = []);\n    renditions2.push(index);\n    return variantMap;\n  }, {});\n  const renditions = variants[currentLevel.uri];\n  if (renditions.length > 1) {\n    searchIndex = Math.max.apply(Math, renditions);\n  }\n  const currentVideoRange = currentLevel.videoRange;\n  const currentFrameRate = currentLevel.frameRate;\n  const currentVideoCodec = currentLevel.codecSet.substring(0, 4);\n  const matchingVideo = searchDownAndUpList(levels, searchIndex, (level) => {\n    if (level.videoRange !== currentVideoRange || level.frameRate !== currentFrameRate || level.codecSet.substring(0, 4) !== currentVideoCodec) {\n      return false;\n    }\n    const audioGroups = level.audioGroups;\n    const tracks = allAudioTracks.filter((track) => !audioGroups || audioGroups.indexOf(track.groupId) !== -1);\n    return findMatchingOption(option, tracks, matchPredicate) > -1;\n  });\n  if (matchingVideo > -1) {\n    return matchingVideo;\n  }\n  return searchDownAndUpList(levels, searchIndex, (level) => {\n    const audioGroups = level.audioGroups;\n    const tracks = allAudioTracks.filter((track) => !audioGroups || audioGroups.indexOf(track.groupId) !== -1);\n    return findMatchingOption(option, tracks, matchPredicate) > -1;\n  });\n}\nfunction searchDownAndUpList(arr, searchIndex, predicate) {\n  for (let i2 = searchIndex; i2 > -1; i2--) {\n    if (predicate(arr[i2])) {\n      return i2;\n    }\n  }\n  for (let i2 = searchIndex + 1; i2 < arr.length; i2++) {\n    if (predicate(arr[i2])) {\n      return i2;\n    }\n  }\n  return -1;\n}\nvar AbrController = class {\n  constructor(_hls) {\n    this.hls = void 0;\n    this.lastLevelLoadSec = 0;\n    this.lastLoadedFragLevel = -1;\n    this.firstSelection = -1;\n    this._nextAutoLevel = -1;\n    this.nextAutoLevelKey = \"\";\n    this.audioTracksByGroup = null;\n    this.codecTiers = null;\n    this.timer = -1;\n    this.fragCurrent = null;\n    this.partCurrent = null;\n    this.bitrateTestDelay = 0;\n    this.bwEstimator = void 0;\n    this._abandonRulesCheck = () => {\n      const {\n        fragCurrent: frag,\n        partCurrent: part,\n        hls\n      } = this;\n      const {\n        autoLevelEnabled,\n        media\n      } = hls;\n      if (!frag || !media) {\n        return;\n      }\n      const now2 = performance.now();\n      const stats = part ? part.stats : frag.stats;\n      const duration = part ? part.duration : frag.duration;\n      const timeLoading = now2 - stats.loading.start;\n      const minAutoLevel = hls.minAutoLevel;\n      if (stats.aborted || stats.loaded && stats.loaded === stats.total || frag.level <= minAutoLevel) {\n        this.clearTimer();\n        this._nextAutoLevel = -1;\n        return;\n      }\n      if (!autoLevelEnabled || media.paused || !media.playbackRate || !media.readyState) {\n        return;\n      }\n      const bufferInfo = hls.mainForwardBufferInfo;\n      if (bufferInfo === null) {\n        return;\n      }\n      const ttfbEstimate = this.bwEstimator.getEstimateTTFB();\n      const playbackRate = Math.abs(media.playbackRate);\n      if (timeLoading <= Math.max(ttfbEstimate, 1e3 * (duration / (playbackRate * 2)))) {\n        return;\n      }\n      const bufferStarvationDelay = bufferInfo.len / playbackRate;\n      const ttfb = stats.loading.first ? stats.loading.first - stats.loading.start : -1;\n      const loadedFirstByte = stats.loaded && ttfb > -1;\n      const bwEstimate = this.getBwEstimate();\n      const levels = hls.levels;\n      const level = levels[frag.level];\n      const expectedLen = stats.total || Math.max(stats.loaded, Math.round(duration * level.averageBitrate / 8));\n      let timeStreaming = loadedFirstByte ? timeLoading - ttfb : timeLoading;\n      if (timeStreaming < 1 && loadedFirstByte) {\n        timeStreaming = Math.min(timeLoading, stats.loaded * 8 / bwEstimate);\n      }\n      const loadRate = loadedFirstByte ? stats.loaded * 1e3 / timeStreaming : 0;\n      const fragLoadedDelay = loadRate ? (expectedLen - stats.loaded) / loadRate : expectedLen * 8 / bwEstimate + ttfbEstimate / 1e3;\n      if (fragLoadedDelay <= bufferStarvationDelay) {\n        return;\n      }\n      const bwe = loadRate ? loadRate * 8 : bwEstimate;\n      let fragLevelNextLoadedDelay = Number.POSITIVE_INFINITY;\n      let nextLoadLevel;\n      for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) {\n        const levelNextBitrate = levels[nextLoadLevel].maxBitrate;\n        fragLevelNextLoadedDelay = this.getTimeToLoadFrag(ttfbEstimate / 1e3, bwe, duration * levelNextBitrate, !levels[nextLoadLevel].details);\n        if (fragLevelNextLoadedDelay < bufferStarvationDelay) {\n          break;\n        }\n      }\n      if (fragLevelNextLoadedDelay >= fragLoadedDelay) {\n        return;\n      }\n      if (fragLevelNextLoadedDelay > duration * 10) {\n        return;\n      }\n      hls.nextLoadLevel = hls.nextAutoLevel = nextLoadLevel;\n      if (loadedFirstByte) {\n        this.bwEstimator.sample(timeLoading - Math.min(ttfbEstimate, ttfb), stats.loaded);\n      } else {\n        this.bwEstimator.sampleTTFB(timeLoading);\n      }\n      const nextLoadLevelBitrate = levels[nextLoadLevel].maxBitrate;\n      if (this.getBwEstimate() * this.hls.config.abrBandWidthUpFactor > nextLoadLevelBitrate) {\n        this.resetEstimator(nextLoadLevelBitrate);\n      }\n      this.clearTimer();\n      logger.warn(`[abr] Fragment ${frag.sn}${part ? \" part \" + part.index : \"\"} of level ${frag.level} is loading too slowly;\n      Time to underbuffer: ${bufferStarvationDelay.toFixed(3)} s\n      Estimated load time for current fragment: ${fragLoadedDelay.toFixed(3)} s\n      Estimated load time for down switch fragment: ${fragLevelNextLoadedDelay.toFixed(3)} s\n      TTFB estimate: ${ttfb | 0} ms\n      Current BW estimate: ${isFiniteNumber(bwEstimate) ? bwEstimate | 0 : \"Unknown\"} bps\n      New BW estimate: ${this.getBwEstimate() | 0} bps\n      Switching to level ${nextLoadLevel} @ ${nextLoadLevelBitrate | 0} bps`);\n      hls.trigger(Events.FRAG_LOAD_EMERGENCY_ABORTED, {\n        frag,\n        part,\n        stats\n      });\n    };\n    this.hls = _hls;\n    this.bwEstimator = this.initEstimator();\n    this.registerListeners();\n  }\n  resetEstimator(abrEwmaDefaultEstimate) {\n    if (abrEwmaDefaultEstimate) {\n      logger.log(`setting initial bwe to ${abrEwmaDefaultEstimate}`);\n      this.hls.config.abrEwmaDefaultEstimate = abrEwmaDefaultEstimate;\n    }\n    this.firstSelection = -1;\n    this.bwEstimator = this.initEstimator();\n  }\n  initEstimator() {\n    const config = this.hls.config;\n    return new EwmaBandWidthEstimator(config.abrEwmaSlowVoD, config.abrEwmaFastVoD, config.abrEwmaDefaultEstimate);\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.on(Events.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n  unregisterListeners() {\n    const {\n      hls\n    } = this;\n    if (!hls) {\n      return;\n    }\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.off(Events.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.clearTimer();\n    this.hls = this._abandonRulesCheck = null;\n    this.fragCurrent = this.partCurrent = null;\n  }\n  onManifestLoading(event, data) {\n    this.lastLoadedFragLevel = -1;\n    this.firstSelection = -1;\n    this.lastLevelLoadSec = 0;\n    this.fragCurrent = this.partCurrent = null;\n    this.onLevelsUpdated();\n    this.clearTimer();\n  }\n  onLevelsUpdated() {\n    if (this.lastLoadedFragLevel > -1 && this.fragCurrent) {\n      this.lastLoadedFragLevel = this.fragCurrent.level;\n    }\n    this._nextAutoLevel = -1;\n    this.onMaxAutoLevelUpdated();\n    this.codecTiers = null;\n    this.audioTracksByGroup = null;\n  }\n  onMaxAutoLevelUpdated() {\n    this.firstSelection = -1;\n    this.nextAutoLevelKey = \"\";\n  }\n  onFragLoading(event, data) {\n    const frag = data.frag;\n    if (this.ignoreFragment(frag)) {\n      return;\n    }\n    if (!frag.bitrateTest) {\n      var _data$part;\n      this.fragCurrent = frag;\n      this.partCurrent = (_data$part = data.part) != null ? _data$part : null;\n    }\n    this.clearTimer();\n    this.timer = self.setInterval(this._abandonRulesCheck, 100);\n  }\n  onLevelSwitching(event, data) {\n    this.clearTimer();\n  }\n  onError(event, data) {\n    if (data.fatal) {\n      return;\n    }\n    switch (data.details) {\n      case ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n      case ErrorDetails.BUFFER_APPEND_ERROR:\n        this.lastLoadedFragLevel = -1;\n        this.firstSelection = -1;\n        break;\n      case ErrorDetails.FRAG_LOAD_TIMEOUT: {\n        const frag = data.frag;\n        const {\n          fragCurrent,\n          partCurrent: part\n        } = this;\n        if (frag && fragCurrent && frag.sn === fragCurrent.sn && frag.level === fragCurrent.level) {\n          const now2 = performance.now();\n          const stats = part ? part.stats : frag.stats;\n          const timeLoading = now2 - stats.loading.start;\n          const ttfb = stats.loading.first ? stats.loading.first - stats.loading.start : -1;\n          const loadedFirstByte = stats.loaded && ttfb > -1;\n          if (loadedFirstByte) {\n            const ttfbEstimate = this.bwEstimator.getEstimateTTFB();\n            this.bwEstimator.sample(timeLoading - Math.min(ttfbEstimate, ttfb), stats.loaded);\n          } else {\n            this.bwEstimator.sampleTTFB(timeLoading);\n          }\n        }\n        break;\n      }\n    }\n  }\n  getTimeToLoadFrag(timeToFirstByteSec, bandwidth, fragSizeBits, isSwitch) {\n    const fragLoadSec = timeToFirstByteSec + fragSizeBits / bandwidth;\n    const playlistLoadSec = isSwitch ? this.lastLevelLoadSec : 0;\n    return fragLoadSec + playlistLoadSec;\n  }\n  onLevelLoaded(event, data) {\n    const config = this.hls.config;\n    const {\n      loading\n    } = data.stats;\n    const timeLoadingMs = loading.end - loading.start;\n    if (isFiniteNumber(timeLoadingMs)) {\n      this.lastLevelLoadSec = timeLoadingMs / 1e3;\n    }\n    if (data.details.live) {\n      this.bwEstimator.update(config.abrEwmaSlowLive, config.abrEwmaFastLive);\n    } else {\n      this.bwEstimator.update(config.abrEwmaSlowVoD, config.abrEwmaFastVoD);\n    }\n  }\n  onFragLoaded(event, {\n    frag,\n    part\n  }) {\n    const stats = part ? part.stats : frag.stats;\n    if (frag.type === PlaylistLevelType.MAIN) {\n      this.bwEstimator.sampleTTFB(stats.loading.first - stats.loading.start);\n    }\n    if (this.ignoreFragment(frag)) {\n      return;\n    }\n    this.clearTimer();\n    if (frag.level === this._nextAutoLevel) {\n      this._nextAutoLevel = -1;\n    }\n    this.firstSelection = -1;\n    if (this.hls.config.abrMaxWithRealBitrate) {\n      const duration = part ? part.duration : frag.duration;\n      const level = this.hls.levels[frag.level];\n      const loadedBytes = (level.loaded ? level.loaded.bytes : 0) + stats.loaded;\n      const loadedDuration = (level.loaded ? level.loaded.duration : 0) + duration;\n      level.loaded = {\n        bytes: loadedBytes,\n        duration: loadedDuration\n      };\n      level.realBitrate = Math.round(8 * loadedBytes / loadedDuration);\n    }\n    if (frag.bitrateTest) {\n      const fragBufferedData = {\n        stats,\n        frag,\n        part,\n        id: frag.type\n      };\n      this.onFragBuffered(Events.FRAG_BUFFERED, fragBufferedData);\n      frag.bitrateTest = false;\n    } else {\n      this.lastLoadedFragLevel = frag.level;\n    }\n  }\n  onFragBuffered(event, data) {\n    const {\n      frag,\n      part\n    } = data;\n    const stats = part != null && part.stats.loaded ? part.stats : frag.stats;\n    if (stats.aborted) {\n      return;\n    }\n    if (this.ignoreFragment(frag)) {\n      return;\n    }\n    const processingMs = stats.parsing.end - stats.loading.start - Math.min(stats.loading.first - stats.loading.start, this.bwEstimator.getEstimateTTFB());\n    this.bwEstimator.sample(processingMs, stats.loaded);\n    stats.bwEstimate = this.getBwEstimate();\n    if (frag.bitrateTest) {\n      this.bitrateTestDelay = processingMs / 1e3;\n    } else {\n      this.bitrateTestDelay = 0;\n    }\n  }\n  ignoreFragment(frag) {\n    return frag.type !== PlaylistLevelType.MAIN || frag.sn === \"initSegment\";\n  }\n  clearTimer() {\n    if (this.timer > -1) {\n      self.clearInterval(this.timer);\n      this.timer = -1;\n    }\n  }\n  get firstAutoLevel() {\n    const {\n      maxAutoLevel,\n      minAutoLevel\n    } = this.hls;\n    const bwEstimate = this.getBwEstimate();\n    const maxStartDelay = this.hls.config.maxStarvationDelay;\n    const abrAutoLevel = this.findBestLevel(bwEstimate, minAutoLevel, maxAutoLevel, 0, maxStartDelay, 1, 1);\n    if (abrAutoLevel > -1) {\n      return abrAutoLevel;\n    }\n    const firstLevel = this.hls.firstLevel;\n    const clamped = Math.min(Math.max(firstLevel, minAutoLevel), maxAutoLevel);\n    logger.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${firstLevel} clamped to ${clamped}`);\n    return clamped;\n  }\n  get forcedAutoLevel() {\n    if (this.nextAutoLevelKey) {\n      return -1;\n    }\n    return this._nextAutoLevel;\n  }\n  // return next auto level\n  get nextAutoLevel() {\n    const forcedAutoLevel = this.forcedAutoLevel;\n    const bwEstimator = this.bwEstimator;\n    const useEstimate = bwEstimator.canEstimate();\n    const loadedFirstFrag = this.lastLoadedFragLevel > -1;\n    if (forcedAutoLevel !== -1 && (!useEstimate || !loadedFirstFrag || this.nextAutoLevelKey === this.getAutoLevelKey())) {\n      return forcedAutoLevel;\n    }\n    const nextABRAutoLevel = useEstimate && loadedFirstFrag ? this.getNextABRAutoLevel() : this.firstAutoLevel;\n    if (forcedAutoLevel !== -1) {\n      const levels = this.hls.levels;\n      if (levels.length > Math.max(forcedAutoLevel, nextABRAutoLevel) && levels[forcedAutoLevel].loadError <= levels[nextABRAutoLevel].loadError) {\n        return forcedAutoLevel;\n      }\n    }\n    this._nextAutoLevel = nextABRAutoLevel;\n    this.nextAutoLevelKey = this.getAutoLevelKey();\n    return nextABRAutoLevel;\n  }\n  getAutoLevelKey() {\n    return `${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`;\n  }\n  getNextABRAutoLevel() {\n    const {\n      fragCurrent,\n      partCurrent,\n      hls\n    } = this;\n    const {\n      maxAutoLevel,\n      config,\n      minAutoLevel\n    } = hls;\n    const currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n    const avgbw = this.getBwEstimate();\n    const bufferStarvationDelay = this.getStarvationDelay();\n    let bwFactor = config.abrBandWidthFactor;\n    let bwUpFactor = config.abrBandWidthUpFactor;\n    if (bufferStarvationDelay) {\n      const _bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, 0, bwFactor, bwUpFactor);\n      if (_bestLevel >= 0) {\n        return _bestLevel;\n      }\n    }\n    let maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay;\n    if (!bufferStarvationDelay) {\n      const bitrateTestDelay = this.bitrateTestDelay;\n      if (bitrateTestDelay) {\n        const maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay;\n        maxStarvationDelay = maxLoadingDelay - bitrateTestDelay;\n        logger.info(`[abr] bitrate test took ${Math.round(1e3 * bitrateTestDelay)}ms, set first fragment max fetchDuration to ${Math.round(1e3 * maxStarvationDelay)} ms`);\n        bwFactor = bwUpFactor = 1;\n      }\n    }\n    const bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, maxStarvationDelay, bwFactor, bwUpFactor);\n    logger.info(`[abr] ${bufferStarvationDelay ? \"rebuffering expected\" : \"buffer is empty\"}, optimal quality level ${bestLevel}`);\n    if (bestLevel > -1) {\n      return bestLevel;\n    }\n    const minLevel = hls.levels[minAutoLevel];\n    const autoLevel = hls.levels[hls.loadLevel];\n    if ((minLevel == null ? void 0 : minLevel.bitrate) < (autoLevel == null ? void 0 : autoLevel.bitrate)) {\n      return minAutoLevel;\n    }\n    return hls.loadLevel;\n  }\n  getStarvationDelay() {\n    const hls = this.hls;\n    const media = hls.media;\n    if (!media) {\n      return Infinity;\n    }\n    const playbackRate = media && media.playbackRate !== 0 ? Math.abs(media.playbackRate) : 1;\n    const bufferInfo = hls.mainForwardBufferInfo;\n    return (bufferInfo ? bufferInfo.len : 0) / playbackRate;\n  }\n  getBwEstimate() {\n    return this.bwEstimator.canEstimate() ? this.bwEstimator.getEstimate() : this.hls.config.abrEwmaDefaultEstimate;\n  }\n  findBestLevel(currentBw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, maxStarvationDelay, bwFactor, bwUpFactor) {\n    var _level$details;\n    const maxFetchDuration = bufferStarvationDelay + maxStarvationDelay;\n    const lastLoadedFragLevel = this.lastLoadedFragLevel;\n    const selectionBaseLevel = lastLoadedFragLevel === -1 ? this.hls.firstLevel : lastLoadedFragLevel;\n    const {\n      fragCurrent,\n      partCurrent\n    } = this;\n    const {\n      levels,\n      allAudioTracks,\n      loadLevel,\n      config\n    } = this.hls;\n    if (levels.length === 1) {\n      return 0;\n    }\n    const level = levels[selectionBaseLevel];\n    const live = !!(level != null && (_level$details = level.details) != null && _level$details.live);\n    const firstSelection = loadLevel === -1 || lastLoadedFragLevel === -1;\n    let currentCodecSet;\n    let currentVideoRange = \"SDR\";\n    let currentFrameRate = (level == null ? void 0 : level.frameRate) || 0;\n    const {\n      audioPreference,\n      videoPreference\n    } = config;\n    const audioTracksByGroup = this.audioTracksByGroup || (this.audioTracksByGroup = getAudioTracksByGroup(allAudioTracks));\n    if (firstSelection) {\n      if (this.firstSelection !== -1) {\n        return this.firstSelection;\n      }\n      const codecTiers = this.codecTiers || (this.codecTiers = getCodecTiers(levels, audioTracksByGroup, minAutoLevel, maxAutoLevel));\n      const startTier = getStartCodecTier(codecTiers, currentVideoRange, currentBw, audioPreference, videoPreference);\n      const {\n        codecSet,\n        videoRanges,\n        minFramerate,\n        minBitrate,\n        preferHDR\n      } = startTier;\n      currentCodecSet = codecSet;\n      currentVideoRange = preferHDR ? videoRanges[videoRanges.length - 1] : videoRanges[0];\n      currentFrameRate = minFramerate;\n      currentBw = Math.max(currentBw, minBitrate);\n      logger.log(`[abr] picked start tier ${JSON.stringify(startTier)}`);\n    } else {\n      currentCodecSet = level == null ? void 0 : level.codecSet;\n      currentVideoRange = level == null ? void 0 : level.videoRange;\n    }\n    const currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n    const ttfbEstimateSec = this.bwEstimator.getEstimateTTFB() / 1e3;\n    const levelsSkipped = [];\n    for (let i2 = maxAutoLevel; i2 >= minAutoLevel; i2--) {\n      var _levelInfo$supportedR;\n      const levelInfo = levels[i2];\n      const upSwitch = i2 > selectionBaseLevel;\n      if (!levelInfo) {\n        continue;\n      }\n      if (config.useMediaCapabilities && !levelInfo.supportedResult && !levelInfo.supportedPromise) {\n        const mediaCapabilities = navigator.mediaCapabilities;\n        if (typeof (mediaCapabilities == null ? void 0 : mediaCapabilities.decodingInfo) === \"function\" && requiresMediaCapabilitiesDecodingInfo(levelInfo, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference)) {\n          levelInfo.supportedPromise = getMediaDecodingInfoPromise(levelInfo, audioTracksByGroup, mediaCapabilities);\n          levelInfo.supportedPromise.then((decodingInfo) => {\n            if (!this.hls) {\n              return;\n            }\n            levelInfo.supportedResult = decodingInfo;\n            const levels2 = this.hls.levels;\n            const index = levels2.indexOf(levelInfo);\n            if (decodingInfo.error) {\n              logger.warn(`[abr] MediaCapabilities decodingInfo error: \"${decodingInfo.error}\" for level ${index} ${JSON.stringify(decodingInfo)}`);\n            } else if (!decodingInfo.supported) {\n              logger.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${index} ${JSON.stringify(decodingInfo)}`);\n              if (index > -1 && levels2.length > 1) {\n                logger.log(`[abr] Removing unsupported level ${index}`);\n                this.hls.removeLevel(index);\n              }\n            }\n          });\n        } else {\n          levelInfo.supportedResult = SUPPORTED_INFO_DEFAULT;\n        }\n      }\n      if (currentCodecSet && levelInfo.codecSet !== currentCodecSet || currentVideoRange && levelInfo.videoRange !== currentVideoRange || upSwitch && currentFrameRate > levelInfo.frameRate || !upSwitch && currentFrameRate > 0 && currentFrameRate < levelInfo.frameRate || levelInfo.supportedResult && !((_levelInfo$supportedR = levelInfo.supportedResult.decodingInfoResults) != null && _levelInfo$supportedR[0].smooth)) {\n        levelsSkipped.push(i2);\n        continue;\n      }\n      const levelDetails = levelInfo.details;\n      const avgDuration = (partCurrent ? levelDetails == null ? void 0 : levelDetails.partTarget : levelDetails == null ? void 0 : levelDetails.averagetargetduration) || currentFragDuration;\n      let adjustedbw;\n      if (!upSwitch) {\n        adjustedbw = bwFactor * currentBw;\n      } else {\n        adjustedbw = bwUpFactor * currentBw;\n      }\n      const bitrate = currentFragDuration && bufferStarvationDelay >= currentFragDuration * 2 && maxStarvationDelay === 0 ? levels[i2].averageBitrate : levels[i2].maxBitrate;\n      const fetchDuration = this.getTimeToLoadFrag(ttfbEstimateSec, adjustedbw, bitrate * avgDuration, levelDetails === void 0);\n      const canSwitchWithinTolerance = (\n        // if adjusted bw is greater than level bitrate AND\n        adjustedbw >= bitrate && // no level change, or new level has no error history\n        (i2 === lastLoadedFragLevel || levelInfo.loadError === 0 && levelInfo.fragmentError === 0) && // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches\n        // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...\n        // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1\n        (fetchDuration <= ttfbEstimateSec || !isFiniteNumber(fetchDuration) || live && !this.bitrateTestDelay || fetchDuration < maxFetchDuration)\n      );\n      if (canSwitchWithinTolerance) {\n        const forcedAutoLevel = this.forcedAutoLevel;\n        if (i2 !== loadLevel && (forcedAutoLevel === -1 || forcedAutoLevel !== loadLevel)) {\n          if (levelsSkipped.length) {\n            logger.trace(`[abr] Skipped level(s) ${levelsSkipped.join(\",\")} of ${maxAutoLevel} max with CODECS and VIDEO-RANGE:\"${levels[levelsSkipped[0]].codecs}\" ${levels[levelsSkipped[0]].videoRange}; not compatible with \"${level.codecs}\" ${currentVideoRange}`);\n          }\n          logger.info(`[abr] switch candidate:${selectionBaseLevel}->${i2} adjustedbw(${Math.round(adjustedbw)})-bitrate=${Math.round(adjustedbw - bitrate)} ttfb:${ttfbEstimateSec.toFixed(1)} avgDuration:${avgDuration.toFixed(1)} maxFetchDuration:${maxFetchDuration.toFixed(1)} fetchDuration:${fetchDuration.toFixed(1)} firstSelection:${firstSelection} codecSet:${currentCodecSet} videoRange:${currentVideoRange} hls.loadLevel:${loadLevel}`);\n        }\n        if (firstSelection) {\n          this.firstSelection = i2;\n        }\n        return i2;\n      }\n    }\n    return -1;\n  }\n  set nextAutoLevel(nextLevel) {\n    const {\n      maxAutoLevel,\n      minAutoLevel\n    } = this.hls;\n    const value = Math.min(Math.max(nextLevel, minAutoLevel), maxAutoLevel);\n    if (this._nextAutoLevel !== value) {\n      this.nextAutoLevelKey = \"\";\n      this._nextAutoLevel = value;\n    }\n  }\n};\nvar TaskLoop = class {\n  constructor() {\n    this._boundTick = void 0;\n    this._tickTimer = null;\n    this._tickInterval = null;\n    this._tickCallCount = 0;\n    this._boundTick = this.tick.bind(this);\n  }\n  destroy() {\n    this.onHandlerDestroying();\n    this.onHandlerDestroyed();\n  }\n  onHandlerDestroying() {\n    this.clearNextTick();\n    this.clearInterval();\n  }\n  onHandlerDestroyed() {\n  }\n  hasInterval() {\n    return !!this._tickInterval;\n  }\n  hasNextTick() {\n    return !!this._tickTimer;\n  }\n  /**\n   * @param millis - Interval time (ms)\n   * @eturns True when interval has been scheduled, false when already scheduled (no effect)\n   */\n  setInterval(millis) {\n    if (!this._tickInterval) {\n      this._tickCallCount = 0;\n      this._tickInterval = self.setInterval(this._boundTick, millis);\n      return true;\n    }\n    return false;\n  }\n  /**\n   * @returns True when interval was cleared, false when none was set (no effect)\n   */\n  clearInterval() {\n    if (this._tickInterval) {\n      self.clearInterval(this._tickInterval);\n      this._tickInterval = null;\n      return true;\n    }\n    return false;\n  }\n  /**\n   * @returns True when timeout was cleared, false when none was set (no effect)\n   */\n  clearNextTick() {\n    if (this._tickTimer) {\n      self.clearTimeout(this._tickTimer);\n      this._tickTimer = null;\n      return true;\n    }\n    return false;\n  }\n  /**\n   * Will call the subclass doTick implementation in this main loop tick\n   * or in the next one (via setTimeout(,0)) in case it has already been called\n   * in this tick (in case this is a re-entrant call).\n   */\n  tick() {\n    this._tickCallCount++;\n    if (this._tickCallCount === 1) {\n      this.doTick();\n      if (this._tickCallCount > 1) {\n        this.tickImmediate();\n      }\n      this._tickCallCount = 0;\n    }\n  }\n  tickImmediate() {\n    this.clearNextTick();\n    this._tickTimer = self.setTimeout(this._boundTick, 0);\n  }\n  /**\n   * For subclass to implement task logic\n   * @abstract\n   */\n  doTick() {\n  }\n};\nvar FragmentState = {\n  NOT_LOADED: \"NOT_LOADED\",\n  APPENDING: \"APPENDING\",\n  PARTIAL: \"PARTIAL\",\n  OK: \"OK\"\n};\nvar FragmentTracker = class {\n  constructor(hls) {\n    this.activePartLists = /* @__PURE__ */ Object.create(null);\n    this.endListFragments = /* @__PURE__ */ Object.create(null);\n    this.fragments = /* @__PURE__ */ Object.create(null);\n    this.timeRanges = /* @__PURE__ */ Object.create(null);\n    this.bufferPadding = 0.2;\n    this.hls = void 0;\n    this.hasGaps = false;\n    this.hls = hls;\n    this._registerListeners();\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.BUFFER_APPENDED, this.onBufferAppended, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.BUFFER_APPENDED, this.onBufferAppended, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n  }\n  destroy() {\n    this._unregisterListeners();\n    this.fragments = // @ts-ignore\n    this.activePartLists = // @ts-ignore\n    this.endListFragments = this.timeRanges = null;\n  }\n  /**\n   * Return a Fragment or Part with an appended range that matches the position and levelType\n   * Otherwise, return null\n   */\n  getAppendedFrag(position, levelType) {\n    const activeParts = this.activePartLists[levelType];\n    if (activeParts) {\n      for (let i2 = activeParts.length; i2--; ) {\n        const activePart = activeParts[i2];\n        if (!activePart) {\n          break;\n        }\n        const appendedPTS = activePart.end;\n        if (activePart.start <= position && appendedPTS !== null && position <= appendedPTS) {\n          return activePart;\n        }\n      }\n    }\n    return this.getBufferedFrag(position, levelType);\n  }\n  /**\n   * Return a buffered Fragment that matches the position and levelType.\n   * A buffered Fragment is one whose loading, parsing and appending is done (completed or \"partial\" meaning aborted).\n   * If not found any Fragment, return null\n   */\n  getBufferedFrag(position, levelType) {\n    const {\n      fragments\n    } = this;\n    const keys = Object.keys(fragments);\n    for (let i2 = keys.length; i2--; ) {\n      const fragmentEntity = fragments[keys[i2]];\n      if ((fragmentEntity == null ? void 0 : fragmentEntity.body.type) === levelType && fragmentEntity.buffered) {\n        const frag = fragmentEntity.body;\n        if (frag.start <= position && position <= frag.end) {\n          return frag;\n        }\n      }\n    }\n    return null;\n  }\n  /**\n   * Partial fragments effected by coded frame eviction will be removed\n   * The browser will unload parts of the buffer to free up memory for new buffer data\n   * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)\n   */\n  detectEvictedFragments(elementaryStream, timeRange, playlistType, appendedPart) {\n    if (this.timeRanges) {\n      this.timeRanges[elementaryStream] = timeRange;\n    }\n    const appendedPartSn = (appendedPart == null ? void 0 : appendedPart.fragment.sn) || -1;\n    Object.keys(this.fragments).forEach((key) => {\n      const fragmentEntity = this.fragments[key];\n      if (!fragmentEntity) {\n        return;\n      }\n      if (appendedPartSn >= fragmentEntity.body.sn) {\n        return;\n      }\n      if (!fragmentEntity.buffered && !fragmentEntity.loaded) {\n        if (fragmentEntity.body.type === playlistType) {\n          this.removeFragment(fragmentEntity.body);\n        }\n        return;\n      }\n      const esData = fragmentEntity.range[elementaryStream];\n      if (!esData) {\n        return;\n      }\n      esData.time.some((time) => {\n        const isNotBuffered = !this.isTimeBuffered(time.startPTS, time.endPTS, timeRange);\n        if (isNotBuffered) {\n          this.removeFragment(fragmentEntity.body);\n        }\n        return isNotBuffered;\n      });\n    });\n  }\n  /**\n   * Checks if the fragment passed in is loaded in the buffer properly\n   * Partially loaded fragments will be registered as a partial fragment\n   */\n  detectPartialFragments(data) {\n    const timeRanges = this.timeRanges;\n    const {\n      frag,\n      part\n    } = data;\n    if (!timeRanges || frag.sn === \"initSegment\") {\n      return;\n    }\n    const fragKey = getFragmentKey(frag);\n    const fragmentEntity = this.fragments[fragKey];\n    if (!fragmentEntity || fragmentEntity.buffered && frag.gap) {\n      return;\n    }\n    const isFragHint = !frag.relurl;\n    Object.keys(timeRanges).forEach((elementaryStream) => {\n      const streamInfo = frag.elementaryStreams[elementaryStream];\n      if (!streamInfo) {\n        return;\n      }\n      const timeRange = timeRanges[elementaryStream];\n      const partial = isFragHint || streamInfo.partial === true;\n      fragmentEntity.range[elementaryStream] = this.getBufferedTimes(frag, part, partial, timeRange);\n    });\n    fragmentEntity.loaded = null;\n    if (Object.keys(fragmentEntity.range).length) {\n      fragmentEntity.buffered = true;\n      const endList = fragmentEntity.body.endList = frag.endList || fragmentEntity.body.endList;\n      if (endList) {\n        this.endListFragments[fragmentEntity.body.type] = fragmentEntity;\n      }\n      if (!isPartial(fragmentEntity)) {\n        this.removeParts(frag.sn - 1, frag.type);\n      }\n    } else {\n      this.removeFragment(fragmentEntity.body);\n    }\n  }\n  removeParts(snToKeep, levelType) {\n    const activeParts = this.activePartLists[levelType];\n    if (!activeParts) {\n      return;\n    }\n    this.activePartLists[levelType] = activeParts.filter((part) => part.fragment.sn >= snToKeep);\n  }\n  fragBuffered(frag, force) {\n    const fragKey = getFragmentKey(frag);\n    let fragmentEntity = this.fragments[fragKey];\n    if (!fragmentEntity && force) {\n      fragmentEntity = this.fragments[fragKey] = {\n        body: frag,\n        appendedPTS: null,\n        loaded: null,\n        buffered: false,\n        range: /* @__PURE__ */ Object.create(null)\n      };\n      if (frag.gap) {\n        this.hasGaps = true;\n      }\n    }\n    if (fragmentEntity) {\n      fragmentEntity.loaded = null;\n      fragmentEntity.buffered = true;\n    }\n  }\n  getBufferedTimes(fragment, part, partial, timeRange) {\n    const buffered = {\n      time: [],\n      partial\n    };\n    const startPTS = fragment.start;\n    const endPTS = fragment.end;\n    const minEndPTS = fragment.minEndPTS || endPTS;\n    const maxStartPTS = fragment.maxStartPTS || startPTS;\n    for (let i2 = 0; i2 < timeRange.length; i2++) {\n      const startTime = timeRange.start(i2) - this.bufferPadding;\n      const endTime = timeRange.end(i2) + this.bufferPadding;\n      if (maxStartPTS >= startTime && minEndPTS <= endTime) {\n        buffered.time.push({\n          startPTS: Math.max(startPTS, timeRange.start(i2)),\n          endPTS: Math.min(endPTS, timeRange.end(i2))\n        });\n        break;\n      } else if (startPTS < endTime && endPTS > startTime) {\n        const start = Math.max(startPTS, timeRange.start(i2));\n        const end = Math.min(endPTS, timeRange.end(i2));\n        if (end > start) {\n          buffered.partial = true;\n          buffered.time.push({\n            startPTS: start,\n            endPTS: end\n          });\n        }\n      } else if (endPTS <= startTime) {\n        break;\n      }\n    }\n    return buffered;\n  }\n  /**\n   * Gets the partial fragment for a certain time\n   */\n  getPartialFragment(time) {\n    let bestFragment = null;\n    let timePadding;\n    let startTime;\n    let endTime;\n    let bestOverlap = 0;\n    const {\n      bufferPadding,\n      fragments\n    } = this;\n    Object.keys(fragments).forEach((key) => {\n      const fragmentEntity = fragments[key];\n      if (!fragmentEntity) {\n        return;\n      }\n      if (isPartial(fragmentEntity)) {\n        startTime = fragmentEntity.body.start - bufferPadding;\n        endTime = fragmentEntity.body.end + bufferPadding;\n        if (time >= startTime && time <= endTime) {\n          timePadding = Math.min(time - startTime, endTime - time);\n          if (bestOverlap <= timePadding) {\n            bestFragment = fragmentEntity.body;\n            bestOverlap = timePadding;\n          }\n        }\n      }\n    });\n    return bestFragment;\n  }\n  isEndListAppended(type) {\n    const lastFragmentEntity = this.endListFragments[type];\n    return lastFragmentEntity !== void 0 && (lastFragmentEntity.buffered || isPartial(lastFragmentEntity));\n  }\n  getState(fragment) {\n    const fragKey = getFragmentKey(fragment);\n    const fragmentEntity = this.fragments[fragKey];\n    if (fragmentEntity) {\n      if (!fragmentEntity.buffered) {\n        return FragmentState.APPENDING;\n      } else if (isPartial(fragmentEntity)) {\n        return FragmentState.PARTIAL;\n      } else {\n        return FragmentState.OK;\n      }\n    }\n    return FragmentState.NOT_LOADED;\n  }\n  isTimeBuffered(startPTS, endPTS, timeRange) {\n    let startTime;\n    let endTime;\n    for (let i2 = 0; i2 < timeRange.length; i2++) {\n      startTime = timeRange.start(i2) - this.bufferPadding;\n      endTime = timeRange.end(i2) + this.bufferPadding;\n      if (startPTS >= startTime && endPTS <= endTime) {\n        return true;\n      }\n      if (endPTS <= startTime) {\n        return false;\n      }\n    }\n    return false;\n  }\n  onFragLoaded(event, data) {\n    const {\n      frag,\n      part\n    } = data;\n    if (frag.sn === \"initSegment\" || frag.bitrateTest) {\n      return;\n    }\n    const loaded = part ? null : data;\n    const fragKey = getFragmentKey(frag);\n    this.fragments[fragKey] = {\n      body: frag,\n      appendedPTS: null,\n      loaded,\n      buffered: false,\n      range: /* @__PURE__ */ Object.create(null)\n    };\n  }\n  onBufferAppended(event, data) {\n    const {\n      frag,\n      part,\n      timeRanges\n    } = data;\n    if (frag.sn === \"initSegment\") {\n      return;\n    }\n    const playlistType = frag.type;\n    if (part) {\n      let activeParts = this.activePartLists[playlistType];\n      if (!activeParts) {\n        this.activePartLists[playlistType] = activeParts = [];\n      }\n      activeParts.push(part);\n    }\n    this.timeRanges = timeRanges;\n    Object.keys(timeRanges).forEach((elementaryStream) => {\n      const timeRange = timeRanges[elementaryStream];\n      this.detectEvictedFragments(elementaryStream, timeRange, playlistType, part);\n    });\n  }\n  onFragBuffered(event, data) {\n    this.detectPartialFragments(data);\n  }\n  hasFragment(fragment) {\n    const fragKey = getFragmentKey(fragment);\n    return !!this.fragments[fragKey];\n  }\n  hasParts(type) {\n    var _this$activePartLists;\n    return !!((_this$activePartLists = this.activePartLists[type]) != null && _this$activePartLists.length);\n  }\n  removeFragmentsInRange(start, end, playlistType, withGapOnly, unbufferedOnly) {\n    if (withGapOnly && !this.hasGaps) {\n      return;\n    }\n    Object.keys(this.fragments).forEach((key) => {\n      const fragmentEntity = this.fragments[key];\n      if (!fragmentEntity) {\n        return;\n      }\n      const frag = fragmentEntity.body;\n      if (frag.type !== playlistType || withGapOnly && !frag.gap) {\n        return;\n      }\n      if (frag.start < end && frag.end > start && (fragmentEntity.buffered || unbufferedOnly)) {\n        this.removeFragment(frag);\n      }\n    });\n  }\n  removeFragment(fragment) {\n    const fragKey = getFragmentKey(fragment);\n    fragment.stats.loaded = 0;\n    fragment.clearElementaryStreamInfo();\n    const activeParts = this.activePartLists[fragment.type];\n    if (activeParts) {\n      const snToRemove = fragment.sn;\n      this.activePartLists[fragment.type] = activeParts.filter((part) => part.fragment.sn !== snToRemove);\n    }\n    delete this.fragments[fragKey];\n    if (fragment.endList) {\n      delete this.endListFragments[fragment.type];\n    }\n  }\n  removeAllFragments() {\n    this.fragments = /* @__PURE__ */ Object.create(null);\n    this.endListFragments = /* @__PURE__ */ Object.create(null);\n    this.activePartLists = /* @__PURE__ */ Object.create(null);\n    this.hasGaps = false;\n  }\n};\nfunction isPartial(fragmentEntity) {\n  var _fragmentEntity$range, _fragmentEntity$range2, _fragmentEntity$range3;\n  return fragmentEntity.buffered && (fragmentEntity.body.gap || ((_fragmentEntity$range = fragmentEntity.range.video) == null ? void 0 : _fragmentEntity$range.partial) || ((_fragmentEntity$range2 = fragmentEntity.range.audio) == null ? void 0 : _fragmentEntity$range2.partial) || ((_fragmentEntity$range3 = fragmentEntity.range.audiovideo) == null ? void 0 : _fragmentEntity$range3.partial));\n}\nfunction getFragmentKey(fragment) {\n  return `${fragment.type}_${fragment.level}_${fragment.sn}`;\n}\nvar noopBuffered = {\n  length: 0,\n  start: () => 0,\n  end: () => 0\n};\nvar BufferHelper = class _BufferHelper {\n  /**\n   * Return true if `media`'s buffered include `position`\n   */\n  static isBuffered(media, position) {\n    try {\n      if (media) {\n        const buffered = _BufferHelper.getBuffered(media);\n        for (let i2 = 0; i2 < buffered.length; i2++) {\n          if (position >= buffered.start(i2) && position <= buffered.end(i2)) {\n            return true;\n          }\n        }\n      }\n    } catch (error) {\n    }\n    return false;\n  }\n  static bufferInfo(media, pos, maxHoleDuration) {\n    try {\n      if (media) {\n        const vbuffered = _BufferHelper.getBuffered(media);\n        const buffered = [];\n        let i2;\n        for (i2 = 0; i2 < vbuffered.length; i2++) {\n          buffered.push({\n            start: vbuffered.start(i2),\n            end: vbuffered.end(i2)\n          });\n        }\n        return this.bufferedInfo(buffered, pos, maxHoleDuration);\n      }\n    } catch (error) {\n    }\n    return {\n      len: 0,\n      start: pos,\n      end: pos,\n      nextStart: void 0\n    };\n  }\n  static bufferedInfo(buffered, pos, maxHoleDuration) {\n    pos = Math.max(0, pos);\n    buffered.sort(function(a2, b4) {\n      const diff = a2.start - b4.start;\n      if (diff) {\n        return diff;\n      } else {\n        return b4.end - a2.end;\n      }\n    });\n    let buffered2 = [];\n    if (maxHoleDuration) {\n      for (let i2 = 0; i2 < buffered.length; i2++) {\n        const buf2len = buffered2.length;\n        if (buf2len) {\n          const buf2end = buffered2[buf2len - 1].end;\n          if (buffered[i2].start - buf2end < maxHoleDuration) {\n            if (buffered[i2].end > buf2end) {\n              buffered2[buf2len - 1].end = buffered[i2].end;\n            }\n          } else {\n            buffered2.push(buffered[i2]);\n          }\n        } else {\n          buffered2.push(buffered[i2]);\n        }\n      }\n    } else {\n      buffered2 = buffered;\n    }\n    let bufferLen = 0;\n    let bufferStartNext;\n    let bufferStart = pos;\n    let bufferEnd = pos;\n    for (let i2 = 0; i2 < buffered2.length; i2++) {\n      const start = buffered2[i2].start;\n      const end = buffered2[i2].end;\n      if (pos + maxHoleDuration >= start && pos < end) {\n        bufferStart = start;\n        bufferEnd = end;\n        bufferLen = bufferEnd - pos;\n      } else if (pos + maxHoleDuration < start) {\n        bufferStartNext = start;\n        break;\n      }\n    }\n    return {\n      len: bufferLen,\n      start: bufferStart || 0,\n      end: bufferEnd || 0,\n      nextStart: bufferStartNext\n    };\n  }\n  /**\n   * Safe method to get buffered property.\n   * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource\n   */\n  static getBuffered(media) {\n    try {\n      return media.buffered;\n    } catch (e) {\n      logger.log(\"failed to get media.buffered\", e);\n      return noopBuffered;\n    }\n  }\n};\nvar ChunkMetadata = class {\n  constructor(level, sn, id, size = 0, part = -1, partial = false) {\n    this.level = void 0;\n    this.sn = void 0;\n    this.part = void 0;\n    this.id = void 0;\n    this.size = void 0;\n    this.partial = void 0;\n    this.transmuxing = getNewPerformanceTiming();\n    this.buffering = {\n      audio: getNewPerformanceTiming(),\n      video: getNewPerformanceTiming(),\n      audiovideo: getNewPerformanceTiming()\n    };\n    this.level = level;\n    this.sn = sn;\n    this.id = id;\n    this.size = size;\n    this.part = part;\n    this.partial = partial;\n  }\n};\nfunction getNewPerformanceTiming() {\n  return {\n    start: 0,\n    executeStart: 0,\n    executeEnd: 0,\n    end: 0\n  };\n}\nfunction findFirstFragWithCC(fragments, cc) {\n  for (let i2 = 0, len = fragments.length; i2 < len; i2++) {\n    var _fragments$i;\n    if (((_fragments$i = fragments[i2]) == null ? void 0 : _fragments$i.cc) === cc) {\n      return fragments[i2];\n    }\n  }\n  return null;\n}\nfunction shouldAlignOnDiscontinuities(lastFrag, switchDetails, details) {\n  if (switchDetails) {\n    if (details.endCC > details.startCC || lastFrag && lastFrag.cc < details.startCC) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction findDiscontinuousReferenceFrag(prevDetails, curDetails) {\n  const prevFrags = prevDetails.fragments;\n  const curFrags = curDetails.fragments;\n  if (!curFrags.length || !prevFrags.length) {\n    logger.log(\"No fragments to align\");\n    return;\n  }\n  const prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);\n  if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {\n    logger.log(\"No frag in previous level to align on\");\n    return;\n  }\n  return prevStartFrag;\n}\nfunction adjustFragmentStart(frag, sliding) {\n  if (frag) {\n    const start = frag.start + sliding;\n    frag.start = frag.startPTS = start;\n    frag.endPTS = start + frag.duration;\n  }\n}\nfunction adjustSlidingStart(sliding, details) {\n  const fragments = details.fragments;\n  for (let i2 = 0, len = fragments.length; i2 < len; i2++) {\n    adjustFragmentStart(fragments[i2], sliding);\n  }\n  if (details.fragmentHint) {\n    adjustFragmentStart(details.fragmentHint, sliding);\n  }\n  details.alignedSliding = true;\n}\nfunction alignStream(lastFrag, switchDetails, details) {\n  if (!switchDetails) {\n    return;\n  }\n  alignDiscontinuities(lastFrag, details, switchDetails);\n  if (!details.alignedSliding && switchDetails) {\n    alignMediaPlaylistByPDT(details, switchDetails);\n  }\n  if (!details.alignedSliding && switchDetails && !details.skippedSegments) {\n    adjustSliding(switchDetails, details);\n  }\n}\nfunction alignDiscontinuities(lastFrag, details, switchDetails) {\n  if (shouldAlignOnDiscontinuities(lastFrag, switchDetails, details)) {\n    const referenceFrag = findDiscontinuousReferenceFrag(switchDetails, details);\n    if (referenceFrag && isFiniteNumber(referenceFrag.start)) {\n      logger.log(`Adjusting PTS using last level due to CC increase within current level ${details.url}`);\n      adjustSlidingStart(referenceFrag.start, details);\n    }\n  }\n}\nfunction alignMediaPlaylistByPDT(details, refDetails) {\n  if (!details.hasProgramDateTime || !refDetails.hasProgramDateTime) {\n    return;\n  }\n  const fragments = details.fragments;\n  const refFragments = refDetails.fragments;\n  if (!fragments.length || !refFragments.length) {\n    return;\n  }\n  let refFrag;\n  let frag;\n  const targetCC = Math.min(refDetails.endCC, details.endCC);\n  if (refDetails.startCC < targetCC && details.startCC < targetCC) {\n    refFrag = findFirstFragWithCC(refFragments, targetCC);\n    frag = findFirstFragWithCC(fragments, targetCC);\n  }\n  if (!refFrag || !frag) {\n    refFrag = refFragments[Math.floor(refFragments.length / 2)];\n    frag = findFirstFragWithCC(fragments, refFrag.cc) || fragments[Math.floor(fragments.length / 2)];\n  }\n  const refPDT = refFrag.programDateTime;\n  const targetPDT = frag.programDateTime;\n  if (!refPDT || !targetPDT) {\n    return;\n  }\n  const delta = (targetPDT - refPDT) / 1e3 - (frag.start - refFrag.start);\n  adjustSlidingStart(delta, details);\n}\nvar MIN_CHUNK_SIZE = Math.pow(2, 17);\nvar FragmentLoader = class {\n  constructor(config) {\n    this.config = void 0;\n    this.loader = null;\n    this.partLoadTimeout = -1;\n    this.config = config;\n  }\n  destroy() {\n    if (this.loader) {\n      this.loader.destroy();\n      this.loader = null;\n    }\n  }\n  abort() {\n    if (this.loader) {\n      this.loader.abort();\n    }\n  }\n  load(frag, onProgress) {\n    const url = frag.url;\n    if (!url) {\n      return Promise.reject(new LoadError({\n        type: ErrorTypes.NETWORK_ERROR,\n        details: ErrorDetails.FRAG_LOAD_ERROR,\n        fatal: false,\n        frag,\n        error: new Error(`Fragment does not have a ${url ? \"part list\" : \"url\"}`),\n        networkDetails: null\n      }));\n    }\n    this.abort();\n    const config = this.config;\n    const FragmentILoader = config.fLoader;\n    const DefaultILoader = config.loader;\n    return new Promise((resolve, reject) => {\n      if (this.loader) {\n        this.loader.destroy();\n      }\n      if (frag.gap) {\n        if (frag.tagList.some((tags) => tags[0] === \"GAP\")) {\n          reject(createGapLoadError(frag));\n          return;\n        } else {\n          frag.gap = false;\n        }\n      }\n      const loader = this.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n      const loaderContext = createLoaderContext(frag);\n      const loadPolicy = getLoaderConfigWithoutReties(config.fragLoadPolicy.default);\n      const loaderConfig = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0,\n        highWaterMark: frag.sn === \"initSegment\" ? Infinity : MIN_CHUNK_SIZE\n      };\n      frag.stats = loader.stats;\n      loader.load(loaderContext, loaderConfig, {\n        onSuccess: (response, stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          let payload = response.data;\n          if (context.resetIV && frag.decryptdata) {\n            frag.decryptdata.iv = new Uint8Array(payload.slice(0, 16));\n            payload = payload.slice(16);\n          }\n          resolve({\n            frag,\n            part: null,\n            payload,\n            networkDetails\n          });\n        },\n        onError: (response, context, networkDetails, stats) => {\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.FRAG_LOAD_ERROR,\n            fatal: false,\n            frag,\n            response: _objectSpread2({\n              url,\n              data: void 0\n            }, response),\n            error: new Error(`HTTP Error ${response.code} ${response.text}`),\n            networkDetails,\n            stats\n          }));\n        },\n        onAbort: (stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.INTERNAL_ABORTED,\n            fatal: false,\n            frag,\n            error: new Error(\"Aborted\"),\n            networkDetails,\n            stats\n          }));\n        },\n        onTimeout: (stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.FRAG_LOAD_TIMEOUT,\n            fatal: false,\n            frag,\n            error: new Error(`Timeout after ${loaderConfig.timeout}ms`),\n            networkDetails,\n            stats\n          }));\n        },\n        onProgress: (stats, context, data, networkDetails) => {\n          if (onProgress) {\n            onProgress({\n              frag,\n              part: null,\n              payload: data,\n              networkDetails\n            });\n          }\n        }\n      });\n    });\n  }\n  loadPart(frag, part, onProgress) {\n    this.abort();\n    const config = this.config;\n    const FragmentILoader = config.fLoader;\n    const DefaultILoader = config.loader;\n    return new Promise((resolve, reject) => {\n      if (this.loader) {\n        this.loader.destroy();\n      }\n      if (frag.gap || part.gap) {\n        reject(createGapLoadError(frag, part));\n        return;\n      }\n      const loader = this.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n      const loaderContext = createLoaderContext(frag, part);\n      const loadPolicy = getLoaderConfigWithoutReties(config.fragLoadPolicy.default);\n      const loaderConfig = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0,\n        highWaterMark: MIN_CHUNK_SIZE\n      };\n      part.stats = loader.stats;\n      loader.load(loaderContext, loaderConfig, {\n        onSuccess: (response, stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          this.updateStatsFromPart(frag, part);\n          const partLoadedData = {\n            frag,\n            part,\n            payload: response.data,\n            networkDetails\n          };\n          onProgress(partLoadedData);\n          resolve(partLoadedData);\n        },\n        onError: (response, context, networkDetails, stats) => {\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.FRAG_LOAD_ERROR,\n            fatal: false,\n            frag,\n            part,\n            response: _objectSpread2({\n              url: loaderContext.url,\n              data: void 0\n            }, response),\n            error: new Error(`HTTP Error ${response.code} ${response.text}`),\n            networkDetails,\n            stats\n          }));\n        },\n        onAbort: (stats, context, networkDetails) => {\n          frag.stats.aborted = part.stats.aborted;\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.INTERNAL_ABORTED,\n            fatal: false,\n            frag,\n            part,\n            error: new Error(\"Aborted\"),\n            networkDetails,\n            stats\n          }));\n        },\n        onTimeout: (stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.FRAG_LOAD_TIMEOUT,\n            fatal: false,\n            frag,\n            part,\n            error: new Error(`Timeout after ${loaderConfig.timeout}ms`),\n            networkDetails,\n            stats\n          }));\n        }\n      });\n    });\n  }\n  updateStatsFromPart(frag, part) {\n    const fragStats = frag.stats;\n    const partStats = part.stats;\n    const partTotal = partStats.total;\n    fragStats.loaded += partStats.loaded;\n    if (partTotal) {\n      const estTotalParts = Math.round(frag.duration / part.duration);\n      const estLoadedParts = Math.min(Math.round(fragStats.loaded / partTotal), estTotalParts);\n      const estRemainingParts = estTotalParts - estLoadedParts;\n      const estRemainingBytes = estRemainingParts * Math.round(fragStats.loaded / estLoadedParts);\n      fragStats.total = fragStats.loaded + estRemainingBytes;\n    } else {\n      fragStats.total = Math.max(fragStats.loaded, fragStats.total);\n    }\n    const fragLoading = fragStats.loading;\n    const partLoading = partStats.loading;\n    if (fragLoading.start) {\n      fragLoading.first += partLoading.first - partLoading.start;\n    } else {\n      fragLoading.start = partLoading.start;\n      fragLoading.first = partLoading.first;\n    }\n    fragLoading.end = partLoading.end;\n  }\n  resetLoader(frag, loader) {\n    frag.loader = null;\n    if (this.loader === loader) {\n      self.clearTimeout(this.partLoadTimeout);\n      this.loader = null;\n    }\n    loader.destroy();\n  }\n};\nfunction createLoaderContext(frag, part = null) {\n  const segment = part || frag;\n  const loaderContext = {\n    frag,\n    part,\n    responseType: \"arraybuffer\",\n    url: segment.url,\n    headers: {},\n    rangeStart: 0,\n    rangeEnd: 0\n  };\n  const start = segment.byteRangeStartOffset;\n  const end = segment.byteRangeEndOffset;\n  if (isFiniteNumber(start) && isFiniteNumber(end)) {\n    var _frag$decryptdata;\n    let byteRangeStart = start;\n    let byteRangeEnd = end;\n    if (frag.sn === \"initSegment\" && ((_frag$decryptdata = frag.decryptdata) == null ? void 0 : _frag$decryptdata.method) === \"AES-128\") {\n      const fragmentLen = end - start;\n      if (fragmentLen % 16) {\n        byteRangeEnd = end + (16 - fragmentLen % 16);\n      }\n      if (start !== 0) {\n        loaderContext.resetIV = true;\n        byteRangeStart = start - 16;\n      }\n    }\n    loaderContext.rangeStart = byteRangeStart;\n    loaderContext.rangeEnd = byteRangeEnd;\n  }\n  return loaderContext;\n}\nfunction createGapLoadError(frag, part) {\n  const error = new Error(`GAP ${frag.gap ? \"tag\" : \"attribute\"} found`);\n  const errorData = {\n    type: ErrorTypes.MEDIA_ERROR,\n    details: ErrorDetails.FRAG_GAP,\n    fatal: false,\n    frag,\n    error,\n    networkDetails: null\n  };\n  if (part) {\n    errorData.part = part;\n  }\n  (part ? part : frag).stats.aborted = true;\n  return new LoadError(errorData);\n}\nvar LoadError = class extends Error {\n  constructor(data) {\n    super(data.error.message);\n    this.data = void 0;\n    this.data = data;\n  }\n};\nvar AESCrypto = class {\n  constructor(subtle, iv) {\n    this.subtle = void 0;\n    this.aesIV = void 0;\n    this.subtle = subtle;\n    this.aesIV = iv;\n  }\n  decrypt(data, key) {\n    return this.subtle.decrypt({\n      name: \"AES-CBC\",\n      iv: this.aesIV\n    }, key, data);\n  }\n};\nvar FastAESKey = class {\n  constructor(subtle, key) {\n    this.subtle = void 0;\n    this.key = void 0;\n    this.subtle = subtle;\n    this.key = key;\n  }\n  expandKey() {\n    return this.subtle.importKey(\"raw\", this.key, {\n      name: \"AES-CBC\"\n    }, false, [\"encrypt\", \"decrypt\"]);\n  }\n};\nfunction removePadding(array) {\n  const outputBytes = array.byteLength;\n  const paddingBytes = outputBytes && new DataView(array.buffer).getUint8(outputBytes - 1);\n  if (paddingBytes) {\n    return sliceUint8(array, 0, outputBytes - paddingBytes);\n  }\n  return array;\n}\nvar AESDecryptor = class {\n  constructor() {\n    this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];\n    this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n    this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n    this.sBox = new Uint32Array(256);\n    this.invSBox = new Uint32Array(256);\n    this.key = new Uint32Array(0);\n    this.ksRows = 0;\n    this.keySize = 0;\n    this.keySchedule = void 0;\n    this.invKeySchedule = void 0;\n    this.initTable();\n  }\n  // Using view.getUint32() also swaps the byte order.\n  uint8ArrayToUint32Array_(arrayBuffer) {\n    const view = new DataView(arrayBuffer);\n    const newArray = new Uint32Array(4);\n    for (let i2 = 0; i2 < 4; i2++) {\n      newArray[i2] = view.getUint32(i2 * 4);\n    }\n    return newArray;\n  }\n  initTable() {\n    const sBox = this.sBox;\n    const invSBox = this.invSBox;\n    const subMix = this.subMix;\n    const subMix0 = subMix[0];\n    const subMix1 = subMix[1];\n    const subMix2 = subMix[2];\n    const subMix3 = subMix[3];\n    const invSubMix = this.invSubMix;\n    const invSubMix0 = invSubMix[0];\n    const invSubMix1 = invSubMix[1];\n    const invSubMix2 = invSubMix[2];\n    const invSubMix3 = invSubMix[3];\n    const d4 = new Uint32Array(256);\n    let x4 = 0;\n    let xi2 = 0;\n    let i2 = 0;\n    for (i2 = 0; i2 < 256; i2++) {\n      if (i2 < 128) {\n        d4[i2] = i2 << 1;\n      } else {\n        d4[i2] = i2 << 1 ^ 283;\n      }\n    }\n    for (i2 = 0; i2 < 256; i2++) {\n      let sx = xi2 ^ xi2 << 1 ^ xi2 << 2 ^ xi2 << 3 ^ xi2 << 4;\n      sx = sx >>> 8 ^ sx & 255 ^ 99;\n      sBox[x4] = sx;\n      invSBox[sx] = x4;\n      const x22 = d4[x4];\n      const x42 = d4[x22];\n      const x8 = d4[x42];\n      let t2 = d4[sx] * 257 ^ sx * 16843008;\n      subMix0[x4] = t2 << 24 | t2 >>> 8;\n      subMix1[x4] = t2 << 16 | t2 >>> 16;\n      subMix2[x4] = t2 << 8 | t2 >>> 24;\n      subMix3[x4] = t2;\n      t2 = x8 * 16843009 ^ x42 * 65537 ^ x22 * 257 ^ x4 * 16843008;\n      invSubMix0[sx] = t2 << 24 | t2 >>> 8;\n      invSubMix1[sx] = t2 << 16 | t2 >>> 16;\n      invSubMix2[sx] = t2 << 8 | t2 >>> 24;\n      invSubMix3[sx] = t2;\n      if (!x4) {\n        x4 = xi2 = 1;\n      } else {\n        x4 = x22 ^ d4[d4[d4[x8 ^ x22]]];\n        xi2 ^= d4[d4[xi2]];\n      }\n    }\n  }\n  expandKey(keyBuffer) {\n    const key = this.uint8ArrayToUint32Array_(keyBuffer);\n    let sameKey = true;\n    let offset = 0;\n    while (offset < key.length && sameKey) {\n      sameKey = key[offset] === this.key[offset];\n      offset++;\n    }\n    if (sameKey) {\n      return;\n    }\n    this.key = key;\n    const keySize = this.keySize = key.length;\n    if (keySize !== 4 && keySize !== 6 && keySize !== 8) {\n      throw new Error(\"Invalid aes key size=\" + keySize);\n    }\n    const ksRows = this.ksRows = (keySize + 6 + 1) * 4;\n    let ksRow;\n    let invKsRow;\n    const keySchedule = this.keySchedule = new Uint32Array(ksRows);\n    const invKeySchedule = this.invKeySchedule = new Uint32Array(ksRows);\n    const sbox = this.sBox;\n    const rcon = this.rcon;\n    const invSubMix = this.invSubMix;\n    const invSubMix0 = invSubMix[0];\n    const invSubMix1 = invSubMix[1];\n    const invSubMix2 = invSubMix[2];\n    const invSubMix3 = invSubMix[3];\n    let prev;\n    let t2;\n    for (ksRow = 0; ksRow < ksRows; ksRow++) {\n      if (ksRow < keySize) {\n        prev = keySchedule[ksRow] = key[ksRow];\n        continue;\n      }\n      t2 = prev;\n      if (ksRow % keySize === 0) {\n        t2 = t2 << 8 | t2 >>> 24;\n        t2 = sbox[t2 >>> 24] << 24 | sbox[t2 >>> 16 & 255] << 16 | sbox[t2 >>> 8 & 255] << 8 | sbox[t2 & 255];\n        t2 ^= rcon[ksRow / keySize | 0] << 24;\n      } else if (keySize > 6 && ksRow % keySize === 4) {\n        t2 = sbox[t2 >>> 24] << 24 | sbox[t2 >>> 16 & 255] << 16 | sbox[t2 >>> 8 & 255] << 8 | sbox[t2 & 255];\n      }\n      keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t2) >>> 0;\n    }\n    for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n      ksRow = ksRows - invKsRow;\n      if (invKsRow & 3) {\n        t2 = keySchedule[ksRow];\n      } else {\n        t2 = keySchedule[ksRow - 4];\n      }\n      if (invKsRow < 4 || ksRow <= 4) {\n        invKeySchedule[invKsRow] = t2;\n      } else {\n        invKeySchedule[invKsRow] = invSubMix0[sbox[t2 >>> 24]] ^ invSubMix1[sbox[t2 >>> 16 & 255]] ^ invSubMix2[sbox[t2 >>> 8 & 255]] ^ invSubMix3[sbox[t2 & 255]];\n      }\n      invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0;\n    }\n  }\n  // Adding this as a method greatly improves performance.\n  networkToHostOrderSwap(word) {\n    return word << 24 | (word & 65280) << 8 | (word & 16711680) >> 8 | word >>> 24;\n  }\n  decrypt(inputArrayBuffer, offset, aesIV) {\n    const nRounds = this.keySize + 6;\n    const invKeySchedule = this.invKeySchedule;\n    const invSBOX = this.invSBox;\n    const invSubMix = this.invSubMix;\n    const invSubMix0 = invSubMix[0];\n    const invSubMix1 = invSubMix[1];\n    const invSubMix2 = invSubMix[2];\n    const invSubMix3 = invSubMix[3];\n    const initVector = this.uint8ArrayToUint32Array_(aesIV);\n    let initVector0 = initVector[0];\n    let initVector1 = initVector[1];\n    let initVector2 = initVector[2];\n    let initVector3 = initVector[3];\n    const inputInt32 = new Int32Array(inputArrayBuffer);\n    const outputInt32 = new Int32Array(inputInt32.length);\n    let t0, t1, t2, t3;\n    let s0, s1, s2, s3;\n    let inputWords0, inputWords1, inputWords2, inputWords3;\n    let ksRow, i2;\n    const swapWord = this.networkToHostOrderSwap;\n    while (offset < inputInt32.length) {\n      inputWords0 = swapWord(inputInt32[offset]);\n      inputWords1 = swapWord(inputInt32[offset + 1]);\n      inputWords2 = swapWord(inputInt32[offset + 2]);\n      inputWords3 = swapWord(inputInt32[offset + 3]);\n      s0 = inputWords0 ^ invKeySchedule[0];\n      s1 = inputWords3 ^ invKeySchedule[1];\n      s2 = inputWords2 ^ invKeySchedule[2];\n      s3 = inputWords1 ^ invKeySchedule[3];\n      ksRow = 4;\n      for (i2 = 1; i2 < nRounds; i2++) {\n        t0 = invSubMix0[s0 >>> 24] ^ invSubMix1[s1 >> 16 & 255] ^ invSubMix2[s2 >> 8 & 255] ^ invSubMix3[s3 & 255] ^ invKeySchedule[ksRow];\n        t1 = invSubMix0[s1 >>> 24] ^ invSubMix1[s2 >> 16 & 255] ^ invSubMix2[s3 >> 8 & 255] ^ invSubMix3[s0 & 255] ^ invKeySchedule[ksRow + 1];\n        t2 = invSubMix0[s2 >>> 24] ^ invSubMix1[s3 >> 16 & 255] ^ invSubMix2[s0 >> 8 & 255] ^ invSubMix3[s1 & 255] ^ invKeySchedule[ksRow + 2];\n        t3 = invSubMix0[s3 >>> 24] ^ invSubMix1[s0 >> 16 & 255] ^ invSubMix2[s1 >> 8 & 255] ^ invSubMix3[s2 & 255] ^ invKeySchedule[ksRow + 3];\n        s0 = t0;\n        s1 = t1;\n        s2 = t2;\n        s3 = t3;\n        ksRow = ksRow + 4;\n      }\n      t0 = invSBOX[s0 >>> 24] << 24 ^ invSBOX[s1 >> 16 & 255] << 16 ^ invSBOX[s2 >> 8 & 255] << 8 ^ invSBOX[s3 & 255] ^ invKeySchedule[ksRow];\n      t1 = invSBOX[s1 >>> 24] << 24 ^ invSBOX[s2 >> 16 & 255] << 16 ^ invSBOX[s3 >> 8 & 255] << 8 ^ invSBOX[s0 & 255] ^ invKeySchedule[ksRow + 1];\n      t2 = invSBOX[s2 >>> 24] << 24 ^ invSBOX[s3 >> 16 & 255] << 16 ^ invSBOX[s0 >> 8 & 255] << 8 ^ invSBOX[s1 & 255] ^ invKeySchedule[ksRow + 2];\n      t3 = invSBOX[s3 >>> 24] << 24 ^ invSBOX[s0 >> 16 & 255] << 16 ^ invSBOX[s1 >> 8 & 255] << 8 ^ invSBOX[s2 & 255] ^ invKeySchedule[ksRow + 3];\n      outputInt32[offset] = swapWord(t0 ^ initVector0);\n      outputInt32[offset + 1] = swapWord(t3 ^ initVector1);\n      outputInt32[offset + 2] = swapWord(t2 ^ initVector2);\n      outputInt32[offset + 3] = swapWord(t1 ^ initVector3);\n      initVector0 = inputWords0;\n      initVector1 = inputWords1;\n      initVector2 = inputWords2;\n      initVector3 = inputWords3;\n      offset = offset + 4;\n    }\n    return outputInt32.buffer;\n  }\n};\nvar CHUNK_SIZE = 16;\nvar Decrypter = class {\n  constructor(config, {\n    removePKCS7Padding = true\n  } = {}) {\n    this.logEnabled = true;\n    this.removePKCS7Padding = void 0;\n    this.subtle = null;\n    this.softwareDecrypter = null;\n    this.key = null;\n    this.fastAesKey = null;\n    this.remainderData = null;\n    this.currentIV = null;\n    this.currentResult = null;\n    this.useSoftware = void 0;\n    this.useSoftware = config.enableSoftwareAES;\n    this.removePKCS7Padding = removePKCS7Padding;\n    if (removePKCS7Padding) {\n      try {\n        const browserCrypto = self.crypto;\n        if (browserCrypto) {\n          this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n        }\n      } catch (e) {\n      }\n    }\n    this.useSoftware = !this.subtle;\n  }\n  destroy() {\n    this.subtle = null;\n    this.softwareDecrypter = null;\n    this.key = null;\n    this.fastAesKey = null;\n    this.remainderData = null;\n    this.currentIV = null;\n    this.currentResult = null;\n  }\n  isSync() {\n    return this.useSoftware;\n  }\n  flush() {\n    const {\n      currentResult,\n      remainderData\n    } = this;\n    if (!currentResult || remainderData) {\n      this.reset();\n      return null;\n    }\n    const data = new Uint8Array(currentResult);\n    this.reset();\n    if (this.removePKCS7Padding) {\n      return removePadding(data);\n    }\n    return data;\n  }\n  reset() {\n    this.currentResult = null;\n    this.currentIV = null;\n    this.remainderData = null;\n    if (this.softwareDecrypter) {\n      this.softwareDecrypter = null;\n    }\n  }\n  decrypt(data, key, iv) {\n    if (this.useSoftware) {\n      return new Promise((resolve, reject) => {\n        this.softwareDecrypt(new Uint8Array(data), key, iv);\n        const decryptResult = this.flush();\n        if (decryptResult) {\n          resolve(decryptResult.buffer);\n        } else {\n          reject(new Error(\"[softwareDecrypt] Failed to decrypt data\"));\n        }\n      });\n    }\n    return this.webCryptoDecrypt(new Uint8Array(data), key, iv);\n  }\n  // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached\n  // data is handled in the flush() call\n  softwareDecrypt(data, key, iv) {\n    const {\n      currentIV,\n      currentResult,\n      remainderData\n    } = this;\n    this.logOnce(\"JS AES decrypt\");\n    if (remainderData) {\n      data = appendUint8Array(remainderData, data);\n      this.remainderData = null;\n    }\n    const currentChunk = this.getValidChunk(data);\n    if (!currentChunk.length) {\n      return null;\n    }\n    if (currentIV) {\n      iv = currentIV;\n    }\n    let softwareDecrypter = this.softwareDecrypter;\n    if (!softwareDecrypter) {\n      softwareDecrypter = this.softwareDecrypter = new AESDecryptor();\n    }\n    softwareDecrypter.expandKey(key);\n    const result = currentResult;\n    this.currentResult = softwareDecrypter.decrypt(currentChunk.buffer, 0, iv);\n    this.currentIV = sliceUint8(currentChunk, -16).buffer;\n    if (!result) {\n      return null;\n    }\n    return result;\n  }\n  webCryptoDecrypt(data, key, iv) {\n    if (this.key !== key || !this.fastAesKey) {\n      if (!this.subtle) {\n        return Promise.resolve(this.onWebCryptoError(data, key, iv));\n      }\n      this.key = key;\n      this.fastAesKey = new FastAESKey(this.subtle, key);\n    }\n    return this.fastAesKey.expandKey().then((aesKey) => {\n      if (!this.subtle) {\n        return Promise.reject(new Error(\"web crypto not initialized\"));\n      }\n      this.logOnce(\"WebCrypto AES decrypt\");\n      const crypto2 = new AESCrypto(this.subtle, new Uint8Array(iv));\n      return crypto2.decrypt(data.buffer, aesKey);\n    }).catch((err) => {\n      logger.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${err.name}: ${err.message}`);\n      return this.onWebCryptoError(data, key, iv);\n    });\n  }\n  onWebCryptoError(data, key, iv) {\n    this.useSoftware = true;\n    this.logEnabled = true;\n    this.softwareDecrypt(data, key, iv);\n    const decryptResult = this.flush();\n    if (decryptResult) {\n      return decryptResult.buffer;\n    }\n    throw new Error(\"WebCrypto and softwareDecrypt: failed to decrypt data\");\n  }\n  getValidChunk(data) {\n    let currentChunk = data;\n    const splitPoint = data.length - data.length % CHUNK_SIZE;\n    if (splitPoint !== data.length) {\n      currentChunk = sliceUint8(data, 0, splitPoint);\n      this.remainderData = sliceUint8(data, splitPoint);\n    }\n    return currentChunk;\n  }\n  logOnce(msg) {\n    if (!this.logEnabled) {\n      return;\n    }\n    logger.log(`[decrypter]: ${msg}`);\n    this.logEnabled = false;\n  }\n};\nvar TimeRanges = {\n  toString: function(r10) {\n    let log = \"\";\n    const len = r10.length;\n    for (let i2 = 0; i2 < len; i2++) {\n      log += `[${r10.start(i2).toFixed(3)}-${r10.end(i2).toFixed(3)}]`;\n    }\n    return log;\n  }\n};\nvar State = {\n  STOPPED: \"STOPPED\",\n  IDLE: \"IDLE\",\n  KEY_LOADING: \"KEY_LOADING\",\n  FRAG_LOADING: \"FRAG_LOADING\",\n  FRAG_LOADING_WAITING_RETRY: \"FRAG_LOADING_WAITING_RETRY\",\n  WAITING_TRACK: \"WAITING_TRACK\",\n  PARSING: \"PARSING\",\n  PARSED: \"PARSED\",\n  ENDED: \"ENDED\",\n  ERROR: \"ERROR\",\n  WAITING_INIT_PTS: \"WAITING_INIT_PTS\",\n  WAITING_LEVEL: \"WAITING_LEVEL\"\n};\nvar BaseStreamController = class extends TaskLoop {\n  constructor(hls, fragmentTracker, keyLoader, logPrefix, playlistType) {\n    super();\n    this.hls = void 0;\n    this.fragPrevious = null;\n    this.fragCurrent = null;\n    this.fragmentTracker = void 0;\n    this.transmuxer = null;\n    this._state = State.STOPPED;\n    this.playlistType = void 0;\n    this.media = null;\n    this.mediaBuffer = null;\n    this.config = void 0;\n    this.bitrateTest = false;\n    this.lastCurrentTime = 0;\n    this.nextLoadPosition = 0;\n    this.startPosition = 0;\n    this.startTimeOffset = null;\n    this.loadedmetadata = false;\n    this.retryDate = 0;\n    this.levels = null;\n    this.fragmentLoader = void 0;\n    this.keyLoader = void 0;\n    this.levelLastLoaded = null;\n    this.startFragRequested = false;\n    this.decrypter = void 0;\n    this.initPTS = [];\n    this.buffering = true;\n    this.onvseeking = null;\n    this.onvended = null;\n    this.logPrefix = \"\";\n    this.log = void 0;\n    this.warn = void 0;\n    this.playlistType = playlistType;\n    this.logPrefix = logPrefix;\n    this.log = logger.log.bind(logger, `${logPrefix}:`);\n    this.warn = logger.warn.bind(logger, `${logPrefix}:`);\n    this.hls = hls;\n    this.fragmentLoader = new FragmentLoader(hls.config);\n    this.keyLoader = keyLoader;\n    this.fragmentTracker = fragmentTracker;\n    this.config = hls.config;\n    this.decrypter = new Decrypter(hls.config);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n  }\n  doTick() {\n    this.onTickEnd();\n  }\n  onTickEnd() {\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  startLoad(startPosition) {\n  }\n  stopLoad() {\n    this.fragmentLoader.abort();\n    this.keyLoader.abort(this.playlistType);\n    const frag = this.fragCurrent;\n    if (frag != null && frag.loader) {\n      frag.abortRequests();\n      this.fragmentTracker.removeFragment(frag);\n    }\n    this.resetTransmuxer();\n    this.fragCurrent = null;\n    this.fragPrevious = null;\n    this.clearInterval();\n    this.clearNextTick();\n    this.state = State.STOPPED;\n  }\n  pauseBuffering() {\n    this.buffering = false;\n  }\n  resumeBuffering() {\n    this.buffering = true;\n  }\n  _streamEnded(bufferInfo, levelDetails) {\n    if (levelDetails.live || bufferInfo.nextStart || !bufferInfo.end || !this.media) {\n      return false;\n    }\n    const partList = levelDetails.partList;\n    if (partList != null && partList.length) {\n      const lastPart = partList[partList.length - 1];\n      const lastPartBuffered = BufferHelper.isBuffered(this.media, lastPart.start + lastPart.duration / 2);\n      return lastPartBuffered;\n    }\n    const playlistType = levelDetails.fragments[levelDetails.fragments.length - 1].type;\n    return this.fragmentTracker.isEndListAppended(playlistType);\n  }\n  getLevelDetails() {\n    if (this.levels && this.levelLastLoaded !== null) {\n      var _this$levelLastLoaded;\n      return (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details;\n    }\n  }\n  onMediaAttached(event, data) {\n    const media = this.media = this.mediaBuffer = data.media;\n    this.onvseeking = this.onMediaSeeking.bind(this);\n    this.onvended = this.onMediaEnded.bind(this);\n    media.addEventListener(\"seeking\", this.onvseeking);\n    media.addEventListener(\"ended\", this.onvended);\n    const config = this.config;\n    if (this.levels && config.autoStartLoad && this.state === State.STOPPED) {\n      this.startLoad(config.startPosition);\n    }\n  }\n  onMediaDetaching() {\n    const media = this.media;\n    if (media != null && media.ended) {\n      this.log(\"MSE detaching and video ended, reset startPosition\");\n      this.startPosition = this.lastCurrentTime = 0;\n    }\n    if (media && this.onvseeking && this.onvended) {\n      media.removeEventListener(\"seeking\", this.onvseeking);\n      media.removeEventListener(\"ended\", this.onvended);\n      this.onvseeking = this.onvended = null;\n    }\n    if (this.keyLoader) {\n      this.keyLoader.detach();\n    }\n    this.media = this.mediaBuffer = null;\n    this.loadedmetadata = false;\n    this.fragmentTracker.removeAllFragments();\n    this.stopLoad();\n  }\n  onMediaSeeking() {\n    const {\n      config,\n      fragCurrent,\n      media,\n      mediaBuffer,\n      state\n    } = this;\n    const currentTime = media ? media.currentTime : 0;\n    const bufferInfo = BufferHelper.bufferInfo(mediaBuffer ? mediaBuffer : media, currentTime, config.maxBufferHole);\n    this.log(`media seeking to ${isFiniteNumber(currentTime) ? currentTime.toFixed(3) : currentTime}, state: ${state}`);\n    if (this.state === State.ENDED) {\n      this.resetLoadingState();\n    } else if (fragCurrent) {\n      const tolerance = config.maxFragLookUpTolerance;\n      const fragStartOffset = fragCurrent.start - tolerance;\n      const fragEndOffset = fragCurrent.start + fragCurrent.duration + tolerance;\n      if (!bufferInfo.len || fragEndOffset < bufferInfo.start || fragStartOffset > bufferInfo.end) {\n        const pastFragment = currentTime > fragEndOffset;\n        if (currentTime < fragStartOffset || pastFragment) {\n          if (pastFragment && fragCurrent.loader) {\n            this.log(\"seeking outside of buffer while fragment load in progress, cancel fragment load\");\n            fragCurrent.abortRequests();\n            this.resetLoadingState();\n          }\n          this.fragPrevious = null;\n        }\n      }\n    }\n    if (media) {\n      this.fragmentTracker.removeFragmentsInRange(currentTime, Infinity, this.playlistType, true);\n      this.lastCurrentTime = currentTime;\n    }\n    if (!this.loadedmetadata && !bufferInfo.len) {\n      this.nextLoadPosition = this.startPosition = currentTime;\n    }\n    this.tickImmediate();\n  }\n  onMediaEnded() {\n    this.startPosition = this.lastCurrentTime = 0;\n  }\n  onManifestLoaded(event, data) {\n    this.startTimeOffset = data.startTimeOffset;\n    this.initPTS = [];\n  }\n  onHandlerDestroying() {\n    this.hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    this.stopLoad();\n    super.onHandlerDestroying();\n    this.hls = null;\n  }\n  onHandlerDestroyed() {\n    this.state = State.STOPPED;\n    if (this.fragmentLoader) {\n      this.fragmentLoader.destroy();\n    }\n    if (this.keyLoader) {\n      this.keyLoader.destroy();\n    }\n    if (this.decrypter) {\n      this.decrypter.destroy();\n    }\n    this.hls = this.log = this.warn = this.decrypter = this.keyLoader = this.fragmentLoader = this.fragmentTracker = null;\n    super.onHandlerDestroyed();\n  }\n  loadFragment(frag, level, targetBufferTime) {\n    this._loadFragForPlayback(frag, level, targetBufferTime);\n  }\n  _loadFragForPlayback(frag, level, targetBufferTime) {\n    const progressCallback = (data) => {\n      if (this.fragContextChanged(frag)) {\n        this.warn(`Fragment ${frag.sn}${data.part ? \" p: \" + data.part.index : \"\"} of level ${frag.level} was dropped during download.`);\n        this.fragmentTracker.removeFragment(frag);\n        return;\n      }\n      frag.stats.chunkCount++;\n      this._handleFragmentLoadProgress(data);\n    };\n    this._doFragLoad(frag, level, targetBufferTime, progressCallback).then((data) => {\n      if (!data) {\n        return;\n      }\n      const state = this.state;\n      if (this.fragContextChanged(frag)) {\n        if (state === State.FRAG_LOADING || !this.fragCurrent && state === State.PARSING) {\n          this.fragmentTracker.removeFragment(frag);\n          this.state = State.IDLE;\n        }\n        return;\n      }\n      if (\"payload\" in data) {\n        this.log(`Loaded fragment ${frag.sn} of level ${frag.level}`);\n        this.hls.trigger(Events.FRAG_LOADED, data);\n      }\n      this._handleFragmentLoadComplete(data);\n    }).catch((reason) => {\n      if (this.state === State.STOPPED || this.state === State.ERROR) {\n        return;\n      }\n      this.warn(`Frag error: ${(reason == null ? void 0 : reason.message) || reason}`);\n      this.resetFragmentLoading(frag);\n    });\n  }\n  clearTrackerIfNeeded(frag) {\n    var _this$mediaBuffer;\n    const {\n      fragmentTracker\n    } = this;\n    const fragState = fragmentTracker.getState(frag);\n    if (fragState === FragmentState.APPENDING) {\n      const playlistType = frag.type;\n      const bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, playlistType);\n      const minForwardBufferLength = Math.max(frag.duration, bufferedInfo ? bufferedInfo.len : this.config.maxBufferLength);\n      const backtrackFragment = this.backtrackFragment;\n      const backtracked = backtrackFragment ? frag.sn - backtrackFragment.sn : 0;\n      if (backtracked === 1 || this.reduceMaxBufferLength(minForwardBufferLength, frag.duration)) {\n        fragmentTracker.removeFragment(frag);\n      }\n    } else if (((_this$mediaBuffer = this.mediaBuffer) == null ? void 0 : _this$mediaBuffer.buffered.length) === 0) {\n      fragmentTracker.removeAllFragments();\n    } else if (fragmentTracker.hasParts(frag.type)) {\n      fragmentTracker.detectPartialFragments({\n        frag,\n        part: null,\n        stats: frag.stats,\n        id: frag.type\n      });\n      if (fragmentTracker.getState(frag) === FragmentState.PARTIAL) {\n        fragmentTracker.removeFragment(frag);\n      }\n    }\n  }\n  checkLiveUpdate(details) {\n    if (details.updated && !details.live) {\n      const lastFragment = details.fragments[details.fragments.length - 1];\n      this.fragmentTracker.detectPartialFragments({\n        frag: lastFragment,\n        part: null,\n        stats: lastFragment.stats,\n        id: lastFragment.type\n      });\n    }\n    if (!details.fragments[0]) {\n      details.deltaUpdateFailed = true;\n    }\n  }\n  flushMainBuffer(startOffset, endOffset, type = null) {\n    if (!(startOffset - endOffset)) {\n      return;\n    }\n    const flushScope = {\n      startOffset,\n      endOffset,\n      type\n    };\n    this.hls.trigger(Events.BUFFER_FLUSHING, flushScope);\n  }\n  _loadInitSegment(frag, level) {\n    this._doFragLoad(frag, level).then((data) => {\n      if (!data || this.fragContextChanged(frag) || !this.levels) {\n        throw new Error(\"init load aborted\");\n      }\n      return data;\n    }).then((data) => {\n      const {\n        hls\n      } = this;\n      const {\n        payload\n      } = data;\n      const decryptData = frag.decryptdata;\n      if (payload && payload.byteLength > 0 && decryptData != null && decryptData.key && decryptData.iv && decryptData.method === \"AES-128\") {\n        const startTime = self.performance.now();\n        return this.decrypter.decrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).catch((err) => {\n          hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.FRAG_DECRYPT_ERROR,\n            fatal: false,\n            error: err,\n            reason: err.message,\n            frag\n          });\n          throw err;\n        }).then((decryptedData) => {\n          const endTime = self.performance.now();\n          hls.trigger(Events.FRAG_DECRYPTED, {\n            frag,\n            payload: decryptedData,\n            stats: {\n              tstart: startTime,\n              tdecrypt: endTime\n            }\n          });\n          data.payload = decryptedData;\n          return this.completeInitSegmentLoad(data);\n        });\n      }\n      return this.completeInitSegmentLoad(data);\n    }).catch((reason) => {\n      if (this.state === State.STOPPED || this.state === State.ERROR) {\n        return;\n      }\n      this.warn(reason);\n      this.resetFragmentLoading(frag);\n    });\n  }\n  completeInitSegmentLoad(data) {\n    const {\n      levels\n    } = this;\n    if (!levels) {\n      throw new Error(\"init load aborted, missing levels\");\n    }\n    const stats = data.frag.stats;\n    this.state = State.IDLE;\n    data.frag.data = new Uint8Array(data.payload);\n    stats.parsing.start = stats.buffering.start = self.performance.now();\n    stats.parsing.end = stats.buffering.end = self.performance.now();\n    this.tick();\n  }\n  fragContextChanged(frag) {\n    const {\n      fragCurrent\n    } = this;\n    return !frag || !fragCurrent || frag.sn !== fragCurrent.sn || frag.level !== fragCurrent.level;\n  }\n  fragBufferedComplete(frag, part) {\n    var _frag$startPTS, _frag$endPTS, _this$fragCurrent, _this$fragPrevious;\n    const media = this.mediaBuffer ? this.mediaBuffer : this.media;\n    this.log(`Buffered ${frag.type} sn: ${frag.sn}${part ? \" part: \" + part.index : \"\"} of ${this.playlistType === PlaylistLevelType.MAIN ? \"level\" : \"track\"} ${frag.level} (frag:[${((_frag$startPTS = frag.startPTS) != null ? _frag$startPTS : NaN).toFixed(3)}-${((_frag$endPTS = frag.endPTS) != null ? _frag$endPTS : NaN).toFixed(3)}] > buffer:${media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : \"(detached)\"})`);\n    if (frag.sn !== \"initSegment\") {\n      var _this$levels;\n      if (frag.type !== PlaylistLevelType.SUBTITLE) {\n        const el = frag.elementaryStreams;\n        if (!Object.keys(el).some((type) => !!el[type])) {\n          this.state = State.IDLE;\n          return;\n        }\n      }\n      const level = (_this$levels = this.levels) == null ? void 0 : _this$levels[frag.level];\n      if (level != null && level.fragmentError) {\n        this.log(`Resetting level fragment error count of ${level.fragmentError} on frag buffered`);\n        level.fragmentError = 0;\n      }\n    }\n    this.state = State.IDLE;\n    if (!media) {\n      return;\n    }\n    if (!this.loadedmetadata && frag.type == PlaylistLevelType.MAIN && media.buffered.length && ((_this$fragCurrent = this.fragCurrent) == null ? void 0 : _this$fragCurrent.sn) === ((_this$fragPrevious = this.fragPrevious) == null ? void 0 : _this$fragPrevious.sn)) {\n      this.loadedmetadata = true;\n      this.seekToStartPos();\n    }\n    this.tick();\n  }\n  seekToStartPos() {\n  }\n  _handleFragmentLoadComplete(fragLoadedEndData) {\n    const {\n      transmuxer\n    } = this;\n    if (!transmuxer) {\n      return;\n    }\n    const {\n      frag,\n      part,\n      partsLoaded\n    } = fragLoadedEndData;\n    const complete = !partsLoaded || partsLoaded.length === 0 || partsLoaded.some((fragLoaded) => !fragLoaded);\n    const chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount + 1, 0, part ? part.index : -1, !complete);\n    transmuxer.flush(chunkMeta);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  _handleFragmentLoadProgress(frag) {\n  }\n  _doFragLoad(frag, level, targetBufferTime = null, progressCallback) {\n    var _frag$decryptdata;\n    const details = level == null ? void 0 : level.details;\n    if (!this.levels || !details) {\n      throw new Error(`frag load aborted, missing level${details ? \"\" : \" detail\"}s`);\n    }\n    let keyLoadingPromise = null;\n    if (frag.encrypted && !((_frag$decryptdata = frag.decryptdata) != null && _frag$decryptdata.key)) {\n      this.log(`Loading key for ${frag.sn} of [${details.startSN}-${details.endSN}], ${this.logPrefix === \"[stream-controller]\" ? \"level\" : \"track\"} ${frag.level}`);\n      this.state = State.KEY_LOADING;\n      this.fragCurrent = frag;\n      keyLoadingPromise = this.keyLoader.load(frag).then((keyLoadedData) => {\n        if (!this.fragContextChanged(keyLoadedData.frag)) {\n          this.hls.trigger(Events.KEY_LOADED, keyLoadedData);\n          if (this.state === State.KEY_LOADING) {\n            this.state = State.IDLE;\n          }\n          return keyLoadedData;\n        }\n      });\n      this.hls.trigger(Events.KEY_LOADING, {\n        frag\n      });\n      if (this.fragCurrent === null) {\n        keyLoadingPromise = Promise.reject(new Error(`frag load aborted, context changed in KEY_LOADING`));\n      }\n    } else if (!frag.encrypted && details.encryptedFragments.length) {\n      this.keyLoader.loadClear(frag, details.encryptedFragments);\n    }\n    targetBufferTime = Math.max(frag.start, targetBufferTime || 0);\n    if (this.config.lowLatencyMode && frag.sn !== \"initSegment\") {\n      const partList = details.partList;\n      if (partList && progressCallback) {\n        if (targetBufferTime > frag.end && details.fragmentHint) {\n          frag = details.fragmentHint;\n        }\n        const partIndex = this.getNextPart(partList, frag, targetBufferTime);\n        if (partIndex > -1) {\n          const part = partList[partIndex];\n          this.log(`Loading part sn: ${frag.sn} p: ${part.index} cc: ${frag.cc} of playlist [${details.startSN}-${details.endSN}] parts [0-${partIndex}-${partList.length - 1}] ${this.logPrefix === \"[stream-controller]\" ? \"level\" : \"track\"}: ${frag.level}, target: ${parseFloat(targetBufferTime.toFixed(3))}`);\n          this.nextLoadPosition = part.start + part.duration;\n          this.state = State.FRAG_LOADING;\n          let _result;\n          if (keyLoadingPromise) {\n            _result = keyLoadingPromise.then((keyLoadedData) => {\n              if (!keyLoadedData || this.fragContextChanged(keyLoadedData.frag)) {\n                return null;\n              }\n              return this.doFragPartsLoad(frag, part, level, progressCallback);\n            }).catch((error) => this.handleFragLoadError(error));\n          } else {\n            _result = this.doFragPartsLoad(frag, part, level, progressCallback).catch((error) => this.handleFragLoadError(error));\n          }\n          this.hls.trigger(Events.FRAG_LOADING, {\n            frag,\n            part,\n            targetBufferTime\n          });\n          if (this.fragCurrent === null) {\n            return Promise.reject(new Error(`frag load aborted, context changed in FRAG_LOADING parts`));\n          }\n          return _result;\n        } else if (!frag.url || this.loadedEndOfParts(partList, targetBufferTime)) {\n          return Promise.resolve(null);\n        }\n      }\n    }\n    this.log(`Loading fragment ${frag.sn} cc: ${frag.cc} ${details ? \"of [\" + details.startSN + \"-\" + details.endSN + \"] \" : \"\"}${this.logPrefix === \"[stream-controller]\" ? \"level\" : \"track\"}: ${frag.level}, target: ${parseFloat(targetBufferTime.toFixed(3))}`);\n    if (isFiniteNumber(frag.sn) && !this.bitrateTest) {\n      this.nextLoadPosition = frag.start + frag.duration;\n    }\n    this.state = State.FRAG_LOADING;\n    const dataOnProgress = this.config.progressive;\n    let result;\n    if (dataOnProgress && keyLoadingPromise) {\n      result = keyLoadingPromise.then((keyLoadedData) => {\n        if (!keyLoadedData || this.fragContextChanged(keyLoadedData == null ? void 0 : keyLoadedData.frag)) {\n          return null;\n        }\n        return this.fragmentLoader.load(frag, progressCallback);\n      }).catch((error) => this.handleFragLoadError(error));\n    } else {\n      result = Promise.all([this.fragmentLoader.load(frag, dataOnProgress ? progressCallback : void 0), keyLoadingPromise]).then(([fragLoadedData]) => {\n        if (!dataOnProgress && fragLoadedData && progressCallback) {\n          progressCallback(fragLoadedData);\n        }\n        return fragLoadedData;\n      }).catch((error) => this.handleFragLoadError(error));\n    }\n    this.hls.trigger(Events.FRAG_LOADING, {\n      frag,\n      targetBufferTime\n    });\n    if (this.fragCurrent === null) {\n      return Promise.reject(new Error(`frag load aborted, context changed in FRAG_LOADING`));\n    }\n    return result;\n  }\n  doFragPartsLoad(frag, fromPart, level, progressCallback) {\n    return new Promise((resolve, reject) => {\n      var _level$details;\n      const partsLoaded = [];\n      const initialPartList = (_level$details = level.details) == null ? void 0 : _level$details.partList;\n      const loadPart = (part) => {\n        this.fragmentLoader.loadPart(frag, part, progressCallback).then((partLoadedData) => {\n          partsLoaded[part.index] = partLoadedData;\n          const loadedPart = partLoadedData.part;\n          this.hls.trigger(Events.FRAG_LOADED, partLoadedData);\n          const nextPart = getPartWith(level, frag.sn, part.index + 1) || findPart(initialPartList, frag.sn, part.index + 1);\n          if (nextPart) {\n            loadPart(nextPart);\n          } else {\n            return resolve({\n              frag,\n              part: loadedPart,\n              partsLoaded\n            });\n          }\n        }).catch(reject);\n      };\n      loadPart(fromPart);\n    });\n  }\n  handleFragLoadError(error) {\n    if (\"data\" in error) {\n      const data = error.data;\n      if (error.data && data.details === ErrorDetails.INTERNAL_ABORTED) {\n        this.handleFragLoadAborted(data.frag, data.part);\n      } else {\n        this.hls.trigger(Events.ERROR, data);\n      }\n    } else {\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.OTHER_ERROR,\n        details: ErrorDetails.INTERNAL_EXCEPTION,\n        err: error,\n        error,\n        fatal: true\n      });\n    }\n    return null;\n  }\n  _handleTransmuxerFlush(chunkMeta) {\n    const context = this.getCurrentContext(chunkMeta);\n    if (!context || this.state !== State.PARSING) {\n      if (!this.fragCurrent && this.state !== State.STOPPED && this.state !== State.ERROR) {\n        this.state = State.IDLE;\n      }\n      return;\n    }\n    const {\n      frag,\n      part,\n      level\n    } = context;\n    const now2 = self.performance.now();\n    frag.stats.parsing.end = now2;\n    if (part) {\n      part.stats.parsing.end = now2;\n    }\n    this.updateLevelTiming(frag, part, level, chunkMeta.partial);\n  }\n  getCurrentContext(chunkMeta) {\n    const {\n      levels,\n      fragCurrent\n    } = this;\n    const {\n      level: levelIndex,\n      sn,\n      part: partIndex\n    } = chunkMeta;\n    if (!(levels != null && levels[levelIndex])) {\n      this.warn(`Levels object was unset while buffering fragment ${sn} of level ${levelIndex}. The current chunk will not be buffered.`);\n      return null;\n    }\n    const level = levels[levelIndex];\n    const part = partIndex > -1 ? getPartWith(level, sn, partIndex) : null;\n    const frag = part ? part.fragment : getFragmentWithSN(level, sn, fragCurrent);\n    if (!frag) {\n      return null;\n    }\n    if (fragCurrent && fragCurrent !== frag) {\n      frag.stats = fragCurrent.stats;\n    }\n    return {\n      frag,\n      part,\n      level\n    };\n  }\n  bufferFragmentData(data, frag, part, chunkMeta, noBacktracking) {\n    var _buffer;\n    if (!data || this.state !== State.PARSING) {\n      return;\n    }\n    const {\n      data1,\n      data2\n    } = data;\n    let buffer = data1;\n    if (data1 && data2) {\n      buffer = appendUint8Array(data1, data2);\n    }\n    if (!((_buffer = buffer) != null && _buffer.length)) {\n      return;\n    }\n    const segment = {\n      type: data.type,\n      frag,\n      part,\n      chunkMeta,\n      parent: frag.type,\n      data: buffer\n    };\n    this.hls.trigger(Events.BUFFER_APPENDING, segment);\n    if (data.dropped && data.independent && !part) {\n      if (noBacktracking) {\n        return;\n      }\n      this.flushBufferGap(frag);\n    }\n  }\n  flushBufferGap(frag) {\n    const media = this.media;\n    if (!media) {\n      return;\n    }\n    if (!BufferHelper.isBuffered(media, media.currentTime)) {\n      this.flushMainBuffer(0, frag.start);\n      return;\n    }\n    const currentTime = media.currentTime;\n    const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n    const fragDuration = frag.duration;\n    const segmentFraction = Math.min(this.config.maxFragLookUpTolerance * 2, fragDuration * 0.25);\n    const start = Math.max(Math.min(frag.start - segmentFraction, bufferInfo.end - segmentFraction), currentTime + segmentFraction);\n    if (frag.start - start > segmentFraction) {\n      this.flushMainBuffer(start, frag.start);\n    }\n  }\n  getFwdBufferInfo(bufferable, type) {\n    const pos = this.getLoadPosition();\n    if (!isFiniteNumber(pos)) {\n      return null;\n    }\n    return this.getFwdBufferInfoAtPos(bufferable, pos, type);\n  }\n  getFwdBufferInfoAtPos(bufferable, pos, type) {\n    const {\n      config: {\n        maxBufferHole\n      }\n    } = this;\n    const bufferInfo = BufferHelper.bufferInfo(bufferable, pos, maxBufferHole);\n    if (bufferInfo.len === 0 && bufferInfo.nextStart !== void 0) {\n      const bufferedFragAtPos = this.fragmentTracker.getBufferedFrag(pos, type);\n      if (bufferedFragAtPos && bufferInfo.nextStart < bufferedFragAtPos.end) {\n        return BufferHelper.bufferInfo(bufferable, pos, Math.max(bufferInfo.nextStart, maxBufferHole));\n      }\n    }\n    return bufferInfo;\n  }\n  getMaxBufferLength(levelBitrate) {\n    const {\n      config\n    } = this;\n    let maxBufLen;\n    if (levelBitrate) {\n      maxBufLen = Math.max(8 * config.maxBufferSize / levelBitrate, config.maxBufferLength);\n    } else {\n      maxBufLen = config.maxBufferLength;\n    }\n    return Math.min(maxBufLen, config.maxMaxBufferLength);\n  }\n  reduceMaxBufferLength(threshold, fragDuration) {\n    const config = this.config;\n    const minLength = Math.max(Math.min(threshold - fragDuration, config.maxBufferLength), fragDuration);\n    const reducedLength = Math.max(threshold - fragDuration * 3, config.maxMaxBufferLength / 2, minLength);\n    if (reducedLength >= minLength) {\n      config.maxMaxBufferLength = reducedLength;\n      this.warn(`Reduce max buffer length to ${reducedLength}s`);\n      return true;\n    }\n    return false;\n  }\n  getAppendedFrag(position, playlistType = PlaylistLevelType.MAIN) {\n    const fragOrPart = this.fragmentTracker.getAppendedFrag(position, PlaylistLevelType.MAIN);\n    if (fragOrPart && \"fragment\" in fragOrPart) {\n      return fragOrPart.fragment;\n    }\n    return fragOrPart;\n  }\n  getNextFragment(pos, levelDetails) {\n    const fragments = levelDetails.fragments;\n    const fragLen = fragments.length;\n    if (!fragLen) {\n      return null;\n    }\n    const {\n      config\n    } = this;\n    const start = fragments[0].start;\n    let frag;\n    if (levelDetails.live) {\n      const initialLiveManifestSize = config.initialLiveManifestSize;\n      if (fragLen < initialLiveManifestSize) {\n        this.warn(`Not enough fragments to start playback (have: ${fragLen}, need: ${initialLiveManifestSize})`);\n        return null;\n      }\n      if (!levelDetails.PTSKnown && !this.startFragRequested && this.startPosition === -1 || pos < start) {\n        frag = this.getInitialLiveFragment(levelDetails, fragments);\n        this.startPosition = this.nextLoadPosition = frag ? this.hls.liveSyncPosition || frag.start : pos;\n      }\n    } else if (pos <= start) {\n      frag = fragments[0];\n    }\n    if (!frag) {\n      const end = config.lowLatencyMode ? levelDetails.partEnd : levelDetails.fragmentEnd;\n      frag = this.getFragmentAtPosition(pos, end, levelDetails);\n    }\n    return this.mapToInitFragWhenRequired(frag);\n  }\n  isLoopLoading(frag, targetBufferTime) {\n    const trackerState = this.fragmentTracker.getState(frag);\n    return (trackerState === FragmentState.OK || trackerState === FragmentState.PARTIAL && !!frag.gap) && this.nextLoadPosition > targetBufferTime;\n  }\n  getNextFragmentLoopLoading(frag, levelDetails, bufferInfo, playlistType, maxBufLen) {\n    const gapStart = frag.gap;\n    const nextFragment = this.getNextFragment(this.nextLoadPosition, levelDetails);\n    if (nextFragment === null) {\n      return nextFragment;\n    }\n    frag = nextFragment;\n    if (gapStart && frag && !frag.gap && bufferInfo.nextStart) {\n      const nextbufferInfo = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, bufferInfo.nextStart, playlistType);\n      if (nextbufferInfo !== null && bufferInfo.len + nextbufferInfo.len >= maxBufLen) {\n        this.log(`buffer full after gaps in \"${playlistType}\" playlist starting at sn: ${frag.sn}`);\n        return null;\n      }\n    }\n    return frag;\n  }\n  mapToInitFragWhenRequired(frag) {\n    if (frag != null && frag.initSegment && !(frag != null && frag.initSegment.data) && !this.bitrateTest) {\n      return frag.initSegment;\n    }\n    return frag;\n  }\n  getNextPart(partList, frag, targetBufferTime) {\n    let nextPart = -1;\n    let contiguous = false;\n    let independentAttrOmitted = true;\n    for (let i2 = 0, len = partList.length; i2 < len; i2++) {\n      const part = partList[i2];\n      independentAttrOmitted = independentAttrOmitted && !part.independent;\n      if (nextPart > -1 && targetBufferTime < part.start) {\n        break;\n      }\n      const loaded = part.loaded;\n      if (loaded) {\n        nextPart = -1;\n      } else if ((contiguous || part.independent || independentAttrOmitted) && part.fragment === frag) {\n        nextPart = i2;\n      }\n      contiguous = loaded;\n    }\n    return nextPart;\n  }\n  loadedEndOfParts(partList, targetBufferTime) {\n    const lastPart = partList[partList.length - 1];\n    return lastPart && targetBufferTime > lastPart.start && lastPart.loaded;\n  }\n  /*\n   This method is used find the best matching first fragment for a live playlist. This fragment is used to calculate the\n   \"sliding\" of the playlist, which is its offset from the start of playback. After sliding we can compute the real\n   start and end times for each fragment in the playlist (after which this method will not need to be called).\n  */\n  getInitialLiveFragment(levelDetails, fragments) {\n    const fragPrevious = this.fragPrevious;\n    let frag = null;\n    if (fragPrevious) {\n      if (levelDetails.hasProgramDateTime) {\n        this.log(`Live playlist, switching playlist, load frag with same PDT: ${fragPrevious.programDateTime}`);\n        frag = findFragmentByPDT(fragments, fragPrevious.endProgramDateTime, this.config.maxFragLookUpTolerance);\n      }\n      if (!frag) {\n        const targetSN = fragPrevious.sn + 1;\n        if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) {\n          const fragNext = fragments[targetSN - levelDetails.startSN];\n          if (fragPrevious.cc === fragNext.cc) {\n            frag = fragNext;\n            this.log(`Live playlist, switching playlist, load frag with next SN: ${frag.sn}`);\n          }\n        }\n        if (!frag) {\n          frag = findFragWithCC(fragments, fragPrevious.cc);\n          if (frag) {\n            this.log(`Live playlist, switching playlist, load frag with same CC: ${frag.sn}`);\n          }\n        }\n      }\n    } else {\n      const liveStart = this.hls.liveSyncPosition;\n      if (liveStart !== null) {\n        frag = this.getFragmentAtPosition(liveStart, this.bitrateTest ? levelDetails.fragmentEnd : levelDetails.edge, levelDetails);\n      }\n    }\n    return frag;\n  }\n  /*\n  This method finds the best matching fragment given the provided position.\n   */\n  getFragmentAtPosition(bufferEnd, end, levelDetails) {\n    const {\n      config\n    } = this;\n    let {\n      fragPrevious\n    } = this;\n    let {\n      fragments,\n      endSN\n    } = levelDetails;\n    const {\n      fragmentHint\n    } = levelDetails;\n    const {\n      maxFragLookUpTolerance\n    } = config;\n    const partList = levelDetails.partList;\n    const loadingParts = !!(config.lowLatencyMode && partList != null && partList.length && fragmentHint);\n    if (loadingParts && fragmentHint && !this.bitrateTest) {\n      fragments = fragments.concat(fragmentHint);\n      endSN = fragmentHint.sn;\n    }\n    let frag;\n    if (bufferEnd < end) {\n      const lookupTolerance = bufferEnd > end - maxFragLookUpTolerance ? 0 : maxFragLookUpTolerance;\n      frag = findFragmentByPTS(fragPrevious, fragments, bufferEnd, lookupTolerance);\n    } else {\n      frag = fragments[fragments.length - 1];\n    }\n    if (frag) {\n      const curSNIdx = frag.sn - levelDetails.startSN;\n      const fragState = this.fragmentTracker.getState(frag);\n      if (fragState === FragmentState.OK || fragState === FragmentState.PARTIAL && frag.gap) {\n        fragPrevious = frag;\n      }\n      if (fragPrevious && frag.sn === fragPrevious.sn && (!loadingParts || partList[0].fragment.sn > frag.sn)) {\n        const sameLevel = fragPrevious && frag.level === fragPrevious.level;\n        if (sameLevel) {\n          const nextFrag = fragments[curSNIdx + 1];\n          if (frag.sn < endSN && this.fragmentTracker.getState(nextFrag) !== FragmentState.OK) {\n            frag = nextFrag;\n          } else {\n            frag = null;\n          }\n        }\n      }\n    }\n    return frag;\n  }\n  synchronizeToLiveEdge(levelDetails) {\n    const {\n      config,\n      media\n    } = this;\n    if (!media) {\n      return;\n    }\n    const liveSyncPosition = this.hls.liveSyncPosition;\n    const currentTime = media.currentTime;\n    const start = levelDetails.fragments[0].start;\n    const end = levelDetails.edge;\n    const withinSlidingWindow = currentTime >= start - config.maxFragLookUpTolerance && currentTime <= end;\n    if (liveSyncPosition !== null && media.duration > liveSyncPosition && (currentTime < liveSyncPosition || !withinSlidingWindow)) {\n      const maxLatency = config.liveMaxLatencyDuration !== void 0 ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration;\n      if (!withinSlidingWindow && media.readyState < 4 || currentTime < end - maxLatency) {\n        if (!this.loadedmetadata) {\n          this.nextLoadPosition = liveSyncPosition;\n        }\n        if (media.readyState) {\n          this.warn(`Playback: ${currentTime.toFixed(3)} is located too far from the end of live sliding playlist: ${end}, reset currentTime to : ${liveSyncPosition.toFixed(3)}`);\n          media.currentTime = liveSyncPosition;\n        }\n      }\n    }\n  }\n  alignPlaylists(details, previousDetails, switchDetails) {\n    const length = details.fragments.length;\n    if (!length) {\n      this.warn(`No fragments in live playlist`);\n      return 0;\n    }\n    const slidingStart = details.fragments[0].start;\n    const firstLevelLoad = !previousDetails;\n    const aligned = details.alignedSliding && isFiniteNumber(slidingStart);\n    if (firstLevelLoad || !aligned && !slidingStart) {\n      const {\n        fragPrevious\n      } = this;\n      alignStream(fragPrevious, switchDetails, details);\n      const alignedSlidingStart = details.fragments[0].start;\n      this.log(`Live playlist sliding: ${alignedSlidingStart.toFixed(2)} start-sn: ${previousDetails ? previousDetails.startSN : \"na\"}->${details.startSN} prev-sn: ${fragPrevious ? fragPrevious.sn : \"na\"} fragments: ${length}`);\n      return alignedSlidingStart;\n    }\n    return slidingStart;\n  }\n  waitForCdnTuneIn(details) {\n    const advancePartLimit = 3;\n    return details.live && details.canBlockReload && details.partTarget && details.tuneInGoal > Math.max(details.partHoldBack, details.partTarget * advancePartLimit);\n  }\n  setStartPosition(details, sliding) {\n    let startPosition = this.startPosition;\n    if (startPosition < sliding) {\n      startPosition = -1;\n    }\n    if (startPosition === -1 || this.lastCurrentTime === -1) {\n      const offsetInMultivariantPlaylist = this.startTimeOffset !== null;\n      const startTimeOffset = offsetInMultivariantPlaylist ? this.startTimeOffset : details.startTimeOffset;\n      if (startTimeOffset !== null && isFiniteNumber(startTimeOffset)) {\n        startPosition = sliding + startTimeOffset;\n        if (startTimeOffset < 0) {\n          startPosition += details.totalduration;\n        }\n        startPosition = Math.min(Math.max(sliding, startPosition), sliding + details.totalduration);\n        this.log(`Start time offset ${startTimeOffset} found in ${offsetInMultivariantPlaylist ? \"multivariant\" : \"media\"} playlist, adjust startPosition to ${startPosition}`);\n        this.startPosition = startPosition;\n      } else if (details.live) {\n        startPosition = this.hls.liveSyncPosition || sliding;\n      } else {\n        this.startPosition = startPosition = 0;\n      }\n      this.lastCurrentTime = startPosition;\n    }\n    this.nextLoadPosition = startPosition;\n  }\n  getLoadPosition() {\n    const {\n      media\n    } = this;\n    let pos = 0;\n    if (this.loadedmetadata && media) {\n      pos = media.currentTime;\n    } else if (this.nextLoadPosition) {\n      pos = this.nextLoadPosition;\n    }\n    return pos;\n  }\n  handleFragLoadAborted(frag, part) {\n    if (this.transmuxer && frag.sn !== \"initSegment\" && frag.stats.aborted) {\n      this.warn(`Fragment ${frag.sn}${part ? \" part \" + part.index : \"\"} of level ${frag.level} was aborted`);\n      this.resetFragmentLoading(frag);\n    }\n  }\n  resetFragmentLoading(frag) {\n    if (!this.fragCurrent || !this.fragContextChanged(frag) && this.state !== State.FRAG_LOADING_WAITING_RETRY) {\n      this.state = State.IDLE;\n    }\n  }\n  onFragmentOrKeyLoadError(filterType, data) {\n    if (data.chunkMeta && !data.frag) {\n      const context = this.getCurrentContext(data.chunkMeta);\n      if (context) {\n        data.frag = context.frag;\n      }\n    }\n    const frag = data.frag;\n    if (!frag || frag.type !== filterType || !this.levels) {\n      return;\n    }\n    if (this.fragContextChanged(frag)) {\n      var _this$fragCurrent2;\n      this.warn(`Frag load error must match current frag to retry ${frag.url} > ${(_this$fragCurrent2 = this.fragCurrent) == null ? void 0 : _this$fragCurrent2.url}`);\n      return;\n    }\n    const gapTagEncountered = data.details === ErrorDetails.FRAG_GAP;\n    if (gapTagEncountered) {\n      this.fragmentTracker.fragBuffered(frag, true);\n    }\n    const errorAction = data.errorAction;\n    const {\n      action,\n      retryCount = 0,\n      retryConfig\n    } = errorAction || {};\n    if (errorAction && action === NetworkErrorAction.RetryRequest && retryConfig) {\n      this.resetStartWhenNotLoaded(this.levelLastLoaded);\n      const delay2 = getRetryDelay(retryConfig, retryCount);\n      this.warn(`Fragment ${frag.sn} of ${filterType} ${frag.level} errored with ${data.details}, retrying loading ${retryCount + 1}/${retryConfig.maxNumRetry} in ${delay2}ms`);\n      errorAction.resolved = true;\n      this.retryDate = self.performance.now() + delay2;\n      this.state = State.FRAG_LOADING_WAITING_RETRY;\n    } else if (retryConfig && errorAction) {\n      this.resetFragmentErrors(filterType);\n      if (retryCount < retryConfig.maxNumRetry) {\n        if (!gapTagEncountered && action !== NetworkErrorAction.RemoveAlternatePermanently) {\n          errorAction.resolved = true;\n        }\n      } else {\n        logger.warn(`${data.details} reached or exceeded max retry (${retryCount})`);\n        return;\n      }\n    } else if ((errorAction == null ? void 0 : errorAction.action) === NetworkErrorAction.SendAlternateToPenaltyBox) {\n      this.state = State.WAITING_LEVEL;\n    } else {\n      this.state = State.ERROR;\n    }\n    this.tickImmediate();\n  }\n  reduceLengthAndFlushBuffer(data) {\n    if (this.state === State.PARSING || this.state === State.PARSED) {\n      const frag = data.frag;\n      const playlistType = data.parent;\n      const bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, playlistType);\n      const buffered = bufferedInfo && bufferedInfo.len > 0.5;\n      if (buffered) {\n        this.reduceMaxBufferLength(bufferedInfo.len, (frag == null ? void 0 : frag.duration) || 10);\n      }\n      const flushBuffer = !buffered;\n      if (flushBuffer) {\n        this.warn(`Buffer full error while media.currentTime is not buffered, flush ${playlistType} buffer`);\n      }\n      if (frag) {\n        this.fragmentTracker.removeFragment(frag);\n        this.nextLoadPosition = frag.start;\n      }\n      this.resetLoadingState();\n      return flushBuffer;\n    }\n    return false;\n  }\n  resetFragmentErrors(filterType) {\n    if (filterType === PlaylistLevelType.AUDIO) {\n      this.fragCurrent = null;\n    }\n    if (!this.loadedmetadata) {\n      this.startFragRequested = false;\n    }\n    if (this.state !== State.STOPPED) {\n      this.state = State.IDLE;\n    }\n  }\n  afterBufferFlushed(media, bufferType, playlistType) {\n    if (!media) {\n      return;\n    }\n    const bufferedTimeRanges = BufferHelper.getBuffered(media);\n    this.fragmentTracker.detectEvictedFragments(bufferType, bufferedTimeRanges, playlistType);\n    if (this.state === State.ENDED) {\n      this.resetLoadingState();\n    }\n  }\n  resetLoadingState() {\n    this.log(\"Reset loading state\");\n    this.fragCurrent = null;\n    this.fragPrevious = null;\n    this.state = State.IDLE;\n  }\n  resetStartWhenNotLoaded(level) {\n    if (!this.loadedmetadata) {\n      this.startFragRequested = false;\n      const details = level ? level.details : null;\n      if (details != null && details.live) {\n        this.startPosition = -1;\n        this.setStartPosition(details, 0);\n        this.resetLoadingState();\n      } else {\n        this.nextLoadPosition = this.startPosition;\n      }\n    }\n  }\n  resetWhenMissingContext(chunkMeta) {\n    this.warn(`The loading context changed while buffering fragment ${chunkMeta.sn} of level ${chunkMeta.level}. This chunk will not be buffered.`);\n    this.removeUnbufferedFrags();\n    this.resetStartWhenNotLoaded(this.levelLastLoaded);\n    this.resetLoadingState();\n  }\n  removeUnbufferedFrags(start = 0) {\n    this.fragmentTracker.removeFragmentsInRange(start, Infinity, this.playlistType, false, true);\n  }\n  updateLevelTiming(frag, part, level, partial) {\n    var _this$transmuxer;\n    const details = level.details;\n    if (!details) {\n      this.warn(\"level.details undefined\");\n      return;\n    }\n    const parsed = Object.keys(frag.elementaryStreams).reduce((result, type) => {\n      const info = frag.elementaryStreams[type];\n      if (info) {\n        const parsedDuration = info.endPTS - info.startPTS;\n        if (parsedDuration <= 0) {\n          this.warn(`Could not parse fragment ${frag.sn} ${type} duration reliably (${parsedDuration})`);\n          return result || false;\n        }\n        const drift = partial ? 0 : updateFragPTSDTS(details, frag, info.startPTS, info.endPTS, info.startDTS, info.endDTS);\n        this.hls.trigger(Events.LEVEL_PTS_UPDATED, {\n          details,\n          level,\n          drift,\n          type,\n          frag,\n          start: info.startPTS,\n          end: info.endPTS\n        });\n        return true;\n      }\n      return result;\n    }, false);\n    if (!parsed && ((_this$transmuxer = this.transmuxer) == null ? void 0 : _this$transmuxer.error) === null) {\n      const error = new Error(`Found no media in fragment ${frag.sn} of level ${frag.level} resetting transmuxer to fallback to playlist timing`);\n      if (level.fragmentError === 0) {\n        level.fragmentError++;\n        frag.gap = true;\n        this.fragmentTracker.removeFragment(frag);\n        this.fragmentTracker.fragBuffered(frag, true);\n      }\n      this.warn(error.message);\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.FRAG_PARSING_ERROR,\n        fatal: false,\n        error,\n        frag,\n        reason: `Found no media in msn ${frag.sn} of level \"${level.url}\"`\n      });\n      if (!this.hls) {\n        return;\n      }\n      this.resetTransmuxer();\n    }\n    this.state = State.PARSED;\n    this.hls.trigger(Events.FRAG_PARSED, {\n      frag,\n      part\n    });\n  }\n  resetTransmuxer() {\n    if (this.transmuxer) {\n      this.transmuxer.destroy();\n      this.transmuxer = null;\n    }\n  }\n  recoverWorkerError(data) {\n    if (data.event === \"demuxerWorker\") {\n      this.fragmentTracker.removeAllFragments();\n      this.resetTransmuxer();\n      this.resetStartWhenNotLoaded(this.levelLastLoaded);\n      this.resetLoadingState();\n    }\n  }\n  set state(nextState) {\n    const previousState = this._state;\n    if (previousState !== nextState) {\n      this._state = nextState;\n      this.log(`${previousState}->${nextState}`);\n    }\n  }\n  get state() {\n    return this._state;\n  }\n};\nvar ChunkCache = class {\n  constructor() {\n    this.chunks = [];\n    this.dataLength = 0;\n  }\n  push(chunk) {\n    this.chunks.push(chunk);\n    this.dataLength += chunk.length;\n  }\n  flush() {\n    const {\n      chunks,\n      dataLength\n    } = this;\n    let result;\n    if (!chunks.length) {\n      return new Uint8Array(0);\n    } else if (chunks.length === 1) {\n      result = chunks[0];\n    } else {\n      result = concatUint8Arrays(chunks, dataLength);\n    }\n    this.reset();\n    return result;\n  }\n  reset() {\n    this.chunks.length = 0;\n    this.dataLength = 0;\n  }\n};\nfunction concatUint8Arrays(chunks, dataLength) {\n  const result = new Uint8Array(dataLength);\n  let offset = 0;\n  for (let i2 = 0; i2 < chunks.length; i2++) {\n    const chunk = chunks[i2];\n    result.set(chunk, offset);\n    offset += chunk.length;\n  }\n  return result;\n}\nfunction hasUMDWorker() {\n  return typeof __HLS_WORKER_BUNDLE__ === \"function\";\n}\nfunction injectWorker() {\n  const blob = new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`], {\n    type: \"text/javascript\"\n  });\n  const objectURL = self.URL.createObjectURL(blob);\n  const worker = new self.Worker(objectURL);\n  return {\n    worker,\n    objectURL\n  };\n}\nfunction loadWorker(path) {\n  const scriptURL = new self.URL(path, self.location.href).href;\n  const worker = new self.Worker(scriptURL);\n  return {\n    worker,\n    scriptURL\n  };\n}\nfunction dummyTrack(type = \"\", inputTimeScale = 9e4) {\n  return {\n    type,\n    id: -1,\n    pid: -1,\n    inputTimeScale,\n    sequenceNumber: -1,\n    samples: [],\n    dropped: 0\n  };\n}\nvar BaseAudioDemuxer = class {\n  constructor() {\n    this._audioTrack = void 0;\n    this._id3Track = void 0;\n    this.frameIndex = 0;\n    this.cachedData = null;\n    this.basePTS = null;\n    this.initPTS = null;\n    this.lastPTS = null;\n  }\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    this._id3Track = {\n      type: \"id3\",\n      id: 3,\n      pid: -1,\n      inputTimeScale: 9e4,\n      sequenceNumber: 0,\n      samples: [],\n      dropped: 0\n    };\n  }\n  resetTimeStamp(deaultTimestamp) {\n    this.initPTS = deaultTimestamp;\n    this.resetContiguity();\n  }\n  resetContiguity() {\n    this.basePTS = null;\n    this.lastPTS = null;\n    this.frameIndex = 0;\n  }\n  canParse(data, offset) {\n    return false;\n  }\n  appendFrame(track, data, offset) {\n  }\n  // feed incoming data to the front of the parsing pipeline\n  demux(data, timeOffset) {\n    if (this.cachedData) {\n      data = appendUint8Array(this.cachedData, data);\n      this.cachedData = null;\n    }\n    let id3Data = getID3Data(data, 0);\n    let offset = id3Data ? id3Data.length : 0;\n    let lastDataIndex;\n    const track = this._audioTrack;\n    const id3Track = this._id3Track;\n    const timestamp = id3Data ? getTimeStamp(id3Data) : void 0;\n    const length = data.length;\n    if (this.basePTS === null || this.frameIndex === 0 && isFiniteNumber(timestamp)) {\n      this.basePTS = initPTSFn(timestamp, timeOffset, this.initPTS);\n      this.lastPTS = this.basePTS;\n    }\n    if (this.lastPTS === null) {\n      this.lastPTS = this.basePTS;\n    }\n    if (id3Data && id3Data.length > 0) {\n      id3Track.samples.push({\n        pts: this.lastPTS,\n        dts: this.lastPTS,\n        data: id3Data,\n        type: MetadataSchema.audioId3,\n        duration: Number.POSITIVE_INFINITY\n      });\n    }\n    while (offset < length) {\n      if (this.canParse(data, offset)) {\n        const frame = this.appendFrame(track, data, offset);\n        if (frame) {\n          this.frameIndex++;\n          this.lastPTS = frame.sample.pts;\n          offset += frame.length;\n          lastDataIndex = offset;\n        } else {\n          offset = length;\n        }\n      } else if (canParse$2(data, offset)) {\n        id3Data = getID3Data(data, offset);\n        id3Track.samples.push({\n          pts: this.lastPTS,\n          dts: this.lastPTS,\n          data: id3Data,\n          type: MetadataSchema.audioId3,\n          duration: Number.POSITIVE_INFINITY\n        });\n        offset += id3Data.length;\n        lastDataIndex = offset;\n      } else {\n        offset++;\n      }\n      if (offset === length && lastDataIndex !== length) {\n        const partialData = sliceUint8(data, lastDataIndex);\n        if (this.cachedData) {\n          this.cachedData = appendUint8Array(this.cachedData, partialData);\n        } else {\n          this.cachedData = partialData;\n        }\n      }\n    }\n    return {\n      audioTrack: track,\n      videoTrack: dummyTrack(),\n      id3Track,\n      textTrack: dummyTrack()\n    };\n  }\n  demuxSampleAes(data, keyData, timeOffset) {\n    return Promise.reject(new Error(`[${this}] This demuxer does not support Sample-AES decryption`));\n  }\n  flush(timeOffset) {\n    const cachedData = this.cachedData;\n    if (cachedData) {\n      this.cachedData = null;\n      this.demux(cachedData, 0);\n    }\n    return {\n      audioTrack: this._audioTrack,\n      videoTrack: dummyTrack(),\n      id3Track: this._id3Track,\n      textTrack: dummyTrack()\n    };\n  }\n  destroy() {\n  }\n};\nvar initPTSFn = (timestamp, timeOffset, initPTS) => {\n  if (isFiniteNumber(timestamp)) {\n    return timestamp * 90;\n  }\n  const init90kHz = initPTS ? initPTS.baseTime * 9e4 / initPTS.timescale : 0;\n  return timeOffset * 9e4 + init90kHz;\n};\nfunction getAudioConfig(observer2, data, offset, audioCodec) {\n  let adtsObjectType;\n  let adtsExtensionSamplingIndex;\n  let adtsChannelConfig;\n  let config;\n  const userAgent = navigator.userAgent.toLowerCase();\n  const manifestCodec = audioCodec;\n  const adtsSamplingRates = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];\n  adtsObjectType = ((data[offset + 2] & 192) >>> 6) + 1;\n  const adtsSamplingIndex = (data[offset + 2] & 60) >>> 2;\n  if (adtsSamplingIndex > adtsSamplingRates.length - 1) {\n    const error = new Error(`invalid ADTS sampling index:${adtsSamplingIndex}`);\n    observer2.emit(Events.ERROR, Events.ERROR, {\n      type: ErrorTypes.MEDIA_ERROR,\n      details: ErrorDetails.FRAG_PARSING_ERROR,\n      fatal: true,\n      error,\n      reason: error.message\n    });\n    return;\n  }\n  adtsChannelConfig = (data[offset + 2] & 1) << 2;\n  adtsChannelConfig |= (data[offset + 3] & 192) >>> 6;\n  logger.log(`manifest codec:${audioCodec}, ADTS type:${adtsObjectType}, samplingIndex:${adtsSamplingIndex}`);\n  if (/firefox/i.test(userAgent)) {\n    if (adtsSamplingIndex >= 6) {\n      adtsObjectType = 5;\n      config = new Array(4);\n      adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n    } else {\n      adtsObjectType = 2;\n      config = new Array(2);\n      adtsExtensionSamplingIndex = adtsSamplingIndex;\n    }\n  } else if (userAgent.indexOf(\"android\") !== -1) {\n    adtsObjectType = 2;\n    config = new Array(2);\n    adtsExtensionSamplingIndex = adtsSamplingIndex;\n  } else {\n    adtsObjectType = 5;\n    config = new Array(4);\n    if (audioCodec && (audioCodec.indexOf(\"mp4a.40.29\") !== -1 || audioCodec.indexOf(\"mp4a.40.5\") !== -1) || !audioCodec && adtsSamplingIndex >= 6) {\n      adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n    } else {\n      if (audioCodec && audioCodec.indexOf(\"mp4a.40.2\") !== -1 && (adtsSamplingIndex >= 6 && adtsChannelConfig === 1 || /vivaldi/i.test(userAgent)) || !audioCodec && adtsChannelConfig === 1) {\n        adtsObjectType = 2;\n        config = new Array(2);\n      }\n      adtsExtensionSamplingIndex = adtsSamplingIndex;\n    }\n  }\n  config[0] = adtsObjectType << 3;\n  config[0] |= (adtsSamplingIndex & 14) >> 1;\n  config[1] |= (adtsSamplingIndex & 1) << 7;\n  config[1] |= adtsChannelConfig << 3;\n  if (adtsObjectType === 5) {\n    config[1] |= (adtsExtensionSamplingIndex & 14) >> 1;\n    config[2] = (adtsExtensionSamplingIndex & 1) << 7;\n    config[2] |= 2 << 2;\n    config[3] = 0;\n  }\n  return {\n    config,\n    samplerate: adtsSamplingRates[adtsSamplingIndex],\n    channelCount: adtsChannelConfig,\n    codec: \"mp4a.40.\" + adtsObjectType,\n    manifestCodec\n  };\n}\nfunction isHeaderPattern$1(data, offset) {\n  return data[offset] === 255 && (data[offset + 1] & 246) === 240;\n}\nfunction getHeaderLength(data, offset) {\n  return data[offset + 1] & 1 ? 7 : 9;\n}\nfunction getFullFrameLength(data, offset) {\n  return (data[offset + 3] & 3) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 224) >>> 5;\n}\nfunction canGetFrameLength(data, offset) {\n  return offset + 5 < data.length;\n}\nfunction isHeader$1(data, offset) {\n  return offset + 1 < data.length && isHeaderPattern$1(data, offset);\n}\nfunction canParse$1(data, offset) {\n  return canGetFrameLength(data, offset) && isHeaderPattern$1(data, offset) && getFullFrameLength(data, offset) <= data.length - offset;\n}\nfunction probe$1(data, offset) {\n  if (isHeader$1(data, offset)) {\n    const headerLength = getHeaderLength(data, offset);\n    if (offset + headerLength >= data.length) {\n      return false;\n    }\n    const frameLength = getFullFrameLength(data, offset);\n    if (frameLength <= headerLength) {\n      return false;\n    }\n    const newOffset = offset + frameLength;\n    return newOffset === data.length || isHeader$1(data, newOffset);\n  }\n  return false;\n}\nfunction initTrackConfig(track, observer2, data, offset, audioCodec) {\n  if (!track.samplerate) {\n    const config = getAudioConfig(observer2, data, offset, audioCodec);\n    if (!config) {\n      return;\n    }\n    track.config = config.config;\n    track.samplerate = config.samplerate;\n    track.channelCount = config.channelCount;\n    track.codec = config.codec;\n    track.manifestCodec = config.manifestCodec;\n    logger.log(`parsed codec:${track.codec}, rate:${config.samplerate}, channels:${config.channelCount}`);\n  }\n}\nfunction getFrameDuration(samplerate) {\n  return 1024 * 9e4 / samplerate;\n}\nfunction parseFrameHeader(data, offset) {\n  const headerLength = getHeaderLength(data, offset);\n  if (offset + headerLength <= data.length) {\n    const frameLength = getFullFrameLength(data, offset) - headerLength;\n    if (frameLength > 0) {\n      return {\n        headerLength,\n        frameLength\n      };\n    }\n  }\n}\nfunction appendFrame$2(track, data, offset, pts, frameIndex) {\n  const frameDuration = getFrameDuration(track.samplerate);\n  const stamp = pts + frameIndex * frameDuration;\n  const header = parseFrameHeader(data, offset);\n  let unit;\n  if (header) {\n    const {\n      frameLength,\n      headerLength\n    } = header;\n    const _length = headerLength + frameLength;\n    const missing = Math.max(0, offset + _length - data.length);\n    if (missing) {\n      unit = new Uint8Array(_length - headerLength);\n      unit.set(data.subarray(offset + headerLength, data.length), 0);\n    } else {\n      unit = data.subarray(offset + headerLength, offset + _length);\n    }\n    const _sample = {\n      unit,\n      pts: stamp\n    };\n    if (!missing) {\n      track.samples.push(_sample);\n    }\n    return {\n      sample: _sample,\n      length: _length,\n      missing\n    };\n  }\n  const length = data.length - offset;\n  unit = new Uint8Array(length);\n  unit.set(data.subarray(offset, data.length), 0);\n  const sample = {\n    unit,\n    pts: stamp\n  };\n  return {\n    sample,\n    length,\n    missing: -1\n  };\n}\nvar chromeVersion$1 = null;\nvar BitratesMap = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];\nvar SamplingRateMap = [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3];\nvar SamplesCoefficients = [\n  // MPEG 2.5\n  [\n    0,\n    // Reserved\n    72,\n    // Layer3\n    144,\n    // Layer2\n    12\n    // Layer1\n  ],\n  // Reserved\n  [\n    0,\n    // Reserved\n    0,\n    // Layer3\n    0,\n    // Layer2\n    0\n    // Layer1\n  ],\n  // MPEG 2\n  [\n    0,\n    // Reserved\n    72,\n    // Layer3\n    144,\n    // Layer2\n    12\n    // Layer1\n  ],\n  // MPEG 1\n  [\n    0,\n    // Reserved\n    144,\n    // Layer3\n    144,\n    // Layer2\n    12\n    // Layer1\n  ]\n];\nvar BytesInSlot = [\n  0,\n  // Reserved\n  1,\n  // Layer3\n  1,\n  // Layer2\n  4\n  // Layer1\n];\nfunction appendFrame$1(track, data, offset, pts, frameIndex) {\n  if (offset + 24 > data.length) {\n    return;\n  }\n  const header = parseHeader(data, offset);\n  if (header && offset + header.frameLength <= data.length) {\n    const frameDuration = header.samplesPerFrame * 9e4 / header.sampleRate;\n    const stamp = pts + frameIndex * frameDuration;\n    const sample = {\n      unit: data.subarray(offset, offset + header.frameLength),\n      pts: stamp,\n      dts: stamp\n    };\n    track.config = [];\n    track.channelCount = header.channelCount;\n    track.samplerate = header.sampleRate;\n    track.samples.push(sample);\n    return {\n      sample,\n      length: header.frameLength,\n      missing: 0\n    };\n  }\n}\nfunction parseHeader(data, offset) {\n  const mpegVersion = data[offset + 1] >> 3 & 3;\n  const mpegLayer = data[offset + 1] >> 1 & 3;\n  const bitRateIndex = data[offset + 2] >> 4 & 15;\n  const sampleRateIndex = data[offset + 2] >> 2 & 3;\n  if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) {\n    const paddingBit = data[offset + 2] >> 1 & 1;\n    const channelMode = data[offset + 3] >> 6;\n    const columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;\n    const bitRate = BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1e3;\n    const columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;\n    const sampleRate = SamplingRateMap[columnInSampleRates * 3 + sampleRateIndex];\n    const channelCount = channelMode === 3 ? 1 : 2;\n    const sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer];\n    const bytesInSlot = BytesInSlot[mpegLayer];\n    const samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;\n    const frameLength = Math.floor(sampleCoefficient * bitRate / sampleRate + paddingBit) * bytesInSlot;\n    if (chromeVersion$1 === null) {\n      const userAgent = navigator.userAgent || \"\";\n      const result = userAgent.match(/Chrome\\/(\\d+)/i);\n      chromeVersion$1 = result ? parseInt(result[1]) : 0;\n    }\n    const needChromeFix = !!chromeVersion$1 && chromeVersion$1 <= 87;\n    if (needChromeFix && mpegLayer === 2 && bitRate >= 224e3 && channelMode === 0) {\n      data[offset + 3] = data[offset + 3] | 128;\n    }\n    return {\n      sampleRate,\n      channelCount,\n      frameLength,\n      samplesPerFrame\n    };\n  }\n}\nfunction isHeaderPattern(data, offset) {\n  return data[offset] === 255 && (data[offset + 1] & 224) === 224 && (data[offset + 1] & 6) !== 0;\n}\nfunction isHeader(data, offset) {\n  return offset + 1 < data.length && isHeaderPattern(data, offset);\n}\nfunction canParse(data, offset) {\n  const headerSize = 4;\n  return isHeaderPattern(data, offset) && headerSize <= data.length - offset;\n}\nfunction probe(data, offset) {\n  if (offset + 1 < data.length && isHeaderPattern(data, offset)) {\n    const headerLength = 4;\n    const header = parseHeader(data, offset);\n    let frameLength = headerLength;\n    if (header != null && header.frameLength) {\n      frameLength = header.frameLength;\n    }\n    const newOffset = offset + frameLength;\n    return newOffset === data.length || isHeader(data, newOffset);\n  }\n  return false;\n}\nvar AACDemuxer = class extends BaseAudioDemuxer {\n  constructor(observer2, config) {\n    super();\n    this.observer = void 0;\n    this.config = void 0;\n    this.observer = observer2;\n    this.config = config;\n  }\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    super.resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration);\n    this._audioTrack = {\n      container: \"audio/adts\",\n      type: \"audio\",\n      id: 2,\n      pid: -1,\n      sequenceNumber: 0,\n      segmentCodec: \"aac\",\n      samples: [],\n      manifestCodec: audioCodec,\n      duration: trackDuration,\n      inputTimeScale: 9e4,\n      dropped: 0\n    };\n  }\n  // Source for probe info - https://wiki.multimedia.cx/index.php?title=ADTS\n  static probe(data) {\n    if (!data) {\n      return false;\n    }\n    const id3Data = getID3Data(data, 0);\n    let offset = (id3Data == null ? void 0 : id3Data.length) || 0;\n    if (probe(data, offset)) {\n      return false;\n    }\n    for (let length = data.length; offset < length; offset++) {\n      if (probe$1(data, offset)) {\n        logger.log(\"ADTS sync word found !\");\n        return true;\n      }\n    }\n    return false;\n  }\n  canParse(data, offset) {\n    return canParse$1(data, offset);\n  }\n  appendFrame(track, data, offset) {\n    initTrackConfig(track, this.observer, data, offset, track.manifestCodec);\n    const frame = appendFrame$2(track, data, offset, this.basePTS, this.frameIndex);\n    if (frame && frame.missing === 0) {\n      return frame;\n    }\n  }\n};\nvar emsgSchemePattern = /\\/emsg[-/]ID3/i;\nvar MP4Demuxer = class {\n  constructor(observer2, config) {\n    this.remainderData = null;\n    this.timeOffset = 0;\n    this.config = void 0;\n    this.videoTrack = void 0;\n    this.audioTrack = void 0;\n    this.id3Track = void 0;\n    this.txtTrack = void 0;\n    this.config = config;\n  }\n  resetTimeStamp() {\n  }\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    const videoTrack = this.videoTrack = dummyTrack(\"video\", 1);\n    const audioTrack = this.audioTrack = dummyTrack(\"audio\", 1);\n    const captionTrack = this.txtTrack = dummyTrack(\"text\", 1);\n    this.id3Track = dummyTrack(\"id3\", 1);\n    this.timeOffset = 0;\n    if (!(initSegment != null && initSegment.byteLength)) {\n      return;\n    }\n    const initData = parseInitSegment(initSegment);\n    if (initData.video) {\n      const {\n        id,\n        timescale,\n        codec\n      } = initData.video;\n      videoTrack.id = id;\n      videoTrack.timescale = captionTrack.timescale = timescale;\n      videoTrack.codec = codec;\n    }\n    if (initData.audio) {\n      const {\n        id,\n        timescale,\n        codec\n      } = initData.audio;\n      audioTrack.id = id;\n      audioTrack.timescale = timescale;\n      audioTrack.codec = codec;\n    }\n    captionTrack.id = RemuxerTrackIdConfig.text;\n    videoTrack.sampleDuration = 0;\n    videoTrack.duration = audioTrack.duration = trackDuration;\n  }\n  resetContiguity() {\n    this.remainderData = null;\n  }\n  static probe(data) {\n    return hasMoofData(data);\n  }\n  demux(data, timeOffset) {\n    this.timeOffset = timeOffset;\n    let videoSamples = data;\n    const videoTrack = this.videoTrack;\n    const textTrack = this.txtTrack;\n    if (this.config.progressive) {\n      if (this.remainderData) {\n        videoSamples = appendUint8Array(this.remainderData, data);\n      }\n      const segmentedData = segmentValidRange(videoSamples);\n      this.remainderData = segmentedData.remainder;\n      videoTrack.samples = segmentedData.valid || new Uint8Array();\n    } else {\n      videoTrack.samples = videoSamples;\n    }\n    const id3Track = this.extractID3Track(videoTrack, timeOffset);\n    textTrack.samples = parseSamples(timeOffset, videoTrack);\n    return {\n      videoTrack,\n      audioTrack: this.audioTrack,\n      id3Track,\n      textTrack: this.txtTrack\n    };\n  }\n  flush() {\n    const timeOffset = this.timeOffset;\n    const videoTrack = this.videoTrack;\n    const textTrack = this.txtTrack;\n    videoTrack.samples = this.remainderData || new Uint8Array();\n    this.remainderData = null;\n    const id3Track = this.extractID3Track(videoTrack, this.timeOffset);\n    textTrack.samples = parseSamples(timeOffset, videoTrack);\n    return {\n      videoTrack,\n      audioTrack: dummyTrack(),\n      id3Track,\n      textTrack: dummyTrack()\n    };\n  }\n  extractID3Track(videoTrack, timeOffset) {\n    const id3Track = this.id3Track;\n    if (videoTrack.samples.length) {\n      const emsgs = findBox(videoTrack.samples, [\"emsg\"]);\n      if (emsgs) {\n        emsgs.forEach((data) => {\n          const emsgInfo = parseEmsg(data);\n          if (emsgSchemePattern.test(emsgInfo.schemeIdUri)) {\n            const pts = isFiniteNumber(emsgInfo.presentationTime) ? emsgInfo.presentationTime / emsgInfo.timeScale : timeOffset + emsgInfo.presentationTimeDelta / emsgInfo.timeScale;\n            let duration = emsgInfo.eventDuration === 4294967295 ? Number.POSITIVE_INFINITY : emsgInfo.eventDuration / emsgInfo.timeScale;\n            if (duration <= 1e-3) {\n              duration = Number.POSITIVE_INFINITY;\n            }\n            const payload = emsgInfo.payload;\n            id3Track.samples.push({\n              data: payload,\n              len: payload.byteLength,\n              dts: pts,\n              pts,\n              type: MetadataSchema.emsg,\n              duration\n            });\n          }\n        });\n      }\n    }\n    return id3Track;\n  }\n  demuxSampleAes(data, keyData, timeOffset) {\n    return Promise.reject(new Error(\"The MP4 demuxer does not support SAMPLE-AES decryption\"));\n  }\n  destroy() {\n  }\n};\nvar getAudioBSID = (data, offset) => {\n  let bsid = 0;\n  let numBits = 5;\n  offset += numBits;\n  const temp = new Uint32Array(1);\n  const mask = new Uint32Array(1);\n  const byte = new Uint8Array(1);\n  while (numBits > 0) {\n    byte[0] = data[offset];\n    const bits = Math.min(numBits, 8);\n    const shift = 8 - bits;\n    mask[0] = 4278190080 >>> 24 + shift << shift;\n    temp[0] = (byte[0] & mask[0]) >> shift;\n    bsid = !bsid ? temp[0] : bsid << bits | temp[0];\n    offset += 1;\n    numBits -= bits;\n  }\n  return bsid;\n};\nvar AC3Demuxer = class extends BaseAudioDemuxer {\n  constructor(observer2) {\n    super();\n    this.observer = void 0;\n    this.observer = observer2;\n  }\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    super.resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration);\n    this._audioTrack = {\n      container: \"audio/ac-3\",\n      type: \"audio\",\n      id: 2,\n      pid: -1,\n      sequenceNumber: 0,\n      segmentCodec: \"ac3\",\n      samples: [],\n      manifestCodec: audioCodec,\n      duration: trackDuration,\n      inputTimeScale: 9e4,\n      dropped: 0\n    };\n  }\n  canParse(data, offset) {\n    return offset + 64 < data.length;\n  }\n  appendFrame(track, data, offset) {\n    const frameLength = appendFrame(track, data, offset, this.basePTS, this.frameIndex);\n    if (frameLength !== -1) {\n      const sample = track.samples[track.samples.length - 1];\n      return {\n        sample,\n        length: frameLength,\n        missing: 0\n      };\n    }\n  }\n  static probe(data) {\n    if (!data) {\n      return false;\n    }\n    const id3Data = getID3Data(data, 0);\n    if (!id3Data) {\n      return false;\n    }\n    const offset = id3Data.length;\n    if (data[offset] === 11 && data[offset + 1] === 119 && getTimeStamp(id3Data) !== void 0 && // check the bsid to confirm ac-3\n    getAudioBSID(data, offset) < 16) {\n      return true;\n    }\n    return false;\n  }\n};\nfunction appendFrame(track, data, start, pts, frameIndex) {\n  if (start + 8 > data.length) {\n    return -1;\n  }\n  if (data[start] !== 11 || data[start + 1] !== 119) {\n    return -1;\n  }\n  const samplingRateCode = data[start + 4] >> 6;\n  if (samplingRateCode >= 3) {\n    return -1;\n  }\n  const samplingRateMap = [48e3, 44100, 32e3];\n  const sampleRate = samplingRateMap[samplingRateCode];\n  const frameSizeCode = data[start + 4] & 63;\n  const frameSizeMap = [64, 69, 96, 64, 70, 96, 80, 87, 120, 80, 88, 120, 96, 104, 144, 96, 105, 144, 112, 121, 168, 112, 122, 168, 128, 139, 192, 128, 140, 192, 160, 174, 240, 160, 175, 240, 192, 208, 288, 192, 209, 288, 224, 243, 336, 224, 244, 336, 256, 278, 384, 256, 279, 384, 320, 348, 480, 320, 349, 480, 384, 417, 576, 384, 418, 576, 448, 487, 672, 448, 488, 672, 512, 557, 768, 512, 558, 768, 640, 696, 960, 640, 697, 960, 768, 835, 1152, 768, 836, 1152, 896, 975, 1344, 896, 976, 1344, 1024, 1114, 1536, 1024, 1115, 1536, 1152, 1253, 1728, 1152, 1254, 1728, 1280, 1393, 1920, 1280, 1394, 1920];\n  const frameLength = frameSizeMap[frameSizeCode * 3 + samplingRateCode] * 2;\n  if (start + frameLength > data.length) {\n    return -1;\n  }\n  const channelMode = data[start + 6] >> 5;\n  let skipCount = 0;\n  if (channelMode === 2) {\n    skipCount += 2;\n  } else {\n    if (channelMode & 1 && channelMode !== 1) {\n      skipCount += 2;\n    }\n    if (channelMode & 4) {\n      skipCount += 2;\n    }\n  }\n  const lfeon = (data[start + 6] << 8 | data[start + 7]) >> 12 - skipCount & 1;\n  const channelsMap = [2, 1, 2, 3, 3, 4, 4, 5];\n  const channelCount = channelsMap[channelMode] + lfeon;\n  const bsid = data[start + 5] >> 3;\n  const bsmod = data[start + 5] & 7;\n  const config = new Uint8Array([samplingRateCode << 6 | bsid << 1 | bsmod >> 2, (bsmod & 3) << 6 | channelMode << 3 | lfeon << 2 | frameSizeCode >> 4, frameSizeCode << 4 & 224]);\n  const frameDuration = 1536 / sampleRate * 9e4;\n  const stamp = pts + frameIndex * frameDuration;\n  const unit = data.subarray(start, start + frameLength);\n  track.config = config;\n  track.channelCount = channelCount;\n  track.samplerate = sampleRate;\n  track.samples.push({\n    unit,\n    pts: stamp\n  });\n  return frameLength;\n}\nvar BaseVideoParser = class {\n  constructor() {\n    this.VideoSample = null;\n  }\n  createVideoSample(key, pts, dts, debug) {\n    return {\n      key,\n      frame: false,\n      pts,\n      dts,\n      units: [],\n      debug,\n      length: 0\n    };\n  }\n  getLastNalUnit(samples) {\n    var _VideoSample;\n    let VideoSample = this.VideoSample;\n    let lastUnit;\n    if (!VideoSample || VideoSample.units.length === 0) {\n      VideoSample = samples[samples.length - 1];\n    }\n    if ((_VideoSample = VideoSample) != null && _VideoSample.units) {\n      const units = VideoSample.units;\n      lastUnit = units[units.length - 1];\n    }\n    return lastUnit;\n  }\n  pushAccessUnit(VideoSample, videoTrack) {\n    if (VideoSample.units.length && VideoSample.frame) {\n      if (VideoSample.pts === void 0) {\n        const samples = videoTrack.samples;\n        const nbSamples = samples.length;\n        if (nbSamples) {\n          const lastSample = samples[nbSamples - 1];\n          VideoSample.pts = lastSample.pts;\n          VideoSample.dts = lastSample.dts;\n        } else {\n          videoTrack.dropped++;\n          return;\n        }\n      }\n      videoTrack.samples.push(VideoSample);\n    }\n    if (VideoSample.debug.length) {\n      logger.log(VideoSample.pts + \"/\" + VideoSample.dts + \":\" + VideoSample.debug);\n    }\n  }\n};\nvar ExpGolomb = class {\n  constructor(data) {\n    this.data = void 0;\n    this.bytesAvailable = void 0;\n    this.word = void 0;\n    this.bitsAvailable = void 0;\n    this.data = data;\n    this.bytesAvailable = data.byteLength;\n    this.word = 0;\n    this.bitsAvailable = 0;\n  }\n  // ():void\n  loadWord() {\n    const data = this.data;\n    const bytesAvailable = this.bytesAvailable;\n    const position = data.byteLength - bytesAvailable;\n    const workingBytes = new Uint8Array(4);\n    const availableBytes = Math.min(4, bytesAvailable);\n    if (availableBytes === 0) {\n      throw new Error(\"no bytes available\");\n    }\n    workingBytes.set(data.subarray(position, position + availableBytes));\n    this.word = new DataView(workingBytes.buffer).getUint32(0);\n    this.bitsAvailable = availableBytes * 8;\n    this.bytesAvailable -= availableBytes;\n  }\n  // (count:int):void\n  skipBits(count) {\n    let skipBytes;\n    count = Math.min(count, this.bytesAvailable * 8 + this.bitsAvailable);\n    if (this.bitsAvailable > count) {\n      this.word <<= count;\n      this.bitsAvailable -= count;\n    } else {\n      count -= this.bitsAvailable;\n      skipBytes = count >> 3;\n      count -= skipBytes << 3;\n      this.bytesAvailable -= skipBytes;\n      this.loadWord();\n      this.word <<= count;\n      this.bitsAvailable -= count;\n    }\n  }\n  // (size:int):uint\n  readBits(size) {\n    let bits = Math.min(this.bitsAvailable, size);\n    const valu = this.word >>> 32 - bits;\n    if (size > 32) {\n      logger.error(\"Cannot read more than 32 bits at a time\");\n    }\n    this.bitsAvailable -= bits;\n    if (this.bitsAvailable > 0) {\n      this.word <<= bits;\n    } else if (this.bytesAvailable > 0) {\n      this.loadWord();\n    } else {\n      throw new Error(\"no bits available\");\n    }\n    bits = size - bits;\n    if (bits > 0 && this.bitsAvailable) {\n      return valu << bits | this.readBits(bits);\n    } else {\n      return valu;\n    }\n  }\n  // ():uint\n  skipLZ() {\n    let leadingZeroCount;\n    for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {\n      if ((this.word & 2147483648 >>> leadingZeroCount) !== 0) {\n        this.word <<= leadingZeroCount;\n        this.bitsAvailable -= leadingZeroCount;\n        return leadingZeroCount;\n      }\n    }\n    this.loadWord();\n    return leadingZeroCount + this.skipLZ();\n  }\n  // ():void\n  skipUEG() {\n    this.skipBits(1 + this.skipLZ());\n  }\n  // ():void\n  skipEG() {\n    this.skipBits(1 + this.skipLZ());\n  }\n  // ():uint\n  readUEG() {\n    const clz = this.skipLZ();\n    return this.readBits(clz + 1) - 1;\n  }\n  // ():int\n  readEG() {\n    const valu = this.readUEG();\n    if (1 & valu) {\n      return 1 + valu >>> 1;\n    } else {\n      return -1 * (valu >>> 1);\n    }\n  }\n  // Some convenience functions\n  // :Boolean\n  readBoolean() {\n    return this.readBits(1) === 1;\n  }\n  // ():int\n  readUByte() {\n    return this.readBits(8);\n  }\n  // ():int\n  readUShort() {\n    return this.readBits(16);\n  }\n  // ():int\n  readUInt() {\n    return this.readBits(32);\n  }\n  /**\n   * Advance the ExpGolomb decoder past a scaling list. The scaling\n   * list is optionally transmitted as part of a sequence parameter\n   * set and is not relevant to transmuxing.\n   * @param count the number of entries in this scaling list\n   * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n   */\n  skipScalingList(count) {\n    let lastScale = 8;\n    let nextScale = 8;\n    let deltaScale;\n    for (let j4 = 0; j4 < count; j4++) {\n      if (nextScale !== 0) {\n        deltaScale = this.readEG();\n        nextScale = (lastScale + deltaScale + 256) % 256;\n      }\n      lastScale = nextScale === 0 ? lastScale : nextScale;\n    }\n  }\n  /**\n   * Read a sequence parameter set and return some interesting video\n   * properties. A sequence parameter set is the H264 metadata that\n   * describes the properties of upcoming video frames.\n   * @returns an object with configuration parsed from the\n   * sequence parameter set, including the dimensions of the\n   * associated video frames.\n   */\n  readSPS() {\n    let frameCropLeftOffset = 0;\n    let frameCropRightOffset = 0;\n    let frameCropTopOffset = 0;\n    let frameCropBottomOffset = 0;\n    let numRefFramesInPicOrderCntCycle;\n    let scalingListCount;\n    let i2;\n    const readUByte = this.readUByte.bind(this);\n    const readBits = this.readBits.bind(this);\n    const readUEG = this.readUEG.bind(this);\n    const readBoolean = this.readBoolean.bind(this);\n    const skipBits = this.skipBits.bind(this);\n    const skipEG = this.skipEG.bind(this);\n    const skipUEG = this.skipUEG.bind(this);\n    const skipScalingList = this.skipScalingList.bind(this);\n    readUByte();\n    const profileIdc = readUByte();\n    readBits(5);\n    skipBits(3);\n    readUByte();\n    skipUEG();\n    if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) {\n      const chromaFormatIdc = readUEG();\n      if (chromaFormatIdc === 3) {\n        skipBits(1);\n      }\n      skipUEG();\n      skipUEG();\n      skipBits(1);\n      if (readBoolean()) {\n        scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n        for (i2 = 0; i2 < scalingListCount; i2++) {\n          if (readBoolean()) {\n            if (i2 < 6) {\n              skipScalingList(16);\n            } else {\n              skipScalingList(64);\n            }\n          }\n        }\n      }\n    }\n    skipUEG();\n    const picOrderCntType = readUEG();\n    if (picOrderCntType === 0) {\n      readUEG();\n    } else if (picOrderCntType === 1) {\n      skipBits(1);\n      skipEG();\n      skipEG();\n      numRefFramesInPicOrderCntCycle = readUEG();\n      for (i2 = 0; i2 < numRefFramesInPicOrderCntCycle; i2++) {\n        skipEG();\n      }\n    }\n    skipUEG();\n    skipBits(1);\n    const picWidthInMbsMinus1 = readUEG();\n    const picHeightInMapUnitsMinus1 = readUEG();\n    const frameMbsOnlyFlag = readBits(1);\n    if (frameMbsOnlyFlag === 0) {\n      skipBits(1);\n    }\n    skipBits(1);\n    if (readBoolean()) {\n      frameCropLeftOffset = readUEG();\n      frameCropRightOffset = readUEG();\n      frameCropTopOffset = readUEG();\n      frameCropBottomOffset = readUEG();\n    }\n    let pixelRatio = [1, 1];\n    if (readBoolean()) {\n      if (readBoolean()) {\n        const aspectRatioIdc = readUByte();\n        switch (aspectRatioIdc) {\n          case 1:\n            pixelRatio = [1, 1];\n            break;\n          case 2:\n            pixelRatio = [12, 11];\n            break;\n          case 3:\n            pixelRatio = [10, 11];\n            break;\n          case 4:\n            pixelRatio = [16, 11];\n            break;\n          case 5:\n            pixelRatio = [40, 33];\n            break;\n          case 6:\n            pixelRatio = [24, 11];\n            break;\n          case 7:\n            pixelRatio = [20, 11];\n            break;\n          case 8:\n            pixelRatio = [32, 11];\n            break;\n          case 9:\n            pixelRatio = [80, 33];\n            break;\n          case 10:\n            pixelRatio = [18, 11];\n            break;\n          case 11:\n            pixelRatio = [15, 11];\n            break;\n          case 12:\n            pixelRatio = [64, 33];\n            break;\n          case 13:\n            pixelRatio = [160, 99];\n            break;\n          case 14:\n            pixelRatio = [4, 3];\n            break;\n          case 15:\n            pixelRatio = [3, 2];\n            break;\n          case 16:\n            pixelRatio = [2, 1];\n            break;\n          case 255: {\n            pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()];\n            break;\n          }\n        }\n      }\n    }\n    return {\n      width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2),\n      height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset),\n      pixelRatio\n    };\n  }\n  readSliceType() {\n    this.readUByte();\n    this.readUEG();\n    return this.readUEG();\n  }\n};\nvar AvcVideoParser = class extends BaseVideoParser {\n  parseAVCPES(track, textTrack, pes, last, duration) {\n    const units = this.parseAVCNALu(track, pes.data);\n    let VideoSample = this.VideoSample;\n    let push2;\n    let spsfound = false;\n    pes.data = null;\n    if (VideoSample && units.length && !track.audFound) {\n      this.pushAccessUnit(VideoSample, track);\n      VideoSample = this.VideoSample = this.createVideoSample(false, pes.pts, pes.dts, \"\");\n    }\n    units.forEach((unit) => {\n      var _VideoSample2;\n      switch (unit.type) {\n        // NDR\n        case 1: {\n          let iskey = false;\n          push2 = true;\n          const data = unit.data;\n          if (spsfound && data.length > 4) {\n            const sliceType = new ExpGolomb(data).readSliceType();\n            if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) {\n              iskey = true;\n            }\n          }\n          if (iskey) {\n            var _VideoSample;\n            if ((_VideoSample = VideoSample) != null && _VideoSample.frame && !VideoSample.key) {\n              this.pushAccessUnit(VideoSample, track);\n              VideoSample = this.VideoSample = null;\n            }\n          }\n          if (!VideoSample) {\n            VideoSample = this.VideoSample = this.createVideoSample(true, pes.pts, pes.dts, \"\");\n          }\n          VideoSample.frame = true;\n          VideoSample.key = iskey;\n          break;\n        }\n        case 5:\n          push2 = true;\n          if ((_VideoSample2 = VideoSample) != null && _VideoSample2.frame && !VideoSample.key) {\n            this.pushAccessUnit(VideoSample, track);\n            VideoSample = this.VideoSample = null;\n          }\n          if (!VideoSample) {\n            VideoSample = this.VideoSample = this.createVideoSample(true, pes.pts, pes.dts, \"\");\n          }\n          VideoSample.key = true;\n          VideoSample.frame = true;\n          break;\n        // SEI\n        case 6: {\n          push2 = true;\n          parseSEIMessageFromNALu(unit.data, 1, pes.pts, textTrack.samples);\n          break;\n        }\n        case 7: {\n          var _track$pixelRatio, _track$pixelRatio2;\n          push2 = true;\n          spsfound = true;\n          const sps = unit.data;\n          const expGolombDecoder = new ExpGolomb(sps);\n          const config = expGolombDecoder.readSPS();\n          if (!track.sps || track.width !== config.width || track.height !== config.height || ((_track$pixelRatio = track.pixelRatio) == null ? void 0 : _track$pixelRatio[0]) !== config.pixelRatio[0] || ((_track$pixelRatio2 = track.pixelRatio) == null ? void 0 : _track$pixelRatio2[1]) !== config.pixelRatio[1]) {\n            track.width = config.width;\n            track.height = config.height;\n            track.pixelRatio = config.pixelRatio;\n            track.sps = [sps];\n            track.duration = duration;\n            const codecarray = sps.subarray(1, 4);\n            let codecstring = \"avc1.\";\n            for (let i2 = 0; i2 < 3; i2++) {\n              let h3 = codecarray[i2].toString(16);\n              if (h3.length < 2) {\n                h3 = \"0\" + h3;\n              }\n              codecstring += h3;\n            }\n            track.codec = codecstring;\n          }\n          break;\n        }\n        // PPS\n        case 8:\n          push2 = true;\n          track.pps = [unit.data];\n          break;\n        // AUD\n        case 9:\n          push2 = true;\n          track.audFound = true;\n          if (VideoSample) {\n            this.pushAccessUnit(VideoSample, track);\n          }\n          VideoSample = this.VideoSample = this.createVideoSample(false, pes.pts, pes.dts, \"\");\n          break;\n        // Filler Data\n        case 12:\n          push2 = true;\n          break;\n        default:\n          push2 = false;\n          if (VideoSample) {\n            VideoSample.debug += \"unknown NAL \" + unit.type + \" \";\n          }\n          break;\n      }\n      if (VideoSample && push2) {\n        const units2 = VideoSample.units;\n        units2.push(unit);\n      }\n    });\n    if (last && VideoSample) {\n      this.pushAccessUnit(VideoSample, track);\n      this.VideoSample = null;\n    }\n  }\n  parseAVCNALu(track, array) {\n    const len = array.byteLength;\n    let state = track.naluState || 0;\n    const lastState = state;\n    const units = [];\n    let i2 = 0;\n    let value;\n    let overflow;\n    let unitType;\n    let lastUnitStart = -1;\n    let lastUnitType = 0;\n    if (state === -1) {\n      lastUnitStart = 0;\n      lastUnitType = array[0] & 31;\n      state = 0;\n      i2 = 1;\n    }\n    while (i2 < len) {\n      value = array[i2++];\n      if (!state) {\n        state = value ? 0 : 1;\n        continue;\n      }\n      if (state === 1) {\n        state = value ? 0 : 2;\n        continue;\n      }\n      if (!value) {\n        state = 3;\n      } else if (value === 1) {\n        overflow = i2 - state - 1;\n        if (lastUnitStart >= 0) {\n          const unit = {\n            data: array.subarray(lastUnitStart, overflow),\n            type: lastUnitType\n          };\n          units.push(unit);\n        } else {\n          const lastUnit = this.getLastNalUnit(track.samples);\n          if (lastUnit) {\n            if (lastState && i2 <= 4 - lastState) {\n              if (lastUnit.state) {\n                lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState);\n              }\n            }\n            if (overflow > 0) {\n              lastUnit.data = appendUint8Array(lastUnit.data, array.subarray(0, overflow));\n              lastUnit.state = 0;\n            }\n          }\n        }\n        if (i2 < len) {\n          unitType = array[i2] & 31;\n          lastUnitStart = i2;\n          lastUnitType = unitType;\n          state = 0;\n        } else {\n          state = -1;\n        }\n      } else {\n        state = 0;\n      }\n    }\n    if (lastUnitStart >= 0 && state >= 0) {\n      const unit = {\n        data: array.subarray(lastUnitStart, len),\n        type: lastUnitType,\n        state\n      };\n      units.push(unit);\n    }\n    if (units.length === 0) {\n      const lastUnit = this.getLastNalUnit(track.samples);\n      if (lastUnit) {\n        lastUnit.data = appendUint8Array(lastUnit.data, array);\n      }\n    }\n    track.naluState = state;\n    return units;\n  }\n};\nvar SampleAesDecrypter = class {\n  constructor(observer2, config, keyData) {\n    this.keyData = void 0;\n    this.decrypter = void 0;\n    this.keyData = keyData;\n    this.decrypter = new Decrypter(config, {\n      removePKCS7Padding: false\n    });\n  }\n  decryptBuffer(encryptedData) {\n    return this.decrypter.decrypt(encryptedData, this.keyData.key.buffer, this.keyData.iv.buffer);\n  }\n  // AAC - encrypt all full 16 bytes blocks starting from offset 16\n  decryptAacSample(samples, sampleIndex, callback) {\n    const curUnit = samples[sampleIndex].unit;\n    if (curUnit.length <= 16) {\n      return;\n    }\n    const encryptedData = curUnit.subarray(16, curUnit.length - curUnit.length % 16);\n    const encryptedBuffer = encryptedData.buffer.slice(encryptedData.byteOffset, encryptedData.byteOffset + encryptedData.length);\n    this.decryptBuffer(encryptedBuffer).then((decryptedBuffer) => {\n      const decryptedData = new Uint8Array(decryptedBuffer);\n      curUnit.set(decryptedData, 16);\n      if (!this.decrypter.isSync()) {\n        this.decryptAacSamples(samples, sampleIndex + 1, callback);\n      }\n    });\n  }\n  decryptAacSamples(samples, sampleIndex, callback) {\n    for (; ; sampleIndex++) {\n      if (sampleIndex >= samples.length) {\n        callback();\n        return;\n      }\n      if (samples[sampleIndex].unit.length < 32) {\n        continue;\n      }\n      this.decryptAacSample(samples, sampleIndex, callback);\n      if (!this.decrypter.isSync()) {\n        return;\n      }\n    }\n  }\n  // AVC - encrypt one 16 bytes block out of ten, starting from offset 32\n  getAvcEncryptedData(decodedData) {\n    const encryptedDataLen = Math.floor((decodedData.length - 48) / 160) * 16 + 16;\n    const encryptedData = new Int8Array(encryptedDataLen);\n    let outputPos = 0;\n    for (let inputPos = 32; inputPos < decodedData.length - 16; inputPos += 160, outputPos += 16) {\n      encryptedData.set(decodedData.subarray(inputPos, inputPos + 16), outputPos);\n    }\n    return encryptedData;\n  }\n  getAvcDecryptedUnit(decodedData, decryptedData) {\n    const uint8DecryptedData = new Uint8Array(decryptedData);\n    let inputPos = 0;\n    for (let outputPos = 32; outputPos < decodedData.length - 16; outputPos += 160, inputPos += 16) {\n      decodedData.set(uint8DecryptedData.subarray(inputPos, inputPos + 16), outputPos);\n    }\n    return decodedData;\n  }\n  decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit) {\n    const decodedData = discardEPB(curUnit.data);\n    const encryptedData = this.getAvcEncryptedData(decodedData);\n    this.decryptBuffer(encryptedData.buffer).then((decryptedBuffer) => {\n      curUnit.data = this.getAvcDecryptedUnit(decodedData, decryptedBuffer);\n      if (!this.decrypter.isSync()) {\n        this.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback);\n      }\n    });\n  }\n  decryptAvcSamples(samples, sampleIndex, unitIndex, callback) {\n    if (samples instanceof Uint8Array) {\n      throw new Error(\"Cannot decrypt samples of type Uint8Array\");\n    }\n    for (; ; sampleIndex++, unitIndex = 0) {\n      if (sampleIndex >= samples.length) {\n        callback();\n        return;\n      }\n      const curUnits = samples[sampleIndex].units;\n      for (; ; unitIndex++) {\n        if (unitIndex >= curUnits.length) {\n          break;\n        }\n        const curUnit = curUnits[unitIndex];\n        if (curUnit.data.length <= 48 || curUnit.type !== 1 && curUnit.type !== 5) {\n          continue;\n        }\n        this.decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit);\n        if (!this.decrypter.isSync()) {\n          return;\n        }\n      }\n    }\n  }\n};\nvar PACKET_LENGTH = 188;\nvar TSDemuxer = class _TSDemuxer {\n  constructor(observer2, config, typeSupported) {\n    this.observer = void 0;\n    this.config = void 0;\n    this.typeSupported = void 0;\n    this.sampleAes = null;\n    this.pmtParsed = false;\n    this.audioCodec = void 0;\n    this.videoCodec = void 0;\n    this._duration = 0;\n    this._pmtId = -1;\n    this._videoTrack = void 0;\n    this._audioTrack = void 0;\n    this._id3Track = void 0;\n    this._txtTrack = void 0;\n    this.aacOverFlow = null;\n    this.remainderData = null;\n    this.videoParser = void 0;\n    this.observer = observer2;\n    this.config = config;\n    this.typeSupported = typeSupported;\n    this.videoParser = new AvcVideoParser();\n  }\n  static probe(data) {\n    const syncOffset = _TSDemuxer.syncOffset(data);\n    if (syncOffset > 0) {\n      logger.warn(`MPEG2-TS detected but first sync word found @ offset ${syncOffset}`);\n    }\n    return syncOffset !== -1;\n  }\n  static syncOffset(data) {\n    const length = data.length;\n    let scanwindow = Math.min(PACKET_LENGTH * 5, length - PACKET_LENGTH) + 1;\n    let i2 = 0;\n    while (i2 < scanwindow) {\n      let foundPat = false;\n      let packetStart = -1;\n      let tsPackets = 0;\n      for (let j4 = i2; j4 < length; j4 += PACKET_LENGTH) {\n        if (data[j4] === 71 && (length - j4 === PACKET_LENGTH || data[j4 + PACKET_LENGTH] === 71)) {\n          tsPackets++;\n          if (packetStart === -1) {\n            packetStart = j4;\n            if (packetStart !== 0) {\n              scanwindow = Math.min(packetStart + PACKET_LENGTH * 99, data.length - PACKET_LENGTH) + 1;\n            }\n          }\n          if (!foundPat) {\n            foundPat = parsePID(data, j4) === 0;\n          }\n          if (foundPat && tsPackets > 1 && (packetStart === 0 && tsPackets > 2 || j4 + PACKET_LENGTH > scanwindow)) {\n            return packetStart;\n          }\n        } else if (tsPackets) {\n          return -1;\n        } else {\n          break;\n        }\n      }\n      i2++;\n    }\n    return -1;\n  }\n  /**\n   * Creates a track model internal to demuxer used to drive remuxing input\n   */\n  static createTrack(type, duration) {\n    return {\n      container: type === \"video\" || type === \"audio\" ? \"video/mp2t\" : void 0,\n      type,\n      id: RemuxerTrackIdConfig[type],\n      pid: -1,\n      inputTimeScale: 9e4,\n      sequenceNumber: 0,\n      samples: [],\n      dropped: 0,\n      duration: type === \"audio\" ? duration : void 0\n    };\n  }\n  /**\n   * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start)\n   * Resets all internal track instances of the demuxer.\n   */\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    this.pmtParsed = false;\n    this._pmtId = -1;\n    this._videoTrack = _TSDemuxer.createTrack(\"video\");\n    this._audioTrack = _TSDemuxer.createTrack(\"audio\", trackDuration);\n    this._id3Track = _TSDemuxer.createTrack(\"id3\");\n    this._txtTrack = _TSDemuxer.createTrack(\"text\");\n    this._audioTrack.segmentCodec = \"aac\";\n    this.aacOverFlow = null;\n    this.remainderData = null;\n    this.audioCodec = audioCodec;\n    this.videoCodec = videoCodec;\n    this._duration = trackDuration;\n  }\n  resetTimeStamp() {\n  }\n  resetContiguity() {\n    const {\n      _audioTrack,\n      _videoTrack,\n      _id3Track\n    } = this;\n    if (_audioTrack) {\n      _audioTrack.pesData = null;\n    }\n    if (_videoTrack) {\n      _videoTrack.pesData = null;\n    }\n    if (_id3Track) {\n      _id3Track.pesData = null;\n    }\n    this.aacOverFlow = null;\n    this.remainderData = null;\n  }\n  demux(data, timeOffset, isSampleAes = false, flush = false) {\n    if (!isSampleAes) {\n      this.sampleAes = null;\n    }\n    let pes;\n    const videoTrack = this._videoTrack;\n    const audioTrack = this._audioTrack;\n    const id3Track = this._id3Track;\n    const textTrack = this._txtTrack;\n    let videoPid = videoTrack.pid;\n    let videoData = videoTrack.pesData;\n    let audioPid = audioTrack.pid;\n    let id3Pid = id3Track.pid;\n    let audioData = audioTrack.pesData;\n    let id3Data = id3Track.pesData;\n    let unknownPID = null;\n    let pmtParsed = this.pmtParsed;\n    let pmtId = this._pmtId;\n    let len = data.length;\n    if (this.remainderData) {\n      data = appendUint8Array(this.remainderData, data);\n      len = data.length;\n      this.remainderData = null;\n    }\n    if (len < PACKET_LENGTH && !flush) {\n      this.remainderData = data;\n      return {\n        audioTrack,\n        videoTrack,\n        id3Track,\n        textTrack\n      };\n    }\n    const syncOffset = Math.max(0, _TSDemuxer.syncOffset(data));\n    len -= (len - syncOffset) % PACKET_LENGTH;\n    if (len < data.byteLength && !flush) {\n      this.remainderData = new Uint8Array(data.buffer, len, data.buffer.byteLength - len);\n    }\n    let tsPacketErrors = 0;\n    for (let start = syncOffset; start < len; start += PACKET_LENGTH) {\n      if (data[start] === 71) {\n        const stt = !!(data[start + 1] & 64);\n        const pid = parsePID(data, start);\n        const atf = (data[start + 3] & 48) >> 4;\n        let offset;\n        if (atf > 1) {\n          offset = start + 5 + data[start + 4];\n          if (offset === start + PACKET_LENGTH) {\n            continue;\n          }\n        } else {\n          offset = start + 4;\n        }\n        switch (pid) {\n          case videoPid:\n            if (stt) {\n              if (videoData && (pes = parsePES(videoData))) {\n                this.videoParser.parseAVCPES(videoTrack, textTrack, pes, false, this._duration);\n              }\n              videoData = {\n                data: [],\n                size: 0\n              };\n            }\n            if (videoData) {\n              videoData.data.push(data.subarray(offset, start + PACKET_LENGTH));\n              videoData.size += start + PACKET_LENGTH - offset;\n            }\n            break;\n          case audioPid:\n            if (stt) {\n              if (audioData && (pes = parsePES(audioData))) {\n                switch (audioTrack.segmentCodec) {\n                  case \"aac\":\n                    this.parseAACPES(audioTrack, pes);\n                    break;\n                  case \"mp3\":\n                    this.parseMPEGPES(audioTrack, pes);\n                    break;\n                  case \"ac3\":\n                    {\n                      this.parseAC3PES(audioTrack, pes);\n                    }\n                    break;\n                }\n              }\n              audioData = {\n                data: [],\n                size: 0\n              };\n            }\n            if (audioData) {\n              audioData.data.push(data.subarray(offset, start + PACKET_LENGTH));\n              audioData.size += start + PACKET_LENGTH - offset;\n            }\n            break;\n          case id3Pid:\n            if (stt) {\n              if (id3Data && (pes = parsePES(id3Data))) {\n                this.parseID3PES(id3Track, pes);\n              }\n              id3Data = {\n                data: [],\n                size: 0\n              };\n            }\n            if (id3Data) {\n              id3Data.data.push(data.subarray(offset, start + PACKET_LENGTH));\n              id3Data.size += start + PACKET_LENGTH - offset;\n            }\n            break;\n          case 0:\n            if (stt) {\n              offset += data[offset] + 1;\n            }\n            pmtId = this._pmtId = parsePAT(data, offset);\n            break;\n          case pmtId: {\n            if (stt) {\n              offset += data[offset] + 1;\n            }\n            const parsedPIDs = parsePMT(data, offset, this.typeSupported, isSampleAes, this.observer);\n            videoPid = parsedPIDs.videoPid;\n            if (videoPid > 0) {\n              videoTrack.pid = videoPid;\n              videoTrack.segmentCodec = parsedPIDs.segmentVideoCodec;\n            }\n            audioPid = parsedPIDs.audioPid;\n            if (audioPid > 0) {\n              audioTrack.pid = audioPid;\n              audioTrack.segmentCodec = parsedPIDs.segmentAudioCodec;\n            }\n            id3Pid = parsedPIDs.id3Pid;\n            if (id3Pid > 0) {\n              id3Track.pid = id3Pid;\n            }\n            if (unknownPID !== null && !pmtParsed) {\n              logger.warn(`MPEG-TS PMT found at ${start} after unknown PID '${unknownPID}'. Backtracking to sync byte @${syncOffset} to parse all TS packets.`);\n              unknownPID = null;\n              start = syncOffset - 188;\n            }\n            pmtParsed = this.pmtParsed = true;\n            break;\n          }\n          case 17:\n          case 8191:\n            break;\n          default:\n            unknownPID = pid;\n            break;\n        }\n      } else {\n        tsPacketErrors++;\n      }\n    }\n    if (tsPacketErrors > 0) {\n      emitParsingError(this.observer, new Error(`Found ${tsPacketErrors} TS packet/s that do not start with 0x47`));\n    }\n    videoTrack.pesData = videoData;\n    audioTrack.pesData = audioData;\n    id3Track.pesData = id3Data;\n    const demuxResult = {\n      audioTrack,\n      videoTrack,\n      id3Track,\n      textTrack\n    };\n    if (flush) {\n      this.extractRemainingSamples(demuxResult);\n    }\n    return demuxResult;\n  }\n  flush() {\n    const {\n      remainderData\n    } = this;\n    this.remainderData = null;\n    let result;\n    if (remainderData) {\n      result = this.demux(remainderData, -1, false, true);\n    } else {\n      result = {\n        videoTrack: this._videoTrack,\n        audioTrack: this._audioTrack,\n        id3Track: this._id3Track,\n        textTrack: this._txtTrack\n      };\n    }\n    this.extractRemainingSamples(result);\n    if (this.sampleAes) {\n      return this.decrypt(result, this.sampleAes);\n    }\n    return result;\n  }\n  extractRemainingSamples(demuxResult) {\n    const {\n      audioTrack,\n      videoTrack,\n      id3Track,\n      textTrack\n    } = demuxResult;\n    const videoData = videoTrack.pesData;\n    const audioData = audioTrack.pesData;\n    const id3Data = id3Track.pesData;\n    let pes;\n    if (videoData && (pes = parsePES(videoData))) {\n      this.videoParser.parseAVCPES(videoTrack, textTrack, pes, true, this._duration);\n      videoTrack.pesData = null;\n    } else {\n      videoTrack.pesData = videoData;\n    }\n    if (audioData && (pes = parsePES(audioData))) {\n      switch (audioTrack.segmentCodec) {\n        case \"aac\":\n          this.parseAACPES(audioTrack, pes);\n          break;\n        case \"mp3\":\n          this.parseMPEGPES(audioTrack, pes);\n          break;\n        case \"ac3\":\n          {\n            this.parseAC3PES(audioTrack, pes);\n          }\n          break;\n      }\n      audioTrack.pesData = null;\n    } else {\n      if (audioData != null && audioData.size) {\n        logger.log(\"last AAC PES packet truncated,might overlap between fragments\");\n      }\n      audioTrack.pesData = audioData;\n    }\n    if (id3Data && (pes = parsePES(id3Data))) {\n      this.parseID3PES(id3Track, pes);\n      id3Track.pesData = null;\n    } else {\n      id3Track.pesData = id3Data;\n    }\n  }\n  demuxSampleAes(data, keyData, timeOffset) {\n    const demuxResult = this.demux(data, timeOffset, true, !this.config.progressive);\n    const sampleAes = this.sampleAes = new SampleAesDecrypter(this.observer, this.config, keyData);\n    return this.decrypt(demuxResult, sampleAes);\n  }\n  decrypt(demuxResult, sampleAes) {\n    return new Promise((resolve) => {\n      const {\n        audioTrack,\n        videoTrack\n      } = demuxResult;\n      if (audioTrack.samples && audioTrack.segmentCodec === \"aac\") {\n        sampleAes.decryptAacSamples(audioTrack.samples, 0, () => {\n          if (videoTrack.samples) {\n            sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, () => {\n              resolve(demuxResult);\n            });\n          } else {\n            resolve(demuxResult);\n          }\n        });\n      } else if (videoTrack.samples) {\n        sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, () => {\n          resolve(demuxResult);\n        });\n      }\n    });\n  }\n  destroy() {\n    this._duration = 0;\n  }\n  parseAACPES(track, pes) {\n    let startOffset = 0;\n    const aacOverFlow = this.aacOverFlow;\n    let data = pes.data;\n    if (aacOverFlow) {\n      this.aacOverFlow = null;\n      const frameMissingBytes = aacOverFlow.missing;\n      const sampleLength = aacOverFlow.sample.unit.byteLength;\n      if (frameMissingBytes === -1) {\n        data = appendUint8Array(aacOverFlow.sample.unit, data);\n      } else {\n        const frameOverflowBytes = sampleLength - frameMissingBytes;\n        aacOverFlow.sample.unit.set(data.subarray(0, frameMissingBytes), frameOverflowBytes);\n        track.samples.push(aacOverFlow.sample);\n        startOffset = aacOverFlow.missing;\n      }\n    }\n    let offset;\n    let len;\n    for (offset = startOffset, len = data.length; offset < len - 1; offset++) {\n      if (isHeader$1(data, offset)) {\n        break;\n      }\n    }\n    if (offset !== startOffset) {\n      let reason;\n      const recoverable = offset < len - 1;\n      if (recoverable) {\n        reason = `AAC PES did not start with ADTS header,offset:${offset}`;\n      } else {\n        reason = \"No ADTS header found in AAC PES\";\n      }\n      emitParsingError(this.observer, new Error(reason), recoverable);\n      if (!recoverable) {\n        return;\n      }\n    }\n    initTrackConfig(track, this.observer, data, offset, this.audioCodec);\n    let pts;\n    if (pes.pts !== void 0) {\n      pts = pes.pts;\n    } else if (aacOverFlow) {\n      const frameDuration = getFrameDuration(track.samplerate);\n      pts = aacOverFlow.sample.pts + frameDuration;\n    } else {\n      logger.warn(\"[tsdemuxer]: AAC PES unknown PTS\");\n      return;\n    }\n    let frameIndex = 0;\n    let frame;\n    while (offset < len) {\n      frame = appendFrame$2(track, data, offset, pts, frameIndex);\n      offset += frame.length;\n      if (!frame.missing) {\n        frameIndex++;\n        for (; offset < len - 1; offset++) {\n          if (isHeader$1(data, offset)) {\n            break;\n          }\n        }\n      } else {\n        this.aacOverFlow = frame;\n        break;\n      }\n    }\n  }\n  parseMPEGPES(track, pes) {\n    const data = pes.data;\n    const length = data.length;\n    let frameIndex = 0;\n    let offset = 0;\n    const pts = pes.pts;\n    if (pts === void 0) {\n      logger.warn(\"[tsdemuxer]: MPEG PES unknown PTS\");\n      return;\n    }\n    while (offset < length) {\n      if (isHeader(data, offset)) {\n        const frame = appendFrame$1(track, data, offset, pts, frameIndex);\n        if (frame) {\n          offset += frame.length;\n          frameIndex++;\n        } else {\n          break;\n        }\n      } else {\n        offset++;\n      }\n    }\n  }\n  parseAC3PES(track, pes) {\n    {\n      const data = pes.data;\n      const pts = pes.pts;\n      if (pts === void 0) {\n        logger.warn(\"[tsdemuxer]: AC3 PES unknown PTS\");\n        return;\n      }\n      const length = data.length;\n      let frameIndex = 0;\n      let offset = 0;\n      let parsed;\n      while (offset < length && (parsed = appendFrame(track, data, offset, pts, frameIndex++)) > 0) {\n        offset += parsed;\n      }\n    }\n  }\n  parseID3PES(id3Track, pes) {\n    if (pes.pts === void 0) {\n      logger.warn(\"[tsdemuxer]: ID3 PES unknown PTS\");\n      return;\n    }\n    const id3Sample = _extends({}, pes, {\n      type: this._videoTrack ? MetadataSchema.emsg : MetadataSchema.audioId3,\n      duration: Number.POSITIVE_INFINITY\n    });\n    id3Track.samples.push(id3Sample);\n  }\n};\nfunction parsePID(data, offset) {\n  return ((data[offset + 1] & 31) << 8) + data[offset + 2];\n}\nfunction parsePAT(data, offset) {\n  return (data[offset + 10] & 31) << 8 | data[offset + 11];\n}\nfunction parsePMT(data, offset, typeSupported, isSampleAes, observer2) {\n  const result = {\n    audioPid: -1,\n    videoPid: -1,\n    id3Pid: -1,\n    segmentVideoCodec: \"avc\",\n    segmentAudioCodec: \"aac\"\n  };\n  const sectionLength = (data[offset + 1] & 15) << 8 | data[offset + 2];\n  const tableEnd = offset + 3 + sectionLength - 4;\n  const programInfoLength = (data[offset + 10] & 15) << 8 | data[offset + 11];\n  offset += 12 + programInfoLength;\n  while (offset < tableEnd) {\n    const pid = parsePID(data, offset);\n    const esInfoLength = (data[offset + 3] & 15) << 8 | data[offset + 4];\n    switch (data[offset]) {\n      case 207:\n        if (!isSampleAes) {\n          logEncryptedSamplesFoundInUnencryptedStream(\"ADTS AAC\");\n          break;\n        }\n      /* falls through */\n      case 15:\n        if (result.audioPid === -1) {\n          result.audioPid = pid;\n        }\n        break;\n      // Packetized metadata (ID3)\n      case 21:\n        if (result.id3Pid === -1) {\n          result.id3Pid = pid;\n        }\n        break;\n      case 219:\n        if (!isSampleAes) {\n          logEncryptedSamplesFoundInUnencryptedStream(\"H.264\");\n          break;\n        }\n      /* falls through */\n      case 27:\n        if (result.videoPid === -1) {\n          result.videoPid = pid;\n          result.segmentVideoCodec = \"avc\";\n        }\n        break;\n      // ISO/IEC 11172-3 (MPEG-1 audio)\n      // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)\n      case 3:\n      case 4:\n        if (!typeSupported.mpeg && !typeSupported.mp3) {\n          logger.log(\"MPEG audio found, not supported in this browser\");\n        } else if (result.audioPid === -1) {\n          result.audioPid = pid;\n          result.segmentAudioCodec = \"mp3\";\n        }\n        break;\n      case 193:\n        if (!isSampleAes) {\n          logEncryptedSamplesFoundInUnencryptedStream(\"AC-3\");\n          break;\n        }\n      /* falls through */\n      case 129:\n        {\n          if (!typeSupported.ac3) {\n            logger.log(\"AC-3 audio found, not supported in this browser\");\n          } else if (result.audioPid === -1) {\n            result.audioPid = pid;\n            result.segmentAudioCodec = \"ac3\";\n          }\n        }\n        break;\n      case 6:\n        if (result.audioPid === -1 && esInfoLength > 0) {\n          let parsePos = offset + 5;\n          let remaining = esInfoLength;\n          while (remaining > 2) {\n            const descriptorId = data[parsePos];\n            switch (descriptorId) {\n              case 106:\n                {\n                  if (typeSupported.ac3 !== true) {\n                    logger.log(\"AC-3 audio found, not supported in this browser for now\");\n                  } else {\n                    result.audioPid = pid;\n                    result.segmentAudioCodec = \"ac3\";\n                  }\n                }\n                break;\n            }\n            const descriptorLen = data[parsePos + 1] + 2;\n            parsePos += descriptorLen;\n            remaining -= descriptorLen;\n          }\n        }\n        break;\n      case 194:\n      // SAMPLE-AES EC3\n      /* falls through */\n      case 135:\n        emitParsingError(observer2, new Error(\"Unsupported EC-3 in M2TS found\"));\n        return result;\n      case 36:\n        emitParsingError(observer2, new Error(\"Unsupported HEVC in M2TS found\"));\n        return result;\n    }\n    offset += esInfoLength + 5;\n  }\n  return result;\n}\nfunction emitParsingError(observer2, error, levelRetry) {\n  logger.warn(`parsing error: ${error.message}`);\n  observer2.emit(Events.ERROR, Events.ERROR, {\n    type: ErrorTypes.MEDIA_ERROR,\n    details: ErrorDetails.FRAG_PARSING_ERROR,\n    fatal: false,\n    levelRetry,\n    error,\n    reason: error.message\n  });\n}\nfunction logEncryptedSamplesFoundInUnencryptedStream(type) {\n  logger.log(`${type} with AES-128-CBC encryption found in unencrypted stream`);\n}\nfunction parsePES(stream) {\n  let i2 = 0;\n  let frag;\n  let pesLen;\n  let pesHdrLen;\n  let pesPts;\n  let pesDts;\n  const data = stream.data;\n  if (!stream || stream.size === 0) {\n    return null;\n  }\n  while (data[0].length < 19 && data.length > 1) {\n    data[0] = appendUint8Array(data[0], data[1]);\n    data.splice(1, 1);\n  }\n  frag = data[0];\n  const pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n  if (pesPrefix === 1) {\n    pesLen = (frag[4] << 8) + frag[5];\n    if (pesLen && pesLen > stream.size - 6) {\n      return null;\n    }\n    const pesFlags = frag[7];\n    if (pesFlags & 192) {\n      pesPts = (frag[9] & 14) * 536870912 + // 1 << 29\n      (frag[10] & 255) * 4194304 + // 1 << 22\n      (frag[11] & 254) * 16384 + // 1 << 14\n      (frag[12] & 255) * 128 + // 1 << 7\n      (frag[13] & 254) / 2;\n      if (pesFlags & 64) {\n        pesDts = (frag[14] & 14) * 536870912 + // 1 << 29\n        (frag[15] & 255) * 4194304 + // 1 << 22\n        (frag[16] & 254) * 16384 + // 1 << 14\n        (frag[17] & 255) * 128 + // 1 << 7\n        (frag[18] & 254) / 2;\n        if (pesPts - pesDts > 60 * 9e4) {\n          logger.warn(`${Math.round((pesPts - pesDts) / 9e4)}s delta between PTS and DTS, align them`);\n          pesPts = pesDts;\n        }\n      } else {\n        pesDts = pesPts;\n      }\n    }\n    pesHdrLen = frag[8];\n    let payloadStartOffset = pesHdrLen + 9;\n    if (stream.size <= payloadStartOffset) {\n      return null;\n    }\n    stream.size -= payloadStartOffset;\n    const pesData = new Uint8Array(stream.size);\n    for (let j4 = 0, dataLen = data.length; j4 < dataLen; j4++) {\n      frag = data[j4];\n      let len = frag.byteLength;\n      if (payloadStartOffset) {\n        if (payloadStartOffset > len) {\n          payloadStartOffset -= len;\n          continue;\n        } else {\n          frag = frag.subarray(payloadStartOffset);\n          len -= payloadStartOffset;\n          payloadStartOffset = 0;\n        }\n      }\n      pesData.set(frag, i2);\n      i2 += len;\n    }\n    if (pesLen) {\n      pesLen -= pesHdrLen + 3;\n    }\n    return {\n      data: pesData,\n      pts: pesPts,\n      dts: pesDts,\n      len: pesLen\n    };\n  }\n  return null;\n}\nvar MP3Demuxer = class extends BaseAudioDemuxer {\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    super.resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration);\n    this._audioTrack = {\n      container: \"audio/mpeg\",\n      type: \"audio\",\n      id: 2,\n      pid: -1,\n      sequenceNumber: 0,\n      segmentCodec: \"mp3\",\n      samples: [],\n      manifestCodec: audioCodec,\n      duration: trackDuration,\n      inputTimeScale: 9e4,\n      dropped: 0\n    };\n  }\n  static probe(data) {\n    if (!data) {\n      return false;\n    }\n    const id3Data = getID3Data(data, 0);\n    let offset = (id3Data == null ? void 0 : id3Data.length) || 0;\n    if (id3Data && data[offset] === 11 && data[offset + 1] === 119 && getTimeStamp(id3Data) !== void 0 && // check the bsid to confirm ac-3 or ec-3 (not mp3)\n    getAudioBSID(data, offset) <= 16) {\n      return false;\n    }\n    for (let length = data.length; offset < length; offset++) {\n      if (probe(data, offset)) {\n        logger.log(\"MPEG Audio sync word found !\");\n        return true;\n      }\n    }\n    return false;\n  }\n  canParse(data, offset) {\n    return canParse(data, offset);\n  }\n  appendFrame(track, data, offset) {\n    if (this.basePTS === null) {\n      return;\n    }\n    return appendFrame$1(track, data, offset, this.basePTS, this.frameIndex);\n  }\n};\nvar AAC = class {\n  static getSilentFrame(codec, channelCount) {\n    switch (codec) {\n      case \"mp4a.40.2\":\n        if (channelCount === 1) {\n          return new Uint8Array([0, 200, 0, 128, 35, 128]);\n        } else if (channelCount === 2) {\n          return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]);\n        } else if (channelCount === 3) {\n          return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]);\n        } else if (channelCount === 4) {\n          return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]);\n        } else if (channelCount === 5) {\n          return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56]);\n        } else if (channelCount === 6) {\n          return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224]);\n        }\n        break;\n      // handle HE-AAC below (mp4a.40.5 / mp4a.40.29)\n      default:\n        if (channelCount === 1) {\n          return new Uint8Array([1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);\n        } else if (channelCount === 2) {\n          return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);\n        } else if (channelCount === 3) {\n          return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);\n        }\n        break;\n    }\n    return void 0;\n  }\n};\nvar UINT32_MAX = Math.pow(2, 32) - 1;\nvar MP4 = class _MP4 {\n  static init() {\n    _MP4.types = {\n      avc1: [],\n      // codingname\n      avcC: [],\n      btrt: [],\n      dinf: [],\n      dref: [],\n      esds: [],\n      ftyp: [],\n      hdlr: [],\n      mdat: [],\n      mdhd: [],\n      mdia: [],\n      mfhd: [],\n      minf: [],\n      moof: [],\n      moov: [],\n      mp4a: [],\n      \".mp3\": [],\n      dac3: [],\n      \"ac-3\": [],\n      mvex: [],\n      mvhd: [],\n      pasp: [],\n      sdtp: [],\n      stbl: [],\n      stco: [],\n      stsc: [],\n      stsd: [],\n      stsz: [],\n      stts: [],\n      tfdt: [],\n      tfhd: [],\n      traf: [],\n      trak: [],\n      trun: [],\n      trex: [],\n      tkhd: [],\n      vmhd: [],\n      smhd: []\n    };\n    let i2;\n    for (i2 in _MP4.types) {\n      if (_MP4.types.hasOwnProperty(i2)) {\n        _MP4.types[i2] = [i2.charCodeAt(0), i2.charCodeAt(1), i2.charCodeAt(2), i2.charCodeAt(3)];\n      }\n    }\n    const videoHdlr = new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      // pre_defined\n      118,\n      105,\n      100,\n      101,\n      // handler_type: 'vide'\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      86,\n      105,\n      100,\n      101,\n      111,\n      72,\n      97,\n      110,\n      100,\n      108,\n      101,\n      114,\n      0\n      // name: 'VideoHandler'\n    ]);\n    const audioHdlr = new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      // pre_defined\n      115,\n      111,\n      117,\n      110,\n      // handler_type: 'soun'\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      83,\n      111,\n      117,\n      110,\n      100,\n      72,\n      97,\n      110,\n      100,\n      108,\n      101,\n      114,\n      0\n      // name: 'SoundHandler'\n    ]);\n    _MP4.HDLR_TYPES = {\n      video: videoHdlr,\n      audio: audioHdlr\n    };\n    const dref = new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      1,\n      // entry_count\n      0,\n      0,\n      0,\n      12,\n      // entry_size\n      117,\n      114,\n      108,\n      32,\n      // 'url' type\n      0,\n      // version 0\n      0,\n      0,\n      1\n      // entry_flags\n    ]);\n    const stco = new Uint8Array([\n      0,\n      // version\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0\n      // entry_count\n    ]);\n    _MP4.STTS = _MP4.STSC = _MP4.STCO = stco;\n    _MP4.STSZ = new Uint8Array([\n      0,\n      // version\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      // sample_size\n      0,\n      0,\n      0,\n      0\n      // sample_count\n    ]);\n    _MP4.VMHD = new Uint8Array([\n      0,\n      // version\n      0,\n      0,\n      1,\n      // flags\n      0,\n      0,\n      // graphicsmode\n      0,\n      0,\n      0,\n      0,\n      0,\n      0\n      // opcolor\n    ]);\n    _MP4.SMHD = new Uint8Array([\n      0,\n      // version\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      // balance\n      0,\n      0\n      // reserved\n    ]);\n    _MP4.STSD = new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      1\n    ]);\n    const majorBrand = new Uint8Array([105, 115, 111, 109]);\n    const avc1Brand = new Uint8Array([97, 118, 99, 49]);\n    const minorVersion = new Uint8Array([0, 0, 0, 1]);\n    _MP4.FTYP = _MP4.box(_MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand);\n    _MP4.DINF = _MP4.box(_MP4.types.dinf, _MP4.box(_MP4.types.dref, dref));\n  }\n  static box(type, ...payload) {\n    let size = 8;\n    let i2 = payload.length;\n    const len = i2;\n    while (i2--) {\n      size += payload[i2].byteLength;\n    }\n    const result = new Uint8Array(size);\n    result[0] = size >> 24 & 255;\n    result[1] = size >> 16 & 255;\n    result[2] = size >> 8 & 255;\n    result[3] = size & 255;\n    result.set(type, 4);\n    for (i2 = 0, size = 8; i2 < len; i2++) {\n      result.set(payload[i2], size);\n      size += payload[i2].byteLength;\n    }\n    return result;\n  }\n  static hdlr(type) {\n    return _MP4.box(_MP4.types.hdlr, _MP4.HDLR_TYPES[type]);\n  }\n  static mdat(data) {\n    return _MP4.box(_MP4.types.mdat, data);\n  }\n  static mdhd(timescale, duration) {\n    duration *= timescale;\n    const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n    const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n    return _MP4.box(_MP4.types.mdhd, new Uint8Array([\n      1,\n      // version 1\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      2,\n      // creation_time\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      3,\n      // modification_time\n      timescale >> 24 & 255,\n      timescale >> 16 & 255,\n      timescale >> 8 & 255,\n      timescale & 255,\n      // timescale\n      upperWordDuration >> 24,\n      upperWordDuration >> 16 & 255,\n      upperWordDuration >> 8 & 255,\n      upperWordDuration & 255,\n      lowerWordDuration >> 24,\n      lowerWordDuration >> 16 & 255,\n      lowerWordDuration >> 8 & 255,\n      lowerWordDuration & 255,\n      85,\n      196,\n      // 'und' language (undetermined)\n      0,\n      0\n    ]));\n  }\n  static mdia(track) {\n    return _MP4.box(_MP4.types.mdia, _MP4.mdhd(track.timescale, track.duration), _MP4.hdlr(track.type), _MP4.minf(track));\n  }\n  static mfhd(sequenceNumber) {\n    return _MP4.box(_MP4.types.mfhd, new Uint8Array([\n      0,\n      0,\n      0,\n      0,\n      // flags\n      sequenceNumber >> 24,\n      sequenceNumber >> 16 & 255,\n      sequenceNumber >> 8 & 255,\n      sequenceNumber & 255\n      // sequence_number\n    ]));\n  }\n  static minf(track) {\n    if (track.type === \"audio\") {\n      return _MP4.box(_MP4.types.minf, _MP4.box(_MP4.types.smhd, _MP4.SMHD), _MP4.DINF, _MP4.stbl(track));\n    } else {\n      return _MP4.box(_MP4.types.minf, _MP4.box(_MP4.types.vmhd, _MP4.VMHD), _MP4.DINF, _MP4.stbl(track));\n    }\n  }\n  static moof(sn, baseMediaDecodeTime, track) {\n    return _MP4.box(_MP4.types.moof, _MP4.mfhd(sn), _MP4.traf(track, baseMediaDecodeTime));\n  }\n  static moov(tracks) {\n    let i2 = tracks.length;\n    const boxes = [];\n    while (i2--) {\n      boxes[i2] = _MP4.trak(tracks[i2]);\n    }\n    return _MP4.box.apply(null, [_MP4.types.moov, _MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(_MP4.mvex(tracks)));\n  }\n  static mvex(tracks) {\n    let i2 = tracks.length;\n    const boxes = [];\n    while (i2--) {\n      boxes[i2] = _MP4.trex(tracks[i2]);\n    }\n    return _MP4.box.apply(null, [_MP4.types.mvex, ...boxes]);\n  }\n  static mvhd(timescale, duration) {\n    duration *= timescale;\n    const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n    const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n    const bytes = new Uint8Array([\n      1,\n      // version 1\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      2,\n      // creation_time\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      3,\n      // modification_time\n      timescale >> 24 & 255,\n      timescale >> 16 & 255,\n      timescale >> 8 & 255,\n      timescale & 255,\n      // timescale\n      upperWordDuration >> 24,\n      upperWordDuration >> 16 & 255,\n      upperWordDuration >> 8 & 255,\n      upperWordDuration & 255,\n      lowerWordDuration >> 24,\n      lowerWordDuration >> 16 & 255,\n      lowerWordDuration >> 8 & 255,\n      lowerWordDuration & 255,\n      0,\n      1,\n      0,\n      0,\n      // 1.0 rate\n      1,\n      0,\n      // 1.0 volume\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      64,\n      0,\n      0,\n      0,\n      // transformation: unity matrix\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      // pre_defined\n      255,\n      255,\n      255,\n      255\n      // next_track_ID\n    ]);\n    return _MP4.box(_MP4.types.mvhd, bytes);\n  }\n  static sdtp(track) {\n    const samples = track.samples || [];\n    const bytes = new Uint8Array(4 + samples.length);\n    let i2;\n    let flags;\n    for (i2 = 0; i2 < samples.length; i2++) {\n      flags = samples[i2].flags;\n      bytes[i2 + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy;\n    }\n    return _MP4.box(_MP4.types.sdtp, bytes);\n  }\n  static stbl(track) {\n    return _MP4.box(_MP4.types.stbl, _MP4.stsd(track), _MP4.box(_MP4.types.stts, _MP4.STTS), _MP4.box(_MP4.types.stsc, _MP4.STSC), _MP4.box(_MP4.types.stsz, _MP4.STSZ), _MP4.box(_MP4.types.stco, _MP4.STCO));\n  }\n  static avc1(track) {\n    let sps = [];\n    let pps = [];\n    let i2;\n    let data;\n    let len;\n    for (i2 = 0; i2 < track.sps.length; i2++) {\n      data = track.sps[i2];\n      len = data.byteLength;\n      sps.push(len >>> 8 & 255);\n      sps.push(len & 255);\n      sps = sps.concat(Array.prototype.slice.call(data));\n    }\n    for (i2 = 0; i2 < track.pps.length; i2++) {\n      data = track.pps[i2];\n      len = data.byteLength;\n      pps.push(len >>> 8 & 255);\n      pps.push(len & 255);\n      pps = pps.concat(Array.prototype.slice.call(data));\n    }\n    const avcc = _MP4.box(_MP4.types.avcC, new Uint8Array([\n      1,\n      // version\n      sps[3],\n      // profile\n      sps[4],\n      // profile compat\n      sps[5],\n      // level\n      252 | 3,\n      // lengthSizeMinusOne, hard-coded to 4 bytes\n      224 | track.sps.length\n      // 3bit reserved (111) + numOfSequenceParameterSets\n    ].concat(sps).concat([\n      track.pps.length\n      // numOfPictureParameterSets\n    ]).concat(pps)));\n    const width = track.width;\n    const height = track.height;\n    const hSpacing = track.pixelRatio[0];\n    const vSpacing = track.pixelRatio[1];\n    return _MP4.box(\n      _MP4.types.avc1,\n      new Uint8Array([\n        0,\n        0,\n        0,\n        // reserved\n        0,\n        0,\n        0,\n        // reserved\n        0,\n        1,\n        // data_reference_index\n        0,\n        0,\n        // pre_defined\n        0,\n        0,\n        // reserved\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        // pre_defined\n        width >> 8 & 255,\n        width & 255,\n        // width\n        height >> 8 & 255,\n        height & 255,\n        // height\n        0,\n        72,\n        0,\n        0,\n        // horizresolution\n        0,\n        72,\n        0,\n        0,\n        // vertresolution\n        0,\n        0,\n        0,\n        0,\n        // reserved\n        0,\n        1,\n        // frame_count\n        18,\n        100,\n        97,\n        105,\n        108,\n        // dailymotion/hls.js\n        121,\n        109,\n        111,\n        116,\n        105,\n        111,\n        110,\n        47,\n        104,\n        108,\n        115,\n        46,\n        106,\n        115,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        // compressorname\n        0,\n        24,\n        // depth = 24\n        17,\n        17\n      ]),\n      // pre_defined = -1\n      avcc,\n      _MP4.box(_MP4.types.btrt, new Uint8Array([\n        0,\n        28,\n        156,\n        128,\n        // bufferSizeDB\n        0,\n        45,\n        198,\n        192,\n        // maxBitrate\n        0,\n        45,\n        198,\n        192\n      ])),\n      // avgBitrate\n      _MP4.box(_MP4.types.pasp, new Uint8Array([\n        hSpacing >> 24,\n        // hSpacing\n        hSpacing >> 16 & 255,\n        hSpacing >> 8 & 255,\n        hSpacing & 255,\n        vSpacing >> 24,\n        // vSpacing\n        vSpacing >> 16 & 255,\n        vSpacing >> 8 & 255,\n        vSpacing & 255\n      ]))\n    );\n  }\n  static esds(track) {\n    const configlen = track.config.length;\n    return new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      3,\n      // descriptor_type\n      23 + configlen,\n      // length\n      0,\n      1,\n      // es_id\n      0,\n      // stream_priority\n      4,\n      // descriptor_type\n      15 + configlen,\n      // length\n      64,\n      // codec : mpeg4_audio\n      21,\n      // stream_type\n      0,\n      0,\n      0,\n      // buffer_size\n      0,\n      0,\n      0,\n      0,\n      // maxBitrate\n      0,\n      0,\n      0,\n      0,\n      // avgBitrate\n      5\n      // descriptor_type\n    ].concat([configlen]).concat(track.config).concat([6, 1, 2]));\n  }\n  static audioStsd(track) {\n    const samplerate = track.samplerate;\n    return new Uint8Array([\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      1,\n      // data_reference_index\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      track.channelCount,\n      // channelcount\n      0,\n      16,\n      // sampleSize:16bits\n      0,\n      0,\n      0,\n      0,\n      // reserved2\n      samplerate >> 8 & 255,\n      samplerate & 255,\n      //\n      0,\n      0\n    ]);\n  }\n  static mp4a(track) {\n    return _MP4.box(_MP4.types.mp4a, _MP4.audioStsd(track), _MP4.box(_MP4.types.esds, _MP4.esds(track)));\n  }\n  static mp3(track) {\n    return _MP4.box(_MP4.types[\".mp3\"], _MP4.audioStsd(track));\n  }\n  static ac3(track) {\n    return _MP4.box(_MP4.types[\"ac-3\"], _MP4.audioStsd(track), _MP4.box(_MP4.types.dac3, track.config));\n  }\n  static stsd(track) {\n    if (track.type === \"audio\") {\n      if (track.segmentCodec === \"mp3\" && track.codec === \"mp3\") {\n        return _MP4.box(_MP4.types.stsd, _MP4.STSD, _MP4.mp3(track));\n      }\n      if (track.segmentCodec === \"ac3\") {\n        return _MP4.box(_MP4.types.stsd, _MP4.STSD, _MP4.ac3(track));\n      }\n      return _MP4.box(_MP4.types.stsd, _MP4.STSD, _MP4.mp4a(track));\n    } else {\n      return _MP4.box(_MP4.types.stsd, _MP4.STSD, _MP4.avc1(track));\n    }\n  }\n  static tkhd(track) {\n    const id = track.id;\n    const duration = track.duration * track.timescale;\n    const width = track.width;\n    const height = track.height;\n    const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n    const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n    return _MP4.box(_MP4.types.tkhd, new Uint8Array([\n      1,\n      // version 1\n      0,\n      0,\n      7,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      2,\n      // creation_time\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      3,\n      // modification_time\n      id >> 24 & 255,\n      id >> 16 & 255,\n      id >> 8 & 255,\n      id & 255,\n      // track_ID\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      upperWordDuration >> 24,\n      upperWordDuration >> 16 & 255,\n      upperWordDuration >> 8 & 255,\n      upperWordDuration & 255,\n      lowerWordDuration >> 24,\n      lowerWordDuration >> 16 & 255,\n      lowerWordDuration >> 8 & 255,\n      lowerWordDuration & 255,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      // layer\n      0,\n      0,\n      // alternate_group\n      0,\n      0,\n      // non-audio track volume\n      0,\n      0,\n      // reserved\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      64,\n      0,\n      0,\n      0,\n      // transformation: unity matrix\n      width >> 8 & 255,\n      width & 255,\n      0,\n      0,\n      // width\n      height >> 8 & 255,\n      height & 255,\n      0,\n      0\n      // height\n    ]));\n  }\n  static traf(track, baseMediaDecodeTime) {\n    const sampleDependencyTable = _MP4.sdtp(track);\n    const id = track.id;\n    const upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n    const lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n    return _MP4.box(\n      _MP4.types.traf,\n      _MP4.box(_MP4.types.tfhd, new Uint8Array([\n        0,\n        // version 0\n        0,\n        0,\n        0,\n        // flags\n        id >> 24,\n        id >> 16 & 255,\n        id >> 8 & 255,\n        id & 255\n        // track_ID\n      ])),\n      _MP4.box(_MP4.types.tfdt, new Uint8Array([\n        1,\n        // version 1\n        0,\n        0,\n        0,\n        // flags\n        upperWordBaseMediaDecodeTime >> 24,\n        upperWordBaseMediaDecodeTime >> 16 & 255,\n        upperWordBaseMediaDecodeTime >> 8 & 255,\n        upperWordBaseMediaDecodeTime & 255,\n        lowerWordBaseMediaDecodeTime >> 24,\n        lowerWordBaseMediaDecodeTime >> 16 & 255,\n        lowerWordBaseMediaDecodeTime >> 8 & 255,\n        lowerWordBaseMediaDecodeTime & 255\n      ])),\n      _MP4.trun(track, sampleDependencyTable.length + 16 + // tfhd\n      20 + // tfdt\n      8 + // traf header\n      16 + // mfhd\n      8 + // moof header\n      8),\n      // mdat header\n      sampleDependencyTable\n    );\n  }\n  /**\n   * Generate a track box.\n   * @param track a track definition\n   */\n  static trak(track) {\n    track.duration = track.duration || 4294967295;\n    return _MP4.box(_MP4.types.trak, _MP4.tkhd(track), _MP4.mdia(track));\n  }\n  static trex(track) {\n    const id = track.id;\n    return _MP4.box(_MP4.types.trex, new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      id >> 24,\n      id >> 16 & 255,\n      id >> 8 & 255,\n      id & 255,\n      // track_ID\n      0,\n      0,\n      0,\n      1,\n      // default_sample_description_index\n      0,\n      0,\n      0,\n      0,\n      // default_sample_duration\n      0,\n      0,\n      0,\n      0,\n      // default_sample_size\n      0,\n      1,\n      0,\n      1\n      // default_sample_flags\n    ]));\n  }\n  static trun(track, offset) {\n    const samples = track.samples || [];\n    const len = samples.length;\n    const arraylen = 12 + 16 * len;\n    const array = new Uint8Array(arraylen);\n    let i2;\n    let sample;\n    let duration;\n    let size;\n    let flags;\n    let cts;\n    offset += 8 + arraylen;\n    array.set([\n      track.type === \"video\" ? 1 : 0,\n      // version 1 for video with signed-int sample_composition_time_offset\n      0,\n      15,\n      1,\n      // flags\n      len >>> 24 & 255,\n      len >>> 16 & 255,\n      len >>> 8 & 255,\n      len & 255,\n      // sample_count\n      offset >>> 24 & 255,\n      offset >>> 16 & 255,\n      offset >>> 8 & 255,\n      offset & 255\n      // data_offset\n    ], 0);\n    for (i2 = 0; i2 < len; i2++) {\n      sample = samples[i2];\n      duration = sample.duration;\n      size = sample.size;\n      flags = sample.flags;\n      cts = sample.cts;\n      array.set([\n        duration >>> 24 & 255,\n        duration >>> 16 & 255,\n        duration >>> 8 & 255,\n        duration & 255,\n        // sample_duration\n        size >>> 24 & 255,\n        size >>> 16 & 255,\n        size >>> 8 & 255,\n        size & 255,\n        // sample_size\n        flags.isLeading << 2 | flags.dependsOn,\n        flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync,\n        flags.degradPrio & 240 << 8,\n        flags.degradPrio & 15,\n        // sample_flags\n        cts >>> 24 & 255,\n        cts >>> 16 & 255,\n        cts >>> 8 & 255,\n        cts & 255\n        // sample_composition_time_offset\n      ], 12 + 16 * i2);\n    }\n    return _MP4.box(_MP4.types.trun, array);\n  }\n  static initSegment(tracks) {\n    if (!_MP4.types) {\n      _MP4.init();\n    }\n    const movie = _MP4.moov(tracks);\n    const result = appendUint8Array(_MP4.FTYP, movie);\n    return result;\n  }\n};\nMP4.types = void 0;\nMP4.HDLR_TYPES = void 0;\nMP4.STTS = void 0;\nMP4.STSC = void 0;\nMP4.STCO = void 0;\nMP4.STSZ = void 0;\nMP4.VMHD = void 0;\nMP4.SMHD = void 0;\nMP4.STSD = void 0;\nMP4.FTYP = void 0;\nMP4.DINF = void 0;\nvar MPEG_TS_CLOCK_FREQ_HZ = 9e4;\nfunction toTimescaleFromBase(baseTime, destScale, srcBase = 1, round = false) {\n  const result = baseTime * destScale * srcBase;\n  return round ? Math.round(result) : result;\n}\nfunction toTimescaleFromScale(baseTime, destScale, srcScale = 1, round = false) {\n  return toTimescaleFromBase(baseTime, destScale, 1 / srcScale, round);\n}\nfunction toMsFromMpegTsClock(baseTime, round = false) {\n  return toTimescaleFromBase(baseTime, 1e3, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);\n}\nfunction toMpegTsClockFromTimescale(baseTime, srcScale = 1) {\n  return toTimescaleFromBase(baseTime, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);\n}\nvar MAX_SILENT_FRAME_DURATION = 10 * 1e3;\nvar AAC_SAMPLES_PER_FRAME = 1024;\nvar MPEG_AUDIO_SAMPLE_PER_FRAME = 1152;\nvar AC3_SAMPLES_PER_FRAME = 1536;\nvar chromeVersion = null;\nvar safariWebkitVersion = null;\nvar MP4Remuxer = class {\n  constructor(observer2, config, typeSupported, vendor = \"\") {\n    this.observer = void 0;\n    this.config = void 0;\n    this.typeSupported = void 0;\n    this.ISGenerated = false;\n    this._initPTS = null;\n    this._initDTS = null;\n    this.nextAvcDts = null;\n    this.nextAudioPts = null;\n    this.videoSampleDuration = null;\n    this.isAudioContiguous = false;\n    this.isVideoContiguous = false;\n    this.videoTrackConfig = void 0;\n    this.observer = observer2;\n    this.config = config;\n    this.typeSupported = typeSupported;\n    this.ISGenerated = false;\n    if (chromeVersion === null) {\n      const userAgent = navigator.userAgent || \"\";\n      const result = userAgent.match(/Chrome\\/(\\d+)/i);\n      chromeVersion = result ? parseInt(result[1]) : 0;\n    }\n    if (safariWebkitVersion === null) {\n      const result = navigator.userAgent.match(/Safari\\/(\\d+)/i);\n      safariWebkitVersion = result ? parseInt(result[1]) : 0;\n    }\n  }\n  destroy() {\n    this.config = this.videoTrackConfig = this._initPTS = this._initDTS = null;\n  }\n  resetTimeStamp(defaultTimeStamp) {\n    logger.log(\"[mp4-remuxer]: initPTS & initDTS reset\");\n    this._initPTS = this._initDTS = defaultTimeStamp;\n  }\n  resetNextTimestamp() {\n    logger.log(\"[mp4-remuxer]: reset next timestamp\");\n    this.isVideoContiguous = false;\n    this.isAudioContiguous = false;\n  }\n  resetInitSegment() {\n    logger.log(\"[mp4-remuxer]: ISGenerated flag reset\");\n    this.ISGenerated = false;\n    this.videoTrackConfig = void 0;\n  }\n  getVideoStartPts(videoSamples) {\n    let rolloverDetected = false;\n    const firstPts = videoSamples[0].pts;\n    const startPTS = videoSamples.reduce((minPTS, sample) => {\n      let pts = sample.pts;\n      let delta = pts - minPTS;\n      if (delta < -4294967296) {\n        rolloverDetected = true;\n        pts = normalizePts(pts, firstPts);\n        delta = pts - minPTS;\n      }\n      if (delta > 0) {\n        return minPTS;\n      }\n      return pts;\n    }, firstPts);\n    if (rolloverDetected) {\n      logger.debug(\"PTS rollover detected\");\n    }\n    return startPTS;\n  }\n  remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, flush, playlistType) {\n    let video;\n    let audio;\n    let initSegment;\n    let text;\n    let id3;\n    let independent;\n    let audioTimeOffset = timeOffset;\n    let videoTimeOffset = timeOffset;\n    const hasAudio = audioTrack.pid > -1;\n    const hasVideo = videoTrack.pid > -1;\n    const length = videoTrack.samples.length;\n    const enoughAudioSamples = audioTrack.samples.length > 0;\n    const enoughVideoSamples = flush && length > 0 || length > 1;\n    const canRemuxAvc = (!hasAudio || enoughAudioSamples) && (!hasVideo || enoughVideoSamples) || this.ISGenerated || flush;\n    if (canRemuxAvc) {\n      if (this.ISGenerated) {\n        var _videoTrack$pixelRati, _config$pixelRatio, _videoTrack$pixelRati2, _config$pixelRatio2;\n        const config = this.videoTrackConfig;\n        if (config && (videoTrack.width !== config.width || videoTrack.height !== config.height || ((_videoTrack$pixelRati = videoTrack.pixelRatio) == null ? void 0 : _videoTrack$pixelRati[0]) !== ((_config$pixelRatio = config.pixelRatio) == null ? void 0 : _config$pixelRatio[0]) || ((_videoTrack$pixelRati2 = videoTrack.pixelRatio) == null ? void 0 : _videoTrack$pixelRati2[1]) !== ((_config$pixelRatio2 = config.pixelRatio) == null ? void 0 : _config$pixelRatio2[1]))) {\n          this.resetInitSegment();\n        }\n      } else {\n        initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n      }\n      const isVideoContiguous = this.isVideoContiguous;\n      let firstKeyFrameIndex = -1;\n      let firstKeyFramePTS;\n      if (enoughVideoSamples) {\n        firstKeyFrameIndex = findKeyframeIndex(videoTrack.samples);\n        if (!isVideoContiguous && this.config.forceKeyFrameOnDiscontinuity) {\n          independent = true;\n          if (firstKeyFrameIndex > 0) {\n            logger.warn(`[mp4-remuxer]: Dropped ${firstKeyFrameIndex} out of ${length} video samples due to a missing keyframe`);\n            const startPTS = this.getVideoStartPts(videoTrack.samples);\n            videoTrack.samples = videoTrack.samples.slice(firstKeyFrameIndex);\n            videoTrack.dropped += firstKeyFrameIndex;\n            videoTimeOffset += (videoTrack.samples[0].pts - startPTS) / videoTrack.inputTimeScale;\n            firstKeyFramePTS = videoTimeOffset;\n          } else if (firstKeyFrameIndex === -1) {\n            logger.warn(`[mp4-remuxer]: No keyframe found out of ${length} video samples`);\n            independent = false;\n          }\n        }\n      }\n      if (this.ISGenerated) {\n        if (enoughAudioSamples && enoughVideoSamples) {\n          const startPTS = this.getVideoStartPts(videoTrack.samples);\n          const tsDelta = normalizePts(audioTrack.samples[0].pts, startPTS) - startPTS;\n          const audiovideoTimestampDelta = tsDelta / videoTrack.inputTimeScale;\n          audioTimeOffset += Math.max(0, audiovideoTimestampDelta);\n          videoTimeOffset += Math.max(0, -audiovideoTimestampDelta);\n        }\n        if (enoughAudioSamples) {\n          if (!audioTrack.samplerate) {\n            logger.warn(\"[mp4-remuxer]: regenerate InitSegment as audio detected\");\n            initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n          }\n          audio = this.remuxAudio(audioTrack, audioTimeOffset, this.isAudioContiguous, accurateTimeOffset, hasVideo || enoughVideoSamples || playlistType === PlaylistLevelType.AUDIO ? videoTimeOffset : void 0);\n          if (enoughVideoSamples) {\n            const audioTrackLength = audio ? audio.endPTS - audio.startPTS : 0;\n            if (!videoTrack.inputTimeScale) {\n              logger.warn(\"[mp4-remuxer]: regenerate InitSegment as video detected\");\n              initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n            }\n            video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, audioTrackLength);\n          }\n        } else if (enoughVideoSamples) {\n          video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, 0);\n        }\n        if (video) {\n          video.firstKeyFrame = firstKeyFrameIndex;\n          video.independent = firstKeyFrameIndex !== -1;\n          video.firstKeyFramePTS = firstKeyFramePTS;\n        }\n      }\n    }\n    if (this.ISGenerated && this._initPTS && this._initDTS) {\n      if (id3Track.samples.length) {\n        id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, this._initPTS, this._initDTS);\n      }\n      if (textTrack.samples.length) {\n        text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, this._initPTS);\n      }\n    }\n    return {\n      audio,\n      video,\n      initSegment,\n      independent,\n      text,\n      id3\n    };\n  }\n  generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset) {\n    const audioSamples = audioTrack.samples;\n    const videoSamples = videoTrack.samples;\n    const typeSupported = this.typeSupported;\n    const tracks = {};\n    const _initPTS = this._initPTS;\n    let computePTSDTS = !_initPTS || accurateTimeOffset;\n    let container = \"audio/mp4\";\n    let initPTS;\n    let initDTS;\n    let timescale;\n    if (computePTSDTS) {\n      initPTS = initDTS = Infinity;\n    }\n    if (audioTrack.config && audioSamples.length) {\n      audioTrack.timescale = audioTrack.samplerate;\n      switch (audioTrack.segmentCodec) {\n        case \"mp3\":\n          if (typeSupported.mpeg) {\n            container = \"audio/mpeg\";\n            audioTrack.codec = \"\";\n          } else if (typeSupported.mp3) {\n            audioTrack.codec = \"mp3\";\n          }\n          break;\n        case \"ac3\":\n          audioTrack.codec = \"ac-3\";\n          break;\n      }\n      tracks.audio = {\n        id: \"audio\",\n        container,\n        codec: audioTrack.codec,\n        initSegment: audioTrack.segmentCodec === \"mp3\" && typeSupported.mpeg ? new Uint8Array(0) : MP4.initSegment([audioTrack]),\n        metadata: {\n          channelCount: audioTrack.channelCount\n        }\n      };\n      if (computePTSDTS) {\n        timescale = audioTrack.inputTimeScale;\n        if (!_initPTS || timescale !== _initPTS.timescale) {\n          initPTS = initDTS = audioSamples[0].pts - Math.round(timescale * timeOffset);\n        } else {\n          computePTSDTS = false;\n        }\n      }\n    }\n    if (videoTrack.sps && videoTrack.pps && videoSamples.length) {\n      videoTrack.timescale = videoTrack.inputTimeScale;\n      tracks.video = {\n        id: \"main\",\n        container: \"video/mp4\",\n        codec: videoTrack.codec,\n        initSegment: MP4.initSegment([videoTrack]),\n        metadata: {\n          width: videoTrack.width,\n          height: videoTrack.height\n        }\n      };\n      if (computePTSDTS) {\n        timescale = videoTrack.inputTimeScale;\n        if (!_initPTS || timescale !== _initPTS.timescale) {\n          const startPTS = this.getVideoStartPts(videoSamples);\n          const startOffset = Math.round(timescale * timeOffset);\n          initDTS = Math.min(initDTS, normalizePts(videoSamples[0].dts, startPTS) - startOffset);\n          initPTS = Math.min(initPTS, startPTS - startOffset);\n        } else {\n          computePTSDTS = false;\n        }\n      }\n      this.videoTrackConfig = {\n        width: videoTrack.width,\n        height: videoTrack.height,\n        pixelRatio: videoTrack.pixelRatio\n      };\n    }\n    if (Object.keys(tracks).length) {\n      this.ISGenerated = true;\n      if (computePTSDTS) {\n        this._initPTS = {\n          baseTime: initPTS,\n          timescale\n        };\n        this._initDTS = {\n          baseTime: initDTS,\n          timescale\n        };\n      } else {\n        initPTS = timescale = void 0;\n      }\n      return {\n        tracks,\n        initPTS,\n        timescale\n      };\n    }\n  }\n  remuxVideo(track, timeOffset, contiguous, audioTrackLength) {\n    const timeScale = track.inputTimeScale;\n    const inputSamples = track.samples;\n    const outputSamples = [];\n    const nbSamples = inputSamples.length;\n    const initPTS = this._initPTS;\n    let nextAvcDts = this.nextAvcDts;\n    let offset = 8;\n    let mp4SampleDuration = this.videoSampleDuration;\n    let firstDTS;\n    let lastDTS;\n    let minPTS = Number.POSITIVE_INFINITY;\n    let maxPTS = Number.NEGATIVE_INFINITY;\n    let sortSamples = false;\n    if (!contiguous || nextAvcDts === null) {\n      const pts = timeOffset * timeScale;\n      const cts = inputSamples[0].pts - normalizePts(inputSamples[0].dts, inputSamples[0].pts);\n      if (chromeVersion && nextAvcDts !== null && Math.abs(pts - cts - nextAvcDts) < 15e3) {\n        contiguous = true;\n      } else {\n        nextAvcDts = pts - cts;\n      }\n    }\n    const initTime = initPTS.baseTime * timeScale / initPTS.timescale;\n    for (let i2 = 0; i2 < nbSamples; i2++) {\n      const sample = inputSamples[i2];\n      sample.pts = normalizePts(sample.pts - initTime, nextAvcDts);\n      sample.dts = normalizePts(sample.dts - initTime, nextAvcDts);\n      if (sample.dts < inputSamples[i2 > 0 ? i2 - 1 : i2].dts) {\n        sortSamples = true;\n      }\n    }\n    if (sortSamples) {\n      inputSamples.sort(function(a2, b4) {\n        const deltadts = a2.dts - b4.dts;\n        const deltapts = a2.pts - b4.pts;\n        return deltadts || deltapts;\n      });\n    }\n    firstDTS = inputSamples[0].dts;\n    lastDTS = inputSamples[inputSamples.length - 1].dts;\n    const inputDuration = lastDTS - firstDTS;\n    const averageSampleDuration = inputDuration ? Math.round(inputDuration / (nbSamples - 1)) : mp4SampleDuration || track.inputTimeScale / 30;\n    if (contiguous) {\n      const delta = firstDTS - nextAvcDts;\n      const foundHole = delta > averageSampleDuration;\n      const foundOverlap = delta < -1;\n      if (foundHole || foundOverlap) {\n        if (foundHole) {\n          logger.warn(`AVC: ${toMsFromMpegTsClock(delta, true)} ms (${delta}dts) hole between fragments detected at ${timeOffset.toFixed(3)}`);\n        } else {\n          logger.warn(`AVC: ${toMsFromMpegTsClock(-delta, true)} ms (${delta}dts) overlapping between fragments detected at ${timeOffset.toFixed(3)}`);\n        }\n        if (!foundOverlap || nextAvcDts >= inputSamples[0].pts || chromeVersion) {\n          firstDTS = nextAvcDts;\n          const firstPTS = inputSamples[0].pts - delta;\n          if (foundHole) {\n            inputSamples[0].dts = firstDTS;\n            inputSamples[0].pts = firstPTS;\n          } else {\n            for (let i2 = 0; i2 < inputSamples.length; i2++) {\n              if (inputSamples[i2].dts > firstPTS) {\n                break;\n              }\n              inputSamples[i2].dts -= delta;\n              inputSamples[i2].pts -= delta;\n            }\n          }\n          logger.log(`Video: Initial PTS/DTS adjusted: ${toMsFromMpegTsClock(firstPTS, true)}/${toMsFromMpegTsClock(firstDTS, true)}, delta: ${toMsFromMpegTsClock(delta, true)} ms`);\n        }\n      }\n    }\n    firstDTS = Math.max(0, firstDTS);\n    let nbNalu = 0;\n    let naluLen = 0;\n    let dtsStep = firstDTS;\n    for (let i2 = 0; i2 < nbSamples; i2++) {\n      const sample = inputSamples[i2];\n      const units = sample.units;\n      const nbUnits = units.length;\n      let sampleLen = 0;\n      for (let j4 = 0; j4 < nbUnits; j4++) {\n        sampleLen += units[j4].data.length;\n      }\n      naluLen += sampleLen;\n      nbNalu += nbUnits;\n      sample.length = sampleLen;\n      if (sample.dts < dtsStep) {\n        sample.dts = dtsStep;\n        dtsStep += averageSampleDuration / 4 | 0 || 1;\n      } else {\n        dtsStep = sample.dts;\n      }\n      minPTS = Math.min(sample.pts, minPTS);\n      maxPTS = Math.max(sample.pts, maxPTS);\n    }\n    lastDTS = inputSamples[nbSamples - 1].dts;\n    const mdatSize = naluLen + 4 * nbNalu + 8;\n    let mdat;\n    try {\n      mdat = new Uint8Array(mdatSize);\n    } catch (err) {\n      this.observer.emit(Events.ERROR, Events.ERROR, {\n        type: ErrorTypes.MUX_ERROR,\n        details: ErrorDetails.REMUX_ALLOC_ERROR,\n        fatal: false,\n        error: err,\n        bytes: mdatSize,\n        reason: `fail allocating video mdat ${mdatSize}`\n      });\n      return;\n    }\n    const view = new DataView(mdat.buffer);\n    view.setUint32(0, mdatSize);\n    mdat.set(MP4.types.mdat, 4);\n    let stretchedLastFrame = false;\n    let minDtsDelta = Number.POSITIVE_INFINITY;\n    let minPtsDelta = Number.POSITIVE_INFINITY;\n    let maxDtsDelta = Number.NEGATIVE_INFINITY;\n    let maxPtsDelta = Number.NEGATIVE_INFINITY;\n    for (let i2 = 0; i2 < nbSamples; i2++) {\n      const VideoSample = inputSamples[i2];\n      const VideoSampleUnits = VideoSample.units;\n      let mp4SampleLength = 0;\n      for (let j4 = 0, nbUnits = VideoSampleUnits.length; j4 < nbUnits; j4++) {\n        const unit = VideoSampleUnits[j4];\n        const unitData = unit.data;\n        const unitDataLen = unit.data.byteLength;\n        view.setUint32(offset, unitDataLen);\n        offset += 4;\n        mdat.set(unitData, offset);\n        offset += unitDataLen;\n        mp4SampleLength += 4 + unitDataLen;\n      }\n      let ptsDelta;\n      if (i2 < nbSamples - 1) {\n        mp4SampleDuration = inputSamples[i2 + 1].dts - VideoSample.dts;\n        ptsDelta = inputSamples[i2 + 1].pts - VideoSample.pts;\n      } else {\n        const config = this.config;\n        const lastFrameDuration = i2 > 0 ? VideoSample.dts - inputSamples[i2 - 1].dts : averageSampleDuration;\n        ptsDelta = i2 > 0 ? VideoSample.pts - inputSamples[i2 - 1].pts : averageSampleDuration;\n        if (config.stretchShortVideoTrack && this.nextAudioPts !== null) {\n          const gapTolerance = Math.floor(config.maxBufferHole * timeScale);\n          const deltaToFrameEnd = (audioTrackLength ? minPTS + audioTrackLength * timeScale : this.nextAudioPts) - VideoSample.pts;\n          if (deltaToFrameEnd > gapTolerance) {\n            mp4SampleDuration = deltaToFrameEnd - lastFrameDuration;\n            if (mp4SampleDuration < 0) {\n              mp4SampleDuration = lastFrameDuration;\n            } else {\n              stretchedLastFrame = true;\n            }\n            logger.log(`[mp4-remuxer]: It is approximately ${deltaToFrameEnd / 90} ms to the next segment; using duration ${mp4SampleDuration / 90} ms for the last video frame.`);\n          } else {\n            mp4SampleDuration = lastFrameDuration;\n          }\n        } else {\n          mp4SampleDuration = lastFrameDuration;\n        }\n      }\n      const compositionTimeOffset = Math.round(VideoSample.pts - VideoSample.dts);\n      minDtsDelta = Math.min(minDtsDelta, mp4SampleDuration);\n      maxDtsDelta = Math.max(maxDtsDelta, mp4SampleDuration);\n      minPtsDelta = Math.min(minPtsDelta, ptsDelta);\n      maxPtsDelta = Math.max(maxPtsDelta, ptsDelta);\n      outputSamples.push(new Mp4Sample(VideoSample.key, mp4SampleDuration, mp4SampleLength, compositionTimeOffset));\n    }\n    if (outputSamples.length) {\n      if (chromeVersion) {\n        if (chromeVersion < 70) {\n          const flags = outputSamples[0].flags;\n          flags.dependsOn = 2;\n          flags.isNonSync = 0;\n        }\n      } else if (safariWebkitVersion) {\n        if (maxPtsDelta - minPtsDelta < maxDtsDelta - minDtsDelta && averageSampleDuration / maxDtsDelta < 0.025 && outputSamples[0].cts === 0) {\n          logger.warn(\"Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.\");\n          let dts = firstDTS;\n          for (let i2 = 0, len = outputSamples.length; i2 < len; i2++) {\n            const nextDts = dts + outputSamples[i2].duration;\n            const pts = dts + outputSamples[i2].cts;\n            if (i2 < len - 1) {\n              const nextPts = nextDts + outputSamples[i2 + 1].cts;\n              outputSamples[i2].duration = nextPts - pts;\n            } else {\n              outputSamples[i2].duration = i2 ? outputSamples[i2 - 1].duration : averageSampleDuration;\n            }\n            outputSamples[i2].cts = 0;\n            dts = nextDts;\n          }\n        }\n      }\n    }\n    mp4SampleDuration = stretchedLastFrame || !mp4SampleDuration ? averageSampleDuration : mp4SampleDuration;\n    this.nextAvcDts = nextAvcDts = lastDTS + mp4SampleDuration;\n    this.videoSampleDuration = mp4SampleDuration;\n    this.isVideoContiguous = true;\n    const moof = MP4.moof(track.sequenceNumber++, firstDTS, _extends({}, track, {\n      samples: outputSamples\n    }));\n    const type = \"video\";\n    const data = {\n      data1: moof,\n      data2: mdat,\n      startPTS: minPTS / timeScale,\n      endPTS: (maxPTS + mp4SampleDuration) / timeScale,\n      startDTS: firstDTS / timeScale,\n      endDTS: nextAvcDts / timeScale,\n      type,\n      hasAudio: false,\n      hasVideo: true,\n      nb: outputSamples.length,\n      dropped: track.dropped\n    };\n    track.samples = [];\n    track.dropped = 0;\n    return data;\n  }\n  getSamplesPerFrame(track) {\n    switch (track.segmentCodec) {\n      case \"mp3\":\n        return MPEG_AUDIO_SAMPLE_PER_FRAME;\n      case \"ac3\":\n        return AC3_SAMPLES_PER_FRAME;\n      default:\n        return AAC_SAMPLES_PER_FRAME;\n    }\n  }\n  remuxAudio(track, timeOffset, contiguous, accurateTimeOffset, videoTimeOffset) {\n    const inputTimeScale = track.inputTimeScale;\n    const mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n    const scaleFactor = inputTimeScale / mp4timeScale;\n    const mp4SampleDuration = this.getSamplesPerFrame(track);\n    const inputSampleDuration = mp4SampleDuration * scaleFactor;\n    const initPTS = this._initPTS;\n    const rawMPEG = track.segmentCodec === \"mp3\" && this.typeSupported.mpeg;\n    const outputSamples = [];\n    const alignedWithVideo = videoTimeOffset !== void 0;\n    let inputSamples = track.samples;\n    let offset = rawMPEG ? 0 : 8;\n    let nextAudioPts = this.nextAudioPts || -1;\n    const timeOffsetMpegTS = timeOffset * inputTimeScale;\n    const initTime = initPTS.baseTime * inputTimeScale / initPTS.timescale;\n    this.isAudioContiguous = contiguous = contiguous || inputSamples.length && nextAudioPts > 0 && (accurateTimeOffset && Math.abs(timeOffsetMpegTS - nextAudioPts) < 9e3 || Math.abs(normalizePts(inputSamples[0].pts - initTime, timeOffsetMpegTS) - nextAudioPts) < 20 * inputSampleDuration);\n    inputSamples.forEach(function(sample) {\n      sample.pts = normalizePts(sample.pts - initTime, timeOffsetMpegTS);\n    });\n    if (!contiguous || nextAudioPts < 0) {\n      inputSamples = inputSamples.filter((sample) => sample.pts >= 0);\n      if (!inputSamples.length) {\n        return;\n      }\n      if (videoTimeOffset === 0) {\n        nextAudioPts = 0;\n      } else if (accurateTimeOffset && !alignedWithVideo) {\n        nextAudioPts = Math.max(0, timeOffsetMpegTS);\n      } else {\n        nextAudioPts = inputSamples[0].pts;\n      }\n    }\n    if (track.segmentCodec === \"aac\") {\n      const maxAudioFramesDrift = this.config.maxAudioFramesDrift;\n      for (let i2 = 0, nextPts = nextAudioPts; i2 < inputSamples.length; i2++) {\n        const sample = inputSamples[i2];\n        const pts = sample.pts;\n        const delta = pts - nextPts;\n        const duration = Math.abs(1e3 * delta / inputTimeScale);\n        if (delta <= -maxAudioFramesDrift * inputSampleDuration && alignedWithVideo) {\n          if (i2 === 0) {\n            logger.warn(`Audio frame @ ${(pts / inputTimeScale).toFixed(3)}s overlaps nextAudioPts by ${Math.round(1e3 * delta / inputTimeScale)} ms.`);\n            this.nextAudioPts = nextAudioPts = nextPts = pts;\n          }\n        } else if (delta >= maxAudioFramesDrift * inputSampleDuration && duration < MAX_SILENT_FRAME_DURATION && alignedWithVideo) {\n          let missing = Math.round(delta / inputSampleDuration);\n          nextPts = pts - missing * inputSampleDuration;\n          if (nextPts < 0) {\n            missing--;\n            nextPts += inputSampleDuration;\n          }\n          if (i2 === 0) {\n            this.nextAudioPts = nextAudioPts = nextPts;\n          }\n          logger.warn(`[mp4-remuxer]: Injecting ${missing} audio frame @ ${(nextPts / inputTimeScale).toFixed(3)}s due to ${Math.round(1e3 * delta / inputTimeScale)} ms gap.`);\n          for (let j4 = 0; j4 < missing; j4++) {\n            const newStamp = Math.max(nextPts, 0);\n            let fillFrame = AAC.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n            if (!fillFrame) {\n              logger.log(\"[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead.\");\n              fillFrame = sample.unit.subarray();\n            }\n            inputSamples.splice(i2, 0, {\n              unit: fillFrame,\n              pts: newStamp\n            });\n            nextPts += inputSampleDuration;\n            i2++;\n          }\n        }\n        sample.pts = nextPts;\n        nextPts += inputSampleDuration;\n      }\n    }\n    let firstPTS = null;\n    let lastPTS = null;\n    let mdat;\n    let mdatSize = 0;\n    let sampleLength = inputSamples.length;\n    while (sampleLength--) {\n      mdatSize += inputSamples[sampleLength].unit.byteLength;\n    }\n    for (let j4 = 0, _nbSamples = inputSamples.length; j4 < _nbSamples; j4++) {\n      const audioSample = inputSamples[j4];\n      const unit = audioSample.unit;\n      let pts = audioSample.pts;\n      if (lastPTS !== null) {\n        const prevSample = outputSamples[j4 - 1];\n        prevSample.duration = Math.round((pts - lastPTS) / scaleFactor);\n      } else {\n        if (contiguous && track.segmentCodec === \"aac\") {\n          pts = nextAudioPts;\n        }\n        firstPTS = pts;\n        if (mdatSize > 0) {\n          mdatSize += offset;\n          try {\n            mdat = new Uint8Array(mdatSize);\n          } catch (err) {\n            this.observer.emit(Events.ERROR, Events.ERROR, {\n              type: ErrorTypes.MUX_ERROR,\n              details: ErrorDetails.REMUX_ALLOC_ERROR,\n              fatal: false,\n              error: err,\n              bytes: mdatSize,\n              reason: `fail allocating audio mdat ${mdatSize}`\n            });\n            return;\n          }\n          if (!rawMPEG) {\n            const view = new DataView(mdat.buffer);\n            view.setUint32(0, mdatSize);\n            mdat.set(MP4.types.mdat, 4);\n          }\n        } else {\n          return;\n        }\n      }\n      mdat.set(unit, offset);\n      const unitLen = unit.byteLength;\n      offset += unitLen;\n      outputSamples.push(new Mp4Sample(true, mp4SampleDuration, unitLen, 0));\n      lastPTS = pts;\n    }\n    const nbSamples = outputSamples.length;\n    if (!nbSamples) {\n      return;\n    }\n    const lastSample = outputSamples[outputSamples.length - 1];\n    this.nextAudioPts = nextAudioPts = lastPTS + scaleFactor * lastSample.duration;\n    const moof = rawMPEG ? new Uint8Array(0) : MP4.moof(track.sequenceNumber++, firstPTS / scaleFactor, _extends({}, track, {\n      samples: outputSamples\n    }));\n    track.samples = [];\n    const start = firstPTS / inputTimeScale;\n    const end = nextAudioPts / inputTimeScale;\n    const type = \"audio\";\n    const audioData = {\n      data1: moof,\n      data2: mdat,\n      startPTS: start,\n      endPTS: end,\n      startDTS: start,\n      endDTS: end,\n      type,\n      hasAudio: true,\n      hasVideo: false,\n      nb: nbSamples\n    };\n    this.isAudioContiguous = true;\n    return audioData;\n  }\n  remuxEmptyAudio(track, timeOffset, contiguous, videoData) {\n    const inputTimeScale = track.inputTimeScale;\n    const mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n    const scaleFactor = inputTimeScale / mp4timeScale;\n    const nextAudioPts = this.nextAudioPts;\n    const initDTS = this._initDTS;\n    const init90kHz = initDTS.baseTime * 9e4 / initDTS.timescale;\n    const startDTS = (nextAudioPts !== null ? nextAudioPts : videoData.startDTS * inputTimeScale) + init90kHz;\n    const endDTS = videoData.endDTS * inputTimeScale + init90kHz;\n    const frameDuration = scaleFactor * AAC_SAMPLES_PER_FRAME;\n    const nbSamples = Math.ceil((endDTS - startDTS) / frameDuration);\n    const silentFrame = AAC.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n    logger.warn(\"[mp4-remuxer]: remux empty Audio\");\n    if (!silentFrame) {\n      logger.trace(\"[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec\");\n      return;\n    }\n    const samples = [];\n    for (let i2 = 0; i2 < nbSamples; i2++) {\n      const stamp = startDTS + i2 * frameDuration;\n      samples.push({\n        unit: silentFrame,\n        pts: stamp,\n        dts: stamp\n      });\n    }\n    track.samples = samples;\n    return this.remuxAudio(track, timeOffset, contiguous, false);\n  }\n};\nfunction normalizePts(value, reference) {\n  let offset;\n  if (reference === null) {\n    return value;\n  }\n  if (reference < value) {\n    offset = -8589934592;\n  } else {\n    offset = 8589934592;\n  }\n  while (Math.abs(value - reference) > 4294967296) {\n    value += offset;\n  }\n  return value;\n}\nfunction findKeyframeIndex(samples) {\n  for (let i2 = 0; i2 < samples.length; i2++) {\n    if (samples[i2].key) {\n      return i2;\n    }\n  }\n  return -1;\n}\nfunction flushTextTrackMetadataCueSamples(track, timeOffset, initPTS, initDTS) {\n  const length = track.samples.length;\n  if (!length) {\n    return;\n  }\n  const inputTimeScale = track.inputTimeScale;\n  for (let index = 0; index < length; index++) {\n    const sample = track.samples[index];\n    sample.pts = normalizePts(sample.pts - initPTS.baseTime * inputTimeScale / initPTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n    sample.dts = normalizePts(sample.dts - initDTS.baseTime * inputTimeScale / initDTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n  }\n  const samples = track.samples;\n  track.samples = [];\n  return {\n    samples\n  };\n}\nfunction flushTextTrackUserdataCueSamples(track, timeOffset, initPTS) {\n  const length = track.samples.length;\n  if (!length) {\n    return;\n  }\n  const inputTimeScale = track.inputTimeScale;\n  for (let index = 0; index < length; index++) {\n    const sample = track.samples[index];\n    sample.pts = normalizePts(sample.pts - initPTS.baseTime * inputTimeScale / initPTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n  }\n  track.samples.sort((a2, b4) => a2.pts - b4.pts);\n  const samples = track.samples;\n  track.samples = [];\n  return {\n    samples\n  };\n}\nvar Mp4Sample = class {\n  constructor(isKeyframe, duration, size, cts) {\n    this.size = void 0;\n    this.duration = void 0;\n    this.cts = void 0;\n    this.flags = void 0;\n    this.duration = duration;\n    this.size = size;\n    this.cts = cts;\n    this.flags = {\n      isLeading: 0,\n      isDependedOn: 0,\n      hasRedundancy: 0,\n      degradPrio: 0,\n      dependsOn: isKeyframe ? 2 : 1,\n      isNonSync: isKeyframe ? 0 : 1\n    };\n  }\n};\nvar PassThroughRemuxer = class {\n  constructor() {\n    this.emitInitSegment = false;\n    this.audioCodec = void 0;\n    this.videoCodec = void 0;\n    this.initData = void 0;\n    this.initPTS = null;\n    this.initTracks = void 0;\n    this.lastEndTime = null;\n  }\n  destroy() {\n  }\n  resetTimeStamp(defaultInitPTS) {\n    this.initPTS = defaultInitPTS;\n    this.lastEndTime = null;\n  }\n  resetNextTimestamp() {\n    this.lastEndTime = null;\n  }\n  resetInitSegment(initSegment, audioCodec, videoCodec, decryptdata) {\n    this.audioCodec = audioCodec;\n    this.videoCodec = videoCodec;\n    this.generateInitSegment(patchEncyptionData(initSegment, decryptdata));\n    this.emitInitSegment = true;\n  }\n  generateInitSegment(initSegment) {\n    let {\n      audioCodec,\n      videoCodec\n    } = this;\n    if (!(initSegment != null && initSegment.byteLength)) {\n      this.initTracks = void 0;\n      this.initData = void 0;\n      return;\n    }\n    const initData = this.initData = parseInitSegment(initSegment);\n    if (initData.audio) {\n      audioCodec = getParsedTrackCodec(initData.audio, ElementaryStreamTypes.AUDIO);\n    }\n    if (initData.video) {\n      videoCodec = getParsedTrackCodec(initData.video, ElementaryStreamTypes.VIDEO);\n    }\n    const tracks = {};\n    if (initData.audio && initData.video) {\n      tracks.audiovideo = {\n        container: \"video/mp4\",\n        codec: audioCodec + \",\" + videoCodec,\n        initSegment,\n        id: \"main\"\n      };\n    } else if (initData.audio) {\n      tracks.audio = {\n        container: \"audio/mp4\",\n        codec: audioCodec,\n        initSegment,\n        id: \"audio\"\n      };\n    } else if (initData.video) {\n      tracks.video = {\n        container: \"video/mp4\",\n        codec: videoCodec,\n        initSegment,\n        id: \"main\"\n      };\n    } else {\n      logger.warn(\"[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.\");\n    }\n    this.initTracks = tracks;\n  }\n  remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset) {\n    var _initData, _initData2;\n    let {\n      initPTS,\n      lastEndTime\n    } = this;\n    const result = {\n      audio: void 0,\n      video: void 0,\n      text: textTrack,\n      id3: id3Track,\n      initSegment: void 0\n    };\n    if (!isFiniteNumber(lastEndTime)) {\n      lastEndTime = this.lastEndTime = timeOffset || 0;\n    }\n    const data = videoTrack.samples;\n    if (!(data != null && data.length)) {\n      return result;\n    }\n    const initSegment = {\n      initPTS: void 0,\n      timescale: 1\n    };\n    let initData = this.initData;\n    if (!((_initData = initData) != null && _initData.length)) {\n      this.generateInitSegment(data);\n      initData = this.initData;\n    }\n    if (!((_initData2 = initData) != null && _initData2.length)) {\n      logger.warn(\"[passthrough-remuxer.ts]: Failed to generate initSegment.\");\n      return result;\n    }\n    if (this.emitInitSegment) {\n      initSegment.tracks = this.initTracks;\n      this.emitInitSegment = false;\n    }\n    const duration = getDuration(data, initData);\n    const startDTS = getStartDTS(initData, data);\n    const decodeTime = startDTS === null ? timeOffset : startDTS;\n    if (isInvalidInitPts(initPTS, decodeTime, timeOffset, duration) || initSegment.timescale !== initPTS.timescale && accurateTimeOffset) {\n      initSegment.initPTS = decodeTime - timeOffset;\n      if (initPTS && initPTS.timescale === 1) {\n        logger.warn(`Adjusting initPTS by ${initSegment.initPTS - initPTS.baseTime}`);\n      }\n      this.initPTS = initPTS = {\n        baseTime: initSegment.initPTS,\n        timescale: 1\n      };\n    }\n    const startTime = audioTrack ? decodeTime - initPTS.baseTime / initPTS.timescale : lastEndTime;\n    const endTime = startTime + duration;\n    offsetStartDTS(initData, data, initPTS.baseTime / initPTS.timescale);\n    if (duration > 0) {\n      this.lastEndTime = endTime;\n    } else {\n      logger.warn(\"Duration parsed from mp4 should be greater than zero\");\n      this.resetNextTimestamp();\n    }\n    const hasAudio = !!initData.audio;\n    const hasVideo = !!initData.video;\n    let type = \"\";\n    if (hasAudio) {\n      type += \"audio\";\n    }\n    if (hasVideo) {\n      type += \"video\";\n    }\n    const track = {\n      data1: data,\n      startPTS: startTime,\n      startDTS: startTime,\n      endPTS: endTime,\n      endDTS: endTime,\n      type,\n      hasAudio,\n      hasVideo,\n      nb: 1,\n      dropped: 0\n    };\n    result.audio = track.type === \"audio\" ? track : void 0;\n    result.video = track.type !== \"audio\" ? track : void 0;\n    result.initSegment = initSegment;\n    result.id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, initPTS, initPTS);\n    if (textTrack.samples.length) {\n      result.text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, initPTS);\n    }\n    return result;\n  }\n};\nfunction isInvalidInitPts(initPTS, startDTS, timeOffset, duration) {\n  if (initPTS === null) {\n    return true;\n  }\n  const minDuration = Math.max(duration, 1);\n  const startTime = startDTS - initPTS.baseTime / initPTS.timescale;\n  return Math.abs(startTime - timeOffset) > minDuration;\n}\nfunction getParsedTrackCodec(track, type) {\n  const parsedCodec = track == null ? void 0 : track.codec;\n  if (parsedCodec && parsedCodec.length > 4) {\n    return parsedCodec;\n  }\n  if (type === ElementaryStreamTypes.AUDIO) {\n    if (parsedCodec === \"ec-3\" || parsedCodec === \"ac-3\" || parsedCodec === \"alac\") {\n      return parsedCodec;\n    }\n    if (parsedCodec === \"fLaC\" || parsedCodec === \"Opus\") {\n      const preferManagedMediaSource = false;\n      return getCodecCompatibleName(parsedCodec, preferManagedMediaSource);\n    }\n    const result = \"mp4a.40.5\";\n    logger.info(`Parsed audio codec \"${parsedCodec}\" or audio object type not handled. Using \"${result}\"`);\n    return result;\n  }\n  logger.warn(`Unhandled video codec \"${parsedCodec}\"`);\n  if (parsedCodec === \"hvc1\" || parsedCodec === \"hev1\") {\n    return \"hvc1.1.6.L120.90\";\n  }\n  if (parsedCodec === \"av01\") {\n    return \"av01.0.04M.08\";\n  }\n  return \"avc1.42e01e\";\n}\nvar now;\ntry {\n  now = self.performance.now.bind(self.performance);\n} catch (err) {\n  logger.debug(\"Unable to use Performance API on this environment\");\n  now = optionalSelf == null ? void 0 : optionalSelf.Date.now;\n}\nvar muxConfig = [{\n  demux: MP4Demuxer,\n  remux: PassThroughRemuxer\n}, {\n  demux: TSDemuxer,\n  remux: MP4Remuxer\n}, {\n  demux: AACDemuxer,\n  remux: MP4Remuxer\n}, {\n  demux: MP3Demuxer,\n  remux: MP4Remuxer\n}];\n{\n  muxConfig.splice(2, 0, {\n    demux: AC3Demuxer,\n    remux: MP4Remuxer\n  });\n}\nvar Transmuxer = class {\n  constructor(observer2, typeSupported, config, vendor, id) {\n    this.async = false;\n    this.observer = void 0;\n    this.typeSupported = void 0;\n    this.config = void 0;\n    this.vendor = void 0;\n    this.id = void 0;\n    this.demuxer = void 0;\n    this.remuxer = void 0;\n    this.decrypter = void 0;\n    this.probe = void 0;\n    this.decryptionPromise = null;\n    this.transmuxConfig = void 0;\n    this.currentTransmuxState = void 0;\n    this.observer = observer2;\n    this.typeSupported = typeSupported;\n    this.config = config;\n    this.vendor = vendor;\n    this.id = id;\n  }\n  configure(transmuxConfig) {\n    this.transmuxConfig = transmuxConfig;\n    if (this.decrypter) {\n      this.decrypter.reset();\n    }\n  }\n  push(data, decryptdata, chunkMeta, state) {\n    const stats = chunkMeta.transmuxing;\n    stats.executeStart = now();\n    let uintData = new Uint8Array(data);\n    const {\n      currentTransmuxState,\n      transmuxConfig\n    } = this;\n    if (state) {\n      this.currentTransmuxState = state;\n    }\n    const {\n      contiguous,\n      discontinuity,\n      trackSwitch,\n      accurateTimeOffset,\n      timeOffset,\n      initSegmentChange\n    } = state || currentTransmuxState;\n    const {\n      audioCodec,\n      videoCodec,\n      defaultInitPts,\n      duration,\n      initSegmentData\n    } = transmuxConfig;\n    const keyData = getEncryptionType(uintData, decryptdata);\n    if (keyData && keyData.method === \"AES-128\") {\n      const decrypter = this.getDecrypter();\n      if (decrypter.isSync()) {\n        let decryptedData = decrypter.softwareDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer);\n        const loadingParts = chunkMeta.part > -1;\n        if (loadingParts) {\n          decryptedData = decrypter.flush();\n        }\n        if (!decryptedData) {\n          stats.executeEnd = now();\n          return emptyResult(chunkMeta);\n        }\n        uintData = new Uint8Array(decryptedData);\n      } else {\n        this.decryptionPromise = decrypter.webCryptoDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer).then((decryptedData) => {\n          const result2 = this.push(decryptedData, null, chunkMeta);\n          this.decryptionPromise = null;\n          return result2;\n        });\n        return this.decryptionPromise;\n      }\n    }\n    const resetMuxers = this.needsProbing(discontinuity, trackSwitch);\n    if (resetMuxers) {\n      const error = this.configureTransmuxer(uintData);\n      if (error) {\n        logger.warn(`[transmuxer] ${error.message}`);\n        this.observer.emit(Events.ERROR, Events.ERROR, {\n          type: ErrorTypes.MEDIA_ERROR,\n          details: ErrorDetails.FRAG_PARSING_ERROR,\n          fatal: false,\n          error,\n          reason: error.message\n        });\n        stats.executeEnd = now();\n        return emptyResult(chunkMeta);\n      }\n    }\n    if (discontinuity || trackSwitch || initSegmentChange || resetMuxers) {\n      this.resetInitSegment(initSegmentData, audioCodec, videoCodec, duration, decryptdata);\n    }\n    if (discontinuity || initSegmentChange || resetMuxers) {\n      this.resetInitialTimestamp(defaultInitPts);\n    }\n    if (!contiguous) {\n      this.resetContiguity();\n    }\n    const result = this.transmux(uintData, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n    const currentState = this.currentTransmuxState;\n    currentState.contiguous = true;\n    currentState.discontinuity = false;\n    currentState.trackSwitch = false;\n    stats.executeEnd = now();\n    return result;\n  }\n  // Due to data caching, flush calls can produce more than one TransmuxerResult (hence the Array type)\n  flush(chunkMeta) {\n    const stats = chunkMeta.transmuxing;\n    stats.executeStart = now();\n    const {\n      decrypter,\n      currentTransmuxState,\n      decryptionPromise\n    } = this;\n    if (decryptionPromise) {\n      return decryptionPromise.then(() => {\n        return this.flush(chunkMeta);\n      });\n    }\n    const transmuxResults = [];\n    const {\n      timeOffset\n    } = currentTransmuxState;\n    if (decrypter) {\n      const decryptedData = decrypter.flush();\n      if (decryptedData) {\n        transmuxResults.push(this.push(decryptedData, null, chunkMeta));\n      }\n    }\n    const {\n      demuxer,\n      remuxer\n    } = this;\n    if (!demuxer || !remuxer) {\n      stats.executeEnd = now();\n      return [emptyResult(chunkMeta)];\n    }\n    const demuxResultOrPromise = demuxer.flush(timeOffset);\n    if (isPromise(demuxResultOrPromise)) {\n      return demuxResultOrPromise.then((demuxResult) => {\n        this.flushRemux(transmuxResults, demuxResult, chunkMeta);\n        return transmuxResults;\n      });\n    }\n    this.flushRemux(transmuxResults, demuxResultOrPromise, chunkMeta);\n    return transmuxResults;\n  }\n  flushRemux(transmuxResults, demuxResult, chunkMeta) {\n    const {\n      audioTrack,\n      videoTrack,\n      id3Track,\n      textTrack\n    } = demuxResult;\n    const {\n      accurateTimeOffset,\n      timeOffset\n    } = this.currentTransmuxState;\n    logger.log(`[transmuxer.ts]: Flushed fragment ${chunkMeta.sn}${chunkMeta.part > -1 ? \" p: \" + chunkMeta.part : \"\"} of level ${chunkMeta.level}`);\n    const remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, true, this.id);\n    transmuxResults.push({\n      remuxResult,\n      chunkMeta\n    });\n    chunkMeta.transmuxing.executeEnd = now();\n  }\n  resetInitialTimestamp(defaultInitPts) {\n    const {\n      demuxer,\n      remuxer\n    } = this;\n    if (!demuxer || !remuxer) {\n      return;\n    }\n    demuxer.resetTimeStamp(defaultInitPts);\n    remuxer.resetTimeStamp(defaultInitPts);\n  }\n  resetContiguity() {\n    const {\n      demuxer,\n      remuxer\n    } = this;\n    if (!demuxer || !remuxer) {\n      return;\n    }\n    demuxer.resetContiguity();\n    remuxer.resetNextTimestamp();\n  }\n  resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration, decryptdata) {\n    const {\n      demuxer,\n      remuxer\n    } = this;\n    if (!demuxer || !remuxer) {\n      return;\n    }\n    demuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration);\n    remuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, decryptdata);\n  }\n  destroy() {\n    if (this.demuxer) {\n      this.demuxer.destroy();\n      this.demuxer = void 0;\n    }\n    if (this.remuxer) {\n      this.remuxer.destroy();\n      this.remuxer = void 0;\n    }\n  }\n  transmux(data, keyData, timeOffset, accurateTimeOffset, chunkMeta) {\n    let result;\n    if (keyData && keyData.method === \"SAMPLE-AES\") {\n      result = this.transmuxSampleAes(data, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n    } else {\n      result = this.transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta);\n    }\n    return result;\n  }\n  transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta) {\n    const {\n      audioTrack,\n      videoTrack,\n      id3Track,\n      textTrack\n    } = this.demuxer.demux(data, timeOffset, false, !this.config.progressive);\n    const remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, false, this.id);\n    return {\n      remuxResult,\n      chunkMeta\n    };\n  }\n  transmuxSampleAes(data, decryptData, timeOffset, accurateTimeOffset, chunkMeta) {\n    return this.demuxer.demuxSampleAes(data, decryptData, timeOffset).then((demuxResult) => {\n      const remuxResult = this.remuxer.remux(demuxResult.audioTrack, demuxResult.videoTrack, demuxResult.id3Track, demuxResult.textTrack, timeOffset, accurateTimeOffset, false, this.id);\n      return {\n        remuxResult,\n        chunkMeta\n      };\n    });\n  }\n  configureTransmuxer(data) {\n    const {\n      config,\n      observer: observer2,\n      typeSupported,\n      vendor\n    } = this;\n    let mux;\n    for (let i2 = 0, len = muxConfig.length; i2 < len; i2++) {\n      var _muxConfig$i$demux;\n      if ((_muxConfig$i$demux = muxConfig[i2].demux) != null && _muxConfig$i$demux.probe(data)) {\n        mux = muxConfig[i2];\n        break;\n      }\n    }\n    if (!mux) {\n      return new Error(\"Failed to find demuxer by probing fragment data\");\n    }\n    const demuxer = this.demuxer;\n    const remuxer = this.remuxer;\n    const Remuxer = mux.remux;\n    const Demuxer = mux.demux;\n    if (!remuxer || !(remuxer instanceof Remuxer)) {\n      this.remuxer = new Remuxer(observer2, config, typeSupported, vendor);\n    }\n    if (!demuxer || !(demuxer instanceof Demuxer)) {\n      this.demuxer = new Demuxer(observer2, config, typeSupported);\n      this.probe = Demuxer.probe;\n    }\n  }\n  needsProbing(discontinuity, trackSwitch) {\n    return !this.demuxer || !this.remuxer || discontinuity || trackSwitch;\n  }\n  getDecrypter() {\n    let decrypter = this.decrypter;\n    if (!decrypter) {\n      decrypter = this.decrypter = new Decrypter(this.config);\n    }\n    return decrypter;\n  }\n};\nfunction getEncryptionType(data, decryptData) {\n  let encryptionType = null;\n  if (data.byteLength > 0 && (decryptData == null ? void 0 : decryptData.key) != null && decryptData.iv !== null && decryptData.method != null) {\n    encryptionType = decryptData;\n  }\n  return encryptionType;\n}\nvar emptyResult = (chunkMeta) => ({\n  remuxResult: {},\n  chunkMeta\n});\nfunction isPromise(p3) {\n  return \"then\" in p3 && p3.then instanceof Function;\n}\nvar TransmuxConfig = class {\n  constructor(audioCodec, videoCodec, initSegmentData, duration, defaultInitPts) {\n    this.audioCodec = void 0;\n    this.videoCodec = void 0;\n    this.initSegmentData = void 0;\n    this.duration = void 0;\n    this.defaultInitPts = void 0;\n    this.audioCodec = audioCodec;\n    this.videoCodec = videoCodec;\n    this.initSegmentData = initSegmentData;\n    this.duration = duration;\n    this.defaultInitPts = defaultInitPts || null;\n  }\n};\nvar TransmuxState = class {\n  constructor(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange) {\n    this.discontinuity = void 0;\n    this.contiguous = void 0;\n    this.accurateTimeOffset = void 0;\n    this.trackSwitch = void 0;\n    this.timeOffset = void 0;\n    this.initSegmentChange = void 0;\n    this.discontinuity = discontinuity;\n    this.contiguous = contiguous;\n    this.accurateTimeOffset = accurateTimeOffset;\n    this.trackSwitch = trackSwitch;\n    this.timeOffset = timeOffset;\n    this.initSegmentChange = initSegmentChange;\n  }\n};\nvar eventemitter3 = { exports: {} };\n(function(module) {\n  var has = Object.prototype.hasOwnProperty, prefix = \"~\";\n  function Events2() {\n  }\n  if (Object.create) {\n    Events2.prototype = /* @__PURE__ */ Object.create(null);\n    if (!new Events2().__proto__) prefix = false;\n  }\n  function EE(fn, context, once) {\n    this.fn = fn;\n    this.context = context;\n    this.once = once || false;\n  }\n  function addListener(emitter, event, fn, context, once) {\n    if (typeof fn !== \"function\") {\n      throw new TypeError(\"The listener must be a function\");\n    }\n    var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;\n    if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n    else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n    else emitter._events[evt] = [emitter._events[evt], listener];\n    return emitter;\n  }\n  function clearEvent(emitter, evt) {\n    if (--emitter._eventsCount === 0) emitter._events = new Events2();\n    else delete emitter._events[evt];\n  }\n  function EventEmitter2() {\n    this._events = new Events2();\n    this._eventsCount = 0;\n  }\n  EventEmitter2.prototype.eventNames = function eventNames() {\n    var names = [], events, name;\n    if (this._eventsCount === 0) return names;\n    for (name in events = this._events) {\n      if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n    }\n    if (Object.getOwnPropertySymbols) {\n      return names.concat(Object.getOwnPropertySymbols(events));\n    }\n    return names;\n  };\n  EventEmitter2.prototype.listeners = function listeners(event) {\n    var evt = prefix ? prefix + event : event, handlers = this._events[evt];\n    if (!handlers) return [];\n    if (handlers.fn) return [handlers.fn];\n    for (var i2 = 0, l = handlers.length, ee6 = new Array(l); i2 < l; i2++) {\n      ee6[i2] = handlers[i2].fn;\n    }\n    return ee6;\n  };\n  EventEmitter2.prototype.listenerCount = function listenerCount(event) {\n    var evt = prefix ? prefix + event : event, listeners = this._events[evt];\n    if (!listeners) return 0;\n    if (listeners.fn) return 1;\n    return listeners.length;\n  };\n  EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n    var evt = prefix ? prefix + event : event;\n    if (!this._events[evt]) return false;\n    var listeners = this._events[evt], len = arguments.length, args, i2;\n    if (listeners.fn) {\n      if (listeners.once) this.removeListener(event, listeners.fn, void 0, true);\n      switch (len) {\n        case 1:\n          return listeners.fn.call(listeners.context), true;\n        case 2:\n          return listeners.fn.call(listeners.context, a1), true;\n        case 3:\n          return listeners.fn.call(listeners.context, a1, a2), true;\n        case 4:\n          return listeners.fn.call(listeners.context, a1, a2, a3), true;\n        case 5:\n          return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n        case 6:\n          return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n      }\n      for (i2 = 1, args = new Array(len - 1); i2 < len; i2++) {\n        args[i2 - 1] = arguments[i2];\n      }\n      listeners.fn.apply(listeners.context, args);\n    } else {\n      var length = listeners.length, j4;\n      for (i2 = 0; i2 < length; i2++) {\n        if (listeners[i2].once) this.removeListener(event, listeners[i2].fn, void 0, true);\n        switch (len) {\n          case 1:\n            listeners[i2].fn.call(listeners[i2].context);\n            break;\n          case 2:\n            listeners[i2].fn.call(listeners[i2].context, a1);\n            break;\n          case 3:\n            listeners[i2].fn.call(listeners[i2].context, a1, a2);\n            break;\n          case 4:\n            listeners[i2].fn.call(listeners[i2].context, a1, a2, a3);\n            break;\n          default:\n            if (!args) for (j4 = 1, args = new Array(len - 1); j4 < len; j4++) {\n              args[j4 - 1] = arguments[j4];\n            }\n            listeners[i2].fn.apply(listeners[i2].context, args);\n        }\n      }\n    }\n    return true;\n  };\n  EventEmitter2.prototype.on = function on(event, fn, context) {\n    return addListener(this, event, fn, context, false);\n  };\n  EventEmitter2.prototype.once = function once(event, fn, context) {\n    return addListener(this, event, fn, context, true);\n  };\n  EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {\n    var evt = prefix ? prefix + event : event;\n    if (!this._events[evt]) return this;\n    if (!fn) {\n      clearEvent(this, evt);\n      return this;\n    }\n    var listeners = this._events[evt];\n    if (listeners.fn) {\n      if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n        clearEvent(this, evt);\n      }\n    } else {\n      for (var i2 = 0, events = [], length = listeners.length; i2 < length; i2++) {\n        if (listeners[i2].fn !== fn || once && !listeners[i2].once || context && listeners[i2].context !== context) {\n          events.push(listeners[i2]);\n        }\n      }\n      if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n      else clearEvent(this, evt);\n    }\n    return this;\n  };\n  EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {\n    var evt;\n    if (event) {\n      evt = prefix ? prefix + event : event;\n      if (this._events[evt]) clearEvent(this, evt);\n    } else {\n      this._events = new Events2();\n      this._eventsCount = 0;\n    }\n    return this;\n  };\n  EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;\n  EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;\n  EventEmitter2.prefixed = prefix;\n  EventEmitter2.EventEmitter = EventEmitter2;\n  {\n    module.exports = EventEmitter2;\n  }\n})(eventemitter3);\nvar eventemitter3Exports = eventemitter3.exports;\nvar EventEmitter = /* @__PURE__ */ getDefaultExportFromCjs(eventemitter3Exports);\nvar TransmuxerInterface = class {\n  constructor(hls, id, onTransmuxComplete, onFlush) {\n    this.error = null;\n    this.hls = void 0;\n    this.id = void 0;\n    this.observer = void 0;\n    this.frag = null;\n    this.part = null;\n    this.useWorker = void 0;\n    this.workerContext = null;\n    this.onwmsg = void 0;\n    this.transmuxer = null;\n    this.onTransmuxComplete = void 0;\n    this.onFlush = void 0;\n    const config = hls.config;\n    this.hls = hls;\n    this.id = id;\n    this.useWorker = !!config.enableWorker;\n    this.onTransmuxComplete = onTransmuxComplete;\n    this.onFlush = onFlush;\n    const forwardMessage = (ev, data) => {\n      data = data || {};\n      data.frag = this.frag;\n      data.id = this.id;\n      if (ev === Events.ERROR) {\n        this.error = data.error;\n      }\n      this.hls.trigger(ev, data);\n    };\n    this.observer = new EventEmitter();\n    this.observer.on(Events.FRAG_DECRYPTED, forwardMessage);\n    this.observer.on(Events.ERROR, forwardMessage);\n    const MediaSource = getMediaSource(config.preferManagedMediaSource) || {\n      isTypeSupported: () => false\n    };\n    const m2tsTypeSupported = {\n      mpeg: MediaSource.isTypeSupported(\"audio/mpeg\"),\n      mp3: MediaSource.isTypeSupported('audio/mp4; codecs=\"mp3\"'),\n      ac3: MediaSource.isTypeSupported('audio/mp4; codecs=\"ac-3\"')\n    };\n    if (this.useWorker && typeof Worker !== \"undefined\") {\n      const canCreateWorker = config.workerPath || hasUMDWorker();\n      if (canCreateWorker) {\n        try {\n          if (config.workerPath) {\n            logger.log(`loading Web Worker ${config.workerPath} for \"${id}\"`);\n            this.workerContext = loadWorker(config.workerPath);\n          } else {\n            logger.log(`injecting Web Worker for \"${id}\"`);\n            this.workerContext = injectWorker();\n          }\n          this.onwmsg = (event) => this.onWorkerMessage(event);\n          const {\n            worker\n          } = this.workerContext;\n          worker.addEventListener(\"message\", this.onwmsg);\n          worker.onerror = (event) => {\n            const error = new Error(`${event.message}  (${event.filename}:${event.lineno})`);\n            config.enableWorker = false;\n            logger.warn(`Error in \"${id}\" Web Worker, fallback to inline`);\n            this.hls.trigger(Events.ERROR, {\n              type: ErrorTypes.OTHER_ERROR,\n              details: ErrorDetails.INTERNAL_EXCEPTION,\n              fatal: false,\n              event: \"demuxerWorker\",\n              error\n            });\n          };\n          worker.postMessage({\n            cmd: \"init\",\n            typeSupported: m2tsTypeSupported,\n            vendor: \"\",\n            id,\n            config: JSON.stringify(config)\n          });\n        } catch (err) {\n          logger.warn(`Error setting up \"${id}\" Web Worker, fallback to inline`, err);\n          this.resetWorker();\n          this.error = null;\n          this.transmuxer = new Transmuxer(this.observer, m2tsTypeSupported, config, \"\", id);\n        }\n        return;\n      }\n    }\n    this.transmuxer = new Transmuxer(this.observer, m2tsTypeSupported, config, \"\", id);\n  }\n  resetWorker() {\n    if (this.workerContext) {\n      const {\n        worker,\n        objectURL\n      } = this.workerContext;\n      if (objectURL) {\n        self.URL.revokeObjectURL(objectURL);\n      }\n      worker.removeEventListener(\"message\", this.onwmsg);\n      worker.onerror = null;\n      worker.terminate();\n      this.workerContext = null;\n    }\n  }\n  destroy() {\n    if (this.workerContext) {\n      this.resetWorker();\n      this.onwmsg = void 0;\n    } else {\n      const transmuxer = this.transmuxer;\n      if (transmuxer) {\n        transmuxer.destroy();\n        this.transmuxer = null;\n      }\n    }\n    const observer2 = this.observer;\n    if (observer2) {\n      observer2.removeAllListeners();\n    }\n    this.frag = null;\n    this.observer = null;\n    this.hls = null;\n  }\n  push(data, initSegmentData, audioCodec, videoCodec, frag, part, duration, accurateTimeOffset, chunkMeta, defaultInitPTS) {\n    var _frag$initSegment, _lastFrag$initSegment;\n    chunkMeta.transmuxing.start = self.performance.now();\n    const {\n      transmuxer\n    } = this;\n    const timeOffset = part ? part.start : frag.start;\n    const decryptdata = frag.decryptdata;\n    const lastFrag = this.frag;\n    const discontinuity = !(lastFrag && frag.cc === lastFrag.cc);\n    const trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level);\n    const snDiff = lastFrag ? chunkMeta.sn - lastFrag.sn : -1;\n    const partDiff = this.part ? chunkMeta.part - this.part.index : -1;\n    const progressive = snDiff === 0 && chunkMeta.id > 1 && chunkMeta.id === (lastFrag == null ? void 0 : lastFrag.stats.chunkCount);\n    const contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && (partDiff === 1 || progressive && partDiff <= 0));\n    const now2 = self.performance.now();\n    if (trackSwitch || snDiff || frag.stats.parsing.start === 0) {\n      frag.stats.parsing.start = now2;\n    }\n    if (part && (partDiff || !contiguous)) {\n      part.stats.parsing.start = now2;\n    }\n    const initSegmentChange = !(lastFrag && ((_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.url) === ((_lastFrag$initSegment = lastFrag.initSegment) == null ? void 0 : _lastFrag$initSegment.url));\n    const state = new TransmuxState(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange);\n    if (!contiguous || discontinuity || initSegmentChange) {\n      logger.log(`[transmuxer-interface, ${frag.type}]: Starting new transmux session for sn: ${chunkMeta.sn} p: ${chunkMeta.part} level: ${chunkMeta.level} id: ${chunkMeta.id}\n        discontinuity: ${discontinuity}\n        trackSwitch: ${trackSwitch}\n        contiguous: ${contiguous}\n        accurateTimeOffset: ${accurateTimeOffset}\n        timeOffset: ${timeOffset}\n        initSegmentChange: ${initSegmentChange}`);\n      const config = new TransmuxConfig(audioCodec, videoCodec, initSegmentData, duration, defaultInitPTS);\n      this.configureTransmuxer(config);\n    }\n    this.frag = frag;\n    this.part = part;\n    if (this.workerContext) {\n      this.workerContext.worker.postMessage({\n        cmd: \"demux\",\n        data,\n        decryptdata,\n        chunkMeta,\n        state\n      }, data instanceof ArrayBuffer ? [data] : []);\n    } else if (transmuxer) {\n      const transmuxResult = transmuxer.push(data, decryptdata, chunkMeta, state);\n      if (isPromise(transmuxResult)) {\n        transmuxer.async = true;\n        transmuxResult.then((data2) => {\n          this.handleTransmuxComplete(data2);\n        }).catch((error) => {\n          this.transmuxerError(error, chunkMeta, \"transmuxer-interface push error\");\n        });\n      } else {\n        transmuxer.async = false;\n        this.handleTransmuxComplete(transmuxResult);\n      }\n    }\n  }\n  flush(chunkMeta) {\n    chunkMeta.transmuxing.start = self.performance.now();\n    const {\n      transmuxer\n    } = this;\n    if (this.workerContext) {\n      this.workerContext.worker.postMessage({\n        cmd: \"flush\",\n        chunkMeta\n      });\n    } else if (transmuxer) {\n      let transmuxResult = transmuxer.flush(chunkMeta);\n      const asyncFlush = isPromise(transmuxResult);\n      if (asyncFlush || transmuxer.async) {\n        if (!isPromise(transmuxResult)) {\n          transmuxResult = Promise.resolve(transmuxResult);\n        }\n        transmuxResult.then((data) => {\n          this.handleFlushResult(data, chunkMeta);\n        }).catch((error) => {\n          this.transmuxerError(error, chunkMeta, \"transmuxer-interface flush error\");\n        });\n      } else {\n        this.handleFlushResult(transmuxResult, chunkMeta);\n      }\n    }\n  }\n  transmuxerError(error, chunkMeta, reason) {\n    if (!this.hls) {\n      return;\n    }\n    this.error = error;\n    this.hls.trigger(Events.ERROR, {\n      type: ErrorTypes.MEDIA_ERROR,\n      details: ErrorDetails.FRAG_PARSING_ERROR,\n      chunkMeta,\n      frag: this.frag || void 0,\n      fatal: false,\n      error,\n      err: error,\n      reason\n    });\n  }\n  handleFlushResult(results, chunkMeta) {\n    results.forEach((result) => {\n      this.handleTransmuxComplete(result);\n    });\n    this.onFlush(chunkMeta);\n  }\n  onWorkerMessage(event) {\n    const data = event.data;\n    if (!(data != null && data.event)) {\n      logger.warn(`worker message received with no ${data ? \"event name\" : \"data\"}`);\n      return;\n    }\n    const hls = this.hls;\n    if (!this.hls) {\n      return;\n    }\n    switch (data.event) {\n      case \"init\": {\n        var _this$workerContext;\n        const objectURL = (_this$workerContext = this.workerContext) == null ? void 0 : _this$workerContext.objectURL;\n        if (objectURL) {\n          self.URL.revokeObjectURL(objectURL);\n        }\n        break;\n      }\n      case \"transmuxComplete\": {\n        this.handleTransmuxComplete(data.data);\n        break;\n      }\n      case \"flush\": {\n        this.onFlush(data.data);\n        break;\n      }\n      // pass logs from the worker thread to the main logger\n      case \"workerLog\":\n        if (logger[data.data.logType]) {\n          logger[data.data.logType](data.data.message);\n        }\n        break;\n      default: {\n        data.data = data.data || {};\n        data.data.frag = this.frag;\n        data.data.id = this.id;\n        hls.trigger(data.event, data.data);\n        break;\n      }\n    }\n  }\n  configureTransmuxer(config) {\n    const {\n      transmuxer\n    } = this;\n    if (this.workerContext) {\n      this.workerContext.worker.postMessage({\n        cmd: \"configure\",\n        config\n      });\n    } else if (transmuxer) {\n      transmuxer.configure(config);\n    }\n  }\n  handleTransmuxComplete(result) {\n    result.chunkMeta.transmuxing.end = self.performance.now();\n    this.onTransmuxComplete(result);\n  }\n};\nvar TICK_INTERVAL$2 = 100;\nvar AudioStreamController = class extends BaseStreamController {\n  constructor(hls, fragmentTracker, keyLoader) {\n    super(hls, fragmentTracker, keyLoader, \"[audio-stream-controller]\", PlaylistLevelType.AUDIO);\n    this.videoBuffer = null;\n    this.videoTrackCC = -1;\n    this.waitingVideoCC = -1;\n    this.bufferedTrack = null;\n    this.switchingTrack = null;\n    this.trackId = -1;\n    this.waitingData = null;\n    this.mainDetails = null;\n    this.flushing = false;\n    this.bufferFlushed = false;\n    this.cachedTrackLoadedData = null;\n    this._registerListeners();\n  }\n  onHandlerDestroying() {\n    this._unregisterListeners();\n    super.onHandlerDestroying();\n    this.mainDetails = null;\n    this.bufferedTrack = null;\n    this.switchingTrack = null;\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n    hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n    hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  // INIT_PTS_FOUND is triggered when the video track parsed in the stream-controller has a new PTS value\n  onInitPtsFound(event, {\n    frag,\n    id,\n    initPTS,\n    timescale\n  }) {\n    if (id === \"main\") {\n      const cc = frag.cc;\n      this.initPTS[frag.cc] = {\n        baseTime: initPTS,\n        timescale\n      };\n      this.log(`InitPTS for cc: ${cc} found from main: ${initPTS}`);\n      this.videoTrackCC = cc;\n      if (this.state === State.WAITING_INIT_PTS) {\n        this.tick();\n      }\n    }\n  }\n  startLoad(startPosition) {\n    if (!this.levels) {\n      this.startPosition = startPosition;\n      this.state = State.STOPPED;\n      return;\n    }\n    const lastCurrentTime = this.lastCurrentTime;\n    this.stopLoad();\n    this.setInterval(TICK_INTERVAL$2);\n    if (lastCurrentTime > 0 && startPosition === -1) {\n      this.log(`Override startPosition with lastCurrentTime @${lastCurrentTime.toFixed(3)}`);\n      startPosition = lastCurrentTime;\n      this.state = State.IDLE;\n    } else {\n      this.loadedmetadata = false;\n      this.state = State.WAITING_TRACK;\n    }\n    this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n    this.tick();\n  }\n  doTick() {\n    switch (this.state) {\n      case State.IDLE:\n        this.doTickIdle();\n        break;\n      case State.WAITING_TRACK: {\n        var _levels$trackId;\n        const {\n          levels,\n          trackId\n        } = this;\n        const details = levels == null ? void 0 : (_levels$trackId = levels[trackId]) == null ? void 0 : _levels$trackId.details;\n        if (details) {\n          if (this.waitForCdnTuneIn(details)) {\n            break;\n          }\n          this.state = State.WAITING_INIT_PTS;\n        }\n        break;\n      }\n      case State.FRAG_LOADING_WAITING_RETRY: {\n        var _this$media;\n        const now2 = performance.now();\n        const retryDate = this.retryDate;\n        if (!retryDate || now2 >= retryDate || (_this$media = this.media) != null && _this$media.seeking) {\n          const {\n            levels,\n            trackId\n          } = this;\n          this.log(\"RetryDate reached, switch back to IDLE state\");\n          this.resetStartWhenNotLoaded((levels == null ? void 0 : levels[trackId]) || null);\n          this.state = State.IDLE;\n        }\n        break;\n      }\n      case State.WAITING_INIT_PTS: {\n        const waitingData = this.waitingData;\n        if (waitingData) {\n          const {\n            frag,\n            part,\n            cache,\n            complete\n          } = waitingData;\n          if (this.initPTS[frag.cc] !== void 0) {\n            this.waitingData = null;\n            this.waitingVideoCC = -1;\n            this.state = State.FRAG_LOADING;\n            const payload = cache.flush();\n            const data = {\n              frag,\n              part,\n              payload,\n              networkDetails: null\n            };\n            this._handleFragmentLoadProgress(data);\n            if (complete) {\n              super._handleFragmentLoadComplete(data);\n            }\n          } else if (this.videoTrackCC !== this.waitingVideoCC) {\n            this.log(`Waiting fragment cc (${frag.cc}) cancelled because video is at cc ${this.videoTrackCC}`);\n            this.clearWaitingFragment();\n          } else {\n            const pos = this.getLoadPosition();\n            const bufferInfo = BufferHelper.bufferInfo(this.mediaBuffer, pos, this.config.maxBufferHole);\n            const waitingFragmentAtPosition = fragmentWithinToleranceTest(bufferInfo.end, this.config.maxFragLookUpTolerance, frag);\n            if (waitingFragmentAtPosition < 0) {\n              this.log(`Waiting fragment cc (${frag.cc}) @ ${frag.start} cancelled because another fragment at ${bufferInfo.end} is needed`);\n              this.clearWaitingFragment();\n            }\n          }\n        } else {\n          this.state = State.IDLE;\n        }\n      }\n    }\n    this.onTickEnd();\n  }\n  clearWaitingFragment() {\n    const waitingData = this.waitingData;\n    if (waitingData) {\n      this.fragmentTracker.removeFragment(waitingData.frag);\n      this.waitingData = null;\n      this.waitingVideoCC = -1;\n      this.state = State.IDLE;\n    }\n  }\n  resetLoadingState() {\n    this.clearWaitingFragment();\n    super.resetLoadingState();\n  }\n  onTickEnd() {\n    const {\n      media\n    } = this;\n    if (!(media != null && media.readyState)) {\n      return;\n    }\n    this.lastCurrentTime = media.currentTime;\n  }\n  doTickIdle() {\n    const {\n      hls,\n      levels,\n      media,\n      trackId\n    } = this;\n    const config = hls.config;\n    if (!this.buffering || !media && (this.startFragRequested || !config.startFragPrefetch) || !(levels != null && levels[trackId])) {\n      return;\n    }\n    const levelInfo = levels[trackId];\n    const trackDetails = levelInfo.details;\n    if (!trackDetails || trackDetails.live && this.levelLastLoaded !== levelInfo || this.waitForCdnTuneIn(trackDetails)) {\n      this.state = State.WAITING_TRACK;\n      return;\n    }\n    const bufferable = this.mediaBuffer ? this.mediaBuffer : this.media;\n    if (this.bufferFlushed && bufferable) {\n      this.bufferFlushed = false;\n      this.afterBufferFlushed(bufferable, ElementaryStreamTypes.AUDIO, PlaylistLevelType.AUDIO);\n    }\n    const bufferInfo = this.getFwdBufferInfo(bufferable, PlaylistLevelType.AUDIO);\n    if (bufferInfo === null) {\n      return;\n    }\n    if (!this.switchingTrack && this._streamEnded(bufferInfo, trackDetails)) {\n      hls.trigger(Events.BUFFER_EOS, {\n        type: \"audio\"\n      });\n      this.state = State.ENDED;\n      return;\n    }\n    const mainBufferInfo = this.getFwdBufferInfo(this.videoBuffer ? this.videoBuffer : this.media, PlaylistLevelType.MAIN);\n    const bufferLen = bufferInfo.len;\n    const maxBufLen = this.getMaxBufferLength(mainBufferInfo == null ? void 0 : mainBufferInfo.len);\n    const fragments = trackDetails.fragments;\n    const start = fragments[0].start;\n    const loadPosition = this.getLoadPosition();\n    const targetBufferTime = this.flushing ? loadPosition : bufferInfo.end;\n    if (this.switchingTrack && media) {\n      const pos = loadPosition;\n      if (trackDetails.PTSKnown && pos < start) {\n        if (bufferInfo.end > start || bufferInfo.nextStart) {\n          this.log(\"Alt audio track ahead of main track, seek to start of alt audio track\");\n          media.currentTime = start + 0.05;\n        }\n      }\n    }\n    if (bufferLen >= maxBufLen && !this.switchingTrack && targetBufferTime < fragments[fragments.length - 1].start) {\n      return;\n    }\n    let frag = this.getNextFragment(targetBufferTime, trackDetails);\n    let atGap = false;\n    if (frag && this.isLoopLoading(frag, targetBufferTime)) {\n      atGap = !!frag.gap;\n      frag = this.getNextFragmentLoopLoading(frag, trackDetails, bufferInfo, PlaylistLevelType.MAIN, maxBufLen);\n    }\n    if (!frag) {\n      this.bufferFlushed = true;\n      return;\n    }\n    const atBufferSyncLimit = mainBufferInfo && frag.start > mainBufferInfo.end + trackDetails.targetduration;\n    if (atBufferSyncLimit || // Or wait for main buffer after buffing some audio\n    !(mainBufferInfo != null && mainBufferInfo.len) && bufferInfo.len) {\n      const mainFrag = this.getAppendedFrag(frag.start, PlaylistLevelType.MAIN);\n      if (mainFrag === null) {\n        return;\n      }\n      atGap || (atGap = !!mainFrag.gap || !!atBufferSyncLimit && mainBufferInfo.len === 0);\n      if (atBufferSyncLimit && !atGap || atGap && bufferInfo.nextStart && bufferInfo.nextStart < mainFrag.end) {\n        return;\n      }\n    }\n    this.loadFragment(frag, levelInfo, targetBufferTime);\n  }\n  getMaxBufferLength(mainBufferLength) {\n    const maxConfigBuffer = super.getMaxBufferLength();\n    if (!mainBufferLength) {\n      return maxConfigBuffer;\n    }\n    return Math.min(Math.max(maxConfigBuffer, mainBufferLength), this.config.maxMaxBufferLength);\n  }\n  onMediaDetaching() {\n    this.videoBuffer = null;\n    this.bufferFlushed = this.flushing = false;\n    super.onMediaDetaching();\n  }\n  onAudioTracksUpdated(event, {\n    audioTracks\n  }) {\n    this.resetTransmuxer();\n    this.levels = audioTracks.map((mediaPlaylist) => new Level(mediaPlaylist));\n  }\n  onAudioTrackSwitching(event, data) {\n    const altAudio = !!data.url;\n    this.trackId = data.id;\n    const {\n      fragCurrent\n    } = this;\n    if (fragCurrent) {\n      fragCurrent.abortRequests();\n      this.removeUnbufferedFrags(fragCurrent.start);\n    }\n    this.resetLoadingState();\n    if (!altAudio) {\n      this.resetTransmuxer();\n    } else {\n      this.setInterval(TICK_INTERVAL$2);\n    }\n    if (altAudio) {\n      this.switchingTrack = data;\n      this.state = State.IDLE;\n      this.flushAudioIfNeeded(data);\n    } else {\n      this.switchingTrack = null;\n      this.bufferedTrack = data;\n      this.state = State.STOPPED;\n    }\n    this.tick();\n  }\n  onManifestLoading() {\n    this.fragmentTracker.removeAllFragments();\n    this.startPosition = this.lastCurrentTime = 0;\n    this.bufferFlushed = this.flushing = false;\n    this.levels = this.mainDetails = this.waitingData = this.bufferedTrack = this.cachedTrackLoadedData = this.switchingTrack = null;\n    this.startFragRequested = false;\n    this.trackId = this.videoTrackCC = this.waitingVideoCC = -1;\n  }\n  onLevelLoaded(event, data) {\n    this.mainDetails = data.details;\n    if (this.cachedTrackLoadedData !== null) {\n      this.hls.trigger(Events.AUDIO_TRACK_LOADED, this.cachedTrackLoadedData);\n      this.cachedTrackLoadedData = null;\n    }\n  }\n  onAudioTrackLoaded(event, data) {\n    var _track$details;\n    if (this.mainDetails == null) {\n      this.cachedTrackLoadedData = data;\n      return;\n    }\n    const {\n      levels\n    } = this;\n    const {\n      details: newDetails,\n      id: trackId\n    } = data;\n    if (!levels) {\n      this.warn(`Audio tracks were reset while loading level ${trackId}`);\n      return;\n    }\n    this.log(`Audio track ${trackId} loaded [${newDetails.startSN},${newDetails.endSN}]${newDetails.lastPartSn ? `[part-${newDetails.lastPartSn}-${newDetails.lastPartIndex}]` : \"\"},duration:${newDetails.totalduration}`);\n    const track = levels[trackId];\n    let sliding = 0;\n    if (newDetails.live || (_track$details = track.details) != null && _track$details.live) {\n      this.checkLiveUpdate(newDetails);\n      const mainDetails = this.mainDetails;\n      if (newDetails.deltaUpdateFailed || !mainDetails) {\n        return;\n      }\n      if (!track.details && newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n        alignMediaPlaylistByPDT(newDetails, mainDetails);\n        sliding = newDetails.fragments[0].start;\n      } else {\n        var _this$levelLastLoaded;\n        sliding = this.alignPlaylists(newDetails, track.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n      }\n    }\n    track.details = newDetails;\n    this.levelLastLoaded = track;\n    if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n      this.setStartPosition(this.mainDetails || newDetails, sliding);\n    }\n    if (this.state === State.WAITING_TRACK && !this.waitForCdnTuneIn(newDetails)) {\n      this.state = State.IDLE;\n    }\n    this.tick();\n  }\n  _handleFragmentLoadProgress(data) {\n    var _frag$initSegment;\n    const {\n      frag,\n      part,\n      payload\n    } = data;\n    const {\n      config,\n      trackId,\n      levels\n    } = this;\n    if (!levels) {\n      this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${frag.sn} of level ${frag.level} will not be buffered`);\n      return;\n    }\n    const track = levels[trackId];\n    if (!track) {\n      this.warn(\"Audio track is undefined on fragment load progress\");\n      return;\n    }\n    const details = track.details;\n    if (!details) {\n      this.warn(\"Audio track details undefined on fragment load progress\");\n      this.removeUnbufferedFrags(frag.start);\n      return;\n    }\n    const audioCodec = config.defaultAudioCodec || track.audioCodec || \"mp4a.40.2\";\n    let transmuxer = this.transmuxer;\n    if (!transmuxer) {\n      transmuxer = this.transmuxer = new TransmuxerInterface(this.hls, PlaylistLevelType.AUDIO, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n    }\n    const initPTS = this.initPTS[frag.cc];\n    const initSegmentData = (_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.data;\n    if (initPTS !== void 0) {\n      const accurateTimeOffset = false;\n      const partIndex = part ? part.index : -1;\n      const partial = partIndex !== -1;\n      const chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n      transmuxer.push(payload, initSegmentData, audioCodec, \"\", frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n    } else {\n      this.log(`Unknown video PTS for cc ${frag.cc}, waiting for video PTS before demuxing audio frag ${frag.sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`);\n      const {\n        cache\n      } = this.waitingData = this.waitingData || {\n        frag,\n        part,\n        cache: new ChunkCache(),\n        complete: false\n      };\n      cache.push(new Uint8Array(payload));\n      this.waitingVideoCC = this.videoTrackCC;\n      this.state = State.WAITING_INIT_PTS;\n    }\n  }\n  _handleFragmentLoadComplete(fragLoadedData) {\n    if (this.waitingData) {\n      this.waitingData.complete = true;\n      return;\n    }\n    super._handleFragmentLoadComplete(fragLoadedData);\n  }\n  onBufferReset() {\n    this.mediaBuffer = this.videoBuffer = null;\n    this.loadedmetadata = false;\n  }\n  onBufferCreated(event, data) {\n    const audioTrack = data.tracks.audio;\n    if (audioTrack) {\n      this.mediaBuffer = audioTrack.buffer || null;\n    }\n    if (data.tracks.video) {\n      this.videoBuffer = data.tracks.video.buffer || null;\n    }\n  }\n  onFragBuffered(event, data) {\n    const {\n      frag,\n      part\n    } = data;\n    if (frag.type !== PlaylistLevelType.AUDIO) {\n      if (!this.loadedmetadata && frag.type === PlaylistLevelType.MAIN) {\n        const bufferable = this.videoBuffer || this.media;\n        if (bufferable) {\n          const bufferedTimeRanges = BufferHelper.getBuffered(bufferable);\n          if (bufferedTimeRanges.length) {\n            this.loadedmetadata = true;\n          }\n        }\n      }\n      return;\n    }\n    if (this.fragContextChanged(frag)) {\n      this.warn(`Fragment ${frag.sn}${part ? \" p: \" + part.index : \"\"} of level ${frag.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack ? this.switchingTrack.name : \"false\"}`);\n      return;\n    }\n    if (frag.sn !== \"initSegment\") {\n      this.fragPrevious = frag;\n      const track = this.switchingTrack;\n      if (track) {\n        this.bufferedTrack = track;\n        this.switchingTrack = null;\n        this.hls.trigger(Events.AUDIO_TRACK_SWITCHED, _objectSpread2({}, track));\n      }\n    }\n    this.fragBufferedComplete(frag, part);\n  }\n  onError(event, data) {\n    var _data$context;\n    if (data.fatal) {\n      this.state = State.ERROR;\n      return;\n    }\n    switch (data.details) {\n      case ErrorDetails.FRAG_GAP:\n      case ErrorDetails.FRAG_PARSING_ERROR:\n      case ErrorDetails.FRAG_DECRYPT_ERROR:\n      case ErrorDetails.FRAG_LOAD_ERROR:\n      case ErrorDetails.FRAG_LOAD_TIMEOUT:\n      case ErrorDetails.KEY_LOAD_ERROR:\n      case ErrorDetails.KEY_LOAD_TIMEOUT:\n        this.onFragmentOrKeyLoadError(PlaylistLevelType.AUDIO, data);\n        break;\n      case ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n      case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n      case ErrorDetails.LEVEL_PARSING_ERROR:\n        if (!data.levelRetry && this.state === State.WAITING_TRACK && ((_data$context = data.context) == null ? void 0 : _data$context.type) === PlaylistContextType.AUDIO_TRACK) {\n          this.state = State.IDLE;\n        }\n        break;\n      case ErrorDetails.BUFFER_APPEND_ERROR:\n      case ErrorDetails.BUFFER_FULL_ERROR:\n        if (!data.parent || data.parent !== \"audio\") {\n          return;\n        }\n        if (data.details === ErrorDetails.BUFFER_APPEND_ERROR) {\n          this.resetLoadingState();\n          return;\n        }\n        if (this.reduceLengthAndFlushBuffer(data)) {\n          this.bufferedTrack = null;\n          super.flushMainBuffer(0, Number.POSITIVE_INFINITY, \"audio\");\n        }\n        break;\n      case ErrorDetails.INTERNAL_EXCEPTION:\n        this.recoverWorkerError(data);\n        break;\n    }\n  }\n  onBufferFlushing(event, {\n    type\n  }) {\n    if (type !== ElementaryStreamTypes.VIDEO) {\n      this.flushing = true;\n    }\n  }\n  onBufferFlushed(event, {\n    type\n  }) {\n    if (type !== ElementaryStreamTypes.VIDEO) {\n      this.flushing = false;\n      this.bufferFlushed = true;\n      if (this.state === State.ENDED) {\n        this.state = State.IDLE;\n      }\n      const mediaBuffer = this.mediaBuffer || this.media;\n      if (mediaBuffer) {\n        this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.AUDIO);\n        this.tick();\n      }\n    }\n  }\n  _handleTransmuxComplete(transmuxResult) {\n    var _id3$samples;\n    const id = \"audio\";\n    const {\n      hls\n    } = this;\n    const {\n      remuxResult,\n      chunkMeta\n    } = transmuxResult;\n    const context = this.getCurrentContext(chunkMeta);\n    if (!context) {\n      this.resetWhenMissingContext(chunkMeta);\n      return;\n    }\n    const {\n      frag,\n      part,\n      level\n    } = context;\n    const {\n      details\n    } = level;\n    const {\n      audio,\n      text,\n      id3,\n      initSegment\n    } = remuxResult;\n    if (this.fragContextChanged(frag) || !details) {\n      this.fragmentTracker.removeFragment(frag);\n      return;\n    }\n    this.state = State.PARSING;\n    if (this.switchingTrack && audio) {\n      this.completeAudioSwitch(this.switchingTrack);\n    }\n    if (initSegment != null && initSegment.tracks) {\n      const mapFragment = frag.initSegment || frag;\n      this._bufferInitSegment(level, initSegment.tracks, mapFragment, chunkMeta);\n      hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, {\n        frag: mapFragment,\n        id,\n        tracks: initSegment.tracks\n      });\n    }\n    if (audio) {\n      const {\n        startPTS,\n        endPTS,\n        startDTS,\n        endDTS\n      } = audio;\n      if (part) {\n        part.elementaryStreams[ElementaryStreamTypes.AUDIO] = {\n          startPTS,\n          endPTS,\n          startDTS,\n          endDTS\n        };\n      }\n      frag.setElementaryStreamInfo(ElementaryStreamTypes.AUDIO, startPTS, endPTS, startDTS, endDTS);\n      this.bufferFragmentData(audio, frag, part, chunkMeta);\n    }\n    if (id3 != null && (_id3$samples = id3.samples) != null && _id3$samples.length) {\n      const emittedID3 = _extends({\n        id,\n        frag,\n        details\n      }, id3);\n      hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3);\n    }\n    if (text) {\n      const emittedText = _extends({\n        id,\n        frag,\n        details\n      }, text);\n      hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText);\n    }\n  }\n  _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {\n    if (this.state !== State.PARSING) {\n      return;\n    }\n    if (tracks.video) {\n      delete tracks.video;\n    }\n    const track = tracks.audio;\n    if (!track) {\n      return;\n    }\n    track.id = \"audio\";\n    const variantAudioCodecs = currentLevel.audioCodec;\n    this.log(`Init audio buffer, container:${track.container}, codecs[level/parsed]=[${variantAudioCodecs}/${track.codec}]`);\n    if (variantAudioCodecs && variantAudioCodecs.split(\",\").length === 1) {\n      track.levelCodec = variantAudioCodecs;\n    }\n    this.hls.trigger(Events.BUFFER_CODECS, tracks);\n    const initSegment = track.initSegment;\n    if (initSegment != null && initSegment.byteLength) {\n      const segment = {\n        type: \"audio\",\n        frag,\n        part: null,\n        chunkMeta,\n        parent: frag.type,\n        data: initSegment\n      };\n      this.hls.trigger(Events.BUFFER_APPENDING, segment);\n    }\n    this.tickImmediate();\n  }\n  loadFragment(frag, track, targetBufferTime) {\n    const fragState = this.fragmentTracker.getState(frag);\n    this.fragCurrent = frag;\n    if (this.switchingTrack || fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) {\n      var _track$details2;\n      if (frag.sn === \"initSegment\") {\n        this._loadInitSegment(frag, track);\n      } else if ((_track$details2 = track.details) != null && _track$details2.live && !this.initPTS[frag.cc]) {\n        this.log(`Waiting for video PTS in continuity counter ${frag.cc} of live stream before loading audio fragment ${frag.sn} of level ${this.trackId}`);\n        this.state = State.WAITING_INIT_PTS;\n        const mainDetails = this.mainDetails;\n        if (mainDetails && mainDetails.fragments[0].start !== track.details.fragments[0].start) {\n          alignMediaPlaylistByPDT(track.details, mainDetails);\n        }\n      } else {\n        this.startFragRequested = true;\n        super.loadFragment(frag, track, targetBufferTime);\n      }\n    } else {\n      this.clearTrackerIfNeeded(frag);\n    }\n  }\n  flushAudioIfNeeded(switchingTrack) {\n    if (this.media && this.bufferedTrack) {\n      const {\n        name,\n        lang,\n        assocLang,\n        characteristics,\n        audioCodec,\n        channels\n      } = this.bufferedTrack;\n      if (!matchesOption({\n        name,\n        lang,\n        assocLang,\n        characteristics,\n        audioCodec,\n        channels\n      }, switchingTrack, audioMatchPredicate)) {\n        this.log(\"Switching audio track : flushing all audio\");\n        super.flushMainBuffer(0, Number.POSITIVE_INFINITY, \"audio\");\n        this.bufferedTrack = null;\n      }\n    }\n  }\n  completeAudioSwitch(switchingTrack) {\n    const {\n      hls\n    } = this;\n    this.flushAudioIfNeeded(switchingTrack);\n    this.bufferedTrack = switchingTrack;\n    this.switchingTrack = null;\n    hls.trigger(Events.AUDIO_TRACK_SWITCHED, _objectSpread2({}, switchingTrack));\n  }\n};\nfunction subtitleOptionsIdentical(trackList1, trackList2) {\n  if (trackList1.length !== trackList2.length) {\n    return false;\n  }\n  for (let i2 = 0; i2 < trackList1.length; i2++) {\n    if (!mediaAttributesIdentical(trackList1[i2].attrs, trackList2[i2].attrs)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction mediaAttributesIdentical(attrs1, attrs2, customAttributes) {\n  const stableRenditionId = attrs1[\"STABLE-RENDITION-ID\"];\n  if (stableRenditionId && !customAttributes) {\n    return stableRenditionId === attrs2[\"STABLE-RENDITION-ID\"];\n  }\n  return !(customAttributes || [\"LANGUAGE\", \"NAME\", \"CHARACTERISTICS\", \"AUTOSELECT\", \"DEFAULT\", \"FORCED\", \"ASSOC-LANGUAGE\"]).some((subtitleAttribute) => attrs1[subtitleAttribute] !== attrs2[subtitleAttribute]);\n}\nfunction subtitleTrackMatchesTextTrack(subtitleTrack, textTrack) {\n  return textTrack.label.toLowerCase() === subtitleTrack.name.toLowerCase() && (!textTrack.language || textTrack.language.toLowerCase() === (subtitleTrack.lang || \"\").toLowerCase());\n}\nvar AudioTrackController = class extends BasePlaylistController {\n  constructor(hls) {\n    super(hls, \"[audio-track-controller]\");\n    this.tracks = [];\n    this.groupIds = null;\n    this.tracksInGroup = [];\n    this.trackId = -1;\n    this.currentTrack = null;\n    this.selectDefaultTrack = true;\n    this.registerListeners();\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n  unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.tracks.length = 0;\n    this.tracksInGroup.length = 0;\n    this.currentTrack = null;\n    super.destroy();\n  }\n  onManifestLoading() {\n    this.tracks = [];\n    this.tracksInGroup = [];\n    this.groupIds = null;\n    this.currentTrack = null;\n    this.trackId = -1;\n    this.selectDefaultTrack = true;\n  }\n  onManifestParsed(event, data) {\n    this.tracks = data.audioTracks || [];\n  }\n  onAudioTrackLoaded(event, data) {\n    const {\n      id,\n      groupId,\n      details\n    } = data;\n    const trackInActiveGroup = this.tracksInGroup[id];\n    if (!trackInActiveGroup || trackInActiveGroup.groupId !== groupId) {\n      this.warn(`Audio track with id:${id} and group:${groupId} not found in active group ${trackInActiveGroup == null ? void 0 : trackInActiveGroup.groupId}`);\n      return;\n    }\n    const curDetails = trackInActiveGroup.details;\n    trackInActiveGroup.details = data.details;\n    this.log(`Audio track ${id} \"${trackInActiveGroup.name}\" lang:${trackInActiveGroup.lang} group:${groupId} loaded [${details.startSN}-${details.endSN}]`);\n    if (id === this.trackId) {\n      this.playlistLoaded(id, data, curDetails);\n    }\n  }\n  onLevelLoading(event, data) {\n    this.switchLevel(data.level);\n  }\n  onLevelSwitching(event, data) {\n    this.switchLevel(data.level);\n  }\n  switchLevel(levelIndex) {\n    const levelInfo = this.hls.levels[levelIndex];\n    if (!levelInfo) {\n      return;\n    }\n    const audioGroups = levelInfo.audioGroups || null;\n    const currentGroups = this.groupIds;\n    let currentTrack = this.currentTrack;\n    if (!audioGroups || (currentGroups == null ? void 0 : currentGroups.length) !== (audioGroups == null ? void 0 : audioGroups.length) || audioGroups != null && audioGroups.some((groupId) => (currentGroups == null ? void 0 : currentGroups.indexOf(groupId)) === -1)) {\n      this.groupIds = audioGroups;\n      this.trackId = -1;\n      this.currentTrack = null;\n      const audioTracks = this.tracks.filter((track) => !audioGroups || audioGroups.indexOf(track.groupId) !== -1);\n      if (audioTracks.length) {\n        if (this.selectDefaultTrack && !audioTracks.some((track) => track.default)) {\n          this.selectDefaultTrack = false;\n        }\n        audioTracks.forEach((track, i2) => {\n          track.id = i2;\n        });\n      } else if (!currentTrack && !this.tracksInGroup.length) {\n        return;\n      }\n      this.tracksInGroup = audioTracks;\n      const audioPreference = this.hls.config.audioPreference;\n      if (!currentTrack && audioPreference) {\n        const groupIndex = findMatchingOption(audioPreference, audioTracks, audioMatchPredicate);\n        if (groupIndex > -1) {\n          currentTrack = audioTracks[groupIndex];\n        } else {\n          const allIndex = findMatchingOption(audioPreference, this.tracks);\n          currentTrack = this.tracks[allIndex];\n        }\n      }\n      let trackId = this.findTrackId(currentTrack);\n      if (trackId === -1 && currentTrack) {\n        trackId = this.findTrackId(null);\n      }\n      const audioTracksUpdated = {\n        audioTracks\n      };\n      this.log(`Updating audio tracks, ${audioTracks.length} track(s) found in group(s): ${audioGroups == null ? void 0 : audioGroups.join(\",\")}`);\n      this.hls.trigger(Events.AUDIO_TRACKS_UPDATED, audioTracksUpdated);\n      const selectedTrackId = this.trackId;\n      if (trackId !== -1 && selectedTrackId === -1) {\n        this.setAudioTrack(trackId);\n      } else if (audioTracks.length && selectedTrackId === -1) {\n        var _this$groupIds;\n        const error = new Error(`No audio track selected for current audio group-ID(s): ${(_this$groupIds = this.groupIds) == null ? void 0 : _this$groupIds.join(\",\")} track count: ${audioTracks.length}`);\n        this.warn(error.message);\n        this.hls.trigger(Events.ERROR, {\n          type: ErrorTypes.MEDIA_ERROR,\n          details: ErrorDetails.AUDIO_TRACK_LOAD_ERROR,\n          fatal: true,\n          error\n        });\n      }\n    } else if (this.shouldReloadPlaylist(currentTrack)) {\n      this.setAudioTrack(this.trackId);\n    }\n  }\n  onError(event, data) {\n    if (data.fatal || !data.context) {\n      return;\n    }\n    if (data.context.type === PlaylistContextType.AUDIO_TRACK && data.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(data.context.groupId) !== -1)) {\n      this.requestScheduled = -1;\n      this.checkRetry(data);\n    }\n  }\n  get allAudioTracks() {\n    return this.tracks;\n  }\n  get audioTracks() {\n    return this.tracksInGroup;\n  }\n  get audioTrack() {\n    return this.trackId;\n  }\n  set audioTrack(newId) {\n    this.selectDefaultTrack = false;\n    this.setAudioTrack(newId);\n  }\n  setAudioOption(audioOption) {\n    const hls = this.hls;\n    hls.config.audioPreference = audioOption;\n    if (audioOption) {\n      const allAudioTracks = this.allAudioTracks;\n      this.selectDefaultTrack = false;\n      if (allAudioTracks.length) {\n        const currentTrack = this.currentTrack;\n        if (currentTrack && matchesOption(audioOption, currentTrack, audioMatchPredicate)) {\n          return currentTrack;\n        }\n        const groupIndex = findMatchingOption(audioOption, this.tracksInGroup, audioMatchPredicate);\n        if (groupIndex > -1) {\n          const track = this.tracksInGroup[groupIndex];\n          this.setAudioTrack(groupIndex);\n          return track;\n        } else if (currentTrack) {\n          let searchIndex = hls.loadLevel;\n          if (searchIndex === -1) {\n            searchIndex = hls.firstAutoLevel;\n          }\n          const switchIndex = findClosestLevelWithAudioGroup(audioOption, hls.levels, allAudioTracks, searchIndex, audioMatchPredicate);\n          if (switchIndex === -1) {\n            return null;\n          }\n          hls.nextLoadLevel = switchIndex;\n        }\n        if (audioOption.channels || audioOption.audioCodec) {\n          const withoutCodecAndChannelsMatch = findMatchingOption(audioOption, allAudioTracks);\n          if (withoutCodecAndChannelsMatch > -1) {\n            return allAudioTracks[withoutCodecAndChannelsMatch];\n          }\n        }\n      }\n    }\n    return null;\n  }\n  setAudioTrack(newId) {\n    const tracks = this.tracksInGroup;\n    if (newId < 0 || newId >= tracks.length) {\n      this.warn(`Invalid audio track id: ${newId}`);\n      return;\n    }\n    this.clearTimer();\n    this.selectDefaultTrack = false;\n    const lastTrack = this.currentTrack;\n    const track = tracks[newId];\n    const trackLoaded = track.details && !track.details.live;\n    if (newId === this.trackId && track === lastTrack && trackLoaded) {\n      return;\n    }\n    this.log(`Switching to audio-track ${newId} \"${track.name}\" lang:${track.lang} group:${track.groupId} channels:${track.channels}`);\n    this.trackId = newId;\n    this.currentTrack = track;\n    this.hls.trigger(Events.AUDIO_TRACK_SWITCHING, _objectSpread2({}, track));\n    if (trackLoaded) {\n      return;\n    }\n    const hlsUrlParameters = this.switchParams(track.url, lastTrack == null ? void 0 : lastTrack.details, track.details);\n    this.loadPlaylist(hlsUrlParameters);\n  }\n  findTrackId(currentTrack) {\n    const audioTracks = this.tracksInGroup;\n    for (let i2 = 0; i2 < audioTracks.length; i2++) {\n      const track = audioTracks[i2];\n      if (this.selectDefaultTrack && !track.default) {\n        continue;\n      }\n      if (!currentTrack || matchesOption(currentTrack, track, audioMatchPredicate)) {\n        return i2;\n      }\n    }\n    if (currentTrack) {\n      const {\n        name,\n        lang,\n        assocLang,\n        characteristics,\n        audioCodec,\n        channels\n      } = currentTrack;\n      for (let i2 = 0; i2 < audioTracks.length; i2++) {\n        const track = audioTracks[i2];\n        if (matchesOption({\n          name,\n          lang,\n          assocLang,\n          characteristics,\n          audioCodec,\n          channels\n        }, track, audioMatchPredicate)) {\n          return i2;\n        }\n      }\n      for (let i2 = 0; i2 < audioTracks.length; i2++) {\n        const track = audioTracks[i2];\n        if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, [\"LANGUAGE\", \"ASSOC-LANGUAGE\", \"CHARACTERISTICS\"])) {\n          return i2;\n        }\n      }\n      for (let i2 = 0; i2 < audioTracks.length; i2++) {\n        const track = audioTracks[i2];\n        if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, [\"LANGUAGE\"])) {\n          return i2;\n        }\n      }\n    }\n    return -1;\n  }\n  loadPlaylist(hlsUrlParameters) {\n    const audioTrack = this.currentTrack;\n    if (this.shouldLoadPlaylist(audioTrack) && audioTrack) {\n      super.loadPlaylist();\n      const id = audioTrack.id;\n      const groupId = audioTrack.groupId;\n      let url = audioTrack.url;\n      if (hlsUrlParameters) {\n        try {\n          url = hlsUrlParameters.addDirectives(url);\n        } catch (error) {\n          this.warn(`Could not construct new URL with HLS Delivery Directives: ${error}`);\n        }\n      }\n      this.log(`loading audio-track playlist ${id} \"${audioTrack.name}\" lang:${audioTrack.lang} group:${groupId}`);\n      this.clearTimer();\n      this.hls.trigger(Events.AUDIO_TRACK_LOADING, {\n        url,\n        id,\n        groupId,\n        deliveryDirectives: hlsUrlParameters || null\n      });\n    }\n  }\n};\nvar TICK_INTERVAL$1 = 500;\nvar SubtitleStreamController = class extends BaseStreamController {\n  constructor(hls, fragmentTracker, keyLoader) {\n    super(hls, fragmentTracker, keyLoader, \"[subtitle-stream-controller]\", PlaylistLevelType.SUBTITLE);\n    this.currentTrackId = -1;\n    this.tracksBuffered = [];\n    this.mainDetails = null;\n    this._registerListeners();\n  }\n  onHandlerDestroying() {\n    this._unregisterListeners();\n    super.onHandlerDestroying();\n    this.mainDetails = null;\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.on(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n    hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.on(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.off(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n    hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.off(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  startLoad(startPosition) {\n    this.stopLoad();\n    this.state = State.IDLE;\n    this.setInterval(TICK_INTERVAL$1);\n    this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n    this.tick();\n  }\n  onManifestLoading() {\n    this.mainDetails = null;\n    this.fragmentTracker.removeAllFragments();\n  }\n  onMediaDetaching() {\n    this.tracksBuffered = [];\n    super.onMediaDetaching();\n  }\n  onLevelLoaded(event, data) {\n    this.mainDetails = data.details;\n  }\n  onSubtitleFragProcessed(event, data) {\n    const {\n      frag,\n      success\n    } = data;\n    this.fragPrevious = frag;\n    this.state = State.IDLE;\n    if (!success) {\n      return;\n    }\n    const buffered = this.tracksBuffered[this.currentTrackId];\n    if (!buffered) {\n      return;\n    }\n    let timeRange;\n    const fragStart = frag.start;\n    for (let i2 = 0; i2 < buffered.length; i2++) {\n      if (fragStart >= buffered[i2].start && fragStart <= buffered[i2].end) {\n        timeRange = buffered[i2];\n        break;\n      }\n    }\n    const fragEnd = frag.start + frag.duration;\n    if (timeRange) {\n      timeRange.end = fragEnd;\n    } else {\n      timeRange = {\n        start: fragStart,\n        end: fragEnd\n      };\n      buffered.push(timeRange);\n    }\n    this.fragmentTracker.fragBuffered(frag);\n    this.fragBufferedComplete(frag, null);\n  }\n  onBufferFlushing(event, data) {\n    const {\n      startOffset,\n      endOffset\n    } = data;\n    if (startOffset === 0 && endOffset !== Number.POSITIVE_INFINITY) {\n      const endOffsetSubtitles = endOffset - 1;\n      if (endOffsetSubtitles <= 0) {\n        return;\n      }\n      data.endOffsetSubtitles = Math.max(0, endOffsetSubtitles);\n      this.tracksBuffered.forEach((buffered) => {\n        for (let i2 = 0; i2 < buffered.length; ) {\n          if (buffered[i2].end <= endOffsetSubtitles) {\n            buffered.shift();\n            continue;\n          } else if (buffered[i2].start < endOffsetSubtitles) {\n            buffered[i2].start = endOffsetSubtitles;\n          } else {\n            break;\n          }\n          i2++;\n        }\n      });\n      this.fragmentTracker.removeFragmentsInRange(startOffset, endOffsetSubtitles, PlaylistLevelType.SUBTITLE);\n    }\n  }\n  onFragBuffered(event, data) {\n    if (!this.loadedmetadata && data.frag.type === PlaylistLevelType.MAIN) {\n      var _this$media;\n      if ((_this$media = this.media) != null && _this$media.buffered.length) {\n        this.loadedmetadata = true;\n      }\n    }\n  }\n  // If something goes wrong, proceed to next frag, if we were processing one.\n  onError(event, data) {\n    const frag = data.frag;\n    if ((frag == null ? void 0 : frag.type) === PlaylistLevelType.SUBTITLE) {\n      if (data.details === ErrorDetails.FRAG_GAP) {\n        this.fragmentTracker.fragBuffered(frag, true);\n      }\n      if (this.fragCurrent) {\n        this.fragCurrent.abortRequests();\n      }\n      if (this.state !== State.STOPPED) {\n        this.state = State.IDLE;\n      }\n    }\n  }\n  // Got all new subtitle levels.\n  onSubtitleTracksUpdated(event, {\n    subtitleTracks\n  }) {\n    if (this.levels && subtitleOptionsIdentical(this.levels, subtitleTracks)) {\n      this.levels = subtitleTracks.map((mediaPlaylist) => new Level(mediaPlaylist));\n      return;\n    }\n    this.tracksBuffered = [];\n    this.levels = subtitleTracks.map((mediaPlaylist) => {\n      const level = new Level(mediaPlaylist);\n      this.tracksBuffered[level.id] = [];\n      return level;\n    });\n    this.fragmentTracker.removeFragmentsInRange(0, Number.POSITIVE_INFINITY, PlaylistLevelType.SUBTITLE);\n    this.fragPrevious = null;\n    this.mediaBuffer = null;\n  }\n  onSubtitleTrackSwitch(event, data) {\n    var _this$levels;\n    this.currentTrackId = data.id;\n    if (!((_this$levels = this.levels) != null && _this$levels.length) || this.currentTrackId === -1) {\n      this.clearInterval();\n      return;\n    }\n    const currentTrack = this.levels[this.currentTrackId];\n    if (currentTrack != null && currentTrack.details) {\n      this.mediaBuffer = this.mediaBufferTimeRanges;\n    } else {\n      this.mediaBuffer = null;\n    }\n    if (currentTrack) {\n      this.setInterval(TICK_INTERVAL$1);\n    }\n  }\n  // Got a new set of subtitle fragments.\n  onSubtitleTrackLoaded(event, data) {\n    var _track$details;\n    const {\n      currentTrackId,\n      levels\n    } = this;\n    const {\n      details: newDetails,\n      id: trackId\n    } = data;\n    if (!levels) {\n      this.warn(`Subtitle tracks were reset while loading level ${trackId}`);\n      return;\n    }\n    const track = levels[trackId];\n    if (trackId >= levels.length || !track) {\n      return;\n    }\n    this.log(`Subtitle track ${trackId} loaded [${newDetails.startSN},${newDetails.endSN}]${newDetails.lastPartSn ? `[part-${newDetails.lastPartSn}-${newDetails.lastPartIndex}]` : \"\"},duration:${newDetails.totalduration}`);\n    this.mediaBuffer = this.mediaBufferTimeRanges;\n    let sliding = 0;\n    if (newDetails.live || (_track$details = track.details) != null && _track$details.live) {\n      const mainDetails = this.mainDetails;\n      if (newDetails.deltaUpdateFailed || !mainDetails) {\n        return;\n      }\n      const mainSlidingStartFragment = mainDetails.fragments[0];\n      if (!track.details) {\n        if (newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n          alignMediaPlaylistByPDT(newDetails, mainDetails);\n          sliding = newDetails.fragments[0].start;\n        } else if (mainSlidingStartFragment) {\n          sliding = mainSlidingStartFragment.start;\n          addSliding(newDetails, sliding);\n        }\n      } else {\n        var _this$levelLastLoaded;\n        sliding = this.alignPlaylists(newDetails, track.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n        if (sliding === 0 && mainSlidingStartFragment) {\n          sliding = mainSlidingStartFragment.start;\n          addSliding(newDetails, sliding);\n        }\n      }\n    }\n    track.details = newDetails;\n    this.levelLastLoaded = track;\n    if (trackId !== currentTrackId) {\n      return;\n    }\n    if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n      this.setStartPosition(this.mainDetails || newDetails, sliding);\n    }\n    this.tick();\n    if (newDetails.live && !this.fragCurrent && this.media && this.state === State.IDLE) {\n      const foundFrag = findFragmentByPTS(null, newDetails.fragments, this.media.currentTime, 0);\n      if (!foundFrag) {\n        this.warn(\"Subtitle playlist not aligned with playback\");\n        track.details = void 0;\n      }\n    }\n  }\n  _handleFragmentLoadComplete(fragLoadedData) {\n    const {\n      frag,\n      payload\n    } = fragLoadedData;\n    const decryptData = frag.decryptdata;\n    const hls = this.hls;\n    if (this.fragContextChanged(frag)) {\n      return;\n    }\n    if (payload && payload.byteLength > 0 && decryptData != null && decryptData.key && decryptData.iv && decryptData.method === \"AES-128\") {\n      const startTime = performance.now();\n      this.decrypter.decrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).catch((err) => {\n        hls.trigger(Events.ERROR, {\n          type: ErrorTypes.MEDIA_ERROR,\n          details: ErrorDetails.FRAG_DECRYPT_ERROR,\n          fatal: false,\n          error: err,\n          reason: err.message,\n          frag\n        });\n        throw err;\n      }).then((decryptedData) => {\n        const endTime = performance.now();\n        hls.trigger(Events.FRAG_DECRYPTED, {\n          frag,\n          payload: decryptedData,\n          stats: {\n            tstart: startTime,\n            tdecrypt: endTime\n          }\n        });\n      }).catch((err) => {\n        this.warn(`${err.name}: ${err.message}`);\n        this.state = State.IDLE;\n      });\n    }\n  }\n  doTick() {\n    if (!this.media) {\n      this.state = State.IDLE;\n      return;\n    }\n    if (this.state === State.IDLE) {\n      const {\n        currentTrackId,\n        levels\n      } = this;\n      const track = levels == null ? void 0 : levels[currentTrackId];\n      if (!track || !levels.length || !track.details) {\n        return;\n      }\n      const {\n        config\n      } = this;\n      const currentTime = this.getLoadPosition();\n      const bufferedInfo = BufferHelper.bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], currentTime, config.maxBufferHole);\n      const {\n        end: targetBufferTime,\n        len: bufferLen\n      } = bufferedInfo;\n      const mainBufferInfo = this.getFwdBufferInfo(this.media, PlaylistLevelType.MAIN);\n      const trackDetails = track.details;\n      const maxBufLen = this.getMaxBufferLength(mainBufferInfo == null ? void 0 : mainBufferInfo.len) + trackDetails.levelTargetDuration;\n      if (bufferLen > maxBufLen) {\n        return;\n      }\n      const fragments = trackDetails.fragments;\n      const fragLen = fragments.length;\n      const end = trackDetails.edge;\n      let foundFrag = null;\n      const fragPrevious = this.fragPrevious;\n      if (targetBufferTime < end) {\n        const tolerance = config.maxFragLookUpTolerance;\n        const lookupTolerance = targetBufferTime > end - tolerance ? 0 : tolerance;\n        foundFrag = findFragmentByPTS(fragPrevious, fragments, Math.max(fragments[0].start, targetBufferTime), lookupTolerance);\n        if (!foundFrag && fragPrevious && fragPrevious.start < fragments[0].start) {\n          foundFrag = fragments[0];\n        }\n      } else {\n        foundFrag = fragments[fragLen - 1];\n      }\n      if (!foundFrag) {\n        return;\n      }\n      foundFrag = this.mapToInitFragWhenRequired(foundFrag);\n      if (foundFrag.sn !== \"initSegment\") {\n        const curSNIdx = foundFrag.sn - trackDetails.startSN;\n        const prevFrag = fragments[curSNIdx - 1];\n        if (prevFrag && prevFrag.cc === foundFrag.cc && this.fragmentTracker.getState(prevFrag) === FragmentState.NOT_LOADED) {\n          foundFrag = prevFrag;\n        }\n      }\n      if (this.fragmentTracker.getState(foundFrag) === FragmentState.NOT_LOADED) {\n        this.loadFragment(foundFrag, track, targetBufferTime);\n      }\n    }\n  }\n  getMaxBufferLength(mainBufferLength) {\n    const maxConfigBuffer = super.getMaxBufferLength();\n    if (!mainBufferLength) {\n      return maxConfigBuffer;\n    }\n    return Math.max(maxConfigBuffer, mainBufferLength);\n  }\n  loadFragment(frag, level, targetBufferTime) {\n    this.fragCurrent = frag;\n    if (frag.sn === \"initSegment\") {\n      this._loadInitSegment(frag, level);\n    } else {\n      this.startFragRequested = true;\n      super.loadFragment(frag, level, targetBufferTime);\n    }\n  }\n  get mediaBufferTimeRanges() {\n    return new BufferableInstance(this.tracksBuffered[this.currentTrackId] || []);\n  }\n};\nvar BufferableInstance = class {\n  constructor(timeranges) {\n    this.buffered = void 0;\n    const getRange = (name, index, length) => {\n      index = index >>> 0;\n      if (index > length - 1) {\n        throw new DOMException(`Failed to execute '${name}' on 'TimeRanges': The index provided (${index}) is greater than the maximum bound (${length})`);\n      }\n      return timeranges[index][name];\n    };\n    this.buffered = {\n      get length() {\n        return timeranges.length;\n      },\n      end(index) {\n        return getRange(\"end\", index, timeranges.length);\n      },\n      start(index) {\n        return getRange(\"start\", index, timeranges.length);\n      }\n    };\n  }\n};\nvar SubtitleTrackController = class extends BasePlaylistController {\n  constructor(hls) {\n    super(hls, \"[subtitle-track-controller]\");\n    this.media = null;\n    this.tracks = [];\n    this.groupIds = null;\n    this.tracksInGroup = [];\n    this.trackId = -1;\n    this.currentTrack = null;\n    this.selectDefaultTrack = true;\n    this.queuedDefaultTrack = -1;\n    this.asyncPollTrackChange = () => this.pollTrackChange(0);\n    this.useTextTrackPolling = false;\n    this.subtitlePollingInterval = -1;\n    this._subtitleDisplay = true;\n    this.onTextTracksChanged = () => {\n      if (!this.useTextTrackPolling) {\n        self.clearInterval(this.subtitlePollingInterval);\n      }\n      if (!this.media || !this.hls.config.renderTextTracksNatively) {\n        return;\n      }\n      let textTrack = null;\n      const tracks = filterSubtitleTracks(this.media.textTracks);\n      for (let i2 = 0; i2 < tracks.length; i2++) {\n        if (tracks[i2].mode === \"hidden\") {\n          textTrack = tracks[i2];\n        } else if (tracks[i2].mode === \"showing\") {\n          textTrack = tracks[i2];\n          break;\n        }\n      }\n      const trackId = this.findTrackForTextTrack(textTrack);\n      if (this.subtitleTrack !== trackId) {\n        this.setSubtitleTrack(trackId);\n      }\n    };\n    this.registerListeners();\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.tracks.length = 0;\n    this.tracksInGroup.length = 0;\n    this.currentTrack = null;\n    this.onTextTracksChanged = this.asyncPollTrackChange = null;\n    super.destroy();\n  }\n  get subtitleDisplay() {\n    return this._subtitleDisplay;\n  }\n  set subtitleDisplay(value) {\n    this._subtitleDisplay = value;\n    if (this.trackId > -1) {\n      this.toggleTrackModes();\n    }\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n  unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n  // Listen for subtitle track change, then extract the current track ID.\n  onMediaAttached(event, data) {\n    this.media = data.media;\n    if (!this.media) {\n      return;\n    }\n    if (this.queuedDefaultTrack > -1) {\n      this.subtitleTrack = this.queuedDefaultTrack;\n      this.queuedDefaultTrack = -1;\n    }\n    this.useTextTrackPolling = !(this.media.textTracks && \"onchange\" in this.media.textTracks);\n    if (this.useTextTrackPolling) {\n      this.pollTrackChange(500);\n    } else {\n      this.media.textTracks.addEventListener(\"change\", this.asyncPollTrackChange);\n    }\n  }\n  pollTrackChange(timeout) {\n    self.clearInterval(this.subtitlePollingInterval);\n    this.subtitlePollingInterval = self.setInterval(this.onTextTracksChanged, timeout);\n  }\n  onMediaDetaching() {\n    if (!this.media) {\n      return;\n    }\n    self.clearInterval(this.subtitlePollingInterval);\n    if (!this.useTextTrackPolling) {\n      this.media.textTracks.removeEventListener(\"change\", this.asyncPollTrackChange);\n    }\n    if (this.trackId > -1) {\n      this.queuedDefaultTrack = this.trackId;\n    }\n    const textTracks = filterSubtitleTracks(this.media.textTracks);\n    textTracks.forEach((track) => {\n      clearCurrentCues(track);\n    });\n    this.subtitleTrack = -1;\n    this.media = null;\n  }\n  onManifestLoading() {\n    this.tracks = [];\n    this.groupIds = null;\n    this.tracksInGroup = [];\n    this.trackId = -1;\n    this.currentTrack = null;\n    this.selectDefaultTrack = true;\n  }\n  // Fired whenever a new manifest is loaded.\n  onManifestParsed(event, data) {\n    this.tracks = data.subtitleTracks;\n  }\n  onSubtitleTrackLoaded(event, data) {\n    const {\n      id,\n      groupId,\n      details\n    } = data;\n    const trackInActiveGroup = this.tracksInGroup[id];\n    if (!trackInActiveGroup || trackInActiveGroup.groupId !== groupId) {\n      this.warn(`Subtitle track with id:${id} and group:${groupId} not found in active group ${trackInActiveGroup == null ? void 0 : trackInActiveGroup.groupId}`);\n      return;\n    }\n    const curDetails = trackInActiveGroup.details;\n    trackInActiveGroup.details = data.details;\n    this.log(`Subtitle track ${id} \"${trackInActiveGroup.name}\" lang:${trackInActiveGroup.lang} group:${groupId} loaded [${details.startSN}-${details.endSN}]`);\n    if (id === this.trackId) {\n      this.playlistLoaded(id, data, curDetails);\n    }\n  }\n  onLevelLoading(event, data) {\n    this.switchLevel(data.level);\n  }\n  onLevelSwitching(event, data) {\n    this.switchLevel(data.level);\n  }\n  switchLevel(levelIndex) {\n    const levelInfo = this.hls.levels[levelIndex];\n    if (!levelInfo) {\n      return;\n    }\n    const subtitleGroups = levelInfo.subtitleGroups || null;\n    const currentGroups = this.groupIds;\n    let currentTrack = this.currentTrack;\n    if (!subtitleGroups || (currentGroups == null ? void 0 : currentGroups.length) !== (subtitleGroups == null ? void 0 : subtitleGroups.length) || subtitleGroups != null && subtitleGroups.some((groupId) => (currentGroups == null ? void 0 : currentGroups.indexOf(groupId)) === -1)) {\n      this.groupIds = subtitleGroups;\n      this.trackId = -1;\n      this.currentTrack = null;\n      const subtitleTracks = this.tracks.filter((track) => !subtitleGroups || subtitleGroups.indexOf(track.groupId) !== -1);\n      if (subtitleTracks.length) {\n        if (this.selectDefaultTrack && !subtitleTracks.some((track) => track.default)) {\n          this.selectDefaultTrack = false;\n        }\n        subtitleTracks.forEach((track, i2) => {\n          track.id = i2;\n        });\n      } else if (!currentTrack && !this.tracksInGroup.length) {\n        return;\n      }\n      this.tracksInGroup = subtitleTracks;\n      const subtitlePreference = this.hls.config.subtitlePreference;\n      if (!currentTrack && subtitlePreference) {\n        this.selectDefaultTrack = false;\n        const groupIndex = findMatchingOption(subtitlePreference, subtitleTracks);\n        if (groupIndex > -1) {\n          currentTrack = subtitleTracks[groupIndex];\n        } else {\n          const allIndex = findMatchingOption(subtitlePreference, this.tracks);\n          currentTrack = this.tracks[allIndex];\n        }\n      }\n      let trackId = this.findTrackId(currentTrack);\n      if (trackId === -1 && currentTrack) {\n        trackId = this.findTrackId(null);\n      }\n      const subtitleTracksUpdated = {\n        subtitleTracks\n      };\n      this.log(`Updating subtitle tracks, ${subtitleTracks.length} track(s) found in \"${subtitleGroups == null ? void 0 : subtitleGroups.join(\",\")}\" group-id`);\n      this.hls.trigger(Events.SUBTITLE_TRACKS_UPDATED, subtitleTracksUpdated);\n      if (trackId !== -1 && this.trackId === -1) {\n        this.setSubtitleTrack(trackId);\n      }\n    } else if (this.shouldReloadPlaylist(currentTrack)) {\n      this.setSubtitleTrack(this.trackId);\n    }\n  }\n  findTrackId(currentTrack) {\n    const tracks = this.tracksInGroup;\n    const selectDefault = this.selectDefaultTrack;\n    for (let i2 = 0; i2 < tracks.length; i2++) {\n      const track = tracks[i2];\n      if (selectDefault && !track.default || !selectDefault && !currentTrack) {\n        continue;\n      }\n      if (!currentTrack || matchesOption(track, currentTrack)) {\n        return i2;\n      }\n    }\n    if (currentTrack) {\n      for (let i2 = 0; i2 < tracks.length; i2++) {\n        const track = tracks[i2];\n        if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, [\"LANGUAGE\", \"ASSOC-LANGUAGE\", \"CHARACTERISTICS\"])) {\n          return i2;\n        }\n      }\n      for (let i2 = 0; i2 < tracks.length; i2++) {\n        const track = tracks[i2];\n        if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, [\"LANGUAGE\"])) {\n          return i2;\n        }\n      }\n    }\n    return -1;\n  }\n  findTrackForTextTrack(textTrack) {\n    if (textTrack) {\n      const tracks = this.tracksInGroup;\n      for (let i2 = 0; i2 < tracks.length; i2++) {\n        const track = tracks[i2];\n        if (subtitleTrackMatchesTextTrack(track, textTrack)) {\n          return i2;\n        }\n      }\n    }\n    return -1;\n  }\n  onError(event, data) {\n    if (data.fatal || !data.context) {\n      return;\n    }\n    if (data.context.type === PlaylistContextType.SUBTITLE_TRACK && data.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(data.context.groupId) !== -1)) {\n      this.checkRetry(data);\n    }\n  }\n  get allSubtitleTracks() {\n    return this.tracks;\n  }\n  /** get alternate subtitle tracks list from playlist **/\n  get subtitleTracks() {\n    return this.tracksInGroup;\n  }\n  /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/\n  get subtitleTrack() {\n    return this.trackId;\n  }\n  set subtitleTrack(newId) {\n    this.selectDefaultTrack = false;\n    this.setSubtitleTrack(newId);\n  }\n  setSubtitleOption(subtitleOption) {\n    this.hls.config.subtitlePreference = subtitleOption;\n    if (subtitleOption) {\n      const allSubtitleTracks = this.allSubtitleTracks;\n      this.selectDefaultTrack = false;\n      if (allSubtitleTracks.length) {\n        const currentTrack = this.currentTrack;\n        if (currentTrack && matchesOption(subtitleOption, currentTrack)) {\n          return currentTrack;\n        }\n        const groupIndex = findMatchingOption(subtitleOption, this.tracksInGroup);\n        if (groupIndex > -1) {\n          const track = this.tracksInGroup[groupIndex];\n          this.setSubtitleTrack(groupIndex);\n          return track;\n        } else if (currentTrack) {\n          return null;\n        } else {\n          const allIndex = findMatchingOption(subtitleOption, allSubtitleTracks);\n          if (allIndex > -1) {\n            return allSubtitleTracks[allIndex];\n          }\n        }\n      }\n    }\n    return null;\n  }\n  loadPlaylist(hlsUrlParameters) {\n    super.loadPlaylist();\n    const currentTrack = this.currentTrack;\n    if (this.shouldLoadPlaylist(currentTrack) && currentTrack) {\n      const id = currentTrack.id;\n      const groupId = currentTrack.groupId;\n      let url = currentTrack.url;\n      if (hlsUrlParameters) {\n        try {\n          url = hlsUrlParameters.addDirectives(url);\n        } catch (error) {\n          this.warn(`Could not construct new URL with HLS Delivery Directives: ${error}`);\n        }\n      }\n      this.log(`Loading subtitle playlist for id ${id}`);\n      this.hls.trigger(Events.SUBTITLE_TRACK_LOADING, {\n        url,\n        id,\n        groupId,\n        deliveryDirectives: hlsUrlParameters || null\n      });\n    }\n  }\n  /**\n   * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.\n   * This operates on the DOM textTracks.\n   * A value of -1 will disable all subtitle tracks.\n   */\n  toggleTrackModes() {\n    const {\n      media\n    } = this;\n    if (!media) {\n      return;\n    }\n    const textTracks = filterSubtitleTracks(media.textTracks);\n    const currentTrack = this.currentTrack;\n    let nextTrack;\n    if (currentTrack) {\n      nextTrack = textTracks.filter((textTrack) => subtitleTrackMatchesTextTrack(currentTrack, textTrack))[0];\n      if (!nextTrack) {\n        this.warn(`Unable to find subtitle TextTrack with name \"${currentTrack.name}\" and language \"${currentTrack.lang}\"`);\n      }\n    }\n    [].slice.call(textTracks).forEach((track) => {\n      if (track.mode !== \"disabled\" && track !== nextTrack) {\n        track.mode = \"disabled\";\n      }\n    });\n    if (nextTrack) {\n      const mode = this.subtitleDisplay ? \"showing\" : \"hidden\";\n      if (nextTrack.mode !== mode) {\n        nextTrack.mode = mode;\n      }\n    }\n  }\n  /**\n   * This method is responsible for validating the subtitle index and periodically reloading if live.\n   * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.\n   */\n  setSubtitleTrack(newId) {\n    const tracks = this.tracksInGroup;\n    if (!this.media) {\n      this.queuedDefaultTrack = newId;\n      return;\n    }\n    if (newId < -1 || newId >= tracks.length || !isFiniteNumber(newId)) {\n      this.warn(`Invalid subtitle track id: ${newId}`);\n      return;\n    }\n    this.clearTimer();\n    this.selectDefaultTrack = false;\n    const lastTrack = this.currentTrack;\n    const track = tracks[newId] || null;\n    this.trackId = newId;\n    this.currentTrack = track;\n    this.toggleTrackModes();\n    if (!track) {\n      this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, {\n        id: newId\n      });\n      return;\n    }\n    const trackLoaded = !!track.details && !track.details.live;\n    if (newId === this.trackId && track === lastTrack && trackLoaded) {\n      return;\n    }\n    this.log(`Switching to subtitle-track ${newId}` + (track ? ` \"${track.name}\" lang:${track.lang} group:${track.groupId}` : \"\"));\n    const {\n      id,\n      groupId = \"\",\n      name,\n      type,\n      url\n    } = track;\n    this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, {\n      id,\n      groupId,\n      name,\n      type,\n      url\n    });\n    const hlsUrlParameters = this.switchParams(track.url, lastTrack == null ? void 0 : lastTrack.details, track.details);\n    this.loadPlaylist(hlsUrlParameters);\n  }\n};\nvar BufferOperationQueue = class {\n  constructor(sourceBufferReference) {\n    this.buffers = void 0;\n    this.queues = {\n      video: [],\n      audio: [],\n      audiovideo: []\n    };\n    this.buffers = sourceBufferReference;\n  }\n  append(operation, type, pending) {\n    const queue = this.queues[type];\n    queue.push(operation);\n    if (queue.length === 1 && !pending) {\n      this.executeNext(type);\n    }\n  }\n  insertAbort(operation, type) {\n    const queue = this.queues[type];\n    queue.unshift(operation);\n    this.executeNext(type);\n  }\n  appendBlocker(type) {\n    let execute;\n    const promise = new Promise((resolve) => {\n      execute = resolve;\n    });\n    const operation = {\n      execute,\n      onStart: () => {\n      },\n      onComplete: () => {\n      },\n      onError: () => {\n      }\n    };\n    this.append(operation, type);\n    return promise;\n  }\n  executeNext(type) {\n    const queue = this.queues[type];\n    if (queue.length) {\n      const operation = queue[0];\n      try {\n        operation.execute();\n      } catch (error) {\n        logger.warn(`[buffer-operation-queue]: Exception executing \"${type}\" SourceBuffer operation: ${error}`);\n        operation.onError(error);\n        const sb = this.buffers[type];\n        if (!(sb != null && sb.updating)) {\n          this.shiftAndExecuteNext(type);\n        }\n      }\n    }\n  }\n  shiftAndExecuteNext(type) {\n    this.queues[type].shift();\n    this.executeNext(type);\n  }\n  current(type) {\n    return this.queues[type][0];\n  }\n};\nvar VIDEO_CODEC_PROFILE_REPLACE = /(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\\.[^.,]+)+/;\nvar BufferController = class {\n  constructor(hls) {\n    this.details = null;\n    this._objectUrl = null;\n    this.operationQueue = void 0;\n    this.listeners = void 0;\n    this.hls = void 0;\n    this.bufferCodecEventsExpected = 0;\n    this._bufferCodecEventsTotal = 0;\n    this.media = null;\n    this.mediaSource = null;\n    this.lastMpegAudioChunk = null;\n    this.appendSource = void 0;\n    this.appendErrors = {\n      audio: 0,\n      video: 0,\n      audiovideo: 0\n    };\n    this.tracks = {};\n    this.pendingTracks = {};\n    this.sourceBuffer = void 0;\n    this.log = void 0;\n    this.warn = void 0;\n    this.error = void 0;\n    this._onEndStreaming = (event) => {\n      if (!this.hls) {\n        return;\n      }\n      this.hls.pauseBuffering();\n    };\n    this._onStartStreaming = (event) => {\n      if (!this.hls) {\n        return;\n      }\n      this.hls.resumeBuffering();\n    };\n    this._onMediaSourceOpen = () => {\n      const {\n        media,\n        mediaSource\n      } = this;\n      this.log(\"Media source opened\");\n      if (media) {\n        media.removeEventListener(\"emptied\", this._onMediaEmptied);\n        this.updateMediaElementDuration();\n        this.hls.trigger(Events.MEDIA_ATTACHED, {\n          media,\n          mediaSource\n        });\n      }\n      if (mediaSource) {\n        mediaSource.removeEventListener(\"sourceopen\", this._onMediaSourceOpen);\n      }\n      this.checkPendingTracks();\n    };\n    this._onMediaSourceClose = () => {\n      this.log(\"Media source closed\");\n    };\n    this._onMediaSourceEnded = () => {\n      this.log(\"Media source ended\");\n    };\n    this._onMediaEmptied = () => {\n      const {\n        mediaSrc,\n        _objectUrl\n      } = this;\n      if (mediaSrc !== _objectUrl) {\n        logger.error(`Media element src was set while attaching MediaSource (${_objectUrl} > ${mediaSrc})`);\n      }\n    };\n    this.hls = hls;\n    const logPrefix = \"[buffer-controller]\";\n    this.appendSource = isManagedMediaSource(getMediaSource(hls.config.preferManagedMediaSource));\n    this.log = logger.log.bind(logger, logPrefix);\n    this.warn = logger.warn.bind(logger, logPrefix);\n    this.error = logger.error.bind(logger, logPrefix);\n    this._initSourceBuffer();\n    this.registerListeners();\n  }\n  hasSourceTypes() {\n    return this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0;\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.details = null;\n    this.lastMpegAudioChunk = null;\n    this.hls = null;\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.on(Events.BUFFER_APPENDING, this.onBufferAppending, this);\n    hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.on(Events.BUFFER_EOS, this.onBufferEos, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    hls.on(Events.FRAG_PARSED, this.onFragParsed, this);\n    hls.on(Events.FRAG_CHANGED, this.onFragChanged, this);\n  }\n  unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.off(Events.BUFFER_APPENDING, this.onBufferAppending, this);\n    hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.off(Events.BUFFER_EOS, this.onBufferEos, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    hls.off(Events.FRAG_PARSED, this.onFragParsed, this);\n    hls.off(Events.FRAG_CHANGED, this.onFragChanged, this);\n  }\n  _initSourceBuffer() {\n    this.sourceBuffer = {};\n    this.operationQueue = new BufferOperationQueue(this.sourceBuffer);\n    this.listeners = {\n      audio: [],\n      video: [],\n      audiovideo: []\n    };\n    this.appendErrors = {\n      audio: 0,\n      video: 0,\n      audiovideo: 0\n    };\n    this.lastMpegAudioChunk = null;\n  }\n  onManifestLoading() {\n    this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = 0;\n    this.details = null;\n  }\n  onManifestParsed(event, data) {\n    let codecEvents = 2;\n    if (data.audio && !data.video || !data.altAudio || false) {\n      codecEvents = 1;\n    }\n    this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = codecEvents;\n    this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`);\n  }\n  onMediaAttaching(event, data) {\n    const media = this.media = data.media;\n    const MediaSource = getMediaSource(this.appendSource);\n    if (media && MediaSource) {\n      var _ms$constructor;\n      const ms = this.mediaSource = new MediaSource();\n      this.log(`created media source: ${(_ms$constructor = ms.constructor) == null ? void 0 : _ms$constructor.name}`);\n      ms.addEventListener(\"sourceopen\", this._onMediaSourceOpen);\n      ms.addEventListener(\"sourceended\", this._onMediaSourceEnded);\n      ms.addEventListener(\"sourceclose\", this._onMediaSourceClose);\n      if (this.appendSource) {\n        ms.addEventListener(\"startstreaming\", this._onStartStreaming);\n        ms.addEventListener(\"endstreaming\", this._onEndStreaming);\n      }\n      const objectUrl = this._objectUrl = self.URL.createObjectURL(ms);\n      if (this.appendSource) {\n        try {\n          media.removeAttribute(\"src\");\n          const MMS = self.ManagedMediaSource;\n          media.disableRemotePlayback = media.disableRemotePlayback || MMS && ms instanceof MMS;\n          removeSourceChildren(media);\n          addSource(media, objectUrl);\n          media.load();\n        } catch (error) {\n          media.src = objectUrl;\n        }\n      } else {\n        media.src = objectUrl;\n      }\n      media.addEventListener(\"emptied\", this._onMediaEmptied);\n    }\n  }\n  onMediaDetaching() {\n    const {\n      media,\n      mediaSource,\n      _objectUrl\n    } = this;\n    if (mediaSource) {\n      this.log(\"media source detaching\");\n      if (mediaSource.readyState === \"open\") {\n        try {\n          mediaSource.endOfStream();\n        } catch (err) {\n          this.warn(`onMediaDetaching: ${err.message} while calling endOfStream`);\n        }\n      }\n      this.onBufferReset();\n      mediaSource.removeEventListener(\"sourceopen\", this._onMediaSourceOpen);\n      mediaSource.removeEventListener(\"sourceended\", this._onMediaSourceEnded);\n      mediaSource.removeEventListener(\"sourceclose\", this._onMediaSourceClose);\n      if (this.appendSource) {\n        mediaSource.removeEventListener(\"startstreaming\", this._onStartStreaming);\n        mediaSource.removeEventListener(\"endstreaming\", this._onEndStreaming);\n      }\n      if (media) {\n        media.removeEventListener(\"emptied\", this._onMediaEmptied);\n        if (_objectUrl) {\n          self.URL.revokeObjectURL(_objectUrl);\n        }\n        if (this.mediaSrc === _objectUrl) {\n          media.removeAttribute(\"src\");\n          if (this.appendSource) {\n            removeSourceChildren(media);\n          }\n          media.load();\n        } else {\n          this.warn(\"media|source.src was changed by a third party - skip cleanup\");\n        }\n      }\n      this.mediaSource = null;\n      this.media = null;\n      this._objectUrl = null;\n      this.bufferCodecEventsExpected = this._bufferCodecEventsTotal;\n      this.pendingTracks = {};\n      this.tracks = {};\n    }\n    this.hls.trigger(Events.MEDIA_DETACHED, void 0);\n  }\n  onBufferReset() {\n    this.getSourceBufferTypes().forEach((type) => {\n      this.resetBuffer(type);\n    });\n    this._initSourceBuffer();\n    this.hls.resumeBuffering();\n  }\n  resetBuffer(type) {\n    const sb = this.sourceBuffer[type];\n    try {\n      if (sb) {\n        var _this$mediaSource;\n        this.removeBufferListeners(type);\n        this.sourceBuffer[type] = void 0;\n        if ((_this$mediaSource = this.mediaSource) != null && _this$mediaSource.sourceBuffers.length) {\n          this.mediaSource.removeSourceBuffer(sb);\n        }\n      }\n    } catch (err) {\n      this.warn(`onBufferReset ${type}`, err);\n    }\n  }\n  onBufferCodecs(event, data) {\n    const sourceBufferCount = this.getSourceBufferTypes().length;\n    const trackNames = Object.keys(data);\n    trackNames.forEach((trackName) => {\n      if (sourceBufferCount) {\n        const track = this.tracks[trackName];\n        if (track && typeof track.buffer.changeType === \"function\") {\n          var _trackCodec;\n          const {\n            id,\n            codec,\n            levelCodec,\n            container,\n            metadata\n          } = data[trackName];\n          const currentCodecFull = pickMostCompleteCodecName(track.codec, track.levelCodec);\n          const currentCodec = currentCodecFull == null ? void 0 : currentCodecFull.replace(VIDEO_CODEC_PROFILE_REPLACE, \"$1\");\n          let trackCodec = pickMostCompleteCodecName(codec, levelCodec);\n          const nextCodec = (_trackCodec = trackCodec) == null ? void 0 : _trackCodec.replace(VIDEO_CODEC_PROFILE_REPLACE, \"$1\");\n          if (trackCodec && currentCodec !== nextCodec) {\n            if (trackName.slice(0, 5) === \"audio\") {\n              trackCodec = getCodecCompatibleName(trackCodec, this.appendSource);\n            }\n            const mimeType = `${container};codecs=${trackCodec}`;\n            this.appendChangeType(trackName, mimeType);\n            this.log(`switching codec ${currentCodecFull} to ${trackCodec}`);\n            this.tracks[trackName] = {\n              buffer: track.buffer,\n              codec,\n              container,\n              levelCodec,\n              metadata,\n              id\n            };\n          }\n        }\n      } else {\n        this.pendingTracks[trackName] = data[trackName];\n      }\n    });\n    if (sourceBufferCount) {\n      return;\n    }\n    const bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0);\n    if (this.bufferCodecEventsExpected !== bufferCodecEventsExpected) {\n      this.log(`${bufferCodecEventsExpected} bufferCodec event(s) expected ${trackNames.join(\",\")}`);\n      this.bufferCodecEventsExpected = bufferCodecEventsExpected;\n    }\n    if (this.mediaSource && this.mediaSource.readyState === \"open\") {\n      this.checkPendingTracks();\n    }\n  }\n  appendChangeType(type, mimeType) {\n    const {\n      operationQueue\n    } = this;\n    const operation = {\n      execute: () => {\n        const sb = this.sourceBuffer[type];\n        if (sb) {\n          this.log(`changing ${type} sourceBuffer type to ${mimeType}`);\n          sb.changeType(mimeType);\n        }\n        operationQueue.shiftAndExecuteNext(type);\n      },\n      onStart: () => {\n      },\n      onComplete: () => {\n      },\n      onError: (error) => {\n        this.warn(`Failed to change ${type} SourceBuffer type`, error);\n      }\n    };\n    operationQueue.append(operation, type, !!this.pendingTracks[type]);\n  }\n  onBufferAppending(event, eventData) {\n    const {\n      hls,\n      operationQueue,\n      tracks\n    } = this;\n    const {\n      data,\n      type,\n      frag,\n      part,\n      chunkMeta\n    } = eventData;\n    const chunkStats = chunkMeta.buffering[type];\n    const bufferAppendingStart = self.performance.now();\n    chunkStats.start = bufferAppendingStart;\n    const fragBuffering = frag.stats.buffering;\n    const partBuffering = part ? part.stats.buffering : null;\n    if (fragBuffering.start === 0) {\n      fragBuffering.start = bufferAppendingStart;\n    }\n    if (partBuffering && partBuffering.start === 0) {\n      partBuffering.start = bufferAppendingStart;\n    }\n    const audioTrack = tracks.audio;\n    let checkTimestampOffset = false;\n    if (type === \"audio\" && (audioTrack == null ? void 0 : audioTrack.container) === \"audio/mpeg\") {\n      checkTimestampOffset = !this.lastMpegAudioChunk || chunkMeta.id === 1 || this.lastMpegAudioChunk.sn !== chunkMeta.sn;\n      this.lastMpegAudioChunk = chunkMeta;\n    }\n    const fragStart = frag.start;\n    const operation = {\n      execute: () => {\n        chunkStats.executeStart = self.performance.now();\n        if (checkTimestampOffset) {\n          const sb = this.sourceBuffer[type];\n          if (sb) {\n            const delta = fragStart - sb.timestampOffset;\n            if (Math.abs(delta) >= 0.1) {\n              this.log(`Updating audio SourceBuffer timestampOffset to ${fragStart} (delta: ${delta}) sn: ${frag.sn})`);\n              sb.timestampOffset = fragStart;\n            }\n          }\n        }\n        this.appendExecutor(data, type);\n      },\n      onStart: () => {\n      },\n      onComplete: () => {\n        const end = self.performance.now();\n        chunkStats.executeEnd = chunkStats.end = end;\n        if (fragBuffering.first === 0) {\n          fragBuffering.first = end;\n        }\n        if (partBuffering && partBuffering.first === 0) {\n          partBuffering.first = end;\n        }\n        const {\n          sourceBuffer\n        } = this;\n        const timeRanges = {};\n        for (const type2 in sourceBuffer) {\n          timeRanges[type2] = BufferHelper.getBuffered(sourceBuffer[type2]);\n        }\n        this.appendErrors[type] = 0;\n        if (type === \"audio\" || type === \"video\") {\n          this.appendErrors.audiovideo = 0;\n        } else {\n          this.appendErrors.audio = 0;\n          this.appendErrors.video = 0;\n        }\n        this.hls.trigger(Events.BUFFER_APPENDED, {\n          type,\n          frag,\n          part,\n          chunkMeta,\n          parent: frag.type,\n          timeRanges\n        });\n      },\n      onError: (error) => {\n        const event2 = {\n          type: ErrorTypes.MEDIA_ERROR,\n          parent: frag.type,\n          details: ErrorDetails.BUFFER_APPEND_ERROR,\n          sourceBufferName: type,\n          frag,\n          part,\n          chunkMeta,\n          error,\n          err: error,\n          fatal: false\n        };\n        if (error.code === DOMException.QUOTA_EXCEEDED_ERR) {\n          event2.details = ErrorDetails.BUFFER_FULL_ERROR;\n        } else {\n          const appendErrorCount = ++this.appendErrors[type];\n          event2.details = ErrorDetails.BUFFER_APPEND_ERROR;\n          this.warn(`Failed ${appendErrorCount}/${hls.config.appendErrorMaxRetry} times to append segment in \"${type}\" sourceBuffer`);\n          if (appendErrorCount >= hls.config.appendErrorMaxRetry) {\n            event2.fatal = true;\n          }\n        }\n        hls.trigger(Events.ERROR, event2);\n      }\n    };\n    operationQueue.append(operation, type, !!this.pendingTracks[type]);\n  }\n  onBufferFlushing(event, data) {\n    const {\n      operationQueue\n    } = this;\n    const flushOperation = (type) => ({\n      execute: this.removeExecutor.bind(this, type, data.startOffset, data.endOffset),\n      onStart: () => {\n      },\n      onComplete: () => {\n        this.hls.trigger(Events.BUFFER_FLUSHED, {\n          type\n        });\n      },\n      onError: (error) => {\n        this.warn(`Failed to remove from ${type} SourceBuffer`, error);\n      }\n    });\n    if (data.type) {\n      operationQueue.append(flushOperation(data.type), data.type);\n    } else {\n      this.getSourceBufferTypes().forEach((type) => {\n        operationQueue.append(flushOperation(type), type);\n      });\n    }\n  }\n  onFragParsed(event, data) {\n    const {\n      frag,\n      part\n    } = data;\n    const buffersAppendedTo = [];\n    const elementaryStreams = part ? part.elementaryStreams : frag.elementaryStreams;\n    if (elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO]) {\n      buffersAppendedTo.push(\"audiovideo\");\n    } else {\n      if (elementaryStreams[ElementaryStreamTypes.AUDIO]) {\n        buffersAppendedTo.push(\"audio\");\n      }\n      if (elementaryStreams[ElementaryStreamTypes.VIDEO]) {\n        buffersAppendedTo.push(\"video\");\n      }\n    }\n    const onUnblocked = () => {\n      const now2 = self.performance.now();\n      frag.stats.buffering.end = now2;\n      if (part) {\n        part.stats.buffering.end = now2;\n      }\n      const stats = part ? part.stats : frag.stats;\n      this.hls.trigger(Events.FRAG_BUFFERED, {\n        frag,\n        part,\n        stats,\n        id: frag.type\n      });\n    };\n    if (buffersAppendedTo.length === 0) {\n      this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${frag.type} level: ${frag.level} sn: ${frag.sn}`);\n    }\n    this.blockBuffers(onUnblocked, buffersAppendedTo);\n  }\n  onFragChanged(event, data) {\n    this.trimBuffers();\n  }\n  // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos()\n  // an undefined data.type will mark all buffers as EOS.\n  onBufferEos(event, data) {\n    const ended = this.getSourceBufferTypes().reduce((acc, type) => {\n      const sb = this.sourceBuffer[type];\n      if (sb && (!data.type || data.type === type)) {\n        sb.ending = true;\n        if (!sb.ended) {\n          sb.ended = true;\n          this.log(`${type} sourceBuffer now EOS`);\n        }\n      }\n      return acc && !!(!sb || sb.ended);\n    }, true);\n    if (ended) {\n      this.log(`Queueing mediaSource.endOfStream()`);\n      this.blockBuffers(() => {\n        this.getSourceBufferTypes().forEach((type) => {\n          const sb = this.sourceBuffer[type];\n          if (sb) {\n            sb.ending = false;\n          }\n        });\n        const {\n          mediaSource\n        } = this;\n        if (!mediaSource || mediaSource.readyState !== \"open\") {\n          if (mediaSource) {\n            this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${mediaSource.readyState}`);\n          }\n          return;\n        }\n        this.log(`Calling mediaSource.endOfStream()`);\n        mediaSource.endOfStream();\n      });\n    }\n  }\n  onLevelUpdated(event, {\n    details\n  }) {\n    if (!details.fragments.length) {\n      return;\n    }\n    this.details = details;\n    if (this.getSourceBufferTypes().length) {\n      this.blockBuffers(this.updateMediaElementDuration.bind(this));\n    } else {\n      this.updateMediaElementDuration();\n    }\n  }\n  trimBuffers() {\n    const {\n      hls,\n      details,\n      media\n    } = this;\n    if (!media || details === null) {\n      return;\n    }\n    const sourceBufferTypes = this.getSourceBufferTypes();\n    if (!sourceBufferTypes.length) {\n      return;\n    }\n    const config = hls.config;\n    const currentTime = media.currentTime;\n    const targetDuration = details.levelTargetDuration;\n    const backBufferLength = details.live && config.liveBackBufferLength !== null ? config.liveBackBufferLength : config.backBufferLength;\n    if (isFiniteNumber(backBufferLength) && backBufferLength > 0) {\n      const maxBackBufferLength = Math.max(backBufferLength, targetDuration);\n      const targetBackBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration - maxBackBufferLength;\n      this.flushBackBuffer(currentTime, targetDuration, targetBackBufferPosition);\n    }\n    if (isFiniteNumber(config.frontBufferFlushThreshold) && config.frontBufferFlushThreshold > 0) {\n      const frontBufferLength = Math.max(config.maxBufferLength, config.frontBufferFlushThreshold);\n      const maxFrontBufferLength = Math.max(frontBufferLength, targetDuration);\n      const targetFrontBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration + maxFrontBufferLength;\n      this.flushFrontBuffer(currentTime, targetDuration, targetFrontBufferPosition);\n    }\n  }\n  flushBackBuffer(currentTime, targetDuration, targetBackBufferPosition) {\n    const {\n      details,\n      sourceBuffer\n    } = this;\n    const sourceBufferTypes = this.getSourceBufferTypes();\n    sourceBufferTypes.forEach((type) => {\n      const sb = sourceBuffer[type];\n      if (sb) {\n        const buffered = BufferHelper.getBuffered(sb);\n        if (buffered.length > 0 && targetBackBufferPosition > buffered.start(0)) {\n          this.hls.trigger(Events.BACK_BUFFER_REACHED, {\n            bufferEnd: targetBackBufferPosition\n          });\n          if (details != null && details.live) {\n            this.hls.trigger(Events.LIVE_BACK_BUFFER_REACHED, {\n              bufferEnd: targetBackBufferPosition\n            });\n          } else if (sb.ended && buffered.end(buffered.length - 1) - currentTime < targetDuration * 2) {\n            this.log(`Cannot flush ${type} back buffer while SourceBuffer is in ended state`);\n            return;\n          }\n          this.hls.trigger(Events.BUFFER_FLUSHING, {\n            startOffset: 0,\n            endOffset: targetBackBufferPosition,\n            type\n          });\n        }\n      }\n    });\n  }\n  flushFrontBuffer(currentTime, targetDuration, targetFrontBufferPosition) {\n    const {\n      sourceBuffer\n    } = this;\n    const sourceBufferTypes = this.getSourceBufferTypes();\n    sourceBufferTypes.forEach((type) => {\n      const sb = sourceBuffer[type];\n      if (sb) {\n        const buffered = BufferHelper.getBuffered(sb);\n        const numBufferedRanges = buffered.length;\n        if (numBufferedRanges < 2) {\n          return;\n        }\n        const bufferStart = buffered.start(numBufferedRanges - 1);\n        const bufferEnd = buffered.end(numBufferedRanges - 1);\n        if (targetFrontBufferPosition > bufferStart || currentTime >= bufferStart && currentTime <= bufferEnd) {\n          return;\n        } else if (sb.ended && currentTime - bufferEnd < 2 * targetDuration) {\n          this.log(`Cannot flush ${type} front buffer while SourceBuffer is in ended state`);\n          return;\n        }\n        this.hls.trigger(Events.BUFFER_FLUSHING, {\n          startOffset: bufferStart,\n          endOffset: Infinity,\n          type\n        });\n      }\n    });\n  }\n  /**\n   * Update Media Source duration to current level duration or override to Infinity if configuration parameter\n   * 'liveDurationInfinity` is set to `true`\n   * More details: https://github.com/video-dev/hls.js/issues/355\n   */\n  updateMediaElementDuration() {\n    if (!this.details || !this.media || !this.mediaSource || this.mediaSource.readyState !== \"open\") {\n      return;\n    }\n    const {\n      details,\n      hls,\n      media,\n      mediaSource\n    } = this;\n    const levelDuration = details.fragments[0].start + details.totalduration;\n    const mediaDuration = media.duration;\n    const msDuration = isFiniteNumber(mediaSource.duration) ? mediaSource.duration : 0;\n    if (details.live && hls.config.liveDurationInfinity) {\n      mediaSource.duration = Infinity;\n      this.updateSeekableRange(details);\n    } else if (levelDuration > msDuration && levelDuration > mediaDuration || !isFiniteNumber(mediaDuration)) {\n      this.log(`Updating Media Source duration to ${levelDuration.toFixed(3)}`);\n      mediaSource.duration = levelDuration;\n    }\n  }\n  updateSeekableRange(levelDetails) {\n    const mediaSource = this.mediaSource;\n    const fragments = levelDetails.fragments;\n    const len = fragments.length;\n    if (len && levelDetails.live && mediaSource != null && mediaSource.setLiveSeekableRange) {\n      const start = Math.max(0, fragments[0].start);\n      const end = Math.max(start, start + levelDetails.totalduration);\n      this.log(`Media Source duration is set to ${mediaSource.duration}. Setting seekable range to ${start}-${end}.`);\n      mediaSource.setLiveSeekableRange(start, end);\n    }\n  }\n  checkPendingTracks() {\n    const {\n      bufferCodecEventsExpected,\n      operationQueue,\n      pendingTracks\n    } = this;\n    const pendingTracksCount = Object.keys(pendingTracks).length;\n    if (pendingTracksCount && (!bufferCodecEventsExpected || pendingTracksCount === 2 || \"audiovideo\" in pendingTracks)) {\n      this.createSourceBuffers(pendingTracks);\n      this.pendingTracks = {};\n      const buffers = this.getSourceBufferTypes();\n      if (buffers.length) {\n        this.hls.trigger(Events.BUFFER_CREATED, {\n          tracks: this.tracks\n        });\n        buffers.forEach((type) => {\n          operationQueue.executeNext(type);\n        });\n      } else {\n        const error = new Error(\"could not create source buffer for media codec(s)\");\n        this.hls.trigger(Events.ERROR, {\n          type: ErrorTypes.MEDIA_ERROR,\n          details: ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR,\n          fatal: true,\n          error,\n          reason: error.message\n        });\n      }\n    }\n  }\n  createSourceBuffers(tracks) {\n    const {\n      sourceBuffer,\n      mediaSource\n    } = this;\n    if (!mediaSource) {\n      throw Error(\"createSourceBuffers called when mediaSource was null\");\n    }\n    for (const trackName in tracks) {\n      if (!sourceBuffer[trackName]) {\n        var _track$levelCodec;\n        const track = tracks[trackName];\n        if (!track) {\n          throw Error(`source buffer exists for track ${trackName}, however track does not`);\n        }\n        let codec = ((_track$levelCodec = track.levelCodec) == null ? void 0 : _track$levelCodec.indexOf(\",\")) === -1 ? track.levelCodec : track.codec;\n        if (codec) {\n          if (trackName.slice(0, 5) === \"audio\") {\n            codec = getCodecCompatibleName(codec, this.appendSource);\n          }\n        }\n        const mimeType = `${track.container};codecs=${codec}`;\n        this.log(`creating sourceBuffer(${mimeType})`);\n        try {\n          const sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);\n          const sbName = trackName;\n          this.addBufferListener(sbName, \"updatestart\", this._onSBUpdateStart);\n          this.addBufferListener(sbName, \"updateend\", this._onSBUpdateEnd);\n          this.addBufferListener(sbName, \"error\", this._onSBUpdateError);\n          if (this.appendSource) {\n            this.addBufferListener(sbName, \"bufferedchange\", (type, event) => {\n              const removedRanges = event.removedRanges;\n              if (removedRanges != null && removedRanges.length) {\n                this.hls.trigger(Events.BUFFER_FLUSHED, {\n                  type: trackName\n                });\n              }\n            });\n          }\n          this.tracks[trackName] = {\n            buffer: sb,\n            codec,\n            container: track.container,\n            levelCodec: track.levelCodec,\n            metadata: track.metadata,\n            id: track.id\n          };\n        } catch (err) {\n          this.error(`error while trying to add sourceBuffer: ${err.message}`);\n          this.hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.BUFFER_ADD_CODEC_ERROR,\n            fatal: false,\n            error: err,\n            sourceBufferName: trackName,\n            mimeType\n          });\n        }\n      }\n    }\n  }\n  get mediaSrc() {\n    var _this$media, _this$media$querySele;\n    const media = ((_this$media = this.media) == null ? void 0 : (_this$media$querySele = _this$media.querySelector) == null ? void 0 : _this$media$querySele.call(_this$media, \"source\")) || this.media;\n    return media == null ? void 0 : media.src;\n  }\n  _onSBUpdateStart(type) {\n    const {\n      operationQueue\n    } = this;\n    const operation = operationQueue.current(type);\n    operation.onStart();\n  }\n  _onSBUpdateEnd(type) {\n    var _this$mediaSource2;\n    if (((_this$mediaSource2 = this.mediaSource) == null ? void 0 : _this$mediaSource2.readyState) === \"closed\") {\n      this.resetBuffer(type);\n      return;\n    }\n    const {\n      operationQueue\n    } = this;\n    const operation = operationQueue.current(type);\n    operation.onComplete();\n    operationQueue.shiftAndExecuteNext(type);\n  }\n  _onSBUpdateError(type, event) {\n    var _this$mediaSource3;\n    const error = new Error(`${type} SourceBuffer error. MediaSource readyState: ${(_this$mediaSource3 = this.mediaSource) == null ? void 0 : _this$mediaSource3.readyState}`);\n    this.error(`${error}`, event);\n    this.hls.trigger(Events.ERROR, {\n      type: ErrorTypes.MEDIA_ERROR,\n      details: ErrorDetails.BUFFER_APPENDING_ERROR,\n      sourceBufferName: type,\n      error,\n      fatal: false\n    });\n    const operation = this.operationQueue.current(type);\n    if (operation) {\n      operation.onError(error);\n    }\n  }\n  // This method must result in an updateend event; if remove is not called, _onSBUpdateEnd must be called manually\n  removeExecutor(type, startOffset, endOffset) {\n    const {\n      media,\n      mediaSource,\n      operationQueue,\n      sourceBuffer\n    } = this;\n    const sb = sourceBuffer[type];\n    if (!media || !mediaSource || !sb) {\n      this.warn(`Attempting to remove from the ${type} SourceBuffer, but it does not exist`);\n      operationQueue.shiftAndExecuteNext(type);\n      return;\n    }\n    const mediaDuration = isFiniteNumber(media.duration) ? media.duration : Infinity;\n    const msDuration = isFiniteNumber(mediaSource.duration) ? mediaSource.duration : Infinity;\n    const removeStart = Math.max(0, startOffset);\n    const removeEnd = Math.min(endOffset, mediaDuration, msDuration);\n    if (removeEnd > removeStart && (!sb.ending || sb.ended)) {\n      sb.ended = false;\n      this.log(`Removing [${removeStart},${removeEnd}] from the ${type} SourceBuffer`);\n      sb.remove(removeStart, removeEnd);\n    } else {\n      operationQueue.shiftAndExecuteNext(type);\n    }\n  }\n  // This method must result in an updateend event; if append is not called, _onSBUpdateEnd must be called manually\n  appendExecutor(data, type) {\n    const sb = this.sourceBuffer[type];\n    if (!sb) {\n      if (!this.pendingTracks[type]) {\n        throw new Error(`Attempting to append to the ${type} SourceBuffer, but it does not exist`);\n      }\n      return;\n    }\n    sb.ended = false;\n    sb.appendBuffer(data);\n  }\n  // Enqueues an operation to each SourceBuffer queue which, upon execution, resolves a promise. When all promises\n  // resolve, the onUnblocked function is executed. Functions calling this method do not need to unblock the queue\n  // upon completion, since we already do it here\n  blockBuffers(onUnblocked, buffers = this.getSourceBufferTypes()) {\n    if (!buffers.length) {\n      this.log(\"Blocking operation requested, but no SourceBuffers exist\");\n      Promise.resolve().then(onUnblocked);\n      return;\n    }\n    const {\n      operationQueue\n    } = this;\n    const blockingOperations = buffers.map((type) => operationQueue.appendBlocker(type));\n    Promise.all(blockingOperations).then(() => {\n      onUnblocked();\n      buffers.forEach((type) => {\n        const sb = this.sourceBuffer[type];\n        if (!(sb != null && sb.updating)) {\n          operationQueue.shiftAndExecuteNext(type);\n        }\n      });\n    });\n  }\n  getSourceBufferTypes() {\n    return Object.keys(this.sourceBuffer);\n  }\n  addBufferListener(type, event, fn) {\n    const buffer = this.sourceBuffer[type];\n    if (!buffer) {\n      return;\n    }\n    const listener = fn.bind(this, type);\n    this.listeners[type].push({\n      event,\n      listener\n    });\n    buffer.addEventListener(event, listener);\n  }\n  removeBufferListeners(type) {\n    const buffer = this.sourceBuffer[type];\n    if (!buffer) {\n      return;\n    }\n    this.listeners[type].forEach((l) => {\n      buffer.removeEventListener(l.event, l.listener);\n    });\n  }\n};\nfunction removeSourceChildren(node) {\n  const sourceChildren = node.querySelectorAll(\"source\");\n  [].slice.call(sourceChildren).forEach((source) => {\n    node.removeChild(source);\n  });\n}\nfunction addSource(media, url) {\n  const source = self.document.createElement(\"source\");\n  source.type = \"video/mp4\";\n  source.src = url;\n  media.appendChild(source);\n}\nvar specialCea608CharsCodes = {\n  42: 225,\n  // lowercase a, acute accent\n  92: 233,\n  // lowercase e, acute accent\n  94: 237,\n  // lowercase i, acute accent\n  95: 243,\n  // lowercase o, acute accent\n  96: 250,\n  // lowercase u, acute accent\n  123: 231,\n  // lowercase c with cedilla\n  124: 247,\n  // division symbol\n  125: 209,\n  // uppercase N tilde\n  126: 241,\n  // lowercase n tilde\n  127: 9608,\n  // Full block\n  // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n  // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F\n  // THIS MEANS THAT \\x50 MUST BE ADDED TO THE VALUES\n  128: 174,\n  // Registered symbol (R)\n  129: 176,\n  // degree sign\n  130: 189,\n  // 1/2 symbol\n  131: 191,\n  // Inverted (open) question mark\n  132: 8482,\n  // Trademark symbol (TM)\n  133: 162,\n  // Cents symbol\n  134: 163,\n  // Pounds sterling\n  135: 9834,\n  // Music 8'th note\n  136: 224,\n  // lowercase a, grave accent\n  137: 32,\n  // transparent space (regular)\n  138: 232,\n  // lowercase e, grave accent\n  139: 226,\n  // lowercase a, circumflex accent\n  140: 234,\n  // lowercase e, circumflex accent\n  141: 238,\n  // lowercase i, circumflex accent\n  142: 244,\n  // lowercase o, circumflex accent\n  143: 251,\n  // lowercase u, circumflex accent\n  // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n  // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F\n  144: 193,\n  // capital letter A with acute\n  145: 201,\n  // capital letter E with acute\n  146: 211,\n  // capital letter O with acute\n  147: 218,\n  // capital letter U with acute\n  148: 220,\n  // capital letter U with diaresis\n  149: 252,\n  // lowercase letter U with diaeresis\n  150: 8216,\n  // opening single quote\n  151: 161,\n  // inverted exclamation mark\n  152: 42,\n  // asterisk\n  153: 8217,\n  // closing single quote\n  154: 9473,\n  // box drawings heavy horizontal\n  155: 169,\n  // copyright sign\n  156: 8480,\n  // Service mark\n  157: 8226,\n  // (round) bullet\n  158: 8220,\n  // Left double quotation mark\n  159: 8221,\n  // Right double quotation mark\n  160: 192,\n  // uppercase A, grave accent\n  161: 194,\n  // uppercase A, circumflex\n  162: 199,\n  // uppercase C with cedilla\n  163: 200,\n  // uppercase E, grave accent\n  164: 202,\n  // uppercase E, circumflex\n  165: 203,\n  // capital letter E with diaresis\n  166: 235,\n  // lowercase letter e with diaresis\n  167: 206,\n  // uppercase I, circumflex\n  168: 207,\n  // uppercase I, with diaresis\n  169: 239,\n  // lowercase i, with diaresis\n  170: 212,\n  // uppercase O, circumflex\n  171: 217,\n  // uppercase U, grave accent\n  172: 249,\n  // lowercase u, grave accent\n  173: 219,\n  // uppercase U, circumflex\n  174: 171,\n  // left-pointing double angle quotation mark\n  175: 187,\n  // right-pointing double angle quotation mark\n  // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n  // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F\n  176: 195,\n  // Uppercase A, tilde\n  177: 227,\n  // Lowercase a, tilde\n  178: 205,\n  // Uppercase I, acute accent\n  179: 204,\n  // Uppercase I, grave accent\n  180: 236,\n  // Lowercase i, grave accent\n  181: 210,\n  // Uppercase O, grave accent\n  182: 242,\n  // Lowercase o, grave accent\n  183: 213,\n  // Uppercase O, tilde\n  184: 245,\n  // Lowercase o, tilde\n  185: 123,\n  // Open curly brace\n  186: 125,\n  // Closing curly brace\n  187: 92,\n  // Backslash\n  188: 94,\n  // Caret\n  189: 95,\n  // Underscore\n  190: 124,\n  // Pipe (vertical line)\n  191: 8764,\n  // Tilde operator\n  192: 196,\n  // Uppercase A, umlaut\n  193: 228,\n  // Lowercase A, umlaut\n  194: 214,\n  // Uppercase O, umlaut\n  195: 246,\n  // Lowercase o, umlaut\n  196: 223,\n  // Esszett (sharp S)\n  197: 165,\n  // Yen symbol\n  198: 164,\n  // Generic currency sign\n  199: 9475,\n  // Box drawings heavy vertical\n  200: 197,\n  // Uppercase A, ring\n  201: 229,\n  // Lowercase A, ring\n  202: 216,\n  // Uppercase O, stroke\n  203: 248,\n  // Lowercase o, strok\n  204: 9487,\n  // Box drawings heavy down and right\n  205: 9491,\n  // Box drawings heavy down and left\n  206: 9495,\n  // Box drawings heavy up and right\n  207: 9499\n  // Box drawings heavy up and left\n};\nvar getCharForByte = (byte) => String.fromCharCode(specialCea608CharsCodes[byte] || byte);\nvar NR_ROWS = 15;\nvar NR_COLS = 100;\nvar rowsLowCh1 = {\n  17: 1,\n  18: 3,\n  21: 5,\n  22: 7,\n  23: 9,\n  16: 11,\n  19: 12,\n  20: 14\n};\nvar rowsHighCh1 = {\n  17: 2,\n  18: 4,\n  21: 6,\n  22: 8,\n  23: 10,\n  19: 13,\n  20: 15\n};\nvar rowsLowCh2 = {\n  25: 1,\n  26: 3,\n  29: 5,\n  30: 7,\n  31: 9,\n  24: 11,\n  27: 12,\n  28: 14\n};\nvar rowsHighCh2 = {\n  25: 2,\n  26: 4,\n  29: 6,\n  30: 8,\n  31: 10,\n  27: 13,\n  28: 15\n};\nvar backgroundColors = [\"white\", \"green\", \"blue\", \"cyan\", \"red\", \"yellow\", \"magenta\", \"black\", \"transparent\"];\nvar CaptionsLogger = class {\n  constructor() {\n    this.time = null;\n    this.verboseLevel = 0;\n  }\n  log(severity, msg) {\n    if (this.verboseLevel >= severity) {\n      const m3 = typeof msg === \"function\" ? msg() : msg;\n      logger.log(`${this.time} [${severity}] ${m3}`);\n    }\n  }\n};\nvar numArrayToHexArray = function numArrayToHexArray2(numArray) {\n  const hexArray = [];\n  for (let j4 = 0; j4 < numArray.length; j4++) {\n    hexArray.push(numArray[j4].toString(16));\n  }\n  return hexArray;\n};\nvar PenState = class {\n  constructor() {\n    this.foreground = \"white\";\n    this.underline = false;\n    this.italics = false;\n    this.background = \"black\";\n    this.flash = false;\n  }\n  reset() {\n    this.foreground = \"white\";\n    this.underline = false;\n    this.italics = false;\n    this.background = \"black\";\n    this.flash = false;\n  }\n  setStyles(styles) {\n    const attribs = [\"foreground\", \"underline\", \"italics\", \"background\", \"flash\"];\n    for (let i2 = 0; i2 < attribs.length; i2++) {\n      const style = attribs[i2];\n      if (styles.hasOwnProperty(style)) {\n        this[style] = styles[style];\n      }\n    }\n  }\n  isDefault() {\n    return this.foreground === \"white\" && !this.underline && !this.italics && this.background === \"black\" && !this.flash;\n  }\n  equals(other) {\n    return this.foreground === other.foreground && this.underline === other.underline && this.italics === other.italics && this.background === other.background && this.flash === other.flash;\n  }\n  copy(newPenState) {\n    this.foreground = newPenState.foreground;\n    this.underline = newPenState.underline;\n    this.italics = newPenState.italics;\n    this.background = newPenState.background;\n    this.flash = newPenState.flash;\n  }\n  toString() {\n    return \"color=\" + this.foreground + \", underline=\" + this.underline + \", italics=\" + this.italics + \", background=\" + this.background + \", flash=\" + this.flash;\n  }\n};\nvar StyledUnicodeChar = class {\n  constructor() {\n    this.uchar = \" \";\n    this.penState = new PenState();\n  }\n  reset() {\n    this.uchar = \" \";\n    this.penState.reset();\n  }\n  setChar(uchar, newPenState) {\n    this.uchar = uchar;\n    this.penState.copy(newPenState);\n  }\n  setPenState(newPenState) {\n    this.penState.copy(newPenState);\n  }\n  equals(other) {\n    return this.uchar === other.uchar && this.penState.equals(other.penState);\n  }\n  copy(newChar) {\n    this.uchar = newChar.uchar;\n    this.penState.copy(newChar.penState);\n  }\n  isEmpty() {\n    return this.uchar === \" \" && this.penState.isDefault();\n  }\n};\nvar Row = class {\n  constructor(logger2) {\n    this.chars = [];\n    this.pos = 0;\n    this.currPenState = new PenState();\n    this.cueStartTime = null;\n    this.logger = void 0;\n    for (let i2 = 0; i2 < NR_COLS; i2++) {\n      this.chars.push(new StyledUnicodeChar());\n    }\n    this.logger = logger2;\n  }\n  equals(other) {\n    for (let i2 = 0; i2 < NR_COLS; i2++) {\n      if (!this.chars[i2].equals(other.chars[i2])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  copy(other) {\n    for (let i2 = 0; i2 < NR_COLS; i2++) {\n      this.chars[i2].copy(other.chars[i2]);\n    }\n  }\n  isEmpty() {\n    let empty = true;\n    for (let i2 = 0; i2 < NR_COLS; i2++) {\n      if (!this.chars[i2].isEmpty()) {\n        empty = false;\n        break;\n      }\n    }\n    return empty;\n  }\n  /**\n   *  Set the cursor to a valid column.\n   */\n  setCursor(absPos) {\n    if (this.pos !== absPos) {\n      this.pos = absPos;\n    }\n    if (this.pos < 0) {\n      this.logger.log(3, \"Negative cursor position \" + this.pos);\n      this.pos = 0;\n    } else if (this.pos > NR_COLS) {\n      this.logger.log(3, \"Too large cursor position \" + this.pos);\n      this.pos = NR_COLS;\n    }\n  }\n  /**\n   * Move the cursor relative to current position.\n   */\n  moveCursor(relPos) {\n    const newPos = this.pos + relPos;\n    if (relPos > 1) {\n      for (let i2 = this.pos + 1; i2 < newPos + 1; i2++) {\n        this.chars[i2].setPenState(this.currPenState);\n      }\n    }\n    this.setCursor(newPos);\n  }\n  /**\n   * Backspace, move one step back and clear character.\n   */\n  backSpace() {\n    this.moveCursor(-1);\n    this.chars[this.pos].setChar(\" \", this.currPenState);\n  }\n  insertChar(byte) {\n    if (byte >= 144) {\n      this.backSpace();\n    }\n    const char = getCharForByte(byte);\n    if (this.pos >= NR_COLS) {\n      this.logger.log(0, () => \"Cannot insert \" + byte.toString(16) + \" (\" + char + \") at position \" + this.pos + \". Skipping it!\");\n      return;\n    }\n    this.chars[this.pos].setChar(char, this.currPenState);\n    this.moveCursor(1);\n  }\n  clearFromPos(startPos) {\n    let i2;\n    for (i2 = startPos; i2 < NR_COLS; i2++) {\n      this.chars[i2].reset();\n    }\n  }\n  clear() {\n    this.clearFromPos(0);\n    this.pos = 0;\n    this.currPenState.reset();\n  }\n  clearToEndOfRow() {\n    this.clearFromPos(this.pos);\n  }\n  getTextString() {\n    const chars = [];\n    let empty = true;\n    for (let i2 = 0; i2 < NR_COLS; i2++) {\n      const char = this.chars[i2].uchar;\n      if (char !== \" \") {\n        empty = false;\n      }\n      chars.push(char);\n    }\n    if (empty) {\n      return \"\";\n    } else {\n      return chars.join(\"\");\n    }\n  }\n  setPenStyles(styles) {\n    this.currPenState.setStyles(styles);\n    const currChar = this.chars[this.pos];\n    currChar.setPenState(this.currPenState);\n  }\n};\nvar CaptionScreen = class {\n  constructor(logger2) {\n    this.rows = [];\n    this.currRow = NR_ROWS - 1;\n    this.nrRollUpRows = null;\n    this.lastOutputScreen = null;\n    this.logger = void 0;\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      this.rows.push(new Row(logger2));\n    }\n    this.logger = logger2;\n  }\n  reset() {\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      this.rows[i2].clear();\n    }\n    this.currRow = NR_ROWS - 1;\n  }\n  equals(other) {\n    let equal = true;\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      if (!this.rows[i2].equals(other.rows[i2])) {\n        equal = false;\n        break;\n      }\n    }\n    return equal;\n  }\n  copy(other) {\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      this.rows[i2].copy(other.rows[i2]);\n    }\n  }\n  isEmpty() {\n    let empty = true;\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      if (!this.rows[i2].isEmpty()) {\n        empty = false;\n        break;\n      }\n    }\n    return empty;\n  }\n  backSpace() {\n    const row = this.rows[this.currRow];\n    row.backSpace();\n  }\n  clearToEndOfRow() {\n    const row = this.rows[this.currRow];\n    row.clearToEndOfRow();\n  }\n  /**\n   * Insert a character (without styling) in the current row.\n   */\n  insertChar(char) {\n    const row = this.rows[this.currRow];\n    row.insertChar(char);\n  }\n  setPen(styles) {\n    const row = this.rows[this.currRow];\n    row.setPenStyles(styles);\n  }\n  moveCursor(relPos) {\n    const row = this.rows[this.currRow];\n    row.moveCursor(relPos);\n  }\n  setCursor(absPos) {\n    this.logger.log(2, \"setCursor: \" + absPos);\n    const row = this.rows[this.currRow];\n    row.setCursor(absPos);\n  }\n  setPAC(pacData) {\n    this.logger.log(2, () => \"pacData = \" + JSON.stringify(pacData));\n    let newRow = pacData.row - 1;\n    if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n      newRow = this.nrRollUpRows - 1;\n    }\n    if (this.nrRollUpRows && this.currRow !== newRow) {\n      for (let i2 = 0; i2 < NR_ROWS; i2++) {\n        this.rows[i2].clear();\n      }\n      const topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n      const lastOutputScreen = this.lastOutputScreen;\n      if (lastOutputScreen) {\n        const prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime;\n        const time = this.logger.time;\n        if (prevLineTime !== null && time !== null && prevLineTime < time) {\n          for (let i2 = 0; i2 < this.nrRollUpRows; i2++) {\n            this.rows[newRow - this.nrRollUpRows + i2 + 1].copy(lastOutputScreen.rows[topRowIndex + i2]);\n          }\n        }\n      }\n    }\n    this.currRow = newRow;\n    const row = this.rows[this.currRow];\n    if (pacData.indent !== null) {\n      const indent = pacData.indent;\n      const prevPos = Math.max(indent - 1, 0);\n      row.setCursor(pacData.indent);\n      pacData.color = row.chars[prevPos].penState.foreground;\n    }\n    const styles = {\n      foreground: pacData.color,\n      underline: pacData.underline,\n      italics: pacData.italics,\n      background: \"black\",\n      flash: false\n    };\n    this.setPen(styles);\n  }\n  /**\n   * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n   */\n  setBkgData(bkgData) {\n    this.logger.log(2, () => \"bkgData = \" + JSON.stringify(bkgData));\n    this.backSpace();\n    this.setPen(bkgData);\n    this.insertChar(32);\n  }\n  setRollUpRows(nrRows) {\n    this.nrRollUpRows = nrRows;\n  }\n  rollUp() {\n    if (this.nrRollUpRows === null) {\n      this.logger.log(3, \"roll_up but nrRollUpRows not set yet\");\n      return;\n    }\n    this.logger.log(1, () => this.getDisplayText());\n    const topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n    const topRow = this.rows.splice(topRowIndex, 1)[0];\n    topRow.clear();\n    this.rows.splice(this.currRow, 0, topRow);\n    this.logger.log(2, \"Rolling up\");\n  }\n  /**\n   * Get all non-empty rows with as unicode text.\n   */\n  getDisplayText(asOneRow) {\n    asOneRow = asOneRow || false;\n    const displayText = [];\n    let text = \"\";\n    let rowNr = -1;\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      const rowText = this.rows[i2].getTextString();\n      if (rowText) {\n        rowNr = i2 + 1;\n        if (asOneRow) {\n          displayText.push(\"Row \" + rowNr + \": '\" + rowText + \"'\");\n        } else {\n          displayText.push(rowText.trim());\n        }\n      }\n    }\n    if (displayText.length > 0) {\n      if (asOneRow) {\n        text = \"[\" + displayText.join(\" | \") + \"]\";\n      } else {\n        text = displayText.join(\"\\n\");\n      }\n    }\n    return text;\n  }\n  getTextAndFormat() {\n    return this.rows;\n  }\n};\nvar Cea608Channel = class {\n  constructor(channelNumber, outputFilter, logger2) {\n    this.chNr = void 0;\n    this.outputFilter = void 0;\n    this.mode = void 0;\n    this.verbose = void 0;\n    this.displayedMemory = void 0;\n    this.nonDisplayedMemory = void 0;\n    this.lastOutputScreen = void 0;\n    this.currRollUpRow = void 0;\n    this.writeScreen = void 0;\n    this.cueStartTime = void 0;\n    this.logger = void 0;\n    this.chNr = channelNumber;\n    this.outputFilter = outputFilter;\n    this.mode = null;\n    this.verbose = 0;\n    this.displayedMemory = new CaptionScreen(logger2);\n    this.nonDisplayedMemory = new CaptionScreen(logger2);\n    this.lastOutputScreen = new CaptionScreen(logger2);\n    this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n    this.writeScreen = this.displayedMemory;\n    this.mode = null;\n    this.cueStartTime = null;\n    this.logger = logger2;\n  }\n  reset() {\n    this.mode = null;\n    this.displayedMemory.reset();\n    this.nonDisplayedMemory.reset();\n    this.lastOutputScreen.reset();\n    this.outputFilter.reset();\n    this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n    this.writeScreen = this.displayedMemory;\n    this.mode = null;\n    this.cueStartTime = null;\n  }\n  getHandler() {\n    return this.outputFilter;\n  }\n  setHandler(newHandler) {\n    this.outputFilter = newHandler;\n  }\n  setPAC(pacData) {\n    this.writeScreen.setPAC(pacData);\n  }\n  setBkgData(bkgData) {\n    this.writeScreen.setBkgData(bkgData);\n  }\n  setMode(newMode) {\n    if (newMode === this.mode) {\n      return;\n    }\n    this.mode = newMode;\n    this.logger.log(2, () => \"MODE=\" + newMode);\n    if (this.mode === \"MODE_POP-ON\") {\n      this.writeScreen = this.nonDisplayedMemory;\n    } else {\n      this.writeScreen = this.displayedMemory;\n      this.writeScreen.reset();\n    }\n    if (this.mode !== \"MODE_ROLL-UP\") {\n      this.displayedMemory.nrRollUpRows = null;\n      this.nonDisplayedMemory.nrRollUpRows = null;\n    }\n    this.mode = newMode;\n  }\n  insertChars(chars) {\n    for (let i2 = 0; i2 < chars.length; i2++) {\n      this.writeScreen.insertChar(chars[i2]);\n    }\n    const screen = this.writeScreen === this.displayedMemory ? \"DISP\" : \"NON_DISP\";\n    this.logger.log(2, () => screen + \": \" + this.writeScreen.getDisplayText(true));\n    if (this.mode === \"MODE_PAINT-ON\" || this.mode === \"MODE_ROLL-UP\") {\n      this.logger.log(1, () => \"DISPLAYED: \" + this.displayedMemory.getDisplayText(true));\n      this.outputDataUpdate();\n    }\n  }\n  ccRCL() {\n    this.logger.log(2, \"RCL - Resume Caption Loading\");\n    this.setMode(\"MODE_POP-ON\");\n  }\n  ccBS() {\n    this.logger.log(2, \"BS - BackSpace\");\n    if (this.mode === \"MODE_TEXT\") {\n      return;\n    }\n    this.writeScreen.backSpace();\n    if (this.writeScreen === this.displayedMemory) {\n      this.outputDataUpdate();\n    }\n  }\n  ccAOF() {\n  }\n  ccAON() {\n  }\n  ccDER() {\n    this.logger.log(2, \"DER- Delete to End of Row\");\n    this.writeScreen.clearToEndOfRow();\n    this.outputDataUpdate();\n  }\n  ccRU(nrRows) {\n    this.logger.log(2, \"RU(\" + nrRows + \") - Roll Up\");\n    this.writeScreen = this.displayedMemory;\n    this.setMode(\"MODE_ROLL-UP\");\n    this.writeScreen.setRollUpRows(nrRows);\n  }\n  ccFON() {\n    this.logger.log(2, \"FON - Flash On\");\n    this.writeScreen.setPen({\n      flash: true\n    });\n  }\n  ccRDC() {\n    this.logger.log(2, \"RDC - Resume Direct Captioning\");\n    this.setMode(\"MODE_PAINT-ON\");\n  }\n  ccTR() {\n    this.logger.log(2, \"TR\");\n    this.setMode(\"MODE_TEXT\");\n  }\n  ccRTD() {\n    this.logger.log(2, \"RTD\");\n    this.setMode(\"MODE_TEXT\");\n  }\n  ccEDM() {\n    this.logger.log(2, \"EDM - Erase Displayed Memory\");\n    this.displayedMemory.reset();\n    this.outputDataUpdate(true);\n  }\n  ccCR() {\n    this.logger.log(2, \"CR - Carriage Return\");\n    this.writeScreen.rollUp();\n    this.outputDataUpdate(true);\n  }\n  ccENM() {\n    this.logger.log(2, \"ENM - Erase Non-displayed Memory\");\n    this.nonDisplayedMemory.reset();\n  }\n  ccEOC() {\n    this.logger.log(2, \"EOC - End Of Caption\");\n    if (this.mode === \"MODE_POP-ON\") {\n      const tmp = this.displayedMemory;\n      this.displayedMemory = this.nonDisplayedMemory;\n      this.nonDisplayedMemory = tmp;\n      this.writeScreen = this.nonDisplayedMemory;\n      this.logger.log(1, () => \"DISP: \" + this.displayedMemory.getDisplayText());\n    }\n    this.outputDataUpdate(true);\n  }\n  ccTO(nrCols) {\n    this.logger.log(2, \"TO(\" + nrCols + \") - Tab Offset\");\n    this.writeScreen.moveCursor(nrCols);\n  }\n  ccMIDROW(secondByte) {\n    const styles = {\n      flash: false\n    };\n    styles.underline = secondByte % 2 === 1;\n    styles.italics = secondByte >= 46;\n    if (!styles.italics) {\n      const colorIndex = Math.floor(secondByte / 2) - 16;\n      const colors = [\"white\", \"green\", \"blue\", \"cyan\", \"red\", \"yellow\", \"magenta\"];\n      styles.foreground = colors[colorIndex];\n    } else {\n      styles.foreground = \"white\";\n    }\n    this.logger.log(2, \"MIDROW: \" + JSON.stringify(styles));\n    this.writeScreen.setPen(styles);\n  }\n  outputDataUpdate(dispatch = false) {\n    const time = this.logger.time;\n    if (time === null) {\n      return;\n    }\n    if (this.outputFilter) {\n      if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) {\n        this.cueStartTime = time;\n      } else {\n        if (!this.displayedMemory.equals(this.lastOutputScreen)) {\n          this.outputFilter.newCue(this.cueStartTime, time, this.lastOutputScreen);\n          if (dispatch && this.outputFilter.dispatchCue) {\n            this.outputFilter.dispatchCue();\n          }\n          this.cueStartTime = this.displayedMemory.isEmpty() ? null : time;\n        }\n      }\n      this.lastOutputScreen.copy(this.displayedMemory);\n    }\n  }\n  cueSplitAtTime(t2) {\n    if (this.outputFilter) {\n      if (!this.displayedMemory.isEmpty()) {\n        if (this.outputFilter.newCue) {\n          this.outputFilter.newCue(this.cueStartTime, t2, this.displayedMemory);\n        }\n        this.cueStartTime = t2;\n      }\n    }\n  }\n};\nvar Cea608Parser = class {\n  constructor(field, out1, out2) {\n    this.channels = void 0;\n    this.currentChannel = 0;\n    this.cmdHistory = createCmdHistory();\n    this.logger = void 0;\n    const logger2 = this.logger = new CaptionsLogger();\n    this.channels = [null, new Cea608Channel(field, out1, logger2), new Cea608Channel(field + 1, out2, logger2)];\n  }\n  getHandler(channel) {\n    return this.channels[channel].getHandler();\n  }\n  setHandler(channel, newHandler) {\n    this.channels[channel].setHandler(newHandler);\n  }\n  /**\n   * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n   */\n  addData(time, byteList) {\n    this.logger.time = time;\n    for (let i2 = 0; i2 < byteList.length; i2 += 2) {\n      const a2 = byteList[i2] & 127;\n      const b4 = byteList[i2 + 1] & 127;\n      let cmdFound = false;\n      let charsFound = null;\n      if (a2 === 0 && b4 === 0) {\n        continue;\n      } else {\n        this.logger.log(3, () => \"[\" + numArrayToHexArray([byteList[i2], byteList[i2 + 1]]) + \"] -> (\" + numArrayToHexArray([a2, b4]) + \")\");\n      }\n      const cmdHistory = this.cmdHistory;\n      const isControlCode = a2 >= 16 && a2 <= 31;\n      if (isControlCode) {\n        if (hasCmdRepeated(a2, b4, cmdHistory)) {\n          setLastCmd(null, null, cmdHistory);\n          this.logger.log(3, () => \"Repeated command (\" + numArrayToHexArray([a2, b4]) + \") is dropped\");\n          continue;\n        }\n        setLastCmd(a2, b4, this.cmdHistory);\n        cmdFound = this.parseCmd(a2, b4);\n        if (!cmdFound) {\n          cmdFound = this.parseMidrow(a2, b4);\n        }\n        if (!cmdFound) {\n          cmdFound = this.parsePAC(a2, b4);\n        }\n        if (!cmdFound) {\n          cmdFound = this.parseBackgroundAttributes(a2, b4);\n        }\n      } else {\n        setLastCmd(null, null, cmdHistory);\n      }\n      if (!cmdFound) {\n        charsFound = this.parseChars(a2, b4);\n        if (charsFound) {\n          const currChNr = this.currentChannel;\n          if (currChNr && currChNr > 0) {\n            const channel = this.channels[currChNr];\n            channel.insertChars(charsFound);\n          } else {\n            this.logger.log(2, \"No channel found yet. TEXT-MODE?\");\n          }\n        }\n      }\n      if (!cmdFound && !charsFound) {\n        this.logger.log(2, () => \"Couldn't parse cleaned data \" + numArrayToHexArray([a2, b4]) + \" orig: \" + numArrayToHexArray([byteList[i2], byteList[i2 + 1]]));\n      }\n    }\n  }\n  /**\n   * Parse Command.\n   * @returns True if a command was found\n   */\n  parseCmd(a2, b4) {\n    const cond1 = (a2 === 20 || a2 === 28 || a2 === 21 || a2 === 29) && b4 >= 32 && b4 <= 47;\n    const cond2 = (a2 === 23 || a2 === 31) && b4 >= 33 && b4 <= 35;\n    if (!(cond1 || cond2)) {\n      return false;\n    }\n    const chNr = a2 === 20 || a2 === 21 || a2 === 23 ? 1 : 2;\n    const channel = this.channels[chNr];\n    if (a2 === 20 || a2 === 21 || a2 === 28 || a2 === 29) {\n      if (b4 === 32) {\n        channel.ccRCL();\n      } else if (b4 === 33) {\n        channel.ccBS();\n      } else if (b4 === 34) {\n        channel.ccAOF();\n      } else if (b4 === 35) {\n        channel.ccAON();\n      } else if (b4 === 36) {\n        channel.ccDER();\n      } else if (b4 === 37) {\n        channel.ccRU(2);\n      } else if (b4 === 38) {\n        channel.ccRU(3);\n      } else if (b4 === 39) {\n        channel.ccRU(4);\n      } else if (b4 === 40) {\n        channel.ccFON();\n      } else if (b4 === 41) {\n        channel.ccRDC();\n      } else if (b4 === 42) {\n        channel.ccTR();\n      } else if (b4 === 43) {\n        channel.ccRTD();\n      } else if (b4 === 44) {\n        channel.ccEDM();\n      } else if (b4 === 45) {\n        channel.ccCR();\n      } else if (b4 === 46) {\n        channel.ccENM();\n      } else if (b4 === 47) {\n        channel.ccEOC();\n      }\n    } else {\n      channel.ccTO(b4 - 32);\n    }\n    this.currentChannel = chNr;\n    return true;\n  }\n  /**\n   * Parse midrow styling command\n   */\n  parseMidrow(a2, b4) {\n    let chNr = 0;\n    if ((a2 === 17 || a2 === 25) && b4 >= 32 && b4 <= 47) {\n      if (a2 === 17) {\n        chNr = 1;\n      } else {\n        chNr = 2;\n      }\n      if (chNr !== this.currentChannel) {\n        this.logger.log(0, \"Mismatch channel in midrow parsing\");\n        return false;\n      }\n      const channel = this.channels[chNr];\n      if (!channel) {\n        return false;\n      }\n      channel.ccMIDROW(b4);\n      this.logger.log(3, () => \"MIDROW (\" + numArrayToHexArray([a2, b4]) + \")\");\n      return true;\n    }\n    return false;\n  }\n  /**\n   * Parse Preable Access Codes (Table 53).\n   * @returns {Boolean} Tells if PAC found\n   */\n  parsePAC(a2, b4) {\n    let row;\n    const case1 = (a2 >= 17 && a2 <= 23 || a2 >= 25 && a2 <= 31) && b4 >= 64 && b4 <= 127;\n    const case2 = (a2 === 16 || a2 === 24) && b4 >= 64 && b4 <= 95;\n    if (!(case1 || case2)) {\n      return false;\n    }\n    const chNr = a2 <= 23 ? 1 : 2;\n    if (b4 >= 64 && b4 <= 95) {\n      row = chNr === 1 ? rowsLowCh1[a2] : rowsLowCh2[a2];\n    } else {\n      row = chNr === 1 ? rowsHighCh1[a2] : rowsHighCh2[a2];\n    }\n    const channel = this.channels[chNr];\n    if (!channel) {\n      return false;\n    }\n    channel.setPAC(this.interpretPAC(row, b4));\n    this.currentChannel = chNr;\n    return true;\n  }\n  /**\n   * Interpret the second byte of the pac, and return the information.\n   * @returns pacData with style parameters\n   */\n  interpretPAC(row, byte) {\n    let pacIndex;\n    const pacData = {\n      color: null,\n      italics: false,\n      indent: null,\n      underline: false,\n      row\n    };\n    if (byte > 95) {\n      pacIndex = byte - 96;\n    } else {\n      pacIndex = byte - 64;\n    }\n    pacData.underline = (pacIndex & 1) === 1;\n    if (pacIndex <= 13) {\n      pacData.color = [\"white\", \"green\", \"blue\", \"cyan\", \"red\", \"yellow\", \"magenta\", \"white\"][Math.floor(pacIndex / 2)];\n    } else if (pacIndex <= 15) {\n      pacData.italics = true;\n      pacData.color = \"white\";\n    } else {\n      pacData.indent = Math.floor((pacIndex - 16) / 2) * 4;\n    }\n    return pacData;\n  }\n  /**\n   * Parse characters.\n   * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n   */\n  parseChars(a2, b4) {\n    let channelNr;\n    let charCodes = null;\n    let charCode1 = null;\n    if (a2 >= 25) {\n      channelNr = 2;\n      charCode1 = a2 - 8;\n    } else {\n      channelNr = 1;\n      charCode1 = a2;\n    }\n    if (charCode1 >= 17 && charCode1 <= 19) {\n      let oneCode;\n      if (charCode1 === 17) {\n        oneCode = b4 + 80;\n      } else if (charCode1 === 18) {\n        oneCode = b4 + 112;\n      } else {\n        oneCode = b4 + 144;\n      }\n      this.logger.log(2, () => \"Special char '\" + getCharForByte(oneCode) + \"' in channel \" + channelNr);\n      charCodes = [oneCode];\n    } else if (a2 >= 32 && a2 <= 127) {\n      charCodes = b4 === 0 ? [a2] : [a2, b4];\n    }\n    if (charCodes) {\n      this.logger.log(3, () => \"Char codes =  \" + numArrayToHexArray(charCodes).join(\",\"));\n    }\n    return charCodes;\n  }\n  /**\n   * Parse extended background attributes as well as new foreground color black.\n   * @returns True if background attributes are found\n   */\n  parseBackgroundAttributes(a2, b4) {\n    const case1 = (a2 === 16 || a2 === 24) && b4 >= 32 && b4 <= 47;\n    const case2 = (a2 === 23 || a2 === 31) && b4 >= 45 && b4 <= 47;\n    if (!(case1 || case2)) {\n      return false;\n    }\n    let index;\n    const bkgData = {};\n    if (a2 === 16 || a2 === 24) {\n      index = Math.floor((b4 - 32) / 2);\n      bkgData.background = backgroundColors[index];\n      if (b4 % 2 === 1) {\n        bkgData.background = bkgData.background + \"_semi\";\n      }\n    } else if (b4 === 45) {\n      bkgData.background = \"transparent\";\n    } else {\n      bkgData.foreground = \"black\";\n      if (b4 === 47) {\n        bkgData.underline = true;\n      }\n    }\n    const chNr = a2 <= 23 ? 1 : 2;\n    const channel = this.channels[chNr];\n    channel.setBkgData(bkgData);\n    return true;\n  }\n  /**\n   * Reset state of parser and its channels.\n   */\n  reset() {\n    for (let i2 = 0; i2 < Object.keys(this.channels).length; i2++) {\n      const channel = this.channels[i2];\n      if (channel) {\n        channel.reset();\n      }\n    }\n    setLastCmd(null, null, this.cmdHistory);\n  }\n  /**\n   * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n   */\n  cueSplitAtTime(t2) {\n    for (let i2 = 0; i2 < this.channels.length; i2++) {\n      const channel = this.channels[i2];\n      if (channel) {\n        channel.cueSplitAtTime(t2);\n      }\n    }\n  }\n};\nfunction setLastCmd(a2, b4, cmdHistory) {\n  cmdHistory.a = a2;\n  cmdHistory.b = b4;\n}\nfunction hasCmdRepeated(a2, b4, cmdHistory) {\n  return cmdHistory.a === a2 && cmdHistory.b === b4;\n}\nfunction createCmdHistory() {\n  return {\n    a: null,\n    b: null\n  };\n}\nvar OutputFilter = class {\n  constructor(timelineController, trackName) {\n    this.timelineController = void 0;\n    this.cueRanges = [];\n    this.trackName = void 0;\n    this.startTime = null;\n    this.endTime = null;\n    this.screen = null;\n    this.timelineController = timelineController;\n    this.trackName = trackName;\n  }\n  dispatchCue() {\n    if (this.startTime === null) {\n      return;\n    }\n    this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges);\n    this.startTime = null;\n  }\n  newCue(startTime, endTime, screen) {\n    if (this.startTime === null || this.startTime > startTime) {\n      this.startTime = startTime;\n    }\n    this.endTime = endTime;\n    this.screen = screen;\n    this.timelineController.createCaptionsTrack(this.trackName);\n  }\n  reset() {\n    this.cueRanges = [];\n    this.startTime = null;\n  }\n};\nvar VTTCue2 = function() {\n  if (optionalSelf != null && optionalSelf.VTTCue) {\n    return self.VTTCue;\n  }\n  const AllowedDirections = [\"\", \"lr\", \"rl\"];\n  const AllowedAlignments = [\"start\", \"middle\", \"end\", \"left\", \"right\"];\n  function isAllowedValue(allowed, value) {\n    if (typeof value !== \"string\") {\n      return false;\n    }\n    if (!Array.isArray(allowed)) {\n      return false;\n    }\n    const lcValue = value.toLowerCase();\n    if (~allowed.indexOf(lcValue)) {\n      return lcValue;\n    }\n    return false;\n  }\n  function findDirectionSetting(value) {\n    return isAllowedValue(AllowedDirections, value);\n  }\n  function findAlignSetting(value) {\n    return isAllowedValue(AllowedAlignments, value);\n  }\n  function extend(obj, ...rest) {\n    let i2 = 1;\n    for (; i2 < arguments.length; i2++) {\n      const cobj = arguments[i2];\n      for (const p3 in cobj) {\n        obj[p3] = cobj[p3];\n      }\n    }\n    return obj;\n  }\n  function VTTCue3(startTime, endTime, text) {\n    const cue = this;\n    const baseObj = {\n      enumerable: true\n    };\n    cue.hasBeenReset = false;\n    let _id2 = \"\";\n    let _pauseOnExit = false;\n    let _startTime2 = startTime;\n    let _endTime = endTime;\n    let _text = text;\n    let _region = null;\n    let _vertical = \"\";\n    let _snapToLines = true;\n    let _line = \"auto\";\n    let _lineAlign = \"start\";\n    let _position = 50;\n    let _positionAlign = \"middle\";\n    let _size = 50;\n    let _align = \"middle\";\n    Object.defineProperty(cue, \"id\", extend({}, baseObj, {\n      get: function() {\n        return _id2;\n      },\n      set: function(value) {\n        _id2 = \"\" + value;\n      }\n    }));\n    Object.defineProperty(cue, \"pauseOnExit\", extend({}, baseObj, {\n      get: function() {\n        return _pauseOnExit;\n      },\n      set: function(value) {\n        _pauseOnExit = !!value;\n      }\n    }));\n    Object.defineProperty(cue, \"startTime\", extend({}, baseObj, {\n      get: function() {\n        return _startTime2;\n      },\n      set: function(value) {\n        if (typeof value !== \"number\") {\n          throw new TypeError(\"Start time must be set to a number.\");\n        }\n        _startTime2 = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"endTime\", extend({}, baseObj, {\n      get: function() {\n        return _endTime;\n      },\n      set: function(value) {\n        if (typeof value !== \"number\") {\n          throw new TypeError(\"End time must be set to a number.\");\n        }\n        _endTime = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"text\", extend({}, baseObj, {\n      get: function() {\n        return _text;\n      },\n      set: function(value) {\n        _text = \"\" + value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"region\", extend({}, baseObj, {\n      get: function() {\n        return _region;\n      },\n      set: function(value) {\n        _region = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"vertical\", extend({}, baseObj, {\n      get: function() {\n        return _vertical;\n      },\n      set: function(value) {\n        const setting = findDirectionSetting(value);\n        if (setting === false) {\n          throw new SyntaxError(\"An invalid or illegal string was specified.\");\n        }\n        _vertical = setting;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"snapToLines\", extend({}, baseObj, {\n      get: function() {\n        return _snapToLines;\n      },\n      set: function(value) {\n        _snapToLines = !!value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"line\", extend({}, baseObj, {\n      get: function() {\n        return _line;\n      },\n      set: function(value) {\n        if (typeof value !== \"number\" && value !== \"auto\") {\n          throw new SyntaxError(\"An invalid number or illegal string was specified.\");\n        }\n        _line = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"lineAlign\", extend({}, baseObj, {\n      get: function() {\n        return _lineAlign;\n      },\n      set: function(value) {\n        const setting = findAlignSetting(value);\n        if (!setting) {\n          throw new SyntaxError(\"An invalid or illegal string was specified.\");\n        }\n        _lineAlign = setting;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"position\", extend({}, baseObj, {\n      get: function() {\n        return _position;\n      },\n      set: function(value) {\n        if (value < 0 || value > 100) {\n          throw new Error(\"Position must be between 0 and 100.\");\n        }\n        _position = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"positionAlign\", extend({}, baseObj, {\n      get: function() {\n        return _positionAlign;\n      },\n      set: function(value) {\n        const setting = findAlignSetting(value);\n        if (!setting) {\n          throw new SyntaxError(\"An invalid or illegal string was specified.\");\n        }\n        _positionAlign = setting;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"size\", extend({}, baseObj, {\n      get: function() {\n        return _size;\n      },\n      set: function(value) {\n        if (value < 0 || value > 100) {\n          throw new Error(\"Size must be between 0 and 100.\");\n        }\n        _size = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"align\", extend({}, baseObj, {\n      get: function() {\n        return _align;\n      },\n      set: function(value) {\n        const setting = findAlignSetting(value);\n        if (!setting) {\n          throw new SyntaxError(\"An invalid or illegal string was specified.\");\n        }\n        _align = setting;\n        this.hasBeenReset = true;\n      }\n    }));\n    cue.displayState = void 0;\n  }\n  VTTCue3.prototype.getCueAsHTML = function() {\n    const WebVTT = self.WebVTT;\n    return WebVTT.convertCueToDOMTree(self, this.text);\n  };\n  return VTTCue3;\n}();\nvar StringDecoder = class {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  decode(data, options) {\n    if (!data) {\n      return \"\";\n    }\n    if (typeof data !== \"string\") {\n      throw new Error(\"Error - expected string data.\");\n    }\n    return decodeURIComponent(encodeURIComponent(data));\n  }\n};\nfunction parseTimeStamp(input) {\n  function computeSeconds(h3, m4, s, f) {\n    return (h3 | 0) * 3600 + (m4 | 0) * 60 + (s | 0) + parseFloat(f || 0);\n  }\n  const m3 = input.match(/^(?:(\\d+):)?(\\d{2}):(\\d{2})(\\.\\d+)?/);\n  if (!m3) {\n    return null;\n  }\n  if (parseFloat(m3[2]) > 59) {\n    return computeSeconds(m3[2], m3[3], 0, m3[4]);\n  }\n  return computeSeconds(m3[1], m3[2], m3[3], m3[4]);\n}\nvar Settings = class {\n  constructor() {\n    this.values = /* @__PURE__ */ Object.create(null);\n  }\n  // Only accept the first assignment to any key.\n  set(k3, v4) {\n    if (!this.get(k3) && v4 !== \"\") {\n      this.values[k3] = v4;\n    }\n  }\n  // Return the value for a key, or a default value.\n  // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n  // a number of possible default values as properties where 'defaultKey' is\n  // the key of the property that will be chosen; otherwise it's assumed to be\n  // a single value.\n  get(k3, dflt, defaultKey) {\n    if (defaultKey) {\n      return this.has(k3) ? this.values[k3] : dflt[defaultKey];\n    }\n    return this.has(k3) ? this.values[k3] : dflt;\n  }\n  // Check whether we have a value for a key.\n  has(k3) {\n    return k3 in this.values;\n  }\n  // Accept a setting if its one of the given alternatives.\n  alt(k3, v4, a2) {\n    for (let n2 = 0; n2 < a2.length; ++n2) {\n      if (v4 === a2[n2]) {\n        this.set(k3, v4);\n        break;\n      }\n    }\n  }\n  // Accept a setting if its a valid (signed) integer.\n  integer(k3, v4) {\n    if (/^-?\\d+$/.test(v4)) {\n      this.set(k3, parseInt(v4, 10));\n    }\n  }\n  // Accept a setting if its a valid percentage.\n  percent(k3, v4) {\n    if (/^([\\d]{1,3})(\\.[\\d]*)?%$/.test(v4)) {\n      const percent = parseFloat(v4);\n      if (percent >= 0 && percent <= 100) {\n        this.set(k3, percent);\n        return true;\n      }\n    }\n    return false;\n  }\n};\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n  const groups = groupDelim ? input.split(groupDelim) : [input];\n  for (const i2 in groups) {\n    if (typeof groups[i2] !== \"string\") {\n      continue;\n    }\n    const kv = groups[i2].split(keyValueDelim);\n    if (kv.length !== 2) {\n      continue;\n    }\n    const k3 = kv[0];\n    const v4 = kv[1];\n    callback(k3, v4);\n  }\n}\nvar defaults = new VTTCue2(0, 0, \"\");\nvar center = defaults.align === \"middle\" ? \"middle\" : \"center\";\nfunction parseCue(input, cue, regionList) {\n  const oInput = input;\n  function consumeTimeStamp() {\n    const ts = parseTimeStamp(input);\n    if (ts === null) {\n      throw new Error(\"Malformed timestamp: \" + oInput);\n    }\n    input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n    return ts;\n  }\n  function consumeCueSettings(input2, cue2) {\n    const settings = new Settings();\n    parseOptions(input2, function(k3, v4) {\n      let vals;\n      switch (k3) {\n        case \"region\":\n          for (let i2 = regionList.length - 1; i2 >= 0; i2--) {\n            if (regionList[i2].id === v4) {\n              settings.set(k3, regionList[i2].region);\n              break;\n            }\n          }\n          break;\n        case \"vertical\":\n          settings.alt(k3, v4, [\"rl\", \"lr\"]);\n          break;\n        case \"line\":\n          vals = v4.split(\",\");\n          settings.integer(k3, vals[0]);\n          if (settings.percent(k3, vals[0])) {\n            settings.set(\"snapToLines\", false);\n          }\n          settings.alt(k3, vals[0], [\"auto\"]);\n          if (vals.length === 2) {\n            settings.alt(\"lineAlign\", vals[1], [\"start\", center, \"end\"]);\n          }\n          break;\n        case \"position\":\n          vals = v4.split(\",\");\n          settings.percent(k3, vals[0]);\n          if (vals.length === 2) {\n            settings.alt(\"positionAlign\", vals[1], [\"start\", center, \"end\", \"line-left\", \"line-right\", \"auto\"]);\n          }\n          break;\n        case \"size\":\n          settings.percent(k3, v4);\n          break;\n        case \"align\":\n          settings.alt(k3, v4, [\"start\", center, \"end\", \"left\", \"right\"]);\n          break;\n      }\n    }, /:/, /\\s/);\n    cue2.region = settings.get(\"region\", null);\n    cue2.vertical = settings.get(\"vertical\", \"\");\n    let line = settings.get(\"line\", \"auto\");\n    if (line === \"auto\" && defaults.line === -1) {\n      line = -1;\n    }\n    cue2.line = line;\n    cue2.lineAlign = settings.get(\"lineAlign\", \"start\");\n    cue2.snapToLines = settings.get(\"snapToLines\", true);\n    cue2.size = settings.get(\"size\", 100);\n    cue2.align = settings.get(\"align\", center);\n    let position = settings.get(\"position\", \"auto\");\n    if (position === \"auto\" && defaults.position === 50) {\n      position = cue2.align === \"start\" || cue2.align === \"left\" ? 0 : cue2.align === \"end\" || cue2.align === \"right\" ? 100 : 50;\n    }\n    cue2.position = position;\n  }\n  function skipWhitespace() {\n    input = input.replace(/^\\s+/, \"\");\n  }\n  skipWhitespace();\n  cue.startTime = consumeTimeStamp();\n  skipWhitespace();\n  if (input.slice(0, 3) !== \"-->\") {\n    throw new Error(\"Malformed time stamp (time stamps must be separated by '-->'): \" + oInput);\n  }\n  input = input.slice(3);\n  skipWhitespace();\n  cue.endTime = consumeTimeStamp();\n  skipWhitespace();\n  consumeCueSettings(input, cue);\n}\nfunction fixLineBreaks(input) {\n  return input.replace(/<br(?: \\/)?>/gi, \"\\n\");\n}\nvar VTTParser = class {\n  constructor() {\n    this.state = \"INITIAL\";\n    this.buffer = \"\";\n    this.decoder = new StringDecoder();\n    this.regionList = [];\n    this.cue = null;\n    this.oncue = void 0;\n    this.onparsingerror = void 0;\n    this.onflush = void 0;\n  }\n  parse(data) {\n    const _this = this;\n    if (data) {\n      _this.buffer += _this.decoder.decode(data, {\n        stream: true\n      });\n    }\n    function collectNextLine() {\n      let buffer = _this.buffer;\n      let pos = 0;\n      buffer = fixLineBreaks(buffer);\n      while (pos < buffer.length && buffer[pos] !== \"\\r\" && buffer[pos] !== \"\\n\") {\n        ++pos;\n      }\n      const line = buffer.slice(0, pos);\n      if (buffer[pos] === \"\\r\") {\n        ++pos;\n      }\n      if (buffer[pos] === \"\\n\") {\n        ++pos;\n      }\n      _this.buffer = buffer.slice(pos);\n      return line;\n    }\n    function parseHeader2(input) {\n      parseOptions(input, function(k3, v4) {\n      }, /:/);\n    }\n    try {\n      let line = \"\";\n      if (_this.state === \"INITIAL\") {\n        if (!/\\r\\n|\\n/.test(_this.buffer)) {\n          return this;\n        }\n        line = collectNextLine();\n        const m3 = line.match(/^(ï»¿)?WEBVTT([ \\t].*)?$/);\n        if (!(m3 != null && m3[0])) {\n          throw new Error(\"Malformed WebVTT signature.\");\n        }\n        _this.state = \"HEADER\";\n      }\n      let alreadyCollectedLine = false;\n      while (_this.buffer) {\n        if (!/\\r\\n|\\n/.test(_this.buffer)) {\n          return this;\n        }\n        if (!alreadyCollectedLine) {\n          line = collectNextLine();\n        } else {\n          alreadyCollectedLine = false;\n        }\n        switch (_this.state) {\n          case \"HEADER\":\n            if (/:/.test(line)) {\n              parseHeader2(line);\n            } else if (!line) {\n              _this.state = \"ID\";\n            }\n            continue;\n          case \"NOTE\":\n            if (!line) {\n              _this.state = \"ID\";\n            }\n            continue;\n          case \"ID\":\n            if (/^NOTE($|[ \\t])/.test(line)) {\n              _this.state = \"NOTE\";\n              break;\n            }\n            if (!line) {\n              continue;\n            }\n            _this.cue = new VTTCue2(0, 0, \"\");\n            _this.state = \"CUE\";\n            if (line.indexOf(\"-->\") === -1) {\n              _this.cue.id = line;\n              continue;\n            }\n          // Process line as start of a cue.\n          /* falls through */\n          case \"CUE\":\n            if (!_this.cue) {\n              _this.state = \"BADCUE\";\n              continue;\n            }\n            try {\n              parseCue(line, _this.cue, _this.regionList);\n            } catch (e) {\n              _this.cue = null;\n              _this.state = \"BADCUE\";\n              continue;\n            }\n            _this.state = \"CUETEXT\";\n            continue;\n          case \"CUETEXT\":\n            {\n              const hasSubstring = line.indexOf(\"-->\") !== -1;\n              if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n                if (_this.oncue && _this.cue) {\n                  _this.oncue(_this.cue);\n                }\n                _this.cue = null;\n                _this.state = \"ID\";\n                continue;\n              }\n              if (_this.cue === null) {\n                continue;\n              }\n              if (_this.cue.text) {\n                _this.cue.text += \"\\n\";\n              }\n              _this.cue.text += line;\n            }\n            continue;\n          case \"BADCUE\":\n            if (!line) {\n              _this.state = \"ID\";\n            }\n        }\n      }\n    } catch (e) {\n      if (_this.state === \"CUETEXT\" && _this.cue && _this.oncue) {\n        _this.oncue(_this.cue);\n      }\n      _this.cue = null;\n      _this.state = _this.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n    }\n    return this;\n  }\n  flush() {\n    const _this = this;\n    try {\n      if (_this.cue || _this.state === \"HEADER\") {\n        _this.buffer += \"\\n\\n\";\n        _this.parse();\n      }\n      if (_this.state === \"INITIAL\" || _this.state === \"BADWEBVTT\") {\n        throw new Error(\"Malformed WebVTT signature.\");\n      }\n    } catch (e) {\n      if (_this.onparsingerror) {\n        _this.onparsingerror(e);\n      }\n    }\n    if (_this.onflush) {\n      _this.onflush();\n    }\n    return this;\n  }\n};\nvar LINEBREAKS = /\\r\\n|\\n\\r|\\n|\\r/g;\nvar startsWith = function startsWith2(inputString, searchString, position = 0) {\n  return inputString.slice(position, position + searchString.length) === searchString;\n};\nvar cueString2millis = function cueString2millis2(timeString) {\n  let ts = parseInt(timeString.slice(-3));\n  const secs = parseInt(timeString.slice(-6, -4));\n  const mins = parseInt(timeString.slice(-9, -7));\n  const hours = timeString.length > 9 ? parseInt(timeString.substring(0, timeString.indexOf(\":\"))) : 0;\n  if (!isFiniteNumber(ts) || !isFiniteNumber(secs) || !isFiniteNumber(mins) || !isFiniteNumber(hours)) {\n    throw Error(`Malformed X-TIMESTAMP-MAP: Local:${timeString}`);\n  }\n  ts += 1e3 * secs;\n  ts += 60 * 1e3 * mins;\n  ts += 60 * 60 * 1e3 * hours;\n  return ts;\n};\nvar hash = function hash2(text) {\n  let _hash = 5381;\n  let i2 = text.length;\n  while (i2) {\n    _hash = _hash * 33 ^ text.charCodeAt(--i2);\n  }\n  return (_hash >>> 0).toString();\n};\nfunction generateCueId(startTime, endTime, text) {\n  return hash(startTime.toString()) + hash(endTime.toString()) + hash(text);\n}\nvar calculateOffset = function calculateOffset2(vttCCs, cc, presentationTime) {\n  let currCC = vttCCs[cc];\n  let prevCC = vttCCs[currCC.prevCC];\n  if (!prevCC || !prevCC.new && currCC.new) {\n    vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start;\n    currCC.new = false;\n    return;\n  }\n  while ((_prevCC = prevCC) != null && _prevCC.new) {\n    var _prevCC;\n    vttCCs.ccOffset += currCC.start - prevCC.start;\n    currCC.new = false;\n    currCC = prevCC;\n    prevCC = vttCCs[currCC.prevCC];\n  }\n  vttCCs.presentationOffset = presentationTime;\n};\nfunction parseWebVTT(vttByteArray, initPTS, vttCCs, cc, timeOffset, callBack, errorCallBack) {\n  const parser = new VTTParser();\n  const vttLines = utf8ArrayToStr(new Uint8Array(vttByteArray)).trim().replace(LINEBREAKS, \"\\n\").split(\"\\n\");\n  const cues = [];\n  const init90kHz = initPTS ? toMpegTsClockFromTimescale(initPTS.baseTime, initPTS.timescale) : 0;\n  let cueTime = \"00:00.000\";\n  let timestampMapMPEGTS = 0;\n  let timestampMapLOCAL = 0;\n  let parsingError;\n  let inHeader = true;\n  parser.oncue = function(cue) {\n    const currCC = vttCCs[cc];\n    let cueOffset = vttCCs.ccOffset;\n    const webVttMpegTsMapOffset = (timestampMapMPEGTS - init90kHz) / 9e4;\n    if (currCC != null && currCC.new) {\n      if (timestampMapLOCAL !== void 0) {\n        cueOffset = vttCCs.ccOffset = currCC.start;\n      } else {\n        calculateOffset(vttCCs, cc, webVttMpegTsMapOffset);\n      }\n    }\n    if (webVttMpegTsMapOffset) {\n      if (!initPTS) {\n        parsingError = new Error(\"Missing initPTS for VTT MPEGTS\");\n        return;\n      }\n      cueOffset = webVttMpegTsMapOffset - vttCCs.presentationOffset;\n    }\n    const duration = cue.endTime - cue.startTime;\n    const startTime = normalizePts((cue.startTime + cueOffset - timestampMapLOCAL) * 9e4, timeOffset * 9e4) / 9e4;\n    cue.startTime = Math.max(startTime, 0);\n    cue.endTime = Math.max(startTime + duration, 0);\n    const text = cue.text.trim();\n    cue.text = decodeURIComponent(encodeURIComponent(text));\n    if (!cue.id) {\n      cue.id = generateCueId(cue.startTime, cue.endTime, text);\n    }\n    if (cue.endTime > 0) {\n      cues.push(cue);\n    }\n  };\n  parser.onparsingerror = function(error) {\n    parsingError = error;\n  };\n  parser.onflush = function() {\n    if (parsingError) {\n      errorCallBack(parsingError);\n      return;\n    }\n    callBack(cues);\n  };\n  vttLines.forEach((line) => {\n    if (inHeader) {\n      if (startsWith(line, \"X-TIMESTAMP-MAP=\")) {\n        inHeader = false;\n        line.slice(16).split(\",\").forEach((timestamp) => {\n          if (startsWith(timestamp, \"LOCAL:\")) {\n            cueTime = timestamp.slice(6);\n          } else if (startsWith(timestamp, \"MPEGTS:\")) {\n            timestampMapMPEGTS = parseInt(timestamp.slice(7));\n          }\n        });\n        try {\n          timestampMapLOCAL = cueString2millis(cueTime) / 1e3;\n        } catch (error) {\n          parsingError = error;\n        }\n        return;\n      } else if (line === \"\") {\n        inHeader = false;\n      }\n    }\n    parser.parse(line + \"\\n\");\n  });\n  parser.flush();\n}\nvar IMSC1_CODEC = \"stpp.ttml.im1t\";\nvar HMSF_REGEX = /^(\\d{2,}):(\\d{2}):(\\d{2}):(\\d{2})\\.?(\\d+)?$/;\nvar TIME_UNIT_REGEX = /^(\\d*(?:\\.\\d*)?)(h|m|s|ms|f|t)$/;\nvar textAlignToLineAlign = {\n  left: \"start\",\n  center: \"center\",\n  right: \"end\",\n  start: \"start\",\n  end: \"end\"\n};\nfunction parseIMSC1(payload, initPTS, callBack, errorCallBack) {\n  const results = findBox(new Uint8Array(payload), [\"mdat\"]);\n  if (results.length === 0) {\n    errorCallBack(new Error(\"Could not parse IMSC1 mdat\"));\n    return;\n  }\n  const ttmlList = results.map((mdat) => utf8ArrayToStr(mdat));\n  const syncTime = toTimescaleFromScale(initPTS.baseTime, 1, initPTS.timescale);\n  try {\n    ttmlList.forEach((ttml) => callBack(parseTTML(ttml, syncTime)));\n  } catch (error) {\n    errorCallBack(error);\n  }\n}\nfunction parseTTML(ttml, syncTime) {\n  const parser = new DOMParser();\n  const xmlDoc = parser.parseFromString(ttml, \"text/xml\");\n  const tt4 = xmlDoc.getElementsByTagName(\"tt\")[0];\n  if (!tt4) {\n    throw new Error(\"Invalid ttml\");\n  }\n  const defaultRateInfo = {\n    frameRate: 30,\n    subFrameRate: 1,\n    frameRateMultiplier: 0,\n    tickRate: 0\n  };\n  const rateInfo = Object.keys(defaultRateInfo).reduce((result, key) => {\n    result[key] = tt4.getAttribute(`ttp:${key}`) || defaultRateInfo[key];\n    return result;\n  }, {});\n  const trim = tt4.getAttribute(\"xml:space\") !== \"preserve\";\n  const styleElements = collectionToDictionary(getElementCollection(tt4, \"styling\", \"style\"));\n  const regionElements = collectionToDictionary(getElementCollection(tt4, \"layout\", \"region\"));\n  const cueElements = getElementCollection(tt4, \"body\", \"[begin]\");\n  return [].map.call(cueElements, (cueElement) => {\n    const cueText = getTextContent(cueElement, trim);\n    if (!cueText || !cueElement.hasAttribute(\"begin\")) {\n      return null;\n    }\n    const startTime = parseTtmlTime(cueElement.getAttribute(\"begin\"), rateInfo);\n    const duration = parseTtmlTime(cueElement.getAttribute(\"dur\"), rateInfo);\n    let endTime = parseTtmlTime(cueElement.getAttribute(\"end\"), rateInfo);\n    if (startTime === null) {\n      throw timestampParsingError(cueElement);\n    }\n    if (endTime === null) {\n      if (duration === null) {\n        throw timestampParsingError(cueElement);\n      }\n      endTime = startTime + duration;\n    }\n    const cue = new VTTCue2(startTime - syncTime, endTime - syncTime, cueText);\n    cue.id = generateCueId(cue.startTime, cue.endTime, cue.text);\n    const region = regionElements[cueElement.getAttribute(\"region\")];\n    const style = styleElements[cueElement.getAttribute(\"style\")];\n    const styles = getTtmlStyles(region, style, styleElements);\n    const {\n      textAlign\n    } = styles;\n    if (textAlign) {\n      const lineAlign = textAlignToLineAlign[textAlign];\n      if (lineAlign) {\n        cue.lineAlign = lineAlign;\n      }\n      cue.align = textAlign;\n    }\n    _extends(cue, styles);\n    return cue;\n  }).filter((cue) => cue !== null);\n}\nfunction getElementCollection(fromElement, parentName, childName) {\n  const parent = fromElement.getElementsByTagName(parentName)[0];\n  if (parent) {\n    return [].slice.call(parent.querySelectorAll(childName));\n  }\n  return [];\n}\nfunction collectionToDictionary(elementsWithId) {\n  return elementsWithId.reduce((dict, element) => {\n    const id = element.getAttribute(\"xml:id\");\n    if (id) {\n      dict[id] = element;\n    }\n    return dict;\n  }, {});\n}\nfunction getTextContent(element, trim) {\n  return [].slice.call(element.childNodes).reduce((str, node, i2) => {\n    var _node$childNodes;\n    if (node.nodeName === \"br\" && i2) {\n      return str + \"\\n\";\n    }\n    if ((_node$childNodes = node.childNodes) != null && _node$childNodes.length) {\n      return getTextContent(node, trim);\n    } else if (trim) {\n      return str + node.textContent.trim().replace(/\\s+/g, \" \");\n    }\n    return str + node.textContent;\n  }, \"\");\n}\nfunction getTtmlStyles(region, style, styleElements) {\n  const ttsNs = \"http://www.w3.org/ns/ttml#styling\";\n  let regionStyle = null;\n  const styleAttributes = [\n    \"displayAlign\",\n    \"textAlign\",\n    \"color\",\n    \"backgroundColor\",\n    \"fontSize\",\n    \"fontFamily\"\n    // 'fontWeight',\n    // 'lineHeight',\n    // 'wrapOption',\n    // 'fontStyle',\n    // 'direction',\n    // 'writingMode'\n  ];\n  const regionStyleName = region != null && region.hasAttribute(\"style\") ? region.getAttribute(\"style\") : null;\n  if (regionStyleName && styleElements.hasOwnProperty(regionStyleName)) {\n    regionStyle = styleElements[regionStyleName];\n  }\n  return styleAttributes.reduce((styles, name) => {\n    const value = getAttributeNS(style, ttsNs, name) || getAttributeNS(region, ttsNs, name) || getAttributeNS(regionStyle, ttsNs, name);\n    if (value) {\n      styles[name] = value;\n    }\n    return styles;\n  }, {});\n}\nfunction getAttributeNS(element, ns, name) {\n  if (!element) {\n    return null;\n  }\n  return element.hasAttributeNS(ns, name) ? element.getAttributeNS(ns, name) : null;\n}\nfunction timestampParsingError(node) {\n  return new Error(`Could not parse ttml timestamp ${node}`);\n}\nfunction parseTtmlTime(timeAttributeValue, rateInfo) {\n  if (!timeAttributeValue) {\n    return null;\n  }\n  let seconds = parseTimeStamp(timeAttributeValue);\n  if (seconds === null) {\n    if (HMSF_REGEX.test(timeAttributeValue)) {\n      seconds = parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo);\n    } else if (TIME_UNIT_REGEX.test(timeAttributeValue)) {\n      seconds = parseTimeUnits(timeAttributeValue, rateInfo);\n    }\n  }\n  return seconds;\n}\nfunction parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo) {\n  const m3 = HMSF_REGEX.exec(timeAttributeValue);\n  const frames = (m3[4] | 0) + (m3[5] | 0) / rateInfo.subFrameRate;\n  return (m3[1] | 0) * 3600 + (m3[2] | 0) * 60 + (m3[3] | 0) + frames / rateInfo.frameRate;\n}\nfunction parseTimeUnits(timeAttributeValue, rateInfo) {\n  const m3 = TIME_UNIT_REGEX.exec(timeAttributeValue);\n  const value = Number(m3[1]);\n  const unit = m3[2];\n  switch (unit) {\n    case \"h\":\n      return value * 3600;\n    case \"m\":\n      return value * 60;\n    case \"ms\":\n      return value * 1e3;\n    case \"f\":\n      return value / rateInfo.frameRate;\n    case \"t\":\n      return value / rateInfo.tickRate;\n  }\n  return value;\n}\nvar TimelineController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.media = null;\n    this.config = void 0;\n    this.enabled = true;\n    this.Cues = void 0;\n    this.textTracks = [];\n    this.tracks = [];\n    this.initPTS = [];\n    this.unparsedVttFrags = [];\n    this.captionsTracks = {};\n    this.nonNativeCaptionsTracks = {};\n    this.cea608Parser1 = void 0;\n    this.cea608Parser2 = void 0;\n    this.lastCc = -1;\n    this.lastSn = -1;\n    this.lastPartIndex = -1;\n    this.prevCC = -1;\n    this.vttCCs = newVTTCCs();\n    this.captionsProperties = void 0;\n    this.hls = hls;\n    this.config = hls.config;\n    this.Cues = hls.config.cueHandler;\n    this.captionsProperties = {\n      textTrack1: {\n        label: this.config.captionsTextTrack1Label,\n        languageCode: this.config.captionsTextTrack1LanguageCode\n      },\n      textTrack2: {\n        label: this.config.captionsTextTrack2Label,\n        languageCode: this.config.captionsTextTrack2LanguageCode\n      },\n      textTrack3: {\n        label: this.config.captionsTextTrack3Label,\n        languageCode: this.config.captionsTextTrack3LanguageCode\n      },\n      textTrack4: {\n        label: this.config.captionsTextTrack4Label,\n        languageCode: this.config.captionsTextTrack4LanguageCode\n      }\n    };\n    hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.on(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.on(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n    hls.on(Events.FRAG_DECRYPTED, this.onFragDecrypted, this);\n    hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.on(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n  }\n  destroy() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.off(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.off(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n    hls.off(Events.FRAG_DECRYPTED, this.onFragDecrypted, this);\n    hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.off(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    this.hls = this.config = null;\n    this.cea608Parser1 = this.cea608Parser2 = void 0;\n  }\n  initCea608Parsers() {\n    if (this.config.enableCEA708Captions && (!this.cea608Parser1 || !this.cea608Parser2)) {\n      const channel1 = new OutputFilter(this, \"textTrack1\");\n      const channel2 = new OutputFilter(this, \"textTrack2\");\n      const channel3 = new OutputFilter(this, \"textTrack3\");\n      const channel4 = new OutputFilter(this, \"textTrack4\");\n      this.cea608Parser1 = new Cea608Parser(1, channel1, channel2);\n      this.cea608Parser2 = new Cea608Parser(3, channel3, channel4);\n    }\n  }\n  addCues(trackName, startTime, endTime, screen, cueRanges) {\n    let merged = false;\n    for (let i2 = cueRanges.length; i2--; ) {\n      const cueRange = cueRanges[i2];\n      const overlap = intersection(cueRange[0], cueRange[1], startTime, endTime);\n      if (overlap >= 0) {\n        cueRange[0] = Math.min(cueRange[0], startTime);\n        cueRange[1] = Math.max(cueRange[1], endTime);\n        merged = true;\n        if (overlap / (endTime - startTime) > 0.5) {\n          return;\n        }\n      }\n    }\n    if (!merged) {\n      cueRanges.push([startTime, endTime]);\n    }\n    if (this.config.renderTextTracksNatively) {\n      const track = this.captionsTracks[trackName];\n      this.Cues.newCue(track, startTime, endTime, screen);\n    } else {\n      const cues = this.Cues.newCue(null, startTime, endTime, screen);\n      this.hls.trigger(Events.CUES_PARSED, {\n        type: \"captions\",\n        cues,\n        track: trackName\n      });\n    }\n  }\n  // Triggered when an initial PTS is found; used for synchronisation of WebVTT.\n  onInitPtsFound(event, {\n    frag,\n    id,\n    initPTS,\n    timescale\n  }) {\n    const {\n      unparsedVttFrags\n    } = this;\n    if (id === \"main\") {\n      this.initPTS[frag.cc] = {\n        baseTime: initPTS,\n        timescale\n      };\n    }\n    if (unparsedVttFrags.length) {\n      this.unparsedVttFrags = [];\n      unparsedVttFrags.forEach((frag2) => {\n        this.onFragLoaded(Events.FRAG_LOADED, frag2);\n      });\n    }\n  }\n  getExistingTrack(label, language) {\n    const {\n      media\n    } = this;\n    if (media) {\n      for (let i2 = 0; i2 < media.textTracks.length; i2++) {\n        const textTrack = media.textTracks[i2];\n        if (canReuseVttTextTrack(textTrack, {\n          name: label,\n          lang: language,\n          attrs: {}\n        })) {\n          return textTrack;\n        }\n      }\n    }\n    return null;\n  }\n  createCaptionsTrack(trackName) {\n    if (this.config.renderTextTracksNatively) {\n      this.createNativeTrack(trackName);\n    } else {\n      this.createNonNativeTrack(trackName);\n    }\n  }\n  createNativeTrack(trackName) {\n    if (this.captionsTracks[trackName]) {\n      return;\n    }\n    const {\n      captionsProperties,\n      captionsTracks,\n      media\n    } = this;\n    const {\n      label,\n      languageCode\n    } = captionsProperties[trackName];\n    const existingTrack = this.getExistingTrack(label, languageCode);\n    if (!existingTrack) {\n      const textTrack = this.createTextTrack(\"captions\", label, languageCode);\n      if (textTrack) {\n        textTrack[trackName] = true;\n        captionsTracks[trackName] = textTrack;\n      }\n    } else {\n      captionsTracks[trackName] = existingTrack;\n      clearCurrentCues(captionsTracks[trackName]);\n      sendAddTrackEvent(captionsTracks[trackName], media);\n    }\n  }\n  createNonNativeTrack(trackName) {\n    if (this.nonNativeCaptionsTracks[trackName]) {\n      return;\n    }\n    const trackProperties = this.captionsProperties[trackName];\n    if (!trackProperties) {\n      return;\n    }\n    const label = trackProperties.label;\n    const track = {\n      _id: trackName,\n      label,\n      kind: \"captions\",\n      default: trackProperties.media ? !!trackProperties.media.default : false,\n      closedCaptions: trackProperties.media\n    };\n    this.nonNativeCaptionsTracks[trackName] = track;\n    this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, {\n      tracks: [track]\n    });\n  }\n  createTextTrack(kind, label, lang) {\n    const media = this.media;\n    if (!media) {\n      return;\n    }\n    return media.addTextTrack(kind, label, lang);\n  }\n  onMediaAttaching(event, data) {\n    this.media = data.media;\n    this._cleanTracks();\n  }\n  onMediaDetaching() {\n    const {\n      captionsTracks\n    } = this;\n    Object.keys(captionsTracks).forEach((trackName) => {\n      clearCurrentCues(captionsTracks[trackName]);\n      delete captionsTracks[trackName];\n    });\n    this.nonNativeCaptionsTracks = {};\n  }\n  onManifestLoading() {\n    this.lastCc = -1;\n    this.lastSn = -1;\n    this.lastPartIndex = -1;\n    this.prevCC = -1;\n    this.vttCCs = newVTTCCs();\n    this._cleanTracks();\n    this.tracks = [];\n    this.captionsTracks = {};\n    this.nonNativeCaptionsTracks = {};\n    this.textTracks = [];\n    this.unparsedVttFrags = [];\n    this.initPTS = [];\n    if (this.cea608Parser1 && this.cea608Parser2) {\n      this.cea608Parser1.reset();\n      this.cea608Parser2.reset();\n    }\n  }\n  _cleanTracks() {\n    const {\n      media\n    } = this;\n    if (!media) {\n      return;\n    }\n    const textTracks = media.textTracks;\n    if (textTracks) {\n      for (let i2 = 0; i2 < textTracks.length; i2++) {\n        clearCurrentCues(textTracks[i2]);\n      }\n    }\n  }\n  onSubtitleTracksUpdated(event, data) {\n    const tracks = data.subtitleTracks || [];\n    const hasIMSC1 = tracks.some((track) => track.textCodec === IMSC1_CODEC);\n    if (this.config.enableWebVTT || hasIMSC1 && this.config.enableIMSC1) {\n      const listIsIdentical = subtitleOptionsIdentical(this.tracks, tracks);\n      if (listIsIdentical) {\n        this.tracks = tracks;\n        return;\n      }\n      this.textTracks = [];\n      this.tracks = tracks;\n      if (this.config.renderTextTracksNatively) {\n        const media = this.media;\n        const inUseTracks = media ? filterSubtitleTracks(media.textTracks) : null;\n        this.tracks.forEach((track, index) => {\n          let textTrack;\n          if (inUseTracks) {\n            let inUseTrack = null;\n            for (let i2 = 0; i2 < inUseTracks.length; i2++) {\n              if (inUseTracks[i2] && canReuseVttTextTrack(inUseTracks[i2], track)) {\n                inUseTrack = inUseTracks[i2];\n                inUseTracks[i2] = null;\n                break;\n              }\n            }\n            if (inUseTrack) {\n              textTrack = inUseTrack;\n            }\n          }\n          if (textTrack) {\n            clearCurrentCues(textTrack);\n          } else {\n            const textTrackKind = captionsOrSubtitlesFromCharacteristics(track);\n            textTrack = this.createTextTrack(textTrackKind, track.name, track.lang);\n            if (textTrack) {\n              textTrack.mode = \"disabled\";\n            }\n          }\n          if (textTrack) {\n            this.textTracks.push(textTrack);\n          }\n        });\n        if (inUseTracks != null && inUseTracks.length) {\n          const unusedTextTracks = inUseTracks.filter((t2) => t2 !== null).map((t2) => t2.label);\n          if (unusedTextTracks.length) {\n            logger.warn(`Media element contains unused subtitle tracks: ${unusedTextTracks.join(\", \")}. Replace media element for each source to clear TextTracks and captions menu.`);\n          }\n        }\n      } else if (this.tracks.length) {\n        const tracksList = this.tracks.map((track) => {\n          return {\n            label: track.name,\n            kind: track.type.toLowerCase(),\n            default: track.default,\n            subtitleTrack: track\n          };\n        });\n        this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, {\n          tracks: tracksList\n        });\n      }\n    }\n  }\n  onManifestLoaded(event, data) {\n    if (this.config.enableCEA708Captions && data.captions) {\n      data.captions.forEach((captionsTrack) => {\n        const instreamIdMatch = /(?:CC|SERVICE)([1-4])/.exec(captionsTrack.instreamId);\n        if (!instreamIdMatch) {\n          return;\n        }\n        const trackName = `textTrack${instreamIdMatch[1]}`;\n        const trackProperties = this.captionsProperties[trackName];\n        if (!trackProperties) {\n          return;\n        }\n        trackProperties.label = captionsTrack.name;\n        if (captionsTrack.lang) {\n          trackProperties.languageCode = captionsTrack.lang;\n        }\n        trackProperties.media = captionsTrack;\n      });\n    }\n  }\n  closedCaptionsForLevel(frag) {\n    const level = this.hls.levels[frag.level];\n    return level == null ? void 0 : level.attrs[\"CLOSED-CAPTIONS\"];\n  }\n  onFragLoading(event, data) {\n    if (this.enabled && data.frag.type === PlaylistLevelType.MAIN) {\n      var _data$part$index, _data$part;\n      const {\n        cea608Parser1,\n        cea608Parser2,\n        lastSn\n      } = this;\n      const {\n        cc,\n        sn\n      } = data.frag;\n      const partIndex = (_data$part$index = (_data$part = data.part) == null ? void 0 : _data$part.index) != null ? _data$part$index : -1;\n      if (cea608Parser1 && cea608Parser2) {\n        if (sn !== lastSn + 1 || sn === lastSn && partIndex !== this.lastPartIndex + 1 || cc !== this.lastCc) {\n          cea608Parser1.reset();\n          cea608Parser2.reset();\n        }\n      }\n      this.lastCc = cc;\n      this.lastSn = sn;\n      this.lastPartIndex = partIndex;\n    }\n  }\n  onFragLoaded(event, data) {\n    const {\n      frag,\n      payload\n    } = data;\n    if (frag.type === PlaylistLevelType.SUBTITLE) {\n      if (payload.byteLength) {\n        const decryptData = frag.decryptdata;\n        const decrypted = \"stats\" in data;\n        if (decryptData == null || !decryptData.encrypted || decrypted) {\n          const trackPlaylistMedia = this.tracks[frag.level];\n          const vttCCs = this.vttCCs;\n          if (!vttCCs[frag.cc]) {\n            vttCCs[frag.cc] = {\n              start: frag.start,\n              prevCC: this.prevCC,\n              new: true\n            };\n            this.prevCC = frag.cc;\n          }\n          if (trackPlaylistMedia && trackPlaylistMedia.textCodec === IMSC1_CODEC) {\n            this._parseIMSC1(frag, payload);\n          } else {\n            this._parseVTTs(data);\n          }\n        }\n      } else {\n        this.hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n          success: false,\n          frag,\n          error: new Error(\"Empty subtitle payload\")\n        });\n      }\n    }\n  }\n  _parseIMSC1(frag, payload) {\n    const hls = this.hls;\n    parseIMSC1(payload, this.initPTS[frag.cc], (cues) => {\n      this._appendCues(cues, frag.level);\n      hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n        success: true,\n        frag\n      });\n    }, (error) => {\n      logger.log(`Failed to parse IMSC1: ${error}`);\n      hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n        success: false,\n        frag,\n        error\n      });\n    });\n  }\n  _parseVTTs(data) {\n    var _frag$initSegment;\n    const {\n      frag,\n      payload\n    } = data;\n    const {\n      initPTS,\n      unparsedVttFrags\n    } = this;\n    const maxAvCC = initPTS.length - 1;\n    if (!initPTS[frag.cc] && maxAvCC === -1) {\n      unparsedVttFrags.push(data);\n      return;\n    }\n    const hls = this.hls;\n    const payloadWebVTT = (_frag$initSegment = frag.initSegment) != null && _frag$initSegment.data ? appendUint8Array(frag.initSegment.data, new Uint8Array(payload)) : payload;\n    parseWebVTT(payloadWebVTT, this.initPTS[frag.cc], this.vttCCs, frag.cc, frag.start, (cues) => {\n      this._appendCues(cues, frag.level);\n      hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n        success: true,\n        frag\n      });\n    }, (error) => {\n      const missingInitPTS = error.message === \"Missing initPTS for VTT MPEGTS\";\n      if (missingInitPTS) {\n        unparsedVttFrags.push(data);\n      } else {\n        this._fallbackToIMSC1(frag, payload);\n      }\n      logger.log(`Failed to parse VTT cue: ${error}`);\n      if (missingInitPTS && maxAvCC > frag.cc) {\n        return;\n      }\n      hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n        success: false,\n        frag,\n        error\n      });\n    });\n  }\n  _fallbackToIMSC1(frag, payload) {\n    const trackPlaylistMedia = this.tracks[frag.level];\n    if (!trackPlaylistMedia.textCodec) {\n      parseIMSC1(payload, this.initPTS[frag.cc], () => {\n        trackPlaylistMedia.textCodec = IMSC1_CODEC;\n        this._parseIMSC1(frag, payload);\n      }, () => {\n        trackPlaylistMedia.textCodec = \"wvtt\";\n      });\n    }\n  }\n  _appendCues(cues, fragLevel) {\n    const hls = this.hls;\n    if (this.config.renderTextTracksNatively) {\n      const textTrack = this.textTracks[fragLevel];\n      if (!textTrack || textTrack.mode === \"disabled\") {\n        return;\n      }\n      cues.forEach((cue) => addCueToTrack(textTrack, cue));\n    } else {\n      const currentTrack = this.tracks[fragLevel];\n      if (!currentTrack) {\n        return;\n      }\n      const track = currentTrack.default ? \"default\" : \"subtitles\" + fragLevel;\n      hls.trigger(Events.CUES_PARSED, {\n        type: \"subtitles\",\n        cues,\n        track\n      });\n    }\n  }\n  onFragDecrypted(event, data) {\n    const {\n      frag\n    } = data;\n    if (frag.type === PlaylistLevelType.SUBTITLE) {\n      this.onFragLoaded(Events.FRAG_LOADED, data);\n    }\n  }\n  onSubtitleTracksCleared() {\n    this.tracks = [];\n    this.captionsTracks = {};\n  }\n  onFragParsingUserdata(event, data) {\n    this.initCea608Parsers();\n    const {\n      cea608Parser1,\n      cea608Parser2\n    } = this;\n    if (!this.enabled || !cea608Parser1 || !cea608Parser2) {\n      return;\n    }\n    const {\n      frag,\n      samples\n    } = data;\n    if (frag.type === PlaylistLevelType.MAIN && this.closedCaptionsForLevel(frag) === \"NONE\") {\n      return;\n    }\n    for (let i2 = 0; i2 < samples.length; i2++) {\n      const ccBytes = samples[i2].bytes;\n      if (ccBytes) {\n        const ccdatas = this.extractCea608Data(ccBytes);\n        cea608Parser1.addData(samples[i2].pts, ccdatas[0]);\n        cea608Parser2.addData(samples[i2].pts, ccdatas[1]);\n      }\n    }\n  }\n  onBufferFlushing(event, {\n    startOffset,\n    endOffset,\n    endOffsetSubtitles,\n    type\n  }) {\n    const {\n      media\n    } = this;\n    if (!media || media.currentTime < endOffset) {\n      return;\n    }\n    if (!type || type === \"video\") {\n      const {\n        captionsTracks\n      } = this;\n      Object.keys(captionsTracks).forEach((trackName) => removeCuesInRange(captionsTracks[trackName], startOffset, endOffset));\n    }\n    if (this.config.renderTextTracksNatively) {\n      if (startOffset === 0 && endOffsetSubtitles !== void 0) {\n        const {\n          textTracks\n        } = this;\n        Object.keys(textTracks).forEach((trackName) => removeCuesInRange(textTracks[trackName], startOffset, endOffsetSubtitles));\n      }\n    }\n  }\n  extractCea608Data(byteArray) {\n    const actualCCBytes = [[], []];\n    const count = byteArray[0] & 31;\n    let position = 2;\n    for (let j4 = 0; j4 < count; j4++) {\n      const tmpByte = byteArray[position++];\n      const ccbyte1 = 127 & byteArray[position++];\n      const ccbyte2 = 127 & byteArray[position++];\n      if (ccbyte1 === 0 && ccbyte2 === 0) {\n        continue;\n      }\n      const ccValid = (4 & tmpByte) !== 0;\n      if (ccValid) {\n        const ccType = 3 & tmpByte;\n        if (0 === ccType || 1 === ccType) {\n          actualCCBytes[ccType].push(ccbyte1);\n          actualCCBytes[ccType].push(ccbyte2);\n        }\n      }\n    }\n    return actualCCBytes;\n  }\n};\nfunction captionsOrSubtitlesFromCharacteristics(track) {\n  if (track.characteristics) {\n    if (/transcribes-spoken-dialog/gi.test(track.characteristics) && /describes-music-and-sound/gi.test(track.characteristics)) {\n      return \"captions\";\n    }\n  }\n  return \"subtitles\";\n}\nfunction canReuseVttTextTrack(inUseTrack, manifestTrack) {\n  return !!inUseTrack && inUseTrack.kind === captionsOrSubtitlesFromCharacteristics(manifestTrack) && subtitleTrackMatchesTextTrack(manifestTrack, inUseTrack);\n}\nfunction intersection(x1, x22, y1, y22) {\n  return Math.min(x22, y22) - Math.max(x1, y1);\n}\nfunction newVTTCCs() {\n  return {\n    ccOffset: 0,\n    presentationOffset: 0,\n    0: {\n      start: 0,\n      prevCC: -1,\n      new: true\n    }\n  };\n}\nvar CapLevelController = class _CapLevelController {\n  constructor(hls) {\n    this.hls = void 0;\n    this.autoLevelCapping = void 0;\n    this.firstLevel = void 0;\n    this.media = void 0;\n    this.restrictedLevels = void 0;\n    this.timer = void 0;\n    this.clientRect = void 0;\n    this.streamController = void 0;\n    this.hls = hls;\n    this.autoLevelCapping = Number.POSITIVE_INFINITY;\n    this.firstLevel = -1;\n    this.media = null;\n    this.restrictedLevels = [];\n    this.timer = void 0;\n    this.clientRect = null;\n    this.registerListeners();\n  }\n  setStreamController(streamController) {\n    this.streamController = streamController;\n  }\n  destroy() {\n    if (this.hls) {\n      this.unregisterListener();\n    }\n    if (this.timer) {\n      this.stopCapping();\n    }\n    this.media = null;\n    this.clientRect = null;\n    this.hls = this.streamController = null;\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n    hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n  }\n  unregisterListener() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n    hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n  }\n  onFpsDropLevelCapping(event, data) {\n    const level = this.hls.levels[data.droppedLevel];\n    if (this.isLevelAllowed(level)) {\n      this.restrictedLevels.push({\n        bitrate: level.bitrate,\n        height: level.height,\n        width: level.width\n      });\n    }\n  }\n  onMediaAttaching(event, data) {\n    this.media = data.media instanceof HTMLVideoElement ? data.media : null;\n    this.clientRect = null;\n    if (this.timer && this.hls.levels.length) {\n      this.detectPlayerSize();\n    }\n  }\n  onManifestParsed(event, data) {\n    const hls = this.hls;\n    this.restrictedLevels = [];\n    this.firstLevel = data.firstLevel;\n    if (hls.config.capLevelToPlayerSize && data.video) {\n      this.startCapping();\n    }\n  }\n  onLevelsUpdated(event, data) {\n    if (this.timer && isFiniteNumber(this.autoLevelCapping)) {\n      this.detectPlayerSize();\n    }\n  }\n  // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted\n  // to the first level\n  onBufferCodecs(event, data) {\n    const hls = this.hls;\n    if (hls.config.capLevelToPlayerSize && data.video) {\n      this.startCapping();\n    }\n  }\n  onMediaDetaching() {\n    this.stopCapping();\n  }\n  detectPlayerSize() {\n    if (this.media) {\n      if (this.mediaHeight <= 0 || this.mediaWidth <= 0) {\n        this.clientRect = null;\n        return;\n      }\n      const levels = this.hls.levels;\n      if (levels.length) {\n        const hls = this.hls;\n        const maxLevel = this.getMaxLevel(levels.length - 1);\n        if (maxLevel !== this.autoLevelCapping) {\n          logger.log(`Setting autoLevelCapping to ${maxLevel}: ${levels[maxLevel].height}p@${levels[maxLevel].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`);\n        }\n        hls.autoLevelCapping = maxLevel;\n        if (hls.autoLevelCapping > this.autoLevelCapping && this.streamController) {\n          this.streamController.nextLevelSwitch();\n        }\n        this.autoLevelCapping = hls.autoLevelCapping;\n      }\n    }\n  }\n  /*\n   * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled)\n   */\n  getMaxLevel(capLevelIndex) {\n    const levels = this.hls.levels;\n    if (!levels.length) {\n      return -1;\n    }\n    const validLevels = levels.filter((level, index) => this.isLevelAllowed(level) && index <= capLevelIndex);\n    this.clientRect = null;\n    return _CapLevelController.getMaxLevelByMediaSize(validLevels, this.mediaWidth, this.mediaHeight);\n  }\n  startCapping() {\n    if (this.timer) {\n      return;\n    }\n    this.autoLevelCapping = Number.POSITIVE_INFINITY;\n    self.clearInterval(this.timer);\n    this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1e3);\n    this.detectPlayerSize();\n  }\n  stopCapping() {\n    this.restrictedLevels = [];\n    this.firstLevel = -1;\n    this.autoLevelCapping = Number.POSITIVE_INFINITY;\n    if (this.timer) {\n      self.clearInterval(this.timer);\n      this.timer = void 0;\n    }\n  }\n  getDimensions() {\n    if (this.clientRect) {\n      return this.clientRect;\n    }\n    const media = this.media;\n    const boundsRect = {\n      width: 0,\n      height: 0\n    };\n    if (media) {\n      const clientRect = media.getBoundingClientRect();\n      boundsRect.width = clientRect.width;\n      boundsRect.height = clientRect.height;\n      if (!boundsRect.width && !boundsRect.height) {\n        boundsRect.width = clientRect.right - clientRect.left || media.width || 0;\n        boundsRect.height = clientRect.bottom - clientRect.top || media.height || 0;\n      }\n    }\n    this.clientRect = boundsRect;\n    return boundsRect;\n  }\n  get mediaWidth() {\n    return this.getDimensions().width * this.contentScaleFactor;\n  }\n  get mediaHeight() {\n    return this.getDimensions().height * this.contentScaleFactor;\n  }\n  get contentScaleFactor() {\n    let pixelRatio = 1;\n    if (!this.hls.config.ignoreDevicePixelRatio) {\n      try {\n        pixelRatio = self.devicePixelRatio;\n      } catch (e) {\n      }\n    }\n    return pixelRatio;\n  }\n  isLevelAllowed(level) {\n    const restrictedLevels = this.restrictedLevels;\n    return !restrictedLevels.some((restrictedLevel) => {\n      return level.bitrate === restrictedLevel.bitrate && level.width === restrictedLevel.width && level.height === restrictedLevel.height;\n    });\n  }\n  static getMaxLevelByMediaSize(levels, width, height) {\n    if (!(levels != null && levels.length)) {\n      return -1;\n    }\n    const atGreatestBandwidth = (curLevel, nextLevel) => {\n      if (!nextLevel) {\n        return true;\n      }\n      return curLevel.width !== nextLevel.width || curLevel.height !== nextLevel.height;\n    };\n    let maxLevelIndex = levels.length - 1;\n    const squareSize = Math.max(width, height);\n    for (let i2 = 0; i2 < levels.length; i2 += 1) {\n      const level = levels[i2];\n      if ((level.width >= squareSize || level.height >= squareSize) && atGreatestBandwidth(level, levels[i2 + 1])) {\n        maxLevelIndex = i2;\n        break;\n      }\n    }\n    return maxLevelIndex;\n  }\n};\nvar FPSController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.isVideoPlaybackQualityAvailable = false;\n    this.timer = void 0;\n    this.media = null;\n    this.lastTime = void 0;\n    this.lastDroppedFrames = 0;\n    this.lastDecodedFrames = 0;\n    this.streamController = void 0;\n    this.hls = hls;\n    this.registerListeners();\n  }\n  setStreamController(streamController) {\n    this.streamController = streamController;\n  }\n  registerListeners() {\n    this.hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n  }\n  unregisterListeners() {\n    this.hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n  }\n  destroy() {\n    if (this.timer) {\n      clearInterval(this.timer);\n    }\n    this.unregisterListeners();\n    this.isVideoPlaybackQualityAvailable = false;\n    this.media = null;\n  }\n  onMediaAttaching(event, data) {\n    const config = this.hls.config;\n    if (config.capLevelOnFPSDrop) {\n      const media = data.media instanceof self.HTMLVideoElement ? data.media : null;\n      this.media = media;\n      if (media && typeof media.getVideoPlaybackQuality === \"function\") {\n        this.isVideoPlaybackQualityAvailable = true;\n      }\n      self.clearInterval(this.timer);\n      this.timer = self.setInterval(this.checkFPSInterval.bind(this), config.fpsDroppedMonitoringPeriod);\n    }\n  }\n  checkFPS(video, decodedFrames, droppedFrames) {\n    const currentTime = performance.now();\n    if (decodedFrames) {\n      if (this.lastTime) {\n        const currentPeriod = currentTime - this.lastTime;\n        const currentDropped = droppedFrames - this.lastDroppedFrames;\n        const currentDecoded = decodedFrames - this.lastDecodedFrames;\n        const droppedFPS = 1e3 * currentDropped / currentPeriod;\n        const hls = this.hls;\n        hls.trigger(Events.FPS_DROP, {\n          currentDropped,\n          currentDecoded,\n          totalDroppedFrames: droppedFrames\n        });\n        if (droppedFPS > 0) {\n          if (currentDropped > hls.config.fpsDroppedMonitoringThreshold * currentDecoded) {\n            let currentLevel = hls.currentLevel;\n            logger.warn(\"drop FPS ratio greater than max allowed value for currentLevel: \" + currentLevel);\n            if (currentLevel > 0 && (hls.autoLevelCapping === -1 || hls.autoLevelCapping >= currentLevel)) {\n              currentLevel = currentLevel - 1;\n              hls.trigger(Events.FPS_DROP_LEVEL_CAPPING, {\n                level: currentLevel,\n                droppedLevel: hls.currentLevel\n              });\n              hls.autoLevelCapping = currentLevel;\n              this.streamController.nextLevelSwitch();\n            }\n          }\n        }\n      }\n      this.lastTime = currentTime;\n      this.lastDroppedFrames = droppedFrames;\n      this.lastDecodedFrames = decodedFrames;\n    }\n  }\n  checkFPSInterval() {\n    const video = this.media;\n    if (video) {\n      if (this.isVideoPlaybackQualityAvailable) {\n        const videoPlaybackQuality = video.getVideoPlaybackQuality();\n        this.checkFPS(video, videoPlaybackQuality.totalVideoFrames, videoPlaybackQuality.droppedVideoFrames);\n      } else {\n        this.checkFPS(video, video.webkitDecodedFrameCount, video.webkitDroppedFrameCount);\n      }\n    }\n  }\n};\nvar LOGGER_PREFIX = \"[eme]\";\nvar EMEController = class _EMEController {\n  constructor(hls) {\n    this.hls = void 0;\n    this.config = void 0;\n    this.media = null;\n    this.keyFormatPromise = null;\n    this.keySystemAccessPromises = {};\n    this._requestLicenseFailureCount = 0;\n    this.mediaKeySessions = [];\n    this.keyIdToKeySessionPromise = {};\n    this.setMediaKeysQueue = _EMEController.CDMCleanupPromise ? [_EMEController.CDMCleanupPromise] : [];\n    this.debug = logger.debug.bind(logger, LOGGER_PREFIX);\n    this.log = logger.log.bind(logger, LOGGER_PREFIX);\n    this.warn = logger.warn.bind(logger, LOGGER_PREFIX);\n    this.error = logger.error.bind(logger, LOGGER_PREFIX);\n    this.onMediaEncrypted = (event) => {\n      const {\n        initDataType,\n        initData\n      } = event;\n      const logMessage = `\"${event.type}\" event: init data type: \"${initDataType}\"`;\n      this.debug(logMessage);\n      if (initData === null) {\n        return;\n      }\n      if (!this.keyFormatPromise) {\n        let keySystems = Object.keys(this.keySystemAccessPromises);\n        if (!keySystems.length) {\n          keySystems = getKeySystemsForConfig(this.config);\n        }\n        const keyFormats = keySystems.map(keySystemDomainToKeySystemFormat).filter((k3) => !!k3);\n        this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n      }\n      this.keyFormatPromise.then((keySystemFormat) => {\n        const keySystem = keySystemFormatToKeySystemDomain(keySystemFormat);\n        let keyId;\n        let keySystemDomain;\n        if (initDataType === \"sinf\") {\n          if (keySystem !== KeySystems.FAIRPLAY) {\n            this.warn(`Ignoring unexpected \"${event.type}\" event with init data type: \"${initDataType}\" for selected key-system ${keySystem}`);\n            return;\n          }\n          const json = bin2str(new Uint8Array(initData));\n          try {\n            const sinf = base64Decode(JSON.parse(json).sinf);\n            const tenc = parseSinf(sinf);\n            if (!tenc) {\n              throw new Error(`'schm' box missing or not cbcs/cenc with schi > tenc`);\n            }\n            keyId = tenc.subarray(8, 24);\n            keySystemDomain = KeySystems.FAIRPLAY;\n          } catch (error) {\n            this.warn(`${logMessage} Failed to parse sinf: ${error}`);\n            return;\n          }\n        } else {\n          if (keySystem !== KeySystems.WIDEVINE && keySystem !== KeySystems.PLAYREADY) {\n            this.warn(`Ignoring unexpected \"${event.type}\" event with init data type: \"${initDataType}\" for selected key-system ${keySystem}`);\n            return;\n          }\n          const psshResults = parseMultiPssh(initData);\n          const psshInfos = psshResults.filter((pssh) => !!pssh.systemId && keySystemIdToKeySystemDomain(pssh.systemId) === keySystem);\n          if (psshInfos.length > 1) {\n            this.warn(`${logMessage} Using first of ${psshInfos.length} pssh found for selected key-system ${keySystem}`);\n          }\n          const psshInfo = psshInfos[0];\n          if (!psshInfo) {\n            if (psshResults.length === 0 || psshResults.some((pssh) => !pssh.systemId)) {\n              this.warn(`${logMessage} contains incomplete or invalid pssh data`);\n            } else {\n              this.log(`ignoring ${logMessage} for ${psshResults.map((pssh) => keySystemIdToKeySystemDomain(pssh.systemId)).join(\",\")} pssh data in favor of playlist keys`);\n            }\n            return;\n          }\n          keySystemDomain = keySystemIdToKeySystemDomain(psshInfo.systemId);\n          if (psshInfo.version === 0 && psshInfo.data) {\n            if (keySystemDomain === KeySystems.WIDEVINE) {\n              const offset = psshInfo.data.length - 22;\n              keyId = psshInfo.data.subarray(offset, offset + 16);\n            } else if (keySystemDomain === KeySystems.PLAYREADY) {\n              keyId = parsePlayReadyWRM(psshInfo.data);\n            }\n          }\n        }\n        if (!keySystemDomain || !keyId) {\n          this.log(`Unable to handle ${logMessage} with key-system ${keySystem}`);\n          return;\n        }\n        const keyIdHex = Hex.hexDump(keyId);\n        const {\n          keyIdToKeySessionPromise,\n          mediaKeySessions\n        } = this;\n        let keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex];\n        for (let i2 = 0; i2 < mediaKeySessions.length; i2++) {\n          const keyContext = mediaKeySessions[i2];\n          const decryptdata = keyContext.decryptdata;\n          if (!decryptdata.keyId) {\n            continue;\n          }\n          const oldKeyIdHex = Hex.hexDump(decryptdata.keyId);\n          if (keyIdHex === oldKeyIdHex || decryptdata.uri.replace(/-/g, \"\").indexOf(keyIdHex) !== -1) {\n            keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex];\n            if (decryptdata.pssh) {\n              break;\n            }\n            delete keyIdToKeySessionPromise[oldKeyIdHex];\n            decryptdata.pssh = new Uint8Array(initData);\n            decryptdata.keyId = keyId;\n            keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] = keySessionContextPromise.then(() => {\n              return this.generateRequestWithPreferredKeySession(keyContext, initDataType, initData, \"encrypted-event-key-match\");\n            });\n            keySessionContextPromise.catch((error) => this.handleError(error));\n            break;\n          }\n        }\n        if (!keySessionContextPromise) {\n          if (keySystemDomain !== keySystem) {\n            this.log(`Ignoring \"${logMessage}\" with ${keySystemDomain} init data for selected key-system ${keySystem}`);\n            return;\n          }\n          keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] = this.getKeySystemSelectionPromise([keySystemDomain]).then(({\n            keySystem: keySystem2,\n            mediaKeys\n          }) => {\n            var _keySystemToKeySystem;\n            this.throwIfDestroyed();\n            const decryptdata = new LevelKey(\"ISO-23001-7\", keyIdHex, (_keySystemToKeySystem = keySystemDomainToKeySystemFormat(keySystem2)) != null ? _keySystemToKeySystem : \"\");\n            decryptdata.pssh = new Uint8Array(initData);\n            decryptdata.keyId = keyId;\n            return this.attemptSetMediaKeys(keySystem2, mediaKeys).then(() => {\n              this.throwIfDestroyed();\n              const keySessionContext = this.createMediaKeySessionContext({\n                decryptdata,\n                keySystem: keySystem2,\n                mediaKeys\n              });\n              return this.generateRequestWithPreferredKeySession(keySessionContext, initDataType, initData, \"encrypted-event-no-match\");\n            });\n          });\n          keySessionContextPromise.catch((error) => this.handleError(error));\n        }\n      });\n    };\n    this.onWaitingForKey = (event) => {\n      this.log(`\"${event.type}\" event`);\n    };\n    this.hls = hls;\n    this.config = hls.config;\n    this.registerListeners();\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.onMediaDetached();\n    const config = this.config;\n    config.requestMediaKeySystemAccessFunc = null;\n    config.licenseXhrSetup = config.licenseResponseCallback = void 0;\n    config.drmSystems = config.drmSystemOptions = {};\n    this.hls = this.config = this.keyIdToKeySessionPromise = null;\n    this.onMediaEncrypted = this.onWaitingForKey = null;\n  }\n  registerListeners() {\n    this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n  }\n  unregisterListeners() {\n    this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n  }\n  getLicenseServerUrl(keySystem) {\n    const {\n      drmSystems,\n      widevineLicenseUrl\n    } = this.config;\n    const keySystemConfiguration = drmSystems[keySystem];\n    if (keySystemConfiguration) {\n      return keySystemConfiguration.licenseUrl;\n    }\n    if (keySystem === KeySystems.WIDEVINE && widevineLicenseUrl) {\n      return widevineLicenseUrl;\n    }\n  }\n  getLicenseServerUrlOrThrow(keySystem) {\n    const url = this.getLicenseServerUrl(keySystem);\n    if (url === void 0) {\n      throw new Error(`no license server URL configured for key-system \"${keySystem}\"`);\n    }\n    return url;\n  }\n  getServerCertificateUrl(keySystem) {\n    const {\n      drmSystems\n    } = this.config;\n    const keySystemConfiguration = drmSystems[keySystem];\n    if (keySystemConfiguration) {\n      return keySystemConfiguration.serverCertificateUrl;\n    } else {\n      this.log(`No Server Certificate in config.drmSystems[\"${keySystem}\"]`);\n    }\n  }\n  attemptKeySystemAccess(keySystemsToAttempt) {\n    const levels = this.hls.levels;\n    const uniqueCodec = (value, i2, a2) => !!value && a2.indexOf(value) === i2;\n    const audioCodecs = levels.map((level) => level.audioCodec).filter(uniqueCodec);\n    const videoCodecs = levels.map((level) => level.videoCodec).filter(uniqueCodec);\n    if (audioCodecs.length + videoCodecs.length === 0) {\n      videoCodecs.push(\"avc1.42e01e\");\n    }\n    return new Promise((resolve, reject) => {\n      const attempt = (keySystems) => {\n        const keySystem = keySystems.shift();\n        this.getMediaKeysPromise(keySystem, audioCodecs, videoCodecs).then((mediaKeys) => resolve({\n          keySystem,\n          mediaKeys\n        })).catch((error) => {\n          if (keySystems.length) {\n            attempt(keySystems);\n          } else if (error instanceof EMEKeyError) {\n            reject(error);\n          } else {\n            reject(new EMEKeyError({\n              type: ErrorTypes.KEY_SYSTEM_ERROR,\n              details: ErrorDetails.KEY_SYSTEM_NO_ACCESS,\n              error,\n              fatal: true\n            }, error.message));\n          }\n        });\n      };\n      attempt(keySystemsToAttempt);\n    });\n  }\n  requestMediaKeySystemAccess(keySystem, supportedConfigurations) {\n    const {\n      requestMediaKeySystemAccessFunc\n    } = this.config;\n    if (!(typeof requestMediaKeySystemAccessFunc === \"function\")) {\n      let errMessage = `Configured requestMediaKeySystemAccess is not a function ${requestMediaKeySystemAccessFunc}`;\n      if (requestMediaKeySystemAccess === null && self.location.protocol === \"http:\") {\n        errMessage = `navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`;\n      }\n      return Promise.reject(new Error(errMessage));\n    }\n    return requestMediaKeySystemAccessFunc(keySystem, supportedConfigurations);\n  }\n  getMediaKeysPromise(keySystem, audioCodecs, videoCodecs) {\n    const mediaKeySystemConfigs = getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, this.config.drmSystemOptions);\n    const keySystemAccessPromises = this.keySystemAccessPromises[keySystem];\n    let keySystemAccess = keySystemAccessPromises == null ? void 0 : keySystemAccessPromises.keySystemAccess;\n    if (!keySystemAccess) {\n      this.log(`Requesting encrypted media \"${keySystem}\" key-system access with config: ${JSON.stringify(mediaKeySystemConfigs)}`);\n      keySystemAccess = this.requestMediaKeySystemAccess(keySystem, mediaKeySystemConfigs);\n      const _keySystemAccessPromises = this.keySystemAccessPromises[keySystem] = {\n        keySystemAccess\n      };\n      keySystemAccess.catch((error) => {\n        this.log(`Failed to obtain access to key-system \"${keySystem}\": ${error}`);\n      });\n      return keySystemAccess.then((mediaKeySystemAccess) => {\n        this.log(`Access for key-system \"${mediaKeySystemAccess.keySystem}\" obtained`);\n        const certificateRequest = this.fetchServerCertificate(keySystem);\n        this.log(`Create media-keys for \"${keySystem}\"`);\n        _keySystemAccessPromises.mediaKeys = mediaKeySystemAccess.createMediaKeys().then((mediaKeys) => {\n          this.log(`Media-keys created for \"${keySystem}\"`);\n          return certificateRequest.then((certificate) => {\n            if (certificate) {\n              return this.setMediaKeysServerCertificate(mediaKeys, keySystem, certificate);\n            }\n            return mediaKeys;\n          });\n        });\n        _keySystemAccessPromises.mediaKeys.catch((error) => {\n          this.error(`Failed to create media-keys for \"${keySystem}\"}: ${error}`);\n        });\n        return _keySystemAccessPromises.mediaKeys;\n      });\n    }\n    return keySystemAccess.then(() => keySystemAccessPromises.mediaKeys);\n  }\n  createMediaKeySessionContext({\n    decryptdata,\n    keySystem,\n    mediaKeys\n  }) {\n    this.log(`Creating key-system session \"${keySystem}\" keyId: ${Hex.hexDump(decryptdata.keyId || [])}`);\n    const mediaKeysSession = mediaKeys.createSession();\n    const mediaKeySessionContext = {\n      decryptdata,\n      keySystem,\n      mediaKeys,\n      mediaKeysSession,\n      keyStatus: \"status-pending\"\n    };\n    this.mediaKeySessions.push(mediaKeySessionContext);\n    return mediaKeySessionContext;\n  }\n  renewKeySession(mediaKeySessionContext) {\n    const decryptdata = mediaKeySessionContext.decryptdata;\n    if (decryptdata.pssh) {\n      const keySessionContext = this.createMediaKeySessionContext(mediaKeySessionContext);\n      const keyId = this.getKeyIdString(decryptdata);\n      const scheme = \"cenc\";\n      this.keyIdToKeySessionPromise[keyId] = this.generateRequestWithPreferredKeySession(keySessionContext, scheme, decryptdata.pssh, \"expired\");\n    } else {\n      this.warn(`Could not renew expired session. Missing pssh initData.`);\n    }\n    this.removeSession(mediaKeySessionContext);\n  }\n  getKeyIdString(decryptdata) {\n    if (!decryptdata) {\n      throw new Error(\"Could not read keyId of undefined decryptdata\");\n    }\n    if (decryptdata.keyId === null) {\n      throw new Error(\"keyId is null\");\n    }\n    return Hex.hexDump(decryptdata.keyId);\n  }\n  updateKeySession(mediaKeySessionContext, data) {\n    var _mediaKeySessionConte;\n    const keySession = mediaKeySessionContext.mediaKeysSession;\n    this.log(`Updating key-session \"${keySession.sessionId}\" for keyID ${Hex.hexDump(((_mediaKeySessionConte = mediaKeySessionContext.decryptdata) == null ? void 0 : _mediaKeySessionConte.keyId) || [])}\n      } (data length: ${data ? data.byteLength : data})`);\n    return keySession.update(data);\n  }\n  selectKeySystemFormat(frag) {\n    const keyFormats = Object.keys(frag.levelkeys || {});\n    if (!this.keyFormatPromise) {\n      this.log(`Selecting key-system from fragment (sn: ${frag.sn} ${frag.type}: ${frag.level}) key formats ${keyFormats.join(\", \")}`);\n      this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n    }\n    return this.keyFormatPromise;\n  }\n  getKeyFormatPromise(keyFormats) {\n    return new Promise((resolve, reject) => {\n      const keySystemsInConfig = getKeySystemsForConfig(this.config);\n      const keySystemsToAttempt = keyFormats.map(keySystemFormatToKeySystemDomain).filter((value) => !!value && keySystemsInConfig.indexOf(value) !== -1);\n      return this.getKeySystemSelectionPromise(keySystemsToAttempt).then(({\n        keySystem\n      }) => {\n        const keySystemFormat = keySystemDomainToKeySystemFormat(keySystem);\n        if (keySystemFormat) {\n          resolve(keySystemFormat);\n        } else {\n          reject(new Error(`Unable to find format for key-system \"${keySystem}\"`));\n        }\n      }).catch(reject);\n    });\n  }\n  loadKey(data) {\n    const decryptdata = data.keyInfo.decryptdata;\n    const keyId = this.getKeyIdString(decryptdata);\n    const keyDetails = `(keyId: ${keyId} format: \"${decryptdata.keyFormat}\" method: ${decryptdata.method} uri: ${decryptdata.uri})`;\n    this.log(`Starting session for key ${keyDetails}`);\n    let keySessionContextPromise = this.keyIdToKeySessionPromise[keyId];\n    if (!keySessionContextPromise) {\n      keySessionContextPromise = this.keyIdToKeySessionPromise[keyId] = this.getKeySystemForKeyPromise(decryptdata).then(({\n        keySystem,\n        mediaKeys\n      }) => {\n        this.throwIfDestroyed();\n        this.log(`Handle encrypted media sn: ${data.frag.sn} ${data.frag.type}: ${data.frag.level} using key ${keyDetails}`);\n        return this.attemptSetMediaKeys(keySystem, mediaKeys).then(() => {\n          this.throwIfDestroyed();\n          const keySessionContext = this.createMediaKeySessionContext({\n            keySystem,\n            mediaKeys,\n            decryptdata\n          });\n          const scheme = \"cenc\";\n          return this.generateRequestWithPreferredKeySession(keySessionContext, scheme, decryptdata.pssh, \"playlist-key\");\n        });\n      });\n      keySessionContextPromise.catch((error) => this.handleError(error));\n    }\n    return keySessionContextPromise;\n  }\n  throwIfDestroyed(message = \"Invalid state\") {\n    if (!this.hls) {\n      throw new Error(\"invalid state\");\n    }\n  }\n  handleError(error) {\n    if (!this.hls) {\n      return;\n    }\n    this.error(error.message);\n    if (error instanceof EMEKeyError) {\n      this.hls.trigger(Events.ERROR, error.data);\n    } else {\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.KEY_SYSTEM_ERROR,\n        details: ErrorDetails.KEY_SYSTEM_NO_KEYS,\n        error,\n        fatal: true\n      });\n    }\n  }\n  getKeySystemForKeyPromise(decryptdata) {\n    const keyId = this.getKeyIdString(decryptdata);\n    const mediaKeySessionContext = this.keyIdToKeySessionPromise[keyId];\n    if (!mediaKeySessionContext) {\n      const keySystem = keySystemFormatToKeySystemDomain(decryptdata.keyFormat);\n      const keySystemsToAttempt = keySystem ? [keySystem] : getKeySystemsForConfig(this.config);\n      return this.attemptKeySystemAccess(keySystemsToAttempt);\n    }\n    return mediaKeySessionContext;\n  }\n  getKeySystemSelectionPromise(keySystemsToAttempt) {\n    if (!keySystemsToAttempt.length) {\n      keySystemsToAttempt = getKeySystemsForConfig(this.config);\n    }\n    if (keySystemsToAttempt.length === 0) {\n      throw new EMEKeyError({\n        type: ErrorTypes.KEY_SYSTEM_ERROR,\n        details: ErrorDetails.KEY_SYSTEM_NO_CONFIGURED_LICENSE,\n        fatal: true\n      }, `Missing key-system license configuration options ${JSON.stringify({\n        drmSystems: this.config.drmSystems\n      })}`);\n    }\n    return this.attemptKeySystemAccess(keySystemsToAttempt);\n  }\n  attemptSetMediaKeys(keySystem, mediaKeys) {\n    const queue = this.setMediaKeysQueue.slice();\n    this.log(`Setting media-keys for \"${keySystem}\"`);\n    const setMediaKeysPromise = Promise.all(queue).then(() => {\n      if (!this.media) {\n        throw new Error(\"Attempted to set mediaKeys without media element attached\");\n      }\n      return this.media.setMediaKeys(mediaKeys);\n    });\n    this.setMediaKeysQueue.push(setMediaKeysPromise);\n    return setMediaKeysPromise.then(() => {\n      this.log(`Media-keys set for \"${keySystem}\"`);\n      queue.push(setMediaKeysPromise);\n      this.setMediaKeysQueue = this.setMediaKeysQueue.filter((p3) => queue.indexOf(p3) === -1);\n    });\n  }\n  generateRequestWithPreferredKeySession(context, initDataType, initData, reason) {\n    var _this$config$drmSyste, _this$config$drmSyste2;\n    const generateRequestFilter = (_this$config$drmSyste = this.config.drmSystems) == null ? void 0 : (_this$config$drmSyste2 = _this$config$drmSyste[context.keySystem]) == null ? void 0 : _this$config$drmSyste2.generateRequest;\n    if (generateRequestFilter) {\n      try {\n        const mappedInitData = generateRequestFilter.call(this.hls, initDataType, initData, context);\n        if (!mappedInitData) {\n          throw new Error(\"Invalid response from configured generateRequest filter\");\n        }\n        initDataType = mappedInitData.initDataType;\n        initData = context.decryptdata.pssh = mappedInitData.initData ? new Uint8Array(mappedInitData.initData) : null;\n      } catch (error) {\n        var _this$hls;\n        this.warn(error.message);\n        if ((_this$hls = this.hls) != null && _this$hls.config.debug) {\n          throw error;\n        }\n      }\n    }\n    if (initData === null) {\n      this.log(`Skipping key-session request for \"${reason}\" (no initData)`);\n      return Promise.resolve(context);\n    }\n    const keyId = this.getKeyIdString(context.decryptdata);\n    this.log(`Generating key-session request for \"${reason}\": ${keyId} (init data type: ${initDataType} length: ${initData ? initData.byteLength : null})`);\n    const licenseStatus = new EventEmitter();\n    const onmessage = context._onmessage = (event) => {\n      const keySession = context.mediaKeysSession;\n      if (!keySession) {\n        licenseStatus.emit(\"error\", new Error(\"invalid state\"));\n        return;\n      }\n      const {\n        messageType,\n        message\n      } = event;\n      this.log(`\"${messageType}\" message event for session \"${keySession.sessionId}\" message size: ${message.byteLength}`);\n      if (messageType === \"license-request\" || messageType === \"license-renewal\") {\n        this.renewLicense(context, message).catch((error) => {\n          this.handleError(error);\n          licenseStatus.emit(\"error\", error);\n        });\n      } else if (messageType === \"license-release\") {\n        if (context.keySystem === KeySystems.FAIRPLAY) {\n          this.updateKeySession(context, strToUtf8array(\"acknowledged\"));\n          this.removeSession(context);\n        }\n      } else {\n        this.warn(`unhandled media key message type \"${messageType}\"`);\n      }\n    };\n    const onkeystatuseschange = context._onkeystatuseschange = (event) => {\n      const keySession = context.mediaKeysSession;\n      if (!keySession) {\n        licenseStatus.emit(\"error\", new Error(\"invalid state\"));\n        return;\n      }\n      this.onKeyStatusChange(context);\n      const keyStatus = context.keyStatus;\n      licenseStatus.emit(\"keyStatus\", keyStatus);\n      if (keyStatus === \"expired\") {\n        this.warn(`${context.keySystem} expired for key ${keyId}`);\n        this.renewKeySession(context);\n      }\n    };\n    context.mediaKeysSession.addEventListener(\"message\", onmessage);\n    context.mediaKeysSession.addEventListener(\"keystatuseschange\", onkeystatuseschange);\n    const keyUsablePromise = new Promise((resolve, reject) => {\n      licenseStatus.on(\"error\", reject);\n      licenseStatus.on(\"keyStatus\", (keyStatus) => {\n        if (keyStatus.startsWith(\"usable\")) {\n          resolve();\n        } else if (keyStatus === \"output-restricted\") {\n          reject(new EMEKeyError({\n            type: ErrorTypes.KEY_SYSTEM_ERROR,\n            details: ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,\n            fatal: false\n          }, \"HDCP level output restricted\"));\n        } else if (keyStatus === \"internal-error\") {\n          reject(new EMEKeyError({\n            type: ErrorTypes.KEY_SYSTEM_ERROR,\n            details: ErrorDetails.KEY_SYSTEM_STATUS_INTERNAL_ERROR,\n            fatal: true\n          }, `key status changed to \"${keyStatus}\"`));\n        } else if (keyStatus === \"expired\") {\n          reject(new Error(\"key expired while generating request\"));\n        } else {\n          this.warn(`unhandled key status change \"${keyStatus}\"`);\n        }\n      });\n    });\n    return context.mediaKeysSession.generateRequest(initDataType, initData).then(() => {\n      var _context$mediaKeysSes;\n      this.log(`Request generated for key-session \"${(_context$mediaKeysSes = context.mediaKeysSession) == null ? void 0 : _context$mediaKeysSes.sessionId}\" keyId: ${keyId}`);\n    }).catch((error) => {\n      throw new EMEKeyError({\n        type: ErrorTypes.KEY_SYSTEM_ERROR,\n        details: ErrorDetails.KEY_SYSTEM_NO_SESSION,\n        error,\n        fatal: false\n      }, `Error generating key-session request: ${error}`);\n    }).then(() => keyUsablePromise).catch((error) => {\n      licenseStatus.removeAllListeners();\n      this.removeSession(context);\n      throw error;\n    }).then(() => {\n      licenseStatus.removeAllListeners();\n      return context;\n    });\n  }\n  onKeyStatusChange(mediaKeySessionContext) {\n    mediaKeySessionContext.mediaKeysSession.keyStatuses.forEach((status2, keyId) => {\n      this.log(`key status change \"${status2}\" for keyStatuses keyId: ${Hex.hexDump(\"buffer\" in keyId ? new Uint8Array(keyId.buffer, keyId.byteOffset, keyId.byteLength) : new Uint8Array(keyId))} session keyId: ${Hex.hexDump(new Uint8Array(mediaKeySessionContext.decryptdata.keyId || []))} uri: ${mediaKeySessionContext.decryptdata.uri}`);\n      mediaKeySessionContext.keyStatus = status2;\n    });\n  }\n  fetchServerCertificate(keySystem) {\n    const config = this.config;\n    const Loader = config.loader;\n    const certLoader = new Loader(config);\n    const url = this.getServerCertificateUrl(keySystem);\n    if (!url) {\n      return Promise.resolve();\n    }\n    this.log(`Fetching server certificate for \"${keySystem}\"`);\n    return new Promise((resolve, reject) => {\n      const loaderContext = {\n        responseType: \"arraybuffer\",\n        url\n      };\n      const loadPolicy = config.certLoadPolicy.default;\n      const loaderConfig = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0\n      };\n      const loaderCallbacks = {\n        onSuccess: (response, stats, context, networkDetails) => {\n          resolve(response.data);\n        },\n        onError: (response, contex, networkDetails, stats) => {\n          reject(new EMEKeyError({\n            type: ErrorTypes.KEY_SYSTEM_ERROR,\n            details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,\n            fatal: true,\n            networkDetails,\n            response: _objectSpread2({\n              url: loaderContext.url,\n              data: void 0\n            }, response)\n          }, `\"${keySystem}\" certificate request failed (${url}). Status: ${response.code} (${response.text})`));\n        },\n        onTimeout: (stats, context, networkDetails) => {\n          reject(new EMEKeyError({\n            type: ErrorTypes.KEY_SYSTEM_ERROR,\n            details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,\n            fatal: true,\n            networkDetails,\n            response: {\n              url: loaderContext.url,\n              data: void 0\n            }\n          }, `\"${keySystem}\" certificate request timed out (${url})`));\n        },\n        onAbort: (stats, context, networkDetails) => {\n          reject(new Error(\"aborted\"));\n        }\n      };\n      certLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n    });\n  }\n  setMediaKeysServerCertificate(mediaKeys, keySystem, cert) {\n    return new Promise((resolve, reject) => {\n      mediaKeys.setServerCertificate(cert).then((success) => {\n        this.log(`setServerCertificate ${success ? \"success\" : \"not supported by CDM\"} (${cert == null ? void 0 : cert.byteLength}) on \"${keySystem}\"`);\n        resolve(mediaKeys);\n      }).catch((error) => {\n        reject(new EMEKeyError({\n          type: ErrorTypes.KEY_SYSTEM_ERROR,\n          details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,\n          error,\n          fatal: true\n        }, error.message));\n      });\n    });\n  }\n  renewLicense(context, keyMessage) {\n    return this.requestLicense(context, new Uint8Array(keyMessage)).then((data) => {\n      return this.updateKeySession(context, new Uint8Array(data)).catch((error) => {\n        throw new EMEKeyError({\n          type: ErrorTypes.KEY_SYSTEM_ERROR,\n          details: ErrorDetails.KEY_SYSTEM_SESSION_UPDATE_FAILED,\n          error,\n          fatal: true\n        }, error.message);\n      });\n    });\n  }\n  unpackPlayReadyKeyMessage(xhr, licenseChallenge) {\n    const xmlString = String.fromCharCode.apply(null, new Uint16Array(licenseChallenge.buffer));\n    if (!xmlString.includes(\"PlayReadyKeyMessage\")) {\n      xhr.setRequestHeader(\"Content-Type\", \"text/xml; charset=utf-8\");\n      return licenseChallenge;\n    }\n    const keyMessageXml = new DOMParser().parseFromString(xmlString, \"application/xml\");\n    const headers = keyMessageXml.querySelectorAll(\"HttpHeader\");\n    if (headers.length > 0) {\n      let header;\n      for (let i2 = 0, len = headers.length; i2 < len; i2++) {\n        var _header$querySelector, _header$querySelector2;\n        header = headers[i2];\n        const name = (_header$querySelector = header.querySelector(\"name\")) == null ? void 0 : _header$querySelector.textContent;\n        const value = (_header$querySelector2 = header.querySelector(\"value\")) == null ? void 0 : _header$querySelector2.textContent;\n        if (name && value) {\n          xhr.setRequestHeader(name, value);\n        }\n      }\n    }\n    const challengeElement = keyMessageXml.querySelector(\"Challenge\");\n    const challengeText = challengeElement == null ? void 0 : challengeElement.textContent;\n    if (!challengeText) {\n      throw new Error(`Cannot find <Challenge> in key message`);\n    }\n    return strToUtf8array(atob(challengeText));\n  }\n  setupLicenseXHR(xhr, url, keysListItem, licenseChallenge) {\n    const licenseXhrSetup = this.config.licenseXhrSetup;\n    if (!licenseXhrSetup) {\n      xhr.open(\"POST\", url, true);\n      return Promise.resolve({\n        xhr,\n        licenseChallenge\n      });\n    }\n    return Promise.resolve().then(() => {\n      if (!keysListItem.decryptdata) {\n        throw new Error(\"Key removed\");\n      }\n      return licenseXhrSetup.call(this.hls, xhr, url, keysListItem, licenseChallenge);\n    }).catch((error) => {\n      if (!keysListItem.decryptdata) {\n        throw error;\n      }\n      xhr.open(\"POST\", url, true);\n      return licenseXhrSetup.call(this.hls, xhr, url, keysListItem, licenseChallenge);\n    }).then((licenseXhrSetupResult) => {\n      if (!xhr.readyState) {\n        xhr.open(\"POST\", url, true);\n      }\n      const finalLicenseChallenge = licenseXhrSetupResult ? licenseXhrSetupResult : licenseChallenge;\n      return {\n        xhr,\n        licenseChallenge: finalLicenseChallenge\n      };\n    });\n  }\n  requestLicense(keySessionContext, licenseChallenge) {\n    const keyLoadPolicy = this.config.keyLoadPolicy.default;\n    return new Promise((resolve, reject) => {\n      const url = this.getLicenseServerUrlOrThrow(keySessionContext.keySystem);\n      this.log(`Sending license request to URL: ${url}`);\n      const xhr = new XMLHttpRequest();\n      xhr.responseType = \"arraybuffer\";\n      xhr.onreadystatechange = () => {\n        if (!this.hls || !keySessionContext.mediaKeysSession) {\n          return reject(new Error(\"invalid state\"));\n        }\n        if (xhr.readyState === 4) {\n          if (xhr.status === 200) {\n            this._requestLicenseFailureCount = 0;\n            let data = xhr.response;\n            this.log(`License received ${data instanceof ArrayBuffer ? data.byteLength : data}`);\n            const licenseResponseCallback = this.config.licenseResponseCallback;\n            if (licenseResponseCallback) {\n              try {\n                data = licenseResponseCallback.call(this.hls, xhr, url, keySessionContext);\n              } catch (error) {\n                this.error(error);\n              }\n            }\n            resolve(data);\n          } else {\n            const retryConfig = keyLoadPolicy.errorRetry;\n            const maxNumRetry = retryConfig ? retryConfig.maxNumRetry : 0;\n            this._requestLicenseFailureCount++;\n            if (this._requestLicenseFailureCount > maxNumRetry || xhr.status >= 400 && xhr.status < 500) {\n              reject(new EMEKeyError({\n                type: ErrorTypes.KEY_SYSTEM_ERROR,\n                details: ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n                fatal: true,\n                networkDetails: xhr,\n                response: {\n                  url,\n                  data: void 0,\n                  code: xhr.status,\n                  text: xhr.statusText\n                }\n              }, `License Request XHR failed (${url}). Status: ${xhr.status} (${xhr.statusText})`));\n            } else {\n              const attemptsLeft = maxNumRetry - this._requestLicenseFailureCount + 1;\n              this.warn(`Retrying license request, ${attemptsLeft} attempts left`);\n              this.requestLicense(keySessionContext, licenseChallenge).then(resolve, reject);\n            }\n          }\n        }\n      };\n      if (keySessionContext.licenseXhr && keySessionContext.licenseXhr.readyState !== XMLHttpRequest.DONE) {\n        keySessionContext.licenseXhr.abort();\n      }\n      keySessionContext.licenseXhr = xhr;\n      this.setupLicenseXHR(xhr, url, keySessionContext, licenseChallenge).then(({\n        xhr: xhr2,\n        licenseChallenge: licenseChallenge2\n      }) => {\n        if (keySessionContext.keySystem == KeySystems.PLAYREADY) {\n          licenseChallenge2 = this.unpackPlayReadyKeyMessage(xhr2, licenseChallenge2);\n        }\n        xhr2.send(licenseChallenge2);\n      });\n    });\n  }\n  onMediaAttached(event, data) {\n    if (!this.config.emeEnabled) {\n      return;\n    }\n    const media = data.media;\n    this.media = media;\n    media.removeEventListener(\"encrypted\", this.onMediaEncrypted);\n    media.removeEventListener(\"waitingforkey\", this.onWaitingForKey);\n    media.addEventListener(\"encrypted\", this.onMediaEncrypted);\n    media.addEventListener(\"waitingforkey\", this.onWaitingForKey);\n  }\n  onMediaDetached() {\n    const media = this.media;\n    const mediaKeysList = this.mediaKeySessions;\n    if (media) {\n      media.removeEventListener(\"encrypted\", this.onMediaEncrypted);\n      media.removeEventListener(\"waitingforkey\", this.onWaitingForKey);\n      this.media = null;\n    }\n    this._requestLicenseFailureCount = 0;\n    this.setMediaKeysQueue = [];\n    this.mediaKeySessions = [];\n    this.keyIdToKeySessionPromise = {};\n    LevelKey.clearKeyUriToKeyIdMap();\n    const keySessionCount = mediaKeysList.length;\n    _EMEController.CDMCleanupPromise = Promise.all(mediaKeysList.map((mediaKeySessionContext) => this.removeSession(mediaKeySessionContext)).concat(media == null ? void 0 : media.setMediaKeys(null).catch((error) => {\n      this.log(`Could not clear media keys: ${error}`);\n    }))).then(() => {\n      if (keySessionCount) {\n        this.log(\"finished closing key sessions and clearing media keys\");\n        mediaKeysList.length = 0;\n      }\n    }).catch((error) => {\n      this.log(`Could not close sessions and clear media keys: ${error}`);\n    });\n  }\n  onManifestLoading() {\n    this.keyFormatPromise = null;\n  }\n  onManifestLoaded(event, {\n    sessionKeys\n  }) {\n    if (!sessionKeys || !this.config.emeEnabled) {\n      return;\n    }\n    if (!this.keyFormatPromise) {\n      const keyFormats = sessionKeys.reduce((formats, sessionKey) => {\n        if (formats.indexOf(sessionKey.keyFormat) === -1) {\n          formats.push(sessionKey.keyFormat);\n        }\n        return formats;\n      }, []);\n      this.log(`Selecting key-system from session-keys ${keyFormats.join(\", \")}`);\n      this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n    }\n  }\n  removeSession(mediaKeySessionContext) {\n    const {\n      mediaKeysSession,\n      licenseXhr\n    } = mediaKeySessionContext;\n    if (mediaKeysSession) {\n      this.log(`Remove licenses and keys and close session ${mediaKeysSession.sessionId}`);\n      if (mediaKeySessionContext._onmessage) {\n        mediaKeysSession.removeEventListener(\"message\", mediaKeySessionContext._onmessage);\n        mediaKeySessionContext._onmessage = void 0;\n      }\n      if (mediaKeySessionContext._onkeystatuseschange) {\n        mediaKeysSession.removeEventListener(\"keystatuseschange\", mediaKeySessionContext._onkeystatuseschange);\n        mediaKeySessionContext._onkeystatuseschange = void 0;\n      }\n      if (licenseXhr && licenseXhr.readyState !== XMLHttpRequest.DONE) {\n        licenseXhr.abort();\n      }\n      mediaKeySessionContext.mediaKeysSession = mediaKeySessionContext.decryptdata = mediaKeySessionContext.licenseXhr = void 0;\n      const index = this.mediaKeySessions.indexOf(mediaKeySessionContext);\n      if (index > -1) {\n        this.mediaKeySessions.splice(index, 1);\n      }\n      return mediaKeysSession.remove().catch((error) => {\n        this.log(`Could not remove session: ${error}`);\n      }).then(() => {\n        return mediaKeysSession.close();\n      }).catch((error) => {\n        this.log(`Could not close session: ${error}`);\n      });\n    }\n  }\n};\nEMEController.CDMCleanupPromise = void 0;\nvar EMEKeyError = class extends Error {\n  constructor(data, message) {\n    super(message);\n    this.data = void 0;\n    data.error || (data.error = new Error(message));\n    this.data = data;\n    data.err = data.error;\n  }\n};\nvar CmObjectType;\n(function(CmObjectType2) {\n  CmObjectType2[\"MANIFEST\"] = \"m\";\n  CmObjectType2[\"AUDIO\"] = \"a\";\n  CmObjectType2[\"VIDEO\"] = \"v\";\n  CmObjectType2[\"MUXED\"] = \"av\";\n  CmObjectType2[\"INIT\"] = \"i\";\n  CmObjectType2[\"CAPTION\"] = \"c\";\n  CmObjectType2[\"TIMED_TEXT\"] = \"tt\";\n  CmObjectType2[\"KEY\"] = \"k\";\n  CmObjectType2[\"OTHER\"] = \"o\";\n})(CmObjectType || (CmObjectType = {}));\nvar CmStreamingFormat;\n(function(CmStreamingFormat2) {\n  CmStreamingFormat2[\"DASH\"] = \"d\";\n  CmStreamingFormat2[\"HLS\"] = \"h\";\n  CmStreamingFormat2[\"SMOOTH\"] = \"s\";\n  CmStreamingFormat2[\"OTHER\"] = \"o\";\n})(CmStreamingFormat || (CmStreamingFormat = {}));\nvar CmcdHeaderField;\n(function(CmcdHeaderField2) {\n  CmcdHeaderField2[\"OBJECT\"] = \"CMCD-Object\";\n  CmcdHeaderField2[\"REQUEST\"] = \"CMCD-Request\";\n  CmcdHeaderField2[\"SESSION\"] = \"CMCD-Session\";\n  CmcdHeaderField2[\"STATUS\"] = \"CMCD-Status\";\n})(CmcdHeaderField || (CmcdHeaderField = {}));\nvar CmcdHeaderMap = {\n  [CmcdHeaderField.OBJECT]: [\"br\", \"d\", \"ot\", \"tb\"],\n  [CmcdHeaderField.REQUEST]: [\"bl\", \"dl\", \"mtp\", \"nor\", \"nrr\", \"su\"],\n  [CmcdHeaderField.SESSION]: [\"cid\", \"pr\", \"sf\", \"sid\", \"st\", \"v\"],\n  [CmcdHeaderField.STATUS]: [\"bs\", \"rtp\"]\n};\nvar SfItem = class _SfItem {\n  constructor(value, params) {\n    this.value = void 0;\n    this.params = void 0;\n    if (Array.isArray(value)) {\n      value = value.map((v4) => v4 instanceof _SfItem ? v4 : new _SfItem(v4));\n    }\n    this.value = value;\n    this.params = params;\n  }\n};\nvar SfToken = class {\n  constructor(description) {\n    this.description = void 0;\n    this.description = description;\n  }\n};\nvar DICT = \"Dict\";\nfunction format(value) {\n  if (Array.isArray(value)) {\n    return JSON.stringify(value);\n  }\n  if (value instanceof Map) {\n    return \"Map{}\";\n  }\n  if (value instanceof Set) {\n    return \"Set{}\";\n  }\n  if (typeof value === \"object\") {\n    return JSON.stringify(value);\n  }\n  return String(value);\n}\nfunction throwError(action, src, type, cause) {\n  return new Error(`failed to ${action} \"${format(src)}\" as ${type}`, {\n    cause\n  });\n}\nvar BARE_ITEM = \"Bare Item\";\nvar BOOLEAN = \"Boolean\";\nvar BYTES = \"Byte Sequence\";\nvar DECIMAL = \"Decimal\";\nvar INTEGER = \"Integer\";\nfunction isInvalidInt(value) {\n  return value < -999999999999999 || 999999999999999 < value;\n}\nvar STRING_REGEX = /[\\x00-\\x1f\\x7f]+/;\nvar TOKEN = \"Token\";\nvar KEY = \"Key\";\nfunction serializeError(src, type, cause) {\n  return throwError(\"serialize\", src, type, cause);\n}\nfunction serializeBoolean(value) {\n  if (typeof value !== \"boolean\") {\n    throw serializeError(value, BOOLEAN);\n  }\n  return value ? \"?1\" : \"?0\";\n}\nfunction base64encode(binary) {\n  return btoa(String.fromCharCode(...binary));\n}\nfunction serializeByteSequence(value) {\n  if (ArrayBuffer.isView(value) === false) {\n    throw serializeError(value, BYTES);\n  }\n  return `:${base64encode(value)}:`;\n}\nfunction serializeInteger(value) {\n  if (isInvalidInt(value)) {\n    throw serializeError(value, INTEGER);\n  }\n  return value.toString();\n}\nfunction serializeDate(value) {\n  return `@${serializeInteger(value.getTime() / 1e3)}`;\n}\nfunction roundToEven(value, precision) {\n  if (value < 0) {\n    return -roundToEven(-value, precision);\n  }\n  const decimalShift = Math.pow(10, precision);\n  const isEquidistant = Math.abs(value * decimalShift % 1 - 0.5) < Number.EPSILON;\n  if (isEquidistant) {\n    const flooredValue = Math.floor(value * decimalShift);\n    return (flooredValue % 2 === 0 ? flooredValue : flooredValue + 1) / decimalShift;\n  } else {\n    return Math.round(value * decimalShift) / decimalShift;\n  }\n}\nfunction serializeDecimal(value) {\n  const roundedValue = roundToEven(value, 3);\n  if (Math.floor(Math.abs(roundedValue)).toString().length > 12) {\n    throw serializeError(value, DECIMAL);\n  }\n  const stringValue = roundedValue.toString();\n  return stringValue.includes(\".\") ? stringValue : `${stringValue}.0`;\n}\nvar STRING = \"String\";\nfunction serializeString(value) {\n  if (STRING_REGEX.test(value)) {\n    throw serializeError(value, STRING);\n  }\n  return `\"${value.replace(/\\\\/g, `\\\\\\\\`).replace(/\"/g, `\\\\\"`)}\"`;\n}\nfunction symbolToStr(symbol) {\n  return symbol.description || symbol.toString().slice(7, -1);\n}\nfunction serializeToken(token) {\n  const value = symbolToStr(token);\n  if (/^([a-zA-Z*])([!#$%&'*+\\-.^_`|~\\w:/]*)$/.test(value) === false) {\n    throw serializeError(value, TOKEN);\n  }\n  return value;\n}\nfunction serializeBareItem(value) {\n  switch (typeof value) {\n    case \"number\":\n      if (!isFiniteNumber(value)) {\n        throw serializeError(value, BARE_ITEM);\n      }\n      if (Number.isInteger(value)) {\n        return serializeInteger(value);\n      }\n      return serializeDecimal(value);\n    case \"string\":\n      return serializeString(value);\n    case \"symbol\":\n      return serializeToken(value);\n    case \"boolean\":\n      return serializeBoolean(value);\n    case \"object\":\n      if (value instanceof Date) {\n        return serializeDate(value);\n      }\n      if (value instanceof Uint8Array) {\n        return serializeByteSequence(value);\n      }\n      if (value instanceof SfToken) {\n        return serializeToken(value);\n      }\n    default:\n      throw serializeError(value, BARE_ITEM);\n  }\n}\nfunction serializeKey(value) {\n  if (/^[a-z*][a-z0-9\\-_.*]*$/.test(value) === false) {\n    throw serializeError(value, KEY);\n  }\n  return value;\n}\nfunction serializeParams(params) {\n  if (params == null) {\n    return \"\";\n  }\n  return Object.entries(params).map(([key, value]) => {\n    if (value === true) {\n      return `;${serializeKey(key)}`;\n    }\n    return `;${serializeKey(key)}=${serializeBareItem(value)}`;\n  }).join(\"\");\n}\nfunction serializeItem(value) {\n  if (value instanceof SfItem) {\n    return `${serializeBareItem(value.value)}${serializeParams(value.params)}`;\n  } else {\n    return serializeBareItem(value);\n  }\n}\nfunction serializeInnerList(value) {\n  return `(${value.value.map(serializeItem).join(\" \")})${serializeParams(value.params)}`;\n}\nfunction serializeDict(dict, options = {\n  whitespace: true\n}) {\n  if (typeof dict !== \"object\") {\n    throw serializeError(dict, DICT);\n  }\n  const entries = dict instanceof Map ? dict.entries() : Object.entries(dict);\n  const optionalWhiteSpace = options != null && options.whitespace ? \" \" : \"\";\n  return Array.from(entries).map(([key, item]) => {\n    if (item instanceof SfItem === false) {\n      item = new SfItem(item);\n    }\n    let output = serializeKey(key);\n    if (item.value === true) {\n      output += serializeParams(item.params);\n    } else {\n      output += \"=\";\n      if (Array.isArray(item.value)) {\n        output += serializeInnerList(item);\n      } else {\n        output += serializeItem(item);\n      }\n    }\n    return output;\n  }).join(`,${optionalWhiteSpace}`);\n}\nfunction encodeSfDict(value, options) {\n  return serializeDict(value, options);\n}\nvar isTokenField = (key) => key === \"ot\" || key === \"sf\" || key === \"st\";\nvar isValid = (value) => {\n  if (typeof value === \"number\") {\n    return isFiniteNumber(value);\n  }\n  return value != null && value !== \"\" && value !== false;\n};\nfunction urlToRelativePath(url, base) {\n  const to = new URL(url);\n  const from = new URL(base);\n  if (to.origin !== from.origin) {\n    return url;\n  }\n  const toPath = to.pathname.split(\"/\").slice(1);\n  const fromPath = from.pathname.split(\"/\").slice(1, -1);\n  while (toPath[0] === fromPath[0]) {\n    toPath.shift();\n    fromPath.shift();\n  }\n  while (fromPath.length) {\n    fromPath.shift();\n    toPath.unshift(\"..\");\n  }\n  return toPath.join(\"/\");\n}\nfunction uuid() {\n  try {\n    return crypto.randomUUID();\n  } catch (error) {\n    try {\n      const url = URL.createObjectURL(new Blob());\n      const uuid2 = url.toString();\n      URL.revokeObjectURL(url);\n      return uuid2.slice(uuid2.lastIndexOf(\"/\") + 1);\n    } catch (error2) {\n      let dt5 = (/* @__PURE__ */ new Date()).getTime();\n      const uuid2 = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c4) => {\n        const r10 = (dt5 + Math.random() * 16) % 16 | 0;\n        dt5 = Math.floor(dt5 / 16);\n        return (c4 == \"x\" ? r10 : r10 & 3 | 8).toString(16);\n      });\n      return uuid2;\n    }\n  }\n}\nvar toRounded = (value) => Math.round(value);\nvar toUrlSafe = (value, options) => {\n  if (options != null && options.baseUrl) {\n    value = urlToRelativePath(value, options.baseUrl);\n  }\n  return encodeURIComponent(value);\n};\nvar toHundred = (value) => toRounded(value / 100) * 100;\nvar CmcdFormatters = {\n  /**\n   * Bitrate (kbps) rounded integer\n   */\n  br: toRounded,\n  /**\n   * Duration (milliseconds) rounded integer\n   */\n  d: toRounded,\n  /**\n   * Buffer Length (milliseconds) rounded nearest 100ms\n   */\n  bl: toHundred,\n  /**\n   * Deadline (milliseconds) rounded nearest 100ms\n   */\n  dl: toHundred,\n  /**\n   * Measured Throughput (kbps) rounded nearest 100kbps\n   */\n  mtp: toHundred,\n  /**\n   * Next Object Request URL encoded\n   */\n  nor: toUrlSafe,\n  /**\n   * Requested maximum throughput (kbps) rounded nearest 100kbps\n   */\n  rtp: toHundred,\n  /**\n   * Top Bitrate (kbps) rounded integer\n   */\n  tb: toRounded\n};\nfunction processCmcd(obj, options) {\n  const results = {};\n  if (obj == null || typeof obj !== \"object\") {\n    return results;\n  }\n  const keys = Object.keys(obj).sort();\n  const formatters = _extends({}, CmcdFormatters, options == null ? void 0 : options.formatters);\n  const filter = options == null ? void 0 : options.filter;\n  keys.forEach((key) => {\n    if (filter != null && filter(key)) {\n      return;\n    }\n    let value = obj[key];\n    const formatter = formatters[key];\n    if (formatter) {\n      value = formatter(value, options);\n    }\n    if (key === \"v\" && value === 1) {\n      return;\n    }\n    if (key == \"pr\" && value === 1) {\n      return;\n    }\n    if (!isValid(value)) {\n      return;\n    }\n    if (isTokenField(key) && typeof value === \"string\") {\n      value = new SfToken(value);\n    }\n    results[key] = value;\n  });\n  return results;\n}\nfunction encodeCmcd(cmcd, options = {}) {\n  if (!cmcd) {\n    return \"\";\n  }\n  return encodeSfDict(processCmcd(cmcd, options), _extends({\n    whitespace: false\n  }, options));\n}\nfunction toCmcdHeaders(cmcd, options = {}) {\n  if (!cmcd) {\n    return {};\n  }\n  const entries = Object.entries(cmcd);\n  const headerMap = Object.entries(CmcdHeaderMap).concat(Object.entries((options == null ? void 0 : options.customHeaderMap) || {}));\n  const shards = entries.reduce((acc, entry) => {\n    var _headerMap$find, _acc$field;\n    const [key, value] = entry;\n    const field = ((_headerMap$find = headerMap.find((entry2) => entry2[1].includes(key))) == null ? void 0 : _headerMap$find[0]) || CmcdHeaderField.REQUEST;\n    (_acc$field = acc[field]) != null ? _acc$field : acc[field] = {};\n    acc[field][key] = value;\n    return acc;\n  }, {});\n  return Object.entries(shards).reduce((acc, [field, value]) => {\n    acc[field] = encodeCmcd(value, options);\n    return acc;\n  }, {});\n}\nfunction appendCmcdHeaders(headers, cmcd, options) {\n  return _extends(headers, toCmcdHeaders(cmcd, options));\n}\nvar CMCD_PARAM = \"CMCD\";\nfunction toCmcdQuery(cmcd, options = {}) {\n  if (!cmcd) {\n    return \"\";\n  }\n  const params = encodeCmcd(cmcd, options);\n  return `${CMCD_PARAM}=${encodeURIComponent(params)}`;\n}\nvar REGEX = /CMCD=[^&#]+/;\nfunction appendCmcdQuery(url, cmcd, options) {\n  const query = toCmcdQuery(cmcd, options);\n  if (!query) {\n    return url;\n  }\n  if (REGEX.test(url)) {\n    return url.replace(REGEX, query);\n  }\n  const separator = url.includes(\"?\") ? \"&\" : \"?\";\n  return `${url}${separator}${query}`;\n}\nvar CMCDController = class {\n  // eslint-disable-line no-restricted-globals\n  constructor(hls) {\n    this.hls = void 0;\n    this.config = void 0;\n    this.media = void 0;\n    this.sid = void 0;\n    this.cid = void 0;\n    this.useHeaders = false;\n    this.includeKeys = void 0;\n    this.initialized = false;\n    this.starved = false;\n    this.buffering = true;\n    this.audioBuffer = void 0;\n    this.videoBuffer = void 0;\n    this.onWaiting = () => {\n      if (this.initialized) {\n        this.starved = true;\n      }\n      this.buffering = true;\n    };\n    this.onPlaying = () => {\n      if (!this.initialized) {\n        this.initialized = true;\n      }\n      this.buffering = false;\n    };\n    this.applyPlaylistData = (context) => {\n      try {\n        this.apply(context, {\n          ot: CmObjectType.MANIFEST,\n          su: !this.initialized\n        });\n      } catch (error) {\n        logger.warn(\"Could not generate manifest CMCD data.\", error);\n      }\n    };\n    this.applyFragmentData = (context) => {\n      try {\n        const fragment = context.frag;\n        const level = this.hls.levels[fragment.level];\n        const ot4 = this.getObjectType(fragment);\n        const data = {\n          d: fragment.duration * 1e3,\n          ot: ot4\n        };\n        if (ot4 === CmObjectType.VIDEO || ot4 === CmObjectType.AUDIO || ot4 == CmObjectType.MUXED) {\n          data.br = level.bitrate / 1e3;\n          data.tb = this.getTopBandwidth(ot4) / 1e3;\n          data.bl = this.getBufferLength(ot4);\n        }\n        this.apply(context, data);\n      } catch (error) {\n        logger.warn(\"Could not generate segment CMCD data.\", error);\n      }\n    };\n    this.hls = hls;\n    const config = this.config = hls.config;\n    const {\n      cmcd\n    } = config;\n    if (cmcd != null) {\n      config.pLoader = this.createPlaylistLoader();\n      config.fLoader = this.createFragmentLoader();\n      this.sid = cmcd.sessionId || uuid();\n      this.cid = cmcd.contentId;\n      this.useHeaders = cmcd.useHeaders === true;\n      this.includeKeys = cmcd.includeKeys;\n      this.registerListeners();\n    }\n  }\n  registerListeners() {\n    const hls = this.hls;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n  }\n  unregisterListeners() {\n    const hls = this.hls;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.onMediaDetached();\n    this.hls = this.config = this.audioBuffer = this.videoBuffer = null;\n    this.onWaiting = this.onPlaying = null;\n  }\n  onMediaAttached(event, data) {\n    this.media = data.media;\n    this.media.addEventListener(\"waiting\", this.onWaiting);\n    this.media.addEventListener(\"playing\", this.onPlaying);\n  }\n  onMediaDetached() {\n    if (!this.media) {\n      return;\n    }\n    this.media.removeEventListener(\"waiting\", this.onWaiting);\n    this.media.removeEventListener(\"playing\", this.onPlaying);\n    this.media = null;\n  }\n  onBufferCreated(event, data) {\n    var _data$tracks$audio, _data$tracks$video;\n    this.audioBuffer = (_data$tracks$audio = data.tracks.audio) == null ? void 0 : _data$tracks$audio.buffer;\n    this.videoBuffer = (_data$tracks$video = data.tracks.video) == null ? void 0 : _data$tracks$video.buffer;\n  }\n  /**\n   * Create baseline CMCD data\n   */\n  createData() {\n    var _this$media;\n    return {\n      v: 1,\n      sf: CmStreamingFormat.HLS,\n      sid: this.sid,\n      cid: this.cid,\n      pr: (_this$media = this.media) == null ? void 0 : _this$media.playbackRate,\n      mtp: this.hls.bandwidthEstimate / 1e3\n    };\n  }\n  /**\n   * Apply CMCD data to a request.\n   */\n  apply(context, data = {}) {\n    _extends(data, this.createData());\n    const isVideo = data.ot === CmObjectType.INIT || data.ot === CmObjectType.VIDEO || data.ot === CmObjectType.MUXED;\n    if (this.starved && isVideo) {\n      data.bs = true;\n      data.su = true;\n      this.starved = false;\n    }\n    if (data.su == null) {\n      data.su = this.buffering;\n    }\n    const {\n      includeKeys\n    } = this;\n    if (includeKeys) {\n      data = Object.keys(data).reduce((acc, key) => {\n        includeKeys.includes(key) && (acc[key] = data[key]);\n        return acc;\n      }, {});\n    }\n    if (this.useHeaders) {\n      if (!context.headers) {\n        context.headers = {};\n      }\n      appendCmcdHeaders(context.headers, data);\n    } else {\n      context.url = appendCmcdQuery(context.url, data);\n    }\n  }\n  /**\n   * The CMCD object type.\n   */\n  getObjectType(fragment) {\n    const {\n      type\n    } = fragment;\n    if (type === \"subtitle\") {\n      return CmObjectType.TIMED_TEXT;\n    }\n    if (fragment.sn === \"initSegment\") {\n      return CmObjectType.INIT;\n    }\n    if (type === \"audio\") {\n      return CmObjectType.AUDIO;\n    }\n    if (type === \"main\") {\n      if (!this.hls.audioTracks.length) {\n        return CmObjectType.MUXED;\n      }\n      return CmObjectType.VIDEO;\n    }\n    return void 0;\n  }\n  /**\n   * Get the highest bitrate.\n   */\n  getTopBandwidth(type) {\n    let bitrate = 0;\n    let levels;\n    const hls = this.hls;\n    if (type === CmObjectType.AUDIO) {\n      levels = hls.audioTracks;\n    } else {\n      const max = hls.maxAutoLevel;\n      const len = max > -1 ? max + 1 : hls.levels.length;\n      levels = hls.levels.slice(0, len);\n    }\n    for (const level of levels) {\n      if (level.bitrate > bitrate) {\n        bitrate = level.bitrate;\n      }\n    }\n    return bitrate > 0 ? bitrate : NaN;\n  }\n  /**\n   * Get the buffer length for a media type in milliseconds\n   */\n  getBufferLength(type) {\n    const media = this.hls.media;\n    const buffer = type === CmObjectType.AUDIO ? this.audioBuffer : this.videoBuffer;\n    if (!buffer || !media) {\n      return NaN;\n    }\n    const info = BufferHelper.bufferInfo(buffer, media.currentTime, this.config.maxBufferHole);\n    return info.len * 1e3;\n  }\n  /**\n   * Create a playlist loader\n   */\n  createPlaylistLoader() {\n    const {\n      pLoader\n    } = this.config;\n    const apply = this.applyPlaylistData;\n    const Ctor = pLoader || this.config.loader;\n    return class CmcdPlaylistLoader {\n      constructor(config) {\n        this.loader = void 0;\n        this.loader = new Ctor(config);\n      }\n      get stats() {\n        return this.loader.stats;\n      }\n      get context() {\n        return this.loader.context;\n      }\n      destroy() {\n        this.loader.destroy();\n      }\n      abort() {\n        this.loader.abort();\n      }\n      load(context, config, callbacks) {\n        apply(context);\n        this.loader.load(context, config, callbacks);\n      }\n    };\n  }\n  /**\n   * Create a playlist loader\n   */\n  createFragmentLoader() {\n    const {\n      fLoader\n    } = this.config;\n    const apply = this.applyFragmentData;\n    const Ctor = fLoader || this.config.loader;\n    return class CmcdFragmentLoader {\n      constructor(config) {\n        this.loader = void 0;\n        this.loader = new Ctor(config);\n      }\n      get stats() {\n        return this.loader.stats;\n      }\n      get context() {\n        return this.loader.context;\n      }\n      destroy() {\n        this.loader.destroy();\n      }\n      abort() {\n        this.loader.abort();\n      }\n      load(context, config, callbacks) {\n        apply(context);\n        this.loader.load(context, config, callbacks);\n      }\n    };\n  }\n};\nvar PATHWAY_PENALTY_DURATION_MS = 3e5;\nvar ContentSteeringController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.log = void 0;\n    this.loader = null;\n    this.uri = null;\n    this.pathwayId = \".\";\n    this.pathwayPriority = null;\n    this.timeToLoad = 300;\n    this.reloadTimer = -1;\n    this.updated = 0;\n    this.started = false;\n    this.enabled = true;\n    this.levels = null;\n    this.audioTracks = null;\n    this.subtitleTracks = null;\n    this.penalizedPathways = {};\n    this.hls = hls;\n    this.log = logger.log.bind(logger, `[content-steering]:`);\n    this.registerListeners();\n  }\n  registerListeners() {\n    const hls = this.hls;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n  unregisterListeners() {\n    const hls = this.hls;\n    if (!hls) {\n      return;\n    }\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n  startLoad() {\n    this.started = true;\n    this.clearTimeout();\n    if (this.enabled && this.uri) {\n      if (this.updated) {\n        const ttl = this.timeToLoad * 1e3 - (performance.now() - this.updated);\n        if (ttl > 0) {\n          this.scheduleRefresh(this.uri, ttl);\n          return;\n        }\n      }\n      this.loadSteeringManifest(this.uri);\n    }\n  }\n  stopLoad() {\n    this.started = false;\n    if (this.loader) {\n      this.loader.destroy();\n      this.loader = null;\n    }\n    this.clearTimeout();\n  }\n  clearTimeout() {\n    if (this.reloadTimer !== -1) {\n      self.clearTimeout(this.reloadTimer);\n      this.reloadTimer = -1;\n    }\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.stopLoad();\n    this.hls = null;\n    this.levels = this.audioTracks = this.subtitleTracks = null;\n  }\n  removeLevel(levelToRemove) {\n    const levels = this.levels;\n    if (levels) {\n      this.levels = levels.filter((level) => level !== levelToRemove);\n    }\n  }\n  onManifestLoading() {\n    this.stopLoad();\n    this.enabled = true;\n    this.timeToLoad = 300;\n    this.updated = 0;\n    this.uri = null;\n    this.pathwayId = \".\";\n    this.levels = this.audioTracks = this.subtitleTracks = null;\n  }\n  onManifestLoaded(event, data) {\n    const {\n      contentSteering\n    } = data;\n    if (contentSteering === null) {\n      return;\n    }\n    this.pathwayId = contentSteering.pathwayId;\n    this.uri = contentSteering.uri;\n    if (this.started) {\n      this.startLoad();\n    }\n  }\n  onManifestParsed(event, data) {\n    this.audioTracks = data.audioTracks;\n    this.subtitleTracks = data.subtitleTracks;\n  }\n  onError(event, data) {\n    const {\n      errorAction\n    } = data;\n    if ((errorAction == null ? void 0 : errorAction.action) === NetworkErrorAction.SendAlternateToPenaltyBox && errorAction.flags === ErrorActionFlags.MoveAllAlternatesMatchingHost) {\n      const levels = this.levels;\n      let pathwayPriority = this.pathwayPriority;\n      let errorPathway = this.pathwayId;\n      if (data.context) {\n        const {\n          groupId,\n          pathwayId,\n          type\n        } = data.context;\n        if (groupId && levels) {\n          errorPathway = this.getPathwayForGroupId(groupId, type, errorPathway);\n        } else if (pathwayId) {\n          errorPathway = pathwayId;\n        }\n      }\n      if (!(errorPathway in this.penalizedPathways)) {\n        this.penalizedPathways[errorPathway] = performance.now();\n      }\n      if (!pathwayPriority && levels) {\n        pathwayPriority = levels.reduce((pathways, level) => {\n          if (pathways.indexOf(level.pathwayId) === -1) {\n            pathways.push(level.pathwayId);\n          }\n          return pathways;\n        }, []);\n      }\n      if (pathwayPriority && pathwayPriority.length > 1) {\n        this.updatePathwayPriority(pathwayPriority);\n        errorAction.resolved = this.pathwayId !== errorPathway;\n      }\n      if (!errorAction.resolved) {\n        logger.warn(`Could not resolve ${data.details} (\"${data.error.message}\") with content-steering for Pathway: ${errorPathway} levels: ${levels ? levels.length : levels} priorities: ${JSON.stringify(pathwayPriority)} penalized: ${JSON.stringify(this.penalizedPathways)}`);\n      }\n    }\n  }\n  filterParsedLevels(levels) {\n    this.levels = levels;\n    let pathwayLevels = this.getLevelsForPathway(this.pathwayId);\n    if (pathwayLevels.length === 0) {\n      const pathwayId = levels[0].pathwayId;\n      this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to \"${pathwayId}\"`);\n      pathwayLevels = this.getLevelsForPathway(pathwayId);\n      this.pathwayId = pathwayId;\n    }\n    if (pathwayLevels.length !== levels.length) {\n      this.log(`Found ${pathwayLevels.length}/${levels.length} levels in Pathway \"${this.pathwayId}\"`);\n    }\n    return pathwayLevels;\n  }\n  getLevelsForPathway(pathwayId) {\n    if (this.levels === null) {\n      return [];\n    }\n    return this.levels.filter((level) => pathwayId === level.pathwayId);\n  }\n  updatePathwayPriority(pathwayPriority) {\n    this.pathwayPriority = pathwayPriority;\n    let levels;\n    const penalizedPathways = this.penalizedPathways;\n    const now2 = performance.now();\n    Object.keys(penalizedPathways).forEach((pathwayId) => {\n      if (now2 - penalizedPathways[pathwayId] > PATHWAY_PENALTY_DURATION_MS) {\n        delete penalizedPathways[pathwayId];\n      }\n    });\n    for (let i2 = 0; i2 < pathwayPriority.length; i2++) {\n      const pathwayId = pathwayPriority[i2];\n      if (pathwayId in penalizedPathways) {\n        continue;\n      }\n      if (pathwayId === this.pathwayId) {\n        return;\n      }\n      const selectedIndex = this.hls.nextLoadLevel;\n      const selectedLevel = this.hls.levels[selectedIndex];\n      levels = this.getLevelsForPathway(pathwayId);\n      if (levels.length > 0) {\n        this.log(`Setting Pathway to \"${pathwayId}\"`);\n        this.pathwayId = pathwayId;\n        reassignFragmentLevelIndexes(levels);\n        this.hls.trigger(Events.LEVELS_UPDATED, {\n          levels\n        });\n        const levelAfterChange = this.hls.levels[selectedIndex];\n        if (selectedLevel && levelAfterChange && this.levels) {\n          if (levelAfterChange.attrs[\"STABLE-VARIANT-ID\"] !== selectedLevel.attrs[\"STABLE-VARIANT-ID\"] && levelAfterChange.bitrate !== selectedLevel.bitrate) {\n            this.log(`Unstable Pathways change from bitrate ${selectedLevel.bitrate} to ${levelAfterChange.bitrate}`);\n          }\n          this.hls.nextLoadLevel = selectedIndex;\n        }\n        break;\n      }\n    }\n  }\n  getPathwayForGroupId(groupId, type, defaultPathway) {\n    const levels = this.getLevelsForPathway(defaultPathway).concat(this.levels || []);\n    for (let i2 = 0; i2 < levels.length; i2++) {\n      if (type === PlaylistContextType.AUDIO_TRACK && levels[i2].hasAudioGroup(groupId) || type === PlaylistContextType.SUBTITLE_TRACK && levels[i2].hasSubtitleGroup(groupId)) {\n        return levels[i2].pathwayId;\n      }\n    }\n    return defaultPathway;\n  }\n  clonePathways(pathwayClones) {\n    const levels = this.levels;\n    if (!levels) {\n      return;\n    }\n    const audioGroupCloneMap = {};\n    const subtitleGroupCloneMap = {};\n    pathwayClones.forEach((pathwayClone) => {\n      const {\n        ID: cloneId,\n        \"BASE-ID\": baseId,\n        \"URI-REPLACEMENT\": uriReplacement\n      } = pathwayClone;\n      if (levels.some((level) => level.pathwayId === cloneId)) {\n        return;\n      }\n      const clonedVariants = this.getLevelsForPathway(baseId).map((baseLevel) => {\n        const attributes = new AttrList(baseLevel.attrs);\n        attributes[\"PATHWAY-ID\"] = cloneId;\n        const clonedAudioGroupId = attributes.AUDIO && `${attributes.AUDIO}_clone_${cloneId}`;\n        const clonedSubtitleGroupId = attributes.SUBTITLES && `${attributes.SUBTITLES}_clone_${cloneId}`;\n        if (clonedAudioGroupId) {\n          audioGroupCloneMap[attributes.AUDIO] = clonedAudioGroupId;\n          attributes.AUDIO = clonedAudioGroupId;\n        }\n        if (clonedSubtitleGroupId) {\n          subtitleGroupCloneMap[attributes.SUBTITLES] = clonedSubtitleGroupId;\n          attributes.SUBTITLES = clonedSubtitleGroupId;\n        }\n        const url = performUriReplacement(baseLevel.uri, attributes[\"STABLE-VARIANT-ID\"], \"PER-VARIANT-URIS\", uriReplacement);\n        const clonedLevel = new Level({\n          attrs: attributes,\n          audioCodec: baseLevel.audioCodec,\n          bitrate: baseLevel.bitrate,\n          height: baseLevel.height,\n          name: baseLevel.name,\n          url,\n          videoCodec: baseLevel.videoCodec,\n          width: baseLevel.width\n        });\n        if (baseLevel.audioGroups) {\n          for (let i2 = 1; i2 < baseLevel.audioGroups.length; i2++) {\n            clonedLevel.addGroupId(\"audio\", `${baseLevel.audioGroups[i2]}_clone_${cloneId}`);\n          }\n        }\n        if (baseLevel.subtitleGroups) {\n          for (let i2 = 1; i2 < baseLevel.subtitleGroups.length; i2++) {\n            clonedLevel.addGroupId(\"text\", `${baseLevel.subtitleGroups[i2]}_clone_${cloneId}`);\n          }\n        }\n        return clonedLevel;\n      });\n      levels.push(...clonedVariants);\n      cloneRenditionGroups(this.audioTracks, audioGroupCloneMap, uriReplacement, cloneId);\n      cloneRenditionGroups(this.subtitleTracks, subtitleGroupCloneMap, uriReplacement, cloneId);\n    });\n  }\n  loadSteeringManifest(uri) {\n    const config = this.hls.config;\n    const Loader = config.loader;\n    if (this.loader) {\n      this.loader.destroy();\n    }\n    this.loader = new Loader(config);\n    let url;\n    try {\n      url = new self.URL(uri);\n    } catch (error) {\n      this.enabled = false;\n      this.log(`Failed to parse Steering Manifest URI: ${uri}`);\n      return;\n    }\n    if (url.protocol !== \"data:\") {\n      const throughput = (this.hls.bandwidthEstimate || config.abrEwmaDefaultEstimate) | 0;\n      url.searchParams.set(\"_HLS_pathway\", this.pathwayId);\n      url.searchParams.set(\"_HLS_throughput\", \"\" + throughput);\n    }\n    const context = {\n      responseType: \"json\",\n      url: url.href\n    };\n    const loadPolicy = config.steeringManifestLoadPolicy.default;\n    const legacyRetryCompatibility = loadPolicy.errorRetry || loadPolicy.timeoutRetry || {};\n    const loaderConfig = {\n      loadPolicy,\n      timeout: loadPolicy.maxLoadTimeMs,\n      maxRetry: legacyRetryCompatibility.maxNumRetry || 0,\n      retryDelay: legacyRetryCompatibility.retryDelayMs || 0,\n      maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0\n    };\n    const callbacks = {\n      onSuccess: (response, stats, context2, networkDetails) => {\n        this.log(`Loaded steering manifest: \"${url}\"`);\n        const steeringData = response.data;\n        if (steeringData.VERSION !== 1) {\n          this.log(`Steering VERSION ${steeringData.VERSION} not supported!`);\n          return;\n        }\n        this.updated = performance.now();\n        this.timeToLoad = steeringData.TTL;\n        const {\n          \"RELOAD-URI\": reloadUri,\n          \"PATHWAY-CLONES\": pathwayClones,\n          \"PATHWAY-PRIORITY\": pathwayPriority\n        } = steeringData;\n        if (reloadUri) {\n          try {\n            this.uri = new self.URL(reloadUri, url).href;\n          } catch (error) {\n            this.enabled = false;\n            this.log(`Failed to parse Steering Manifest RELOAD-URI: ${reloadUri}`);\n            return;\n          }\n        }\n        this.scheduleRefresh(this.uri || context2.url);\n        if (pathwayClones) {\n          this.clonePathways(pathwayClones);\n        }\n        const loadedSteeringData = {\n          steeringManifest: steeringData,\n          url: url.toString()\n        };\n        this.hls.trigger(Events.STEERING_MANIFEST_LOADED, loadedSteeringData);\n        if (pathwayPriority) {\n          this.updatePathwayPriority(pathwayPriority);\n        }\n      },\n      onError: (error, context2, networkDetails, stats) => {\n        this.log(`Error loading steering manifest: ${error.code} ${error.text} (${context2.url})`);\n        this.stopLoad();\n        if (error.code === 410) {\n          this.enabled = false;\n          this.log(`Steering manifest ${context2.url} no longer available`);\n          return;\n        }\n        let ttl = this.timeToLoad * 1e3;\n        if (error.code === 429) {\n          const loader = this.loader;\n          if (typeof (loader == null ? void 0 : loader.getResponseHeader) === \"function\") {\n            const retryAfter = loader.getResponseHeader(\"Retry-After\");\n            if (retryAfter) {\n              ttl = parseFloat(retryAfter) * 1e3;\n            }\n          }\n          this.log(`Steering manifest ${context2.url} rate limited`);\n          return;\n        }\n        this.scheduleRefresh(this.uri || context2.url, ttl);\n      },\n      onTimeout: (stats, context2, networkDetails) => {\n        this.log(`Timeout loading steering manifest (${context2.url})`);\n        this.scheduleRefresh(this.uri || context2.url);\n      }\n    };\n    this.log(`Requesting steering manifest: ${url}`);\n    this.loader.load(context, loaderConfig, callbacks);\n  }\n  scheduleRefresh(uri, ttlMs = this.timeToLoad * 1e3) {\n    this.clearTimeout();\n    this.reloadTimer = self.setTimeout(() => {\n      var _this$hls;\n      const media = (_this$hls = this.hls) == null ? void 0 : _this$hls.media;\n      if (media && !media.ended) {\n        this.loadSteeringManifest(uri);\n        return;\n      }\n      this.scheduleRefresh(uri, this.timeToLoad * 1e3);\n    }, ttlMs);\n  }\n};\nfunction cloneRenditionGroups(tracks, groupCloneMap, uriReplacement, cloneId) {\n  if (!tracks) {\n    return;\n  }\n  Object.keys(groupCloneMap).forEach((audioGroupId) => {\n    const clonedTracks = tracks.filter((track) => track.groupId === audioGroupId).map((track) => {\n      const clonedTrack = _extends({}, track);\n      clonedTrack.details = void 0;\n      clonedTrack.attrs = new AttrList(clonedTrack.attrs);\n      clonedTrack.url = clonedTrack.attrs.URI = performUriReplacement(track.url, track.attrs[\"STABLE-RENDITION-ID\"], \"PER-RENDITION-URIS\", uriReplacement);\n      clonedTrack.groupId = clonedTrack.attrs[\"GROUP-ID\"] = groupCloneMap[audioGroupId];\n      clonedTrack.attrs[\"PATHWAY-ID\"] = cloneId;\n      return clonedTrack;\n    });\n    tracks.push(...clonedTracks);\n  });\n}\nfunction performUriReplacement(uri, stableId, perOptionKey, uriReplacement) {\n  const {\n    HOST: host,\n    PARAMS: params,\n    [perOptionKey]: perOptionUris\n  } = uriReplacement;\n  let perVariantUri;\n  if (stableId) {\n    perVariantUri = perOptionUris == null ? void 0 : perOptionUris[stableId];\n    if (perVariantUri) {\n      uri = perVariantUri;\n    }\n  }\n  const url = new self.URL(uri);\n  if (host && !perVariantUri) {\n    url.host = host;\n  }\n  if (params) {\n    Object.keys(params).sort().forEach((key) => {\n      if (key) {\n        url.searchParams.set(key, params[key]);\n      }\n    });\n  }\n  return url.href;\n}\nvar AGE_HEADER_LINE_REGEX = /^age:\\s*[\\d.]+\\s*$/im;\nvar XhrLoader = class {\n  constructor(config) {\n    this.xhrSetup = void 0;\n    this.requestTimeout = void 0;\n    this.retryTimeout = void 0;\n    this.retryDelay = void 0;\n    this.config = null;\n    this.callbacks = null;\n    this.context = null;\n    this.loader = null;\n    this.stats = void 0;\n    this.xhrSetup = config ? config.xhrSetup || null : null;\n    this.stats = new LoadStats();\n    this.retryDelay = 0;\n  }\n  destroy() {\n    this.callbacks = null;\n    this.abortInternal();\n    this.loader = null;\n    this.config = null;\n    this.context = null;\n    this.xhrSetup = null;\n  }\n  abortInternal() {\n    const loader = this.loader;\n    self.clearTimeout(this.requestTimeout);\n    self.clearTimeout(this.retryTimeout);\n    if (loader) {\n      loader.onreadystatechange = null;\n      loader.onprogress = null;\n      if (loader.readyState !== 4) {\n        this.stats.aborted = true;\n        loader.abort();\n      }\n    }\n  }\n  abort() {\n    var _this$callbacks;\n    this.abortInternal();\n    if ((_this$callbacks = this.callbacks) != null && _this$callbacks.onAbort) {\n      this.callbacks.onAbort(this.stats, this.context, this.loader);\n    }\n  }\n  load(context, config, callbacks) {\n    if (this.stats.loading.start) {\n      throw new Error(\"Loader can only be used once.\");\n    }\n    this.stats.loading.start = self.performance.now();\n    this.context = context;\n    this.config = config;\n    this.callbacks = callbacks;\n    this.loadInternal();\n  }\n  loadInternal() {\n    const {\n      config,\n      context\n    } = this;\n    if (!config || !context) {\n      return;\n    }\n    const xhr = this.loader = new self.XMLHttpRequest();\n    const stats = this.stats;\n    stats.loading.first = 0;\n    stats.loaded = 0;\n    stats.aborted = false;\n    const xhrSetup = this.xhrSetup;\n    if (xhrSetup) {\n      Promise.resolve().then(() => {\n        if (this.loader !== xhr || this.stats.aborted) return;\n        return xhrSetup(xhr, context.url);\n      }).catch((error) => {\n        if (this.loader !== xhr || this.stats.aborted) return;\n        xhr.open(\"GET\", context.url, true);\n        return xhrSetup(xhr, context.url);\n      }).then(() => {\n        if (this.loader !== xhr || this.stats.aborted) return;\n        this.openAndSendXhr(xhr, context, config);\n      }).catch((error) => {\n        this.callbacks.onError({\n          code: xhr.status,\n          text: error.message\n        }, context, xhr, stats);\n        return;\n      });\n    } else {\n      this.openAndSendXhr(xhr, context, config);\n    }\n  }\n  openAndSendXhr(xhr, context, config) {\n    if (!xhr.readyState) {\n      xhr.open(\"GET\", context.url, true);\n    }\n    const headers = context.headers;\n    const {\n      maxTimeToFirstByteMs,\n      maxLoadTimeMs\n    } = config.loadPolicy;\n    if (headers) {\n      for (const header in headers) {\n        xhr.setRequestHeader(header, headers[header]);\n      }\n    }\n    if (context.rangeEnd) {\n      xhr.setRequestHeader(\"Range\", \"bytes=\" + context.rangeStart + \"-\" + (context.rangeEnd - 1));\n    }\n    xhr.onreadystatechange = this.readystatechange.bind(this);\n    xhr.onprogress = this.loadprogress.bind(this);\n    xhr.responseType = context.responseType;\n    self.clearTimeout(this.requestTimeout);\n    config.timeout = maxTimeToFirstByteMs && isFiniteNumber(maxTimeToFirstByteMs) ? maxTimeToFirstByteMs : maxLoadTimeMs;\n    this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.timeout);\n    xhr.send();\n  }\n  readystatechange() {\n    const {\n      context,\n      loader: xhr,\n      stats\n    } = this;\n    if (!context || !xhr) {\n      return;\n    }\n    const readyState = xhr.readyState;\n    const config = this.config;\n    if (stats.aborted) {\n      return;\n    }\n    if (readyState >= 2) {\n      if (stats.loading.first === 0) {\n        stats.loading.first = Math.max(self.performance.now(), stats.loading.start);\n        if (config.timeout !== config.loadPolicy.maxLoadTimeMs) {\n          self.clearTimeout(this.requestTimeout);\n          config.timeout = config.loadPolicy.maxLoadTimeMs;\n          this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.loadPolicy.maxLoadTimeMs - (stats.loading.first - stats.loading.start));\n        }\n      }\n      if (readyState === 4) {\n        self.clearTimeout(this.requestTimeout);\n        xhr.onreadystatechange = null;\n        xhr.onprogress = null;\n        const status2 = xhr.status;\n        const useResponseText = xhr.responseType === \"text\" ? xhr.responseText : null;\n        if (status2 >= 200 && status2 < 300) {\n          const data = useResponseText != null ? useResponseText : xhr.response;\n          if (data != null) {\n            stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n            const len = xhr.responseType === \"arraybuffer\" ? data.byteLength : data.length;\n            stats.loaded = stats.total = len;\n            stats.bwEstimate = stats.total * 8e3 / (stats.loading.end - stats.loading.first);\n            if (!this.callbacks) {\n              return;\n            }\n            const onProgress = this.callbacks.onProgress;\n            if (onProgress) {\n              onProgress(stats, context, data, xhr);\n            }\n            if (!this.callbacks) {\n              return;\n            }\n            const _response = {\n              url: xhr.responseURL,\n              data,\n              code: status2\n            };\n            this.callbacks.onSuccess(_response, stats, context, xhr);\n            return;\n          }\n        }\n        const retryConfig = config.loadPolicy.errorRetry;\n        const retryCount = stats.retry;\n        const response = {\n          url: context.url,\n          data: void 0,\n          code: status2\n        };\n        if (shouldRetry(retryConfig, retryCount, false, response)) {\n          this.retry(retryConfig);\n        } else {\n          logger.error(`${status2} while loading ${context.url}`);\n          this.callbacks.onError({\n            code: status2,\n            text: xhr.statusText\n          }, context, xhr, stats);\n        }\n      }\n    }\n  }\n  loadtimeout() {\n    if (!this.config) return;\n    const retryConfig = this.config.loadPolicy.timeoutRetry;\n    const retryCount = this.stats.retry;\n    if (shouldRetry(retryConfig, retryCount, true)) {\n      this.retry(retryConfig);\n    } else {\n      var _this$context;\n      logger.warn(`timeout while loading ${(_this$context = this.context) == null ? void 0 : _this$context.url}`);\n      const callbacks = this.callbacks;\n      if (callbacks) {\n        this.abortInternal();\n        callbacks.onTimeout(this.stats, this.context, this.loader);\n      }\n    }\n  }\n  retry(retryConfig) {\n    const {\n      context,\n      stats\n    } = this;\n    this.retryDelay = getRetryDelay(retryConfig, stats.retry);\n    stats.retry++;\n    logger.warn(`${status ? \"HTTP Status \" + status : \"Timeout\"} while loading ${context == null ? void 0 : context.url}, retrying ${stats.retry}/${retryConfig.maxNumRetry} in ${this.retryDelay}ms`);\n    this.abortInternal();\n    this.loader = null;\n    self.clearTimeout(this.retryTimeout);\n    this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay);\n  }\n  loadprogress(event) {\n    const stats = this.stats;\n    stats.loaded = event.loaded;\n    if (event.lengthComputable) {\n      stats.total = event.total;\n    }\n  }\n  getCacheAge() {\n    let result = null;\n    if (this.loader && AGE_HEADER_LINE_REGEX.test(this.loader.getAllResponseHeaders())) {\n      const ageHeader = this.loader.getResponseHeader(\"age\");\n      result = ageHeader ? parseFloat(ageHeader) : null;\n    }\n    return result;\n  }\n  getResponseHeader(name) {\n    if (this.loader && new RegExp(`^${name}:\\\\s*[\\\\d.]+\\\\s*$`, \"im\").test(this.loader.getAllResponseHeaders())) {\n      return this.loader.getResponseHeader(name);\n    }\n    return null;\n  }\n};\nfunction fetchSupported() {\n  if (\n    // @ts-ignore\n    self.fetch && self.AbortController && self.ReadableStream && self.Request\n  ) {\n    try {\n      new self.ReadableStream({});\n      return true;\n    } catch (e) {\n    }\n  }\n  return false;\n}\nvar BYTERANGE = /(\\d+)-(\\d+)\\/(\\d+)/;\nvar FetchLoader = class {\n  constructor(config) {\n    this.fetchSetup = void 0;\n    this.requestTimeout = void 0;\n    this.request = null;\n    this.response = null;\n    this.controller = void 0;\n    this.context = null;\n    this.config = null;\n    this.callbacks = null;\n    this.stats = void 0;\n    this.loader = null;\n    this.fetchSetup = config.fetchSetup || getRequest;\n    this.controller = new self.AbortController();\n    this.stats = new LoadStats();\n  }\n  destroy() {\n    this.loader = this.callbacks = this.context = this.config = this.request = null;\n    this.abortInternal();\n    this.response = null;\n    this.fetchSetup = this.controller = this.stats = null;\n  }\n  abortInternal() {\n    if (this.controller && !this.stats.loading.end) {\n      this.stats.aborted = true;\n      this.controller.abort();\n    }\n  }\n  abort() {\n    var _this$callbacks;\n    this.abortInternal();\n    if ((_this$callbacks = this.callbacks) != null && _this$callbacks.onAbort) {\n      this.callbacks.onAbort(this.stats, this.context, this.response);\n    }\n  }\n  load(context, config, callbacks) {\n    const stats = this.stats;\n    if (stats.loading.start) {\n      throw new Error(\"Loader can only be used once.\");\n    }\n    stats.loading.start = self.performance.now();\n    const initParams = getRequestParameters(context, this.controller.signal);\n    const onProgress = callbacks.onProgress;\n    const isArrayBuffer = context.responseType === \"arraybuffer\";\n    const LENGTH = isArrayBuffer ? \"byteLength\" : \"length\";\n    const {\n      maxTimeToFirstByteMs,\n      maxLoadTimeMs\n    } = config.loadPolicy;\n    this.context = context;\n    this.config = config;\n    this.callbacks = callbacks;\n    this.request = this.fetchSetup(context, initParams);\n    self.clearTimeout(this.requestTimeout);\n    config.timeout = maxTimeToFirstByteMs && isFiniteNumber(maxTimeToFirstByteMs) ? maxTimeToFirstByteMs : maxLoadTimeMs;\n    this.requestTimeout = self.setTimeout(() => {\n      this.abortInternal();\n      callbacks.onTimeout(stats, context, this.response);\n    }, config.timeout);\n    self.fetch(this.request).then((response) => {\n      this.response = this.loader = response;\n      const first = Math.max(self.performance.now(), stats.loading.start);\n      self.clearTimeout(this.requestTimeout);\n      config.timeout = maxLoadTimeMs;\n      this.requestTimeout = self.setTimeout(() => {\n        this.abortInternal();\n        callbacks.onTimeout(stats, context, this.response);\n      }, maxLoadTimeMs - (first - stats.loading.start));\n      if (!response.ok) {\n        const {\n          status: status2,\n          statusText\n        } = response;\n        throw new FetchError(statusText || \"fetch, bad network response\", status2, response);\n      }\n      stats.loading.first = first;\n      stats.total = getContentLength(response.headers) || stats.total;\n      if (onProgress && isFiniteNumber(config.highWaterMark)) {\n        return this.loadProgressively(response, stats, context, config.highWaterMark, onProgress);\n      }\n      if (isArrayBuffer) {\n        return response.arrayBuffer();\n      }\n      if (context.responseType === \"json\") {\n        return response.json();\n      }\n      return response.text();\n    }).then((responseData) => {\n      const response = this.response;\n      if (!response) {\n        throw new Error(\"loader destroyed\");\n      }\n      self.clearTimeout(this.requestTimeout);\n      stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n      const total = responseData[LENGTH];\n      if (total) {\n        stats.loaded = stats.total = total;\n      }\n      const loaderResponse = {\n        url: response.url,\n        data: responseData,\n        code: response.status\n      };\n      if (onProgress && !isFiniteNumber(config.highWaterMark)) {\n        onProgress(stats, context, responseData, response);\n      }\n      callbacks.onSuccess(loaderResponse, stats, context, response);\n    }).catch((error) => {\n      self.clearTimeout(this.requestTimeout);\n      if (stats.aborted) {\n        return;\n      }\n      const code = !error ? 0 : error.code || 0;\n      const text = !error ? null : error.message;\n      callbacks.onError({\n        code,\n        text\n      }, context, error ? error.details : null, stats);\n    });\n  }\n  getCacheAge() {\n    let result = null;\n    if (this.response) {\n      const ageHeader = this.response.headers.get(\"age\");\n      result = ageHeader ? parseFloat(ageHeader) : null;\n    }\n    return result;\n  }\n  getResponseHeader(name) {\n    return this.response ? this.response.headers.get(name) : null;\n  }\n  loadProgressively(response, stats, context, highWaterMark = 0, onProgress) {\n    const chunkCache = new ChunkCache();\n    const reader = response.body.getReader();\n    const pump = () => {\n      return reader.read().then((data) => {\n        if (data.done) {\n          if (chunkCache.dataLength) {\n            onProgress(stats, context, chunkCache.flush(), response);\n          }\n          return Promise.resolve(new ArrayBuffer(0));\n        }\n        const chunk = data.value;\n        const len = chunk.length;\n        stats.loaded += len;\n        if (len < highWaterMark || chunkCache.dataLength) {\n          chunkCache.push(chunk);\n          if (chunkCache.dataLength >= highWaterMark) {\n            onProgress(stats, context, chunkCache.flush(), response);\n          }\n        } else {\n          onProgress(stats, context, chunk, response);\n        }\n        return pump();\n      }).catch(() => {\n        return Promise.reject();\n      });\n    };\n    return pump();\n  }\n};\nfunction getRequestParameters(context, signal) {\n  const initParams = {\n    method: \"GET\",\n    mode: \"cors\",\n    credentials: \"same-origin\",\n    signal,\n    headers: new self.Headers(_extends({}, context.headers))\n  };\n  if (context.rangeEnd) {\n    initParams.headers.set(\"Range\", \"bytes=\" + context.rangeStart + \"-\" + String(context.rangeEnd - 1));\n  }\n  return initParams;\n}\nfunction getByteRangeLength(byteRangeHeader) {\n  const result = BYTERANGE.exec(byteRangeHeader);\n  if (result) {\n    return parseInt(result[2]) - parseInt(result[1]) + 1;\n  }\n}\nfunction getContentLength(headers) {\n  const contentRange = headers.get(\"Content-Range\");\n  if (contentRange) {\n    const byteRangeLength = getByteRangeLength(contentRange);\n    if (isFiniteNumber(byteRangeLength)) {\n      return byteRangeLength;\n    }\n  }\n  const contentLength = headers.get(\"Content-Length\");\n  if (contentLength) {\n    return parseInt(contentLength);\n  }\n}\nfunction getRequest(context, initParams) {\n  return new self.Request(context.url, initParams);\n}\nvar FetchError = class extends Error {\n  constructor(message, code, details) {\n    super(message);\n    this.code = void 0;\n    this.details = void 0;\n    this.code = code;\n    this.details = details;\n  }\n};\nvar WHITESPACE_CHAR = /\\s/;\nvar Cues = {\n  newCue(track, startTime, endTime, captionScreen) {\n    const result = [];\n    let row;\n    let cue;\n    let indenting;\n    let indent;\n    let text;\n    const Cue = self.VTTCue || self.TextTrackCue;\n    for (let r10 = 0; r10 < captionScreen.rows.length; r10++) {\n      row = captionScreen.rows[r10];\n      indenting = true;\n      indent = 0;\n      text = \"\";\n      if (!row.isEmpty()) {\n        var _track$cues;\n        for (let c4 = 0; c4 < row.chars.length; c4++) {\n          if (WHITESPACE_CHAR.test(row.chars[c4].uchar) && indenting) {\n            indent++;\n          } else {\n            text += row.chars[c4].uchar;\n            indenting = false;\n          }\n        }\n        row.cueStartTime = startTime;\n        if (startTime === endTime) {\n          endTime += 1e-4;\n        }\n        if (indent >= 16) {\n          indent--;\n        } else {\n          indent++;\n        }\n        const cueText = fixLineBreaks(text.trim());\n        const id = generateCueId(startTime, endTime, cueText);\n        if (!(track != null && (_track$cues = track.cues) != null && _track$cues.getCueById(id))) {\n          cue = new Cue(startTime, endTime, cueText);\n          cue.id = id;\n          cue.line = r10 + 1;\n          cue.align = \"left\";\n          cue.position = 10 + Math.min(80, Math.floor(indent * 8 / 32) * 10);\n          result.push(cue);\n        }\n      }\n    }\n    if (track && result.length) {\n      result.sort((cueA, cueB) => {\n        if (cueA.line === \"auto\" || cueB.line === \"auto\") {\n          return 0;\n        }\n        if (cueA.line > 8 && cueB.line > 8) {\n          return cueB.line - cueA.line;\n        }\n        return cueA.line - cueB.line;\n      });\n      result.forEach((cue2) => addCueToTrack(track, cue2));\n    }\n    return result;\n  }\n};\nvar defaultLoadPolicy = {\n  maxTimeToFirstByteMs: 8e3,\n  maxLoadTimeMs: 2e4,\n  timeoutRetry: null,\n  errorRetry: null\n};\nvar hlsDefaultConfig = _objectSpread2(_objectSpread2({\n  autoStartLoad: true,\n  // used by stream-controller\n  startPosition: -1,\n  // used by stream-controller\n  defaultAudioCodec: void 0,\n  // used by stream-controller\n  debug: false,\n  // used by logger\n  capLevelOnFPSDrop: false,\n  // used by fps-controller\n  capLevelToPlayerSize: false,\n  // used by cap-level-controller\n  ignoreDevicePixelRatio: false,\n  // used by cap-level-controller\n  preferManagedMediaSource: true,\n  initialLiveManifestSize: 1,\n  // used by stream-controller\n  maxBufferLength: 30,\n  // used by stream-controller\n  backBufferLength: Infinity,\n  // used by buffer-controller\n  frontBufferFlushThreshold: Infinity,\n  maxBufferSize: 60 * 1e3 * 1e3,\n  // used by stream-controller\n  maxBufferHole: 0.1,\n  // used by stream-controller\n  highBufferWatchdogPeriod: 2,\n  // used by stream-controller\n  nudgeOffset: 0.1,\n  // used by stream-controller\n  nudgeMaxRetry: 3,\n  // used by stream-controller\n  maxFragLookUpTolerance: 0.25,\n  // used by stream-controller\n  liveSyncDurationCount: 3,\n  // used by latency-controller\n  liveMaxLatencyDurationCount: Infinity,\n  // used by latency-controller\n  liveSyncDuration: void 0,\n  // used by latency-controller\n  liveMaxLatencyDuration: void 0,\n  // used by latency-controller\n  maxLiveSyncPlaybackRate: 1,\n  // used by latency-controller\n  liveDurationInfinity: false,\n  // used by buffer-controller\n  /**\n   * @deprecated use backBufferLength\n   */\n  liveBackBufferLength: null,\n  // used by buffer-controller\n  maxMaxBufferLength: 600,\n  // used by stream-controller\n  enableWorker: true,\n  // used by transmuxer\n  workerPath: null,\n  // used by transmuxer\n  enableSoftwareAES: true,\n  // used by decrypter\n  startLevel: void 0,\n  // used by level-controller\n  startFragPrefetch: false,\n  // used by stream-controller\n  fpsDroppedMonitoringPeriod: 5e3,\n  // used by fps-controller\n  fpsDroppedMonitoringThreshold: 0.2,\n  // used by fps-controller\n  appendErrorMaxRetry: 3,\n  // used by buffer-controller\n  loader: XhrLoader,\n  // loader: FetchLoader,\n  fLoader: void 0,\n  // used by fragment-loader\n  pLoader: void 0,\n  // used by playlist-loader\n  xhrSetup: void 0,\n  // used by xhr-loader\n  licenseXhrSetup: void 0,\n  // used by eme-controller\n  licenseResponseCallback: void 0,\n  // used by eme-controller\n  abrController: AbrController,\n  bufferController: BufferController,\n  capLevelController: CapLevelController,\n  errorController: ErrorController,\n  fpsController: FPSController,\n  stretchShortVideoTrack: false,\n  // used by mp4-remuxer\n  maxAudioFramesDrift: 1,\n  // used by mp4-remuxer\n  forceKeyFrameOnDiscontinuity: true,\n  // used by ts-demuxer\n  abrEwmaFastLive: 3,\n  // used by abr-controller\n  abrEwmaSlowLive: 9,\n  // used by abr-controller\n  abrEwmaFastVoD: 3,\n  // used by abr-controller\n  abrEwmaSlowVoD: 9,\n  // used by abr-controller\n  abrEwmaDefaultEstimate: 5e5,\n  // 500 kbps  // used by abr-controller\n  abrEwmaDefaultEstimateMax: 5e6,\n  // 5 mbps\n  abrBandWidthFactor: 0.95,\n  // used by abr-controller\n  abrBandWidthUpFactor: 0.7,\n  // used by abr-controller\n  abrMaxWithRealBitrate: false,\n  // used by abr-controller\n  maxStarvationDelay: 4,\n  // used by abr-controller\n  maxLoadingDelay: 4,\n  // used by abr-controller\n  minAutoBitrate: 0,\n  // used by hls\n  emeEnabled: false,\n  // used by eme-controller\n  widevineLicenseUrl: void 0,\n  // used by eme-controller\n  drmSystems: {},\n  // used by eme-controller\n  drmSystemOptions: {},\n  // used by eme-controller\n  requestMediaKeySystemAccessFunc: requestMediaKeySystemAccess,\n  // used by eme-controller\n  testBandwidth: true,\n  progressive: false,\n  lowLatencyMode: true,\n  cmcd: void 0,\n  enableDateRangeMetadataCues: true,\n  enableEmsgMetadataCues: true,\n  enableID3MetadataCues: true,\n  useMediaCapabilities: true,\n  certLoadPolicy: {\n    default: defaultLoadPolicy\n  },\n  keyLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: 8e3,\n      maxLoadTimeMs: 2e4,\n      timeoutRetry: {\n        maxNumRetry: 1,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 2e4,\n        backoff: \"linear\"\n      },\n      errorRetry: {\n        maxNumRetry: 8,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 2e4,\n        backoff: \"linear\"\n      }\n    }\n  },\n  manifestLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: Infinity,\n      maxLoadTimeMs: 2e4,\n      timeoutRetry: {\n        maxNumRetry: 2,\n        retryDelayMs: 0,\n        maxRetryDelayMs: 0\n      },\n      errorRetry: {\n        maxNumRetry: 1,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 8e3\n      }\n    }\n  },\n  playlistLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: 1e4,\n      maxLoadTimeMs: 2e4,\n      timeoutRetry: {\n        maxNumRetry: 2,\n        retryDelayMs: 0,\n        maxRetryDelayMs: 0\n      },\n      errorRetry: {\n        maxNumRetry: 2,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 8e3\n      }\n    }\n  },\n  fragLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: 1e4,\n      maxLoadTimeMs: 12e4,\n      timeoutRetry: {\n        maxNumRetry: 4,\n        retryDelayMs: 0,\n        maxRetryDelayMs: 0\n      },\n      errorRetry: {\n        maxNumRetry: 6,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 8e3\n      }\n    }\n  },\n  steeringManifestLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: 1e4,\n      maxLoadTimeMs: 2e4,\n      timeoutRetry: {\n        maxNumRetry: 2,\n        retryDelayMs: 0,\n        maxRetryDelayMs: 0\n      },\n      errorRetry: {\n        maxNumRetry: 1,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 8e3\n      }\n    }\n  },\n  // These default settings are deprecated in favor of the above policies\n  // and are maintained for backwards compatibility\n  manifestLoadingTimeOut: 1e4,\n  manifestLoadingMaxRetry: 1,\n  manifestLoadingRetryDelay: 1e3,\n  manifestLoadingMaxRetryTimeout: 64e3,\n  levelLoadingTimeOut: 1e4,\n  levelLoadingMaxRetry: 4,\n  levelLoadingRetryDelay: 1e3,\n  levelLoadingMaxRetryTimeout: 64e3,\n  fragLoadingTimeOut: 2e4,\n  fragLoadingMaxRetry: 6,\n  fragLoadingRetryDelay: 1e3,\n  fragLoadingMaxRetryTimeout: 64e3\n}, timelineConfig()), {}, {\n  subtitleStreamController: SubtitleStreamController,\n  subtitleTrackController: SubtitleTrackController,\n  timelineController: TimelineController,\n  audioStreamController: AudioStreamController,\n  audioTrackController: AudioTrackController,\n  emeController: EMEController,\n  cmcdController: CMCDController,\n  contentSteeringController: ContentSteeringController\n});\nfunction timelineConfig() {\n  return {\n    cueHandler: Cues,\n    // used by timeline-controller\n    enableWebVTT: true,\n    // used by timeline-controller\n    enableIMSC1: true,\n    // used by timeline-controller\n    enableCEA708Captions: true,\n    // used by timeline-controller\n    captionsTextTrack1Label: \"English\",\n    // used by timeline-controller\n    captionsTextTrack1LanguageCode: \"en\",\n    // used by timeline-controller\n    captionsTextTrack2Label: \"Spanish\",\n    // used by timeline-controller\n    captionsTextTrack2LanguageCode: \"es\",\n    // used by timeline-controller\n    captionsTextTrack3Label: \"Unknown CC\",\n    // used by timeline-controller\n    captionsTextTrack3LanguageCode: \"\",\n    // used by timeline-controller\n    captionsTextTrack4Label: \"Unknown CC\",\n    // used by timeline-controller\n    captionsTextTrack4LanguageCode: \"\",\n    // used by timeline-controller\n    renderTextTracksNatively: true\n  };\n}\nfunction mergeConfig(defaultConfig, userConfig) {\n  if ((userConfig.liveSyncDurationCount || userConfig.liveMaxLatencyDurationCount) && (userConfig.liveSyncDuration || userConfig.liveMaxLatencyDuration)) {\n    throw new Error(\"Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration\");\n  }\n  if (userConfig.liveMaxLatencyDurationCount !== void 0 && (userConfig.liveSyncDurationCount === void 0 || userConfig.liveMaxLatencyDurationCount <= userConfig.liveSyncDurationCount)) {\n    throw new Error('Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be greater than \"liveSyncDurationCount\"');\n  }\n  if (userConfig.liveMaxLatencyDuration !== void 0 && (userConfig.liveSyncDuration === void 0 || userConfig.liveMaxLatencyDuration <= userConfig.liveSyncDuration)) {\n    throw new Error('Illegal hls.js config: \"liveMaxLatencyDuration\" must be greater than \"liveSyncDuration\"');\n  }\n  const defaultsCopy = deepCpy(defaultConfig);\n  const deprecatedSettingTypes = [\"manifest\", \"level\", \"frag\"];\n  const deprecatedSettings = [\"TimeOut\", \"MaxRetry\", \"RetryDelay\", \"MaxRetryTimeout\"];\n  deprecatedSettingTypes.forEach((type) => {\n    const policyName = `${type === \"level\" ? \"playlist\" : type}LoadPolicy`;\n    const policyNotSet = userConfig[policyName] === void 0;\n    const report = [];\n    deprecatedSettings.forEach((setting) => {\n      const deprecatedSetting = `${type}Loading${setting}`;\n      const value = userConfig[deprecatedSetting];\n      if (value !== void 0 && policyNotSet) {\n        report.push(deprecatedSetting);\n        const settings = defaultsCopy[policyName].default;\n        userConfig[policyName] = {\n          default: settings\n        };\n        switch (setting) {\n          case \"TimeOut\":\n            settings.maxLoadTimeMs = value;\n            settings.maxTimeToFirstByteMs = value;\n            break;\n          case \"MaxRetry\":\n            settings.errorRetry.maxNumRetry = value;\n            settings.timeoutRetry.maxNumRetry = value;\n            break;\n          case \"RetryDelay\":\n            settings.errorRetry.retryDelayMs = value;\n            settings.timeoutRetry.retryDelayMs = value;\n            break;\n          case \"MaxRetryTimeout\":\n            settings.errorRetry.maxRetryDelayMs = value;\n            settings.timeoutRetry.maxRetryDelayMs = value;\n            break;\n        }\n      }\n    });\n    if (report.length) {\n      logger.warn(`hls.js config: \"${report.join('\", \"')}\" setting(s) are deprecated, use \"${policyName}\": ${JSON.stringify(userConfig[policyName])}`);\n    }\n  });\n  return _objectSpread2(_objectSpread2({}, defaultsCopy), userConfig);\n}\nfunction deepCpy(obj) {\n  if (obj && typeof obj === \"object\") {\n    if (Array.isArray(obj)) {\n      return obj.map(deepCpy);\n    }\n    return Object.keys(obj).reduce((result, key) => {\n      result[key] = deepCpy(obj[key]);\n      return result;\n    }, {});\n  }\n  return obj;\n}\nfunction enableStreamingMode(config) {\n  const currentLoader = config.loader;\n  if (currentLoader !== FetchLoader && currentLoader !== XhrLoader) {\n    logger.log(\"[config]: Custom loader detected, cannot enable progressive streaming\");\n    config.progressive = false;\n  } else {\n    const canStreamProgressively = fetchSupported();\n    if (canStreamProgressively) {\n      config.loader = FetchLoader;\n      config.progressive = true;\n      config.enableSoftwareAES = true;\n      logger.log(\"[config]: Progressive streaming enabled, using FetchLoader\");\n    }\n  }\n}\nvar chromeOrFirefox;\nvar LevelController = class extends BasePlaylistController {\n  constructor(hls, contentSteeringController) {\n    super(hls, \"[level-controller]\");\n    this._levels = [];\n    this._firstLevel = -1;\n    this._maxAutoLevel = -1;\n    this._startLevel = void 0;\n    this.currentLevel = null;\n    this.currentLevelIndex = -1;\n    this.manualLevelIndex = -1;\n    this.steering = void 0;\n    this.onParsedComplete = void 0;\n    this.steering = contentSteeringController;\n    this._registerListeners();\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n  destroy() {\n    this._unregisterListeners();\n    this.steering = null;\n    this.resetLevels();\n    super.destroy();\n  }\n  stopLoad() {\n    const levels = this._levels;\n    levels.forEach((level) => {\n      level.loadError = 0;\n      level.fragmentError = 0;\n    });\n    super.stopLoad();\n  }\n  resetLevels() {\n    this._startLevel = void 0;\n    this.manualLevelIndex = -1;\n    this.currentLevelIndex = -1;\n    this.currentLevel = null;\n    this._levels = [];\n    this._maxAutoLevel = -1;\n  }\n  onManifestLoading(event, data) {\n    this.resetLevels();\n  }\n  onManifestLoaded(event, data) {\n    const preferManagedMediaSource = this.hls.config.preferManagedMediaSource;\n    const levels = [];\n    const redundantSet = {};\n    const generatePathwaySet = {};\n    let resolutionFound = false;\n    let videoCodecFound = false;\n    let audioCodecFound = false;\n    data.levels.forEach((levelParsed) => {\n      var _audioCodec, _videoCodec;\n      const attributes = levelParsed.attrs;\n      let {\n        audioCodec,\n        videoCodec\n      } = levelParsed;\n      if (((_audioCodec = audioCodec) == null ? void 0 : _audioCodec.indexOf(\"mp4a.40.34\")) !== -1) {\n        chromeOrFirefox || (chromeOrFirefox = /chrome|firefox/i.test(navigator.userAgent));\n        if (chromeOrFirefox) {\n          levelParsed.audioCodec = audioCodec = void 0;\n        }\n      }\n      if (audioCodec) {\n        levelParsed.audioCodec = audioCodec = getCodecCompatibleName(audioCodec, preferManagedMediaSource);\n      }\n      if (((_videoCodec = videoCodec) == null ? void 0 : _videoCodec.indexOf(\"avc1\")) === 0) {\n        videoCodec = levelParsed.videoCodec = convertAVC1ToAVCOTI(videoCodec);\n      }\n      const {\n        width,\n        height,\n        unknownCodecs\n      } = levelParsed;\n      resolutionFound || (resolutionFound = !!(width && height));\n      videoCodecFound || (videoCodecFound = !!videoCodec);\n      audioCodecFound || (audioCodecFound = !!audioCodec);\n      if (unknownCodecs != null && unknownCodecs.length || audioCodec && !areCodecsMediaSourceSupported(audioCodec, \"audio\", preferManagedMediaSource) || videoCodec && !areCodecsMediaSourceSupported(videoCodec, \"video\", preferManagedMediaSource)) {\n        return;\n      }\n      const {\n        CODECS,\n        \"FRAME-RATE\": FRAMERATE,\n        \"HDCP-LEVEL\": HDCP,\n        \"PATHWAY-ID\": PATHWAY,\n        RESOLUTION,\n        \"VIDEO-RANGE\": VIDEO_RANGE\n      } = attributes;\n      const contentSteeringPrefix = `${PATHWAY || \".\"}-`;\n      const levelKey = `${contentSteeringPrefix}${levelParsed.bitrate}-${RESOLUTION}-${FRAMERATE}-${CODECS}-${VIDEO_RANGE}-${HDCP}`;\n      if (!redundantSet[levelKey]) {\n        const level = new Level(levelParsed);\n        redundantSet[levelKey] = level;\n        generatePathwaySet[levelKey] = 1;\n        levels.push(level);\n      } else if (redundantSet[levelKey].uri !== levelParsed.url && !levelParsed.attrs[\"PATHWAY-ID\"]) {\n        const pathwayCount = generatePathwaySet[levelKey] += 1;\n        levelParsed.attrs[\"PATHWAY-ID\"] = new Array(pathwayCount + 1).join(\".\");\n        const level = new Level(levelParsed);\n        redundantSet[levelKey] = level;\n        levels.push(level);\n      } else {\n        redundantSet[levelKey].addGroupId(\"audio\", attributes.AUDIO);\n        redundantSet[levelKey].addGroupId(\"text\", attributes.SUBTITLES);\n      }\n    });\n    this.filterAndSortMediaOptions(levels, data, resolutionFound, videoCodecFound, audioCodecFound);\n  }\n  filterAndSortMediaOptions(filteredLevels, data, resolutionFound, videoCodecFound, audioCodecFound) {\n    let audioTracks = [];\n    let subtitleTracks = [];\n    let levels = filteredLevels;\n    if ((resolutionFound || videoCodecFound) && audioCodecFound) {\n      levels = levels.filter(({\n        videoCodec,\n        videoRange,\n        width,\n        height\n      }) => (!!videoCodec || !!(width && height)) && isVideoRange(videoRange));\n    }\n    if (levels.length === 0) {\n      Promise.resolve().then(() => {\n        if (this.hls) {\n          if (data.levels.length) {\n            this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(data.levels[0].attrs)}`);\n          }\n          const error = new Error(\"no level with compatible codecs found in manifest\");\n          this.hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,\n            fatal: true,\n            url: data.url,\n            error,\n            reason: error.message\n          });\n        }\n      });\n      return;\n    }\n    if (data.audioTracks) {\n      const {\n        preferManagedMediaSource\n      } = this.hls.config;\n      audioTracks = data.audioTracks.filter((track) => !track.audioCodec || areCodecsMediaSourceSupported(track.audioCodec, \"audio\", preferManagedMediaSource));\n      assignTrackIdsByGroup(audioTracks);\n    }\n    if (data.subtitles) {\n      subtitleTracks = data.subtitles;\n      assignTrackIdsByGroup(subtitleTracks);\n    }\n    const unsortedLevels = levels.slice(0);\n    levels.sort((a2, b4) => {\n      if (a2.attrs[\"HDCP-LEVEL\"] !== b4.attrs[\"HDCP-LEVEL\"]) {\n        return (a2.attrs[\"HDCP-LEVEL\"] || \"\") > (b4.attrs[\"HDCP-LEVEL\"] || \"\") ? 1 : -1;\n      }\n      if (resolutionFound && a2.height !== b4.height) {\n        return a2.height - b4.height;\n      }\n      if (a2.frameRate !== b4.frameRate) {\n        return a2.frameRate - b4.frameRate;\n      }\n      if (a2.videoRange !== b4.videoRange) {\n        return VideoRangeValues.indexOf(a2.videoRange) - VideoRangeValues.indexOf(b4.videoRange);\n      }\n      if (a2.videoCodec !== b4.videoCodec) {\n        const valueA = videoCodecPreferenceValue(a2.videoCodec);\n        const valueB = videoCodecPreferenceValue(b4.videoCodec);\n        if (valueA !== valueB) {\n          return valueB - valueA;\n        }\n      }\n      if (a2.uri === b4.uri && a2.codecSet !== b4.codecSet) {\n        const valueA = codecsSetSelectionPreferenceValue(a2.codecSet);\n        const valueB = codecsSetSelectionPreferenceValue(b4.codecSet);\n        if (valueA !== valueB) {\n          return valueB - valueA;\n        }\n      }\n      if (a2.averageBitrate !== b4.averageBitrate) {\n        return a2.averageBitrate - b4.averageBitrate;\n      }\n      return 0;\n    });\n    let firstLevelInPlaylist = unsortedLevels[0];\n    if (this.steering) {\n      levels = this.steering.filterParsedLevels(levels);\n      if (levels.length !== unsortedLevels.length) {\n        for (let i2 = 0; i2 < unsortedLevels.length; i2++) {\n          if (unsortedLevels[i2].pathwayId === levels[0].pathwayId) {\n            firstLevelInPlaylist = unsortedLevels[i2];\n            break;\n          }\n        }\n      }\n    }\n    this._levels = levels;\n    for (let i2 = 0; i2 < levels.length; i2++) {\n      if (levels[i2] === firstLevelInPlaylist) {\n        var _this$hls$userConfig;\n        this._firstLevel = i2;\n        const firstLevelBitrate = firstLevelInPlaylist.bitrate;\n        const bandwidthEstimate = this.hls.bandwidthEstimate;\n        this.log(`manifest loaded, ${levels.length} level(s) found, first bitrate: ${firstLevelBitrate}`);\n        if (((_this$hls$userConfig = this.hls.userConfig) == null ? void 0 : _this$hls$userConfig.abrEwmaDefaultEstimate) === void 0) {\n          const startingBwEstimate = Math.min(firstLevelBitrate, this.hls.config.abrEwmaDefaultEstimateMax);\n          if (startingBwEstimate > bandwidthEstimate && bandwidthEstimate === hlsDefaultConfig.abrEwmaDefaultEstimate) {\n            this.hls.bandwidthEstimate = startingBwEstimate;\n          }\n        }\n        break;\n      }\n    }\n    const audioOnly = audioCodecFound && !videoCodecFound;\n    const edata = {\n      levels,\n      audioTracks,\n      subtitleTracks,\n      sessionData: data.sessionData,\n      sessionKeys: data.sessionKeys,\n      firstLevel: this._firstLevel,\n      stats: data.stats,\n      audio: audioCodecFound,\n      video: videoCodecFound,\n      altAudio: !audioOnly && audioTracks.some((t2) => !!t2.url)\n    };\n    this.hls.trigger(Events.MANIFEST_PARSED, edata);\n    if (this.hls.config.autoStartLoad || this.hls.forceStartLoad) {\n      this.hls.startLoad(this.hls.config.startPosition);\n    }\n  }\n  get levels() {\n    if (this._levels.length === 0) {\n      return null;\n    }\n    return this._levels;\n  }\n  get level() {\n    return this.currentLevelIndex;\n  }\n  set level(newLevel) {\n    const levels = this._levels;\n    if (levels.length === 0) {\n      return;\n    }\n    if (newLevel < 0 || newLevel >= levels.length) {\n      const error = new Error(\"invalid level idx\");\n      const fatal = newLevel < 0;\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.OTHER_ERROR,\n        details: ErrorDetails.LEVEL_SWITCH_ERROR,\n        level: newLevel,\n        fatal,\n        error,\n        reason: error.message\n      });\n      if (fatal) {\n        return;\n      }\n      newLevel = Math.min(newLevel, levels.length - 1);\n    }\n    const lastLevelIndex = this.currentLevelIndex;\n    const lastLevel = this.currentLevel;\n    const lastPathwayId = lastLevel ? lastLevel.attrs[\"PATHWAY-ID\"] : void 0;\n    const level = levels[newLevel];\n    const pathwayId = level.attrs[\"PATHWAY-ID\"];\n    this.currentLevelIndex = newLevel;\n    this.currentLevel = level;\n    if (lastLevelIndex === newLevel && level.details && lastLevel && lastPathwayId === pathwayId) {\n      return;\n    }\n    this.log(`Switching to level ${newLevel} (${level.height ? level.height + \"p \" : \"\"}${level.videoRange ? level.videoRange + \" \" : \"\"}${level.codecSet ? level.codecSet + \" \" : \"\"}@${level.bitrate})${pathwayId ? \" with Pathway \" + pathwayId : \"\"} from level ${lastLevelIndex}${lastPathwayId ? \" with Pathway \" + lastPathwayId : \"\"}`);\n    const levelSwitchingData = {\n      level: newLevel,\n      attrs: level.attrs,\n      details: level.details,\n      bitrate: level.bitrate,\n      averageBitrate: level.averageBitrate,\n      maxBitrate: level.maxBitrate,\n      realBitrate: level.realBitrate,\n      width: level.width,\n      height: level.height,\n      codecSet: level.codecSet,\n      audioCodec: level.audioCodec,\n      videoCodec: level.videoCodec,\n      audioGroups: level.audioGroups,\n      subtitleGroups: level.subtitleGroups,\n      loaded: level.loaded,\n      loadError: level.loadError,\n      fragmentError: level.fragmentError,\n      name: level.name,\n      id: level.id,\n      uri: level.uri,\n      url: level.url,\n      urlId: 0,\n      audioGroupIds: level.audioGroupIds,\n      textGroupIds: level.textGroupIds\n    };\n    this.hls.trigger(Events.LEVEL_SWITCHING, levelSwitchingData);\n    const levelDetails = level.details;\n    if (!levelDetails || levelDetails.live) {\n      const hlsUrlParameters = this.switchParams(level.uri, lastLevel == null ? void 0 : lastLevel.details, levelDetails);\n      this.loadPlaylist(hlsUrlParameters);\n    }\n  }\n  get manualLevel() {\n    return this.manualLevelIndex;\n  }\n  set manualLevel(newLevel) {\n    this.manualLevelIndex = newLevel;\n    if (this._startLevel === void 0) {\n      this._startLevel = newLevel;\n    }\n    if (newLevel !== -1) {\n      this.level = newLevel;\n    }\n  }\n  get firstLevel() {\n    return this._firstLevel;\n  }\n  set firstLevel(newLevel) {\n    this._firstLevel = newLevel;\n  }\n  get startLevel() {\n    if (this._startLevel === void 0) {\n      const configStartLevel = this.hls.config.startLevel;\n      if (configStartLevel !== void 0) {\n        return configStartLevel;\n      }\n      return this.hls.firstAutoLevel;\n    }\n    return this._startLevel;\n  }\n  set startLevel(newLevel) {\n    this._startLevel = newLevel;\n  }\n  onError(event, data) {\n    if (data.fatal || !data.context) {\n      return;\n    }\n    if (data.context.type === PlaylistContextType.LEVEL && data.context.level === this.level) {\n      this.checkRetry(data);\n    }\n  }\n  // reset errors on the successful load of a fragment\n  onFragBuffered(event, {\n    frag\n  }) {\n    if (frag !== void 0 && frag.type === PlaylistLevelType.MAIN) {\n      const el = frag.elementaryStreams;\n      if (!Object.keys(el).some((type) => !!el[type])) {\n        return;\n      }\n      const level = this._levels[frag.level];\n      if (level != null && level.loadError) {\n        this.log(`Resetting level error count of ${level.loadError} on frag buffered`);\n        level.loadError = 0;\n      }\n    }\n  }\n  onLevelLoaded(event, data) {\n    var _data$deliveryDirecti2;\n    const {\n      level,\n      details\n    } = data;\n    const curLevel = this._levels[level];\n    if (!curLevel) {\n      var _data$deliveryDirecti;\n      this.warn(`Invalid level index ${level}`);\n      if ((_data$deliveryDirecti = data.deliveryDirectives) != null && _data$deliveryDirecti.skip) {\n        details.deltaUpdateFailed = true;\n      }\n      return;\n    }\n    if (level === this.currentLevelIndex) {\n      if (curLevel.fragmentError === 0) {\n        curLevel.loadError = 0;\n      }\n      this.playlistLoaded(level, data, curLevel.details);\n    } else if ((_data$deliveryDirecti2 = data.deliveryDirectives) != null && _data$deliveryDirecti2.skip) {\n      details.deltaUpdateFailed = true;\n    }\n  }\n  loadPlaylist(hlsUrlParameters) {\n    super.loadPlaylist();\n    const currentLevelIndex = this.currentLevelIndex;\n    const currentLevel = this.currentLevel;\n    if (currentLevel && this.shouldLoadPlaylist(currentLevel)) {\n      let url = currentLevel.uri;\n      if (hlsUrlParameters) {\n        try {\n          url = hlsUrlParameters.addDirectives(url);\n        } catch (error) {\n          this.warn(`Could not construct new URL with HLS Delivery Directives: ${error}`);\n        }\n      }\n      const pathwayId = currentLevel.attrs[\"PATHWAY-ID\"];\n      this.log(`Loading level index ${currentLevelIndex}${(hlsUrlParameters == null ? void 0 : hlsUrlParameters.msn) !== void 0 ? \" at sn \" + hlsUrlParameters.msn + \" part \" + hlsUrlParameters.part : \"\"} with${pathwayId ? \" Pathway \" + pathwayId : \"\"} ${url}`);\n      this.clearTimer();\n      this.hls.trigger(Events.LEVEL_LOADING, {\n        url,\n        level: currentLevelIndex,\n        pathwayId: currentLevel.attrs[\"PATHWAY-ID\"],\n        id: 0,\n        // Deprecated Level urlId\n        deliveryDirectives: hlsUrlParameters || null\n      });\n    }\n  }\n  get nextLoadLevel() {\n    if (this.manualLevelIndex !== -1) {\n      return this.manualLevelIndex;\n    } else {\n      return this.hls.nextAutoLevel;\n    }\n  }\n  set nextLoadLevel(nextLevel) {\n    this.level = nextLevel;\n    if (this.manualLevelIndex === -1) {\n      this.hls.nextAutoLevel = nextLevel;\n    }\n  }\n  removeLevel(levelIndex) {\n    var _this$currentLevel;\n    const levels = this._levels.filter((level, index) => {\n      if (index !== levelIndex) {\n        return true;\n      }\n      if (this.steering) {\n        this.steering.removeLevel(level);\n      }\n      if (level === this.currentLevel) {\n        this.currentLevel = null;\n        this.currentLevelIndex = -1;\n        if (level.details) {\n          level.details.fragments.forEach((f) => f.level = -1);\n        }\n      }\n      return false;\n    });\n    reassignFragmentLevelIndexes(levels);\n    this._levels = levels;\n    if (this.currentLevelIndex > -1 && (_this$currentLevel = this.currentLevel) != null && _this$currentLevel.details) {\n      this.currentLevelIndex = this.currentLevel.details.fragments[0].level;\n    }\n    this.hls.trigger(Events.LEVELS_UPDATED, {\n      levels\n    });\n  }\n  onLevelsUpdated(event, {\n    levels\n  }) {\n    this._levels = levels;\n  }\n  checkMaxAutoUpdated() {\n    const {\n      autoLevelCapping,\n      maxAutoLevel,\n      maxHdcpLevel\n    } = this.hls;\n    if (this._maxAutoLevel !== maxAutoLevel) {\n      this._maxAutoLevel = maxAutoLevel;\n      this.hls.trigger(Events.MAX_AUTO_LEVEL_UPDATED, {\n        autoLevelCapping,\n        levels: this.levels,\n        maxAutoLevel,\n        minAutoLevel: this.hls.minAutoLevel,\n        maxHdcpLevel\n      });\n    }\n  }\n};\nfunction assignTrackIdsByGroup(tracks) {\n  const groups = {};\n  tracks.forEach((track) => {\n    const groupId = track.groupId || \"\";\n    track.id = groups[groupId] = groups[groupId] || 0;\n    groups[groupId]++;\n  });\n}\nvar KeyLoader = class {\n  constructor(config) {\n    this.config = void 0;\n    this.keyUriToKeyInfo = {};\n    this.emeController = null;\n    this.config = config;\n  }\n  abort(type) {\n    for (const uri in this.keyUriToKeyInfo) {\n      const loader = this.keyUriToKeyInfo[uri].loader;\n      if (loader) {\n        var _loader$context;\n        if (type && type !== ((_loader$context = loader.context) == null ? void 0 : _loader$context.frag.type)) {\n          return;\n        }\n        loader.abort();\n      }\n    }\n  }\n  detach() {\n    for (const uri in this.keyUriToKeyInfo) {\n      const keyInfo = this.keyUriToKeyInfo[uri];\n      if (keyInfo.mediaKeySessionContext || keyInfo.decryptdata.isCommonEncryption) {\n        delete this.keyUriToKeyInfo[uri];\n      }\n    }\n  }\n  destroy() {\n    this.detach();\n    for (const uri in this.keyUriToKeyInfo) {\n      const loader = this.keyUriToKeyInfo[uri].loader;\n      if (loader) {\n        loader.destroy();\n      }\n    }\n    this.keyUriToKeyInfo = {};\n  }\n  createKeyLoadError(frag, details = ErrorDetails.KEY_LOAD_ERROR, error, networkDetails, response) {\n    return new LoadError({\n      type: ErrorTypes.NETWORK_ERROR,\n      details,\n      fatal: false,\n      frag,\n      response,\n      error,\n      networkDetails\n    });\n  }\n  loadClear(loadingFrag, encryptedFragments) {\n    if (this.emeController && this.config.emeEnabled) {\n      const {\n        sn,\n        cc\n      } = loadingFrag;\n      for (let i2 = 0; i2 < encryptedFragments.length; i2++) {\n        const frag = encryptedFragments[i2];\n        if (cc <= frag.cc && (sn === \"initSegment\" || frag.sn === \"initSegment\" || sn < frag.sn)) {\n          this.emeController.selectKeySystemFormat(frag).then((keySystemFormat) => {\n            frag.setKeyFormat(keySystemFormat);\n          });\n          break;\n        }\n      }\n    }\n  }\n  load(frag) {\n    if (!frag.decryptdata && frag.encrypted && this.emeController && this.config.emeEnabled) {\n      return this.emeController.selectKeySystemFormat(frag).then((keySystemFormat) => {\n        return this.loadInternal(frag, keySystemFormat);\n      });\n    }\n    return this.loadInternal(frag);\n  }\n  loadInternal(frag, keySystemFormat) {\n    var _keyInfo, _keyInfo2;\n    if (keySystemFormat) {\n      frag.setKeyFormat(keySystemFormat);\n    }\n    const decryptdata = frag.decryptdata;\n    if (!decryptdata) {\n      const error = new Error(keySystemFormat ? `Expected frag.decryptdata to be defined after setting format ${keySystemFormat}` : \"Missing decryption data on fragment in onKeyLoading\");\n      return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, error));\n    }\n    const uri = decryptdata.uri;\n    if (!uri) {\n      return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(`Invalid key URI: \"${uri}\"`)));\n    }\n    let keyInfo = this.keyUriToKeyInfo[uri];\n    if ((_keyInfo = keyInfo) != null && _keyInfo.decryptdata.key) {\n      decryptdata.key = keyInfo.decryptdata.key;\n      return Promise.resolve({\n        frag,\n        keyInfo\n      });\n    }\n    if ((_keyInfo2 = keyInfo) != null && _keyInfo2.keyLoadPromise) {\n      var _keyInfo$mediaKeySess;\n      switch ((_keyInfo$mediaKeySess = keyInfo.mediaKeySessionContext) == null ? void 0 : _keyInfo$mediaKeySess.keyStatus) {\n        case void 0:\n        case \"status-pending\":\n        case \"usable\":\n        case \"usable-in-future\":\n          return keyInfo.keyLoadPromise.then((keyLoadedData) => {\n            decryptdata.key = keyLoadedData.keyInfo.decryptdata.key;\n            return {\n              frag,\n              keyInfo\n            };\n          });\n      }\n    }\n    keyInfo = this.keyUriToKeyInfo[uri] = {\n      decryptdata,\n      keyLoadPromise: null,\n      loader: null,\n      mediaKeySessionContext: null\n    };\n    switch (decryptdata.method) {\n      case \"ISO-23001-7\":\n      case \"SAMPLE-AES\":\n      case \"SAMPLE-AES-CENC\":\n      case \"SAMPLE-AES-CTR\":\n        if (decryptdata.keyFormat === \"identity\") {\n          return this.loadKeyHTTP(keyInfo, frag);\n        }\n        return this.loadKeyEME(keyInfo, frag);\n      case \"AES-128\":\n        return this.loadKeyHTTP(keyInfo, frag);\n      default:\n        return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(`Key supplied with unsupported METHOD: \"${decryptdata.method}\"`)));\n    }\n  }\n  loadKeyEME(keyInfo, frag) {\n    const keyLoadedData = {\n      frag,\n      keyInfo\n    };\n    if (this.emeController && this.config.emeEnabled) {\n      const keySessionContextPromise = this.emeController.loadKey(keyLoadedData);\n      if (keySessionContextPromise) {\n        return (keyInfo.keyLoadPromise = keySessionContextPromise.then((keySessionContext) => {\n          keyInfo.mediaKeySessionContext = keySessionContext;\n          return keyLoadedData;\n        })).catch((error) => {\n          keyInfo.keyLoadPromise = null;\n          throw error;\n        });\n      }\n    }\n    return Promise.resolve(keyLoadedData);\n  }\n  loadKeyHTTP(keyInfo, frag) {\n    const config = this.config;\n    const Loader = config.loader;\n    const keyLoader = new Loader(config);\n    frag.keyLoader = keyInfo.loader = keyLoader;\n    return keyInfo.keyLoadPromise = new Promise((resolve, reject) => {\n      const loaderContext = {\n        keyInfo,\n        frag,\n        responseType: \"arraybuffer\",\n        url: keyInfo.decryptdata.uri\n      };\n      const loadPolicy = config.keyLoadPolicy.default;\n      const loaderConfig = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0\n      };\n      const loaderCallbacks = {\n        onSuccess: (response, stats, context, networkDetails) => {\n          const {\n            frag: frag2,\n            keyInfo: keyInfo2,\n            url: uri\n          } = context;\n          if (!frag2.decryptdata || keyInfo2 !== this.keyUriToKeyInfo[uri]) {\n            return reject(this.createKeyLoadError(frag2, ErrorDetails.KEY_LOAD_ERROR, new Error(\"after key load, decryptdata unset or changed\"), networkDetails));\n          }\n          keyInfo2.decryptdata.key = frag2.decryptdata.key = new Uint8Array(response.data);\n          frag2.keyLoader = null;\n          keyInfo2.loader = null;\n          resolve({\n            frag: frag2,\n            keyInfo: keyInfo2\n          });\n        },\n        onError: (response, context, networkDetails, stats) => {\n          this.resetLoader(context);\n          reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(`HTTP Error ${response.code} loading key ${response.text}`), networkDetails, _objectSpread2({\n            url: loaderContext.url,\n            data: void 0\n          }, response)));\n        },\n        onTimeout: (stats, context, networkDetails) => {\n          this.resetLoader(context);\n          reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_TIMEOUT, new Error(\"key loading timed out\"), networkDetails));\n        },\n        onAbort: (stats, context, networkDetails) => {\n          this.resetLoader(context);\n          reject(this.createKeyLoadError(frag, ErrorDetails.INTERNAL_ABORTED, new Error(\"key loading aborted\"), networkDetails));\n        }\n      };\n      keyLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n    });\n  }\n  resetLoader(context) {\n    const {\n      frag,\n      keyInfo,\n      url: uri\n    } = context;\n    const loader = keyInfo.loader;\n    if (frag.keyLoader === loader) {\n      frag.keyLoader = null;\n      keyInfo.loader = null;\n    }\n    delete this.keyUriToKeyInfo[uri];\n    if (loader) {\n      loader.destroy();\n    }\n  }\n};\nfunction getSourceBuffer() {\n  return self.SourceBuffer || self.WebKitSourceBuffer;\n}\nfunction isMSESupported() {\n  const mediaSource = getMediaSource();\n  if (!mediaSource) {\n    return false;\n  }\n  const sourceBuffer = getSourceBuffer();\n  return !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === \"function\" && typeof sourceBuffer.prototype.remove === \"function\";\n}\nfunction isSupported() {\n  if (!isMSESupported()) {\n    return false;\n  }\n  const mediaSource = getMediaSource();\n  return typeof (mediaSource == null ? void 0 : mediaSource.isTypeSupported) === \"function\" && ([\"avc1.42E01E,mp4a.40.2\", \"av01.0.01M.08\", \"vp09.00.50.08\"].some((codecsForVideoContainer) => mediaSource.isTypeSupported(mimeTypeForCodec(codecsForVideoContainer, \"video\"))) || [\"mp4a.40.2\", \"fLaC\"].some((codecForAudioContainer) => mediaSource.isTypeSupported(mimeTypeForCodec(codecForAudioContainer, \"audio\"))));\n}\nfunction changeTypeSupported() {\n  var _sourceBuffer$prototy;\n  const sourceBuffer = getSourceBuffer();\n  return typeof (sourceBuffer == null ? void 0 : (_sourceBuffer$prototy = sourceBuffer.prototype) == null ? void 0 : _sourceBuffer$prototy.changeType) === \"function\";\n}\nvar STALL_MINIMUM_DURATION_MS = 250;\nvar MAX_START_GAP_JUMP = 2;\nvar SKIP_BUFFER_HOLE_STEP_SECONDS = 0.1;\nvar SKIP_BUFFER_RANGE_START = 0.05;\nvar GapController = class {\n  constructor(config, media, fragmentTracker, hls) {\n    this.config = void 0;\n    this.media = null;\n    this.fragmentTracker = void 0;\n    this.hls = void 0;\n    this.nudgeRetry = 0;\n    this.stallReported = false;\n    this.stalled = null;\n    this.moved = false;\n    this.seeking = false;\n    this.config = config;\n    this.media = media;\n    this.fragmentTracker = fragmentTracker;\n    this.hls = hls;\n  }\n  destroy() {\n    this.media = null;\n    this.hls = this.fragmentTracker = null;\n  }\n  /**\n   * Checks if the playhead is stuck within a gap, and if so, attempts to free it.\n   * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range).\n   *\n   * @param lastCurrentTime - Previously read playhead position\n   */\n  poll(lastCurrentTime, activeFrag) {\n    const {\n      config,\n      media,\n      stalled\n    } = this;\n    if (media === null) {\n      return;\n    }\n    const {\n      currentTime,\n      seeking\n    } = media;\n    const seeked = this.seeking && !seeking;\n    const beginSeek = !this.seeking && seeking;\n    this.seeking = seeking;\n    if (currentTime !== lastCurrentTime) {\n      this.moved = true;\n      if (!seeking) {\n        this.nudgeRetry = 0;\n      }\n      if (stalled !== null) {\n        if (this.stallReported) {\n          const _stalledDuration = self.performance.now() - stalled;\n          logger.warn(`playback not stuck anymore @${currentTime}, after ${Math.round(_stalledDuration)}ms`);\n          this.stallReported = false;\n        }\n        this.stalled = null;\n      }\n      return;\n    }\n    if (beginSeek || seeked) {\n      this.stalled = null;\n      return;\n    }\n    if (media.paused && !seeking || media.ended || media.playbackRate === 0 || !BufferHelper.getBuffered(media).length) {\n      this.nudgeRetry = 0;\n      return;\n    }\n    const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n    const nextStart = bufferInfo.nextStart || 0;\n    if (seeking) {\n      const hasEnoughBuffer = bufferInfo.len > MAX_START_GAP_JUMP;\n      const noBufferGap = !nextStart || activeFrag && activeFrag.start <= currentTime || nextStart - currentTime > MAX_START_GAP_JUMP && !this.fragmentTracker.getPartialFragment(currentTime);\n      if (hasEnoughBuffer || noBufferGap) {\n        return;\n      }\n      this.moved = false;\n    }\n    if (!this.moved && this.stalled !== null) {\n      var _level$details;\n      const isBuffered = bufferInfo.len > 0;\n      if (!isBuffered && !nextStart) {\n        return;\n      }\n      const startJump = Math.max(nextStart, bufferInfo.start || 0) - currentTime;\n      const level = this.hls.levels ? this.hls.levels[this.hls.currentLevel] : null;\n      const isLive = level == null ? void 0 : (_level$details = level.details) == null ? void 0 : _level$details.live;\n      const maxStartGapJump = isLive ? level.details.targetduration * 2 : MAX_START_GAP_JUMP;\n      const partialOrGap = this.fragmentTracker.getPartialFragment(currentTime);\n      if (startJump > 0 && (startJump <= maxStartGapJump || partialOrGap)) {\n        if (!media.paused) {\n          this._trySkipBufferHole(partialOrGap);\n        }\n        return;\n      }\n    }\n    const tnow = self.performance.now();\n    if (stalled === null) {\n      this.stalled = tnow;\n      return;\n    }\n    const stalledDuration = tnow - stalled;\n    if (!seeking && stalledDuration >= STALL_MINIMUM_DURATION_MS) {\n      this._reportStall(bufferInfo);\n      if (!this.media) {\n        return;\n      }\n    }\n    const bufferedWithHoles = BufferHelper.bufferInfo(media, currentTime, config.maxBufferHole);\n    this._tryFixBufferStall(bufferedWithHoles, stalledDuration);\n  }\n  /**\n   * Detects and attempts to fix known buffer stalling issues.\n   * @param bufferInfo - The properties of the current buffer.\n   * @param stalledDurationMs - The amount of time Hls.js has been stalling for.\n   * @private\n   */\n  _tryFixBufferStall(bufferInfo, stalledDurationMs) {\n    const {\n      config,\n      fragmentTracker,\n      media\n    } = this;\n    if (media === null) {\n      return;\n    }\n    const currentTime = media.currentTime;\n    const partial = fragmentTracker.getPartialFragment(currentTime);\n    if (partial) {\n      const targetTime = this._trySkipBufferHole(partial);\n      if (targetTime || !this.media) {\n        return;\n      }\n    }\n    if ((bufferInfo.len > config.maxBufferHole || bufferInfo.nextStart && bufferInfo.nextStart - currentTime < config.maxBufferHole) && stalledDurationMs > config.highBufferWatchdogPeriod * 1e3) {\n      logger.warn(\"Trying to nudge playhead over buffer-hole\");\n      this.stalled = null;\n      this._tryNudgeBuffer();\n    }\n  }\n  /**\n   * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period.\n   * @param bufferLen - The playhead distance from the end of the current buffer segment.\n   * @private\n   */\n  _reportStall(bufferInfo) {\n    const {\n      hls,\n      media,\n      stallReported\n    } = this;\n    if (!stallReported && media) {\n      this.stallReported = true;\n      const error = new Error(`Playback stalling at @${media.currentTime} due to low buffer (${JSON.stringify(bufferInfo)})`);\n      logger.warn(error.message);\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.BUFFER_STALLED_ERROR,\n        fatal: false,\n        error,\n        buffer: bufferInfo.len\n      });\n    }\n  }\n  /**\n   * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments\n   * @param partial - The partial fragment found at the current time (where playback is stalling).\n   * @private\n   */\n  _trySkipBufferHole(partial) {\n    const {\n      config,\n      hls,\n      media\n    } = this;\n    if (media === null) {\n      return 0;\n    }\n    const currentTime = media.currentTime;\n    const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n    const startTime = currentTime < bufferInfo.start ? bufferInfo.start : bufferInfo.nextStart;\n    if (startTime) {\n      const bufferStarved = bufferInfo.len <= config.maxBufferHole;\n      const waiting = bufferInfo.len > 0 && bufferInfo.len < 1 && media.readyState < 3;\n      const gapLength = startTime - currentTime;\n      if (gapLength > 0 && (bufferStarved || waiting)) {\n        if (gapLength > config.maxBufferHole) {\n          const {\n            fragmentTracker\n          } = this;\n          let startGap = false;\n          if (currentTime === 0) {\n            const startFrag = fragmentTracker.getAppendedFrag(0, PlaylistLevelType.MAIN);\n            if (startFrag && startTime < startFrag.end) {\n              startGap = true;\n            }\n          }\n          if (!startGap) {\n            const startProvisioned = partial || fragmentTracker.getAppendedFrag(currentTime, PlaylistLevelType.MAIN);\n            if (startProvisioned) {\n              let moreToLoad = false;\n              let pos = startProvisioned.end;\n              while (pos < startTime) {\n                const provisioned = fragmentTracker.getPartialFragment(pos);\n                if (provisioned) {\n                  pos += provisioned.duration;\n                } else {\n                  moreToLoad = true;\n                  break;\n                }\n              }\n              if (moreToLoad) {\n                return 0;\n              }\n            }\n          }\n        }\n        const targetTime = Math.max(startTime + SKIP_BUFFER_RANGE_START, currentTime + SKIP_BUFFER_HOLE_STEP_SECONDS);\n        logger.warn(`skipping hole, adjusting currentTime from ${currentTime} to ${targetTime}`);\n        this.moved = true;\n        this.stalled = null;\n        media.currentTime = targetTime;\n        if (partial && !partial.gap) {\n          const error = new Error(`fragment loaded with buffer holes, seeking from ${currentTime} to ${targetTime}`);\n          hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.BUFFER_SEEK_OVER_HOLE,\n            fatal: false,\n            error,\n            reason: error.message,\n            frag: partial\n          });\n        }\n        return targetTime;\n      }\n    }\n    return 0;\n  }\n  /**\n   * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount.\n   * @private\n   */\n  _tryNudgeBuffer() {\n    const {\n      config,\n      hls,\n      media,\n      nudgeRetry\n    } = this;\n    if (media === null) {\n      return;\n    }\n    const currentTime = media.currentTime;\n    this.nudgeRetry++;\n    if (nudgeRetry < config.nudgeMaxRetry) {\n      const targetTime = currentTime + (nudgeRetry + 1) * config.nudgeOffset;\n      const error = new Error(`Nudging 'currentTime' from ${currentTime} to ${targetTime}`);\n      logger.warn(error.message);\n      media.currentTime = targetTime;\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.BUFFER_NUDGE_ON_STALL,\n        error,\n        fatal: false\n      });\n    } else {\n      const error = new Error(`Playhead still not moving while enough data buffered @${currentTime} after ${config.nudgeMaxRetry} nudges`);\n      logger.error(error.message);\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.BUFFER_STALLED_ERROR,\n        error,\n        fatal: true\n      });\n    }\n  }\n};\nvar TICK_INTERVAL = 100;\nvar StreamController = class extends BaseStreamController {\n  constructor(hls, fragmentTracker, keyLoader) {\n    super(hls, fragmentTracker, keyLoader, \"[stream-controller]\", PlaylistLevelType.MAIN);\n    this.audioCodecSwap = false;\n    this.gapController = null;\n    this.level = -1;\n    this._forceStartLoad = false;\n    this.altAudio = false;\n    this.audioOnly = false;\n    this.fragPlaying = null;\n    this.onvplaying = null;\n    this.onvseeked = null;\n    this.fragLastKbps = 0;\n    this.couldBacktrack = false;\n    this.backtrackFragment = null;\n    this.audioCodecSwitch = false;\n    this.videoBuffer = null;\n    this._registerListeners();\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.on(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n    hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.off(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n    hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  onHandlerDestroying() {\n    this._unregisterListeners();\n    super.onHandlerDestroying();\n  }\n  startLoad(startPosition) {\n    if (this.levels) {\n      const {\n        lastCurrentTime,\n        hls\n      } = this;\n      this.stopLoad();\n      this.setInterval(TICK_INTERVAL);\n      this.level = -1;\n      if (!this.startFragRequested) {\n        let startLevel = hls.startLevel;\n        if (startLevel === -1) {\n          if (hls.config.testBandwidth && this.levels.length > 1) {\n            startLevel = 0;\n            this.bitrateTest = true;\n          } else {\n            startLevel = hls.firstAutoLevel;\n          }\n        }\n        hls.nextLoadLevel = startLevel;\n        this.level = hls.loadLevel;\n        this.loadedmetadata = false;\n      }\n      if (lastCurrentTime > 0 && startPosition === -1) {\n        this.log(`Override startPosition with lastCurrentTime @${lastCurrentTime.toFixed(3)}`);\n        startPosition = lastCurrentTime;\n      }\n      this.state = State.IDLE;\n      this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n      this.tick();\n    } else {\n      this._forceStartLoad = true;\n      this.state = State.STOPPED;\n    }\n  }\n  stopLoad() {\n    this._forceStartLoad = false;\n    super.stopLoad();\n  }\n  doTick() {\n    switch (this.state) {\n      case State.WAITING_LEVEL: {\n        const {\n          levels,\n          level\n        } = this;\n        const currentLevel = levels == null ? void 0 : levels[level];\n        const details = currentLevel == null ? void 0 : currentLevel.details;\n        if (details && (!details.live || this.levelLastLoaded === currentLevel)) {\n          if (this.waitForCdnTuneIn(details)) {\n            break;\n          }\n          this.state = State.IDLE;\n          break;\n        } else if (this.hls.nextLoadLevel !== this.level) {\n          this.state = State.IDLE;\n          break;\n        }\n        break;\n      }\n      case State.FRAG_LOADING_WAITING_RETRY:\n        {\n          var _this$media;\n          const now2 = self.performance.now();\n          const retryDate = this.retryDate;\n          if (!retryDate || now2 >= retryDate || (_this$media = this.media) != null && _this$media.seeking) {\n            const {\n              levels,\n              level\n            } = this;\n            const currentLevel = levels == null ? void 0 : levels[level];\n            this.resetStartWhenNotLoaded(currentLevel || null);\n            this.state = State.IDLE;\n          }\n        }\n        break;\n    }\n    if (this.state === State.IDLE) {\n      this.doTickIdle();\n    }\n    this.onTickEnd();\n  }\n  onTickEnd() {\n    super.onTickEnd();\n    this.checkBuffer();\n    this.checkFragmentChanged();\n  }\n  doTickIdle() {\n    const {\n      hls,\n      levelLastLoaded,\n      levels,\n      media\n    } = this;\n    if (levelLastLoaded === null || !media && (this.startFragRequested || !hls.config.startFragPrefetch)) {\n      return;\n    }\n    if (this.altAudio && this.audioOnly) {\n      return;\n    }\n    const level = this.buffering ? hls.nextLoadLevel : hls.loadLevel;\n    if (!(levels != null && levels[level])) {\n      return;\n    }\n    const levelInfo = levels[level];\n    const bufferInfo = this.getMainFwdBufferInfo();\n    if (bufferInfo === null) {\n      return;\n    }\n    const lastDetails = this.getLevelDetails();\n    if (lastDetails && this._streamEnded(bufferInfo, lastDetails)) {\n      const data = {};\n      if (this.altAudio) {\n        data.type = \"video\";\n      }\n      this.hls.trigger(Events.BUFFER_EOS, data);\n      this.state = State.ENDED;\n      return;\n    }\n    if (!this.buffering) {\n      return;\n    }\n    if (hls.loadLevel !== level && hls.manualLevel === -1) {\n      this.log(`Adapting to level ${level} from level ${this.level}`);\n    }\n    this.level = hls.nextLoadLevel = level;\n    const levelDetails = levelInfo.details;\n    if (!levelDetails || this.state === State.WAITING_LEVEL || levelDetails.live && this.levelLastLoaded !== levelInfo) {\n      this.level = level;\n      this.state = State.WAITING_LEVEL;\n      return;\n    }\n    const bufferLen = bufferInfo.len;\n    const maxBufLen = this.getMaxBufferLength(levelInfo.maxBitrate);\n    if (bufferLen >= maxBufLen) {\n      return;\n    }\n    if (this.backtrackFragment && this.backtrackFragment.start > bufferInfo.end) {\n      this.backtrackFragment = null;\n    }\n    const targetBufferTime = this.backtrackFragment ? this.backtrackFragment.start : bufferInfo.end;\n    let frag = this.getNextFragment(targetBufferTime, levelDetails);\n    if (this.couldBacktrack && !this.fragPrevious && frag && frag.sn !== \"initSegment\" && this.fragmentTracker.getState(frag) !== FragmentState.OK) {\n      var _this$backtrackFragme;\n      const backtrackSn = ((_this$backtrackFragme = this.backtrackFragment) != null ? _this$backtrackFragme : frag).sn;\n      const fragIdx = backtrackSn - levelDetails.startSN;\n      const backtrackFrag = levelDetails.fragments[fragIdx - 1];\n      if (backtrackFrag && frag.cc === backtrackFrag.cc) {\n        frag = backtrackFrag;\n        this.fragmentTracker.removeFragment(backtrackFrag);\n      }\n    } else if (this.backtrackFragment && bufferInfo.len) {\n      this.backtrackFragment = null;\n    }\n    if (frag && this.isLoopLoading(frag, targetBufferTime)) {\n      const gapStart = frag.gap;\n      if (!gapStart) {\n        const type = this.audioOnly && !this.altAudio ? ElementaryStreamTypes.AUDIO : ElementaryStreamTypes.VIDEO;\n        const mediaBuffer = (type === ElementaryStreamTypes.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;\n        if (mediaBuffer) {\n          this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN);\n        }\n      }\n      frag = this.getNextFragmentLoopLoading(frag, levelDetails, bufferInfo, PlaylistLevelType.MAIN, maxBufLen);\n    }\n    if (!frag) {\n      return;\n    }\n    if (frag.initSegment && !frag.initSegment.data && !this.bitrateTest) {\n      frag = frag.initSegment;\n    }\n    this.loadFragment(frag, levelInfo, targetBufferTime);\n  }\n  loadFragment(frag, level, targetBufferTime) {\n    const fragState = this.fragmentTracker.getState(frag);\n    this.fragCurrent = frag;\n    if (fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) {\n      if (frag.sn === \"initSegment\") {\n        this._loadInitSegment(frag, level);\n      } else if (this.bitrateTest) {\n        this.log(`Fragment ${frag.sn} of level ${frag.level} is being downloaded to test bitrate and will not be buffered`);\n        this._loadBitrateTestFrag(frag, level);\n      } else {\n        this.startFragRequested = true;\n        super.loadFragment(frag, level, targetBufferTime);\n      }\n    } else {\n      this.clearTrackerIfNeeded(frag);\n    }\n  }\n  getBufferedFrag(position) {\n    return this.fragmentTracker.getBufferedFrag(position, PlaylistLevelType.MAIN);\n  }\n  followingBufferedFrag(frag) {\n    if (frag) {\n      return this.getBufferedFrag(frag.end + 0.5);\n    }\n    return null;\n  }\n  /*\n    on immediate level switch :\n     - pause playback if playing\n     - cancel any pending load request\n     - and trigger a buffer flush\n  */\n  immediateLevelSwitch() {\n    this.abortCurrentFrag();\n    this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n  }\n  /**\n   * try to switch ASAP without breaking video playback:\n   * in order to ensure smooth but quick level switching,\n   * we need to find the next flushable buffer range\n   * we should take into account new segment fetch time\n   */\n  nextLevelSwitch() {\n    const {\n      levels,\n      media\n    } = this;\n    if (media != null && media.readyState) {\n      let fetchdelay;\n      const fragPlayingCurrent = this.getAppendedFrag(media.currentTime);\n      if (fragPlayingCurrent && fragPlayingCurrent.start > 1) {\n        this.flushMainBuffer(0, fragPlayingCurrent.start - 1);\n      }\n      const levelDetails = this.getLevelDetails();\n      if (levelDetails != null && levelDetails.live) {\n        const bufferInfo = this.getMainFwdBufferInfo();\n        if (!bufferInfo || bufferInfo.len < levelDetails.targetduration * 2) {\n          return;\n        }\n      }\n      if (!media.paused && levels) {\n        const nextLevelId = this.hls.nextLoadLevel;\n        const nextLevel = levels[nextLevelId];\n        const fragLastKbps = this.fragLastKbps;\n        if (fragLastKbps && this.fragCurrent) {\n          fetchdelay = this.fragCurrent.duration * nextLevel.maxBitrate / (1e3 * fragLastKbps) + 1;\n        } else {\n          fetchdelay = 0;\n        }\n      } else {\n        fetchdelay = 0;\n      }\n      const bufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay);\n      if (bufferedFrag) {\n        const nextBufferedFrag = this.followingBufferedFrag(bufferedFrag);\n        if (nextBufferedFrag) {\n          this.abortCurrentFrag();\n          const maxStart = nextBufferedFrag.maxStartPTS ? nextBufferedFrag.maxStartPTS : nextBufferedFrag.start;\n          const fragDuration = nextBufferedFrag.duration;\n          const startPts = Math.max(bufferedFrag.end, maxStart + Math.min(Math.max(fragDuration - this.config.maxFragLookUpTolerance, fragDuration * (this.couldBacktrack ? 0.5 : 0.125)), fragDuration * (this.couldBacktrack ? 0.75 : 0.25)));\n          this.flushMainBuffer(startPts, Number.POSITIVE_INFINITY);\n        }\n      }\n    }\n  }\n  abortCurrentFrag() {\n    const fragCurrent = this.fragCurrent;\n    this.fragCurrent = null;\n    this.backtrackFragment = null;\n    if (fragCurrent) {\n      fragCurrent.abortRequests();\n      this.fragmentTracker.removeFragment(fragCurrent);\n    }\n    switch (this.state) {\n      case State.KEY_LOADING:\n      case State.FRAG_LOADING:\n      case State.FRAG_LOADING_WAITING_RETRY:\n      case State.PARSING:\n      case State.PARSED:\n        this.state = State.IDLE;\n        break;\n    }\n    this.nextLoadPosition = this.getLoadPosition();\n  }\n  flushMainBuffer(startOffset, endOffset) {\n    super.flushMainBuffer(startOffset, endOffset, this.altAudio ? \"video\" : null);\n  }\n  onMediaAttached(event, data) {\n    super.onMediaAttached(event, data);\n    const media = data.media;\n    this.onvplaying = this.onMediaPlaying.bind(this);\n    this.onvseeked = this.onMediaSeeked.bind(this);\n    media.addEventListener(\"playing\", this.onvplaying);\n    media.addEventListener(\"seeked\", this.onvseeked);\n    this.gapController = new GapController(this.config, media, this.fragmentTracker, this.hls);\n  }\n  onMediaDetaching() {\n    const {\n      media\n    } = this;\n    if (media && this.onvplaying && this.onvseeked) {\n      media.removeEventListener(\"playing\", this.onvplaying);\n      media.removeEventListener(\"seeked\", this.onvseeked);\n      this.onvplaying = this.onvseeked = null;\n      this.videoBuffer = null;\n    }\n    this.fragPlaying = null;\n    if (this.gapController) {\n      this.gapController.destroy();\n      this.gapController = null;\n    }\n    super.onMediaDetaching();\n  }\n  onMediaPlaying() {\n    this.tick();\n  }\n  onMediaSeeked() {\n    const media = this.media;\n    const currentTime = media ? media.currentTime : null;\n    if (isFiniteNumber(currentTime)) {\n      this.log(`Media seeked to ${currentTime.toFixed(3)}`);\n    }\n    const bufferInfo = this.getMainFwdBufferInfo();\n    if (bufferInfo === null || bufferInfo.len === 0) {\n      this.warn(`Main forward buffer length on \"seeked\" event ${bufferInfo ? bufferInfo.len : \"empty\"})`);\n      return;\n    }\n    this.tick();\n  }\n  onManifestLoading() {\n    this.log(\"Trigger BUFFER_RESET\");\n    this.hls.trigger(Events.BUFFER_RESET, void 0);\n    this.fragmentTracker.removeAllFragments();\n    this.couldBacktrack = false;\n    this.startPosition = this.lastCurrentTime = this.fragLastKbps = 0;\n    this.levels = this.fragPlaying = this.backtrackFragment = this.levelLastLoaded = null;\n    this.altAudio = this.audioOnly = this.startFragRequested = false;\n  }\n  onManifestParsed(event, data) {\n    let aac = false;\n    let heaac = false;\n    data.levels.forEach((level) => {\n      const codec = level.audioCodec;\n      if (codec) {\n        aac = aac || codec.indexOf(\"mp4a.40.2\") !== -1;\n        heaac = heaac || codec.indexOf(\"mp4a.40.5\") !== -1;\n      }\n    });\n    this.audioCodecSwitch = aac && heaac && !changeTypeSupported();\n    if (this.audioCodecSwitch) {\n      this.log(\"Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC\");\n    }\n    this.levels = data.levels;\n    this.startFragRequested = false;\n  }\n  onLevelLoading(event, data) {\n    const {\n      levels\n    } = this;\n    if (!levels || this.state !== State.IDLE) {\n      return;\n    }\n    const level = levels[data.level];\n    if (!level.details || level.details.live && this.levelLastLoaded !== level || this.waitForCdnTuneIn(level.details)) {\n      this.state = State.WAITING_LEVEL;\n    }\n  }\n  onLevelLoaded(event, data) {\n    var _curLevel$details;\n    const {\n      levels\n    } = this;\n    const newLevelId = data.level;\n    const newDetails = data.details;\n    const duration = newDetails.totalduration;\n    if (!levels) {\n      this.warn(`Levels were reset while loading level ${newLevelId}`);\n      return;\n    }\n    this.log(`Level ${newLevelId} loaded [${newDetails.startSN},${newDetails.endSN}]${newDetails.lastPartSn ? `[part-${newDetails.lastPartSn}-${newDetails.lastPartIndex}]` : \"\"}, cc [${newDetails.startCC}, ${newDetails.endCC}] duration:${duration}`);\n    const curLevel = levels[newLevelId];\n    const fragCurrent = this.fragCurrent;\n    if (fragCurrent && (this.state === State.FRAG_LOADING || this.state === State.FRAG_LOADING_WAITING_RETRY)) {\n      if (fragCurrent.level !== data.level && fragCurrent.loader) {\n        this.abortCurrentFrag();\n      }\n    }\n    let sliding = 0;\n    if (newDetails.live || (_curLevel$details = curLevel.details) != null && _curLevel$details.live) {\n      var _this$levelLastLoaded;\n      this.checkLiveUpdate(newDetails);\n      if (newDetails.deltaUpdateFailed) {\n        return;\n      }\n      sliding = this.alignPlaylists(newDetails, curLevel.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n    }\n    curLevel.details = newDetails;\n    this.levelLastLoaded = curLevel;\n    this.hls.trigger(Events.LEVEL_UPDATED, {\n      details: newDetails,\n      level: newLevelId\n    });\n    if (this.state === State.WAITING_LEVEL) {\n      if (this.waitForCdnTuneIn(newDetails)) {\n        return;\n      }\n      this.state = State.IDLE;\n    }\n    if (!this.startFragRequested) {\n      this.setStartPosition(newDetails, sliding);\n    } else if (newDetails.live) {\n      this.synchronizeToLiveEdge(newDetails);\n    }\n    this.tick();\n  }\n  _handleFragmentLoadProgress(data) {\n    var _frag$initSegment;\n    const {\n      frag,\n      part,\n      payload\n    } = data;\n    const {\n      levels\n    } = this;\n    if (!levels) {\n      this.warn(`Levels were reset while fragment load was in progress. Fragment ${frag.sn} of level ${frag.level} will not be buffered`);\n      return;\n    }\n    const currentLevel = levels[frag.level];\n    const details = currentLevel.details;\n    if (!details) {\n      this.warn(`Dropping fragment ${frag.sn} of level ${frag.level} after level details were reset`);\n      this.fragmentTracker.removeFragment(frag);\n      return;\n    }\n    const videoCodec = currentLevel.videoCodec;\n    const accurateTimeOffset = details.PTSKnown || !details.live;\n    const initSegmentData = (_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.data;\n    const audioCodec = this._getAudioCodec(currentLevel);\n    const transmuxer = this.transmuxer = this.transmuxer || new TransmuxerInterface(this.hls, PlaylistLevelType.MAIN, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n    const partIndex = part ? part.index : -1;\n    const partial = partIndex !== -1;\n    const chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n    const initPTS = this.initPTS[frag.cc];\n    transmuxer.push(payload, initSegmentData, audioCodec, videoCodec, frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n  }\n  onAudioTrackSwitching(event, data) {\n    const fromAltAudio = this.altAudio;\n    const altAudio = !!data.url;\n    if (!altAudio) {\n      if (this.mediaBuffer !== this.media) {\n        this.log(\"Switching on main audio, use media.buffered to schedule main fragment loading\");\n        this.mediaBuffer = this.media;\n        const fragCurrent = this.fragCurrent;\n        if (fragCurrent) {\n          this.log(\"Switching to main audio track, cancel main fragment load\");\n          fragCurrent.abortRequests();\n          this.fragmentTracker.removeFragment(fragCurrent);\n        }\n        this.resetTransmuxer();\n        this.resetLoadingState();\n      } else if (this.audioOnly) {\n        this.resetTransmuxer();\n      }\n      const hls = this.hls;\n      if (fromAltAudio) {\n        hls.trigger(Events.BUFFER_FLUSHING, {\n          startOffset: 0,\n          endOffset: Number.POSITIVE_INFINITY,\n          type: null\n        });\n        this.fragmentTracker.removeAllFragments();\n      }\n      hls.trigger(Events.AUDIO_TRACK_SWITCHED, data);\n    }\n  }\n  onAudioTrackSwitched(event, data) {\n    const trackId = data.id;\n    const altAudio = !!this.hls.audioTracks[trackId].url;\n    if (altAudio) {\n      const videoBuffer = this.videoBuffer;\n      if (videoBuffer && this.mediaBuffer !== videoBuffer) {\n        this.log(\"Switching on alternate audio, use video.buffered to schedule main fragment loading\");\n        this.mediaBuffer = videoBuffer;\n      }\n    }\n    this.altAudio = altAudio;\n    this.tick();\n  }\n  onBufferCreated(event, data) {\n    const tracks = data.tracks;\n    let mediaTrack;\n    let name;\n    let alternate = false;\n    for (const type in tracks) {\n      const track = tracks[type];\n      if (track.id === \"main\") {\n        name = type;\n        mediaTrack = track;\n        if (type === \"video\") {\n          const videoTrack = tracks[type];\n          if (videoTrack) {\n            this.videoBuffer = videoTrack.buffer;\n          }\n        }\n      } else {\n        alternate = true;\n      }\n    }\n    if (alternate && mediaTrack) {\n      this.log(`Alternate track found, use ${name}.buffered to schedule main fragment loading`);\n      this.mediaBuffer = mediaTrack.buffer;\n    } else {\n      this.mediaBuffer = this.media;\n    }\n  }\n  onFragBuffered(event, data) {\n    const {\n      frag,\n      part\n    } = data;\n    if (frag && frag.type !== PlaylistLevelType.MAIN) {\n      return;\n    }\n    if (this.fragContextChanged(frag)) {\n      this.warn(`Fragment ${frag.sn}${part ? \" p: \" + part.index : \"\"} of level ${frag.level} finished buffering, but was aborted. state: ${this.state}`);\n      if (this.state === State.PARSED) {\n        this.state = State.IDLE;\n      }\n      return;\n    }\n    const stats = part ? part.stats : frag.stats;\n    this.fragLastKbps = Math.round(8 * stats.total / (stats.buffering.end - stats.loading.first));\n    if (frag.sn !== \"initSegment\") {\n      this.fragPrevious = frag;\n    }\n    this.fragBufferedComplete(frag, part);\n  }\n  onError(event, data) {\n    var _data$context;\n    if (data.fatal) {\n      this.state = State.ERROR;\n      return;\n    }\n    switch (data.details) {\n      case ErrorDetails.FRAG_GAP:\n      case ErrorDetails.FRAG_PARSING_ERROR:\n      case ErrorDetails.FRAG_DECRYPT_ERROR:\n      case ErrorDetails.FRAG_LOAD_ERROR:\n      case ErrorDetails.FRAG_LOAD_TIMEOUT:\n      case ErrorDetails.KEY_LOAD_ERROR:\n      case ErrorDetails.KEY_LOAD_TIMEOUT:\n        this.onFragmentOrKeyLoadError(PlaylistLevelType.MAIN, data);\n        break;\n      case ErrorDetails.LEVEL_LOAD_ERROR:\n      case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n      case ErrorDetails.LEVEL_PARSING_ERROR:\n        if (!data.levelRetry && this.state === State.WAITING_LEVEL && ((_data$context = data.context) == null ? void 0 : _data$context.type) === PlaylistContextType.LEVEL) {\n          this.state = State.IDLE;\n        }\n        break;\n      case ErrorDetails.BUFFER_APPEND_ERROR:\n      case ErrorDetails.BUFFER_FULL_ERROR:\n        if (!data.parent || data.parent !== \"main\") {\n          return;\n        }\n        if (data.details === ErrorDetails.BUFFER_APPEND_ERROR) {\n          this.resetLoadingState();\n          return;\n        }\n        if (this.reduceLengthAndFlushBuffer(data)) {\n          this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n        }\n        break;\n      case ErrorDetails.INTERNAL_EXCEPTION:\n        this.recoverWorkerError(data);\n        break;\n    }\n  }\n  // Checks the health of the buffer and attempts to resolve playback stalls.\n  checkBuffer() {\n    const {\n      media,\n      gapController\n    } = this;\n    if (!media || !gapController || !media.readyState) {\n      return;\n    }\n    if (this.loadedmetadata || !BufferHelper.getBuffered(media).length) {\n      const activeFrag = this.state !== State.IDLE ? this.fragCurrent : null;\n      gapController.poll(this.lastCurrentTime, activeFrag);\n    }\n    this.lastCurrentTime = media.currentTime;\n  }\n  onFragLoadEmergencyAborted() {\n    this.state = State.IDLE;\n    if (!this.loadedmetadata) {\n      this.startFragRequested = false;\n      this.nextLoadPosition = this.startPosition;\n    }\n    this.tickImmediate();\n  }\n  onBufferFlushed(event, {\n    type\n  }) {\n    if (type !== ElementaryStreamTypes.AUDIO || this.audioOnly && !this.altAudio) {\n      const mediaBuffer = (type === ElementaryStreamTypes.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;\n      this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN);\n      this.tick();\n    }\n  }\n  onLevelsUpdated(event, data) {\n    if (this.level > -1 && this.fragCurrent) {\n      this.level = this.fragCurrent.level;\n    }\n    this.levels = data.levels;\n  }\n  swapAudioCodec() {\n    this.audioCodecSwap = !this.audioCodecSwap;\n  }\n  /**\n   * Seeks to the set startPosition if not equal to the mediaElement's current time.\n   */\n  seekToStartPos() {\n    const {\n      media\n    } = this;\n    if (!media) {\n      return;\n    }\n    const currentTime = media.currentTime;\n    let startPosition = this.startPosition;\n    if (startPosition >= 0 && currentTime < startPosition) {\n      if (media.seeking) {\n        this.log(`could not seek to ${startPosition}, already seeking at ${currentTime}`);\n        return;\n      }\n      const buffered = BufferHelper.getBuffered(media);\n      const bufferStart = buffered.length ? buffered.start(0) : 0;\n      const delta = bufferStart - startPosition;\n      if (delta > 0 && (delta < this.config.maxBufferHole || delta < this.config.maxFragLookUpTolerance)) {\n        this.log(`adjusting start position by ${delta} to match buffer start`);\n        startPosition += delta;\n        this.startPosition = startPosition;\n      }\n      this.log(`seek to target start position ${startPosition} from current time ${currentTime}`);\n      media.currentTime = startPosition;\n    }\n  }\n  _getAudioCodec(currentLevel) {\n    let audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec;\n    if (this.audioCodecSwap && audioCodec) {\n      this.log(\"Swapping audio codec\");\n      if (audioCodec.indexOf(\"mp4a.40.5\") !== -1) {\n        audioCodec = \"mp4a.40.2\";\n      } else {\n        audioCodec = \"mp4a.40.5\";\n      }\n    }\n    return audioCodec;\n  }\n  _loadBitrateTestFrag(frag, level) {\n    frag.bitrateTest = true;\n    this._doFragLoad(frag, level).then((data) => {\n      const {\n        hls\n      } = this;\n      if (!data || this.fragContextChanged(frag)) {\n        return;\n      }\n      level.fragmentError = 0;\n      this.state = State.IDLE;\n      this.startFragRequested = false;\n      this.bitrateTest = false;\n      const stats = frag.stats;\n      stats.parsing.start = stats.parsing.end = stats.buffering.start = stats.buffering.end = self.performance.now();\n      hls.trigger(Events.FRAG_LOADED, data);\n      frag.bitrateTest = false;\n    });\n  }\n  _handleTransmuxComplete(transmuxResult) {\n    var _id3$samples;\n    const id = \"main\";\n    const {\n      hls\n    } = this;\n    const {\n      remuxResult,\n      chunkMeta\n    } = transmuxResult;\n    const context = this.getCurrentContext(chunkMeta);\n    if (!context) {\n      this.resetWhenMissingContext(chunkMeta);\n      return;\n    }\n    const {\n      frag,\n      part,\n      level\n    } = context;\n    const {\n      video,\n      text,\n      id3,\n      initSegment\n    } = remuxResult;\n    const {\n      details\n    } = level;\n    const audio = this.altAudio ? void 0 : remuxResult.audio;\n    if (this.fragContextChanged(frag)) {\n      this.fragmentTracker.removeFragment(frag);\n      return;\n    }\n    this.state = State.PARSING;\n    if (initSegment) {\n      if (initSegment != null && initSegment.tracks) {\n        const mapFragment = frag.initSegment || frag;\n        this._bufferInitSegment(level, initSegment.tracks, mapFragment, chunkMeta);\n        hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, {\n          frag: mapFragment,\n          id,\n          tracks: initSegment.tracks\n        });\n      }\n      const initPTS = initSegment.initPTS;\n      const timescale = initSegment.timescale;\n      if (isFiniteNumber(initPTS)) {\n        this.initPTS[frag.cc] = {\n          baseTime: initPTS,\n          timescale\n        };\n        hls.trigger(Events.INIT_PTS_FOUND, {\n          frag,\n          id,\n          initPTS,\n          timescale\n        });\n      }\n    }\n    if (video && details && frag.sn !== \"initSegment\") {\n      const prevFrag = details.fragments[frag.sn - 1 - details.startSN];\n      const isFirstFragment = frag.sn === details.startSN;\n      const isFirstInDiscontinuity = !prevFrag || frag.cc > prevFrag.cc;\n      if (remuxResult.independent !== false) {\n        const {\n          startPTS,\n          endPTS,\n          startDTS,\n          endDTS\n        } = video;\n        if (part) {\n          part.elementaryStreams[video.type] = {\n            startPTS,\n            endPTS,\n            startDTS,\n            endDTS\n          };\n        } else {\n          if (video.firstKeyFrame && video.independent && chunkMeta.id === 1 && !isFirstInDiscontinuity) {\n            this.couldBacktrack = true;\n          }\n          if (video.dropped && video.independent) {\n            const bufferInfo = this.getMainFwdBufferInfo();\n            const targetBufferTime = (bufferInfo ? bufferInfo.end : this.getLoadPosition()) + this.config.maxBufferHole;\n            const startTime = video.firstKeyFramePTS ? video.firstKeyFramePTS : startPTS;\n            if (!isFirstFragment && targetBufferTime < startTime - this.config.maxBufferHole && !isFirstInDiscontinuity) {\n              this.backtrack(frag);\n              return;\n            } else if (isFirstInDiscontinuity) {\n              frag.gap = true;\n            }\n            frag.setElementaryStreamInfo(video.type, frag.start, endPTS, frag.start, endDTS, true);\n          } else if (isFirstFragment && startPTS > MAX_START_GAP_JUMP) {\n            frag.gap = true;\n          }\n        }\n        frag.setElementaryStreamInfo(video.type, startPTS, endPTS, startDTS, endDTS);\n        if (this.backtrackFragment) {\n          this.backtrackFragment = frag;\n        }\n        this.bufferFragmentData(video, frag, part, chunkMeta, isFirstFragment || isFirstInDiscontinuity);\n      } else if (isFirstFragment || isFirstInDiscontinuity) {\n        frag.gap = true;\n      } else {\n        this.backtrack(frag);\n        return;\n      }\n    }\n    if (audio) {\n      const {\n        startPTS,\n        endPTS,\n        startDTS,\n        endDTS\n      } = audio;\n      if (part) {\n        part.elementaryStreams[ElementaryStreamTypes.AUDIO] = {\n          startPTS,\n          endPTS,\n          startDTS,\n          endDTS\n        };\n      }\n      frag.setElementaryStreamInfo(ElementaryStreamTypes.AUDIO, startPTS, endPTS, startDTS, endDTS);\n      this.bufferFragmentData(audio, frag, part, chunkMeta);\n    }\n    if (details && id3 != null && (_id3$samples = id3.samples) != null && _id3$samples.length) {\n      const emittedID3 = {\n        id,\n        frag,\n        details,\n        samples: id3.samples\n      };\n      hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3);\n    }\n    if (details && text) {\n      const emittedText = {\n        id,\n        frag,\n        details,\n        samples: text.samples\n      };\n      hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText);\n    }\n  }\n  _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {\n    if (this.state !== State.PARSING) {\n      return;\n    }\n    this.audioOnly = !!tracks.audio && !tracks.video;\n    if (this.altAudio && !this.audioOnly) {\n      delete tracks.audio;\n    }\n    const {\n      audio,\n      video,\n      audiovideo\n    } = tracks;\n    if (audio) {\n      let audioCodec = currentLevel.audioCodec;\n      const ua2 = navigator.userAgent.toLowerCase();\n      if (this.audioCodecSwitch) {\n        if (audioCodec) {\n          if (audioCodec.indexOf(\"mp4a.40.5\") !== -1) {\n            audioCodec = \"mp4a.40.2\";\n          } else {\n            audioCodec = \"mp4a.40.5\";\n          }\n        }\n        const audioMetadata = audio.metadata;\n        if (audioMetadata && \"channelCount\" in audioMetadata && (audioMetadata.channelCount || 1) !== 1 && ua2.indexOf(\"firefox\") === -1) {\n          audioCodec = \"mp4a.40.5\";\n        }\n      }\n      if (audioCodec && audioCodec.indexOf(\"mp4a.40.5\") !== -1 && ua2.indexOf(\"android\") !== -1 && audio.container !== \"audio/mpeg\") {\n        audioCodec = \"mp4a.40.2\";\n        this.log(`Android: force audio codec to ${audioCodec}`);\n      }\n      if (currentLevel.audioCodec && currentLevel.audioCodec !== audioCodec) {\n        this.log(`Swapping manifest audio codec \"${currentLevel.audioCodec}\" for \"${audioCodec}\"`);\n      }\n      audio.levelCodec = audioCodec;\n      audio.id = \"main\";\n      this.log(`Init audio buffer, container:${audio.container}, codecs[selected/level/parsed]=[${audioCodec || \"\"}/${currentLevel.audioCodec || \"\"}/${audio.codec}]`);\n    }\n    if (video) {\n      video.levelCodec = currentLevel.videoCodec;\n      video.id = \"main\";\n      this.log(`Init video buffer, container:${video.container}, codecs[level/parsed]=[${currentLevel.videoCodec || \"\"}/${video.codec}]`);\n    }\n    if (audiovideo) {\n      this.log(`Init audiovideo buffer, container:${audiovideo.container}, codecs[level/parsed]=[${currentLevel.codecs}/${audiovideo.codec}]`);\n    }\n    this.hls.trigger(Events.BUFFER_CODECS, tracks);\n    Object.keys(tracks).forEach((trackName) => {\n      const track = tracks[trackName];\n      const initSegment = track.initSegment;\n      if (initSegment != null && initSegment.byteLength) {\n        this.hls.trigger(Events.BUFFER_APPENDING, {\n          type: trackName,\n          data: initSegment,\n          frag,\n          part: null,\n          chunkMeta,\n          parent: frag.type\n        });\n      }\n    });\n    this.tickImmediate();\n  }\n  getMainFwdBufferInfo() {\n    return this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : this.media, PlaylistLevelType.MAIN);\n  }\n  backtrack(frag) {\n    this.couldBacktrack = true;\n    this.backtrackFragment = frag;\n    this.resetTransmuxer();\n    this.flushBufferGap(frag);\n    this.fragmentTracker.removeFragment(frag);\n    this.fragPrevious = null;\n    this.nextLoadPosition = frag.start;\n    this.state = State.IDLE;\n  }\n  checkFragmentChanged() {\n    const video = this.media;\n    let fragPlayingCurrent = null;\n    if (video && video.readyState > 1 && video.seeking === false) {\n      const currentTime = video.currentTime;\n      if (BufferHelper.isBuffered(video, currentTime)) {\n        fragPlayingCurrent = this.getAppendedFrag(currentTime);\n      } else if (BufferHelper.isBuffered(video, currentTime + 0.1)) {\n        fragPlayingCurrent = this.getAppendedFrag(currentTime + 0.1);\n      }\n      if (fragPlayingCurrent) {\n        this.backtrackFragment = null;\n        const fragPlaying = this.fragPlaying;\n        const fragCurrentLevel = fragPlayingCurrent.level;\n        if (!fragPlaying || fragPlayingCurrent.sn !== fragPlaying.sn || fragPlaying.level !== fragCurrentLevel) {\n          this.fragPlaying = fragPlayingCurrent;\n          this.hls.trigger(Events.FRAG_CHANGED, {\n            frag: fragPlayingCurrent\n          });\n          if (!fragPlaying || fragPlaying.level !== fragCurrentLevel) {\n            this.hls.trigger(Events.LEVEL_SWITCHED, {\n              level: fragCurrentLevel\n            });\n          }\n        }\n      }\n    }\n  }\n  get nextLevel() {\n    const frag = this.nextBufferedFrag;\n    if (frag) {\n      return frag.level;\n    }\n    return -1;\n  }\n  get currentFrag() {\n    const media = this.media;\n    if (media) {\n      return this.fragPlaying || this.getAppendedFrag(media.currentTime);\n    }\n    return null;\n  }\n  get currentProgramDateTime() {\n    const media = this.media;\n    if (media) {\n      const currentTime = media.currentTime;\n      const frag = this.currentFrag;\n      if (frag && isFiniteNumber(currentTime) && isFiniteNumber(frag.programDateTime)) {\n        const epocMs = frag.programDateTime + (currentTime - frag.start) * 1e3;\n        return new Date(epocMs);\n      }\n    }\n    return null;\n  }\n  get currentLevel() {\n    const frag = this.currentFrag;\n    if (frag) {\n      return frag.level;\n    }\n    return -1;\n  }\n  get nextBufferedFrag() {\n    const frag = this.currentFrag;\n    if (frag) {\n      return this.followingBufferedFrag(frag);\n    }\n    return null;\n  }\n  get forceStartLoad() {\n    return this._forceStartLoad;\n  }\n};\nvar Hls = class _Hls {\n  /**\n   * Get the video-dev/hls.js package version.\n   */\n  static get version() {\n    return \"1.5.20\";\n  }\n  /**\n   * Check if the required MediaSource Extensions are available.\n   */\n  static isMSESupported() {\n    return isMSESupported();\n  }\n  /**\n   * Check if MediaSource Extensions are available and isTypeSupported checks pass for any baseline codecs.\n   */\n  static isSupported() {\n    return isSupported();\n  }\n  /**\n   * Get the MediaSource global used for MSE playback (ManagedMediaSource, MediaSource, or WebKitMediaSource).\n   */\n  static getMediaSource() {\n    return getMediaSource();\n  }\n  static get Events() {\n    return Events;\n  }\n  static get ErrorTypes() {\n    return ErrorTypes;\n  }\n  static get ErrorDetails() {\n    return ErrorDetails;\n  }\n  /**\n   * Get the default configuration applied to new instances.\n   */\n  static get DefaultConfig() {\n    if (!_Hls.defaultConfig) {\n      return hlsDefaultConfig;\n    }\n    return _Hls.defaultConfig;\n  }\n  /**\n   * Replace the default configuration applied to new instances.\n   */\n  static set DefaultConfig(defaultConfig) {\n    _Hls.defaultConfig = defaultConfig;\n  }\n  /**\n   * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.\n   * @param userConfig - Configuration options applied over `Hls.DefaultConfig`\n   */\n  constructor(userConfig = {}) {\n    this.config = void 0;\n    this.userConfig = void 0;\n    this.coreComponents = void 0;\n    this.networkControllers = void 0;\n    this.started = false;\n    this._emitter = new EventEmitter();\n    this._autoLevelCapping = -1;\n    this._maxHdcpLevel = null;\n    this.abrController = void 0;\n    this.bufferController = void 0;\n    this.capLevelController = void 0;\n    this.latencyController = void 0;\n    this.levelController = void 0;\n    this.streamController = void 0;\n    this.audioTrackController = void 0;\n    this.subtitleTrackController = void 0;\n    this.emeController = void 0;\n    this.cmcdController = void 0;\n    this._media = null;\n    this.url = null;\n    this.triggeringException = void 0;\n    enableLogs(userConfig.debug || false, \"Hls instance\");\n    const config = this.config = mergeConfig(_Hls.DefaultConfig, userConfig);\n    this.userConfig = userConfig;\n    if (config.progressive) {\n      enableStreamingMode(config);\n    }\n    const {\n      abrController: ConfigAbrController,\n      bufferController: ConfigBufferController,\n      capLevelController: ConfigCapLevelController,\n      errorController: ConfigErrorController,\n      fpsController: ConfigFpsController\n    } = config;\n    const errorController = new ConfigErrorController(this);\n    const abrController = this.abrController = new ConfigAbrController(this);\n    const bufferController = this.bufferController = new ConfigBufferController(this);\n    const capLevelController = this.capLevelController = new ConfigCapLevelController(this);\n    const fpsController = new ConfigFpsController(this);\n    const playListLoader = new PlaylistLoader(this);\n    const id3TrackController = new ID3TrackController(this);\n    const ConfigContentSteeringController = config.contentSteeringController;\n    const contentSteering = ConfigContentSteeringController ? new ConfigContentSteeringController(this) : null;\n    const levelController = this.levelController = new LevelController(this, contentSteering);\n    const fragmentTracker = new FragmentTracker(this);\n    const keyLoader = new KeyLoader(this.config);\n    const streamController = this.streamController = new StreamController(this, fragmentTracker, keyLoader);\n    capLevelController.setStreamController(streamController);\n    fpsController.setStreamController(streamController);\n    const networkControllers = [playListLoader, levelController, streamController];\n    if (contentSteering) {\n      networkControllers.splice(1, 0, contentSteering);\n    }\n    this.networkControllers = networkControllers;\n    const coreComponents = [abrController, bufferController, capLevelController, fpsController, id3TrackController, fragmentTracker];\n    this.audioTrackController = this.createController(config.audioTrackController, networkControllers);\n    const AudioStreamControllerClass = config.audioStreamController;\n    if (AudioStreamControllerClass) {\n      networkControllers.push(new AudioStreamControllerClass(this, fragmentTracker, keyLoader));\n    }\n    this.subtitleTrackController = this.createController(config.subtitleTrackController, networkControllers);\n    const SubtitleStreamControllerClass = config.subtitleStreamController;\n    if (SubtitleStreamControllerClass) {\n      networkControllers.push(new SubtitleStreamControllerClass(this, fragmentTracker, keyLoader));\n    }\n    this.createController(config.timelineController, coreComponents);\n    keyLoader.emeController = this.emeController = this.createController(config.emeController, coreComponents);\n    this.cmcdController = this.createController(config.cmcdController, coreComponents);\n    this.latencyController = this.createController(LatencyController, coreComponents);\n    this.coreComponents = coreComponents;\n    networkControllers.push(errorController);\n    const onErrorOut = errorController.onErrorOut;\n    if (typeof onErrorOut === \"function\") {\n      this.on(Events.ERROR, onErrorOut, errorController);\n    }\n  }\n  createController(ControllerClass, components) {\n    if (ControllerClass) {\n      const controllerInstance = new ControllerClass(this);\n      if (components) {\n        components.push(controllerInstance);\n      }\n      return controllerInstance;\n    }\n    return null;\n  }\n  // Delegate the EventEmitter through the public API of Hls.js\n  on(event, listener, context = this) {\n    this._emitter.on(event, listener, context);\n  }\n  once(event, listener, context = this) {\n    this._emitter.once(event, listener, context);\n  }\n  removeAllListeners(event) {\n    this._emitter.removeAllListeners(event);\n  }\n  off(event, listener, context = this, once) {\n    this._emitter.off(event, listener, context, once);\n  }\n  listeners(event) {\n    return this._emitter.listeners(event);\n  }\n  emit(event, name, eventObject) {\n    return this._emitter.emit(event, name, eventObject);\n  }\n  trigger(event, eventObject) {\n    if (this.config.debug) {\n      return this.emit(event, event, eventObject);\n    } else {\n      try {\n        return this.emit(event, event, eventObject);\n      } catch (error) {\n        logger.error(\"An internal error happened while handling event \" + event + '. Error message: \"' + error.message + '\". Here is a stacktrace:', error);\n        if (!this.triggeringException) {\n          this.triggeringException = true;\n          const fatal = event === Events.ERROR;\n          this.trigger(Events.ERROR, {\n            type: ErrorTypes.OTHER_ERROR,\n            details: ErrorDetails.INTERNAL_EXCEPTION,\n            fatal,\n            event,\n            error\n          });\n          this.triggeringException = false;\n        }\n      }\n    }\n    return false;\n  }\n  listenerCount(event) {\n    return this._emitter.listenerCount(event);\n  }\n  /**\n   * Dispose of the instance\n   */\n  destroy() {\n    logger.log(\"destroy\");\n    this.trigger(Events.DESTROYING, void 0);\n    this.detachMedia();\n    this.removeAllListeners();\n    this._autoLevelCapping = -1;\n    this.url = null;\n    this.networkControllers.forEach((component) => component.destroy());\n    this.networkControllers.length = 0;\n    this.coreComponents.forEach((component) => component.destroy());\n    this.coreComponents.length = 0;\n    const config = this.config;\n    config.xhrSetup = config.fetchSetup = void 0;\n    this.userConfig = null;\n  }\n  /**\n   * Attaches Hls.js to a media element\n   */\n  attachMedia(media) {\n    logger.log(\"attachMedia\");\n    this._media = media;\n    this.trigger(Events.MEDIA_ATTACHING, {\n      media\n    });\n  }\n  /**\n   * Detach Hls.js from the media\n   */\n  detachMedia() {\n    logger.log(\"detachMedia\");\n    this.trigger(Events.MEDIA_DETACHING, void 0);\n    this._media = null;\n  }\n  /**\n   * Set the source URL. Can be relative or absolute.\n   */\n  loadSource(url) {\n    this.stopLoad();\n    const media = this.media;\n    const loadedSource = this.url;\n    const loadingSource = this.url = urlToolkitExports.buildAbsoluteURL(self.location.href, url, {\n      alwaysNormalize: true\n    });\n    this._autoLevelCapping = -1;\n    this._maxHdcpLevel = null;\n    logger.log(`loadSource:${loadingSource}`);\n    if (media && loadedSource && (loadedSource !== loadingSource || this.bufferController.hasSourceTypes())) {\n      this.detachMedia();\n      this.attachMedia(media);\n    }\n    this.trigger(Events.MANIFEST_LOADING, {\n      url\n    });\n  }\n  /**\n   * Start loading data from the stream source.\n   * Depending on default config, client starts loading automatically when a source is set.\n   *\n   * @param startPosition - Set the start position to stream from.\n   * Defaults to -1 (None: starts from earliest point)\n   */\n  startLoad(startPosition = -1) {\n    logger.log(`startLoad(${startPosition})`);\n    this.started = true;\n    this.resumeBuffering();\n    for (let i2 = 0; i2 < this.networkControllers.length; i2++) {\n      this.networkControllers[i2].startLoad(startPosition);\n      if (!this.started || !this.networkControllers) {\n        break;\n      }\n    }\n  }\n  /**\n   * Stop loading of any stream data.\n   */\n  stopLoad() {\n    logger.log(\"stopLoad\");\n    this.started = false;\n    for (let i2 = 0; i2 < this.networkControllers.length; i2++) {\n      this.networkControllers[i2].stopLoad();\n      if (this.started || !this.networkControllers) {\n        break;\n      }\n    }\n  }\n  /**\n   * Resumes stream controller segment loading after `pauseBuffering` has been called.\n   */\n  resumeBuffering() {\n    logger.log(`resume buffering`);\n    this.networkControllers.forEach((controller) => {\n      if (controller.resumeBuffering) {\n        controller.resumeBuffering();\n      }\n    });\n  }\n  /**\n   * Prevents stream controller from loading new segments until `resumeBuffering` is called.\n   * This allows for media buffering to be paused without interupting playlist loading.\n   */\n  pauseBuffering() {\n    logger.log(`pause buffering`);\n    this.networkControllers.forEach((controller) => {\n      if (controller.pauseBuffering) {\n        controller.pauseBuffering();\n      }\n    });\n  }\n  /**\n   * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)\n   */\n  swapAudioCodec() {\n    logger.log(\"swapAudioCodec\");\n    this.streamController.swapAudioCodec();\n  }\n  /**\n   * When the media-element fails, this allows to detach and then re-attach it\n   * as one call (convenience method).\n   *\n   * Automatic recovery of media-errors by this process is configurable.\n   */\n  recoverMediaError() {\n    logger.log(\"recoverMediaError\");\n    const media = this._media;\n    this.detachMedia();\n    if (media) {\n      this.attachMedia(media);\n    }\n  }\n  removeLevel(levelIndex) {\n    this.levelController.removeLevel(levelIndex);\n  }\n  /**\n   * @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH\n   */\n  get levels() {\n    const levels = this.levelController.levels;\n    return levels ? levels : [];\n  }\n  /**\n   * Index of quality level (variant) currently played\n   */\n  get currentLevel() {\n    return this.streamController.currentLevel;\n  }\n  /**\n   * Set quality level index immediately. This will flush the current buffer to replace the quality asap. That means playback will interrupt at least shortly to re-buffer and re-sync eventually. Set to -1 for automatic level selection.\n   */\n  set currentLevel(newLevel) {\n    logger.log(`set currentLevel:${newLevel}`);\n    this.levelController.manualLevel = newLevel;\n    this.streamController.immediateLevelSwitch();\n  }\n  /**\n   * Index of next quality level loaded as scheduled by stream controller.\n   */\n  get nextLevel() {\n    return this.streamController.nextLevel;\n  }\n  /**\n   * Set quality level index for next loaded data.\n   * This will switch the video quality asap, without interrupting playback.\n   * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).\n   * @param newLevel - Pass -1 for automatic level selection\n   */\n  set nextLevel(newLevel) {\n    logger.log(`set nextLevel:${newLevel}`);\n    this.levelController.manualLevel = newLevel;\n    this.streamController.nextLevelSwitch();\n  }\n  /**\n   * Return the quality level of the currently or last (of none is loaded currently) segment\n   */\n  get loadLevel() {\n    return this.levelController.level;\n  }\n  /**\n   * Set quality level index for next loaded data in a conservative way.\n   * This will switch the quality without flushing, but interrupt current loading.\n   * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.\n   * @param newLevel - Pass -1 for automatic level selection\n   */\n  set loadLevel(newLevel) {\n    logger.log(`set loadLevel:${newLevel}`);\n    this.levelController.manualLevel = newLevel;\n  }\n  /**\n   * get next quality level loaded\n   */\n  get nextLoadLevel() {\n    return this.levelController.nextLoadLevel;\n  }\n  /**\n   * Set quality level of next loaded segment in a fully \"non-destructive\" way.\n   * Same as `loadLevel` but will wait for next switch (until current loading is done).\n   */\n  set nextLoadLevel(level) {\n    this.levelController.nextLoadLevel = level;\n  }\n  /**\n   * Return \"first level\": like a default level, if not set,\n   * falls back to index of first level referenced in manifest\n   */\n  get firstLevel() {\n    return Math.max(this.levelController.firstLevel, this.minAutoLevel);\n  }\n  /**\n   * Sets \"first-level\", see getter.\n   */\n  set firstLevel(newLevel) {\n    logger.log(`set firstLevel:${newLevel}`);\n    this.levelController.firstLevel = newLevel;\n  }\n  /**\n   * Return the desired start level for the first fragment that will be loaded.\n   * The default value of -1 indicates automatic start level selection.\n   * Setting hls.nextAutoLevel without setting a startLevel will result in\n   * the nextAutoLevel value being used for one fragment load.\n   */\n  get startLevel() {\n    const startLevel = this.levelController.startLevel;\n    if (startLevel === -1 && this.abrController.forcedAutoLevel > -1) {\n      return this.abrController.forcedAutoLevel;\n    }\n    return startLevel;\n  }\n  /**\n   * set  start level (level of first fragment that will be played back)\n   * if not overrided by user, first level appearing in manifest will be used as start level\n   * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n   * (determined from download of first segment)\n   */\n  set startLevel(newLevel) {\n    logger.log(`set startLevel:${newLevel}`);\n    if (newLevel !== -1) {\n      newLevel = Math.max(newLevel, this.minAutoLevel);\n    }\n    this.levelController.startLevel = newLevel;\n  }\n  /**\n   * Whether level capping is enabled.\n   * Default value is set via `config.capLevelToPlayerSize`.\n   */\n  get capLevelToPlayerSize() {\n    return this.config.capLevelToPlayerSize;\n  }\n  /**\n   * Enables or disables level capping. If disabled after previously enabled, `nextLevelSwitch` will be immediately called.\n   */\n  set capLevelToPlayerSize(shouldStartCapping) {\n    const newCapLevelToPlayerSize = !!shouldStartCapping;\n    if (newCapLevelToPlayerSize !== this.config.capLevelToPlayerSize) {\n      if (newCapLevelToPlayerSize) {\n        this.capLevelController.startCapping();\n      } else {\n        this.capLevelController.stopCapping();\n        this.autoLevelCapping = -1;\n        this.streamController.nextLevelSwitch();\n      }\n      this.config.capLevelToPlayerSize = newCapLevelToPlayerSize;\n    }\n  }\n  /**\n   * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n   */\n  get autoLevelCapping() {\n    return this._autoLevelCapping;\n  }\n  /**\n   * Returns the current bandwidth estimate in bits per second, when available. Otherwise, `NaN` is returned.\n   */\n  get bandwidthEstimate() {\n    const {\n      bwEstimator\n    } = this.abrController;\n    if (!bwEstimator) {\n      return NaN;\n    }\n    return bwEstimator.getEstimate();\n  }\n  set bandwidthEstimate(abrEwmaDefaultEstimate) {\n    this.abrController.resetEstimator(abrEwmaDefaultEstimate);\n  }\n  /**\n   * get time to first byte estimate\n   * @type {number}\n   */\n  get ttfbEstimate() {\n    const {\n      bwEstimator\n    } = this.abrController;\n    if (!bwEstimator) {\n      return NaN;\n    }\n    return bwEstimator.getEstimateTTFB();\n  }\n  /**\n   * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n   */\n  set autoLevelCapping(newLevel) {\n    if (this._autoLevelCapping !== newLevel) {\n      logger.log(`set autoLevelCapping:${newLevel}`);\n      this._autoLevelCapping = newLevel;\n      this.levelController.checkMaxAutoUpdated();\n    }\n  }\n  get maxHdcpLevel() {\n    return this._maxHdcpLevel;\n  }\n  set maxHdcpLevel(value) {\n    if (isHdcpLevel(value) && this._maxHdcpLevel !== value) {\n      this._maxHdcpLevel = value;\n      this.levelController.checkMaxAutoUpdated();\n    }\n  }\n  /**\n   * True when automatic level selection enabled\n   */\n  get autoLevelEnabled() {\n    return this.levelController.manualLevel === -1;\n  }\n  /**\n   * Level set manually (if any)\n   */\n  get manualLevel() {\n    return this.levelController.manualLevel;\n  }\n  /**\n   * min level selectable in auto mode according to config.minAutoBitrate\n   */\n  get minAutoLevel() {\n    const {\n      levels,\n      config: {\n        minAutoBitrate\n      }\n    } = this;\n    if (!levels) return 0;\n    const len = levels.length;\n    for (let i2 = 0; i2 < len; i2++) {\n      if (levels[i2].maxBitrate >= minAutoBitrate) {\n        return i2;\n      }\n    }\n    return 0;\n  }\n  /**\n   * max level selectable in auto mode according to autoLevelCapping\n   */\n  get maxAutoLevel() {\n    const {\n      levels,\n      autoLevelCapping,\n      maxHdcpLevel\n    } = this;\n    let maxAutoLevel;\n    if (autoLevelCapping === -1 && levels != null && levels.length) {\n      maxAutoLevel = levels.length - 1;\n    } else {\n      maxAutoLevel = autoLevelCapping;\n    }\n    if (maxHdcpLevel) {\n      for (let i2 = maxAutoLevel; i2--; ) {\n        const hdcpLevel = levels[i2].attrs[\"HDCP-LEVEL\"];\n        if (hdcpLevel && hdcpLevel <= maxHdcpLevel) {\n          return i2;\n        }\n      }\n    }\n    return maxAutoLevel;\n  }\n  get firstAutoLevel() {\n    return this.abrController.firstAutoLevel;\n  }\n  /**\n   * next automatically selected quality level\n   */\n  get nextAutoLevel() {\n    return this.abrController.nextAutoLevel;\n  }\n  /**\n   * this setter is used to force next auto level.\n   * this is useful to force a switch down in auto mode:\n   * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)\n   * forced value is valid for one fragment. upon successful frag loading at forced level,\n   * this value will be resetted to -1 by ABR controller.\n   */\n  set nextAutoLevel(nextLevel) {\n    this.abrController.nextAutoLevel = nextLevel;\n  }\n  /**\n   * get the datetime value relative to media.currentTime for the active level Program Date Time if present\n   */\n  get playingDate() {\n    return this.streamController.currentProgramDateTime;\n  }\n  get mainForwardBufferInfo() {\n    return this.streamController.getMainFwdBufferInfo();\n  }\n  /**\n   * Find and select the best matching audio track, making a level switch when a Group change is necessary.\n   * Updates `hls.config.audioPreference`. Returns the selected track, or null when no matching track is found.\n   */\n  setAudioOption(audioOption) {\n    var _this$audioTrackContr;\n    return (_this$audioTrackContr = this.audioTrackController) == null ? void 0 : _this$audioTrackContr.setAudioOption(audioOption);\n  }\n  /**\n   * Find and select the best matching subtitle track, making a level switch when a Group change is necessary.\n   * Updates `hls.config.subtitlePreference`. Returns the selected track, or null when no matching track is found.\n   */\n  setSubtitleOption(subtitleOption) {\n    var _this$subtitleTrackCo;\n    (_this$subtitleTrackCo = this.subtitleTrackController) == null ? void 0 : _this$subtitleTrackCo.setSubtitleOption(subtitleOption);\n    return null;\n  }\n  /**\n   * Get the complete list of audio tracks across all media groups\n   */\n  get allAudioTracks() {\n    const audioTrackController = this.audioTrackController;\n    return audioTrackController ? audioTrackController.allAudioTracks : [];\n  }\n  /**\n   * Get the list of selectable audio tracks\n   */\n  get audioTracks() {\n    const audioTrackController = this.audioTrackController;\n    return audioTrackController ? audioTrackController.audioTracks : [];\n  }\n  /**\n   * index of the selected audio track (index in audio track lists)\n   */\n  get audioTrack() {\n    const audioTrackController = this.audioTrackController;\n    return audioTrackController ? audioTrackController.audioTrack : -1;\n  }\n  /**\n   * selects an audio track, based on its index in audio track lists\n   */\n  set audioTrack(audioTrackId) {\n    const audioTrackController = this.audioTrackController;\n    if (audioTrackController) {\n      audioTrackController.audioTrack = audioTrackId;\n    }\n  }\n  /**\n   * get the complete list of subtitle tracks across all media groups\n   */\n  get allSubtitleTracks() {\n    const subtitleTrackController = this.subtitleTrackController;\n    return subtitleTrackController ? subtitleTrackController.allSubtitleTracks : [];\n  }\n  /**\n   * get alternate subtitle tracks list from playlist\n   */\n  get subtitleTracks() {\n    const subtitleTrackController = this.subtitleTrackController;\n    return subtitleTrackController ? subtitleTrackController.subtitleTracks : [];\n  }\n  /**\n   * index of the selected subtitle track (index in subtitle track lists)\n   */\n  get subtitleTrack() {\n    const subtitleTrackController = this.subtitleTrackController;\n    return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1;\n  }\n  get media() {\n    return this._media;\n  }\n  /**\n   * select an subtitle track, based on its index in subtitle track lists\n   */\n  set subtitleTrack(subtitleTrackId) {\n    const subtitleTrackController = this.subtitleTrackController;\n    if (subtitleTrackController) {\n      subtitleTrackController.subtitleTrack = subtitleTrackId;\n    }\n  }\n  /**\n   * Whether subtitle display is enabled or not\n   */\n  get subtitleDisplay() {\n    const subtitleTrackController = this.subtitleTrackController;\n    return subtitleTrackController ? subtitleTrackController.subtitleDisplay : false;\n  }\n  /**\n   * Enable/disable subtitle display rendering\n   */\n  set subtitleDisplay(value) {\n    const subtitleTrackController = this.subtitleTrackController;\n    if (subtitleTrackController) {\n      subtitleTrackController.subtitleDisplay = value;\n    }\n  }\n  /**\n   * get mode for Low-Latency HLS loading\n   */\n  get lowLatencyMode() {\n    return this.config.lowLatencyMode;\n  }\n  /**\n   * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK.\n   */\n  set lowLatencyMode(mode) {\n    this.config.lowLatencyMode = mode;\n  }\n  /**\n   * Position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```)\n   * @returns null prior to loading live Playlist\n   */\n  get liveSyncPosition() {\n    return this.latencyController.liveSyncPosition;\n  }\n  /**\n   * Estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced)\n   * @returns 0 before first playlist is loaded\n   */\n  get latency() {\n    return this.latencyController.latency;\n  }\n  /**\n   * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition```\n   * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration```\n   * @returns 0 before first playlist is loaded\n   */\n  get maxLatency() {\n    return this.latencyController.maxLatency;\n  }\n  /**\n   * target distance from the edge as calculated by the latency controller\n   */\n  get targetLatency() {\n    return this.latencyController.targetLatency;\n  }\n  /**\n   * the rate at which the edge of the current live playlist is advancing or 1 if there is none\n   */\n  get drift() {\n    return this.latencyController.drift;\n  }\n  /**\n   * set to true when startLoad is called before MANIFEST_PARSED event\n   */\n  get forceStartLoad() {\n    return this.streamController.forceStartLoad;\n  }\n};\nHls.defaultConfig = void 0;\n\n// node_modules/.pnpm/@mux+playback-core@0.25.2/node_modules/@mux/playback-core/dist/index.mjs\nvar T = Hls;\nvar v = class v2 extends Error {\n  constructor(n2, a2 = v2.MEDIA_ERR_CUSTOM, r10, o) {\n    var s;\n    super(n2);\n    this.name = \"MediaError\", this.code = a2, this.context = o, this.fatal = r10 != null ? r10 : a2 >= v2.MEDIA_ERR_NETWORK && a2 <= v2.MEDIA_ERR_ENCRYPTED, this.message || (this.message = (s = v2.defaultMessages[this.code]) != null ? s : \"\");\n  }\n};\nv.MEDIA_ERR_ABORTED = 1, v.MEDIA_ERR_NETWORK = 2, v.MEDIA_ERR_DECODE = 3, v.MEDIA_ERR_SRC_NOT_SUPPORTED = 4, v.MEDIA_ERR_ENCRYPTED = 5, v.MEDIA_ERR_CUSTOM = 100, v.defaultMessages = { 1: \"You aborted the media playback\", 2: \"A network error caused the media download to fail.\", 3: \"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.\", 4: \"An unsupported error occurred. The server or network failed, or your browser does not support this format.\", 5: \"The media is encrypted and there are no keys to decrypt it.\" };\nvar x = v;\nvar we = (e) => e == null;\nvar N = (e, t2) => we(t2) ? false : e in t2;\nvar w = { ANY: \"any\", MUTED: \"muted\" };\nvar g = { ON_DEMAND: \"on-demand\", LIVE: \"live\", UNKNOWN: \"unknown\" };\nvar _ = { MSE: \"mse\", NATIVE: \"native\" };\nvar h = { HEADER: \"header\", QUERY: \"query\", NONE: \"none\" };\nvar dt2 = Object.values(h);\nvar b2 = { M3U8: \"application/vnd.apple.mpegurl\", MP4: \"video/mp4\" };\nvar D = { HLS: b2.M3U8 };\nvar lt2 = Object.keys(D);\nvar pt2 = [...Object.values(b2), \"hls\", \"HLS\"];\nvar y = (e, t2, n2, a2, r10 = e) => {\n  r10.addEventListener(t2, n2, a2), e.addEventListener(\"teardown\", () => {\n    r10.removeEventListener(t2, n2);\n  }, { once: true });\n};\nfunction Q(e, t2, n2) {\n  t2 && n2 > t2 && (n2 = t2);\n  for (let a2 = 0; a2 < e.length; a2++) if (e.start(a2) <= n2 && e.end(a2) >= n2) return true;\n  return false;\n}\nvar Z2 = (e) => {\n  let t2 = e.indexOf(\"?\");\n  if (t2 < 0) return [e];\n  let n2 = e.slice(0, t2), a2 = e.slice(t2);\n  return [n2, a2];\n};\nvar C2 = (e) => {\n  let t2 = e.type;\n  if (t2) {\n    let a2 = t2.toUpperCase();\n    return N(a2, D) ? D[a2] : t2;\n  }\n  let { src: n2 } = e;\n  return n2 ? De2(n2) : \"\";\n};\nvar O2 = (e) => e === \"VOD\" ? g.ON_DEMAND : g.LIVE;\nvar V = (e) => e === \"EVENT\" ? Number.POSITIVE_INFINITY : e === \"VOD\" ? Number.NaN : 0;\nvar De2 = (e) => {\n  let t2 = \"\";\n  try {\n    t2 = new URL(e).pathname;\n  } catch (e2) {\n    console.error(\"invalid url\");\n  }\n  let n2 = t2.lastIndexOf(\".\");\n  if (n2 < 0) return \"\";\n  let r10 = t2.slice(n2 + 1).toUpperCase();\n  return N(r10, b2) ? b2[r10] : \"\";\n};\nvar Ie2 = Object.values(w);\nvar ee2 = (e) => typeof e == \"boolean\" || typeof e == \"string\" && Ie2.includes(e);\nvar te2 = (e, t2, n2) => {\n  let { autoplay: a2 } = e, r10 = false, o = false, s = ee2(a2) ? a2 : !!a2, i2 = () => {\n    r10 || y(t2, \"playing\", () => {\n      r10 = true;\n    }, { once: true });\n  };\n  if (i2(), y(t2, \"loadstart\", () => {\n    r10 = false, i2(), U2(t2, s);\n  }, { once: true }), y(t2, \"loadstart\", () => {\n    n2 || (e.streamType && e.streamType !== g.UNKNOWN ? o = e.streamType === g.LIVE : o = !Number.isFinite(t2.duration)), U2(t2, s);\n  }, { once: true }), n2 && n2.once(T.Events.LEVEL_LOADED, (u3, d4) => {\n    var c4;\n    e.streamType && e.streamType !== g.UNKNOWN ? o = e.streamType === g.LIVE : o = (c4 = d4.details.live) != null ? c4 : false;\n  }), !s) {\n    let u3 = () => {\n      !o || Number.isFinite(e.startTime) || (n2 != null && n2.liveSyncPosition ? t2.currentTime = n2.liveSyncPosition : Number.isFinite(t2.seekable.end(0)) && (t2.currentTime = t2.seekable.end(0)));\n    };\n    n2 && y(t2, \"play\", () => {\n      t2.preload === \"metadata\" ? n2.once(T.Events.LEVEL_UPDATED, u3) : u3();\n    }, { once: true });\n  }\n  return (u3) => {\n    r10 || (s = ee2(u3) ? u3 : !!u3, U2(t2, s));\n  };\n};\nvar U2 = (e, t2) => {\n  if (!t2) return;\n  let n2 = e.muted, a2 = () => e.muted = n2;\n  switch (t2) {\n    case w.ANY:\n      e.play().catch(() => {\n        e.muted = true, e.play().catch(a2);\n      });\n      break;\n    case w.MUTED:\n      e.muted = true, e.play().catch(a2);\n      break;\n    default:\n      e.play().catch(() => {\n      });\n      break;\n  }\n};\nvar ne2 = ({ preload: e, src: t2 }, n2, a2) => {\n  let r10 = (c4) => {\n    c4 != null && [\"\", \"none\", \"metadata\", \"auto\"].includes(c4) ? n2.setAttribute(\"preload\", c4) : n2.removeAttribute(\"preload\");\n  };\n  if (!a2) return r10(e), r10;\n  let o = false, s = false, i2 = a2.config.maxBufferLength, l = a2.config.maxBufferSize, u3 = (c4) => {\n    r10(c4);\n    let p3 = c4 != null ? c4 : n2.preload;\n    s || p3 === \"none\" || (p3 === \"metadata\" ? (a2.config.maxBufferLength = 1, a2.config.maxBufferSize = 1) : (a2.config.maxBufferLength = i2, a2.config.maxBufferSize = l), d4());\n  }, d4 = () => {\n    !o && t2 && (o = true, a2.loadSource(t2));\n  };\n  return y(n2, \"play\", () => {\n    s = true, a2.config.maxBufferLength = i2, a2.config.maxBufferSize = l, d4();\n  }, { once: true }), u3(e), u3;\n};\nfunction re(e, t2) {\n  var l;\n  if (!(\"videoTracks\" in e)) return;\n  let n2 = /* @__PURE__ */ new WeakMap();\n  t2.on(T.Events.MANIFEST_PARSED, function(u3, d4) {\n    i2();\n    let c4 = e.addVideoTrack(\"main\");\n    c4.selected = true;\n    for (let [p3, f] of d4.levels.entries()) {\n      let m3 = c4.addRendition(f.url[0], f.width, f.height, f.videoCodec, f.bitrate);\n      n2.set(f, `${p3}`), m3.id = `${p3}`;\n    }\n  }), t2.on(T.Events.AUDIO_TRACKS_UPDATED, function(u3, d4) {\n    s();\n    for (let c4 of d4.audioTracks) {\n      let p3 = c4.default ? \"main\" : \"alternative\", f = e.addAudioTrack(p3, c4.name, c4.lang);\n      f.id = `${c4.id}`, c4.default && (f.enabled = true);\n    }\n  }), e.audioTracks.addEventListener(\"change\", () => {\n    var c4;\n    let u3 = +((c4 = [...e.audioTracks].find((p3) => p3.enabled)) == null ? void 0 : c4.id), d4 = t2.audioTracks.map((p3) => p3.id);\n    u3 != t2.audioTrack && d4.includes(u3) && (t2.audioTrack = u3);\n  }), t2.on(T.Events.LEVELS_UPDATED, function(u3, d4) {\n    var f;\n    let c4 = e.videoTracks[(f = e.videoTracks.selectedIndex) != null ? f : 0];\n    if (!c4) return;\n    let p3 = d4.levels.map((m3) => n2.get(m3));\n    for (let m3 of e.videoRenditions) m3.id && !p3.includes(m3.id) && c4.removeRendition(m3);\n  });\n  let a2 = (u3) => {\n    let d4 = u3.target.selectedIndex;\n    d4 != t2.nextLevel && r10(d4);\n  }, r10 = (u3) => {\n    let d4 = e.currentTime, c4 = false, p3 = (f, m3) => {\n      c4 || (c4 = !Number.isFinite(m3.endOffset));\n    };\n    t2.on(T.Events.BUFFER_FLUSHING, p3), t2.nextLevel = u3, t2.off(T.Events.BUFFER_FLUSHING, p3), c4 || t2.trigger(T.Events.BUFFER_FLUSHING, { startOffset: d4 + 10, endOffset: 1 / 0, type: \"video\" });\n  };\n  (l = e.videoRenditions) == null || l.addEventListener(\"change\", a2);\n  let o = () => {\n    for (let u3 of e.videoTracks) e.removeVideoTrack(u3);\n  }, s = () => {\n    for (let u3 of e.audioTracks) e.removeAudioTrack(u3);\n  }, i2 = () => {\n    o(), s();\n  };\n  t2.once(T.Events.DESTROYING, i2);\n}\nvar F2 = (e) => \"time\" in e ? e.time : e.startTime;\nfunction ae(e, t2) {\n  t2.on(T.Events.NON_NATIVE_TEXT_TRACKS_FOUND, (r10, { tracks: o }) => {\n    o.forEach((s) => {\n      var u3;\n      let i2 = (u3 = s.subtitleTrack) != null ? u3 : s.closedCaptions, l = t2.subtitleTracks.findIndex(({ lang: d4, name: c4, type: p3 }) => d4 == (i2 == null ? void 0 : i2.lang) && c4 === s.label && p3.toLowerCase() === s.kind);\n      W(e, s.kind, s.label, i2 == null ? void 0 : i2.lang, `${s.kind}${l}`);\n    });\n  });\n  let n2 = () => {\n    var s;\n    if (!t2.subtitleTracks.length) return;\n    let r10 = Array.from(e.textTracks).find((i2) => i2.id && i2.mode === \"showing\" && [\"subtitles\", \"captions\"].includes(i2.kind)), o = `${(s = t2.subtitleTracks[t2.subtitleTrack]) == null ? void 0 : s.type.toLowerCase()}${t2.subtitleTrack}`;\n    if (r10 && (t2.subtitleTrack < 0 || (r10 == null ? void 0 : r10.id) !== o)) {\n      let i2 = t2.subtitleTracks.findIndex(({ lang: l, name: u3, type: d4 }) => l == r10.language && u3 === r10.label && d4.toLowerCase() === r10.kind);\n      t2.subtitleTrack = i2;\n    }\n    r10 && (r10 == null ? void 0 : r10.id) === o && r10.cues && Array.from(r10.cues).forEach((i2) => {\n      r10.addCue(i2);\n    });\n  };\n  e.textTracks.addEventListener(\"change\", n2), t2.on(T.Events.CUES_PARSED, (r10, { track: o, cues: s }) => {\n    let i2 = e.textTracks.getTrackById(o);\n    if (!i2) return;\n    let l = i2.mode === \"disabled\";\n    l && (i2.mode = \"hidden\"), s.forEach((u3) => {\n      var d4;\n      (d4 = i2.cues) != null && d4.getCueById(u3.id) || i2.addCue(u3);\n    }), l && (i2.mode = \"disabled\");\n  }), t2.once(T.Events.DESTROYING, () => {\n    e.textTracks.removeEventListener(\"change\", n2), e.querySelectorAll(\"track[data-removeondestroy]\").forEach((o) => {\n      o.remove();\n    });\n  });\n  let a2 = () => {\n    Array.from(e.textTracks).forEach((r10) => {\n      var o, s;\n      if (![\"subtitles\", \"caption\"].includes(r10.kind) && r10.label === \"thumbnails\") {\n        if (!((o = r10.cues) != null && o.length)) {\n          let i2 = e.querySelector('track[label=\"thumbnails\"]'), l = (s = i2 == null ? void 0 : i2.getAttribute(\"src\")) != null ? s : \"\";\n          i2 == null || i2.removeAttribute(\"src\"), setTimeout(() => {\n            i2 == null || i2.setAttribute(\"src\", l);\n          }, 0);\n        }\n        r10.mode !== \"hidden\" && (r10.mode = \"hidden\");\n      }\n    });\n  };\n  t2.once(T.Events.MANIFEST_LOADED, a2), t2.once(T.Events.MEDIA_ATTACHED, a2);\n}\nfunction W(e, t2, n2, a2, r10) {\n  let o = document.createElement(\"track\");\n  return o.kind = t2, o.label = n2, a2 && (o.srclang = a2), r10 && (o.id = r10), o.track.mode = [\"subtitles\", \"captions\"].includes(t2) ? \"disabled\" : \"hidden\", o.setAttribute(\"data-removeondestroy\", \"\"), e.append(o), o.track;\n}\nfunction Re(e, t2) {\n  let n2 = Array.prototype.find.call(e.querySelectorAll(\"track\"), (a2) => a2.track === t2);\n  n2 == null || n2.remove();\n}\nfunction E(e, t2, n2) {\n  var a2;\n  return (a2 = Array.from(e.querySelectorAll(\"track\")).find((r10) => r10.track.label === t2 && r10.track.kind === n2)) == null ? void 0 : a2.track;\n}\nfunction oe2(e, t2, n2, a2) {\n  return __async(this, null, function* () {\n    let r10 = E(e, n2, a2);\n    return r10 || (r10 = W(e, a2, n2), r10.mode = \"hidden\", yield new Promise((o) => setTimeout(() => o(void 0), 0))), r10.mode !== \"hidden\" && (r10.mode = \"hidden\"), [...t2].sort((o, s) => F2(s) - F2(o)).forEach((o) => {\n      var l, u3;\n      let s = o.value, i2 = F2(o);\n      if (\"endTime\" in o && o.endTime != null) r10 == null || r10.addCue(new VTTCue(i2, o.endTime, a2 === \"chapters\" ? s : JSON.stringify(s != null ? s : null)));\n      else {\n        let d4 = Array.prototype.findIndex.call(r10 == null ? void 0 : r10.cues, (m3) => m3.startTime >= i2), c4 = (l = r10 == null ? void 0 : r10.cues) == null ? void 0 : l[d4], p3 = c4 ? c4.startTime : Number.isFinite(e.duration) ? e.duration : Number.MAX_SAFE_INTEGER, f = (u3 = r10 == null ? void 0 : r10.cues) == null ? void 0 : u3[d4 - 1];\n        f && (f.endTime = i2), r10 == null || r10.addCue(new VTTCue(i2, p3, a2 === \"chapters\" ? s : JSON.stringify(s != null ? s : null)));\n      }\n    }), e.textTracks.dispatchEvent(new Event(\"change\", { bubbles: true, composed: true })), r10;\n  });\n}\nvar K2 = \"cuepoints\";\nvar se2 = Object.freeze({ label: K2 });\nfunction ie2(_0, _1) {\n  return __async(this, arguments, function* (e, t2, n2 = se2) {\n    return oe2(e, t2, n2.label, \"metadata\");\n  });\n}\nvar I2 = (e) => ({ time: e.startTime, value: JSON.parse(e.text) });\nfunction He(e, t2 = { label: K2 }) {\n  let n2 = E(e, t2.label, \"metadata\");\n  return n2 != null && n2.cues ? Array.from(n2.cues, (a2) => I2(a2)) : [];\n}\nfunction ce2(e, t2 = { label: K2 }) {\n  var o, s;\n  let n2 = E(e, t2.label, \"metadata\");\n  if (!((o = n2 == null ? void 0 : n2.activeCues) != null && o.length)) return;\n  if (n2.activeCues.length === 1) return I2(n2.activeCues[0]);\n  let { currentTime: a2 } = e, r10 = Array.prototype.find.call((s = n2.activeCues) != null ? s : [], ({ startTime: i2, endTime: l }) => i2 <= a2 && l > a2);\n  return I2(r10 || n2.activeCues[0]);\n}\nfunction ue2(_0) {\n  return __async(this, arguments, function* (e, t2 = se2) {\n    return new Promise((n2) => {\n      y(e, \"loadstart\", () => __async(null, null, function* () {\n        let a2 = yield ie2(e, [], t2);\n        y(e, \"cuechange\", () => {\n          let r10 = ce2(e);\n          if (r10) {\n            let o = new CustomEvent(\"cuepointchange\", { composed: true, bubbles: true, detail: r10 });\n            e.dispatchEvent(o);\n          }\n        }, {}, a2), n2(a2);\n      }));\n    });\n  });\n}\nvar B2 = \"chapters\";\nvar de2 = Object.freeze({ label: B2 });\nvar R = (e) => ({ startTime: e.startTime, endTime: e.endTime, value: e.text });\nfunction le2(_0, _1) {\n  return __async(this, arguments, function* (e, t2, n2 = de2) {\n    return oe2(e, t2, n2.label, \"chapters\");\n  });\n}\nfunction Ne2(e, t2 = { label: B2 }) {\n  var a2;\n  let n2 = E(e, t2.label, \"chapters\");\n  return (a2 = n2 == null ? void 0 : n2.cues) != null && a2.length ? Array.from(n2.cues, (r10) => R(r10)) : [];\n}\nfunction pe(e, t2 = { label: B2 }) {\n  var o, s;\n  let n2 = E(e, t2.label, \"chapters\");\n  if (!((o = n2 == null ? void 0 : n2.activeCues) != null && o.length)) return;\n  if (n2.activeCues.length === 1) return R(n2.activeCues[0]);\n  let { currentTime: a2 } = e, r10 = Array.prototype.find.call((s = n2.activeCues) != null ? s : [], ({ startTime: i2, endTime: l }) => i2 <= a2 && l > a2);\n  return R(r10 || n2.activeCues[0]);\n}\nfunction fe2(_0) {\n  return __async(this, arguments, function* (e, t2 = de2) {\n    return new Promise((n2) => {\n      y(e, \"loadstart\", () => __async(null, null, function* () {\n        let a2 = yield le2(e, [], t2);\n        y(e, \"cuechange\", () => {\n          let r10 = pe(e);\n          if (r10) {\n            let o = new CustomEvent(\"chapterchange\", { composed: true, bubbles: true, detail: r10 });\n            e.dispatchEvent(o);\n          }\n        }, {}, a2), n2(a2);\n      }));\n    });\n  });\n}\nfunction _e2(e, t2) {\n  if (t2) {\n    let n2 = t2.playingDate;\n    if (n2 != null) return new Date(n2.getTime() - e.currentTime * 1e3);\n  }\n  return typeof e.getStartDate == \"function\" ? e.getStartDate() : /* @__PURE__ */ new Date(NaN);\n}\nfunction Oe2(e, t2) {\n  if (t2 && t2.playingDate) return t2.playingDate;\n  if (typeof e.getStartDate == \"function\") {\n    let n2 = e.getStartDate();\n    return new Date(n2.getTime() + e.currentTime * 1e3);\n  }\n  return /* @__PURE__ */ new Date(NaN);\n}\nvar Ve = (e) => __async(null, null, function* () {\n  return fetch(e).then((t2) => t2.text()).then((t2) => {\n    let n2 = t2.split(`\n`).find((a2, r10, o) => r10 && o[r10 - 1].startsWith(\"#EXT-X-STREAM-INF\"));\n    return fetch(n2).then((a2) => a2.text()).then((a2) => a2.split(`\n`));\n  });\n});\nvar Ue = (e) => {\n  var s, i2, l;\n  let n2 = (i2 = ((s = e.find((u3) => u3.startsWith(\"#EXT-X-PLAYLIST-TYPE\"))) != null ? s : \"\").split(\":\")[1]) == null ? void 0 : i2.trim(), a2 = O2(n2), r10 = V(n2), o;\n  if (a2 === g.LIVE) {\n    let u3 = e.find((c4) => c4.startsWith(\"#EXT-X-PART-INF\"));\n    if (!!u3) o = +u3.split(\":\")[1].split(\"=\")[1] * 2;\n    else {\n      let c4 = e.find((m3) => m3.startsWith(\"#EXT-X-TARGETDURATION\")), p3 = (l = c4 == null ? void 0 : c4.split(\":\")) == null ? void 0 : l[1];\n      o = +(p3 != null ? p3 : 6) * 3;\n    }\n  }\n  return { streamType: a2, targetLiveWindow: r10, liveEdgeStartOffset: o };\n};\nvar Fe = (e, t2) => __async(null, null, function* () {\n  if (t2 === b2.MP4) return { streamType: g.ON_DEMAND, targetLiveWindow: Number.NaN, liveEdgeStartOffset: void 0 };\n  if (t2 === b2.M3U8) {\n    let n2 = yield Ve(e);\n    return Ue(n2);\n  }\n  return console.error(`Media type ${t2} is an unrecognized or unsupported type for src ${e}.`), { streamType: void 0, targetLiveWindow: void 0, liveEdgeStartOffset: void 0 };\n});\nvar $2 = (_0, _1, ..._22) => __async(null, [_0, _1, ..._22], function* (e, t2, n2 = C2({ src: e })) {\n  var s, i2, l;\n  let { streamType: a2, targetLiveWindow: r10, liveEdgeStartOffset: o } = yield Fe(e, n2);\n  ((s = M2.get(t2)) != null ? s : {}).liveEdgeStartOffset = o, ((i2 = M2.get(t2)) != null ? i2 : {}).targetLiveWindow = r10, t2.dispatchEvent(new CustomEvent(\"targetlivewindowchange\", { composed: true, bubbles: true })), ((l = M2.get(t2)) != null ? l : {}).streamType = a2, t2.dispatchEvent(new CustomEvent(\"streamtypechange\", { composed: true, bubbles: true }));\n});\nvar We2 = (e) => {\n  var s;\n  let t2 = e.type, n2 = O2(t2), a2 = V(t2), r10, o = !!((s = e.partList) != null && s.length);\n  return n2 === g.LIVE && (r10 = o ? e.partTarget * 2 : e.targetduration * 3), { streamType: n2, targetLiveWindow: a2, liveEdgeStartOffset: r10, lowLatency: o };\n};\nvar Ke2 = (e, t2, n2) => {\n  var i2, l, u3, d4, c4, p3, f, m3;\n  let { streamType: a2, targetLiveWindow: r10, liveEdgeStartOffset: o, lowLatency: s } = We2(e);\n  if (a2 === g.LIVE) {\n    s ? (n2.config.backBufferLength = (i2 = n2.userConfig.backBufferLength) != null ? i2 : 4, n2.config.maxFragLookUpTolerance = (l = n2.userConfig.maxFragLookUpTolerance) != null ? l : 1e-3, n2.config.abrBandWidthUpFactor = (u3 = n2.userConfig.abrBandWidthUpFactor) != null ? u3 : n2.config.abrBandWidthFactor) : n2.config.backBufferLength = (d4 = n2.userConfig.backBufferLength) != null ? d4 : 8;\n    let P2 = Object.freeze({ get length() {\n      return t2.seekable.length;\n    }, start(L2) {\n      return t2.seekable.start(L2);\n    }, end(L2) {\n      var A3;\n      return L2 > this.length || L2 < 0 || Number.isFinite(t2.duration) ? t2.seekable.end(L2) : (A3 = n2.liveSyncPosition) != null ? A3 : t2.seekable.end(L2);\n    } });\n    ((c4 = M2.get(t2)) != null ? c4 : {}).seekable = P2;\n  }\n  ((p3 = M2.get(t2)) != null ? p3 : {}).liveEdgeStartOffset = o, ((f = M2.get(t2)) != null ? f : {}).targetLiveWindow = r10, t2.dispatchEvent(new CustomEvent(\"targetlivewindowchange\", { composed: true, bubbles: true })), ((m3 = M2.get(t2)) != null ? m3 : {}).streamType = a2, t2.dispatchEvent(new CustomEvent(\"streamtypechange\", { composed: true, bubbles: true }));\n};\nvar ye2;\nvar me2;\nvar Be2 = (me2 = (ye2 = globalThis == null ? void 0 : globalThis.navigator) == null ? void 0 : ye2.userAgent) != null ? me2 : \"\";\nvar $e2 = Be2.toLowerCase().indexOf(\"android\") !== -1;\nvar M2 = /* @__PURE__ */ new WeakMap();\nvar k = \"mux.com\";\nvar ge;\nvar Me2;\nvar ve2 = (Me2 = (ge = T).isSupported) == null ? void 0 : Me2.call(ge);\nvar qe2 = $e2;\nvar Xt2 = () => od.utils.now();\nvar Ye2 = od.utils.generateUUID;\nvar Gt2 = ({ playbackId: e, customDomain: t2 = k, maxResolution: n2, minResolution: a2, renditionOrder: r10, programStartTime: o, programEndTime: s, tokens: { playback: i2 } = {}, extraSourceParams: l = {} } = {}) => {\n  if (!e) return;\n  let [u3, d4 = \"\"] = Z2(e), c4 = new URL(`https://stream.${t2}/${u3}.m3u8${d4}`);\n  return i2 || c4.searchParams.has(\"token\") ? (c4.searchParams.forEach((p3, f) => {\n    f != \"token\" && c4.searchParams.delete(f);\n  }), i2 && c4.searchParams.set(\"token\", i2)) : (n2 && c4.searchParams.set(\"max_resolution\", n2), a2 && (c4.searchParams.set(\"min_resolution\", a2), n2 && +n2.slice(0, -1) < +a2.slice(0, -1) && console.error(\"minResolution must be <= maxResolution\", \"minResolution\", a2, \"maxResolution\", n2)), r10 && c4.searchParams.set(\"rendition_order\", r10), o && c4.searchParams.set(\"program_start_time\", `${o}`), s && c4.searchParams.set(\"program_end_time\", `${s}`), Object.entries(l).forEach(([p3, f]) => {\n    f != null && c4.searchParams.set(p3, f);\n  })), c4.toString();\n};\nvar ze2 = (e) => {\n  if (!e) return;\n  let [t2] = e.split(\"?\");\n  return t2 || void 0;\n};\nvar be = (e) => {\n  if (!e || !e.startsWith(\"https://stream.\")) return;\n  let [t2] = new URL(e).pathname.slice(1).split(\".m3u8\");\n  return t2 || void 0;\n};\nvar Xe2 = (e) => {\n  var t2, n2, a2;\n  return (t2 = e == null ? void 0 : e.metadata) != null && t2.video_id ? e.metadata.video_id : Ee2(e) && (a2 = (n2 = ze2(e.playbackId)) != null ? n2 : be(e.src)) != null ? a2 : e.src;\n};\nvar jt2 = (e) => {\n  var t2;\n  return (t2 = M2.get(e)) == null ? void 0 : t2.error;\n};\nvar Te = (e) => {\n  var t2, n2;\n  return (n2 = (t2 = M2.get(e)) == null ? void 0 : t2.streamType) != null ? n2 : g.UNKNOWN;\n};\nvar Jt2 = (e) => {\n  var t2, n2;\n  return (n2 = (t2 = M2.get(e)) == null ? void 0 : t2.targetLiveWindow) != null ? n2 : Number.NaN;\n};\nvar q = (e) => {\n  var t2, n2;\n  return (n2 = (t2 = M2.get(e)) == null ? void 0 : t2.seekable) != null ? n2 : e.seekable;\n};\nvar Qt2 = (e) => {\n  var a2;\n  let t2 = (a2 = M2.get(e)) == null ? void 0 : a2.liveEdgeStartOffset;\n  if (typeof t2 != \"number\") return Number.NaN;\n  let n2 = q(e);\n  return n2.length ? n2.end(n2.length - 1) - t2 : Number.NaN;\n};\nvar X2 = 0.034;\nvar Ge = (e, t2, n2 = X2) => Math.abs(e - t2) <= n2;\nvar xe2 = (e, t2, n2 = X2) => e > t2 || Ge(e, t2, n2);\nvar je2 = (e, t2 = X2) => e.paused && xe2(e.currentTime, e.duration, t2);\nvar Le2 = (e, t2) => {\n  var u3, d4, c4;\n  if (!t2 || !e.buffered.length) return;\n  if (e.readyState > 2) return false;\n  let n2 = t2.currentLevel >= 0 ? (d4 = (u3 = t2.levels) == null ? void 0 : u3[t2.currentLevel]) == null ? void 0 : d4.details : (c4 = t2.levels.find((p3) => !!p3.details)) == null ? void 0 : c4.details;\n  if (!n2 || n2.live) return;\n  let { fragments: a2 } = n2;\n  if (!(a2 != null && a2.length)) return;\n  if (e.currentTime < e.duration - (n2.targetduration + 0.5)) return false;\n  let r10 = a2[a2.length - 1];\n  if (e.currentTime <= r10.start) return false;\n  let o = r10.start + r10.duration / 2, s = e.buffered.start(e.buffered.length - 1), i2 = e.buffered.end(e.buffered.length - 1);\n  return o > s && o < i2;\n};\nvar Je2 = (e, t2) => e.ended || e.loop ? e.ended : t2 && Le2(e, t2) ? true : je2(e);\nvar Zt = (e, t2, n2) => {\n  Qe2(t2, n2);\n  let { metadata: a2 = {} } = e, { view_session_id: r10 = Ye2() } = a2, o = Xe2(e);\n  a2.view_session_id = r10, a2.video_id = o, e.metadata = a2, M2.set(t2, {});\n  let s = Ze(e, t2), i2 = ne2(e, t2, s);\n  ot2(e, t2, s), st2(e, t2, s), ue2(t2), fe2(t2);\n  let l = te2(e, t2, s);\n  return { engine: s, setAutoplay: l, setPreload: i2 };\n};\nvar Qe2 = (e, t2) => {\n  let n2 = t2 == null ? void 0 : t2.engine;\n  n2 && (n2.detachMedia(), n2.destroy()), e != null && e.mux && !e.mux.deleted && (e.mux.destroy(), delete e.mux), e && (e.removeAttribute(\"src\"), e.load(), e.removeEventListener(\"error\", Ce2), e.removeEventListener(\"error\", Y), e.removeEventListener(\"durationchange\", he2), M2.delete(e), e.dispatchEvent(new Event(\"teardown\")));\n};\nfunction ke2(e, t2) {\n  var u3;\n  let n2 = C2(e);\n  if (!(n2 === b2.M3U8)) return true;\n  let r10 = !n2 || ((u3 = t2.canPlayType(n2)) != null ? u3 : true), { preferPlayback: o } = e, s = o === _.MSE, i2 = o === _.NATIVE;\n  return r10 && (i2 || !(ve2 && (s || qe2)));\n}\nvar Ze = (e, t2) => {\n  let { debug: n2, streamType: a2, startTime: r10 = -1, metadata: o, preferCmcd: s, _hlsConfig: i2 = {} } = e, u3 = C2(e) === b2.M3U8, d4 = ke2(e, t2);\n  if (u3 && !d4 && ve2) {\n    let c4 = { backBufferLength: 30, renderTextTracksNatively: false, liveDurationInfinity: true, capLevelToPlayerSize: true, capLevelOnFPSDrop: true }, p3 = et(a2), f = tt2(e), m3 = s !== h.NONE ? { useHeaders: s === h.HEADER, sessionId: o == null ? void 0 : o.view_session_id, contentId: o == null ? void 0 : o.video_id } : void 0;\n    return new T(__spreadValues(__spreadValues(__spreadValues(__spreadValues({ debug: n2, startPosition: r10, cmcd: m3, xhrSetup: (L2, A3) => {\n      var G4, j4;\n      if (s && s !== h.QUERY) return;\n      let S4 = new URL(A3);\n      if (!S4.searchParams.has(\"CMCD\")) return;\n      let Ae4 = ((j4 = (G4 = S4.searchParams.get(\"CMCD\")) == null ? void 0 : G4.split(\",\")) != null ? j4 : []).filter((J4) => J4.startsWith(\"sid\") || J4.startsWith(\"cid\")).join(\",\");\n      S4.searchParams.set(\"CMCD\", Ae4), L2.open(\"GET\", S4);\n    } }, c4), p3), f), i2));\n  }\n};\nvar et = (e) => e === g.LIVE ? { backBufferLength: 8 } : {};\nvar tt2 = (e) => {\n  let { drmToken: t2, src: n2, playbackId: a2 = be(n2) } = e;\n  return !t2 || !a2 ? {} : { emeEnabled: true, drmSystems: { \"com.apple.fps\": { licenseUrl: H2(e, \"fairplay\"), serverCertificateUrl: Pe2(e, \"fairplay\") }, \"com.widevine.alpha\": { licenseUrl: H2(e, \"widevine\") }, \"com.microsoft.playready\": { licenseUrl: H2(e, \"playready\") } }, requestMediaKeySystemAccessFunc: (r10, o) => (r10 === \"com.widevine.alpha\" && (o = [...o.map((s) => {\n    var l;\n    let i2 = (l = s.videoCapabilities) == null ? void 0 : l.map((u3) => __spreadProps(__spreadValues({}, u3), { robustness: \"HW_SECURE_ALL\" }));\n    return __spreadProps(__spreadValues({}, s), { videoCapabilities: i2 });\n  }), ...o]), navigator.requestMediaKeySystemAccess(r10, o)) };\n};\nvar nt2 = (e) => __async(null, null, function* () {\n  return yield (yield fetch(e)).arrayBuffer();\n});\nvar rt = (e, t2) => __async(null, null, function* () {\n  let a2 = yield (yield fetch(t2, { method: \"POST\", headers: { \"Content-type\": \"application/octet-stream\" }, body: e })).arrayBuffer();\n  return new Uint8Array(a2);\n});\nvar at2 = (e, t2) => {\n  y(t2, \"encrypted\", (a2) => __async(null, null, function* () {\n    try {\n      let r10 = a2.initDataType;\n      if (r10 !== \"skd\") {\n        console.error(`Received unexpected initialization data type \"${r10}\"`);\n        return;\n      }\n      if (!t2.mediaKeys) {\n        let d4 = yield (yield navigator.requestMediaKeySystemAccess(\"com.apple.fps\", [{ initDataTypes: [r10], videoCapabilities: [{ contentType: \"application/vnd.apple.mpegurl\", robustness: \"\" }], distinctiveIdentifier: \"not-allowed\", persistentState: \"not-allowed\", sessionTypes: [\"temporary\"] }])).createMediaKeys(), c4 = yield nt2(Pe2(e, \"fairplay\"));\n        yield d4.setServerCertificate(c4), yield t2.setMediaKeys(d4);\n      }\n      let o = a2.initData;\n      if (o == null) {\n        console.error(`Could not start encrypted playback due to missing initData in ${a2.type} event`);\n        return;\n      }\n      let s = t2.mediaKeys.createSession();\n      s.generateRequest(r10, o);\n      let i2 = yield new Promise((u3) => {\n        s.addEventListener(\"message\", (d4) => {\n          u3(d4.message);\n        }, { once: true });\n      }), l = yield rt(i2, H2(e, \"fairplay\"));\n      return yield s.update(l), s;\n    } catch (r10) {\n      console.error(`Could not start encrypted playback due to exception \"${r10}\"`);\n    }\n  }));\n};\nvar H2 = ({ playbackId: e, drmToken: t2, customDomain: n2 = k }, a2) => `https://license.${n2.toLocaleLowerCase().endsWith(k) ? n2 : k}/license/${a2}/${e}?token=${t2}`;\nvar Pe2 = ({ playbackId: e, drmToken: t2, customDomain: n2 = k }, a2) => `https://license.${n2.toLocaleLowerCase().endsWith(k) ? n2 : k}/appcert/${a2}/${e}?token=${t2}`;\nvar Ee2 = ({ playbackId: e, src: t2, customDomain: n2 }) => {\n  if (e) return true;\n  if (typeof t2 != \"string\") return false;\n  let a2 = window == null ? void 0 : window.location.href, r10 = new URL(t2, a2).hostname.toLocaleLowerCase();\n  return r10.includes(k) || !!n2 && r10.includes(n2.toLocaleLowerCase());\n};\nvar ot2 = (e, t2, n2) => {\n  var s;\n  let { envKey: a2, disableTracking: r10 } = e, o = Ee2(e);\n  if (!r10 && (a2 || o)) {\n    let { playerInitTime: i2, playerSoftwareName: l, playerSoftwareVersion: u3, beaconCollectionDomain: d4, debug: c4, disableCookies: p3 } = e, f = __spreadProps(__spreadValues({}, e.metadata), { video_title: ((s = e == null ? void 0 : e.metadata) == null ? void 0 : s.video_title) || void 0 }), m3 = (P2) => typeof P2.player_error_code == \"string\" ? false : typeof e.errorTranslator == \"function\" ? e.errorTranslator(P2) : P2;\n    od.monitor(t2, { debug: c4, beaconCollectionDomain: d4, hlsjs: n2, Hls: n2 ? T : void 0, automaticErrorTracking: false, errorTranslator: m3, disableCookies: p3, data: __spreadValues(__spreadProps(__spreadValues({}, a2 ? { env_key: a2 } : {}), { player_software_name: l, player_software: l, player_software_version: u3, player_init_time: i2 }), f) });\n  }\n};\nvar st2 = (e, t2, n2) => {\n  var u3;\n  let a2 = ke2(e, t2), { src: r10 } = e, o = () => {\n    t2.ended || !Je2(t2, n2) || (Le2(t2, n2) ? t2.currentTime = t2.buffered.end(t2.buffered.length - 1) : t2.dispatchEvent(new Event(\"ended\")));\n  }, s, i2, l = () => {\n    var p3, f;\n    let d4 = (p3 = q(t2)) == null ? void 0 : p3.start(0), c4 = (f = q(t2)) == null ? void 0 : f.end(0);\n    (i2 !== c4 || s !== d4) && t2.dispatchEvent(new CustomEvent(\"seekablechange\", { composed: true })), s = d4, i2 = c4;\n  };\n  if (y(t2, \"durationchange\", l), t2 && a2) {\n    let d4 = C2(e);\n    if (typeof r10 == \"string\") {\n      let c4 = () => {\n        if (Te(t2) !== g.LIVE || Number.isFinite(t2.duration)) return;\n        let p3 = setInterval(l, 1e3);\n        t2.addEventListener(\"teardown\", () => {\n          clearInterval(p3);\n        }, { once: true }), y(t2, \"durationchange\", () => {\n          Number.isFinite(t2.duration) && clearInterval(p3);\n        });\n      };\n      if (t2.preload === \"none\") {\n        let p3 = () => {\n          $2(r10, t2, d4).then(c4), t2.removeEventListener(\"loadedmetadata\", f);\n        }, f = () => {\n          $2(r10, t2, d4).then(c4), t2.removeEventListener(\"play\", p3);\n        };\n        y(t2, \"play\", p3, { once: true }), y(t2, \"loadedmetadata\", f, { once: true });\n      } else $2(r10, t2, d4).then(c4);\n      e.drmToken && at2(e, t2), t2.setAttribute(\"src\", r10), e.startTime && (((u3 = M2.get(t2)) != null ? u3 : {}).startTime = e.startTime, t2.addEventListener(\"durationchange\", he2, { once: true }));\n    } else t2.removeAttribute(\"src\");\n    t2.addEventListener(\"error\", Ce2), t2.addEventListener(\"error\", Y), t2.addEventListener(\"emptied\", () => {\n      t2.querySelectorAll(\"track[data-removeondestroy]\").forEach((p3) => {\n        p3.remove();\n      });\n    }, { once: true }), y(t2, \"pause\", o), y(t2, \"seeked\", o), y(t2, \"play\", () => {\n      t2.ended || xe2(t2.currentTime, t2.duration) && (t2.currentTime = t2.seekable.length ? t2.seekable.start(0) : 0);\n    });\n  } else n2 && r10 ? (n2.once(T.Events.LEVEL_LOADED, (d4, c4) => {\n    Ke2(c4.details, t2, n2), l(), Te(t2) === g.LIVE && !Number.isFinite(t2.duration) && (n2.on(T.Events.LEVEL_UPDATED, l), y(t2, \"durationchange\", () => {\n      Number.isFinite(t2.duration) && n2.off(T.Events.LEVELS_UPDATED, l);\n    }));\n  }), n2.on(T.Events.ERROR, (d4, c4) => {\n    let p3 = { [T.ErrorTypes.NETWORK_ERROR]: x.MEDIA_ERR_NETWORK, [T.ErrorTypes.MEDIA_ERROR]: x.MEDIA_ERR_DECODE }, f = new x(\"\", p3[c4.type]);\n    f.fatal = c4.fatal, f.data = c4, t2.dispatchEvent(new CustomEvent(\"error\", { detail: f }));\n  }), t2.addEventListener(\"error\", Y), y(t2, \"waiting\", o), re(e, n2), ae(t2, n2), n2.attachMedia(t2)) : console.error(\"It looks like the video you're trying to play will not work on this system! If possible, try upgrading to the newest versions of your browser or software.\");\n};\nfunction he2(e) {\n  var a2;\n  let t2 = e.target, n2 = (a2 = M2.get(t2)) == null ? void 0 : a2.startTime;\n  if (n2 && Q(t2.seekable, t2.duration, n2)) {\n    let r10 = t2.preload === \"auto\";\n    r10 && (t2.preload = \"none\"), t2.currentTime = n2, r10 && (t2.preload = \"auto\");\n  }\n}\nfunction Ce2(e) {\n  return __async(this, null, function* () {\n    if (!e.isTrusted) return;\n    e.stopImmediatePropagation();\n    let t2 = e.target;\n    if (!(t2 != null && t2.error)) return;\n    let { message: n2, code: a2 } = t2.error, r10 = new x(n2, a2);\n    if (t2.src && (a2 !== x.MEDIA_ERR_DECODE || a2 !== void 0)) try {\n      let { status: o } = yield fetch(t2.src);\n      r10.data = { response: { code: o } };\n    } catch (e2) {\n    }\n    t2.dispatchEvent(new CustomEvent(\"error\", { detail: r10 }));\n  });\n}\nfunction Y(e) {\n  var a2, r10;\n  if (!(e instanceof CustomEvent) || !(e.detail instanceof x)) return;\n  let t2 = e.target, n2 = e.detail;\n  !n2 || !n2.fatal || (((a2 = M2.get(t2)) != null ? a2 : {}).error = n2, (r10 = t2.mux) == null || r10.emit(\"error\", { player_error_code: n2.code, player_error_message: n2.message, player_error_context: n2.context }));\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/constants.js\nvar MediaUIEvents = {\n  MEDIA_PLAY_REQUEST: \"mediaplayrequest\",\n  MEDIA_PAUSE_REQUEST: \"mediapauserequest\",\n  MEDIA_MUTE_REQUEST: \"mediamuterequest\",\n  MEDIA_UNMUTE_REQUEST: \"mediaunmuterequest\",\n  MEDIA_VOLUME_REQUEST: \"mediavolumerequest\",\n  MEDIA_SEEK_REQUEST: \"mediaseekrequest\",\n  MEDIA_AIRPLAY_REQUEST: \"mediaairplayrequest\",\n  MEDIA_ENTER_FULLSCREEN_REQUEST: \"mediaenterfullscreenrequest\",\n  MEDIA_EXIT_FULLSCREEN_REQUEST: \"mediaexitfullscreenrequest\",\n  MEDIA_PREVIEW_REQUEST: \"mediapreviewrequest\",\n  MEDIA_ENTER_PIP_REQUEST: \"mediaenterpiprequest\",\n  MEDIA_EXIT_PIP_REQUEST: \"mediaexitpiprequest\",\n  MEDIA_ENTER_CAST_REQUEST: \"mediaentercastrequest\",\n  MEDIA_EXIT_CAST_REQUEST: \"mediaexitcastrequest\",\n  MEDIA_SHOW_TEXT_TRACKS_REQUEST: \"mediashowtexttracksrequest\",\n  MEDIA_HIDE_TEXT_TRACKS_REQUEST: \"mediahidetexttracksrequest\",\n  MEDIA_SHOW_SUBTITLES_REQUEST: \"mediashowsubtitlesrequest\",\n  MEDIA_DISABLE_SUBTITLES_REQUEST: \"mediadisablesubtitlesrequest\",\n  MEDIA_TOGGLE_SUBTITLES_REQUEST: \"mediatogglesubtitlesrequest\",\n  MEDIA_PLAYBACK_RATE_REQUEST: \"mediaplaybackraterequest\",\n  MEDIA_RENDITION_REQUEST: \"mediarenditionrequest\",\n  MEDIA_AUDIO_TRACK_REQUEST: \"mediaaudiotrackrequest\",\n  MEDIA_SEEK_TO_LIVE_REQUEST: \"mediaseektoliverequest\",\n  REGISTER_MEDIA_STATE_RECEIVER: \"registermediastatereceiver\",\n  UNREGISTER_MEDIA_STATE_RECEIVER: \"unregistermediastatereceiver\"\n};\nvar MediaStateReceiverAttributes = {\n  MEDIA_CHROME_ATTRIBUTES: \"mediachromeattributes\",\n  MEDIA_CONTROLLER: \"mediacontroller\"\n};\nvar MediaUIProps = {\n  MEDIA_AIRPLAY_UNAVAILABLE: \"mediaAirplayUnavailable\",\n  MEDIA_FULLSCREEN_UNAVAILABLE: \"mediaFullscreenUnavailable\",\n  MEDIA_PIP_UNAVAILABLE: \"mediaPipUnavailable\",\n  MEDIA_CAST_UNAVAILABLE: \"mediaCastUnavailable\",\n  MEDIA_RENDITION_UNAVAILABLE: \"mediaRenditionUnavailable\",\n  MEDIA_AUDIO_TRACK_UNAVAILABLE: \"mediaAudioTrackUnavailable\",\n  MEDIA_PAUSED: \"mediaPaused\",\n  MEDIA_HAS_PLAYED: \"mediaHasPlayed\",\n  MEDIA_ENDED: \"mediaEnded\",\n  MEDIA_MUTED: \"mediaMuted\",\n  MEDIA_VOLUME_LEVEL: \"mediaVolumeLevel\",\n  MEDIA_VOLUME: \"mediaVolume\",\n  MEDIA_VOLUME_UNAVAILABLE: \"mediaVolumeUnavailable\",\n  MEDIA_IS_PIP: \"mediaIsPip\",\n  MEDIA_IS_CASTING: \"mediaIsCasting\",\n  MEDIA_IS_AIRPLAYING: \"mediaIsAirplaying\",\n  MEDIA_SUBTITLES_LIST: \"mediaSubtitlesList\",\n  MEDIA_SUBTITLES_SHOWING: \"mediaSubtitlesShowing\",\n  MEDIA_IS_FULLSCREEN: \"mediaIsFullscreen\",\n  MEDIA_PLAYBACK_RATE: \"mediaPlaybackRate\",\n  MEDIA_CURRENT_TIME: \"mediaCurrentTime\",\n  MEDIA_DURATION: \"mediaDuration\",\n  MEDIA_SEEKABLE: \"mediaSeekable\",\n  MEDIA_PREVIEW_TIME: \"mediaPreviewTime\",\n  MEDIA_PREVIEW_IMAGE: \"mediaPreviewImage\",\n  MEDIA_PREVIEW_COORDS: \"mediaPreviewCoords\",\n  MEDIA_PREVIEW_CHAPTER: \"mediaPreviewChapter\",\n  MEDIA_LOADING: \"mediaLoading\",\n  MEDIA_BUFFERED: \"mediaBuffered\",\n  MEDIA_STREAM_TYPE: \"mediaStreamType\",\n  MEDIA_TARGET_LIVE_WINDOW: \"mediaTargetLiveWindow\",\n  MEDIA_TIME_IS_LIVE: \"mediaTimeIsLive\",\n  MEDIA_RENDITION_LIST: \"mediaRenditionList\",\n  MEDIA_RENDITION_SELECTED: \"mediaRenditionSelected\",\n  MEDIA_AUDIO_TRACK_LIST: \"mediaAudioTrackList\",\n  MEDIA_AUDIO_TRACK_ENABLED: \"mediaAudioTrackEnabled\",\n  MEDIA_CHAPTERS_CUES: \"mediaChaptersCues\"\n};\nvar MediaUIPropsEntries = (\n  /** @type {[keyof MediaUIProps, string][]} */\n  Object.entries(MediaUIProps)\n);\nvar MediaUIAttributes = (\n  /** @type {{ [k in keyof MediaUIProps]: string }} */\n  MediaUIPropsEntries.reduce(\n    (dictObj, [key, propName]) => {\n      dictObj[key] = `${propName.toLowerCase()}`;\n      return dictObj;\n    },\n    /** @type {Partial<{ [k in keyof MediaUIProps]: string }>} */\n    {}\n  )\n);\nvar MediaStateChangeEvents = (\n  /** @type {{ [k in keyof MediaUIProps | 'USER_INACTIVE' | 'BREAKPOINTS_CHANGE' | 'BREAKPOINTS_COMPUTED']: string }} */\n  MediaUIPropsEntries.reduce(\n    (dictObj, [key, propName]) => {\n      dictObj[key] = `${propName.toLowerCase()}`;\n      return dictObj;\n    },\n    /** @type {Partial<{ [k in keyof MediaUIProps | 'USER_INACTIVE' | 'BREAKPOINTS_CHANGE' | 'BREAKPOINTS_COMPUTED']: string  }>} */\n    {\n      USER_INACTIVE: \"userinactivechange\",\n      BREAKPOINTS_CHANGE: \"breakpointchange\",\n      BREAKPOINTS_COMPUTED: \"breakpointscomputed\"\n    }\n  )\n);\nvar StateChangeEventToAttributeMap = Object.entries(\n  MediaStateChangeEvents\n).reduce(\n  (mapObj, [key, eventType]) => {\n    const attrName = MediaUIAttributes[key];\n    if (attrName) {\n      mapObj[eventType] = attrName;\n    }\n    return mapObj;\n  },\n  { userinactivechange: \"userinactive\" }\n);\nvar AttributeToStateChangeEventMap = Object.entries(\n  MediaUIAttributes\n).reduce(\n  (mapObj, [key, attrName]) => {\n    const evtType = MediaStateChangeEvents[key];\n    if (evtType) {\n      mapObj[attrName] = evtType;\n    }\n    return mapObj;\n  },\n  { userinactive: \"userinactivechange\" }\n);\nvar TextTrackKinds = {\n  SUBTITLES: \"subtitles\",\n  CAPTIONS: \"captions\",\n  DESCRIPTIONS: \"descriptions\",\n  CHAPTERS: \"chapters\",\n  METADATA: \"metadata\"\n};\nvar TextTrackModes = {\n  DISABLED: \"disabled\",\n  HIDDEN: \"hidden\",\n  SHOWING: \"showing\"\n};\nvar PointerTypes = {\n  MOUSE: \"mouse\",\n  PEN: \"pen\",\n  TOUCH: \"touch\"\n};\nvar AvailabilityStates = {\n  UNAVAILABLE: \"unavailable\",\n  UNSUPPORTED: \"unsupported\"\n};\nvar StreamTypes = {\n  LIVE: \"live\",\n  ON_DEMAND: \"on-demand\",\n  UNKNOWN: \"unknown\"\n};\nvar WebkitPresentationModes = {\n  INLINE: \"inline\",\n  FULLSCREEN: \"fullscreen\",\n  PICTURE_IN_PICTURE: \"picture-in-picture\"\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/labels/labels.js\nvar nouns = {\n  AUDIO_PLAYER: () => \"audio player\",\n  VIDEO_PLAYER: () => \"video player\",\n  VOLUME: () => \"volume\",\n  SEEK: () => \"seek\",\n  CLOSED_CAPTIONS: () => \"closed captions\",\n  PLAYBACK_RATE: ({ playbackRate = 1 } = {}) => `current playback rate ${playbackRate}`,\n  PLAYBACK_TIME: () => `playback time`,\n  MEDIA_LOADING: () => `media loading`,\n  SETTINGS: () => `settings`,\n  AUDIO_TRACKS: () => `audio tracks`,\n  QUALITY: () => `quality`\n};\nvar verbs = {\n  PLAY: () => \"play\",\n  PAUSE: () => \"pause\",\n  MUTE: () => \"mute\",\n  UNMUTE: () => \"unmute\",\n  ENTER_AIRPLAY: () => \"start airplay\",\n  EXIT_AIRPLAY: () => \"stop airplay\",\n  ENTER_CAST: () => \"start casting\",\n  EXIT_CAST: () => \"stop casting\",\n  ENTER_FULLSCREEN: () => \"enter fullscreen mode\",\n  EXIT_FULLSCREEN: () => \"exit fullscreen mode\",\n  ENTER_PIP: () => \"enter picture in picture mode\",\n  EXIT_PIP: () => \"exit picture in picture mode\",\n  SEEK_FORWARD_N_SECS: ({ seekOffset = 30 } = {}) => `seek forward ${seekOffset} seconds`,\n  SEEK_BACK_N_SECS: ({ seekOffset = 30 } = {}) => `seek back ${seekOffset} seconds`,\n  SEEK_LIVE: () => \"seek to live\",\n  PLAYING_LIVE: () => \"playing live\"\n};\nvar labels_default = __spreadValues(__spreadValues({}, nouns), verbs);\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/utils.js\nfunction stringifyRenditionList(renditions) {\n  return renditions == null ? void 0 : renditions.map(stringifyRendition).join(\" \");\n}\nfunction parseRenditionList(renditions) {\n  return renditions == null ? void 0 : renditions.split(/\\s+/).map(parseRendition);\n}\nfunction stringifyRendition(rendition) {\n  if (rendition) {\n    const { id, width, height } = rendition;\n    return [id, width, height].filter((a2) => a2 != null).join(\":\");\n  }\n}\nfunction parseRendition(rendition) {\n  if (rendition) {\n    const [id, width, height] = rendition.split(\":\");\n    return { id, width, height };\n  }\n}\nfunction stringifyAudioTrackList(audioTracks) {\n  return audioTracks == null ? void 0 : audioTracks.map(stringifyAudioTrack).join(\" \");\n}\nfunction parseAudioTrackList(audioTracks) {\n  return audioTracks == null ? void 0 : audioTracks.split(/\\s+/).map(parseAudioTrack);\n}\nfunction stringifyAudioTrack(audioTrack) {\n  if (audioTrack) {\n    const { id, kind, language, label } = audioTrack;\n    return [id, kind, language, label].filter((a2) => a2 != null).join(\":\");\n  }\n}\nfunction parseAudioTrack(audioTrack) {\n  if (audioTrack) {\n    const [id, kind, language, label] = audioTrack.split(\":\");\n    return { id, kind, language, label };\n  }\n}\nfunction camelCase(name) {\n  return name.replace(/[-_]([a-z])/g, ($0, $1) => $1.toUpperCase());\n}\nfunction isValidNumber(x4) {\n  return typeof x4 === \"number\" && !Number.isNaN(x4) && Number.isFinite(x4);\n}\nfunction isNumericString(str) {\n  if (typeof str != \"string\")\n    return false;\n  return !isNaN(str) && !isNaN(parseFloat(str));\n}\nvar delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/time.js\nvar UnitLabels = [\n  {\n    singular: \"hour\",\n    plural: \"hours\"\n  },\n  {\n    singular: \"minute\",\n    plural: \"minutes\"\n  },\n  {\n    singular: \"second\",\n    plural: \"seconds\"\n  }\n];\nvar toTimeUnitPhrase = (timeUnitValue, unitIndex) => {\n  const unitLabel = timeUnitValue === 1 ? UnitLabels[unitIndex].singular : UnitLabels[unitIndex].plural;\n  return `${timeUnitValue} ${unitLabel}`;\n};\nvar formatAsTimePhrase = (seconds) => {\n  if (!isValidNumber(seconds))\n    return \"\";\n  const positiveSeconds = Math.abs(seconds);\n  const negative = positiveSeconds !== seconds;\n  const secondsDateTime = new Date(0, 0, 0, 0, 0, positiveSeconds, 0);\n  const timeParts = [\n    secondsDateTime.getHours(),\n    secondsDateTime.getMinutes(),\n    secondsDateTime.getSeconds()\n  ];\n  const timeString = timeParts.map(\n    (timeUnitValue, index) => timeUnitValue && toTimeUnitPhrase(timeUnitValue, index)\n  ).filter((x4) => x4).join(\", \");\n  const negativeSuffix = negative ? \" remaining\" : \"\";\n  return `${timeString}${negativeSuffix}`;\n};\nfunction formatTime(seconds, guide) {\n  let negative = false;\n  if (seconds < 0) {\n    negative = true;\n    seconds = 0 - seconds;\n  }\n  seconds = seconds < 0 ? 0 : seconds;\n  let s = Math.floor(seconds % 60);\n  let m3 = Math.floor(seconds / 60 % 60);\n  let h3 = Math.floor(seconds / 3600);\n  const gm = Math.floor(guide / 60 % 60);\n  const gh = Math.floor(guide / 3600);\n  if (isNaN(seconds) || seconds === Infinity) {\n    h3 = m3 = s = \"0\";\n  }\n  h3 = h3 > 0 || gh > 0 ? h3 + \":\" : \"\";\n  m3 = ((h3 || gm >= 10) && m3 < 10 ? \"0\" + m3 : m3) + \":\";\n  s = s < 10 ? \"0\" + s : s;\n  return (negative ? \"-\" : \"\") + h3 + m3 + s;\n}\nvar emptyTimeRanges = Object.freeze({\n  length: 0,\n  start(index) {\n    const unsignedIdx = index >>> 0;\n    if (unsignedIdx >= this.length) {\n      throw new DOMException(\n        `Failed to execute 'start' on 'TimeRanges': The index provided (${unsignedIdx}) is greater than or equal to the maximum bound (${this.length}).`\n      );\n    }\n    return 0;\n  },\n  end(index) {\n    const unsignedIdx = index >>> 0;\n    if (unsignedIdx >= this.length) {\n      throw new DOMException(\n        `Failed to execute 'end' on 'TimeRanges': The index provided (${unsignedIdx}) is greater than or equal to the maximum bound (${this.length}).`\n      );\n    }\n    return 0;\n  }\n});\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/server-safe-globals.js\nvar EventTarget2 = class {\n  addEventListener() {\n  }\n  removeEventListener() {\n  }\n  dispatchEvent() {\n    return true;\n  }\n};\nvar Node = class extends EventTarget2 {\n};\nvar ResizeObserver = class {\n  observe() {\n  }\n  unobserve() {\n  }\n  disconnect() {\n  }\n};\nvar documentShim = {\n  createElement: function() {\n    return new globalThisShim.HTMLElement();\n  },\n  createElementNS: function() {\n    return new globalThisShim.HTMLElement();\n  },\n  addEventListener() {\n  },\n  removeEventListener() {\n  },\n  /**\n   *\n   * @param {Event} event\n   * @returns {boolean}\n   */\n  dispatchEvent(event) {\n    return false;\n  }\n};\nvar globalThisShim = {\n  ResizeObserver,\n  document: documentShim,\n  Node,\n  HTMLElement: class HTMLElement2 extends Node {\n  },\n  DocumentFragment: class DocumentFragment2 extends EventTarget2 {\n  },\n  customElements: {\n    get: function() {\n    },\n    define: function() {\n    },\n    whenDefined: function() {\n    }\n  },\n  localStorage: {\n    /**\n     * @param {string} key\n     * @returns {string|null}\n     */\n    getItem(key) {\n      return null;\n    },\n    /**\n     * @param {string} key\n     * @param {string} value\n     */\n    setItem(key, value) {\n    },\n    // eslint-disable-line no-unused-vars\n    /**\n     * @param {string} key\n     */\n    removeItem(key) {\n    }\n    // eslint-disable-line no-unused-vars\n  },\n  CustomEvent: function CustomEvent2() {\n  },\n  getComputedStyle: function() {\n  },\n  navigator: {\n    languages: [],\n    get userAgent() {\n      return \"\";\n    }\n  },\n  /**\n   * @param {string} media\n   */\n  matchMedia(media) {\n    return {\n      matches: false,\n      media\n    };\n  }\n};\nvar isServer = typeof window === \"undefined\" || typeof window.customElements === \"undefined\";\nvar isShimmed = Object.keys(globalThisShim).every((key) => key in globalThis);\nvar GlobalThis = isServer && !isShimmed ? globalThisShim : globalThis;\nvar Document2 = isServer && !isShimmed ? documentShim : globalThis.document;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/resize-observer.js\nvar callbacksMap = /* @__PURE__ */ new WeakMap();\nvar getCallbacks = (element) => {\n  let callbacks = callbacksMap.get(element);\n  if (!callbacks)\n    callbacksMap.set(element, callbacks = /* @__PURE__ */ new Set());\n  return callbacks;\n};\nvar observer = new GlobalThis.ResizeObserver((entries) => {\n  for (let entry of entries) {\n    for (let callback of getCallbacks(entry.target)) {\n      callback(entry);\n    }\n  }\n});\nfunction observeResize(element, callback) {\n  getCallbacks(element).add(callback);\n  observer.observe(element);\n}\nfunction unobserveResize(element, callback) {\n  const callbacks = getCallbacks(element);\n  callbacks.delete(callback);\n  if (!callbacks.size) {\n    observer.unobserve(element);\n  }\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/element-utils.js\nfunction getMediaController(host) {\n  var _a3;\n  return (_a3 = getAttributeMediaController(host)) != null ? _a3 : closestComposedNode(host, \"media-controller\");\n}\nfunction getAttributeMediaController(host) {\n  var _a3;\n  const { MEDIA_CONTROLLER } = MediaStateReceiverAttributes;\n  const mediaControllerId = host.getAttribute(MEDIA_CONTROLLER);\n  if (mediaControllerId) {\n    return (\n      /** @type MediaController */\n      /** @type {unknown} */\n      (_a3 = getDocumentOrShadowRoot(host)) == null ? void 0 : _a3.getElementById(mediaControllerId)\n    );\n  }\n}\nvar updateIconText = (svg, value, selector = \".value\") => {\n  const node = svg.querySelector(selector);\n  if (!node)\n    return;\n  node.textContent = value;\n};\nvar getAllSlotted = (el, name) => {\n  const slotSelector = `slot[name=\"${name}\"]`;\n  const slot = el.shadowRoot.querySelector(slotSelector);\n  if (!slot)\n    return [];\n  return slot.children;\n};\nvar getSlotted = (el, name) => getAllSlotted(el, name)[0];\nvar containsComposedNode = (rootNode, childNode) => {\n  if (!rootNode || !childNode)\n    return false;\n  if (rootNode == null ? void 0 : rootNode.contains(childNode))\n    return true;\n  return containsComposedNode(\n    rootNode,\n    /** @type {ShadowRoot} */\n    childNode.getRootNode().host\n  );\n};\nvar closestComposedNode = (childNode, selector) => {\n  if (!childNode)\n    return null;\n  const closest = childNode.closest(selector);\n  if (closest)\n    return closest;\n  return closestComposedNode(childNode.getRootNode().host, selector);\n};\nfunction getActiveElement(root = document) {\n  var _a3;\n  const activeEl = root == null ? void 0 : root.activeElement;\n  if (!activeEl)\n    return null;\n  return (_a3 = getActiveElement(activeEl.shadowRoot)) != null ? _a3 : activeEl;\n}\nfunction getDocumentOrShadowRoot(node) {\n  var _a3;\n  const rootNode = (_a3 = node == null ? void 0 : node.getRootNode) == null ? void 0 : _a3.call(node);\n  if (rootNode instanceof ShadowRoot || rootNode instanceof Document) {\n    return rootNode;\n  }\n  return null;\n}\nfunction isElementVisible(element, depth = 3) {\n  if (element.checkVisibility) {\n    return element.checkVisibility({\n      checkOpacity: true,\n      checkVisibilityCSS: true\n    });\n  }\n  let el = element;\n  while (el && depth > 0) {\n    const style = getComputedStyle(el);\n    if (style.opacity === \"0\" || style.visibility === \"hidden\" || style.display === \"none\") {\n      return false;\n    }\n    el = el.parentElement;\n    depth--;\n  }\n  return true;\n}\nfunction getPointProgressOnLine(x4, y5, p1, p22) {\n  const segment = distance(p1, p22);\n  const toStart = distance(p1, { x: x4, y: y5 });\n  const toEnd = distance(p22, { x: x4, y: y5 });\n  if (toStart > segment || toEnd > segment) {\n    return toStart > toEnd ? 1 : 0;\n  }\n  return toStart / segment;\n}\nfunction distance(p1, p22) {\n  return Math.sqrt(Math.pow(p22.x - p1.x, 2) + Math.pow(p22.y - p1.y, 2));\n}\nfunction getOrInsertCSSRule(styleParent, selectorText) {\n  const cssRule = getCSSRule(styleParent, (st4) => st4 === selectorText);\n  if (cssRule)\n    return cssRule;\n  return insertCSSRule(styleParent, selectorText);\n}\nfunction getCSSRule(styleParent, predicate) {\n  var _a3;\n  let style;\n  for (style of styleParent.querySelectorAll(\"style\")) {\n    let cssRules;\n    try {\n      cssRules = (_a3 = style.sheet) == null ? void 0 : _a3.cssRules;\n    } catch (e) {\n      continue;\n    }\n    for (let rule of cssRules != null ? cssRules : []) {\n      if (predicate(rule.selectorText))\n        return rule;\n    }\n  }\n}\nfunction insertCSSRule(styleParent, selectorText) {\n  var _a3, _b;\n  const styles = (_a3 = styleParent.querySelectorAll(\"style\")) != null ? _a3 : [];\n  const style = styles == null ? void 0 : styles[styles.length - 1];\n  if (!(style == null ? void 0 : style.sheet)) {\n    console.warn(\n      \"Media Chrome: No style sheet found on style tag of\",\n      styleParent\n    );\n    return {\n      // @ts-ignore\n      style: {\n        setProperty: () => {\n        },\n        removeProperty: () => \"\",\n        getPropertyValue: () => \"\"\n      }\n    };\n  }\n  style == null ? void 0 : style.sheet.insertRule(`${selectorText}{}`, style.sheet.cssRules.length);\n  return (\n    /** @type {CSSStyleRule} */\n    (_b = style.sheet.cssRules) == null ? void 0 : _b[style.sheet.cssRules.length - 1]\n  );\n}\nfunction getNumericAttr(el, attrName, defaultValue = Number.NaN) {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal != null ? +attrVal : defaultValue;\n}\nfunction setNumericAttr(el, attrName, value) {\n  const nextNumericValue = +value;\n  if (value == null || Number.isNaN(nextNumericValue)) {\n    if (el.hasAttribute(attrName)) {\n      el.removeAttribute(attrName);\n    }\n    return;\n  }\n  if (getNumericAttr(el, attrName, void 0) === nextNumericValue)\n    return;\n  el.setAttribute(attrName, `${nextNumericValue}`);\n}\nfunction getBooleanAttr(el, attrName) {\n  return el.hasAttribute(attrName);\n}\nfunction setBooleanAttr(el, attrName, value) {\n  if (value == null) {\n    if (el.hasAttribute(attrName)) {\n      el.removeAttribute(attrName);\n    }\n    return;\n  }\n  if (getBooleanAttr(el, attrName) == value)\n    return;\n  el.toggleAttribute(attrName, value);\n}\nfunction getStringAttr(el, attrName, defaultValue = null) {\n  var _a3;\n  return (_a3 = el.getAttribute(attrName)) != null ? _a3 : defaultValue;\n}\nfunction setStringAttr(el, attrName, value) {\n  if (value == null) {\n    if (el.hasAttribute(attrName)) {\n      el.removeAttribute(attrName);\n    }\n    return;\n  }\n  const nextValue = `${value}`;\n  if (getStringAttr(el, attrName, void 0) === nextValue)\n    return;\n  el.setAttribute(attrName, nextValue);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-gesture-receiver.js\nvar __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController;\nvar template = Document2.createElement(\"template\");\ntemplate.innerHTML = /*html*/\n`\n<style>\n  :host {\n    display: var(--media-control-display, var(--media-gesture-receiver-display, inline-block));\n    box-sizing: border-box;\n  }\n</style>\n`;\nvar MediaGestureReceiver = class extends GlobalThis.HTMLElement {\n  constructor(options = {}) {\n    super();\n    __privateAdd(this, _mediaController, void 0);\n    if (!this.shadowRoot) {\n      const shadow = this.attachShadow({ mode: \"open\" });\n      const buttonHTML = template.content.cloneNode(true);\n      this.nativeEl = buttonHTML;\n      let slotTemplate20 = options.slotTemplate;\n      if (!slotTemplate20) {\n        slotTemplate20 = Document2.createElement(\"template\");\n        slotTemplate20.innerHTML = `<slot>${options.defaultContent || \"\"}</slot>`;\n      }\n      this.nativeEl.appendChild(slotTemplate20.content.cloneNode(true));\n      shadow.appendChild(buttonHTML);\n    }\n  }\n  // NOTE: Currently \"baking in\" actions + attrs until we come up with\n  // a more robust architecture (CJP)\n  static get observedAttributes() {\n    return [\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER,\n      MediaUIAttributes.MEDIA_PAUSED\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet(this, _mediaController)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet(this, _mediaController, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet(this, _mediaController, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet(this, _mediaController)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c, _d;\n    this.tabIndex = -1;\n    this.setAttribute(\"aria-hidden\", \"true\");\n    __privateSet(this, _mediaController, getMediaControllerEl(this));\n    if (this.getAttribute(MediaStateReceiverAttributes.MEDIA_CONTROLLER)) {\n      (_b = (_a3 = __privateGet(this, _mediaController)) == null ? void 0 : _a3.associateElement) == null ? void 0 : _b.call(_a3, this);\n    }\n    (_c = __privateGet(this, _mediaController)) == null ? void 0 : _c.addEventListener(\"pointerdown\", this);\n    (_d = __privateGet(this, _mediaController)) == null ? void 0 : _d.addEventListener(\"click\", this);\n  }\n  disconnectedCallback() {\n    var _a3, _b, _c, _d;\n    if (this.getAttribute(MediaStateReceiverAttributes.MEDIA_CONTROLLER)) {\n      (_b = (_a3 = __privateGet(this, _mediaController)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    }\n    (_c = __privateGet(this, _mediaController)) == null ? void 0 : _c.removeEventListener(\"pointerdown\", this);\n    (_d = __privateGet(this, _mediaController)) == null ? void 0 : _d.removeEventListener(\"click\", this);\n    __privateSet(this, _mediaController, null);\n  }\n  handleEvent(event) {\n    var _a3;\n    const composedTarget = (_a3 = event.composedPath()) == null ? void 0 : _a3[0];\n    const allowList = [\"video\", \"media-controller\"];\n    if (!allowList.includes(composedTarget == null ? void 0 : composedTarget.localName))\n      return;\n    if (event.type === \"pointerdown\") {\n      this._pointerType = event.pointerType;\n    } else if (event.type === \"click\") {\n      const { clientX, clientY } = event;\n      const { left, top, width, height } = this.getBoundingClientRect();\n      const x4 = clientX - left;\n      const y5 = clientY - top;\n      if (x4 < 0 || y5 < 0 || x4 > width || y5 > height || // In case this element has no dimensions (or display: none) return.\n      width === 0 && height === 0) {\n        return;\n      }\n      const { pointerType = this._pointerType } = event;\n      this._pointerType = void 0;\n      if (pointerType === PointerTypes.TOUCH) {\n        this.handleTap(event);\n        return;\n      } else if (pointerType === PointerTypes.MOUSE) {\n        this.handleMouseClick(event);\n        return;\n      }\n    }\n  }\n  /**\n   * @type {boolean} Is the media paused\n   */\n  get mediaPaused() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED);\n  }\n  set mediaPaused(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED, value);\n  }\n  // NOTE: Currently \"baking in\" actions + attrs until we come up with\n  // a more robust architecture (CJP)\n  /**\n   * @abstract\n   * @argument {Event} e\n   */\n  handleTap(e) {\n  }\n  // eslint-disable-line\n  // eslint-disable-next-line\n  handleMouseClick(e) {\n    const eventName = this.mediaPaused ? MediaUIEvents.MEDIA_PLAY_REQUEST : MediaUIEvents.MEDIA_PAUSE_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\n_mediaController = /* @__PURE__ */ new WeakMap();\nfunction getMediaControllerEl(controlEl) {\n  var _a3;\n  const mediaControllerId = controlEl.getAttribute(\n    MediaStateReceiverAttributes.MEDIA_CONTROLLER\n  );\n  if (mediaControllerId) {\n    return (_a3 = controlEl.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId);\n  }\n  return closestComposedNode(controlEl, \"media-controller\");\n}\nif (!GlobalThis.customElements.get(\"media-gesture-receiver\")) {\n  GlobalThis.customElements.define(\n    \"media-gesture-receiver\",\n    MediaGestureReceiver\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-container.js\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n  __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck2 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet2 = (obj, member, getter) => {\n  __accessCheck2(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd2 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet2 = (obj, member, value, setter) => {\n  __accessCheck2(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod = (obj, member, method) => {\n  __accessCheck2(obj, member, \"access private method\");\n  return method;\n};\nvar _pointerDownTimeStamp;\nvar _currentMedia;\nvar _handlePointerMove;\nvar handlePointerMove_fn;\nvar _handlePointerUp;\nvar handlePointerUp_fn;\nvar _setInactive;\nvar setInactive_fn;\nvar _setActive;\nvar setActive_fn;\nvar _scheduleInactive;\nvar scheduleInactive_fn;\nvar Attributes = {\n  AUDIO: \"audio\",\n  AUTOHIDE: \"autohide\",\n  BREAKPOINTS: \"breakpoints\",\n  GESTURES_DISABLED: \"gesturesdisabled\",\n  KEYBOARD_CONTROL: \"keyboardcontrol\",\n  NO_AUTOHIDE: \"noautohide\",\n  USER_INACTIVE: \"userinactive\"\n};\nvar template2 = Document2.createElement(\"template\");\ntemplate2.innerHTML = /*html*/\n`\n  <style>\n    ${/*\n* outline on media is turned off because it is allowed to get focus to faciliate hotkeys.\n* However, on keyboard interactions, the focus outline is shown,\n* which is particularly noticeable when going fullscreen via hotkeys.\n*/\n\"\"}\n    :host([${MediaUIAttributes.MEDIA_IS_FULLSCREEN}]) ::slotted([slot=media]) {\n      outline: none;\n    }\n\n    :host {\n      box-sizing: border-box;\n      position: relative;\n      display: inline-block;\n      line-height: 0;\n      background-color: var(--media-background-color, #000);\n    }\n\n    :host(:not([${Attributes.AUDIO}])) [part~=layer]:not([part~=media-layer]) {\n      position: absolute;\n      top: 0;\n      left: 0;\n      bottom: 0;\n      right: 0;\n      display: flex;\n      flex-flow: column nowrap;\n      align-items: start;\n      pointer-events: none;\n      background: none;\n    }\n\n    slot[name=media] {\n      display: var(--media-slot-display, contents);\n    }\n\n    ${/*\n* when in audio mode, hide the slotted media element by default\n*/\n\"\"}\n    :host([${Attributes.AUDIO}]) slot[name=media] {\n      display: var(--media-slot-display, none);\n    }\n\n    ${/*\n* when in audio mode, hide the gesture-layer which causes media-controller to be taller than the control bar\n*/\n\"\"}\n    :host([${Attributes.AUDIO}]) [part~=layer][part~=gesture-layer] {\n      height: 0;\n      display: block;\n    }\n\n    ${/*\n* if gestures are disabled, don't accept pointer-events\n*/\n\"\"}\n    :host(:not([${Attributes.AUDIO}])[${Attributes.GESTURES_DISABLED}]) ::slotted([slot=gestures-chrome]),\n    :host(:not([${Attributes.AUDIO}])[${Attributes.GESTURES_DISABLED}]) media-gesture-receiver[slot=gestures-chrome] {\n      display: none;\n    }\n\n    ${/*\n* any slotted element that isn't a poster or media slot should be pointer-events auto\n* we'll want to add here any slotted elements that shouldn't get pointer-events by default when slotted\n*/\n\"\"}\n    ::slotted(:not([slot=media]):not([slot=poster]):not(media-loading-indicator):not([hidden])) {\n      pointer-events: auto;\n    }\n\n    :host(:not([${Attributes.AUDIO}])) *[part~=layer][part~=centered-layer] {\n      align-items: center;\n      justify-content: center;\n    }\n\n    :host(:not([${Attributes.AUDIO}])) ::slotted(media-gesture-receiver[slot=gestures-chrome]),\n    :host(:not([${Attributes.AUDIO}])) media-gesture-receiver[slot=gestures-chrome] {\n      align-self: stretch;\n      flex-grow: 1;\n    }\n\n    slot[name=middle-chrome] {\n      display: inline;\n      flex-grow: 1;\n      pointer-events: none;\n      background: none;\n    }\n\n    ${/* Position the media and poster elements to fill the container */\n\"\"}\n    ::slotted([slot=media]),\n    ::slotted([slot=poster]) {\n      width: 100%;\n      height: 100%;\n    }\n\n    ${/* Video specific styles */\n\"\"}\n    :host(:not([${Attributes.AUDIO}])) .spacer {\n      flex-grow: 1;\n    }\n\n    ${/* Safari needs this to actually make the element fill the window */\n\"\"}\n    :host(:-webkit-full-screen) {\n      ${/* Needs to use !important otherwise easy to break */\n\"\"}\n      width: 100% !important;\n      height: 100% !important;\n    }\n\n    ${/* Only add these if auto hide is not disabled */\n\"\"}\n    ::slotted(:not([slot=media]):not([slot=poster]):not([${Attributes.NO_AUTOHIDE}]):not([hidden])) {\n      opacity: 1;\n      transition: opacity 0.25s;\n    }\n\n    ${/* Hide controls when inactive, not paused, not audio and auto hide not disabled */\n\"\"}\n    :host([${Attributes.USER_INACTIVE}]:not([${MediaUIAttributes.MEDIA_PAUSED}]):not([${MediaUIAttributes.MEDIA_IS_AIRPLAYING}]):not([${MediaUIAttributes.MEDIA_IS_CASTING}]):not([${Attributes.AUDIO}])) ::slotted(:not([slot=media]):not([slot=poster]):not([${Attributes.NO_AUTOHIDE}])) {\n      opacity: 0;\n      transition: opacity 1s;\n    }\n\n    :host([${Attributes.USER_INACTIVE}]:not([${MediaUIAttributes.MEDIA_PAUSED}]):not([${MediaUIAttributes.MEDIA_IS_CASTING}]):not([${Attributes.AUDIO}])) ::slotted([slot=media]) {\n      cursor: none;\n    }\n\n    ::slotted(media-control-bar)  {\n      align-self: stretch;\n    }\n\n    ${/* ::slotted([slot=poster]) doesn't work for slot fallback content so hide parent slot instead */\n\"\"}\n    :host(:not([${Attributes.AUDIO}])[${MediaUIAttributes.MEDIA_HAS_PLAYED}]) slot[name=poster] {\n      display: none;\n    }\n\n    ::slotted([role=\"menu\"]) {\n      align-self: end;\n    }\n\n    ::slotted([role=\"dialog\"]) {\n      align-self: center;\n    }\n  </style>\n\n  <slot name=\"media\" part=\"layer media-layer\"></slot>\n  <slot name=\"poster\" part=\"layer poster-layer\"></slot>\n  <slot name=\"gestures-chrome\" part=\"layer gesture-layer\">\n    <media-gesture-receiver slot=\"gestures-chrome\"></media-gesture-receiver>\n  </slot>\n  <span part=\"layer vertical-layer\">\n    <slot name=\"top-chrome\" part=\"top chrome\"></slot>\n    <slot name=\"middle-chrome\" part=\"middle chrome\"></slot>\n    <slot name=\"centered-chrome\" part=\"layer centered-layer center centered chrome\"></slot>\n    ${/* default, effectively \"bottom-chrome\" */\n\"\"}\n    <slot part=\"bottom chrome\"></slot>\n  </span>\n`;\nvar MEDIA_UI_ATTRIBUTE_NAMES = Object.values(MediaUIAttributes);\nvar defaultBreakpoints = \"sm:384 md:576 lg:768 xl:960\";\nfunction resizeCallback(entry) {\n  setBreakpoints(entry.target, entry.contentRect.width);\n}\nfunction setBreakpoints(container, width) {\n  var _a3;\n  if (!container.isConnected)\n    return;\n  const breakpoints = (_a3 = container.getAttribute(Attributes.BREAKPOINTS)) != null ? _a3 : defaultBreakpoints;\n  const ranges = createBreakpointMap(breakpoints);\n  const activeBreakpoints = getBreakpoints(ranges, width);\n  let changed = false;\n  Object.keys(ranges).forEach((name) => {\n    if (activeBreakpoints.includes(name)) {\n      if (!container.hasAttribute(`breakpoint${name}`)) {\n        container.setAttribute(`breakpoint${name}`, \"\");\n        changed = true;\n      }\n      return;\n    }\n    if (container.hasAttribute(`breakpoint${name}`)) {\n      container.removeAttribute(`breakpoint${name}`);\n      changed = true;\n    }\n  });\n  if (changed) {\n    const evt = new CustomEvent(MediaStateChangeEvents.BREAKPOINTS_CHANGE, {\n      detail: activeBreakpoints\n    });\n    container.dispatchEvent(evt);\n  }\n}\nfunction createBreakpointMap(breakpoints) {\n  const pairs = breakpoints.split(/\\s+/);\n  return Object.fromEntries(pairs.map((pair) => pair.split(\":\")));\n}\nfunction getBreakpoints(breakpoints, width) {\n  return Object.keys(breakpoints).filter((name) => {\n    return width >= breakpoints[name];\n  });\n}\nvar MediaContainer = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd2(this, _handlePointerMove);\n    __privateAdd2(this, _handlePointerUp);\n    __privateAdd2(this, _setInactive);\n    __privateAdd2(this, _setActive);\n    __privateAdd2(this, _scheduleInactive);\n    __privateAdd2(this, _pointerDownTimeStamp, 0);\n    __privateAdd2(this, _currentMedia, void 0);\n    __publicField(this, \"breakpointsComputed\", false);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template2.content.cloneNode(true));\n    }\n    const mutationCallback = (mutationsList) => {\n      const media = this.media;\n      for (let mutation of mutationsList) {\n        if (mutation.type === \"childList\") {\n          mutation.removedNodes.forEach((node) => {\n            if (node.slot == \"media\" && mutation.target == this) {\n              let previousSibling = mutation.previousSibling && mutation.previousSibling.previousElementSibling;\n              if (!previousSibling || !media) {\n                this.mediaUnsetCallback(node);\n              } else {\n                let wasFirst = previousSibling.slot !== \"media\";\n                while ((previousSibling = previousSibling.previousSibling) !== null) {\n                  if (previousSibling.slot == \"media\")\n                    wasFirst = false;\n                }\n                if (wasFirst)\n                  this.mediaUnsetCallback(node);\n              }\n            }\n          });\n          if (media) {\n            mutation.addedNodes.forEach((node) => {\n              if (node === media) {\n                this.handleMediaUpdated(media);\n              }\n            });\n          }\n        }\n      }\n    };\n    const mutationObserver = new MutationObserver(mutationCallback);\n    mutationObserver.observe(this, { childList: true, subtree: true });\n    let pendingResizeCb = false;\n    const deferResizeCallback = (entry) => {\n      if (pendingResizeCb)\n        return;\n      setTimeout(() => {\n        resizeCallback(entry);\n        pendingResizeCb = false;\n        if (!this.breakpointsComputed) {\n          this.breakpointsComputed = true;\n          this.dispatchEvent(\n            new CustomEvent(MediaStateChangeEvents.BREAKPOINTS_COMPUTED, {\n              bubbles: true,\n              composed: true\n            })\n          );\n        }\n      }, 0);\n      pendingResizeCb = true;\n    };\n    observeResize(this, deferResizeCallback);\n    let chainedSlot = this.querySelector(\":scope > slot[slot=media]\");\n    if (chainedSlot) {\n      chainedSlot.addEventListener(\"slotchange\", () => {\n        const slotEls = chainedSlot.assignedElements({ flatten: true });\n        if (!slotEls.length) {\n          if (__privateGet2(this, _currentMedia)) {\n            this.mediaUnsetCallback(__privateGet2(this, _currentMedia));\n          }\n          return;\n        }\n        this.handleMediaUpdated(this.media);\n      });\n    }\n  }\n  static get observedAttributes() {\n    return [Attributes.AUTOHIDE, Attributes.GESTURES_DISABLED].concat(MEDIA_UI_ATTRIBUTE_NAMES).filter(\n      (name) => ![\n        MediaUIAttributes.MEDIA_RENDITION_LIST,\n        MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST,\n        MediaUIAttributes.MEDIA_CHAPTERS_CUES\n      ].includes(name)\n    );\n  }\n  // Could share this code with media-chrome-html-element instead\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName.toLowerCase() == Attributes.AUTOHIDE) {\n      this.autohide = newValue;\n    }\n  }\n  // First direct child with slot=media, or null\n  /**\n   * @returns {HTMLVideoElement &\n   * {buffered,\n   * webkitEnterFullscreen?,\n   * webkitExitFullscreen?,\n   * requestCast?,\n   * webkitShowPlaybackTargetPicker?,\n   * videoTracks?,\n   * }}\n   */\n  get media() {\n    let media = this.querySelector(\":scope > [slot=media]\");\n    if ((media == null ? void 0 : media.nodeName) == \"SLOT\")\n      media = media.assignedElements({ flatten: true })[0];\n    return media;\n  }\n  /**\n   * @param {HTMLMediaElement} media\n   */\n  handleMediaUpdated(media) {\n    return __async(this, null, function* () {\n      if (!media)\n        return;\n      __privateSet2(this, _currentMedia, media);\n      if (media.localName.includes(\"-\")) {\n        yield GlobalThis.customElements.whenDefined(media.localName);\n      }\n      this.mediaSetCallback(media);\n    });\n  }\n  connectedCallback() {\n    var _a3;\n    const isAudioChrome = this.getAttribute(Attributes.AUDIO) != null;\n    const label = isAudioChrome ? nouns.AUDIO_PLAYER() : nouns.VIDEO_PLAYER();\n    this.setAttribute(\"role\", \"region\");\n    this.setAttribute(\"aria-label\", label);\n    this.handleMediaUpdated(this.media);\n    this.setAttribute(Attributes.USER_INACTIVE, \"\");\n    this.addEventListener(\"pointerdown\", this);\n    this.addEventListener(\"pointermove\", this);\n    this.addEventListener(\"pointerup\", this);\n    this.addEventListener(\"mouseleave\", this);\n    this.addEventListener(\"keyup\", this);\n    (_a3 = GlobalThis.window) == null ? void 0 : _a3.addEventListener(\"mouseup\", this);\n  }\n  disconnectedCallback() {\n    var _a3;\n    if (this.media) {\n      this.mediaUnsetCallback(this.media);\n    }\n    (_a3 = GlobalThis.window) == null ? void 0 : _a3.removeEventListener(\"mouseup\", this);\n  }\n  /**\n   * @abstract\n   * @param {HTMLMediaElement} media\n   */\n  mediaSetCallback(media) {\n  }\n  // eslint-disable-line\n  /**\n   * @param {HTMLMediaElement} media\n   */\n  mediaUnsetCallback(media) {\n    __privateSet2(this, _currentMedia, null);\n  }\n  handleEvent(event) {\n    switch (event.type) {\n      case \"pointerdown\":\n        __privateSet2(this, _pointerDownTimeStamp, event.timeStamp);\n        break;\n      case \"pointermove\":\n        __privateMethod(this, _handlePointerMove, handlePointerMove_fn).call(this, event);\n        break;\n      case \"pointerup\":\n        __privateMethod(this, _handlePointerUp, handlePointerUp_fn).call(this, event);\n        break;\n      case \"mouseleave\":\n        __privateMethod(this, _setInactive, setInactive_fn).call(this);\n        break;\n      case \"mouseup\":\n        this.removeAttribute(Attributes.KEYBOARD_CONTROL);\n        break;\n      case \"keyup\":\n        __privateMethod(this, _scheduleInactive, scheduleInactive_fn).call(this);\n        this.setAttribute(Attributes.KEYBOARD_CONTROL, \"\");\n        break;\n    }\n  }\n  set autohide(seconds) {\n    seconds = Number(seconds);\n    this._autohide = isNaN(seconds) ? 0 : seconds;\n  }\n  get autohide() {\n    return this._autohide === void 0 ? 2 : this._autohide;\n  }\n};\n_pointerDownTimeStamp = /* @__PURE__ */ new WeakMap();\n_currentMedia = /* @__PURE__ */ new WeakMap();\n_handlePointerMove = /* @__PURE__ */ new WeakSet();\nhandlePointerMove_fn = function(event) {\n  if (event.pointerType !== \"mouse\") {\n    const MAX_TAP_DURATION = 250;\n    if (event.timeStamp - __privateGet2(this, _pointerDownTimeStamp) < MAX_TAP_DURATION)\n      return;\n  }\n  __privateMethod(this, _setActive, setActive_fn).call(this);\n  clearTimeout(this._inactiveTimeout);\n  if ([this, this.media].includes(event.target)) {\n    __privateMethod(this, _scheduleInactive, scheduleInactive_fn).call(this);\n  }\n};\n_handlePointerUp = /* @__PURE__ */ new WeakSet();\nhandlePointerUp_fn = function(event) {\n  if (event.pointerType === \"touch\") {\n    const controlsVisible = !this.hasAttribute(Attributes.USER_INACTIVE);\n    if ([this, this.media].includes(event.target) && controlsVisible) {\n      __privateMethod(this, _setInactive, setInactive_fn).call(this);\n    } else {\n      __privateMethod(this, _scheduleInactive, scheduleInactive_fn).call(this);\n    }\n  } else if (event.composedPath().some(\n    (el) => [\"media-play-button\", \"media-fullscreen-button\"].includes(\n      el == null ? void 0 : el.localName\n    )\n  )) {\n    __privateMethod(this, _scheduleInactive, scheduleInactive_fn).call(this);\n  }\n};\n_setInactive = /* @__PURE__ */ new WeakSet();\nsetInactive_fn = function() {\n  if (this.autohide < 0)\n    return;\n  if (this.hasAttribute(Attributes.USER_INACTIVE))\n    return;\n  this.setAttribute(Attributes.USER_INACTIVE, \"\");\n  const evt = new GlobalThis.CustomEvent(\n    MediaStateChangeEvents.USER_INACTIVE,\n    { composed: true, bubbles: true, detail: true }\n  );\n  this.dispatchEvent(evt);\n};\n_setActive = /* @__PURE__ */ new WeakSet();\nsetActive_fn = function() {\n  if (!this.hasAttribute(Attributes.USER_INACTIVE))\n    return;\n  this.removeAttribute(Attributes.USER_INACTIVE);\n  const evt = new GlobalThis.CustomEvent(\n    MediaStateChangeEvents.USER_INACTIVE,\n    { composed: true, bubbles: true, detail: false }\n  );\n  this.dispatchEvent(evt);\n};\n_scheduleInactive = /* @__PURE__ */ new WeakSet();\nscheduleInactive_fn = function() {\n  __privateMethod(this, _setActive, setActive_fn).call(this);\n  clearTimeout(this._inactiveTimeout);\n  if (this.autohide < 0)\n    return;\n  this._inactiveTimeout = setTimeout(() => {\n    __privateMethod(this, _setInactive, setInactive_fn).call(this);\n  }, this.autohide * 1e3);\n};\nif (!GlobalThis.customElements.get(\"media-container\")) {\n  GlobalThis.customElements.define(\"media-container\", MediaContainer);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/attribute-token-list.js\nvar __accessCheck3 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet3 = (obj, member, getter) => {\n  __accessCheck3(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd3 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet3 = (obj, member, value, setter) => {\n  __accessCheck3(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _el;\nvar _attr;\nvar _defaultSet;\nvar _tokenSet;\nvar _tokens;\nvar tokens_get;\nvar AttributeTokenList = class {\n  constructor(el, attr, { defaultValue } = { defaultValue: void 0 }) {\n    __privateAdd3(this, _tokens);\n    __privateAdd3(this, _el, void 0);\n    __privateAdd3(this, _attr, void 0);\n    __privateAdd3(this, _defaultSet, void 0);\n    __privateAdd3(this, _tokenSet, /* @__PURE__ */ new Set());\n    __privateSet3(this, _el, el);\n    __privateSet3(this, _attr, attr);\n    __privateSet3(this, _defaultSet, new Set(defaultValue));\n  }\n  [Symbol.iterator]() {\n    return __privateGet3(this, _tokens, tokens_get).values();\n  }\n  get length() {\n    return __privateGet3(this, _tokens, tokens_get).size;\n  }\n  get value() {\n    var _a3;\n    return (_a3 = [...__privateGet3(this, _tokens, tokens_get)].join(\" \")) != null ? _a3 : \"\";\n  }\n  set value(val) {\n    var _a3;\n    if (val === this.value)\n      return;\n    __privateSet3(this, _tokenSet, /* @__PURE__ */ new Set());\n    this.add(...(_a3 = val == null ? void 0 : val.split(\" \")) != null ? _a3 : []);\n  }\n  toString() {\n    return this.value;\n  }\n  item(index) {\n    return [...__privateGet3(this, _tokens, tokens_get)][index];\n  }\n  values() {\n    return __privateGet3(this, _tokens, tokens_get).values();\n  }\n  forEach(callback) {\n    __privateGet3(this, _tokens, tokens_get).forEach(callback);\n  }\n  add(...tokens) {\n    var _a3, _b;\n    tokens.forEach((t2) => __privateGet3(this, _tokenSet).add(t2));\n    if (this.value === \"\" && !((_a3 = __privateGet3(this, _el)) == null ? void 0 : _a3.hasAttribute(`${__privateGet3(this, _attr)}`))) {\n      return;\n    }\n    (_b = __privateGet3(this, _el)) == null ? void 0 : _b.setAttribute(`${__privateGet3(this, _attr)}`, `${this.value}`);\n  }\n  remove(...tokens) {\n    var _a3;\n    tokens.forEach((t2) => __privateGet3(this, _tokenSet).delete(t2));\n    (_a3 = __privateGet3(this, _el)) == null ? void 0 : _a3.setAttribute(`${__privateGet3(this, _attr)}`, `${this.value}`);\n  }\n  contains(token) {\n    return __privateGet3(this, _tokens, tokens_get).has(token);\n  }\n  toggle(token, force) {\n    if (typeof force !== \"undefined\") {\n      if (force) {\n        this.add(token);\n        return true;\n      } else {\n        this.remove(token);\n        return false;\n      }\n    }\n    if (this.contains(token)) {\n      this.remove(token);\n      return false;\n    }\n    this.add(token);\n    return true;\n  }\n  replace(oldToken, newToken) {\n    this.remove(oldToken);\n    this.add(newToken);\n    return oldToken === newToken;\n  }\n};\n_el = /* @__PURE__ */ new WeakMap();\n_attr = /* @__PURE__ */ new WeakMap();\n_defaultSet = /* @__PURE__ */ new WeakMap();\n_tokenSet = /* @__PURE__ */ new WeakMap();\n_tokens = /* @__PURE__ */ new WeakSet();\ntokens_get = function() {\n  return __privateGet3(this, _tokenSet).size ? __privateGet3(this, _tokenSet) : __privateGet3(this, _defaultSet);\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/captions.js\nvar splitTextTracksStr = (textTracksStr = \"\") => textTracksStr.split(/\\s+/);\nvar parseTextTrackStr = (textTrackStr = \"\") => {\n  let [kind, language, encodedLabel] = textTrackStr.split(\":\");\n  const label = encodedLabel ? decodeURIComponent(encodedLabel) : void 0;\n  kind = kind === \"cc\" ? \"captions\" : \"subtitles\";\n  return {\n    kind,\n    language,\n    label\n  };\n};\nvar parseTextTracksStr = (textTracksStr = \"\", textTrackLikeObj = {}) => {\n  return splitTextTracksStr(textTracksStr).map((textTrackStr) => {\n    const textTrackObj = parseTextTrackStr(textTrackStr);\n    return __spreadValues(__spreadValues({}, textTrackLikeObj), textTrackObj);\n  });\n};\nvar parseTracks = (trackOrTracks) => {\n  if (!trackOrTracks)\n    return [];\n  if (Array.isArray(trackOrTracks)) {\n    return trackOrTracks.map((trackObjOrStr) => {\n      if (typeof trackObjOrStr === \"string\") {\n        return parseTextTrackStr(trackObjOrStr);\n      }\n      return trackObjOrStr;\n    });\n  }\n  if (typeof trackOrTracks === \"string\") {\n    return parseTextTracksStr(trackOrTracks);\n  }\n  return [trackOrTracks];\n};\nvar formatTextTrackObj = ({ kind, label, language } = { kind: \"subtitles\" }) => {\n  if (!label)\n    return language;\n  return `${kind === \"captions\" ? \"cc\" : \"sb\"}:${language}:${encodeURIComponent(\n    label\n  )}`;\n};\nvar stringifyTextTrackList = (textTracks = []) => {\n  return Array.prototype.map.call(textTracks, formatTextTrackObj).join(\" \");\n};\nvar isMatchingPropOf = (key, value) => (obj) => obj[key] === value;\nvar textTrackObjAsPred = (filterObj) => {\n  const preds = Object.entries(filterObj).map(([key, value]) => {\n    return isMatchingPropOf(key, value);\n  });\n  return (textTrack) => preds.every((pred) => pred(textTrack));\n};\nvar updateTracksModeTo = (mode, tracks = [], tracksToUpdate = []) => {\n  const preds = parseTracks(tracksToUpdate).map(textTrackObjAsPred);\n  const isTrackToUpdate = (textTrack) => {\n    return preds.some((pred) => pred(textTrack));\n  };\n  Array.from(tracks).filter(isTrackToUpdate).forEach((textTrack) => {\n    textTrack.mode = mode;\n  });\n};\nvar getTextTracksList = (media, filterPredOrObj = () => true) => {\n  if (!(media == null ? void 0 : media.textTracks))\n    return [];\n  const filterPred = typeof filterPredOrObj === \"function\" ? filterPredOrObj : textTrackObjAsPred(filterPredOrObj);\n  return Array.from(media.textTracks).filter(filterPred);\n};\nvar areSubsOn = (el) => {\n  var _a3;\n  const showingSubtitles = !!((_a3 = el.mediaSubtitlesShowing) == null ? void 0 : _a3.length) || el.hasAttribute(MediaUIAttributes.MEDIA_SUBTITLES_SHOWING);\n  return showingSubtitles;\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/fullscreen-api.js\nvar enterFullscreen = (stateOwners) => {\n  var _a3;\n  const { media, fullscreenElement } = stateOwners;\n  const enterFullscreenKey = fullscreenElement && \"requestFullscreen\" in fullscreenElement ? \"requestFullscreen\" : fullscreenElement && \"webkitRequestFullScreen\" in fullscreenElement ? \"webkitRequestFullScreen\" : void 0;\n  if (enterFullscreenKey) {\n    const maybePromise = (_a3 = fullscreenElement[enterFullscreenKey]) == null ? void 0 : _a3.call(fullscreenElement);\n    if (maybePromise instanceof Promise) {\n      return maybePromise.catch(() => {\n      });\n    }\n  } else if (media == null ? void 0 : media.webkitEnterFullscreen) {\n    media.webkitEnterFullscreen();\n  } else if (media == null ? void 0 : media.requestFullscreen) {\n    media.requestFullscreen();\n  }\n};\nvar exitFullscreenKey = \"exitFullscreen\" in Document2 ? \"exitFullscreen\" : \"webkitExitFullscreen\" in Document2 ? \"webkitExitFullscreen\" : \"webkitCancelFullScreen\" in Document2 ? \"webkitCancelFullScreen\" : void 0;\nvar exitFullscreen = (stateOwners) => {\n  var _a3;\n  const { documentElement } = stateOwners;\n  if (exitFullscreenKey) {\n    const maybePromise = (_a3 = documentElement == null ? void 0 : documentElement[exitFullscreenKey]) == null ? void 0 : _a3.call(documentElement);\n    if (maybePromise instanceof Promise) {\n      return maybePromise.catch(() => {\n      });\n    }\n  }\n};\nvar fullscreenElementKey = \"fullscreenElement\" in Document2 ? \"fullscreenElement\" : \"webkitFullscreenElement\" in Document2 ? \"webkitFullscreenElement\" : void 0;\nvar getFullscreenElement = (stateOwners) => {\n  const { documentElement, media } = stateOwners;\n  const docFullscreenElement = documentElement == null ? void 0 : documentElement[fullscreenElementKey];\n  if (!docFullscreenElement && \"webkitDisplayingFullscreen\" in media && \"webkitPresentationMode\" in media && media.webkitDisplayingFullscreen && media.webkitPresentationMode === WebkitPresentationModes.FULLSCREEN) {\n    return media;\n  }\n  return docFullscreenElement;\n};\nvar isFullscreen = (stateOwners) => {\n  var _a3;\n  const { media, documentElement, fullscreenElement = media } = stateOwners;\n  if (!media || !documentElement)\n    return false;\n  const currentFullscreenElement = getFullscreenElement(stateOwners);\n  if (!currentFullscreenElement)\n    return false;\n  if (currentFullscreenElement === fullscreenElement || currentFullscreenElement === media) {\n    return true;\n  }\n  if (currentFullscreenElement.localName.includes(\"-\")) {\n    let currentRoot = currentFullscreenElement.shadowRoot;\n    if (!(fullscreenElementKey in currentRoot)) {\n      return containsComposedNode(\n        currentFullscreenElement,\n        /** @TODO clean up type assumptions (e.g. Node) (CJP) */\n        // @ts-ignore\n        fullscreenElement\n      );\n    }\n    while (currentRoot == null ? void 0 : currentRoot[fullscreenElementKey]) {\n      if (currentRoot[fullscreenElementKey] === fullscreenElement)\n        return true;\n      currentRoot = (_a3 = currentRoot[fullscreenElementKey]) == null ? void 0 : _a3.shadowRoot;\n    }\n  }\n  return false;\n};\nvar fullscreenEnabledKey = \"fullscreenEnabled\" in Document2 ? \"fullscreenEnabled\" : \"webkitFullscreenEnabled\" in Document2 ? \"webkitFullscreenEnabled\" : void 0;\nvar isFullscreenEnabled = (stateOwners) => {\n  const { documentElement, media } = stateOwners;\n  return !!(documentElement == null ? void 0 : documentElement[fullscreenEnabledKey]) || media && \"webkitSupportsFullscreen\" in media;\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/platform-tests.js\nvar testMediaEl;\nvar getTestMediaEl = () => {\n  var _a3, _b;\n  if (testMediaEl)\n    return testMediaEl;\n  testMediaEl = (_b = (_a3 = Document2) == null ? void 0 : _a3.createElement) == null ? void 0 : _b.call(_a3, \"video\");\n  return testMediaEl;\n};\nvar hasVolumeSupportAsync = (..._0) => __async(null, [..._0], function* (mediaEl = getTestMediaEl()) {\n  if (!mediaEl)\n    return false;\n  const prevVolume = mediaEl.volume;\n  mediaEl.volume = prevVolume / 2 + 0.1;\n  yield delay(0);\n  return mediaEl.volume !== prevVolume;\n});\nvar isSafari = /.*Version\\/.*Safari\\/.*/.test(GlobalThis.navigator.userAgent);\nvar hasPipSupport = (mediaEl = getTestMediaEl()) => {\n  if (GlobalThis.matchMedia(\"(display-mode: standalone)\").matches && isSafari)\n    return false;\n  return typeof (mediaEl == null ? void 0 : mediaEl.requestPictureInPicture) === \"function\";\n};\nvar hasFullscreenSupport = (mediaEl = getTestMediaEl()) => {\n  return isFullscreenEnabled({ documentElement: Document2, media: mediaEl });\n};\nvar fullscreenSupported = hasFullscreenSupport();\nvar pipSupported = hasPipSupport();\nvar airplaySupported = !!GlobalThis.WebKitPlaybackTargetAvailabilityEvent;\nvar castSupported = !!GlobalThis.chrome;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-store/util.js\nvar getSubtitleTracks = (stateOwners) => {\n  return getTextTracksList(stateOwners.media, (textTrack) => {\n    return [TextTrackKinds.SUBTITLES, TextTrackKinds.CAPTIONS].includes(\n      textTrack.kind\n    );\n  }).sort((a2, b4) => a2.kind >= b4.kind ? 1 : -1);\n};\nvar getShowingSubtitleTracks = (stateOwners) => {\n  return getTextTracksList(stateOwners.media, (textTrack) => {\n    return textTrack.mode === TextTrackModes.SHOWING && [TextTrackKinds.SUBTITLES, TextTrackKinds.CAPTIONS].includes(\n      textTrack.kind\n    );\n  });\n};\nvar toggleSubtitleTracks = (stateOwners, force) => {\n  const tracks = getSubtitleTracks(stateOwners);\n  const showingSubitleTracks = getShowingSubtitleTracks(stateOwners);\n  const subtitlesShowing = !!showingSubitleTracks.length;\n  if (!tracks.length)\n    return;\n  if (force === false || subtitlesShowing && force !== true) {\n    updateTracksModeTo(TextTrackModes.DISABLED, tracks, showingSubitleTracks);\n  } else if (force === true || !subtitlesShowing && force !== false) {\n    let subTrack = tracks[0];\n    const { options } = stateOwners;\n    if (!(options == null ? void 0 : options.noSubtitlesLangPref)) {\n      const subtitlesPref = globalThis.localStorage.getItem(\n        \"media-chrome-pref-subtitles-lang\"\n      );\n      const userLangPrefs = subtitlesPref ? [subtitlesPref, ...globalThis.navigator.languages] : globalThis.navigator.languages;\n      const preferredAvailableSubs = tracks.filter((textTrack) => {\n        return userLangPrefs.some(\n          (lang) => textTrack.language.toLowerCase().startsWith(lang.split(\"-\")[0])\n        );\n      }).sort((textTrackA, textTrackB) => {\n        const idxA = userLangPrefs.findIndex(\n          (lang) => textTrackA.language.toLowerCase().startsWith(lang.split(\"-\")[0])\n        );\n        const idxB = userLangPrefs.findIndex(\n          (lang) => textTrackB.language.toLowerCase().startsWith(lang.split(\"-\")[0])\n        );\n        return idxA - idxB;\n      });\n      if (preferredAvailableSubs[0]) {\n        subTrack = preferredAvailableSubs[0];\n      }\n    }\n    const { language, label, kind } = subTrack;\n    updateTracksModeTo(TextTrackModes.DISABLED, tracks, showingSubitleTracks);\n    updateTracksModeTo(TextTrackModes.SHOWING, tracks, [\n      { language, label, kind }\n    ]);\n  }\n};\nvar areValuesEq = (x4, y5) => {\n  if (x4 === y5)\n    return true;\n  if (typeof x4 !== typeof y5)\n    return false;\n  if (typeof x4 === \"number\" && Number.isNaN(x4) && Number.isNaN(y5))\n    return true;\n  if (typeof x4 !== \"object\")\n    return false;\n  if (Array.isArray(x4))\n    return areArraysEq(x4, y5);\n  return Object.entries(x4).every(\n    // NOTE: Checking key in y to disambiguate between between missing keys and keys whose value are undefined (CJP)\n    ([key, value]) => key in y5 && areValuesEq(value, y5[key])\n  );\n};\nvar areArraysEq = (xs, ys) => {\n  const xIsArray = Array.isArray(xs);\n  const yIsArray = Array.isArray(ys);\n  if (xIsArray !== yIsArray)\n    return false;\n  if (!(xIsArray || yIsArray))\n    return true;\n  if (xs.length !== ys.length)\n    return false;\n  return xs.every((x4, i2) => areValuesEq(x4, ys[i2]));\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-store/state-mediator.js\nvar StreamTypeValues = (\n  /** @type {StreamTypeValue[]} */\n  Object.values(StreamTypes)\n);\nvar volumeSupported;\nvar volumeSupportPromise = hasVolumeSupportAsync().then(\n  (supported) => {\n    volumeSupported = supported;\n    return volumeSupported;\n  }\n);\nvar prepareStateOwners = (...stateOwners) => __async(null, null, function* () {\n  yield Promise.all(\n    stateOwners.filter((x4) => x4).map((stateOwner) => __async(null, null, function* () {\n      if (!(\"localName\" in stateOwner && stateOwner instanceof GlobalThis.HTMLElement)) {\n        return;\n      }\n      const name = stateOwner.localName;\n      if (!name.includes(\"-\"))\n        return;\n      const classDef = GlobalThis.customElements.get(name);\n      if (classDef && stateOwner instanceof classDef)\n        return;\n      yield GlobalThis.customElements.whenDefined(name);\n      GlobalThis.customElements.upgrade(stateOwner);\n    }))\n  );\n});\nvar stateMediator = {\n  mediaPaused: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.paused) != null ? _a3 : true;\n    },\n    set(value, stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      if (value) {\n        media.pause();\n      } else {\n        (_a3 = media.play()) == null ? void 0 : _a3.catch(() => {\n        });\n      }\n    },\n    mediaEvents: [\"play\", \"playing\", \"pause\", \"emptied\"]\n  },\n  mediaHasPlayed: {\n    // We want to let the user know that the media started playing at any point (`media-has-played`).\n    // Since these propagators are all called when boostrapping state, let's verify this is\n    // a real playing event by checking that 1) there's media and 2) it isn't currently paused.\n    get(stateOwners, event) {\n      const { media } = stateOwners;\n      if (!media)\n        return false;\n      if (!event)\n        return !media.paused;\n      return event.type === \"playing\";\n    },\n    mediaEvents: [\"playing\", \"emptied\"]\n  },\n  mediaEnded: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.ended) != null ? _a3 : false;\n    },\n    mediaEvents: [\"seeked\", \"ended\", \"emptied\"]\n  },\n  mediaPlaybackRate: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.playbackRate) != null ? _a3 : 1;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      if (!Number.isFinite(+value))\n        return;\n      media.playbackRate = +value;\n    },\n    mediaEvents: [\"ratechange\", \"loadstart\"]\n  },\n  mediaMuted: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.muted) != null ? _a3 : false;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      media.muted = value;\n    },\n    mediaEvents: [\"volumechange\"]\n  },\n  mediaVolume: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.volume) != null ? _a3 : 1;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      try {\n        if (value == null) {\n          GlobalThis.localStorage.removeItem(\"media-chrome-pref-volume\");\n        } else {\n          GlobalThis.localStorage.setItem(\n            \"media-chrome-pref-volume\",\n            value.toString()\n          );\n        }\n      } catch (err) {\n      }\n      if (!Number.isFinite(+value))\n        return;\n      media.volume = +value;\n    },\n    mediaEvents: [\"volumechange\"],\n    stateOwnersUpdateHandlers: [\n      (handler, stateOwners) => {\n        const {\n          options: { noVolumePref }\n        } = stateOwners;\n        if (noVolumePref)\n          return;\n        try {\n          const volumePref = GlobalThis.localStorage.getItem(\n            \"media-chrome-pref-volume\"\n          );\n          if (volumePref == null)\n            return;\n          stateMediator.mediaVolume.set(+volumePref, stateOwners);\n          handler(volumePref);\n        } catch (e) {\n          console.debug(\"Error getting volume pref\", e);\n        }\n      }\n    ]\n  },\n  // NOTE: Keeping this roughly equivalent to prior impl to reduce number of changes,\n  // however we may want to model \"derived\" state differently from \"primary\" state\n  // (in this case, derived === mediaVolumeLevel, primary === mediaMuted, mediaVolume) (CJP)\n  mediaVolumeLevel: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      if (typeof (media == null ? void 0 : media.volume) == \"undefined\")\n        return \"high\";\n      if (media.muted || media.volume === 0)\n        return \"off\";\n      if (media.volume < 0.5)\n        return \"low\";\n      if (media.volume < 0.75)\n        return \"medium\";\n      return \"high\";\n    },\n    mediaEvents: [\"volumechange\"]\n  },\n  mediaCurrentTime: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.currentTime) != null ? _a3 : 0;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!media || media.readyState === 0)\n        return;\n      media.currentTime = value;\n    },\n    mediaEvents: [\"timeupdate\", \"loadedmetadata\"]\n  },\n  mediaDuration: {\n    get(stateOwners) {\n      const { media, options: { defaultDuration } = {} } = stateOwners;\n      if (defaultDuration && (!media || !media.duration || Number.isNaN(media.duration) || !Number.isFinite(media.duration))) {\n        return defaultDuration;\n      }\n      return Number.isFinite(media == null ? void 0 : media.duration) ? media.duration : Number.NaN;\n    },\n    mediaEvents: [\"durationchange\", \"loadedmetadata\", \"emptied\"]\n  },\n  mediaLoading: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      return (media == null ? void 0 : media.readyState) < 3;\n    },\n    mediaEvents: [\"waiting\", \"playing\", \"emptied\"]\n  },\n  mediaSeekable: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!((_a3 = media == null ? void 0 : media.seekable) == null ? void 0 : _a3.length))\n        return void 0;\n      const start = media.seekable.start(0);\n      const end = media.seekable.end(media.seekable.length - 1);\n      if (!start && !end)\n        return void 0;\n      return [Number(start.toFixed(3)), Number(end.toFixed(3))];\n    },\n    mediaEvents: [\"loadedmetadata\", \"emptied\", \"progress\", \"seekablechange\"]\n  },\n  mediaBuffered: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      const timeRanges = (\n        /** @type {TimeRanges} */\n        (_a3 = media == null ? void 0 : media.buffered) != null ? _a3 : []\n      );\n      return Array.from(\n        /** @type {ArrayLike<any>} */\n        /** @type unknown */\n        timeRanges\n      ).map((_3, i2) => [\n        Number(timeRanges.start(i2).toFixed(3)),\n        Number(timeRanges.end(i2).toFixed(3))\n      ]);\n    },\n    mediaEvents: [\"progress\", \"emptied\"]\n  },\n  mediaStreamType: {\n    get(stateOwners) {\n      const { media, options: { defaultStreamType } = {} } = stateOwners;\n      const usedDefaultStreamType = [\n        StreamTypes.LIVE,\n        StreamTypes.ON_DEMAND\n      ].includes(\n        /** @type {'live'|'on-demand'} */\n        defaultStreamType\n      ) ? defaultStreamType : void 0;\n      if (!media)\n        return usedDefaultStreamType;\n      const { streamType } = media;\n      if (StreamTypeValues.includes(streamType)) {\n        if (streamType === StreamTypes.UNKNOWN) {\n          return usedDefaultStreamType;\n        }\n        return streamType;\n      }\n      const duration = media.duration;\n      if (duration === Infinity) {\n        return StreamTypes.LIVE;\n      } else if (Number.isFinite(duration)) {\n        return StreamTypes.ON_DEMAND;\n      }\n      return usedDefaultStreamType;\n    },\n    mediaEvents: [\n      \"emptied\",\n      \"durationchange\",\n      \"loadedmetadata\",\n      \"streamtypechange\"\n    ]\n  },\n  mediaTargetLiveWindow: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return Number.NaN;\n      const { targetLiveWindow } = media;\n      const streamType = stateMediator.mediaStreamType.get(stateOwners);\n      if ((targetLiveWindow == null || Number.isNaN(targetLiveWindow)) && streamType === StreamTypes.LIVE) {\n        return 0;\n      }\n      return targetLiveWindow;\n    },\n    mediaEvents: [\n      \"emptied\",\n      \"durationchange\",\n      \"loadedmetadata\",\n      \"streamtypechange\",\n      \"targetlivewindowchange\"\n    ]\n  },\n  mediaTimeIsLive: {\n    get(stateOwners) {\n      const {\n        media,\n        // Default to 10 seconds\n        options: { liveEdgeOffset = 10 } = {}\n      } = stateOwners;\n      if (!media)\n        return false;\n      if (typeof media.liveEdgeStart === \"number\") {\n        if (Number.isNaN(media.liveEdgeStart))\n          return false;\n        return media.currentTime >= media.liveEdgeStart;\n      }\n      const live = stateMediator.mediaStreamType.get(stateOwners) === StreamTypes.LIVE;\n      if (!live)\n        return false;\n      const seekable = media.seekable;\n      if (!seekable)\n        return true;\n      if (!seekable.length)\n        return false;\n      const liveEdgeStart = seekable.end(seekable.length - 1) - liveEdgeOffset;\n      return media.currentTime >= liveEdgeStart;\n    },\n    mediaEvents: [\"playing\", \"timeupdate\", \"progress\", \"waiting\", \"emptied\"]\n  },\n  // Text Tracks modeling\n  mediaSubtitlesList: {\n    get(stateOwners) {\n      return getSubtitleTracks(stateOwners).map(\n        ({ kind, label, language }) => ({ kind, label, language })\n      );\n    },\n    mediaEvents: [\"loadstart\"],\n    textTracksEvents: [\"addtrack\", \"removetrack\"]\n  },\n  mediaSubtitlesShowing: {\n    get(stateOwners) {\n      return getShowingSubtitleTracks(stateOwners).map(\n        ({ kind, label, language }) => ({ kind, label, language })\n      );\n    },\n    mediaEvents: [\"loadstart\"],\n    textTracksEvents: [\"addtrack\", \"removetrack\", \"change\"],\n    stateOwnersUpdateHandlers: [\n      (_handler, stateOwners) => {\n        var _a3, _b;\n        const { media, options } = stateOwners;\n        if (!media)\n          return;\n        const updateDefaultSubtitlesCallback = (event) => {\n          var _a22;\n          if (!options.defaultSubtitles)\n            return;\n          const nonSubsEvent = event && ![TextTrackKinds.CAPTIONS, TextTrackKinds.SUBTITLES].includes(\n            // @ts-ignore\n            (_a22 = event == null ? void 0 : event.track) == null ? void 0 : _a22.kind\n          );\n          if (nonSubsEvent)\n            return;\n          toggleSubtitleTracks(stateOwners, true);\n        };\n        (_a3 = media.textTracks) == null ? void 0 : _a3.addEventListener(\n          \"addtrack\",\n          updateDefaultSubtitlesCallback\n        );\n        (_b = media.textTracks) == null ? void 0 : _b.addEventListener(\n          \"removetrack\",\n          updateDefaultSubtitlesCallback\n        );\n        updateDefaultSubtitlesCallback();\n        return () => {\n          var _a22, _b2;\n          (_a22 = media.textTracks) == null ? void 0 : _a22.removeEventListener(\n            \"addtrack\",\n            updateDefaultSubtitlesCallback\n          );\n          (_b2 = media.textTracks) == null ? void 0 : _b2.removeEventListener(\n            \"removetrack\",\n            updateDefaultSubtitlesCallback\n          );\n        };\n      }\n    ]\n  },\n  mediaChaptersCues: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!media)\n        return [];\n      const [chaptersTrack] = getTextTracksList(media, {\n        kind: TextTrackKinds.CHAPTERS\n      });\n      return Array.from((_a3 = chaptersTrack == null ? void 0 : chaptersTrack.cues) != null ? _a3 : []).map(\n        ({ text, startTime, endTime }) => ({\n          text,\n          startTime,\n          endTime\n        })\n      );\n    },\n    mediaEvents: [\"loadstart\", \"loadedmetadata\"],\n    textTracksEvents: [\"addtrack\", \"removetrack\", \"change\"],\n    stateOwnersUpdateHandlers: [\n      (handler, stateOwners) => {\n        const { media } = stateOwners;\n        if (!media)\n          return;\n        const chaptersTrack = media.querySelector(\n          'track[kind=\"chapters\"][default][src]'\n        );\n        chaptersTrack == null ? void 0 : chaptersTrack.addEventListener(\"load\", handler);\n        return () => {\n          chaptersTrack == null ? void 0 : chaptersTrack.removeEventListener(\"load\", handler);\n        };\n      }\n    ]\n  },\n  // Modeling state tied to root node\n  mediaIsPip: {\n    get(stateOwners) {\n      var _a3, _b;\n      const { media, documentElement } = stateOwners;\n      if (!media || !documentElement)\n        return false;\n      if (!documentElement.pictureInPictureElement)\n        return false;\n      if (documentElement.pictureInPictureElement === media)\n        return true;\n      if (documentElement.pictureInPictureElement instanceof HTMLMediaElement) {\n        if (!((_a3 = media.localName) == null ? void 0 : _a3.includes(\"-\")))\n          return false;\n        return containsComposedNode(\n          media,\n          documentElement.pictureInPictureElement\n        );\n      }\n      if (documentElement.pictureInPictureElement.localName.includes(\"-\")) {\n        let currentRoot = documentElement.pictureInPictureElement.shadowRoot;\n        while (currentRoot == null ? void 0 : currentRoot.pictureInPictureElement) {\n          if (currentRoot.pictureInPictureElement === media)\n            return true;\n          currentRoot = (_b = currentRoot.pictureInPictureElement) == null ? void 0 : _b.shadowRoot;\n        }\n      }\n      return false;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      if (value) {\n        if (!Document2.pictureInPictureEnabled) {\n          console.warn(\"MediaChrome: Picture-in-picture is not enabled\");\n          return;\n        }\n        if (!media.requestPictureInPicture) {\n          console.warn(\n            \"MediaChrome: The current media does not support picture-in-picture\"\n          );\n          return;\n        }\n        const warnNotReady = () => {\n          console.warn(\n            \"MediaChrome: The media is not ready for picture-in-picture. It must have a readyState > 0.\"\n          );\n        };\n        media.requestPictureInPicture().catch((err) => {\n          if (err.code === 11) {\n            if (!media.src) {\n              console.warn(\n                \"MediaChrome: The media is not ready for picture-in-picture. It must have a src set.\"\n              );\n              return;\n            }\n            if (media.readyState === 0 && media.preload === \"none\") {\n              const cleanup = () => {\n                media.removeEventListener(\"loadedmetadata\", tryPip);\n                media.preload = \"none\";\n              };\n              const tryPip = () => {\n                media.requestPictureInPicture().catch(warnNotReady);\n                cleanup();\n              };\n              media.addEventListener(\"loadedmetadata\", tryPip);\n              media.preload = \"metadata\";\n              setTimeout(() => {\n                if (media.readyState === 0)\n                  warnNotReady();\n                cleanup();\n              }, 1e3);\n            } else {\n              throw err;\n            }\n          } else {\n            throw err;\n          }\n        });\n      } else if (Document2.pictureInPictureElement) {\n        Document2.exitPictureInPicture();\n      }\n    },\n    mediaEvents: [\"enterpictureinpicture\", \"leavepictureinpicture\"]\n  },\n  mediaRenditionList: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return [...(_a3 = media == null ? void 0 : media.videoRenditions) != null ? _a3 : []].map((videoRendition) => __spreadValues({}, videoRendition));\n    },\n    mediaEvents: [\"emptied\", \"loadstart\"],\n    videoRenditionsEvents: [\"addrendition\", \"removerendition\"]\n  },\n  /** @TODO Model this as a derived value? (CJP) */\n  mediaRenditionSelected: {\n    get(stateOwners) {\n      var _a3, _b, _c;\n      const { media } = stateOwners;\n      return (_c = (_b = media == null ? void 0 : media.videoRenditions) == null ? void 0 : _b[(_a3 = media.videoRenditions) == null ? void 0 : _a3.selectedIndex]) == null ? void 0 : _c.id;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!(media == null ? void 0 : media.videoRenditions)) {\n        console.warn(\n          \"MediaController: Rendition selection not supported by this media.\"\n        );\n        return;\n      }\n      const renditionId = value;\n      const index = Array.prototype.findIndex.call(\n        media.videoRenditions,\n        (r10) => r10.id == renditionId\n      );\n      if (media.videoRenditions.selectedIndex != index) {\n        media.videoRenditions.selectedIndex = index;\n      }\n    },\n    mediaEvents: [\"emptied\"],\n    videoRenditionsEvents: [\"addrendition\", \"removerendition\", \"change\"]\n  },\n  mediaAudioTrackList: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return [...(_a3 = media == null ? void 0 : media.audioTracks) != null ? _a3 : []];\n    },\n    mediaEvents: [\"emptied\", \"loadstart\"],\n    audioTracksEvents: [\"addtrack\", \"removetrack\"]\n  },\n  mediaAudioTrackEnabled: {\n    get(stateOwners) {\n      var _a3, _b;\n      const { media } = stateOwners;\n      return (_b = [...(_a3 = media == null ? void 0 : media.audioTracks) != null ? _a3 : []].find(\n        (audioTrack) => audioTrack.enabled\n      )) == null ? void 0 : _b.id;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!(media == null ? void 0 : media.audioTracks)) {\n        console.warn(\n          \"MediaChrome: Audio track selection not supported by this media.\"\n        );\n        return;\n      }\n      const audioTrackId = value;\n      for (let track of media.audioTracks) {\n        track.enabled = audioTrackId == track.id;\n      }\n    },\n    mediaEvents: [\"emptied\"],\n    audioTracksEvents: [\"addtrack\", \"removetrack\", \"change\"]\n  },\n  mediaIsFullscreen: {\n    get(stateOwners) {\n      return isFullscreen(stateOwners);\n    },\n    set(value, stateOwners) {\n      if (!value) {\n        exitFullscreen(stateOwners);\n      } else {\n        enterFullscreen(stateOwners);\n      }\n    },\n    // older Safari version may require webkit-specific events\n    rootEvents: [\"fullscreenchange\", \"webkitfullscreenchange\"],\n    // iOS requires webkit-specific events on the video.\n    mediaEvents: [\"webkitbeginfullscreen\", \"webkitendfullscreen\", \"webkitpresentationmodechanged\"]\n  },\n  mediaIsCasting: {\n    // Note this relies on a customized castable-video element.\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!(media == null ? void 0 : media.remote) || ((_a3 = media.remote) == null ? void 0 : _a3.state) === \"disconnected\")\n        return false;\n      return !!media.remote.state;\n    },\n    set(value, stateOwners) {\n      var _a3, _b;\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      if (value && ((_a3 = media.remote) == null ? void 0 : _a3.state) !== \"disconnected\")\n        return;\n      if (!value && ((_b = media.remote) == null ? void 0 : _b.state) !== \"connected\")\n        return;\n      if (typeof media.remote.prompt !== \"function\") {\n        console.warn(\n          \"MediaChrome: Casting is not supported in this environment\"\n        );\n        return;\n      }\n      media.remote.prompt().catch(() => {\n      });\n    },\n    remoteEvents: [\"connect\", \"connecting\", \"disconnect\"]\n  },\n  // NOTE: Newly added state for tracking airplaying\n  mediaIsAirplaying: {\n    // NOTE: Cannot know if airplaying since Safari doesn't fully support HTMLMediaElement::remote yet (e.g. remote::state) (CJP)\n    get() {\n      return false;\n    },\n    set(_value2, stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      if (!(media.webkitShowPlaybackTargetPicker && GlobalThis.WebKitPlaybackTargetAvailabilityEvent)) {\n        console.warn(\n          \"MediaChrome: received a request to select AirPlay but AirPlay is not supported in this environment\"\n        );\n        return;\n      }\n      media.webkitShowPlaybackTargetPicker();\n    },\n    mediaEvents: [\"webkitcurrentplaybacktargetiswirelesschanged\"]\n  },\n  mediaFullscreenUnavailable: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      if (!fullscreenSupported || !hasFullscreenSupport(media))\n        return AvailabilityStates.UNSUPPORTED;\n      return void 0;\n    }\n  },\n  mediaPipUnavailable: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      if (!pipSupported || !hasPipSupport(media))\n        return AvailabilityStates.UNSUPPORTED;\n    }\n  },\n  mediaVolumeUnavailable: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      if (volumeSupported === false || (media == null ? void 0 : media.volume) == void 0) {\n        return AvailabilityStates.UNSUPPORTED;\n      }\n      return void 0;\n    },\n    // NOTE: Slightly different impl here. Added generic support for\n    // \"stateOwnersUpdateHandlers\" since the original impl had to hack around\n    // race conditions. (CJP)\n    stateOwnersUpdateHandlers: [\n      (handler) => {\n        if (volumeSupported == null) {\n          volumeSupportPromise.then(\n            (supported) => handler(supported ? void 0 : AvailabilityStates.UNSUPPORTED)\n          );\n        }\n      }\n    ]\n  },\n  mediaCastUnavailable: {\n    // @ts-ignore\n    get(stateOwners, { availability = \"not-available\" } = {}) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!castSupported || !((_a3 = media == null ? void 0 : media.remote) == null ? void 0 : _a3.state)) {\n        return AvailabilityStates.UNSUPPORTED;\n      }\n      if (availability == null || availability === \"available\")\n        return void 0;\n      return AvailabilityStates.UNAVAILABLE;\n    },\n    stateOwnersUpdateHandlers: [\n      (handler, stateOwners) => {\n        var _a3;\n        const { media } = stateOwners;\n        if (!media)\n          return;\n        const remotePlaybackDisabled = media.disableRemotePlayback || media.hasAttribute(\"disableremoteplayback\");\n        if (!remotePlaybackDisabled) {\n          (_a3 = media == null ? void 0 : media.remote) == null ? void 0 : _a3.watchAvailability((availabilityBool) => {\n            const availability = availabilityBool ? \"available\" : \"not-available\";\n            handler({ availability });\n          }).catch((error) => {\n            if (error.name === \"NotSupportedError\") {\n              handler({ availability: null });\n            } else {\n              handler({ availability: \"not-available\" });\n            }\n          });\n        }\n        return () => {\n          var _a22;\n          (_a22 = media == null ? void 0 : media.remote) == null ? void 0 : _a22.cancelWatchAvailability().catch(() => {\n          });\n        };\n      }\n    ]\n  },\n  mediaAirplayUnavailable: {\n    get(_stateOwners, event) {\n      if (!airplaySupported)\n        return AvailabilityStates.UNSUPPORTED;\n      if ((event == null ? void 0 : event.availability) === \"not-available\") {\n        return AvailabilityStates.UNAVAILABLE;\n      }\n      return void 0;\n    },\n    // NOTE: Keeping this event, as it's still the documented way of monitoring\n    // for AirPlay availability from Apple.\n    // See: https://developer.apple.com/documentation/webkitjs/adding_an_airplay_button_to_your_safari_media_controls#2940021 (CJP)\n    mediaEvents: [\"webkitplaybacktargetavailabilitychanged\"],\n    stateOwnersUpdateHandlers: [\n      (handler, stateOwners) => {\n        var _a3;\n        const { media } = stateOwners;\n        if (!media)\n          return;\n        const remotePlaybackDisabled = media.disableRemotePlayback || media.hasAttribute(\"disableremoteplayback\");\n        if (!remotePlaybackDisabled) {\n          (_a3 = media == null ? void 0 : media.remote) == null ? void 0 : _a3.watchAvailability((availabilityBool) => {\n            const availability = availabilityBool ? \"available\" : \"not-available\";\n            handler({ availability });\n          }).catch((error) => {\n            if (error.name === \"NotSupportedError\") {\n              handler({ availability: null });\n            } else {\n              handler({ availability: \"not-available\" });\n            }\n          });\n        }\n        return () => {\n          var _a22;\n          (_a22 = media == null ? void 0 : media.remote) == null ? void 0 : _a22.cancelWatchAvailability().catch(() => {\n          });\n        };\n      }\n    ]\n  },\n  mediaRenditionUnavailable: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!(media == null ? void 0 : media.videoRenditions)) {\n        return AvailabilityStates.UNSUPPORTED;\n      }\n      if (!((_a3 = media.videoRenditions) == null ? void 0 : _a3.length)) {\n        return AvailabilityStates.UNAVAILABLE;\n      }\n      return void 0;\n    },\n    mediaEvents: [\"emptied\", \"loadstart\"],\n    videoRenditionsEvents: [\"addrendition\", \"removerendition\"]\n  },\n  mediaAudioTrackUnavailable: {\n    get(stateOwners) {\n      var _a3, _b;\n      const { media } = stateOwners;\n      if (!(media == null ? void 0 : media.audioTracks)) {\n        return AvailabilityStates.UNSUPPORTED;\n      }\n      if (((_b = (_a3 = media.audioTracks) == null ? void 0 : _a3.length) != null ? _b : 0) <= 1) {\n        return AvailabilityStates.UNAVAILABLE;\n      }\n      return void 0;\n    },\n    mediaEvents: [\"emptied\", \"loadstart\"],\n    audioTracksEvents: [\"addtrack\", \"removetrack\"]\n  }\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-store/request-map.js\nvar requestMap = {\n  /**\n   * @TODO Consider adding state to `StateMediator` for e.g. `mediaThumbnailCues` and use that for derived state here (CJP)\n   */\n  [MediaUIEvents.MEDIA_PREVIEW_REQUEST](stateMediator2, stateOwners, { detail }) {\n    var _a3, _b, _c;\n    const { media } = stateOwners;\n    const mediaPreviewTime = detail != null ? detail : void 0;\n    let mediaPreviewImage = void 0;\n    let mediaPreviewCoords = void 0;\n    if (media && mediaPreviewTime != null) {\n      const [track] = getTextTracksList(media, {\n        kind: TextTrackKinds.METADATA,\n        label: \"thumbnails\"\n      });\n      const cue = Array.prototype.find.call((_a3 = track == null ? void 0 : track.cues) != null ? _a3 : [], (c4, i2, cs) => {\n        if (i2 === 0)\n          return c4.endTime > mediaPreviewTime;\n        if (i2 === cs.length - 1)\n          return c4.startTime <= mediaPreviewTime;\n        return c4.startTime <= mediaPreviewTime && c4.endTime > mediaPreviewTime;\n      });\n      if (cue) {\n        const base = !/'^(?:[a-z]+:)?\\/\\//i.test(cue.text) ? (\n          /** @type {HTMLTrackElement | null} */\n          (_b = media == null ? void 0 : media.querySelector('track[label=\"thumbnails\"]')) == null ? void 0 : _b.src\n        ) : void 0;\n        const url = new URL(cue.text, base);\n        const previewCoordsStr = new URLSearchParams(url.hash).get(\"#xywh\");\n        mediaPreviewCoords = /** @type {[number, number, number, number]} */\n        previewCoordsStr.split(\",\").map((numStr) => +numStr);\n        mediaPreviewImage = url.href;\n      }\n    }\n    const mediaDuration = stateMediator2.mediaDuration.get(stateOwners);\n    const mediaChaptersCues = stateMediator2.mediaChaptersCues.get(stateOwners);\n    let mediaPreviewChapter = (_c = mediaChaptersCues.find((c4, i2, cs) => {\n      if (i2 === cs.length - 1 && mediaDuration === c4.endTime) {\n        return c4.startTime <= mediaPreviewTime && c4.endTime >= mediaPreviewTime;\n      }\n      return c4.startTime <= mediaPreviewTime && c4.endTime > mediaPreviewTime;\n    })) == null ? void 0 : _c.text;\n    if (detail != null && mediaPreviewChapter == null) {\n      mediaPreviewChapter = \"\";\n    }\n    return {\n      mediaPreviewTime,\n      mediaPreviewImage,\n      mediaPreviewCoords,\n      mediaPreviewChapter\n    };\n  },\n  [MediaUIEvents.MEDIA_PAUSE_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaPaused\";\n    const value = true;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_PLAY_REQUEST](stateMediator2, stateOwners) {\n    var _a3;\n    const key = \"mediaPaused\";\n    const value = false;\n    const live = stateMediator2.mediaStreamType.get(stateOwners) === StreamTypes.LIVE;\n    if (live) {\n      const notDvr = !(stateMediator2.mediaTargetLiveWindow.get(stateOwners) > 0);\n      const liveEdgeTime = (_a3 = stateMediator2.mediaSeekable.get(stateOwners)) == null ? void 0 : _a3[1];\n      if (notDvr && liveEdgeTime) {\n        stateMediator2.mediaCurrentTime.set(liveEdgeTime, stateOwners);\n      }\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_PLAYBACK_RATE_REQUEST](stateMediator2, stateOwners, { detail }) {\n    const key = \"mediaPlaybackRate\";\n    const value = detail;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_MUTE_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaMuted\";\n    const value = true;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_UNMUTE_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaMuted\";\n    const value = false;\n    if (!stateMediator2.mediaVolume.get(stateOwners)) {\n      stateMediator2.mediaVolume.set(0.25, stateOwners);\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_VOLUME_REQUEST](stateMediator2, stateOwners, { detail }) {\n    const key = \"mediaVolume\";\n    const value = detail;\n    if (value && stateMediator2.mediaMuted.get(stateOwners)) {\n      stateMediator2.mediaMuted.set(false, stateOwners);\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_SEEK_REQUEST](stateMediator2, stateOwners, { detail }) {\n    const key = \"mediaCurrentTime\";\n    const value = detail;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_SEEK_TO_LIVE_REQUEST](stateMediator2, stateOwners) {\n    var _a3;\n    const key = \"mediaCurrentTime\";\n    const value = (_a3 = stateMediator2.mediaSeekable.get(stateOwners)) == null ? void 0 : _a3[1];\n    if (!Number.isNaN(Number(value)))\n      return;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  // Text Tracks state change requests\n  [MediaUIEvents.MEDIA_SHOW_SUBTITLES_REQUEST](_stateMediator, stateOwners, { detail }) {\n    var _a3;\n    const { options } = stateOwners;\n    const tracks = getSubtitleTracks(stateOwners);\n    const tracksToUpdate = parseTracks(detail);\n    const preferredLanguage = (_a3 = tracksToUpdate[0]) == null ? void 0 : _a3.language;\n    if (preferredLanguage && !options.noSubtitlesLangPref) {\n      GlobalThis.localStorage.setItem(\n        \"media-chrome-pref-subtitles-lang\",\n        preferredLanguage\n      );\n    }\n    updateTracksModeTo(TextTrackModes.SHOWING, tracks, tracksToUpdate);\n  },\n  [MediaUIEvents.MEDIA_DISABLE_SUBTITLES_REQUEST](_stateMediator, stateOwners, { detail }) {\n    const tracks = getSubtitleTracks(stateOwners);\n    const tracksToUpdate = detail != null ? detail : [];\n    updateTracksModeTo(TextTrackModes.DISABLED, tracks, tracksToUpdate);\n  },\n  [MediaUIEvents.MEDIA_TOGGLE_SUBTITLES_REQUEST](_stateMediator, stateOwners, { detail }) {\n    toggleSubtitleTracks(stateOwners, detail);\n  },\n  // Renditions/Tracks state change requests\n  [MediaUIEvents.MEDIA_RENDITION_REQUEST](stateMediator2, stateOwners, { detail }) {\n    const key = \"mediaRenditionSelected\";\n    const value = detail;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_AUDIO_TRACK_REQUEST](stateMediator2, stateOwners, { detail }) {\n    const key = \"mediaAudioTrackEnabled\";\n    const value = detail;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  // State change requests dependent on root node\n  [MediaUIEvents.MEDIA_ENTER_PIP_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsPip\";\n    const value = true;\n    if (stateMediator2.mediaIsFullscreen.get(stateOwners)) {\n      stateMediator2.mediaIsFullscreen.set(false, stateOwners);\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_EXIT_PIP_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsPip\";\n    const value = false;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_ENTER_FULLSCREEN_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsFullscreen\";\n    const value = true;\n    if (stateMediator2.mediaIsPip.get(stateOwners)) {\n      stateMediator2.mediaIsPip.set(false, stateOwners);\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_EXIT_FULLSCREEN_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsFullscreen\";\n    const value = false;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_ENTER_CAST_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsCasting\";\n    const value = true;\n    if (stateMediator2.mediaIsFullscreen.get(stateOwners)) {\n      stateMediator2.mediaIsFullscreen.set(false, stateOwners);\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_EXIT_CAST_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsCasting\";\n    const value = false;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_AIRPLAY_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsAirplaying\";\n    const value = true;\n    stateMediator2[key].set(value, stateOwners);\n  }\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-store/media-store.js\nvar createMediaStore = ({\n  media,\n  fullscreenElement,\n  documentElement,\n  stateMediator: stateMediator2 = stateMediator,\n  requestMap: requestMap2 = requestMap,\n  options = {},\n  monitorStateOwnersOnlyWithSubscriptions = true\n}) => {\n  const callbacks = [];\n  const stateOwners = {\n    // Spreading options here since folks should not rely on holding onto references\n    // for any app-level logic wrt options.\n    options: __spreadValues({}, options)\n  };\n  let state = Object.freeze({\n    mediaPreviewTime: void 0,\n    mediaPreviewImage: void 0,\n    mediaPreviewCoords: void 0,\n    mediaPreviewChapter: void 0\n  });\n  const updateState = (nextStateDelta) => {\n    if (nextStateDelta == void 0)\n      return;\n    if (areValuesEq(nextStateDelta, state)) {\n      return;\n    }\n    state = Object.freeze(__spreadValues(__spreadValues({}, state), nextStateDelta));\n    callbacks.forEach((cb) => cb(state));\n  };\n  const updateStateFromFacade = () => {\n    const nextState = Object.entries(stateMediator2).reduce(\n      (nextState2, [stateName, { get }]) => {\n        nextState2[stateName] = get(stateOwners);\n        return nextState2;\n      },\n      {}\n    );\n    updateState(nextState);\n  };\n  const stateUpdateHandlers = {};\n  let nextStateOwners = void 0;\n  const updateStateOwners = (nextStateOwnersDelta, nextSubscriberCount) => __async(null, null, function* () {\n    var _a3, _b, _c, _d, _e5, _f, _g, _h, _i2, _j, _k, _l, _m, _n, _o, _p;\n    const pendingUpdate = !!nextStateOwners;\n    nextStateOwners = __spreadValues(__spreadValues(__spreadValues({}, stateOwners), nextStateOwners != null ? nextStateOwners : {}), nextStateOwnersDelta);\n    if (pendingUpdate)\n      return;\n    yield prepareStateOwners(...Object.values(nextStateOwnersDelta));\n    const shouldTeardownFromSubscriberCount = callbacks.length > 0 && nextSubscriberCount === 0 && monitorStateOwnersOnlyWithSubscriptions;\n    const mediaChanged = stateOwners.media !== nextStateOwners.media;\n    const textTracksChanged = ((_a3 = stateOwners.media) == null ? void 0 : _a3.textTracks) !== ((_b = nextStateOwners.media) == null ? void 0 : _b.textTracks);\n    const videoRenditionsChanged = ((_c = stateOwners.media) == null ? void 0 : _c.videoRenditions) !== ((_d = nextStateOwners.media) == null ? void 0 : _d.videoRenditions);\n    const audioTracksChanged = ((_e5 = stateOwners.media) == null ? void 0 : _e5.audioTracks) !== ((_f = nextStateOwners.media) == null ? void 0 : _f.audioTracks);\n    const remoteChanged = ((_g = stateOwners.media) == null ? void 0 : _g.remote) !== ((_h = nextStateOwners.media) == null ? void 0 : _h.remote);\n    const rootNodeChanged = stateOwners.documentElement !== nextStateOwners.documentElement;\n    const teardownMedia = !!stateOwners.media && (mediaChanged || shouldTeardownFromSubscriberCount);\n    const teardownTextTracks = !!((_i2 = stateOwners.media) == null ? void 0 : _i2.textTracks) && (textTracksChanged || shouldTeardownFromSubscriberCount);\n    const teardownVideoRenditions = !!((_j = stateOwners.media) == null ? void 0 : _j.videoRenditions) && (videoRenditionsChanged || shouldTeardownFromSubscriberCount);\n    const teardownAudioTracks = !!((_k = stateOwners.media) == null ? void 0 : _k.audioTracks) && (audioTracksChanged || shouldTeardownFromSubscriberCount);\n    const teardownRemote = !!((_l = stateOwners.media) == null ? void 0 : _l.remote) && (remoteChanged || shouldTeardownFromSubscriberCount);\n    const teardownRootNode = !!stateOwners.documentElement && (rootNodeChanged || shouldTeardownFromSubscriberCount);\n    const teardownSomething = teardownMedia || teardownTextTracks || teardownVideoRenditions || teardownAudioTracks || teardownRemote || teardownRootNode;\n    const shouldSetupFromSubscriberCount = callbacks.length === 0 && nextSubscriberCount === 1 && monitorStateOwnersOnlyWithSubscriptions;\n    const setupMedia = !!nextStateOwners.media && (mediaChanged || shouldSetupFromSubscriberCount);\n    const setupTextTracks = !!((_m = nextStateOwners.media) == null ? void 0 : _m.textTracks) && (textTracksChanged || shouldSetupFromSubscriberCount);\n    const setupVideoRenditions = !!((_n = nextStateOwners.media) == null ? void 0 : _n.videoRenditions) && (videoRenditionsChanged || shouldSetupFromSubscriberCount);\n    const setupAudioTracks = !!((_o = nextStateOwners.media) == null ? void 0 : _o.audioTracks) && (audioTracksChanged || shouldSetupFromSubscriberCount);\n    const setupRemote = !!((_p = nextStateOwners.media) == null ? void 0 : _p.remote) && (remoteChanged || shouldSetupFromSubscriberCount);\n    const setupRootNode = !!nextStateOwners.documentElement && (rootNodeChanged || shouldSetupFromSubscriberCount);\n    const setupSomething = setupMedia || setupTextTracks || setupVideoRenditions || setupAudioTracks || setupRemote || setupRootNode;\n    const somethingToDo = teardownSomething || setupSomething;\n    if (!somethingToDo) {\n      Object.entries(nextStateOwners).forEach(\n        ([stateOwnerName, stateOwner]) => {\n          stateOwners[stateOwnerName] = stateOwner;\n        }\n      );\n      updateStateFromFacade();\n      nextStateOwners = void 0;\n      return;\n    }\n    Object.entries(stateMediator2).forEach(\n      ([\n        stateName,\n        {\n          get,\n          mediaEvents = [],\n          textTracksEvents = [],\n          videoRenditionsEvents = [],\n          audioTracksEvents = [],\n          remoteEvents = [],\n          rootEvents = [],\n          stateOwnersUpdateHandlers = []\n        }\n      ]) => {\n        if (!stateUpdateHandlers[stateName]) {\n          stateUpdateHandlers[stateName] = {};\n        }\n        const handler = (event) => {\n          const nextValue = get(stateOwners, event);\n          updateState({ [stateName]: nextValue });\n        };\n        let prevHandler;\n        prevHandler = stateUpdateHandlers[stateName].mediaEvents;\n        mediaEvents.forEach((eventType) => {\n          if (prevHandler && teardownMedia) {\n            stateOwners.media.removeEventListener(eventType, prevHandler);\n            stateUpdateHandlers[stateName].mediaEvents = void 0;\n          }\n          if (setupMedia) {\n            nextStateOwners.media.addEventListener(eventType, handler);\n            stateUpdateHandlers[stateName].mediaEvents = handler;\n          }\n        });\n        prevHandler = stateUpdateHandlers[stateName].textTracksEvents;\n        textTracksEvents.forEach((eventType) => {\n          var _a22, _b2;\n          if (prevHandler && teardownTextTracks) {\n            (_a22 = stateOwners.media.textTracks) == null ? void 0 : _a22.removeEventListener(\n              eventType,\n              prevHandler\n            );\n            stateUpdateHandlers[stateName].textTracksEvents = void 0;\n          }\n          if (setupTextTracks) {\n            (_b2 = nextStateOwners.media.textTracks) == null ? void 0 : _b2.addEventListener(\n              eventType,\n              handler\n            );\n            stateUpdateHandlers[stateName].textTracksEvents = handler;\n          }\n        });\n        prevHandler = stateUpdateHandlers[stateName].videoRenditionsEvents;\n        videoRenditionsEvents.forEach((eventType) => {\n          var _a22, _b2;\n          if (prevHandler && teardownVideoRenditions) {\n            (_a22 = stateOwners.media.videoRenditions) == null ? void 0 : _a22.removeEventListener(\n              eventType,\n              prevHandler\n            );\n            stateUpdateHandlers[stateName].videoRenditionsEvents = void 0;\n          }\n          if (setupVideoRenditions) {\n            (_b2 = nextStateOwners.media.videoRenditions) == null ? void 0 : _b2.addEventListener(\n              eventType,\n              handler\n            );\n            stateUpdateHandlers[stateName].videoRenditionsEvents = handler;\n          }\n        });\n        prevHandler = stateUpdateHandlers[stateName].audioTracksEvents;\n        audioTracksEvents.forEach((eventType) => {\n          var _a22, _b2;\n          if (prevHandler && teardownAudioTracks) {\n            (_a22 = stateOwners.media.audioTracks) == null ? void 0 : _a22.removeEventListener(\n              eventType,\n              prevHandler\n            );\n            stateUpdateHandlers[stateName].audioTracksEvents = void 0;\n          }\n          if (setupAudioTracks) {\n            (_b2 = nextStateOwners.media.audioTracks) == null ? void 0 : _b2.addEventListener(\n              eventType,\n              handler\n            );\n            stateUpdateHandlers[stateName].audioTracksEvents = handler;\n          }\n        });\n        prevHandler = stateUpdateHandlers[stateName].remoteEvents;\n        remoteEvents.forEach((eventType) => {\n          var _a22, _b2;\n          if (prevHandler && teardownRemote) {\n            (_a22 = stateOwners.media.remote) == null ? void 0 : _a22.removeEventListener(\n              eventType,\n              prevHandler\n            );\n            stateUpdateHandlers[stateName].remoteEvents = void 0;\n          }\n          if (setupRemote) {\n            (_b2 = nextStateOwners.media.remote) == null ? void 0 : _b2.addEventListener(eventType, handler);\n            stateUpdateHandlers[stateName].remoteEvents = handler;\n          }\n        });\n        prevHandler = stateUpdateHandlers[stateName].rootEvents;\n        rootEvents.forEach((eventType) => {\n          if (prevHandler && teardownRootNode) {\n            stateOwners.documentElement.removeEventListener(\n              eventType,\n              prevHandler\n            );\n            stateUpdateHandlers[stateName].rootEvents = void 0;\n          }\n          if (setupRootNode) {\n            nextStateOwners.documentElement.addEventListener(\n              eventType,\n              handler\n            );\n            stateUpdateHandlers[stateName].rootEvents = handler;\n          }\n        });\n        const prevHandlerTeardown = stateUpdateHandlers[stateName].stateOwnersUpdateHandlers;\n        stateOwnersUpdateHandlers.forEach((fn) => {\n          if (prevHandlerTeardown && teardownSomething) {\n            prevHandlerTeardown();\n          }\n          if (setupSomething) {\n            stateUpdateHandlers[stateName].stateOwnersUpdateHandlers = fn(\n              handler,\n              nextStateOwners\n            );\n          }\n        });\n      }\n    );\n    Object.entries(nextStateOwners).forEach(([stateOwnerName, stateOwner]) => {\n      stateOwners[stateOwnerName] = stateOwner;\n    });\n    updateStateFromFacade();\n    nextStateOwners = void 0;\n  });\n  updateStateOwners({ media, fullscreenElement, documentElement, options });\n  return {\n    // note that none of these cases directly interact with the media element, root node, full screen element, etc.\n    // note these \"actions\" could just be the events if we wanted, especially if we normalize on \"detail\" for\n    // any payload-relevant values\n    // This is roughly equivalent to our used to be in our state requests dictionary object, though much of the\n    // \"heavy lifting\" is now moved into the facade `set()`\n    dispatch(action) {\n      const { type, detail } = action;\n      if (requestMap2[type]) {\n        updateState(requestMap2[type](stateMediator2, stateOwners, action));\n        return;\n      }\n      if (type === \"mediaelementchangerequest\") {\n        updateStateOwners({ media: detail });\n      } else if (type === \"fullscreenelementchangerequest\") {\n        updateStateOwners({ fullscreenElement: detail });\n      } else if (type === \"documentelementchangerequest\") {\n        updateStateOwners({ documentElement: detail });\n      } else if (type === \"optionschangerequest\") {\n        Object.entries(detail != null ? detail : {}).forEach(([optionName, optionValue]) => {\n          stateOwners.options[optionName] = optionValue;\n        });\n      }\n    },\n    getState() {\n      return state;\n    },\n    subscribe(callback) {\n      updateStateOwners({}, callbacks.length + 1);\n      callbacks.push(callback);\n      callback(state);\n      return () => {\n        const idx = callbacks.indexOf(callback);\n        if (idx >= 0) {\n          updateStateOwners({}, callbacks.length - 1);\n          callbacks.splice(idx, 1);\n        }\n      };\n    }\n  };\n};\nvar media_store_default = createMediaStore;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-controller.js\nvar __accessCheck4 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet4 = (obj, member, getter) => {\n  __accessCheck4(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd4 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet4 = (obj, member, value, setter) => {\n  __accessCheck4(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod2 = (obj, member, method) => {\n  __accessCheck4(obj, member, \"access private method\");\n  return method;\n};\nvar _hotKeys;\nvar _fullscreenElement;\nvar _mediaStore;\nvar _mediaStateCallback;\nvar _mediaStoreUnsubscribe;\nvar _mediaStateEventHandler;\nvar _setupDefaultStore;\nvar setupDefaultStore_fn;\nvar _keyUpHandler;\nvar keyUpHandler_fn;\nvar _keyDownHandler;\nvar keyDownHandler_fn;\nvar ButtonPressedKeys = [\n  \"ArrowLeft\",\n  \"ArrowRight\",\n  \"Enter\",\n  \" \",\n  \"f\",\n  \"m\",\n  \"k\",\n  \"c\"\n];\nvar DEFAULT_SEEK_OFFSET = 10;\nvar Attributes2 = {\n  DEFAULT_SUBTITLES: \"defaultsubtitles\",\n  DEFAULT_STREAM_TYPE: \"defaultstreamtype\",\n  DEFAULT_DURATION: \"defaultduration\",\n  FULLSCREEN_ELEMENT: \"fullscreenelement\",\n  HOTKEYS: \"hotkeys\",\n  KEYS_USED: \"keysused\",\n  LIVE_EDGE_OFFSET: \"liveedgeoffset\",\n  NO_AUTO_SEEK_TO_LIVE: \"noautoseektolive\",\n  NO_HOTKEYS: \"nohotkeys\",\n  NO_VOLUME_PREF: \"novolumepref\",\n  NO_SUBTITLES_LANG_PREF: \"nosubtitleslangpref\",\n  NO_DEFAULT_STORE: \"nodefaultstore\",\n  KEYBOARD_FORWARD_SEEK_OFFSET: \"keyboardforwardseekoffset\",\n  KEYBOARD_BACKWARD_SEEK_OFFSET: \"keyboardbackwardseekoffset\"\n};\nvar MediaController = class extends MediaContainer {\n  constructor() {\n    super();\n    __privateAdd4(this, _setupDefaultStore);\n    __privateAdd4(this, _keyUpHandler);\n    __privateAdd4(this, _keyDownHandler);\n    __privateAdd4(this, _hotKeys, new AttributeTokenList(this, Attributes2.HOTKEYS));\n    __privateAdd4(this, _fullscreenElement, void 0);\n    __privateAdd4(this, _mediaStore, void 0);\n    __privateAdd4(this, _mediaStateCallback, void 0);\n    __privateAdd4(this, _mediaStoreUnsubscribe, void 0);\n    __privateAdd4(this, _mediaStateEventHandler, (event) => {\n      var _a3;\n      (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch(event);\n    });\n    this.mediaStateReceivers = [];\n    this.associatedElementSubscriptions = /* @__PURE__ */ new Map();\n    this.associateElement(this);\n    let prevState = {};\n    __privateSet4(this, _mediaStateCallback, (nextState) => {\n      Object.entries(nextState).forEach(([stateName, stateValue]) => {\n        if (stateName in prevState && prevState[stateName] === stateValue)\n          return;\n        this.propagateMediaState(stateName, stateValue);\n        const attrName = stateName.toLowerCase();\n        const evt = new GlobalThis.CustomEvent(\n          AttributeToStateChangeEventMap[attrName],\n          { composed: true, detail: stateValue }\n        );\n        this.dispatchEvent(evt);\n      });\n      prevState = nextState;\n    });\n    this.enableHotkeys();\n  }\n  static get observedAttributes() {\n    return super.observedAttributes.concat(\n      Attributes2.NO_HOTKEYS,\n      Attributes2.HOTKEYS,\n      Attributes2.DEFAULT_STREAM_TYPE,\n      Attributes2.DEFAULT_SUBTITLES,\n      Attributes2.DEFAULT_DURATION\n    );\n  }\n  get mediaStore() {\n    return __privateGet4(this, _mediaStore);\n  }\n  set mediaStore(value) {\n    var _a3, _b;\n    if (__privateGet4(this, _mediaStore)) {\n      (_a3 = __privateGet4(this, _mediaStoreUnsubscribe)) == null ? void 0 : _a3.call(this);\n      __privateSet4(this, _mediaStoreUnsubscribe, void 0);\n    }\n    __privateSet4(this, _mediaStore, value);\n    if (!__privateGet4(this, _mediaStore) && !this.hasAttribute(Attributes2.NO_DEFAULT_STORE)) {\n      __privateMethod2(this, _setupDefaultStore, setupDefaultStore_fn).call(this);\n      return;\n    }\n    __privateSet4(this, _mediaStoreUnsubscribe, (_b = __privateGet4(this, _mediaStore)) == null ? void 0 : _b.subscribe(\n      __privateGet4(this, _mediaStateCallback)\n    ));\n  }\n  get fullscreenElement() {\n    var _a3;\n    return (_a3 = __privateGet4(this, _fullscreenElement)) != null ? _a3 : this;\n  }\n  set fullscreenElement(element) {\n    var _a3;\n    if (this.hasAttribute(Attributes2.FULLSCREEN_ELEMENT)) {\n      this.removeAttribute(Attributes2.FULLSCREEN_ELEMENT);\n    }\n    __privateSet4(this, _fullscreenElement, element);\n    (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch({\n      type: \"fullscreenelementchangerequest\",\n      detail: this.fullscreenElement\n    });\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5, _f;\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === Attributes2.NO_HOTKEYS) {\n      if (newValue !== oldValue && newValue === \"\") {\n        if (this.hasAttribute(Attributes2.HOTKEYS)) {\n          console.warn(\n            \"Media Chrome: Both `hotkeys` and `nohotkeys` have been set. All hotkeys will be disabled.\"\n          );\n        }\n        this.disableHotkeys();\n      } else if (newValue !== oldValue && newValue === null) {\n        this.enableHotkeys();\n      }\n    } else if (attrName === Attributes2.HOTKEYS) {\n      __privateGet4(this, _hotKeys).value = newValue;\n    } else if (attrName === Attributes2.DEFAULT_SUBTITLES && newValue !== oldValue) {\n      (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch({\n        type: \"optionschangerequest\",\n        detail: {\n          defaultSubtitles: this.hasAttribute(Attributes2.DEFAULT_SUBTITLES)\n        }\n      });\n    } else if (attrName === Attributes2.DEFAULT_STREAM_TYPE) {\n      (_c = __privateGet4(this, _mediaStore)) == null ? void 0 : _c.dispatch({\n        type: \"optionschangerequest\",\n        detail: {\n          defaultStreamType: (_b = this.getAttribute(Attributes2.DEFAULT_STREAM_TYPE)) != null ? _b : void 0\n        }\n      });\n    } else if (attrName === Attributes2.LIVE_EDGE_OFFSET) {\n      (_d = __privateGet4(this, _mediaStore)) == null ? void 0 : _d.dispatch({\n        type: \"optionschangerequest\",\n        detail: {\n          liveEdgeOffset: this.hasAttribute(Attributes2.LIVE_EDGE_OFFSET) ? +this.getAttribute(Attributes2.LIVE_EDGE_OFFSET) : void 0\n        }\n      });\n    } else if (attrName === Attributes2.FULLSCREEN_ELEMENT) {\n      const el = newValue ? (\n        /** @type {Document|ShadowRoot} */\n        /** @type {unknown} */\n        (_e5 = this.getRootNode()) == null ? void 0 : _e5.getElementById(newValue)\n      ) : void 0;\n      __privateSet4(this, _fullscreenElement, el);\n      (_f = __privateGet4(this, _mediaStore)) == null ? void 0 : _f.dispatch({\n        type: \"fullscreenelementchangerequest\",\n        detail: this.fullscreenElement\n      });\n    }\n  }\n  connectedCallback() {\n    var _a3, _b;\n    if (!__privateGet4(this, _mediaStore) && !this.hasAttribute(Attributes2.NO_DEFAULT_STORE)) {\n      __privateMethod2(this, _setupDefaultStore, setupDefaultStore_fn).call(this);\n    }\n    (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch({\n      type: \"documentelementchangerequest\",\n      detail: Document2\n    });\n    super.connectedCallback();\n    if (__privateGet4(this, _mediaStore) && !__privateGet4(this, _mediaStoreUnsubscribe)) {\n      __privateSet4(this, _mediaStoreUnsubscribe, (_b = __privateGet4(this, _mediaStore)) == null ? void 0 : _b.subscribe(\n        __privateGet4(this, _mediaStateCallback)\n      ));\n    }\n    this.enableHotkeys();\n  }\n  disconnectedCallback() {\n    var _a3, _b, _c, _d;\n    (_a3 = super.disconnectedCallback) == null ? void 0 : _a3.call(this);\n    if (__privateGet4(this, _mediaStore)) {\n      (_b = __privateGet4(this, _mediaStore)) == null ? void 0 : _b.dispatch({\n        type: \"documentelementchangerequest\",\n        detail: void 0\n      });\n      (_c = __privateGet4(this, _mediaStore)) == null ? void 0 : _c.dispatch({\n        type: MediaUIEvents.MEDIA_TOGGLE_SUBTITLES_REQUEST,\n        detail: false\n      });\n    }\n    if (__privateGet4(this, _mediaStoreUnsubscribe)) {\n      (_d = __privateGet4(this, _mediaStoreUnsubscribe)) == null ? void 0 : _d.call(this);\n      __privateSet4(this, _mediaStoreUnsubscribe, void 0);\n    }\n  }\n  /**\n   * @override\n   * @param {HTMLMediaElement} media\n   */\n  mediaSetCallback(media) {\n    var _a3;\n    super.mediaSetCallback(media);\n    (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch({\n      type: \"mediaelementchangerequest\",\n      detail: media\n    });\n    if (!media.hasAttribute(\"tabindex\")) {\n      media.tabIndex = -1;\n    }\n  }\n  /**\n   * @override\n   * @param {HTMLMediaElement} media\n   */\n  mediaUnsetCallback(media) {\n    var _a3;\n    super.mediaUnsetCallback(media);\n    (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch({\n      type: \"mediaelementchangerequest\",\n      detail: void 0\n    });\n  }\n  propagateMediaState(stateName, state) {\n    propagateMediaState(this.mediaStateReceivers, stateName, state);\n  }\n  associateElement(element) {\n    if (!element)\n      return;\n    const { associatedElementSubscriptions } = this;\n    if (associatedElementSubscriptions.has(element))\n      return;\n    const registerMediaStateReceiver = this.registerMediaStateReceiver.bind(this);\n    const unregisterMediaStateReceiver = this.unregisterMediaStateReceiver.bind(this);\n    const unsubscribe = monitorForMediaStateReceivers(\n      element,\n      registerMediaStateReceiver,\n      unregisterMediaStateReceiver\n    );\n    Object.values(MediaUIEvents).forEach((eventName) => {\n      element.addEventListener(eventName, __privateGet4(this, _mediaStateEventHandler));\n    });\n    associatedElementSubscriptions.set(element, unsubscribe);\n  }\n  unassociateElement(element) {\n    if (!element)\n      return;\n    const { associatedElementSubscriptions } = this;\n    if (!associatedElementSubscriptions.has(element))\n      return;\n    const unsubscribe = associatedElementSubscriptions.get(element);\n    unsubscribe();\n    associatedElementSubscriptions.delete(element);\n    Object.values(MediaUIEvents).forEach((eventName) => {\n      element.removeEventListener(eventName, __privateGet4(this, _mediaStateEventHandler));\n    });\n  }\n  registerMediaStateReceiver(el) {\n    if (!el)\n      return;\n    const els = this.mediaStateReceivers;\n    const index = els.indexOf(el);\n    if (index > -1)\n      return;\n    els.push(el);\n    if (__privateGet4(this, _mediaStore)) {\n      Object.entries(__privateGet4(this, _mediaStore).getState()).forEach(\n        ([stateName, stateValue]) => {\n          propagateMediaState([el], stateName, stateValue);\n        }\n      );\n    }\n  }\n  unregisterMediaStateReceiver(el) {\n    const els = this.mediaStateReceivers;\n    const index = els.indexOf(el);\n    if (index < 0)\n      return;\n    els.splice(index, 1);\n  }\n  enableHotkeys() {\n    this.addEventListener(\"keydown\", __privateMethod2(this, _keyDownHandler, keyDownHandler_fn));\n  }\n  disableHotkeys() {\n    this.removeEventListener(\"keydown\", __privateMethod2(this, _keyDownHandler, keyDownHandler_fn));\n    this.removeEventListener(\"keyup\", __privateMethod2(this, _keyUpHandler, keyUpHandler_fn));\n  }\n  get hotkeys() {\n    return __privateGet4(this, _hotKeys);\n  }\n  keyboardShortcutHandler(e) {\n    var _a3, _b, _c, _d, _e5, _f;\n    const keysUsed = ((_d = (_c = (_a3 = e.target.getAttribute(Attributes2.KEYS_USED)) == null ? void 0 : _a3.split(\" \")) != null ? _c : (_b = e.target) == null ? void 0 : _b.keysUsed) != null ? _d : []).map((key) => key === \"Space\" ? \" \" : key).filter(Boolean);\n    if (keysUsed.includes(e.key)) {\n      return;\n    }\n    let eventName, detail, evt;\n    if (__privateGet4(this, _hotKeys).contains(`no${e.key.toLowerCase()}`))\n      return;\n    if (e.key === \" \" && __privateGet4(this, _hotKeys).contains(`nospace`))\n      return;\n    switch (e.key) {\n      case \" \":\n      case \"k\":\n        eventName = __privateGet4(this, _mediaStore).getState().mediaPaused ? MediaUIEvents.MEDIA_PLAY_REQUEST : MediaUIEvents.MEDIA_PAUSE_REQUEST;\n        this.dispatchEvent(\n          new GlobalThis.CustomEvent(eventName, {\n            composed: true,\n            bubbles: true\n          })\n        );\n        break;\n      case \"m\":\n        eventName = this.mediaStore.getState().mediaVolumeLevel === \"off\" ? MediaUIEvents.MEDIA_UNMUTE_REQUEST : MediaUIEvents.MEDIA_MUTE_REQUEST;\n        this.dispatchEvent(\n          new GlobalThis.CustomEvent(eventName, {\n            composed: true,\n            bubbles: true\n          })\n        );\n        break;\n      case \"f\":\n        eventName = this.mediaStore.getState().mediaIsFullscreen ? MediaUIEvents.MEDIA_EXIT_FULLSCREEN_REQUEST : MediaUIEvents.MEDIA_ENTER_FULLSCREEN_REQUEST;\n        this.dispatchEvent(\n          new GlobalThis.CustomEvent(eventName, {\n            composed: true,\n            bubbles: true\n          })\n        );\n        break;\n      case \"c\":\n        this.dispatchEvent(\n          new GlobalThis.CustomEvent(\n            MediaUIEvents.MEDIA_TOGGLE_SUBTITLES_REQUEST,\n            { composed: true, bubbles: true }\n          )\n        );\n        break;\n      case \"ArrowLeft\": {\n        const offsetValue = this.hasAttribute(\n          Attributes2.KEYBOARD_BACKWARD_SEEK_OFFSET\n        ) ? +this.getAttribute(Attributes2.KEYBOARD_BACKWARD_SEEK_OFFSET) : DEFAULT_SEEK_OFFSET;\n        detail = Math.max(\n          ((_e5 = this.mediaStore.getState().mediaCurrentTime) != null ? _e5 : 0) - offsetValue,\n          0\n        );\n        evt = new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_SEEK_REQUEST, {\n          composed: true,\n          bubbles: true,\n          detail\n        });\n        this.dispatchEvent(evt);\n        break;\n      }\n      case \"ArrowRight\": {\n        const offsetValue = this.hasAttribute(\n          Attributes2.KEYBOARD_FORWARD_SEEK_OFFSET\n        ) ? +this.getAttribute(Attributes2.KEYBOARD_FORWARD_SEEK_OFFSET) : DEFAULT_SEEK_OFFSET;\n        detail = Math.max(\n          ((_f = this.mediaStore.getState().mediaCurrentTime) != null ? _f : 0) + offsetValue,\n          0\n        );\n        evt = new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_SEEK_REQUEST, {\n          composed: true,\n          bubbles: true,\n          detail\n        });\n        this.dispatchEvent(evt);\n        break;\n      }\n      default:\n        break;\n    }\n  }\n};\n_hotKeys = /* @__PURE__ */ new WeakMap();\n_fullscreenElement = /* @__PURE__ */ new WeakMap();\n_mediaStore = /* @__PURE__ */ new WeakMap();\n_mediaStateCallback = /* @__PURE__ */ new WeakMap();\n_mediaStoreUnsubscribe = /* @__PURE__ */ new WeakMap();\n_mediaStateEventHandler = /* @__PURE__ */ new WeakMap();\n_setupDefaultStore = /* @__PURE__ */ new WeakSet();\nsetupDefaultStore_fn = function() {\n  var _a3;\n  this.mediaStore = media_store_default({\n    media: this.media,\n    fullscreenElement: this.fullscreenElement,\n    options: {\n      defaultSubtitles: this.hasAttribute(Attributes2.DEFAULT_SUBTITLES),\n      defaultDuration: this.hasAttribute(Attributes2.DEFAULT_DURATION) ? +this.getAttribute(Attributes2.DEFAULT_DURATION) : void 0,\n      defaultStreamType: (\n        /** @type {import('./media-store/state-mediator.js').StreamTypeValue} */\n        (_a3 = this.getAttribute(Attributes2.DEFAULT_STREAM_TYPE)) != null ? _a3 : void 0\n      ),\n      liveEdgeOffset: this.hasAttribute(Attributes2.LIVE_EDGE_OFFSET) ? +this.getAttribute(Attributes2.LIVE_EDGE_OFFSET) : void 0,\n      // NOTE: This wasn't updated if it was changed later. Should it be? (CJP)\n      noVolumePref: this.hasAttribute(Attributes2.NO_VOLUME_PREF),\n      noSubtitlesLangPref: this.hasAttribute(\n        Attributes2.NO_SUBTITLES_LANG_PREF\n      )\n    }\n  });\n};\n_keyUpHandler = /* @__PURE__ */ new WeakSet();\nkeyUpHandler_fn = function(e) {\n  const { key } = e;\n  if (!ButtonPressedKeys.includes(key)) {\n    this.removeEventListener(\"keyup\", __privateMethod2(this, _keyUpHandler, keyUpHandler_fn));\n    return;\n  }\n  this.keyboardShortcutHandler(e);\n};\n_keyDownHandler = /* @__PURE__ */ new WeakSet();\nkeyDownHandler_fn = function(e) {\n  const { metaKey, altKey, key } = e;\n  if (metaKey || altKey || !ButtonPressedKeys.includes(key)) {\n    this.removeEventListener(\"keyup\", __privateMethod2(this, _keyUpHandler, keyUpHandler_fn));\n    return;\n  }\n  if ([\" \", \"ArrowLeft\", \"ArrowRight\"].includes(key) && !(__privateGet4(this, _hotKeys).contains(`no${key.toLowerCase()}`) || key === \" \" && __privateGet4(this, _hotKeys).contains(\"nospace\"))) {\n    e.preventDefault();\n  }\n  this.addEventListener(\"keyup\", __privateMethod2(this, _keyUpHandler, keyUpHandler_fn), { once: true });\n};\nvar MEDIA_UI_ATTRIBUTE_NAMES2 = Object.values(MediaUIAttributes);\nvar MEDIA_UI_PROP_NAMES = Object.values(MediaUIProps);\nvar getMediaUIAttributesFrom = (child) => {\n  var _a3, _b, _c, _d;\n  let { observedAttributes } = child.constructor;\n  if (!observedAttributes && ((_a3 = child.nodeName) == null ? void 0 : _a3.includes(\"-\"))) {\n    GlobalThis.customElements.upgrade(child);\n    ({ observedAttributes } = child.constructor);\n  }\n  const mediaChromeAttributesList = (_d = (_c = (_b = child == null ? void 0 : child.getAttribute) == null ? void 0 : _b.call(child, MediaStateReceiverAttributes.MEDIA_CHROME_ATTRIBUTES)) == null ? void 0 : _c.split) == null ? void 0 : _d.call(_c, /\\s+/);\n  if (!Array.isArray(observedAttributes || mediaChromeAttributesList))\n    return [];\n  return (observedAttributes || mediaChromeAttributesList).filter(\n    (attrName) => MEDIA_UI_ATTRIBUTE_NAMES2.includes(attrName)\n  );\n};\nvar hasMediaUIProps = (mediaStateReceiverCandidate) => {\n  var _a3, _b;\n  if (((_a3 = mediaStateReceiverCandidate.nodeName) == null ? void 0 : _a3.includes(\"-\")) && !!GlobalThis.customElements.get(\n    (_b = mediaStateReceiverCandidate.nodeName) == null ? void 0 : _b.toLowerCase()\n  ) && !(mediaStateReceiverCandidate instanceof GlobalThis.customElements.get(\n    mediaStateReceiverCandidate.nodeName.toLowerCase()\n  ))) {\n    GlobalThis.customElements.upgrade(mediaStateReceiverCandidate);\n  }\n  return MEDIA_UI_PROP_NAMES.some(\n    (propName) => propName in mediaStateReceiverCandidate\n  );\n};\nvar isMediaStateReceiver = (child) => {\n  return hasMediaUIProps(child) || !!getMediaUIAttributesFrom(child).length;\n};\nvar serializeTuple = (tuple) => {\n  var _a3;\n  return (_a3 = tuple == null ? void 0 : tuple.join) == null ? void 0 : _a3.call(tuple, \":\");\n};\nvar CustomAttrSerializer = {\n  [MediaUIAttributes.MEDIA_SUBTITLES_LIST]: stringifyTextTrackList,\n  [MediaUIAttributes.MEDIA_SUBTITLES_SHOWING]: stringifyTextTrackList,\n  [MediaUIAttributes.MEDIA_SEEKABLE]: serializeTuple,\n  [MediaUIAttributes.MEDIA_BUFFERED]: (tuples) => tuples == null ? void 0 : tuples.map(serializeTuple).join(\" \"),\n  [MediaUIAttributes.MEDIA_PREVIEW_COORDS]: (coords) => coords == null ? void 0 : coords.join(\" \"),\n  [MediaUIAttributes.MEDIA_RENDITION_LIST]: stringifyRenditionList,\n  [MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST]: stringifyAudioTrackList\n};\nvar setAttr = (child, attrName, attrValue) => __async(null, null, function* () {\n  var _a3, _b;\n  if (!child.isConnected) {\n    yield delay(0);\n  }\n  if (typeof attrValue === \"boolean\" || attrValue == null) {\n    return setBooleanAttr(child, attrName, attrValue);\n  }\n  if (typeof attrValue === \"number\") {\n    return setNumericAttr(child, attrName, attrValue);\n  }\n  if (typeof attrValue === \"string\") {\n    return setStringAttr(child, attrName, attrValue);\n  }\n  if (Array.isArray(attrValue) && !attrValue.length) {\n    return child.removeAttribute(attrName);\n  }\n  const val = (_b = (_a3 = CustomAttrSerializer[attrName]) == null ? void 0 : _a3.call(CustomAttrSerializer, attrValue)) != null ? _b : attrValue;\n  return child.setAttribute(attrName, val);\n});\nvar isMediaSlotElementDescendant = (el) => {\n  var _a3;\n  return !!((_a3 = el.closest) == null ? void 0 : _a3.call(el, '*[slot=\"media\"]'));\n};\nvar traverseForMediaStateReceivers = (rootNode, mediaStateReceiverCallback) => {\n  if (isMediaSlotElementDescendant(rootNode)) {\n    return;\n  }\n  const traverseForMediaStateReceiversSync = (rootNode2, mediaStateReceiverCallback2) => {\n    var _a3, _b;\n    if (isMediaStateReceiver(rootNode2)) {\n      mediaStateReceiverCallback2(rootNode2);\n    }\n    const { children = [] } = rootNode2 != null ? rootNode2 : {};\n    const shadowChildren = (_b = (_a3 = rootNode2 == null ? void 0 : rootNode2.shadowRoot) == null ? void 0 : _a3.children) != null ? _b : [];\n    const allChildren = [...children, ...shadowChildren];\n    allChildren.forEach(\n      (child) => traverseForMediaStateReceivers(child, mediaStateReceiverCallback2)\n    );\n  };\n  const name = rootNode == null ? void 0 : rootNode.nodeName.toLowerCase();\n  if (name.includes(\"-\") && !isMediaStateReceiver(rootNode)) {\n    GlobalThis.customElements.whenDefined(name).then(() => {\n      traverseForMediaStateReceiversSync(rootNode, mediaStateReceiverCallback);\n    });\n    return;\n  }\n  traverseForMediaStateReceiversSync(rootNode, mediaStateReceiverCallback);\n};\nvar propagateMediaState = (els, stateName, val) => {\n  els.forEach((el) => {\n    if (stateName in el) {\n      el[stateName] = val;\n      return;\n    }\n    const relevantAttrs = getMediaUIAttributesFrom(el);\n    const attrName = stateName.toLowerCase();\n    if (!relevantAttrs.includes(attrName))\n      return;\n    setAttr(el, attrName, val);\n  });\n};\nvar monitorForMediaStateReceivers = (rootNode, registerMediaStateReceiver, unregisterMediaStateReceiver) => {\n  traverseForMediaStateReceivers(rootNode, registerMediaStateReceiver);\n  const registerMediaStateReceiverHandler = (evt) => {\n    var _a3;\n    const el = (_a3 = evt == null ? void 0 : evt.composedPath()[0]) != null ? _a3 : evt.target;\n    registerMediaStateReceiver(el);\n  };\n  const unregisterMediaStateReceiverHandler = (evt) => {\n    var _a3;\n    const el = (_a3 = evt == null ? void 0 : evt.composedPath()[0]) != null ? _a3 : evt.target;\n    unregisterMediaStateReceiver(el);\n  };\n  rootNode.addEventListener(\n    MediaUIEvents.REGISTER_MEDIA_STATE_RECEIVER,\n    registerMediaStateReceiverHandler\n  );\n  rootNode.addEventListener(\n    MediaUIEvents.UNREGISTER_MEDIA_STATE_RECEIVER,\n    unregisterMediaStateReceiverHandler\n  );\n  const mutationCallback = (mutationsList) => {\n    mutationsList.forEach((mutationRecord) => {\n      const {\n        addedNodes = [],\n        removedNodes = [],\n        type,\n        target,\n        attributeName\n      } = mutationRecord;\n      if (type === \"childList\") {\n        Array.prototype.forEach.call(\n          addedNodes,\n          (node) => traverseForMediaStateReceivers(node, registerMediaStateReceiver)\n        );\n        Array.prototype.forEach.call(\n          removedNodes,\n          (node) => traverseForMediaStateReceivers(node, unregisterMediaStateReceiver)\n        );\n      } else if (type === \"attributes\" && attributeName === MediaStateReceiverAttributes.MEDIA_CHROME_ATTRIBUTES) {\n        if (isMediaStateReceiver(target)) {\n          registerMediaStateReceiver(target);\n        } else {\n          unregisterMediaStateReceiver(target);\n        }\n      }\n    });\n  };\n  let prevSlotted = [];\n  const slotChangeHandler = (event) => {\n    const slotEl = (\n      /** @type {HTMLSlotElement} */\n      event.target\n    );\n    if (slotEl.name === \"media\")\n      return;\n    prevSlotted.forEach(\n      (node) => traverseForMediaStateReceivers(node, unregisterMediaStateReceiver)\n    );\n    prevSlotted = /** @type {HTMLElement[]} */\n    [\n      ...slotEl.assignedElements({ flatten: true })\n    ];\n    prevSlotted.forEach(\n      (node) => traverseForMediaStateReceivers(node, registerMediaStateReceiver)\n    );\n  };\n  rootNode.addEventListener(\"slotchange\", slotChangeHandler);\n  const observer2 = new MutationObserver(mutationCallback);\n  observer2.observe(rootNode, {\n    childList: true,\n    attributes: true,\n    subtree: true\n  });\n  const unsubscribe = () => {\n    traverseForMediaStateReceivers(rootNode, unregisterMediaStateReceiver);\n    rootNode.removeEventListener(\"slotchange\", slotChangeHandler);\n    observer2.disconnect();\n    rootNode.removeEventListener(\n      MediaUIEvents.REGISTER_MEDIA_STATE_RECEIVER,\n      registerMediaStateReceiverHandler\n    );\n    rootNode.removeEventListener(\n      MediaUIEvents.UNREGISTER_MEDIA_STATE_RECEIVER,\n      unregisterMediaStateReceiverHandler\n    );\n  };\n  return unsubscribe;\n};\nif (!GlobalThis.customElements.get(\"media-controller\")) {\n  GlobalThis.customElements.define(\"media-controller\", MediaController);\n}\nvar media_controller_default = MediaController;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-button.js\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => {\n  __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck5 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet5 = (obj, member, getter) => {\n  __accessCheck5(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd5 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet5 = (obj, member, value, setter) => {\n  __accessCheck5(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController2;\nvar _clickListener;\nvar _keyupListener;\nvar _keydownListener;\nvar template3 = Document2.createElement(\"template\");\ntemplate3.innerHTML = /*html*/\n`\n<style>\n  :host {\n    font: var(--media-font,\n      var(--media-font-weight, bold)\n      var(--media-font-size, 14px) /\n      var(--media-text-content-height, var(--media-control-height, 24px))\n      var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n    color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n    background: var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .7)));\n    padding: var(--media-button-padding, var(--media-control-padding, 10px));\n    justify-content: var(--media-button-justify-content, center);\n    display: inline-flex;\n    align-items: center;\n    vertical-align: middle;\n    box-sizing: border-box;\n    transition: background .15s linear;\n    pointer-events: auto;\n    cursor: pointer;\n    -webkit-tap-highlight-color: transparent;\n  }\n\n  ${/*\n  Only show outline when keyboard focusing.\n  https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo\n*/\n\"\"}\n  :host(:focus-visible) {\n    box-shadow: inset 0 0 0 2px rgb(27 127 204 / .9);\n    outline: 0;\n  }\n  ${/*\n* hide default focus ring, particularly when using mouse\n*/\n\"\"}\n  :host(:where(:focus)) {\n    box-shadow: none;\n    outline: 0;\n  }\n\n  :host(:hover) {\n    background: var(--media-control-hover-background, rgba(50 50 70 / .7));\n  }\n\n  svg, img, ::slotted(svg), ::slotted(img) {\n    width: var(--media-button-icon-width);\n    height: var(--media-button-icon-height, var(--media-control-height, 24px));\n    transform: var(--media-button-icon-transform);\n    transition: var(--media-button-icon-transition);\n    fill: var(--media-icon-color, var(--media-primary-color, rgb(238 238 238)));\n    vertical-align: middle;\n    max-width: 100%;\n    max-height: 100%;\n    min-width: 100%;\n  }\n</style>\n`;\nvar MediaChromeButton = class extends GlobalThis.HTMLElement {\n  constructor(options = {}) {\n    super();\n    __privateAdd5(this, _mediaController2, void 0);\n    __publicField2(this, \"preventClick\", false);\n    __privateAdd5(this, _clickListener, (e) => {\n      if (!this.preventClick) {\n        this.handleClick(e);\n      }\n    });\n    __privateAdd5(this, _keyupListener, (e) => {\n      const { key } = e;\n      if (!this.keysUsed.includes(key)) {\n        this.removeEventListener(\"keyup\", __privateGet5(this, _keyupListener));\n        return;\n      }\n      if (!this.preventClick) {\n        this.handleClick(e);\n      }\n    });\n    __privateAdd5(this, _keydownListener, (e) => {\n      const { metaKey, altKey, key } = e;\n      if (metaKey || altKey || !this.keysUsed.includes(key)) {\n        this.removeEventListener(\"keyup\", __privateGet5(this, _keyupListener));\n        return;\n      }\n      this.addEventListener(\"keyup\", __privateGet5(this, _keyupListener), { once: true });\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      const buttonHTML = template3.content.cloneNode(true);\n      this.nativeEl = buttonHTML;\n      let slotTemplate20 = options.slotTemplate;\n      if (!slotTemplate20) {\n        slotTemplate20 = Document2.createElement(\"template\");\n        slotTemplate20.innerHTML = `<slot>${options.defaultContent || \"\"}</slot>`;\n      }\n      this.nativeEl.appendChild(slotTemplate20.content.cloneNode(true));\n      this.shadowRoot.appendChild(buttonHTML);\n    }\n  }\n  static get observedAttributes() {\n    return [\"disabled\", MediaStateReceiverAttributes.MEDIA_CONTROLLER];\n  }\n  enable() {\n    this.addEventListener(\"click\", __privateGet5(this, _clickListener));\n    this.addEventListener(\"keydown\", __privateGet5(this, _keydownListener));\n    this.tabIndex = 0;\n  }\n  disable() {\n    this.removeEventListener(\"click\", __privateGet5(this, _clickListener));\n    this.removeEventListener(\"keydown\", __privateGet5(this, _keydownListener));\n    this.removeEventListener(\"keyup\", __privateGet5(this, _keyupListener));\n    this.tabIndex = -1;\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet5(this, _mediaController2)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet5(this, _mediaController2, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet5(this, _mediaController2, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet5(this, _mediaController2)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    } else if (attrName === \"disabled\" && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    style.setProperty(\n      \"display\",\n      `var(--media-control-display, var(--${this.localName}-display, inline-flex))`\n    );\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    }\n    this.setAttribute(\"role\", \"button\");\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet5(\n        this,\n        _mediaController2,\n        // @ts-ignore\n        (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId)\n      );\n      (_c = (_b = __privateGet5(this, _mediaController2)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    this.disable();\n    (_b = (_a3 = __privateGet5(this, _mediaController2)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet5(this, _mediaController2, null);\n  }\n  get keysUsed() {\n    return [\"Enter\", \" \"];\n  }\n  /**\n   * @abstract\n   * @argument {Event} e\n   */\n  handleClick(e) {\n  }\n  // eslint-disable-line\n};\n_mediaController2 = /* @__PURE__ */ new WeakMap();\n_clickListener = /* @__PURE__ */ new WeakMap();\n_keyupListener = /* @__PURE__ */ new WeakMap();\n_keydownListener = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-chrome-button\")) {\n  GlobalThis.customElements.define(\"media-chrome-button\", MediaChromeButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-airplay-button.js\nvar airplayIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M22.13 3H3.87a.87.87 0 0 0-.87.87v13.26a.87.87 0 0 0 .87.87h3.4L9 16H5V5h16v11h-4l1.72 2h3.4a.87.87 0 0 0 .87-.87V3.87a.87.87 0 0 0-.86-.87Zm-8.75 11.44a.5.5 0 0 0-.76 0l-4.91 5.73a.5.5 0 0 0 .38.83h9.82a.501.501 0 0 0 .38-.83l-4.91-5.73Z\"/>\n</svg>\n`;\nvar slotTemplate = Document2.createElement(\"template\");\nslotTemplate.innerHTML = /*html*/\n`\n  <style>\n  :host([${MediaUIAttributes.MEDIA_IS_AIRPLAYING}]) slot:not([name=exit]):not([name=icon]) {\n    display: none !important;\n  }\n\n  ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n  :host(:not([${MediaUIAttributes.MEDIA_IS_AIRPLAYING}])) slot:not([name=enter]):not([name=icon]) {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"enter\">${airplayIcon}</slot>\n    <slot name=\"exit\">${airplayIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel = (el) => {\n  const label = el.mediaIsAirplaying ? verbs.EXIT_AIRPLAY() : verbs.ENTER_AIRPLAY();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaAirplayButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_IS_AIRPLAYING,\n      MediaUIAttributes.MEDIA_AIRPLAY_UNAVAILABLE\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate }, options));\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    updateAriaLabel(this);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_IS_AIRPLAYING) {\n      updateAriaLabel(this);\n    }\n  }\n  /**\n   * @type {boolean} Are we currently airplaying\n   */\n  get mediaIsAirplaying() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_IS_AIRPLAYING);\n  }\n  set mediaIsAirplaying(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_IS_AIRPLAYING, value);\n  }\n  /**\n   * @type {string | undefined} Airplay unavailability state\n   */\n  get mediaAirplayUnavailable() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_AIRPLAY_UNAVAILABLE);\n  }\n  set mediaAirplayUnavailable(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AIRPLAY_UNAVAILABLE, value);\n  }\n  handleClick() {\n    const evt = new GlobalThis.CustomEvent(\n      MediaUIEvents.MEDIA_AIRPLAY_REQUEST,\n      {\n        composed: true,\n        bubbles: true\n      }\n    );\n    this.dispatchEvent(evt);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-airplay-button\")) {\n  GlobalThis.customElements.define(\"media-airplay-button\", MediaAirplayButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/anchor-utils.js\nfunction computePosition({ anchor, floating, placement }) {\n  let rects = getElementRects({ anchor, floating });\n  let { x: x4, y: y5 } = computeCoordsFromPlacement(rects, placement);\n  return { x: x4, y: y5 };\n}\nfunction getElementRects({ anchor, floating }) {\n  return {\n    anchor: getRectRelativeToOffsetParent(anchor, floating.offsetParent),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floating.offsetWidth,\n      height: floating.offsetHeight\n    }\n  };\n}\nfunction getRectRelativeToOffsetParent(element, offsetParent) {\n  let rect = element.getBoundingClientRect();\n  let offsetRect = offsetParent.getBoundingClientRect();\n  return {\n    x: rect.x - offsetRect.x,\n    y: rect.y - offsetRect.y,\n    width: rect.width,\n    height: rect.height\n  };\n}\nfunction computeCoordsFromPlacement({ anchor, floating }, placement) {\n  const alignmentAxis = getSideAxis(placement) === \"x\" ? \"y\" : \"x\";\n  const alignLength = alignmentAxis === \"y\" ? \"height\" : \"width\";\n  const side = getSide(placement);\n  const commonX = anchor.x + anchor.width / 2 - floating.width / 2;\n  const commonY = anchor.y + anchor.height / 2 - floating.height / 2;\n  const commonAlign = anchor[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case \"top\":\n      coords = { x: commonX, y: anchor.y - floating.height };\n      break;\n    case \"bottom\":\n      coords = { x: commonX, y: anchor.y + anchor.height };\n      break;\n    case \"right\":\n      coords = { x: anchor.x + anchor.width, y: commonY };\n      break;\n    case \"left\":\n      coords = { x: anchor.x - floating.width, y: commonY };\n      break;\n    default:\n      coords = { x: anchor.x, y: anchor.y };\n  }\n  switch (placement.split(\"-\")[1]) {\n    case \"start\":\n      coords[alignmentAxis] -= commonAlign;\n      break;\n    case \"end\":\n      coords[alignmentAxis] += commonAlign;\n      break;\n  }\n  return coords;\n}\nfunction getSide(placement) {\n  return placement.split(\"-\")[0];\n}\nfunction getSideAxis(placement) {\n  return [\"top\", \"bottom\"].includes(getSide(placement)) ? \"y\" : \"x\";\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/events.js\nvar __defProp3 = Object.defineProperty;\nvar __defNormalProp3 = (obj, key, value) => key in obj ? __defProp3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField3 = (obj, key, value) => {\n  __defNormalProp3(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar InvokeEvent = class extends Event {\n  /** @param  {EventInit & { action?: string, relatedTarget: Element }} init */\n  constructor(_a3) {\n    var _b = _a3, { action = \"auto\", relatedTarget } = _b, options = __objRest(_b, [\"action\", \"relatedTarget\"]);\n    super(\"invoke\", options);\n    __publicField3(this, \"action\");\n    __publicField3(this, \"relatedTarget\");\n    this.action = action;\n    this.relatedTarget = relatedTarget;\n  }\n};\nvar ToggleEvent = class extends Event {\n  /**\n   * @param  {EventInit & { newState: 'open' | 'closed', oldState: 'open' | 'closed' }} init\n   */\n  constructor(_a3) {\n    var _b = _a3, { newState, oldState } = _b, options = __objRest(_b, [\"newState\", \"oldState\"]);\n    super(\"toggle\", options);\n    __publicField3(this, \"newState\");\n    __publicField3(this, \"oldState\");\n    this.newState = newState;\n    this.oldState = oldState;\n  }\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-menu.js\nvar __defProp4 = Object.defineProperty;\nvar __defNormalProp4 = (obj, key, value) => key in obj ? __defProp4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField4 = (obj, key, value) => {\n  __defNormalProp4(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck6 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet6 = (obj, member, getter) => {\n  __accessCheck6(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd6 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet6 = (obj, member, value, setter) => {\n  __accessCheck6(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod3 = (obj, member, method) => {\n  __accessCheck6(obj, member, \"access private method\");\n  return method;\n};\nvar _mediaController3;\nvar _previouslyFocused;\nvar _invokerElement;\nvar _keysSoFar;\nvar _clearKeysTimeout;\nvar _previousItems;\nvar _mutationObserver;\nvar _isPopover;\nvar _handleSlotChange;\nvar handleSlotChange_fn;\nvar _handleMenuItems;\nvar _updateLayoutStyle;\nvar updateLayoutStyle_fn;\nvar _handleInvoke;\nvar handleInvoke_fn;\nvar _handleOpen;\nvar handleOpen_fn;\nvar _handleClosed;\nvar handleClosed_fn;\nvar _handleBoundsResize;\nvar _handleMenuResize;\nvar _positionMenu;\nvar positionMenu_fn;\nvar _resizeMenu;\nvar resizeMenu_fn;\nvar _handleClick;\nvar handleClick_fn;\nvar _backButtonElement;\nvar backButtonElement_get;\nvar _handleToggle;\nvar handleToggle_fn;\nvar _checkSubmenuHasExpanded;\nvar checkSubmenuHasExpanded_fn;\nvar _handleFocusOut;\nvar handleFocusOut_fn;\nvar _handleKeyDown;\nvar handleKeyDown_fn;\nvar _getItem;\nvar getItem_fn;\nvar _getTabItem;\nvar getTabItem_fn;\nvar _setTabItem;\nvar setTabItem_fn;\nvar _selectItem;\nvar selectItem_fn;\nfunction createMenuItem({ type, text, value, checked }) {\n  const item = Document2.createElement(\"media-chrome-menu-item\");\n  item.type = type != null ? type : \"\";\n  item.part.add(\"menu-item\");\n  if (type)\n    item.part.add(type);\n  item.value = value;\n  item.checked = checked;\n  const label = Document2.createElement(\"span\");\n  label.textContent = text;\n  item.append(label);\n  return item;\n}\nfunction createIndicator(el, name) {\n  let customIndicator = el.querySelector(`:scope > [slot=\"${name}\"]`);\n  if ((customIndicator == null ? void 0 : customIndicator.nodeName) == \"SLOT\")\n    customIndicator = customIndicator.assignedElements({ flatten: true })[0];\n  if (customIndicator) {\n    customIndicator = customIndicator.cloneNode(true);\n    return customIndicator;\n  }\n  let fallbackIndicator = el.shadowRoot.querySelector(`[name=\"${name}\"] > svg`);\n  if (fallbackIndicator) {\n    return fallbackIndicator.cloneNode(true);\n  }\n  return \"\";\n}\nvar template4 = Document2.createElement(\"template\");\ntemplate4.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      font: var(--media-font,\n        var(--media-font-weight, normal)\n        var(--media-font-size, 14px) /\n        var(--media-text-content-height, var(--media-control-height, 24px))\n        var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n      color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n      background: var(--media-menu-background, var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .8))));\n      border-radius: var(--media-menu-border-radius);\n      border: var(--media-menu-border, none);\n      display: var(--media-menu-display, inline-flex);\n      transition: var(--media-menu-transition-in,\n        visibility 0s,\n        opacity .2s ease-out,\n        transform .15s ease-out,\n        left .2s ease-in-out,\n        min-width .2s ease-in-out,\n        min-height .2s ease-in-out\n      ) !important;\n      ${/* ^^Prevent transition override by media-container */\n\"\"}\n      visibility: var(--media-menu-visibility, visible);\n      opacity: var(--media-menu-opacity, 1);\n      max-height: var(--media-menu-max-height, var(--_menu-max-height, 300px));\n      transform: var(--media-menu-transform-in, translateY(0) scale(1));\n      flex-direction: column;\n      ${/* Prevent overflowing a flex container */\n\"\"}\n      min-height: 0;\n      position: relative;\n      box-sizing: border-box;\n    }\n\n    :host([hidden]) {\n      transition: var(--media-menu-transition-out,\n        visibility .15s ease-in,\n        opacity .15s ease-in,\n        transform .15s ease-in\n      ) !important;\n      visibility: var(--media-menu-hidden-visibility, hidden);\n      opacity: var(--media-menu-hidden-opacity, 0);\n      max-height: var(--media-menu-hidden-max-height,\n        var(--media-menu-max-height, var(--_menu-max-height, 300px)));\n      transform: var(--media-menu-transform-out, translateY(2px) scale(.99));\n      pointer-events: none;\n    }\n\n    :host([slot=\"submenu\"]) {\n      background: none;\n      width: 100%;\n      min-height: 100%;\n      position: absolute;\n      bottom: 0;\n      right: -100%;\n    }\n\n    #container {\n      display: flex;\n      flex-direction: column;\n      min-height: 0;\n      transition: transform .2s ease-out;\n      transform: translate(0, 0);\n    }\n\n    #container.has-expanded {\n      transition: transform .2s ease-in;\n      transform: translate(-100%, 0);\n    }\n\n    slot[name=\"header\"] {\n      display: flex;\n      padding: .4em .7em;\n      border-bottom: 1px solid rgb(255 255 255 / .25);\n      cursor: default;\n    }\n\n    slot[name=\"header\"][hidden] {\n      display: none;\n    }\n\n    button[part~=\"back\"] {\n      background: none;\n      color: inherit;\n      border: none;\n      padding: 0;\n      font: inherit;\n      cursor: pointer;\n      outline: inherit;\n      display: inline-flex;\n      align-items: center;\n      cursor: pointer;\n    }\n\n    svg[part~=\"back\"] {\n      height: var(--media-menu-icon-height, var(--media-control-height, 24px));\n      fill: var(--media-icon-color, var(--media-primary-color, rgb(238 238 238)));\n      display: block;\n      margin-right: .5ch;\n    }\n\n    slot:not([name]) {\n      gap: var(--media-menu-gap);\n      flex-direction: var(--media-menu-flex-direction, column);\n      overflow: var(--media-menu-overflow, hidden auto);\n      display: flex;\n      min-height: 0;\n    }\n\n    :host([role=\"menu\"]) slot:not([name]) {\n      padding-block: .4em;\n    }\n\n    slot:not([name])::slotted([role=\"menu\"]) {\n      background: none;\n    }\n\n    media-chrome-menu-item > span {\n      margin-right: .5ch;\n      max-width: var(--media-menu-item-max-width);\n      text-overflow: ellipsis;\n      overflow: hidden;\n    }\n  </style>\n  <style id=\"layout-row\" media=\"width:0\">\n\n    slot[name=\"header\"] {\n      padding: .4em .5em;\n    }\n\n    slot:not([name]) {\n      gap: var(--media-menu-gap, .25em);\n      flex-direction: var(--media-menu-flex-direction, row);\n      padding-inline: .5em;\n    }\n\n    media-chrome-menu-item {\n      padding: .3em .5em;\n    }\n\n    media-chrome-menu-item[aria-checked=\"true\"] {\n      background: var(--media-menu-item-checked-background, rgb(255 255 255 / .2));\n    }\n\n    ${/* In row layout hide the checked indicator completely. */\n\"\"}\n    media-chrome-menu-item::part(checked-indicator) {\n      display: var(--media-menu-item-checked-indicator-display, none);\n    }\n  </style>\n  <div id=\"container\">\n    <slot name=\"header\" hidden>\n      <button part=\"back button\" aria-label=\"Back to previous menu\">\n        <slot name=\"back-icon\">\n          <svg aria-hidden=\"true\" viewBox=\"0 0 20 24\" part=\"back indicator\">\n            <path d=\"m11.88 17.585.742-.669-4.2-4.665 4.2-4.666-.743-.669-4.803 5.335 4.803 5.334Z\"/>\n          </svg>\n        </slot>\n        <slot name=\"title\"></slot>\n      </button>\n    </slot>\n    <slot></slot>\n  </div>\n  <slot name=\"checked-indicator\" hidden></slot>\n`;\nvar Attributes3 = {\n  STYLE: \"style\",\n  HIDDEN: \"hidden\",\n  DISABLED: \"disabled\",\n  ANCHOR: \"anchor\"\n};\nvar MediaChromeMenu = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd6(this, _handleSlotChange);\n    __privateAdd6(this, _updateLayoutStyle);\n    __privateAdd6(this, _handleInvoke);\n    __privateAdd6(this, _handleOpen);\n    __privateAdd6(this, _handleClosed);\n    __privateAdd6(this, _positionMenu);\n    __privateAdd6(this, _resizeMenu);\n    __privateAdd6(this, _handleClick);\n    __privateAdd6(this, _backButtonElement);\n    __privateAdd6(this, _handleToggle);\n    __privateAdd6(this, _checkSubmenuHasExpanded);\n    __privateAdd6(this, _handleFocusOut);\n    __privateAdd6(this, _handleKeyDown);\n    __privateAdd6(this, _getItem);\n    __privateAdd6(this, _getTabItem);\n    __privateAdd6(this, _setTabItem);\n    __privateAdd6(this, _selectItem);\n    __privateAdd6(this, _mediaController3, void 0);\n    __privateAdd6(this, _previouslyFocused, void 0);\n    __privateAdd6(this, _invokerElement, void 0);\n    __privateAdd6(this, _keysSoFar, \"\");\n    __privateAdd6(this, _clearKeysTimeout, null);\n    __privateAdd6(this, _previousItems, /* @__PURE__ */ new Set());\n    __privateAdd6(this, _mutationObserver, void 0);\n    __privateAdd6(this, _isPopover, false);\n    __privateAdd6(this, _handleMenuItems, () => {\n      const previousItems = __privateGet6(this, _previousItems);\n      const currentItems = new Set(this.items);\n      for (const item of previousItems) {\n        if (!currentItems.has(item)) {\n          this.dispatchEvent(new CustomEvent(\"removemenuitem\", { detail: item }));\n        }\n      }\n      for (const item of currentItems) {\n        if (!previousItems.has(item)) {\n          this.dispatchEvent(new CustomEvent(\"addmenuitem\", { detail: item }));\n        }\n      }\n      __privateSet6(this, _previousItems, currentItems);\n    });\n    __privateAdd6(this, _handleBoundsResize, () => {\n      __privateMethod3(this, _positionMenu, positionMenu_fn).call(this, false);\n      __privateMethod3(this, _resizeMenu, resizeMenu_fn).call(this, false);\n    });\n    __privateAdd6(this, _handleMenuResize, () => {\n      __privateMethod3(this, _positionMenu, positionMenu_fn).call(this, false);\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.nativeEl = this.constructor.template.content.cloneNode(true);\n      this.shadowRoot.append(this.nativeEl);\n    }\n    this.container = this.shadowRoot.querySelector(\"#container\");\n    this.defaultSlot = this.shadowRoot.querySelector(\"slot:not([name])\");\n    this.shadowRoot.addEventListener(\"slotchange\", this);\n    __privateSet6(this, _mutationObserver, new MutationObserver(__privateGet6(this, _handleMenuItems)));\n    __privateGet6(this, _mutationObserver).observe(this.defaultSlot, { childList: true });\n  }\n  static get observedAttributes() {\n    return [\n      Attributes3.DISABLED,\n      Attributes3.HIDDEN,\n      Attributes3.STYLE,\n      Attributes3.ANCHOR,\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    ];\n  }\n  static formatMenuItemText(text) {\n    return text;\n  }\n  enable() {\n    this.addEventListener(\"click\", this);\n    this.addEventListener(\"focusout\", this);\n    this.addEventListener(\"keydown\", this);\n    this.addEventListener(\"invoke\", this);\n    this.addEventListener(\"toggle\", this);\n  }\n  disable() {\n    this.removeEventListener(\"click\", this);\n    this.removeEventListener(\"focusout\", this);\n    this.removeEventListener(\"keyup\", this);\n    this.removeEventListener(\"invoke\", this);\n    this.removeEventListener(\"toggle\", this);\n  }\n  handleEvent(event) {\n    switch (event.type) {\n      case \"slotchange\":\n        __privateMethod3(this, _handleSlotChange, handleSlotChange_fn).call(this, event);\n        break;\n      case \"invoke\":\n        __privateMethod3(this, _handleInvoke, handleInvoke_fn).call(this, event);\n        break;\n      case \"click\":\n        __privateMethod3(this, _handleClick, handleClick_fn).call(this, event);\n        break;\n      case \"toggle\":\n        __privateMethod3(this, _handleToggle, handleToggle_fn).call(this, event);\n        break;\n      case \"focusout\":\n        __privateMethod3(this, _handleFocusOut, handleFocusOut_fn).call(this, event);\n        break;\n      case \"keydown\":\n        __privateMethod3(this, _handleKeyDown, handleKeyDown_fn).call(this, event);\n        break;\n    }\n  }\n  connectedCallback() {\n    var _a3, _b;\n    __privateMethod3(this, _updateLayoutStyle, updateLayoutStyle_fn).call(this);\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    }\n    if (!this.role) {\n      this.role = \"menu\";\n    }\n    __privateSet6(this, _mediaController3, getAttributeMediaController(this));\n    (_b = (_a3 = __privateGet6(this, _mediaController3)) == null ? void 0 : _a3.associateElement) == null ? void 0 : _b.call(_a3, this);\n    if (!this.hidden) {\n      observeResize(getBoundsElement(this), __privateGet6(this, _handleBoundsResize));\n      observeResize(this, __privateGet6(this, _handleMenuResize));\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    unobserveResize(getBoundsElement(this), __privateGet6(this, _handleBoundsResize));\n    unobserveResize(this, __privateGet6(this, _handleMenuResize));\n    this.disable();\n    (_b = (_a3 = __privateGet6(this, _mediaController3)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet6(this, _mediaController3, null);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d;\n    if (attrName === Attributes3.HIDDEN && newValue !== oldValue) {\n      if (!__privateGet6(this, _isPopover))\n        __privateSet6(this, _isPopover, true);\n      if (this.hidden) {\n        __privateMethod3(this, _handleClosed, handleClosed_fn).call(this);\n      } else {\n        __privateMethod3(this, _handleOpen, handleOpen_fn).call(this);\n      }\n      this.dispatchEvent(\n        new ToggleEvent({\n          oldState: this.hidden ? \"open\" : \"closed\",\n          newState: this.hidden ? \"closed\" : \"open\",\n          bubbles: true\n        })\n      );\n    } else if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet6(this, _mediaController3)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet6(this, _mediaController3, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet6(this, _mediaController3, getAttributeMediaController(this));\n        (_d = (_c = __privateGet6(this, _mediaController3)) == null ? void 0 : _c.associateElement) == null ? void 0 : _d.call(_c, this);\n      }\n    } else if (attrName === Attributes3.DISABLED && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    } else if (attrName === Attributes3.STYLE && newValue !== oldValue) {\n      __privateMethod3(this, _updateLayoutStyle, updateLayoutStyle_fn).call(this);\n    }\n  }\n  formatMenuItemText(text, data) {\n    return this.constructor.formatMenuItemText(text, data);\n  }\n  get anchor() {\n    return this.getAttribute(\"anchor\");\n  }\n  set anchor(value) {\n    this.setAttribute(\"anchor\", `${value}`);\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    var _a3;\n    if (this.anchor) {\n      return (_a3 = getDocumentOrShadowRoot(this)) == null ? void 0 : _a3.querySelector(`#${this.anchor}`);\n    }\n    return null;\n  }\n  /**\n   * Returns the menu items.\n   */\n  get items() {\n    return (\n      /** @type {MediaChromeMenuItem[] | null} */\n      this.defaultSlot.assignedElements({ flatten: true }).filter(isMenuItem)\n    );\n  }\n  get radioGroupItems() {\n    return this.items.filter((item) => item.role === \"menuitemradio\");\n  }\n  get checkedItems() {\n    return this.items.filter((item) => item.checked);\n  }\n  get value() {\n    var _a3, _b;\n    return (_b = (_a3 = this.checkedItems[0]) == null ? void 0 : _a3.value) != null ? _b : \"\";\n  }\n  set value(newValue) {\n    const item = this.items.find((item2) => item2.value === newValue);\n    if (!item)\n      return;\n    __privateMethod3(this, _selectItem, selectItem_fn).call(this, item);\n  }\n  focus() {\n    __privateSet6(this, _previouslyFocused, getActiveElement());\n    if (this.items.length) {\n      __privateMethod3(this, _setTabItem, setTabItem_fn).call(this, this.items[0]);\n      this.items[0].focus();\n      return;\n    }\n    const focusable = this.querySelector(\n      '[autofocus], [tabindex]:not([tabindex=\"-1\"]), [role=\"menu\"]'\n    );\n    focusable == null ? void 0 : focusable.focus();\n  }\n  handleSelect(event) {\n    var _a3;\n    const item = __privateMethod3(this, _getItem, getItem_fn).call(this, event);\n    if (!item)\n      return;\n    __privateMethod3(this, _selectItem, selectItem_fn).call(this, item, item.type === \"checkbox\");\n    if (__privateGet6(this, _invokerElement) && !this.hidden) {\n      (_a3 = __privateGet6(this, _previouslyFocused)) == null ? void 0 : _a3.focus();\n      this.hidden = true;\n    }\n  }\n  get keysUsed() {\n    return [\n      \"Enter\",\n      \"Escape\",\n      \"Tab\",\n      \" \",\n      \"ArrowDown\",\n      \"ArrowUp\",\n      \"Home\",\n      \"End\"\n    ];\n  }\n  handleMove(event) {\n    var _a3, _b;\n    const { key } = event;\n    const items = this.items;\n    const currentItem = (_b = (_a3 = __privateMethod3(this, _getItem, getItem_fn).call(this, event)) != null ? _a3 : __privateMethod3(this, _getTabItem, getTabItem_fn).call(this)) != null ? _b : items[0];\n    const currentIndex = items.indexOf(currentItem);\n    let index = Math.max(0, currentIndex);\n    if (key === \"ArrowDown\") {\n      index++;\n    } else if (key === \"ArrowUp\") {\n      index--;\n    } else if (event.key === \"Home\") {\n      index = 0;\n    } else if (event.key === \"End\") {\n      index = items.length - 1;\n    }\n    if (index < 0) {\n      index = items.length - 1;\n    }\n    if (index > items.length - 1) {\n      index = 0;\n    }\n    __privateMethod3(this, _setTabItem, setTabItem_fn).call(this, items[index]);\n    items[index].focus();\n  }\n};\n_mediaController3 = /* @__PURE__ */ new WeakMap();\n_previouslyFocused = /* @__PURE__ */ new WeakMap();\n_invokerElement = /* @__PURE__ */ new WeakMap();\n_keysSoFar = /* @__PURE__ */ new WeakMap();\n_clearKeysTimeout = /* @__PURE__ */ new WeakMap();\n_previousItems = /* @__PURE__ */ new WeakMap();\n_mutationObserver = /* @__PURE__ */ new WeakMap();\n_isPopover = /* @__PURE__ */ new WeakMap();\n_handleSlotChange = /* @__PURE__ */ new WeakSet();\nhandleSlotChange_fn = function(event) {\n  const slot = event.target;\n  for (let node of slot.assignedNodes({ flatten: true })) {\n    if (node.nodeType === 3 && node.textContent.trim() === \"\") {\n      node.remove();\n    }\n  }\n  if ([\"header\", \"title\"].includes(slot.name)) {\n    const header = this.shadowRoot.querySelector('slot[name=\"header\"]');\n    header.hidden = slot.assignedNodes().length === 0;\n  }\n  if (!slot.name) {\n    __privateGet6(this, _handleMenuItems).call(this);\n  }\n};\n_handleMenuItems = /* @__PURE__ */ new WeakMap();\n_updateLayoutStyle = /* @__PURE__ */ new WeakSet();\nupdateLayoutStyle_fn = function() {\n  var _a3;\n  const layoutRowStyle = this.shadowRoot.querySelector(\"#layout-row\");\n  const menuLayout = (_a3 = getComputedStyle(this).getPropertyValue(\"--media-menu-layout\")) == null ? void 0 : _a3.trim();\n  layoutRowStyle.setAttribute(\"media\", menuLayout === \"row\" ? \"\" : \"width:0\");\n};\n_handleInvoke = /* @__PURE__ */ new WeakSet();\nhandleInvoke_fn = function(event) {\n  __privateSet6(this, _invokerElement, event.relatedTarget);\n  if (!containsComposedNode(this, event.relatedTarget)) {\n    this.hidden = !this.hidden;\n  }\n};\n_handleOpen = /* @__PURE__ */ new WeakSet();\nhandleOpen_fn = function() {\n  var _a3;\n  (_a3 = __privateGet6(this, _invokerElement)) == null ? void 0 : _a3.setAttribute(\"aria-expanded\", \"true\");\n  requestAnimationFrame(() => __privateMethod3(this, _positionMenu, positionMenu_fn).call(this, false));\n  this.addEventListener(\"transitionend\", () => this.focus(), { once: true });\n  observeResize(getBoundsElement(this), __privateGet6(this, _handleBoundsResize));\n  observeResize(this, __privateGet6(this, _handleMenuResize));\n};\n_handleClosed = /* @__PURE__ */ new WeakSet();\nhandleClosed_fn = function() {\n  var _a3;\n  (_a3 = __privateGet6(this, _invokerElement)) == null ? void 0 : _a3.setAttribute(\"aria-expanded\", \"false\");\n  unobserveResize(getBoundsElement(this), __privateGet6(this, _handleBoundsResize));\n  unobserveResize(this, __privateGet6(this, _handleMenuResize));\n};\n_handleBoundsResize = /* @__PURE__ */ new WeakMap();\n_handleMenuResize = /* @__PURE__ */ new WeakMap();\n_positionMenu = /* @__PURE__ */ new WeakSet();\npositionMenu_fn = function(animate, menuWidth) {\n  if (this.hasAttribute(\"mediacontroller\") && !this.anchor)\n    return;\n  if (this.hidden || !this.anchorElement)\n    return;\n  const { x: x4, y: y5 } = computePosition({\n    anchor: this.anchorElement,\n    floating: this,\n    placement: \"top-start\"\n  });\n  menuWidth != null ? menuWidth : menuWidth = this.offsetWidth;\n  const bounds = getBoundsElement(this);\n  const boundsRect = bounds.getBoundingClientRect();\n  const anchorRect = this.anchorElement.getBoundingClientRect();\n  const right = boundsRect.width - x4 - menuWidth;\n  const bottom = boundsRect.height - y5 - this.offsetHeight;\n  const maxHeight = boundsRect.height - anchorRect.height;\n  const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n  if (!animate) {\n    style.setProperty(\"--media-menu-transition-in\", \"none\");\n  }\n  style.setProperty(\"position\", \"absolute\");\n  style.setProperty(\"right\", `${Math.max(0, right)}px`);\n  style.setProperty(\"bottom\", `${bottom}px`);\n  style.setProperty(\"--_menu-max-height\", `${maxHeight}px`);\n  style.removeProperty(\"--media-menu-transition-in\");\n};\n_resizeMenu = /* @__PURE__ */ new WeakSet();\nresizeMenu_fn = function(animate) {\n  const expandedMenuItem = this.querySelector(\n    '[role=\"menuitem\"][aria-haspopup][aria-expanded=\"true\"]'\n  );\n  const expandedSubmenu = expandedMenuItem == null ? void 0 : expandedMenuItem.querySelector('[role=\"menu\"]');\n  const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n  if (!animate) {\n    style.setProperty(\"--media-menu-transition-in\", \"none\");\n  }\n  if (expandedSubmenu) {\n    const height = expandedSubmenu.offsetHeight;\n    const width = Math.max(\n      expandedSubmenu.offsetWidth,\n      expandedMenuItem.offsetWidth\n    );\n    this.style.setProperty(\"min-width\", `${width}px`);\n    this.style.setProperty(\"min-height\", `${height}px`);\n    __privateMethod3(this, _positionMenu, positionMenu_fn).call(this, animate, width);\n  } else {\n    this.style.removeProperty(\"min-width\");\n    this.style.removeProperty(\"min-height\");\n    __privateMethod3(this, _positionMenu, positionMenu_fn).call(this, animate);\n  }\n  style.removeProperty(\"--media-menu-transition-in\");\n};\n_handleClick = /* @__PURE__ */ new WeakSet();\nhandleClick_fn = function(event) {\n  var _a3;\n  event.stopPropagation();\n  if (event.composedPath().includes(__privateGet6(this, _backButtonElement, backButtonElement_get))) {\n    (_a3 = __privateGet6(this, _previouslyFocused)) == null ? void 0 : _a3.focus();\n    this.hidden = true;\n    return;\n  }\n  const item = __privateMethod3(this, _getItem, getItem_fn).call(this, event);\n  if (!item || item.hasAttribute(\"disabled\"))\n    return;\n  __privateMethod3(this, _setTabItem, setTabItem_fn).call(this, item);\n  this.handleSelect(event);\n};\n_backButtonElement = /* @__PURE__ */ new WeakSet();\nbackButtonElement_get = function() {\n  var _a3;\n  const headerSlot = this.shadowRoot.querySelector('slot[name=\"header\"]');\n  return (_a3 = headerSlot.assignedElements({ flatten: true })) == null ? void 0 : _a3.find((el) => el.part.contains(\"back\") && el.part.contains(\"button\"));\n};\n_handleToggle = /* @__PURE__ */ new WeakSet();\nhandleToggle_fn = function(event) {\n  if (event.target === this)\n    return;\n  __privateMethod3(this, _checkSubmenuHasExpanded, checkSubmenuHasExpanded_fn).call(this);\n  const menuItemsWithSubmenu = Array.from(\n    this.querySelectorAll('[role=\"menuitem\"][aria-haspopup]')\n  );\n  for (const item of menuItemsWithSubmenu) {\n    if (item.invokeTargetElement == event.target)\n      continue;\n    if (event.newState == \"open\" && item.getAttribute(\"aria-expanded\") == \"true\" && !item.invokeTargetElement.hidden) {\n      item.invokeTargetElement.dispatchEvent(\n        new InvokeEvent({ relatedTarget: item })\n      );\n    }\n  }\n  for (const item of menuItemsWithSubmenu) {\n    item.setAttribute(\"aria-expanded\", `${!item.submenuElement.hidden}`);\n  }\n  __privateMethod3(this, _resizeMenu, resizeMenu_fn).call(this, true);\n};\n_checkSubmenuHasExpanded = /* @__PURE__ */ new WeakSet();\ncheckSubmenuHasExpanded_fn = function() {\n  const selector = '[role=\"menuitem\"] > [role=\"menu\"]:not([hidden])';\n  const expandedMenuItem = this.querySelector(selector);\n  this.container.classList.toggle(\"has-expanded\", !!expandedMenuItem);\n};\n_handleFocusOut = /* @__PURE__ */ new WeakSet();\nhandleFocusOut_fn = function(event) {\n  var _a3;\n  if (!containsComposedNode(this, event.relatedTarget)) {\n    if (__privateGet6(this, _isPopover)) {\n      (_a3 = __privateGet6(this, _previouslyFocused)) == null ? void 0 : _a3.focus();\n    }\n    if (__privateGet6(this, _invokerElement) && __privateGet6(this, _invokerElement) !== event.relatedTarget && !this.hidden) {\n      this.hidden = true;\n    }\n  }\n};\n_handleKeyDown = /* @__PURE__ */ new WeakSet();\nhandleKeyDown_fn = function(event) {\n  var _a3, _b, _c, _d, _e5;\n  const { key, ctrlKey, altKey, metaKey } = event;\n  if (ctrlKey || altKey || metaKey) {\n    return;\n  }\n  if (!this.keysUsed.includes(key)) {\n    return;\n  }\n  event.preventDefault();\n  event.stopPropagation();\n  if (key === \"Tab\") {\n    if (__privateGet6(this, _isPopover)) {\n      this.hidden = true;\n      return;\n    }\n    if (event.shiftKey) {\n      (_b = (_a3 = this.previousElementSibling) == null ? void 0 : _a3.focus) == null ? void 0 : _b.call(_a3);\n    } else {\n      (_d = (_c = this.nextElementSibling) == null ? void 0 : _c.focus) == null ? void 0 : _d.call(_c);\n    }\n    this.blur();\n  } else if (key === \"Escape\") {\n    (_e5 = __privateGet6(this, _previouslyFocused)) == null ? void 0 : _e5.focus();\n    if (__privateGet6(this, _isPopover)) {\n      this.hidden = true;\n    }\n  } else if (key === \"Enter\" || key === \" \") {\n    this.handleSelect(event);\n  } else {\n    this.handleMove(event);\n  }\n};\n_getItem = /* @__PURE__ */ new WeakSet();\ngetItem_fn = function(event) {\n  return event.composedPath().find((el) => {\n    return [\"menuitemradio\", \"menuitemcheckbox\"].includes(el.role);\n  });\n};\n_getTabItem = /* @__PURE__ */ new WeakSet();\ngetTabItem_fn = function() {\n  return this.items.find((item) => item.tabIndex === 0);\n};\n_setTabItem = /* @__PURE__ */ new WeakSet();\nsetTabItem_fn = function(tabItem) {\n  for (const item of this.items) {\n    item.tabIndex = item === tabItem ? 0 : -1;\n  }\n};\n_selectItem = /* @__PURE__ */ new WeakSet();\nselectItem_fn = function(item, toggle) {\n  const oldCheckedItems = [...this.checkedItems];\n  if (item.type === \"radio\") {\n    this.radioGroupItems.forEach((el) => el.checked = false);\n  }\n  if (toggle) {\n    item.checked = !item.checked;\n  } else {\n    item.checked = true;\n  }\n  if (this.checkedItems.some((opt, i2) => opt != oldCheckedItems[i2])) {\n    this.dispatchEvent(\n      new Event(\"change\", { bubbles: true, composed: true })\n    );\n  }\n};\n__publicField4(MediaChromeMenu, \"template\", template4);\nfunction isMenuItem(element) {\n  return [\"menuitem\", \"menuitemradio\", \"menuitemcheckbox\"].includes(\n    element == null ? void 0 : element.role\n  );\n}\nfunction getBoundsElement(host) {\n  var _a3;\n  return (_a3 = host.getAttribute(\"bounds\") ? closestComposedNode(host, `#${host.getAttribute(\"bounds\")}`) : getMediaController(host) || host.parentElement) != null ? _a3 : host;\n}\nif (!GlobalThis.customElements.get(\"media-chrome-menu\")) {\n  GlobalThis.customElements.define(\"media-chrome-menu\", MediaChromeMenu);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-audio-track-menu.js\nvar __accessCheck7 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet7 = (obj, member, getter) => {\n  __accessCheck7(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd7 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet7 = (obj, member, value, setter) => {\n  __accessCheck7(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod4 = (obj, member, method) => {\n  __accessCheck7(obj, member, \"access private method\");\n  return method;\n};\nvar _audioTrackList;\nvar _prevState;\nvar _render;\nvar render_fn;\nvar _onChange;\nvar onChange_fn;\nvar MediaAudioTrackMenu = class extends MediaChromeMenu {\n  constructor() {\n    super(...arguments);\n    __privateAdd7(this, _render);\n    __privateAdd7(this, _onChange);\n    __privateAdd7(this, _audioTrackList, []);\n    __privateAdd7(this, _prevState, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_UNAVAILABLE\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED && oldValue !== newValue) {\n      this.value = newValue;\n    } else if (attrName === MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST && oldValue !== newValue) {\n      __privateSet7(this, _audioTrackList, parseAudioTrackList(newValue));\n      __privateMethod4(this, _render, render_fn).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod4(this, _onChange, onChange_fn));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod4(this, _onChange, onChange_fn));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\n      \"media-audio-track-menu-button\"\n    );\n  }\n  get mediaAudioTrackList() {\n    return __privateGet7(this, _audioTrackList);\n  }\n  set mediaAudioTrackList(list) {\n    __privateSet7(this, _audioTrackList, list);\n    __privateMethod4(this, _render, render_fn).call(this);\n  }\n  /**\n   * Get enabled audio track id.\n   * @return {string}\n   */\n  get mediaAudioTrackEnabled() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED);\n  }\n  set mediaAudioTrackEnabled(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED, id);\n  }\n};\n_audioTrackList = /* @__PURE__ */ new WeakMap();\n_prevState = /* @__PURE__ */ new WeakMap();\n_render = /* @__PURE__ */ new WeakSet();\nrender_fn = function() {\n  if (__privateGet7(this, _prevState) === JSON.stringify(this.mediaAudioTrackList))\n    return;\n  __privateSet7(this, _prevState, JSON.stringify(this.mediaAudioTrackList));\n  const audioTrackList = this.mediaAudioTrackList;\n  this.defaultSlot.textContent = \"\";\n  for (const audioTrack of audioTrackList) {\n    const text = this.formatMenuItemText(audioTrack.label, audioTrack);\n    const item = createMenuItem({\n      type: \"radio\",\n      text,\n      value: `${audioTrack.id}`,\n      checked: audioTrack.enabled\n    });\n    item.prepend(createIndicator(this, \"checked-indicator\"));\n    this.defaultSlot.append(item);\n  }\n};\n_onChange = /* @__PURE__ */ new WeakSet();\nonChange_fn = function() {\n  if (this.value == null)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_AUDIO_TRACK_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-audio-track-menu\")) {\n  GlobalThis.customElements.define(\n    \"media-audio-track-menu\",\n    MediaAudioTrackMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-menu-button.js\nvar MediaChromeMenuButton = class extends MediaChromeButton {\n  connectedCallback() {\n    super.connectedCallback();\n    if (this.invokeTargetElement) {\n      this.setAttribute(\"aria-haspopup\", \"menu\");\n    }\n  }\n  get invokeTarget() {\n    return this.getAttribute(\"invoketarget\");\n  }\n  set invokeTarget(value) {\n    this.setAttribute(\"invoketarget\", `${value}`);\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    var _a3;\n    if (this.invokeTarget) {\n      return (_a3 = getDocumentOrShadowRoot(this)) == null ? void 0 : _a3.querySelector(\n        `#${this.invokeTarget}`\n      );\n    }\n    return null;\n  }\n  handleClick() {\n    this.invokeTargetElement.dispatchEvent(\n      new InvokeEvent({ relatedTarget: this })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-chrome-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-chrome-menu-button\",\n    MediaChromeMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-audio-track-menu-button.js\nvar audioTrackIcon = (\n  /*html*/\n  `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M11 17H9.5V7H11v10Zm-3-3H6.5v-4H8v4Zm6-5h-1.5v6H14V9Zm3 7h-1.5V8H17v8Z\"/>\n  <path d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-2 0a8 8 0 1 0-16 0 8 8 0 0 0 16 0Z\"/>\n</svg>`\n);\nvar slotTemplate2 = Document2.createElement(\"template\");\nslotTemplate2.innerHTML = /*html*/\n`\n  <slot name=\"icon\">${audioTrackIcon}</slot>\n`;\nvar MediaAudioTrackMenuButton = class extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_UNAVAILABLE\n    ];\n  }\n  constructor() {\n    super({ slotTemplate: slotTemplate2 });\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"aria-label\", nouns.AUDIO_TRACKS());\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-audio-track-menu\");\n  }\n  /**\n   * Get enabled audio track id.\n   * @return {string}\n   */\n  get mediaAudioTrackEnabled() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED);\n  }\n  set mediaAudioTrackEnabled(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED, id);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-audio-track-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-audio-track-menu-button\",\n    MediaAudioTrackMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-captions-button.js\nvar ccIconOn = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M22.83 5.68a2.58 2.58 0 0 0-2.3-2.5c-3.62-.24-11.44-.24-15.06 0a2.58 2.58 0 0 0-2.3 2.5c-.23 4.21-.23 8.43 0 12.64a2.58 2.58 0 0 0 2.3 2.5c3.62.24 11.44.24 15.06 0a2.58 2.58 0 0 0 2.3-2.5c.23-4.21.23-8.43 0-12.64Zm-11.39 9.45a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.92 3.92 0 0 1 .92-2.77 3.18 3.18 0 0 1 2.43-1 2.94 2.94 0 0 1 2.13.78c.364.359.62.813.74 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.17 1.61 1.61 0 0 0-1.29.58 2.79 2.79 0 0 0-.5 1.89 3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.48 1.48 0 0 0 1-.37 2.1 2.1 0 0 0 .59-1.14l1.4.44a3.23 3.23 0 0 1-1.07 1.69Zm7.22 0a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.88 3.88 0 0 1 .93-2.77 3.14 3.14 0 0 1 2.42-1 3 3 0 0 1 2.16.82 2.8 2.8 0 0 1 .73 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.21 1.61 1.61 0 0 0-1.29.58A2.79 2.79 0 0 0 15 12a3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.44 1.44 0 0 0 1-.37 2.1 2.1 0 0 0 .6-1.15l1.4.44a3.17 3.17 0 0 1-1.1 1.7Z\"/>\n</svg>`;\nvar ccIconOff = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M17.73 14.09a1.4 1.4 0 0 1-1 .37 1.579 1.579 0 0 1-1.27-.58A3 3 0 0 1 15 12a2.8 2.8 0 0 1 .5-1.85 1.63 1.63 0 0 1 1.29-.57 1.47 1.47 0 0 1 1.51 1.2l1.43-.34A2.89 2.89 0 0 0 19 9.07a3 3 0 0 0-2.14-.78 3.14 3.14 0 0 0-2.42 1 3.91 3.91 0 0 0-.93 2.78 3.74 3.74 0 0 0 .92 2.66 3.07 3.07 0 0 0 2.34 1 3.07 3.07 0 0 0 1.91-.57 3.17 3.17 0 0 0 1.07-1.74l-1.4-.45c-.083.43-.3.822-.62 1.12Zm-7.22 0a1.43 1.43 0 0 1-1 .37 1.58 1.58 0 0 1-1.27-.58A3 3 0 0 1 7.76 12a2.8 2.8 0 0 1 .5-1.85 1.63 1.63 0 0 1 1.29-.57 1.47 1.47 0 0 1 1.51 1.2l1.43-.34a2.81 2.81 0 0 0-.74-1.32 2.94 2.94 0 0 0-2.13-.78 3.18 3.18 0 0 0-2.43 1 4 4 0 0 0-.92 2.78 3.74 3.74 0 0 0 .92 2.66 3.07 3.07 0 0 0 2.34 1 3.07 3.07 0 0 0 1.91-.57 3.23 3.23 0 0 0 1.07-1.74l-1.4-.45a2.06 2.06 0 0 1-.6 1.07Zm12.32-8.41a2.59 2.59 0 0 0-2.3-2.51C18.72 3.05 15.86 3 13 3c-2.86 0-5.72.05-7.53.17a2.59 2.59 0 0 0-2.3 2.51c-.23 4.207-.23 8.423 0 12.63a2.57 2.57 0 0 0 2.3 2.5c1.81.13 4.67.19 7.53.19 2.86 0 5.72-.06 7.53-.19a2.57 2.57 0 0 0 2.3-2.5c.23-4.207.23-8.423 0-12.63Zm-1.49 12.53a1.11 1.11 0 0 1-.91 1.11c-1.67.11-4.45.18-7.43.18-2.98 0-5.76-.07-7.43-.18a1.11 1.11 0 0 1-.91-1.11c-.21-4.14-.21-8.29 0-12.43a1.11 1.11 0 0 1 .91-1.11C7.24 4.56 10 4.49 13 4.49s5.76.07 7.43.18a1.11 1.11 0 0 1 .91 1.11c.21 4.14.21 8.29 0 12.43Z\"/>\n</svg>`;\nvar slotTemplate3 = Document2.createElement(\"template\");\nslotTemplate3.innerHTML = /*html*/\n`\n  <style>\n    :host([aria-checked=\"true\"]) slot[name=off] {\n      display: none !important;\n    }\n\n    ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n    :host(:not([aria-checked=\"true\"])) slot[name=on] {\n      display: none !important;\n    }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"on\">${ccIconOn}</slot>\n    <slot name=\"off\">${ccIconOff}</slot>\n  </slot>\n`;\nvar updateAriaChecked = (el) => {\n  el.setAttribute(\"aria-checked\", areSubsOn(el));\n};\nvar MediaCaptionsButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_SUBTITLES_LIST,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate3 }, options));\n    this._captionsReady = false;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"role\", \"switch\");\n    this.setAttribute(\"aria-label\", nouns.CLOSED_CAPTIONS());\n    updateAriaChecked(this);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_SHOWING) {\n      updateAriaChecked(this);\n    }\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesList() {\n    return getSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST);\n  }\n  set mediaSubtitlesList(list) {\n    setSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST, list);\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesShowing() {\n    return getSubtitlesListAttr(\n      this,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    );\n  }\n  set mediaSubtitlesShowing(list) {\n    setSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_SHOWING, list);\n  }\n  handleClick() {\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_TOGGLE_SUBTITLES_REQUEST, {\n        composed: true,\n        bubbles: true\n      })\n    );\n  }\n};\nvar getSubtitlesListAttr = (el, attrName) => {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal ? parseTextTracksStr(attrVal) : [];\n};\nvar setSubtitlesListAttr = (el, attrName, list) => {\n  if (!(list == null ? void 0 : list.length)) {\n    el.removeAttribute(attrName);\n    return;\n  }\n  const newValStr = stringifyTextTrackList(list);\n  const oldVal = el.getAttribute(attrName);\n  if (oldVal === newValStr)\n    return;\n  el.setAttribute(attrName, newValStr);\n};\nif (!GlobalThis.customElements.get(\"media-captions-button\")) {\n  GlobalThis.customElements.define(\n    \"media-captions-button\",\n    MediaCaptionsButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-captions-menu.js\nvar __defProp5 = Object.defineProperty;\nvar __defNormalProp5 = (obj, key, value) => key in obj ? __defProp5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField5 = (obj, key, value) => {\n  __defNormalProp5(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck8 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet8 = (obj, member, getter) => {\n  __accessCheck8(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd8 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet8 = (obj, member, value, setter) => {\n  __accessCheck8(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod5 = (obj, member, method) => {\n  __accessCheck8(obj, member, \"access private method\");\n  return method;\n};\nvar _prevState2;\nvar _render2;\nvar render_fn2;\nvar _onChange2;\nvar onChange_fn2;\nvar ccIcon = (\n  /*html*/\n  `\n  <svg aria-hidden=\"true\" viewBox=\"0 0 26 24\" part=\"captions-indicator indicator\">\n    <path d=\"M22.83 5.68a2.58 2.58 0 0 0-2.3-2.5c-3.62-.24-11.44-.24-15.06 0a2.58 2.58 0 0 0-2.3 2.5c-.23 4.21-.23 8.43 0 12.64a2.58 2.58 0 0 0 2.3 2.5c3.62.24 11.44.24 15.06 0a2.58 2.58 0 0 0 2.3-2.5c.23-4.21.23-8.43 0-12.64Zm-11.39 9.45a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.92 3.92 0 0 1 .92-2.77 3.18 3.18 0 0 1 2.43-1 2.94 2.94 0 0 1 2.13.78c.364.359.62.813.74 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.17 1.61 1.61 0 0 0-1.29.58 2.79 2.79 0 0 0-.5 1.89 3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.48 1.48 0 0 0 1-.37 2.1 2.1 0 0 0 .59-1.14l1.4.44a3.23 3.23 0 0 1-1.07 1.69Zm7.22 0a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.88 3.88 0 0 1 .93-2.77 3.14 3.14 0 0 1 2.42-1 3 3 0 0 1 2.16.82 2.8 2.8 0 0 1 .73 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.21 1.61 1.61 0 0 0-1.29.58A2.79 2.79 0 0 0 15 12a3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.44 1.44 0 0 0 1-.37 2.1 2.1 0 0 0 .6-1.15l1.4.44a3.17 3.17 0 0 1-1.1 1.7Z\"/>\n  </svg>`\n);\nvar template5 = Document2.createElement(\"template\");\ntemplate5.innerHTML = MediaChromeMenu.template.innerHTML + /*html*/\n`\n  <slot name=\"captions-indicator\" hidden>${ccIcon}</slot>`;\nvar MediaCaptionsMenu = class extends MediaChromeMenu {\n  constructor() {\n    super(...arguments);\n    __privateAdd8(this, _render2);\n    __privateAdd8(this, _onChange2);\n    __privateAdd8(this, _prevState2, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_SUBTITLES_LIST,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_LIST && oldValue !== newValue) {\n      __privateMethod5(this, _render2, render_fn2).call(this);\n    } else if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_SHOWING && oldValue !== newValue) {\n      this.value = newValue;\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod5(this, _onChange2, onChange_fn2));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod5(this, _onChange2, onChange_fn2));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\"media-captions-menu-button\");\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesList() {\n    return getSubtitlesListAttr2(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST);\n  }\n  set mediaSubtitlesList(list) {\n    setSubtitlesListAttr2(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST, list);\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesShowing() {\n    return getSubtitlesListAttr2(\n      this,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    );\n  }\n  set mediaSubtitlesShowing(list) {\n    setSubtitlesListAttr2(this, MediaUIAttributes.MEDIA_SUBTITLES_SHOWING, list);\n  }\n};\n_prevState2 = /* @__PURE__ */ new WeakMap();\n_render2 = /* @__PURE__ */ new WeakSet();\nrender_fn2 = function() {\n  var _a3;\n  if (__privateGet8(this, _prevState2) === JSON.stringify(this.mediaSubtitlesList))\n    return;\n  __privateSet8(this, _prevState2, JSON.stringify(this.mediaSubtitlesList));\n  this.defaultSlot.textContent = \"\";\n  const isOff = !this.value;\n  const item = createMenuItem({\n    type: \"radio\",\n    text: this.formatMenuItemText(\"Off\"),\n    value: \"off\",\n    checked: isOff\n  });\n  item.prepend(createIndicator(this, \"checked-indicator\"));\n  this.defaultSlot.append(item);\n  const subtitlesList = this.mediaSubtitlesList;\n  for (const subs of subtitlesList) {\n    const item2 = createMenuItem({\n      type: \"radio\",\n      text: this.formatMenuItemText(subs.label, subs),\n      value: formatTextTrackObj(subs),\n      checked: this.value == formatTextTrackObj(subs)\n    });\n    item2.prepend(createIndicator(this, \"checked-indicator\"));\n    const type = (_a3 = subs.kind) != null ? _a3 : \"subs\";\n    if (type === \"captions\") {\n      item2.append(createIndicator(this, \"captions-indicator\"));\n    }\n    this.defaultSlot.append(item2);\n  }\n};\n_onChange2 = /* @__PURE__ */ new WeakSet();\nonChange_fn2 = function() {\n  const showingSubs = this.mediaSubtitlesShowing;\n  const showingSubsStr = this.getAttribute(\n    MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n  );\n  const localStateChange = this.value !== showingSubsStr;\n  if ((showingSubs == null ? void 0 : showingSubs.length) && localStateChange) {\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(\n        MediaUIEvents.MEDIA_DISABLE_SUBTITLES_REQUEST,\n        {\n          composed: true,\n          bubbles: true,\n          detail: showingSubs\n        }\n      )\n    );\n  }\n  if (!this.value || !localStateChange)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_SHOW_SUBTITLES_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\n__publicField5(MediaCaptionsMenu, \"template\", template5);\nvar getSubtitlesListAttr2 = (el, attrName) => {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal ? parseTextTracksStr(attrVal) : [];\n};\nvar setSubtitlesListAttr2 = (el, attrName, list) => {\n  if (!(list == null ? void 0 : list.length)) {\n    el.removeAttribute(attrName);\n    return;\n  }\n  const newValStr = stringifyTextTrackList(list);\n  const oldVal = el.getAttribute(attrName);\n  if (oldVal === newValStr)\n    return;\n  el.setAttribute(attrName, newValStr);\n};\nif (!GlobalThis.customElements.get(\"media-captions-menu\")) {\n  GlobalThis.customElements.define(\"media-captions-menu\", MediaCaptionsMenu);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-captions-menu-button.js\nvar ccIconOn2 = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M22.83 5.68a2.58 2.58 0 0 0-2.3-2.5c-3.62-.24-11.44-.24-15.06 0a2.58 2.58 0 0 0-2.3 2.5c-.23 4.21-.23 8.43 0 12.64a2.58 2.58 0 0 0 2.3 2.5c3.62.24 11.44.24 15.06 0a2.58 2.58 0 0 0 2.3-2.5c.23-4.21.23-8.43 0-12.64Zm-11.39 9.45a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.92 3.92 0 0 1 .92-2.77 3.18 3.18 0 0 1 2.43-1 2.94 2.94 0 0 1 2.13.78c.364.359.62.813.74 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.17 1.61 1.61 0 0 0-1.29.58 2.79 2.79 0 0 0-.5 1.89 3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.48 1.48 0 0 0 1-.37 2.1 2.1 0 0 0 .59-1.14l1.4.44a3.23 3.23 0 0 1-1.07 1.69Zm7.22 0a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.88 3.88 0 0 1 .93-2.77 3.14 3.14 0 0 1 2.42-1 3 3 0 0 1 2.16.82 2.8 2.8 0 0 1 .73 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.21 1.61 1.61 0 0 0-1.29.58A2.79 2.79 0 0 0 15 12a3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.44 1.44 0 0 0 1-.37 2.1 2.1 0 0 0 .6-1.15l1.4.44a3.17 3.17 0 0 1-1.1 1.7Z\"/>\n</svg>`;\nvar ccIconOff2 = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M17.73 14.09a1.4 1.4 0 0 1-1 .37 1.579 1.579 0 0 1-1.27-.58A3 3 0 0 1 15 12a2.8 2.8 0 0 1 .5-1.85 1.63 1.63 0 0 1 1.29-.57 1.47 1.47 0 0 1 1.51 1.2l1.43-.34A2.89 2.89 0 0 0 19 9.07a3 3 0 0 0-2.14-.78 3.14 3.14 0 0 0-2.42 1 3.91 3.91 0 0 0-.93 2.78 3.74 3.74 0 0 0 .92 2.66 3.07 3.07 0 0 0 2.34 1 3.07 3.07 0 0 0 1.91-.57 3.17 3.17 0 0 0 1.07-1.74l-1.4-.45c-.083.43-.3.822-.62 1.12Zm-7.22 0a1.43 1.43 0 0 1-1 .37 1.58 1.58 0 0 1-1.27-.58A3 3 0 0 1 7.76 12a2.8 2.8 0 0 1 .5-1.85 1.63 1.63 0 0 1 1.29-.57 1.47 1.47 0 0 1 1.51 1.2l1.43-.34a2.81 2.81 0 0 0-.74-1.32 2.94 2.94 0 0 0-2.13-.78 3.18 3.18 0 0 0-2.43 1 4 4 0 0 0-.92 2.78 3.74 3.74 0 0 0 .92 2.66 3.07 3.07 0 0 0 2.34 1 3.07 3.07 0 0 0 1.91-.57 3.23 3.23 0 0 0 1.07-1.74l-1.4-.45a2.06 2.06 0 0 1-.6 1.07Zm12.32-8.41a2.59 2.59 0 0 0-2.3-2.51C18.72 3.05 15.86 3 13 3c-2.86 0-5.72.05-7.53.17a2.59 2.59 0 0 0-2.3 2.51c-.23 4.207-.23 8.423 0 12.63a2.57 2.57 0 0 0 2.3 2.5c1.81.13 4.67.19 7.53.19 2.86 0 5.72-.06 7.53-.19a2.57 2.57 0 0 0 2.3-2.5c.23-4.207.23-8.423 0-12.63Zm-1.49 12.53a1.11 1.11 0 0 1-.91 1.11c-1.67.11-4.45.18-7.43.18-2.98 0-5.76-.07-7.43-.18a1.11 1.11 0 0 1-.91-1.11c-.21-4.14-.21-8.29 0-12.43a1.11 1.11 0 0 1 .91-1.11C7.24 4.56 10 4.49 13 4.49s5.76.07 7.43.18a1.11 1.11 0 0 1 .91 1.11c.21 4.14.21 8.29 0 12.43Z\"/>\n</svg>`;\nvar slotTemplate4 = Document2.createElement(\"template\");\nslotTemplate4.innerHTML = /*html*/\n`\n  <style>\n    :host([aria-checked=\"true\"]) slot[name=off] {\n      display: none !important;\n    }\n\n    ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n    :host(:not([aria-checked=\"true\"])) slot[name=on] {\n      display: none !important;\n    }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"on\">${ccIconOn2}</slot>\n    <slot name=\"off\">${ccIconOff2}</slot>\n  </slot>\n`;\nvar updateAriaChecked2 = (el) => {\n  el.setAttribute(\"aria-checked\", areSubsOn(el));\n};\nvar MediaCaptionsMenuButton = class extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_SUBTITLES_LIST,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate4 }, options));\n    this._captionsReady = false;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"aria-label\", nouns.CLOSED_CAPTIONS());\n    updateAriaChecked2(this);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_SHOWING) {\n      updateAriaChecked2(this);\n    }\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-captions-menu\");\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesList() {\n    return getSubtitlesListAttr3(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST);\n  }\n  set mediaSubtitlesList(list) {\n    setSubtitlesListAttr3(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST, list);\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesShowing() {\n    return getSubtitlesListAttr3(\n      this,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    );\n  }\n  set mediaSubtitlesShowing(list) {\n    setSubtitlesListAttr3(this, MediaUIAttributes.MEDIA_SUBTITLES_SHOWING, list);\n  }\n};\nvar getSubtitlesListAttr3 = (el, attrName) => {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal ? parseTextTracksStr(attrVal) : [];\n};\nvar setSubtitlesListAttr3 = (el, attrName, list) => {\n  if (!(list == null ? void 0 : list.length)) {\n    el.removeAttribute(attrName);\n    return;\n  }\n  const newValStr = stringifyTextTrackList(list);\n  const oldVal = el.getAttribute(attrName);\n  if (oldVal === newValStr)\n    return;\n  el.setAttribute(attrName, newValStr);\n};\nif (!GlobalThis.customElements.get(\"media-captions-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-captions-menu-button\",\n    MediaCaptionsMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-cast-button.js\nvar enterIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\"><g><path class=\"cast_caf_icon_arch0\" d=\"M1,18 L1,21 L4,21 C4,19.3 2.66,18 1,18 L1,18 Z\"/><path class=\"cast_caf_icon_arch1\" d=\"M1,14 L1,16 C3.76,16 6,18.2 6,21 L8,21 C8,17.13 4.87,14 1,14 L1,14 Z\"/><path class=\"cast_caf_icon_arch2\" d=\"M1,10 L1,12 C5.97,12 10,16.0 10,21 L12,21 C12,14.92 7.07,10 1,10 L1,10 Z\"/><path class=\"cast_caf_icon_box\" d=\"M21,3 L3,3 C1.9,3 1,3.9 1,5 L1,8 L3,8 L3,5 L21,5 L21,19 L14,19 L14,21 L21,21 C22.1,21 23,20.1 23,19 L23,5 C23,3.9 22.1,3 21,3 L21,3 Z\"/></g></svg>`;\nvar exitIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\"><g><path class=\"cast_caf_icon_arch0\" d=\"M1,18 L1,21 L4,21 C4,19.3 2.66,18 1,18 L1,18 Z\"/><path class=\"cast_caf_icon_arch1\" d=\"M1,14 L1,16 C3.76,16 6,18.2 6,21 L8,21 C8,17.13 4.87,14 1,14 L1,14 Z\"/><path class=\"cast_caf_icon_arch2\" d=\"M1,10 L1,12 C5.97,12 10,16.0 10,21 L12,21 C12,14.92 7.07,10 1,10 L1,10 Z\"/><path class=\"cast_caf_icon_box\" d=\"M21,3 L3,3 C1.9,3 1,3.9 1,5 L1,8 L3,8 L3,5 L21,5 L21,19 L14,19 L14,21 L21,21 C22.1,21 23,20.1 23,19 L23,5 C23,3.9 22.1,3 21,3 L21,3 Z\"/><path class=\"cast_caf_icon_boxfill\" d=\"M5,7 L5,8.63 C8,8.6 13.37,14 13.37,17 L19,17 L19,7 Z\"/></g></svg>`;\nvar slotTemplate5 = Document2.createElement(\"template\");\nslotTemplate5.innerHTML = /*html*/\n`\n  <style>\n  :host([${MediaUIAttributes.MEDIA_IS_CASTING}]) slot:not([name=exit]):not([name=icon]) {\n    display: none !important;\n  }\n\n  ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n  :host(:not([${MediaUIAttributes.MEDIA_IS_CASTING}])) slot:not([name=enter]):not([name=icon]) {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"enter\">${enterIcon}</slot>\n    <slot name=\"exit\">${exitIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel2 = (el) => {\n  const label = el.mediaIsCasting ? verbs.EXIT_CAST() : verbs.ENTER_CAST();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaCastButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_IS_CASTING,\n      MediaUIAttributes.MEDIA_CAST_UNAVAILABLE\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate5 }, options));\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    updateAriaLabel2(this);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_IS_CASTING) {\n      updateAriaLabel2(this);\n    }\n  }\n  /**\n   * @type {boolean} Are we currently casting\n   */\n  get mediaIsCasting() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_IS_CASTING);\n  }\n  set mediaIsCasting(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_IS_CASTING, value);\n  }\n  /**\n   * @type {string | undefined} Cast unavailability state\n   */\n  get mediaCastUnavailable() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_CAST_UNAVAILABLE);\n  }\n  set mediaCastUnavailable(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_CAST_UNAVAILABLE, value);\n  }\n  handleClick() {\n    const eventName = this.mediaIsCasting ? MediaUIEvents.MEDIA_EXIT_CAST_REQUEST : MediaUIEvents.MEDIA_ENTER_CAST_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-cast-button\")) {\n  GlobalThis.customElements.define(\"media-cast-button\", MediaCastButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-dialog.js\nvar __defProp6 = Object.defineProperty;\nvar __defNormalProp6 = (obj, key, value) => key in obj ? __defProp6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField6 = (obj, key, value) => {\n  __defNormalProp6(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck9 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet9 = (obj, member, getter) => {\n  __accessCheck9(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd9 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet9 = (obj, member, value, setter) => {\n  __accessCheck9(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod6 = (obj, member, method) => {\n  __accessCheck9(obj, member, \"access private method\");\n  return method;\n};\nvar _previouslyFocused2;\nvar _invokerElement2;\nvar _handleOpen2;\nvar handleOpen_fn2;\nvar _handleClosed2;\nvar handleClosed_fn2;\nvar _handleInvoke2;\nvar handleInvoke_fn2;\nvar _handleFocusOut2;\nvar handleFocusOut_fn2;\nvar _handleKeyDown2;\nvar handleKeyDown_fn2;\nvar template6 = Document2.createElement(\"template\");\ntemplate6.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      font: var(--media-font,\n        var(--media-font-weight, normal)\n        var(--media-font-size, 14px) /\n        var(--media-text-content-height, var(--media-control-height, 24px))\n        var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n      color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n      background: var(--media-dialog-background, var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .8))));\n      border-radius: var(--media-dialog-border-radius);\n      border: var(--media-dialog-border, none);\n      display: var(--media-dialog-display, inline-flex);\n      transition: var(--media-dialog-transition-in,\n        visibility 0s,\n        opacity .2s ease-out,\n        transform .15s ease-out\n      ) !important;\n      ${/* ^^Prevent transition override by media-container */\n\"\"}\n      visibility: var(--media-dialog-visibility, visible);\n      opacity: var(--media-dialog-opacity, 1);\n      transform: var(--media-dialog-transform-in, translateY(0) scale(1));\n    }\n\n    :host([hidden]) {\n      transition: var(--media-dialog-transition-out,\n        visibility .15s ease-in,\n        opacity .15s ease-in,\n        transform .15s ease-in\n      ) !important;\n      visibility: var(--media-dialog-hidden-visibility, hidden);\n      opacity: var(--media-dialog-hidden-opacity, 0);\n      transform: var(--media-dialog-transform-out, translateY(2px) scale(.99));\n      pointer-events: none;\n    }\n  </style>\n  <slot></slot>\n`;\nvar Attributes4 = {\n  HIDDEN: \"hidden\",\n  ANCHOR: \"anchor\"\n};\nvar MediaChromeDialog = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd9(this, _handleOpen2);\n    __privateAdd9(this, _handleClosed2);\n    __privateAdd9(this, _handleInvoke2);\n    __privateAdd9(this, _handleFocusOut2);\n    __privateAdd9(this, _handleKeyDown2);\n    __privateAdd9(this, _previouslyFocused2, void 0);\n    __privateAdd9(this, _invokerElement2, void 0);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.nativeEl = this.constructor.template.content.cloneNode(true);\n      this.shadowRoot.append(this.nativeEl);\n    }\n    this.addEventListener(\"invoke\", this);\n    this.addEventListener(\"focusout\", this);\n    this.addEventListener(\"keydown\", this);\n  }\n  static get observedAttributes() {\n    return [Attributes4.HIDDEN, Attributes4.ANCHOR];\n  }\n  handleEvent(event) {\n    switch (event.type) {\n      case \"invoke\":\n        __privateMethod6(this, _handleInvoke2, handleInvoke_fn2).call(this, event);\n        break;\n      case \"focusout\":\n        __privateMethod6(this, _handleFocusOut2, handleFocusOut_fn2).call(this, event);\n        break;\n      case \"keydown\":\n        __privateMethod6(this, _handleKeyDown2, handleKeyDown_fn2).call(this, event);\n        break;\n    }\n  }\n  connectedCallback() {\n    if (!this.role) {\n      this.role = \"dialog\";\n    }\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === Attributes4.HIDDEN && newValue !== oldValue) {\n      if (this.hidden) {\n        __privateMethod6(this, _handleClosed2, handleClosed_fn2).call(this);\n      } else {\n        __privateMethod6(this, _handleOpen2, handleOpen_fn2).call(this);\n      }\n    }\n  }\n  focus() {\n    __privateSet9(this, _previouslyFocused2, getActiveElement());\n    const focusable = this.querySelector(\n      '[autofocus], [tabindex]:not([tabindex=\"-1\"]), [role=\"menu\"]'\n    );\n    focusable == null ? void 0 : focusable.focus();\n  }\n  get keysUsed() {\n    return [\"Escape\", \"Tab\"];\n  }\n};\n_previouslyFocused2 = /* @__PURE__ */ new WeakMap();\n_invokerElement2 = /* @__PURE__ */ new WeakMap();\n_handleOpen2 = /* @__PURE__ */ new WeakSet();\nhandleOpen_fn2 = function() {\n  var _a3;\n  (_a3 = __privateGet9(this, _invokerElement2)) == null ? void 0 : _a3.setAttribute(\"aria-expanded\", \"true\");\n  this.addEventListener(\"transitionend\", () => this.focus(), { once: true });\n};\n_handleClosed2 = /* @__PURE__ */ new WeakSet();\nhandleClosed_fn2 = function() {\n  var _a3;\n  (_a3 = __privateGet9(this, _invokerElement2)) == null ? void 0 : _a3.setAttribute(\"aria-expanded\", \"false\");\n};\n_handleInvoke2 = /* @__PURE__ */ new WeakSet();\nhandleInvoke_fn2 = function(event) {\n  __privateSet9(this, _invokerElement2, event.relatedTarget);\n  if (!containsComposedNode(this, event.relatedTarget)) {\n    this.hidden = !this.hidden;\n  }\n};\n_handleFocusOut2 = /* @__PURE__ */ new WeakSet();\nhandleFocusOut_fn2 = function(event) {\n  var _a3;\n  if (!containsComposedNode(this, event.relatedTarget)) {\n    (_a3 = __privateGet9(this, _previouslyFocused2)) == null ? void 0 : _a3.focus();\n    if (__privateGet9(this, _invokerElement2) && __privateGet9(this, _invokerElement2) !== event.relatedTarget && !this.hidden) {\n      this.hidden = true;\n    }\n  }\n};\n_handleKeyDown2 = /* @__PURE__ */ new WeakSet();\nhandleKeyDown_fn2 = function(event) {\n  var _a3, _b, _c, _d, _e5;\n  const { key, ctrlKey, altKey, metaKey } = event;\n  if (ctrlKey || altKey || metaKey) {\n    return;\n  }\n  if (!this.keysUsed.includes(key)) {\n    return;\n  }\n  event.preventDefault();\n  event.stopPropagation();\n  if (key === \"Tab\") {\n    if (event.shiftKey) {\n      (_b = (_a3 = this.previousElementSibling) == null ? void 0 : _a3.focus) == null ? void 0 : _b.call(_a3);\n    } else {\n      (_d = (_c = this.nextElementSibling) == null ? void 0 : _c.focus) == null ? void 0 : _d.call(_c);\n    }\n    this.blur();\n  } else if (key === \"Escape\") {\n    (_e5 = __privateGet9(this, _previouslyFocused2)) == null ? void 0 : _e5.focus();\n    this.hidden = true;\n  }\n};\n__publicField6(MediaChromeDialog, \"template\", template6);\nif (!GlobalThis.customElements.get(\"media-chrome-dialog\")) {\n  GlobalThis.customElements.define(\"media-chrome-dialog\", MediaChromeDialog);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-menu-item.js\nvar __defProp7 = Object.defineProperty;\nvar __defNormalProp7 = (obj, key, value) => key in obj ? __defProp7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField7 = (obj, key, value) => {\n  __defNormalProp7(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck10 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet10 = (obj, member, getter) => {\n  __accessCheck10(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd10 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet10 = (obj, member, value, setter) => {\n  __accessCheck10(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod7 = (obj, member, method) => {\n  __accessCheck10(obj, member, \"access private method\");\n  return method;\n};\nvar _dirty;\nvar _ownerElement;\nvar _handleSlotChange2;\nvar handleSlotChange_fn2;\nvar _submenuConnected;\nvar submenuConnected_fn;\nvar _submenuDisconnected;\nvar submenuDisconnected_fn;\nvar _handleMenuItem;\nvar _handleKeyUp;\nvar handleKeyUp_fn;\nvar _handleKeyDown3;\nvar handleKeyDown_fn3;\nvar _reset;\nvar reset_fn;\nvar template7 = Document2.createElement(\"template\");\ntemplate7.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      transition: var(--media-menu-item-transition,\n        background .15s linear,\n        opacity .2s ease-in-out\n      );\n      outline: var(--media-menu-item-outline, 0);\n      outline-offset: var(--media-menu-item-outline-offset, -1px);\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      align-self: stretch;\n      justify-self: stretch;\n      white-space: nowrap;\n      white-space-collapse: collapse;\n      text-wrap: nowrap;\n      padding: .4em .8em .4em 1em;\n    }\n\n    :host(:focus-visible) {\n      box-shadow: var(--media-menu-item-focus-shadow, inset 0 0 0 2px rgb(27 127 204 / .9));\n      outline: var(--media-menu-item-hover-outline, 0);\n      outline-offset: var(--media-menu-item-hover-outline-offset,  var(--media-menu-item-outline-offset, -1px));\n    }\n\n    :host(:hover) {\n      cursor: pointer;\n      background: var(--media-menu-item-hover-background, rgb(92 92 102 / .5));\n      outline: var(--media-menu-item-hover-outline);\n      outline-offset: var(--media-menu-item-hover-outline-offset,  var(--media-menu-item-outline-offset, -1px));\n    }\n\n    :host([aria-checked=\"true\"]) {\n      background: var(--media-menu-item-checked-background);\n    }\n\n    :host([hidden]) {\n      display: none;\n    }\n\n    :host([disabled]) {\n      pointer-events: none;\n      color: rgba(255, 255, 255, .3);\n    }\n\n    slot:not([name]) {\n      width: 100%;\n    }\n\n    slot:not([name=\"submenu\"]) {\n      display: inline-flex;\n      align-items: center;\n      transition: inherit;\n      opacity: var(--media-menu-item-opacity, 1);\n    }\n\n    slot[name=\"description\"] {\n      justify-content: end;\n    }\n\n    slot[name=\"description\"] > span {\n      display: inline-block;\n      margin-inline: 1em .2em;\n      max-width: var(--media-menu-item-description-max-width, 100px);\n      text-overflow: ellipsis;\n      overflow: hidden;\n      font-size: .8em;\n      font-weight: 400;\n      text-align: right;\n      position: relative;\n      top: .04em;\n    }\n\n    slot[name=\"checked-indicator\"] {\n      display: none;\n    }\n\n    :host(:is([role=\"menuitemradio\"],[role=\"menuitemcheckbox\"])) slot[name=\"checked-indicator\"] {\n      display: var(--media-menu-item-checked-indicator-display, inline-block);\n    }\n\n    ${/* For all slotted icons in prefix and suffix. */\n\"\"}\n    svg, img, ::slotted(svg), ::slotted(img) {\n      height: var(--media-menu-item-icon-height, var(--media-control-height, 24px));\n      fill: var(--media-icon-color, var(--media-primary-color, rgb(238 238 238)));\n      display: block;\n    }\n\n    ${/* Only for indicator icons like checked-indicator or captions-indicator. */\n\"\"}\n    [part~=\"indicator\"],\n    ::slotted([part~=\"indicator\"]) {\n      fill: var(--media-menu-item-indicator-fill,\n        var(--media-icon-color, var(--media-primary-color, rgb(238 238 238))));\n      height: var(--media-menu-item-indicator-height, 1.25em);\n      margin-right: .5ch;\n    }\n\n    [part~=\"checked-indicator\"] {\n      visibility: hidden;\n    }\n\n    :host([aria-checked=\"true\"]) [part~=\"checked-indicator\"] {\n      visibility: visible;\n    }\n  </style>\n  <slot name=\"checked-indicator\">\n    <svg aria-hidden=\"true\" viewBox=\"0 1 24 24\" part=\"checked-indicator indicator\">\n      <path d=\"m10 15.17 9.193-9.191 1.414 1.414-10.606 10.606-6.364-6.364 1.414-1.414 4.95 4.95Z\"/>\n    </svg>\n  </slot>\n  <slot name=\"prefix\"></slot>\n  <slot></slot>\n  <slot name=\"description\"></slot>\n  <slot name=\"suffix\"></slot>\n  <slot name=\"submenu\"></slot>\n`;\nvar Attributes5 = {\n  TYPE: \"type\",\n  VALUE: \"value\",\n  CHECKED: \"checked\",\n  DISABLED: \"disabled\"\n};\nvar MediaChromeMenuItem = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd10(this, _handleSlotChange2);\n    __privateAdd10(this, _submenuConnected);\n    __privateAdd10(this, _submenuDisconnected);\n    __privateAdd10(this, _handleKeyUp);\n    __privateAdd10(this, _handleKeyDown3);\n    __privateAdd10(this, _reset);\n    __privateAdd10(this, _dirty, false);\n    __privateAdd10(this, _ownerElement, void 0);\n    __privateAdd10(this, _handleMenuItem, () => {\n      var _a3, _b;\n      this.setAttribute(\"submenusize\", `${this.submenuElement.items.length}`);\n      const descriptionSlot = this.shadowRoot.querySelector(\n        'slot[name=\"description\"]'\n      );\n      const description = (_b = (_a3 = this.submenuElement.checkedItems) == null ? void 0 : _a3[0]) == null ? void 0 : _b.text;\n      const span = Document2.createElement(\"span\");\n      span.textContent = description != null ? description : \"\";\n      descriptionSlot.replaceChildren(span);\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.append(this.constructor.template.content.cloneNode(true));\n    }\n    this.shadowRoot.addEventListener(\"slotchange\", this);\n  }\n  static get observedAttributes() {\n    return [\n      Attributes5.TYPE,\n      Attributes5.DISABLED,\n      Attributes5.CHECKED,\n      Attributes5.VALUE\n    ];\n  }\n  enable() {\n    if (!this.hasAttribute(\"tabindex\")) {\n      this.setAttribute(\"tabindex\", \"-1\");\n    }\n    if (isCheckable(this) && !this.hasAttribute(\"aria-checked\")) {\n      this.setAttribute(\"aria-checked\", \"false\");\n    }\n    this.addEventListener(\"click\", this);\n    this.addEventListener(\"keydown\", this);\n  }\n  disable() {\n    this.removeAttribute(\"tabindex\");\n    this.removeEventListener(\"click\", this);\n    this.removeEventListener(\"keydown\", this);\n    this.removeEventListener(\"keyup\", this);\n  }\n  handleEvent(event) {\n    switch (event.type) {\n      case \"slotchange\":\n        __privateMethod7(this, _handleSlotChange2, handleSlotChange_fn2).call(this, event);\n        break;\n      case \"click\":\n        this.handleClick(event);\n        break;\n      case \"keydown\":\n        __privateMethod7(this, _handleKeyDown3, handleKeyDown_fn3).call(this, event);\n        break;\n      case \"keyup\":\n        __privateMethod7(this, _handleKeyUp, handleKeyUp_fn).call(this, event);\n        break;\n    }\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === Attributes5.CHECKED && isCheckable(this) && !__privateGet10(this, _dirty)) {\n      this.setAttribute(\"aria-checked\", newValue != null ? \"true\" : \"false\");\n    } else if (attrName === Attributes5.TYPE && newValue !== oldValue) {\n      this.role = \"menuitem\" + newValue;\n    } else if (attrName === Attributes5.DISABLED && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n  }\n  connectedCallback() {\n    if (!this.hasAttribute(Attributes5.DISABLED)) {\n      this.enable();\n    }\n    this.role = \"menuitem\" + this.type;\n    __privateSet10(this, _ownerElement, closestMenuItemsContainer(this, this.parentNode));\n    __privateMethod7(this, _reset, reset_fn).call(this);\n  }\n  disconnectedCallback() {\n    this.disable();\n    __privateMethod7(this, _reset, reset_fn).call(this);\n    __privateSet10(this, _ownerElement, null);\n  }\n  get invokeTarget() {\n    return this.getAttribute(\"invoketarget\");\n  }\n  set invokeTarget(value) {\n    this.setAttribute(\"invoketarget\", `${value}`);\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute\n   * or the slotted submenu element.\n   * @return {MediaChromeMenu | null}\n   */\n  get invokeTargetElement() {\n    var _a3;\n    if (this.invokeTarget) {\n      return (_a3 = getDocumentOrShadowRoot(this)) == null ? void 0 : _a3.querySelector(\n        `#${this.invokeTarget}`\n      );\n    }\n    return this.submenuElement;\n  }\n  /**\n   * Returns the slotted submenu element.\n   */\n  get submenuElement() {\n    const submenuSlot = this.shadowRoot.querySelector('slot[name=\"submenu\"]');\n    return (\n      /** @type {MediaChromeMenu | null} */\n      submenuSlot.assignedElements({ flatten: true })[0]\n    );\n  }\n  get type() {\n    var _a3;\n    return (_a3 = this.getAttribute(Attributes5.TYPE)) != null ? _a3 : \"\";\n  }\n  set type(val) {\n    this.setAttribute(Attributes5.TYPE, `${val}`);\n  }\n  get value() {\n    var _a3;\n    return (_a3 = this.getAttribute(Attributes5.VALUE)) != null ? _a3 : this.text;\n  }\n  set value(val) {\n    this.setAttribute(Attributes5.VALUE, val);\n  }\n  get text() {\n    var _a3;\n    return ((_a3 = this.textContent) != null ? _a3 : \"\").trim();\n  }\n  get checked() {\n    if (!isCheckable(this))\n      return void 0;\n    return this.getAttribute(\"aria-checked\") === \"true\";\n  }\n  set checked(value) {\n    if (!isCheckable(this))\n      return;\n    __privateSet10(this, _dirty, true);\n    this.setAttribute(\"aria-checked\", value ? \"true\" : \"false\");\n    if (value) {\n      this.part.add(\"checked\");\n    } else {\n      this.part.remove(\"checked\");\n    }\n  }\n  handleClick(event) {\n    if (isCheckable(this))\n      return;\n    if (this.invokeTargetElement && containsComposedNode(this, event.target)) {\n      this.invokeTargetElement.dispatchEvent(\n        new InvokeEvent({ relatedTarget: this })\n      );\n    }\n  }\n  get keysUsed() {\n    return [\"Enter\", \" \"];\n  }\n};\n_dirty = /* @__PURE__ */ new WeakMap();\n_ownerElement = /* @__PURE__ */ new WeakMap();\n_handleSlotChange2 = /* @__PURE__ */ new WeakSet();\nhandleSlotChange_fn2 = function(event) {\n  const slot = event.target;\n  const isDefaultSlot = !(slot == null ? void 0 : slot.name);\n  if (isDefaultSlot) {\n    for (let node of slot.assignedNodes({ flatten: true })) {\n      if (node instanceof Text && node.textContent.trim() === \"\") {\n        node.remove();\n      }\n    }\n  }\n  if (slot.name === \"submenu\") {\n    if (this.submenuElement) {\n      __privateMethod7(this, _submenuConnected, submenuConnected_fn).call(this);\n    } else {\n      __privateMethod7(this, _submenuDisconnected, submenuDisconnected_fn).call(this);\n    }\n  }\n};\n_submenuConnected = /* @__PURE__ */ new WeakSet();\nsubmenuConnected_fn = function() {\n  return __async(this, null, function* () {\n    this.setAttribute(\"aria-haspopup\", \"menu\");\n    this.setAttribute(\"aria-expanded\", `${!this.submenuElement.hidden}`);\n    this.submenuElement.addEventListener(\"change\", __privateGet10(this, _handleMenuItem));\n    this.submenuElement.addEventListener(\"addmenuitem\", __privateGet10(this, _handleMenuItem));\n    this.submenuElement.addEventListener(\n      \"removemenuitem\",\n      __privateGet10(this, _handleMenuItem)\n    );\n    __privateGet10(this, _handleMenuItem).call(this);\n  });\n};\n_submenuDisconnected = /* @__PURE__ */ new WeakSet();\nsubmenuDisconnected_fn = function() {\n  this.removeAttribute(\"aria-haspopup\");\n  this.removeAttribute(\"aria-expanded\");\n  this.submenuElement.removeEventListener(\"change\", __privateGet10(this, _handleMenuItem));\n  this.submenuElement.removeEventListener(\n    \"addmenuitem\",\n    __privateGet10(this, _handleMenuItem)\n  );\n  this.submenuElement.removeEventListener(\n    \"removemenuitem\",\n    __privateGet10(this, _handleMenuItem)\n  );\n  __privateGet10(this, _handleMenuItem).call(this);\n};\n_handleMenuItem = /* @__PURE__ */ new WeakMap();\n_handleKeyUp = /* @__PURE__ */ new WeakSet();\nhandleKeyUp_fn = function(event) {\n  const { key } = event;\n  if (!this.keysUsed.includes(key)) {\n    this.removeEventListener(\"keyup\", __privateMethod7(this, _handleKeyUp, handleKeyUp_fn));\n    return;\n  }\n  this.handleClick(event);\n};\n_handleKeyDown3 = /* @__PURE__ */ new WeakSet();\nhandleKeyDown_fn3 = function(event) {\n  const { metaKey, altKey, key } = event;\n  if (metaKey || altKey || !this.keysUsed.includes(key)) {\n    this.removeEventListener(\"keyup\", __privateMethod7(this, _handleKeyUp, handleKeyUp_fn));\n    return;\n  }\n  this.addEventListener(\"keyup\", __privateMethod7(this, _handleKeyUp, handleKeyUp_fn), { once: true });\n};\n_reset = /* @__PURE__ */ new WeakSet();\nreset_fn = function() {\n  var _a3;\n  const items = (_a3 = __privateGet10(this, _ownerElement)) == null ? void 0 : _a3.radioGroupItems;\n  if (!items)\n    return;\n  let checkedItem = items.filter((item) => item.getAttribute(\"aria-checked\") === \"true\").pop();\n  if (!checkedItem)\n    checkedItem = items[0];\n  for (const item of items) {\n    item.setAttribute(\"aria-checked\", \"false\");\n  }\n  checkedItem == null ? void 0 : checkedItem.setAttribute(\"aria-checked\", \"true\");\n};\n__publicField7(MediaChromeMenuItem, \"template\", template7);\nfunction isCheckable(item) {\n  return item.type === \"radio\" || item.type === \"checkbox\";\n}\nfunction closestMenuItemsContainer(childNode, parentNode) {\n  if (!childNode)\n    return null;\n  const { host } = childNode.getRootNode();\n  if (!parentNode && host)\n    return closestMenuItemsContainer(childNode, host);\n  if (parentNode == null ? void 0 : parentNode.items)\n    return parentNode;\n  return closestMenuItemsContainer(parentNode, parentNode == null ? void 0 : parentNode.parentNode);\n}\nif (!GlobalThis.customElements.get(\"media-chrome-menu-item\")) {\n  GlobalThis.customElements.define(\n    \"media-chrome-menu-item\",\n    MediaChromeMenuItem\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-range.js\nvar __accessCheck11 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet11 = (obj, member, getter) => {\n  __accessCheck11(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd11 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet11 = (obj, member, value, setter) => {\n  __accessCheck11(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod8 = (obj, member, method) => {\n  __accessCheck11(obj, member, \"access private method\");\n  return method;\n};\nvar _mediaController4;\nvar _isInputTarget;\nvar _startpoint;\nvar _endpoint;\nvar _cssRules;\nvar _segments;\nvar _onFocusIn;\nvar _onFocusOut;\nvar _updateComputedStyles;\nvar _updateActiveSegment;\nvar updateActiveSegment_fn;\nvar _enableUserEvents;\nvar enableUserEvents_fn;\nvar _disableUserEvents;\nvar disableUserEvents_fn;\nvar _handlePointerDown;\nvar handlePointerDown_fn;\nvar _handlePointerEnter;\nvar handlePointerEnter_fn;\nvar _handlePointerUp2;\nvar handlePointerUp_fn2;\nvar _handlePointerLeave;\nvar handlePointerLeave_fn;\nvar _handlePointerMove2;\nvar handlePointerMove_fn2;\nvar template8 = Document2.createElement(\"template\");\ntemplate8.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      --_focus-box-shadow: var(--media-focus-box-shadow, inset 0 0 0 2px rgb(27 127 204 / .9));\n      --_media-range-padding: var(--media-range-padding, var(--media-control-padding, 10px));\n\n      box-shadow: var(--_focus-visible-box-shadow, none);\n      background: var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .7)));\n      height: calc(var(--media-control-height, 24px) + 2 * var(--_media-range-padding));\n      display: inline-flex;\n      align-items: center;\n      ${/* Don't horizontal align w/ justify-content! #container can go negative on the x-axis w/ small width. */\n\"\"}\n      vertical-align: middle;\n      box-sizing: border-box;\n      position: relative;\n      width: 100px;\n      transition: background .15s linear;\n      cursor: pointer;\n      pointer-events: auto;\n      touch-action: none; ${/* Prevent scrolling when dragging on mobile. */\n\"\"}\n      z-index: 1; ${/* Apply z-index to overlap buttons below. */\n\"\"}\n    }\n\n    ${/* Reset before `outline` on track could be set by a CSS var */\n\"\"}\n    input[type=range]:focus {\n      outline: 0;\n    }\n    input[type=range]:focus::-webkit-slider-runnable-track {\n      outline: 0;\n    }\n\n    :host(:hover) {\n      background: var(--media-control-hover-background, rgb(50 50 70 / .7));\n    }\n\n    #leftgap {\n      padding-left: var(--media-range-padding-left, var(--_media-range-padding));\n    }\n\n    #rightgap {\n      padding-right: var(--media-range-padding-right, var(--_media-range-padding));\n    }\n\n    #startpoint,\n    #endpoint {\n      position: absolute;\n    }\n\n    #endpoint {\n      right: 0;\n    }\n\n    #container {\n      ${/* Not using the CSS `padding` prop makes it easier for slide open volume ranges so the width can be zero. */\n\"\"}\n      width: var(--media-range-track-width, 100%);\n      transform: translate(var(--media-range-track-translate-x, 0px), var(--media-range-track-translate-y, 0px));\n      position: relative;\n      height: 100%;\n      display: flex;\n      align-items: center;\n      min-width: 40px;\n    }\n\n    #range {\n      ${/* The input range acts as a hover and hit zone for input events. */\n\"\"}\n      display: var(--media-time-range-hover-display, block);\n      bottom: var(--media-time-range-hover-bottom, -7px);\n      height: var(--media-time-range-hover-height, max(100% + 7px, 25px));\n      width: 100%;\n      position: absolute;\n      cursor: pointer;\n\n      -webkit-appearance: none; ${/* Hides the slider so that custom slider can be made */\n\"\"}\n      -webkit-tap-highlight-color: transparent;\n      background: transparent; ${/* Otherwise white in Chrome */\n\"\"}\n      margin: 0;\n      z-index: 1;\n    }\n\n    @media (hover: hover) {\n      #range {\n        bottom: var(--media-time-range-hover-bottom, -5px);\n        height: var(--media-time-range-hover-height, max(100% + 5px, 20px));\n      }\n    }\n\n    ${/* Special styling for WebKit/Blink */\n\"\"}\n    ${/* Make thumb width/height small so it has no effect on range click position. */\n\"\"}\n    #range::-webkit-slider-thumb {\n      -webkit-appearance: none;\n      background: transparent;\n      width: .1px;\n      height: .1px;\n    }\n\n    ${/* The thumb is not positioned relative to the track in Firefox */\n\"\"}\n    #range::-moz-range-thumb {\n      background: transparent;\n      border: transparent;\n      width: .1px;\n      height: .1px;\n    }\n\n    #appearance {\n      height: var(--media-range-track-height, 4px);\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n      width: 100%;\n      position: absolute;\n      ${/* Required for Safari to stop glitching track height on hover */\n\"\"}\n      will-change: transform;\n    }\n\n    #background,\n    #track {\n      border-radius: var(--media-range-track-border-radius, 1px);\n      position: absolute;\n      width: 100%;\n      height: 100%;\n    }\n\n    #background {\n      background: var(--media-range-track-background, rgb(255 255 255 / .2));\n      backdrop-filter: var(--media-range-track-background-backdrop-filter);\n      -webkit-backdrop-filter: var(--media-range-track-background-backdrop-filter);\n    }\n\n    #track {\n      border: var(--media-range-track-border, none);\n      outline: var(--media-range-track-outline);\n      outline-offset: var(--media-range-track-outline-offset);\n      backdrop-filter: var(--media-range-track-backdrop-filter);\n      -webkit-backdrop-filter: var(--media-range-track-backdrop-filter);\n      box-shadow: var(--media-range-track-box-shadow, none);\n      overflow: hidden;\n    }\n\n    #progress,\n    #highlight,\n    #pointer {\n      position: absolute;\n      height: 100%;\n      will-change: width;\n    }\n\n    #progress {\n      background: var(--media-range-bar-color, var(--media-primary-color, rgb(238 238 238)));\n      transition: var(--media-range-track-transition);\n    }\n\n    #pointer {\n      background: var(--media-range-track-pointer-background);\n      border-right: var(--media-range-track-pointer-border-right);\n      transition: visibility .25s, opacity .25s;\n      visibility: hidden;\n      opacity: 0;\n    }\n\n    @media (hover: hover) {\n      :host(:hover) #pointer {\n        transition: visibility .5s, opacity .5s;\n        visibility: visible;\n        opacity: 1;\n      }\n    }\n\n    #thumb {\n      width: var(--media-range-thumb-width, 10px);\n      height: var(--media-range-thumb-height, 10px);\n      margin-left: calc(var(--media-range-thumb-width, 10px) / -2);\n      border: var(--media-range-thumb-border, none);\n      border-radius: var(--media-range-thumb-border-radius, 10px);\n      background: var(--media-range-thumb-background, var(--media-primary-color, rgb(238 238 238)));\n      box-shadow: var(--media-range-thumb-box-shadow, 1px 1px 1px transparent);\n      transition: var(--media-range-thumb-transition);\n      transform: var(--media-range-thumb-transform, none);\n      opacity: var(--media-range-thumb-opacity, 1);\n      position: absolute;\n      left: 0;\n      cursor: pointer;\n    }\n\n    :host([disabled]) #thumb {\n      background-color: #777;\n    }\n\n    .segments #appearance {\n      height: var(--media-range-segment-hover-height, 7px);\n    }\n\n    #background,\n    #track {\n      clip-path: url(#segments-clipping);\n    }\n\n    #segments {\n      --segments-gap: var(--media-range-segments-gap, 2px);\n      position: absolute;\n      width: 100%;\n      height: 100%;\n    }\n\n    #segments-clipping {\n      transform: translateX(calc(var(--segments-gap) / 2));\n    }\n\n    #segments-clipping:empty {\n      display: none;\n    }\n\n    #segments-clipping rect {\n      height: var(--media-range-track-height, 4px);\n      y: calc((var(--media-range-segment-hover-height, 7px) - var(--media-range-track-height, 4px)) / 2);\n      transition: var(--media-range-segment-transition, transform .1s ease-in-out);\n      transform: var(--media-range-segment-transform, scaleY(1));\n      transform-origin: center;\n    }\n  </style>\n  <div id=\"leftgap\"></div>\n  <div id=\"container\">\n    <div id=\"startpoint\"></div>\n    <div id=\"endpoint\"></div>\n    <div id=\"appearance\" part=\"appearance\">\n      <div id=\"background\"></div>\n      <div id=\"track\">\n        <div id=\"highlight\"></div>\n        <div id=\"pointer\"></div>\n        <div id=\"progress\"></div>\n      </div>\n      <div id=\"thumb\"></div>\n      <svg id=\"segments\"><clipPath id=\"segments-clipping\"></clipPath></svg>\n    </div>\n    <input id=\"range\" type=\"range\" min=\"0\" max=\"1\" step=\"any\" value=\"0\">\n  </div>\n  <div id=\"rightgap\"></div>\n`;\nvar MediaChromeRange = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd11(this, _updateActiveSegment);\n    __privateAdd11(this, _enableUserEvents);\n    __privateAdd11(this, _disableUserEvents);\n    __privateAdd11(this, _handlePointerDown);\n    __privateAdd11(this, _handlePointerEnter);\n    __privateAdd11(this, _handlePointerUp2);\n    __privateAdd11(this, _handlePointerLeave);\n    __privateAdd11(this, _handlePointerMove2);\n    __privateAdd11(this, _mediaController4, void 0);\n    __privateAdd11(this, _isInputTarget, void 0);\n    __privateAdd11(this, _startpoint, void 0);\n    __privateAdd11(this, _endpoint, void 0);\n    __privateAdd11(this, _cssRules, {});\n    __privateAdd11(this, _segments, []);\n    __privateAdd11(this, _onFocusIn, () => {\n      if (this.range.matches(\":focus-visible\")) {\n        const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n        style.setProperty(\n          \"--_focus-visible-box-shadow\",\n          \"var(--_focus-box-shadow)\"\n        );\n      }\n    });\n    __privateAdd11(this, _onFocusOut, () => {\n      const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n      style.removeProperty(\"--_focus-visible-box-shadow\");\n    });\n    __privateAdd11(this, _updateComputedStyles, () => {\n      const clipping = this.shadowRoot.querySelector(\"#segments-clipping\");\n      if (clipping)\n        clipping.parentNode.append(clipping);\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template8.content.cloneNode(true));\n    }\n    this.container = this.shadowRoot.querySelector(\"#container\");\n    __privateSet11(this, _startpoint, this.shadowRoot.querySelector(\"#startpoint\"));\n    __privateSet11(this, _endpoint, this.shadowRoot.querySelector(\"#endpoint\"));\n    this.range = this.shadowRoot.querySelector(\"#range\");\n    this.appearance = this.shadowRoot.querySelector(\"#appearance\");\n  }\n  static get observedAttributes() {\n    return [\n      \"disabled\",\n      \"aria-disabled\",\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet11(this, _mediaController4)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet11(this, _mediaController4, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet11(this, _mediaController4, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet11(this, _mediaController4)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    } else if (attrName === \"disabled\" || attrName === \"aria-disabled\" && oldValue !== newValue) {\n      if (newValue == null) {\n        this.range.removeAttribute(attrName);\n        __privateMethod8(this, _enableUserEvents, enableUserEvents_fn).call(this);\n      } else {\n        this.range.setAttribute(attrName, newValue);\n        __privateMethod8(this, _disableUserEvents, disableUserEvents_fn).call(this);\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    style.setProperty(\n      \"display\",\n      `var(--media-control-display, var(--${this.localName}-display, inline-flex))`\n    );\n    __privateGet11(this, _cssRules).pointer = getOrInsertCSSRule(this.shadowRoot, \"#pointer\");\n    __privateGet11(this, _cssRules).progress = getOrInsertCSSRule(this.shadowRoot, \"#progress\");\n    __privateGet11(this, _cssRules).thumb = getOrInsertCSSRule(this.shadowRoot, \"#thumb\");\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet11(\n        this,\n        _mediaController4,\n        // @ts-ignore\n        (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId)\n      );\n      (_c = (_b = __privateGet11(this, _mediaController4)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n    this.updateBar();\n    this.shadowRoot.addEventListener(\"focusin\", __privateGet11(this, _onFocusIn));\n    this.shadowRoot.addEventListener(\"focusout\", __privateGet11(this, _onFocusOut));\n    __privateMethod8(this, _enableUserEvents, enableUserEvents_fn).call(this);\n    observeResize(this.container, __privateGet11(this, _updateComputedStyles));\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    __privateMethod8(this, _disableUserEvents, disableUserEvents_fn).call(this);\n    (_b = (_a3 = __privateGet11(this, _mediaController4)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet11(this, _mediaController4, null);\n    this.shadowRoot.removeEventListener(\"focusin\", __privateGet11(this, _onFocusIn));\n    this.shadowRoot.removeEventListener(\"focusout\", __privateGet11(this, _onFocusOut));\n    unobserveResize(this.container, __privateGet11(this, _updateComputedStyles));\n  }\n  updatePointerBar(evt) {\n    var _a3;\n    (_a3 = __privateGet11(this, _cssRules).pointer) == null ? void 0 : _a3.style.setProperty(\n      \"width\",\n      `${this.getPointerRatio(evt) * 100}%`\n    );\n  }\n  updateBar() {\n    var _a3, _b;\n    const rangePercent = this.range.valueAsNumber * 100;\n    (_a3 = __privateGet11(this, _cssRules).progress) == null ? void 0 : _a3.style.setProperty(\"width\", `${rangePercent}%`);\n    (_b = __privateGet11(this, _cssRules).thumb) == null ? void 0 : _b.style.setProperty(\"left\", `${rangePercent}%`);\n  }\n  updateSegments(segments) {\n    const clipping = this.shadowRoot.querySelector(\"#segments-clipping\");\n    clipping.textContent = \"\";\n    this.container.classList.toggle(\"segments\", !!(segments == null ? void 0 : segments.length));\n    if (!(segments == null ? void 0 : segments.length))\n      return;\n    __privateGet11(this, _cssRules).activeSegment = insertCSSRule(\n      this.shadowRoot,\n      \"#segments-clipping rect:nth-child(0)\"\n    );\n    const normalized = [\n      .../* @__PURE__ */ new Set([\n        +this.range.min,\n        ...segments.flatMap((s) => [s.start, s.end]),\n        +this.range.max\n      ])\n    ];\n    __privateSet11(this, _segments, [...normalized]);\n    const lastMarker = normalized.pop();\n    for (const [i2, marker] of normalized.entries()) {\n      const [isFirst, isLast] = [i2 === 0, i2 === normalized.length - 1];\n      const x4 = isFirst ? \"calc(var(--segments-gap) / -1)\" : `${marker * 100}%`;\n      const x22 = isLast ? lastMarker : normalized[i2 + 1];\n      const width = `calc(${(x22 - marker) * 100}%${isFirst || isLast ? \"\" : ` - var(--segments-gap)`})`;\n      const segmentEl = Document2.createElementNS(\n        \"http://www.w3.org/2000/svg\",\n        \"rect\"\n      );\n      const cssRule = getOrInsertCSSRule(\n        this.shadowRoot,\n        `#segments-clipping rect:nth-child(${i2 + 1})`\n      );\n      cssRule.style.setProperty(\"x\", x4);\n      cssRule.style.setProperty(\"width\", width);\n      clipping.append(segmentEl);\n    }\n  }\n  getPointerRatio(evt) {\n    let pointerRatio = getPointProgressOnLine(\n      evt.clientX,\n      evt.clientY,\n      __privateGet11(this, _startpoint).getBoundingClientRect(),\n      __privateGet11(this, _endpoint).getBoundingClientRect()\n    );\n    return Math.max(0, Math.min(1, pointerRatio));\n  }\n  get dragging() {\n    return this.hasAttribute(\"dragging\");\n  }\n  handleEvent(evt) {\n    switch (evt.type) {\n      case \"pointermove\":\n        __privateMethod8(this, _handlePointerMove2, handlePointerMove_fn2).call(this, evt);\n        break;\n      case \"input\":\n        this.updateBar();\n        break;\n      case \"pointerenter\":\n        __privateMethod8(this, _handlePointerEnter, handlePointerEnter_fn).call(this, evt);\n        break;\n      case \"pointerdown\":\n        __privateMethod8(this, _handlePointerDown, handlePointerDown_fn).call(this, evt);\n        break;\n      case \"pointerup\":\n        __privateMethod8(this, _handlePointerUp2, handlePointerUp_fn2).call(this);\n        break;\n      case \"pointerleave\":\n        __privateMethod8(this, _handlePointerLeave, handlePointerLeave_fn).call(this);\n        break;\n    }\n  }\n  get keysUsed() {\n    return [\"ArrowUp\", \"ArrowRight\", \"ArrowDown\", \"ArrowLeft\"];\n  }\n};\n_mediaController4 = /* @__PURE__ */ new WeakMap();\n_isInputTarget = /* @__PURE__ */ new WeakMap();\n_startpoint = /* @__PURE__ */ new WeakMap();\n_endpoint = /* @__PURE__ */ new WeakMap();\n_cssRules = /* @__PURE__ */ new WeakMap();\n_segments = /* @__PURE__ */ new WeakMap();\n_onFocusIn = /* @__PURE__ */ new WeakMap();\n_onFocusOut = /* @__PURE__ */ new WeakMap();\n_updateComputedStyles = /* @__PURE__ */ new WeakMap();\n_updateActiveSegment = /* @__PURE__ */ new WeakSet();\nupdateActiveSegment_fn = function(evt) {\n  const rule = __privateGet11(this, _cssRules).activeSegment;\n  if (!rule)\n    return;\n  const pointerRatio = this.getPointerRatio(evt);\n  const segmentIndex = __privateGet11(this, _segments).findIndex((start, i2, arr) => {\n    const end = arr[i2 + 1];\n    return end != null && pointerRatio >= start && pointerRatio <= end;\n  });\n  const selectorText = `#segments-clipping rect:nth-child(${segmentIndex + 1})`;\n  if (rule.selectorText != selectorText || !rule.style.transform) {\n    rule.selectorText = selectorText;\n    rule.style.setProperty(\n      \"transform\",\n      \"var(--media-range-segment-hover-transform, scaleY(2))\"\n    );\n  }\n};\n_enableUserEvents = /* @__PURE__ */ new WeakSet();\nenableUserEvents_fn = function() {\n  if (this.hasAttribute(\"disabled\"))\n    return;\n  this.addEventListener(\"input\", this);\n  this.addEventListener(\"pointerdown\", this);\n  this.addEventListener(\"pointerenter\", this);\n};\n_disableUserEvents = /* @__PURE__ */ new WeakSet();\ndisableUserEvents_fn = function() {\n  var _a3, _b;\n  this.removeEventListener(\"input\", this);\n  this.removeEventListener(\"pointerdown\", this);\n  this.removeEventListener(\"pointerenter\", this);\n  (_a3 = GlobalThis.window) == null ? void 0 : _a3.removeEventListener(\"pointerup\", this);\n  (_b = GlobalThis.window) == null ? void 0 : _b.removeEventListener(\"pointermove\", this);\n};\n_handlePointerDown = /* @__PURE__ */ new WeakSet();\nhandlePointerDown_fn = function(evt) {\n  var _a3;\n  __privateSet11(this, _isInputTarget, evt.composedPath().includes(this.range));\n  (_a3 = GlobalThis.window) == null ? void 0 : _a3.addEventListener(\"pointerup\", this);\n};\n_handlePointerEnter = /* @__PURE__ */ new WeakSet();\nhandlePointerEnter_fn = function(evt) {\n  var _a3;\n  if (evt.pointerType !== \"mouse\")\n    __privateMethod8(this, _handlePointerDown, handlePointerDown_fn).call(this, evt);\n  this.addEventListener(\"pointerleave\", this);\n  (_a3 = GlobalThis.window) == null ? void 0 : _a3.addEventListener(\"pointermove\", this);\n};\n_handlePointerUp2 = /* @__PURE__ */ new WeakSet();\nhandlePointerUp_fn2 = function() {\n  var _a3;\n  (_a3 = GlobalThis.window) == null ? void 0 : _a3.removeEventListener(\"pointerup\", this);\n  this.toggleAttribute(\"dragging\", false);\n  this.range.disabled = this.hasAttribute(\"disabled\");\n};\n_handlePointerLeave = /* @__PURE__ */ new WeakSet();\nhandlePointerLeave_fn = function() {\n  var _a3, _b;\n  this.removeEventListener(\"pointerleave\", this);\n  (_a3 = GlobalThis.window) == null ? void 0 : _a3.removeEventListener(\"pointermove\", this);\n  this.toggleAttribute(\"dragging\", false);\n  this.range.disabled = this.hasAttribute(\"disabled\");\n  (_b = __privateGet11(this, _cssRules).activeSegment) == null ? void 0 : _b.style.removeProperty(\"transform\");\n};\n_handlePointerMove2 = /* @__PURE__ */ new WeakSet();\nhandlePointerMove_fn2 = function(evt) {\n  this.toggleAttribute(\n    \"dragging\",\n    evt.buttons === 1 || evt.pointerType !== \"mouse\"\n  );\n  this.updatePointerBar(evt);\n  __privateMethod8(this, _updateActiveSegment, updateActiveSegment_fn).call(this, evt);\n  if (this.dragging && (evt.pointerType !== \"mouse\" || !__privateGet11(this, _isInputTarget))) {\n    this.range.disabled = true;\n    this.range.valueAsNumber = this.getPointerRatio(evt);\n    this.range.dispatchEvent(\n      new Event(\"input\", { bubbles: true, composed: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-chrome-range\")) {\n  GlobalThis.customElements.define(\"media-chrome-range\", MediaChromeRange);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-control-bar.js\nvar __accessCheck12 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet12 = (obj, member, getter) => {\n  __accessCheck12(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd12 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet12 = (obj, member, value, setter) => {\n  __accessCheck12(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController5;\nvar template9 = Document2.createElement(\"template\");\ntemplate9.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      ${/* Need position to display above video for some reason */\n\"\"}\n      box-sizing: border-box;\n      display: var(--media-control-display, var(--media-control-bar-display, inline-flex));\n      color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n      --media-loading-indicator-icon-height: 44px;\n    }\n\n    ::slotted(media-time-range),\n    ::slotted(media-volume-range) {\n      min-height: 100%;\n    }\n\n    ::slotted(media-time-range),\n    ::slotted(media-clip-selector) {\n      flex-grow: 1;\n    }\n  </style>\n\n  <slot></slot>\n`;\nvar MediaControlBar = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd12(this, _mediaController5, void 0);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template9.content.cloneNode(true));\n    }\n  }\n  static get observedAttributes() {\n    return [MediaStateReceiverAttributes.MEDIA_CONTROLLER];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet12(this, _mediaController5)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet12(this, _mediaController5, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet12(this, _mediaController5, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet12(this, _mediaController5)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet12(this, _mediaController5, (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId));\n      (_c = (_b = __privateGet12(this, _mediaController5)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    (_b = (_a3 = __privateGet12(this, _mediaController5)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet12(this, _mediaController5, null);\n  }\n};\n_mediaController5 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-control-bar\")) {\n  GlobalThis.customElements.define(\"media-control-bar\", MediaControlBar);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-text-display.js\nvar __accessCheck13 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet13 = (obj, member, getter) => {\n  __accessCheck13(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd13 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet13 = (obj, member, value, setter) => {\n  __accessCheck13(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController6;\nvar template10 = Document2.createElement(\"template\");\ntemplate10.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      font: var(--media-font,\n        var(--media-font-weight, normal)\n        var(--media-font-size, 14px) /\n        var(--media-text-content-height, var(--media-control-height, 24px))\n        var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n      color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n      background: var(--media-text-background, var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .7))));\n      padding: var(--media-control-padding, 10px);\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      vertical-align: middle;\n      box-sizing: border-box;\n      text-align: center;\n      pointer-events: auto;\n    }\n\n    ${/*\n  Only show outline when keyboard focusing.\n  https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo\n*/\n\"\"}\n    :host(:focus-visible) {\n      box-shadow: inset 0 0 0 2px rgb(27 127 204 / .9);\n      outline: 0;\n    }\n\n    ${/*\n* hide default focus ring, particularly when using mouse\n*/\n\"\"}\n    :host(:where(:focus)) {\n      box-shadow: none;\n      outline: 0;\n    }\n  </style>\n  <slot></slot>\n`;\nvar MediaTextDisplay = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd13(this, _mediaController6, void 0);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template10.content.cloneNode(true));\n    }\n  }\n  static get observedAttributes() {\n    return [MediaStateReceiverAttributes.MEDIA_CONTROLLER];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet13(this, _mediaController6)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet13(this, _mediaController6, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet13(this, _mediaController6, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet13(this, _mediaController6)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    style.setProperty(\n      \"display\",\n      `var(--media-control-display, var(--${this.localName}-display, inline-flex))`\n    );\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet13(this, _mediaController6, (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId));\n      (_c = (_b = __privateGet13(this, _mediaController6)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    (_b = (_a3 = __privateGet13(this, _mediaController6)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet13(this, _mediaController6, null);\n  }\n};\n_mediaController6 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-text-display\")) {\n  GlobalThis.customElements.define(\"media-text-display\", MediaTextDisplay);\n}\nvar media_text_display_default = MediaTextDisplay;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-duration-display.js\nvar __accessCheck14 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet14 = (obj, member, getter) => {\n  __accessCheck14(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd14 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet14 = (obj, member, value, setter) => {\n  __accessCheck14(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _slot;\nvar MediaDurationDisplay = class extends MediaTextDisplay {\n  constructor() {\n    super();\n    __privateAdd14(this, _slot, void 0);\n    __privateSet14(this, _slot, this.shadowRoot.querySelector(\"slot\"));\n    __privateGet14(this, _slot).textContent = formatTime(0);\n  }\n  static get observedAttributes() {\n    return [...super.observedAttributes, MediaUIAttributes.MEDIA_DURATION];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === MediaUIAttributes.MEDIA_DURATION) {\n      __privateGet14(this, _slot).textContent = formatTime(+newValue);\n    }\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n  }\n  /**\n   * @type {number | undefined} In seconds\n   */\n  get mediaDuration() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_DURATION);\n  }\n  set mediaDuration(time) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_DURATION, time);\n  }\n};\n_slot = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-duration-display\")) {\n  GlobalThis.customElements.define(\n    \"media-duration-display\",\n    MediaDurationDisplay\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-fullscreen-button.js\nvar enterFullscreenIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M16 3v2.5h3.5V9H22V3h-6ZM4 9h2.5V5.5H10V3H4v6Zm15.5 9.5H16V21h6v-6h-2.5v3.5ZM6.5 15H4v6h6v-2.5H6.5V15Z\"/>\n</svg>`;\nvar exitFullscreenIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M18.5 6.5V3H16v6h6V6.5h-3.5ZM16 21h2.5v-3.5H22V15h-6v6ZM4 17.5h3.5V21H10v-6H4v2.5Zm3.5-11H4V9h6V3H7.5v3.5Z\"/>\n</svg>`;\nvar slotTemplate6 = Document2.createElement(\"template\");\nslotTemplate6.innerHTML = /*html*/\n`\n  <style>\n  :host([${MediaUIAttributes.MEDIA_IS_FULLSCREEN}]) slot:not([name=exit]):not([name=icon]) {\n    display: none !important;\n  }\n\n  ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n  :host(:not([${MediaUIAttributes.MEDIA_IS_FULLSCREEN}])) slot:not([name=enter]):not([name=icon]) {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"enter\">${enterFullscreenIcon}</slot>\n    <slot name=\"exit\">${exitFullscreenIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel3 = (el) => {\n  const label = el.mediaIsFullscreen ? verbs.EXIT_FULLSCREEN() : verbs.ENTER_FULLSCREEN();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaFullscreenButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_IS_FULLSCREEN,\n      MediaUIAttributes.MEDIA_FULLSCREEN_UNAVAILABLE\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate6 }, options));\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    updateAriaLabel3(this);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_IS_FULLSCREEN) {\n      updateAriaLabel3(this);\n    }\n  }\n  /**\n   * @type {string | undefined} Fullscreen unavailability state\n   */\n  get mediaFullscreenUnavailable() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_FULLSCREEN_UNAVAILABLE);\n  }\n  set mediaFullscreenUnavailable(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_FULLSCREEN_UNAVAILABLE, value);\n  }\n  /**\n   * @type {boolean} Whether fullscreen is available\n   */\n  get mediaIsFullscreen() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_IS_FULLSCREEN);\n  }\n  set mediaIsFullscreen(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_IS_FULLSCREEN, value);\n  }\n  handleClick() {\n    const eventName = this.mediaIsFullscreen ? MediaUIEvents.MEDIA_EXIT_FULLSCREEN_REQUEST : MediaUIEvents.MEDIA_ENTER_FULLSCREEN_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-fullscreen-button\")) {\n  GlobalThis.customElements.define(\n    \"media-fullscreen-button\",\n    MediaFullscreenButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-live-button.js\nvar { MEDIA_TIME_IS_LIVE, MEDIA_PAUSED } = MediaUIAttributes;\nvar { MEDIA_SEEK_TO_LIVE_REQUEST, MEDIA_PLAY_REQUEST } = MediaUIEvents;\nvar indicatorSVG = '<svg viewBox=\"0 0 6 12\"><circle cx=\"3\" cy=\"6\" r=\"2\"></circle></svg>';\nvar slotTemplate7 = Document2.createElement(\"template\");\nslotTemplate7.innerHTML = /*html*/\n`\n  <style>\n\n  slot[name=indicator] > *,\n  :host ::slotted([slot=indicator]) {\n    ${/* Override styles for icon-only buttons */\n\"\"}\n    min-width: auto;\n    fill: var(--media-live-button-icon-color, rgb(140, 140, 140));\n    color: var(--media-live-button-icon-color, rgb(140, 140, 140));\n  }\n\n  :host([${MEDIA_TIME_IS_LIVE}]:not([${MEDIA_PAUSED}])) slot[name=indicator] > *,\n  :host([${MEDIA_TIME_IS_LIVE}]:not([${MEDIA_PAUSED}])) ::slotted([slot=indicator]) {\n    fill: var(--media-live-button-indicator-color, rgb(255, 0, 0));\n    color: var(--media-live-button-indicator-color, rgb(255, 0, 0));\n  }\n\n  :host([${MEDIA_TIME_IS_LIVE}]:not([${MEDIA_PAUSED}])) {\n    cursor: not-allowed;\n  }\n\n  </style>\n\n  <slot name=\"indicator\">${indicatorSVG}</slot>\n  ${/*\n  A new line between spacer and text creates inconsistent spacing\n  between slotted items and default slots.\n*/\n\"\"}\n  <slot name=\"spacer\">&nbsp;</slot><slot name=\"text\">LIVE</slot>\n`;\nvar updateAriaAttributes = (el) => {\n  const isPausedOrNotLive = el.mediaPaused || !el.mediaTimeIsLive;\n  const label = isPausedOrNotLive ? verbs.SEEK_LIVE() : verbs.PLAYING_LIVE();\n  el.setAttribute(\"aria-label\", label);\n  isPausedOrNotLive ? el.removeAttribute(\"aria-disabled\") : el.setAttribute(\"aria-disabled\", \"true\");\n};\nvar MediaLiveButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [...super.observedAttributes, MEDIA_PAUSED, MEDIA_TIME_IS_LIVE];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate7 }, options));\n  }\n  connectedCallback() {\n    updateAriaAttributes(this);\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    updateAriaAttributes(this);\n  }\n  /**\n   * @type {boolean} Is the media paused\n   */\n  get mediaPaused() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED);\n  }\n  set mediaPaused(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED, value);\n  }\n  /**\n   * @type {boolean} Is the media playback currently live\n   */\n  get mediaTimeIsLive() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_TIME_IS_LIVE);\n  }\n  set mediaTimeIsLive(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_TIME_IS_LIVE, value);\n  }\n  handleClick() {\n    if (!this.mediaPaused && this.mediaTimeIsLive)\n      return;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(MEDIA_SEEK_TO_LIVE_REQUEST, {\n        composed: true,\n        bubbles: true\n      })\n    );\n    if (this.hasAttribute(MEDIA_PAUSED)) {\n      this.dispatchEvent(\n        new GlobalThis.CustomEvent(MEDIA_PLAY_REQUEST, {\n          composed: true,\n          bubbles: true\n        })\n      );\n    }\n  }\n};\nif (!GlobalThis.customElements.get(\"media-live-button\")) {\n  GlobalThis.customElements.define(\"media-live-button\", MediaLiveButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-loading-indicator.js\nvar __accessCheck15 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet15 = (obj, member, getter) => {\n  __accessCheck15(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd15 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet15 = (obj, member, value, setter) => {\n  __accessCheck15(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController7;\nvar _delay;\nvar Attributes6 = {\n  LOADING_DELAY: \"loadingdelay\"\n};\nvar DEFAULT_LOADING_DELAY = 500;\nvar template11 = Document2.createElement(\"template\");\nvar loadingIndicatorIcon = `\n<svg aria-hidden=\"true\" viewBox=\"0 0 100 100\">\n  <path d=\"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50\">\n    <animateTransform\n       attributeName=\"transform\"\n       attributeType=\"XML\"\n       type=\"rotate\"\n       dur=\"1s\"\n       from=\"0 50 50\"\n       to=\"360 50 50\"\n       repeatCount=\"indefinite\" />\n  </path>\n</svg>\n`;\ntemplate11.innerHTML = /*html*/\n`\n<style>\n:host {\n  display: var(--media-control-display, var(--media-loading-indicator-display, inline-block));\n  vertical-align: middle;\n  box-sizing: border-box;\n  --_loading-indicator-delay: var(--media-loading-indicator-transition-delay, ${DEFAULT_LOADING_DELAY}ms);\n}\n\n#status {\n  color: rgba(0,0,0,0);\n  width: 0px;\n  height: 0px;\n}\n\n:host slot[name=icon] > *,\n:host ::slotted([slot=icon]) {\n  opacity: var(--media-loading-indicator-opacity, 0);\n  transition: opacity 0.15s;\n}\n\n:host([${MediaUIAttributes.MEDIA_LOADING}]:not([${MediaUIAttributes.MEDIA_PAUSED}])) slot[name=icon] > *,\n:host([${MediaUIAttributes.MEDIA_LOADING}]:not([${MediaUIAttributes.MEDIA_PAUSED}])) ::slotted([slot=icon]) {\n  opacity: var(--media-loading-indicator-opacity, 1);\n  transition: opacity 0.15s var(--_loading-indicator-delay);\n}\n\n:host #status {\n  visibility: var(--media-loading-indicator-opacity, hidden);\n  transition: visibility 0.15s;\n}\n\n:host([${MediaUIAttributes.MEDIA_LOADING}]:not([${MediaUIAttributes.MEDIA_PAUSED}])) #status {\n  visibility: var(--media-loading-indicator-opacity, visible);\n  transition: visibility 0.15s var(--_loading-indicator-delay);\n}\n\nsvg, img, ::slotted(svg), ::slotted(img) {\n  width: var(--media-loading-indicator-icon-width);\n  height: var(--media-loading-indicator-icon-height, 100px);\n  fill: var(--media-icon-color, var(--media-primary-color, rgb(238 238 238)));\n  vertical-align: middle;\n}\n</style>\n\n<slot name=\"icon\">${loadingIndicatorIcon}</slot>\n<div id=\"status\" role=\"status\" aria-live=\"polite\">${nouns.MEDIA_LOADING()}</div>\n`;\nvar MediaLoadingIndicator = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd15(this, _mediaController7, void 0);\n    __privateAdd15(this, _delay, DEFAULT_LOADING_DELAY);\n    if (!this.shadowRoot) {\n      const shadow = this.attachShadow({ mode: \"open\" });\n      const indicatorHTML = template11.content.cloneNode(true);\n      shadow.appendChild(indicatorHTML);\n    }\n  }\n  static get observedAttributes() {\n    return [\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER,\n      MediaUIAttributes.MEDIA_PAUSED,\n      MediaUIAttributes.MEDIA_LOADING,\n      Attributes6.LOADING_DELAY\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === Attributes6.LOADING_DELAY && oldValue !== newValue) {\n      this.loadingDelay = Number(newValue);\n    } else if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet15(this, _mediaController7)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet15(this, _mediaController7, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet15(this, _mediaController7, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet15(this, _mediaController7)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet15(this, _mediaController7, (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId));\n      (_c = (_b = __privateGet15(this, _mediaController7)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    (_b = (_a3 = __privateGet15(this, _mediaController7)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet15(this, _mediaController7, null);\n  }\n  /**\n   * @type {number} Delay in ms\n   */\n  get loadingDelay() {\n    return __privateGet15(this, _delay);\n  }\n  set loadingDelay(delay2) {\n    __privateSet15(this, _delay, delay2);\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    style.setProperty(\n      \"--_loading-indicator-delay\",\n      `var(--media-loading-indicator-transition-delay, ${delay2}ms)`\n    );\n  }\n  /**\n   * @type {boolean} Is the media paused\n   */\n  get mediaPaused() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED);\n  }\n  set mediaPaused(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED, value);\n  }\n  /**\n   * @type {boolean} Is the media loading\n   */\n  get mediaLoading() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_LOADING);\n  }\n  set mediaLoading(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_LOADING, value);\n  }\n};\n_mediaController7 = /* @__PURE__ */ new WeakMap();\n_delay = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-loading-indicator\")) {\n  GlobalThis.customElements.define(\n    \"media-loading-indicator\",\n    MediaLoadingIndicator\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-mute-button.js\nvar { MEDIA_VOLUME_LEVEL } = MediaUIAttributes;\nvar offIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M16.5 12A4.5 4.5 0 0 0 14 8v2.18l2.45 2.45a4.22 4.22 0 0 0 .05-.63Zm2.5 0a6.84 6.84 0 0 1-.54 2.64L20 16.15A8.8 8.8 0 0 0 21 12a9 9 0 0 0-7-8.77v2.06A7 7 0 0 1 19 12ZM4.27 3 3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25A6.92 6.92 0 0 1 14 18.7v2.06A9 9 0 0 0 17.69 19l2 2.05L21 19.73l-9-9L4.27 3ZM12 4 9.91 6.09 12 8.18V4Z\"/>\n</svg>`;\nvar lowIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M3 9v6h4l5 5V4L7 9H3Zm13.5 3A4.5 4.5 0 0 0 14 8v8a4.47 4.47 0 0 0 2.5-4Z\"/>\n</svg>`;\nvar highIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M3 9v6h4l5 5V4L7 9H3Zm13.5 3A4.5 4.5 0 0 0 14 8v8a4.47 4.47 0 0 0 2.5-4ZM14 3.23v2.06a7 7 0 0 1 0 13.42v2.06a9 9 0 0 0 0-17.54Z\"/>\n</svg>`;\nvar slotTemplate8 = Document2.createElement(\"template\");\nslotTemplate8.innerHTML = /*html*/\n`\n  <style>\n  ${/* Default to High slot/icon. */\n\"\"}\n  :host(:not([${MEDIA_VOLUME_LEVEL}])) slot:not([name=high]):not([name=icon]), \n  :host([${MEDIA_VOLUME_LEVEL}=high]) slot:not([name=high]):not([name=icon]) {\n    display: none !important;\n  }\n\n  :host([${MEDIA_VOLUME_LEVEL}=off]) slot:not([name=off]):not([name=icon]) {\n    display: none !important;\n  }\n\n  :host([${MEDIA_VOLUME_LEVEL}=low]) slot:not([name=low]):not([name=icon]) {\n    display: none !important;\n  }\n\n  :host([${MEDIA_VOLUME_LEVEL}=medium]) slot:not([name=medium]):not([name=icon]) {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"off\">${offIcon}</slot>\n    <slot name=\"low\">${lowIcon}</slot>\n    <slot name=\"medium\">${lowIcon}</slot>\n    <slot name=\"high\">${highIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel4 = (el) => {\n  const muted = el.mediaVolumeLevel === \"off\";\n  const label = muted ? verbs.UNMUTE() : verbs.MUTE();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaMuteButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [...super.observedAttributes, MediaUIAttributes.MEDIA_VOLUME_LEVEL];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate8 }, options));\n  }\n  connectedCallback() {\n    updateAriaLabel4(this);\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === MediaUIAttributes.MEDIA_VOLUME_LEVEL) {\n      updateAriaLabel4(this);\n    }\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n  }\n  /**\n   * @type {string | undefined}\n   */\n  get mediaVolumeLevel() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_VOLUME_LEVEL);\n  }\n  set mediaVolumeLevel(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_VOLUME_LEVEL, value);\n  }\n  handleClick() {\n    const eventName = this.mediaVolumeLevel === \"off\" ? MediaUIEvents.MEDIA_UNMUTE_REQUEST : MediaUIEvents.MEDIA_MUTE_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-mute-button\")) {\n  GlobalThis.customElements.define(\"media-mute-button\", MediaMuteButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-pip-button.js\nvar pipIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 28 24\">\n  <path d=\"M24 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1Zm-1 16H5V5h18v14Zm-3-8h-7v5h7v-5Z\"/>\n</svg>`;\nvar slotTemplate9 = Document2.createElement(\"template\");\nslotTemplate9.innerHTML = /*html*/\n`\n  <style>\n  :host([${MediaUIAttributes.MEDIA_IS_PIP}]) slot:not([name=exit]):not([name=icon]) {\n    display: none !important;\n  }\n\n  ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n  :host(:not([${MediaUIAttributes.MEDIA_IS_PIP}])) slot:not([name=enter]):not([name=icon]) {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"enter\">${pipIcon}</slot>\n    <slot name=\"exit\">${pipIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel5 = (el) => {\n  const label = el.mediaIsPip ? verbs.EXIT_PIP() : verbs.ENTER_PIP();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaPipButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_IS_PIP,\n      MediaUIAttributes.MEDIA_PIP_UNAVAILABLE\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate9 }, options));\n  }\n  connectedCallback() {\n    updateAriaLabel5(this);\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === MediaUIAttributes.MEDIA_IS_PIP) {\n      updateAriaLabel5(this);\n    }\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n  }\n  /**\n   * @type {string | undefined} Pip unavailability state\n   */\n  get mediaPipUnavailable() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_PIP_UNAVAILABLE);\n  }\n  set mediaPipUnavailable(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_PIP_UNAVAILABLE, value);\n  }\n  /**\n   * @type {boolean} Is the media currently playing picture-in-picture\n   */\n  get mediaIsPip() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_IS_PIP);\n  }\n  set mediaIsPip(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_IS_PIP, value);\n  }\n  handleClick() {\n    const eventName = this.mediaIsPip ? MediaUIEvents.MEDIA_EXIT_PIP_REQUEST : MediaUIEvents.MEDIA_ENTER_PIP_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-pip-button\")) {\n  GlobalThis.customElements.define(\"media-pip-button\", MediaPipButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-playback-rate-button.js\nvar __accessCheck16 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet16 = (obj, member, getter) => {\n  __accessCheck16(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd16 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar _rates;\nvar Attributes7 = {\n  RATES: \"rates\"\n};\nvar DEFAULT_RATES = [1, 1.2, 1.5, 1.7, 2];\nvar DEFAULT_RATE = 1;\nvar slotTemplate10 = Document2.createElement(\"template\");\nslotTemplate10.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      min-width: 5ch;\n      padding: var(--media-button-padding, var(--media-control-padding, 10px 5px));\n    }\n  </style>\n  <slot name=\"icon\"></slot>\n`;\nvar MediaPlaybackRateButton = class extends MediaChromeButton {\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate10 }, options));\n    __privateAdd16(this, _rates, new AttributeTokenList(this, Attributes7.RATES, {\n      defaultValue: DEFAULT_RATES\n    }));\n    this.container = this.shadowRoot.querySelector('slot[name=\"icon\"]');\n    this.container.innerHTML = `${DEFAULT_RATE}x`;\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      Attributes7.RATES\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === Attributes7.RATES) {\n      __privateGet16(this, _rates).value = newValue;\n    }\n    if (attrName === MediaUIAttributes.MEDIA_PLAYBACK_RATE) {\n      const newPlaybackRate = newValue ? +newValue : Number.NaN;\n      const playbackRate = !Number.isNaN(newPlaybackRate) ? newPlaybackRate : DEFAULT_RATE;\n      this.container.innerHTML = `${playbackRate}x`;\n      this.setAttribute(\"aria-label\", nouns.PLAYBACK_RATE({ playbackRate }));\n    }\n  }\n  /**\n   * @type { AttributeTokenList | Array<number> | undefined} Will return a DOMTokenList.\n   * Setting a value will accept an array of numbers.\n   */\n  get rates() {\n    return __privateGet16(this, _rates);\n  }\n  set rates(value) {\n    if (!value) {\n      __privateGet16(this, _rates).value = \"\";\n    } else if (Array.isArray(value)) {\n      __privateGet16(this, _rates).value = value.join(\" \");\n    }\n  }\n  /**\n   * @type {number} The current playback rate\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      DEFAULT_RATE\n    );\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n  handleClick() {\n    var _a3, _b;\n    const availableRates = Array.from(this.rates.values(), (str) => +str).sort(\n      (a2, b4) => a2 - b4\n    );\n    const detail = (_b = (_a3 = availableRates.find((r10) => r10 > this.mediaPlaybackRate)) != null ? _a3 : availableRates[0]) != null ? _b : DEFAULT_RATE;\n    const evt = new GlobalThis.CustomEvent(\n      MediaUIEvents.MEDIA_PLAYBACK_RATE_REQUEST,\n      { composed: true, bubbles: true, detail }\n    );\n    this.dispatchEvent(evt);\n  }\n};\n_rates = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-playback-rate-button\")) {\n  GlobalThis.customElements.define(\n    \"media-playback-rate-button\",\n    MediaPlaybackRateButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-playback-rate-menu.js\nvar __accessCheck17 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet17 = (obj, member, getter) => {\n  __accessCheck17(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd17 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateMethod9 = (obj, member, method) => {\n  __accessCheck17(obj, member, \"access private method\");\n  return method;\n};\nvar _rates2;\nvar _render3;\nvar render_fn3;\nvar _onChange3;\nvar onChange_fn3;\nvar Attributes8 = {\n  RATES: \"rates\"\n};\nvar MediaPlaybackRateMenu = class extends MediaChromeMenu {\n  constructor() {\n    super();\n    __privateAdd17(this, _render3);\n    __privateAdd17(this, _onChange3);\n    __privateAdd17(this, _rates2, new AttributeTokenList(this, Attributes8.RATES, {\n      defaultValue: DEFAULT_RATES\n    }));\n    __privateMethod9(this, _render3, render_fn3).call(this);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      Attributes8.RATES\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_PLAYBACK_RATE && oldValue != newValue) {\n      this.value = newValue;\n    } else if (attrName === Attributes8.RATES && oldValue != newValue) {\n      __privateGet17(this, _rates2).value = newValue;\n      __privateMethod9(this, _render3, render_fn3).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod9(this, _onChange3, onChange_fn3));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod9(this, _onChange3, onChange_fn3));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\n      \"media-playback-rate-menu-button\"\n    );\n  }\n  /**\n   * @type { AttributeTokenList | Array<number> | undefined} Will return a DOMTokenList.\n   * Setting a value will accept an array of numbers.\n   */\n  get rates() {\n    return __privateGet17(this, _rates2);\n  }\n  set rates(value) {\n    if (!value) {\n      __privateGet17(this, _rates2).value = \"\";\n    } else if (Array.isArray(value)) {\n      __privateGet17(this, _rates2).value = value.join(\" \");\n    }\n    __privateMethod9(this, _render3, render_fn3).call(this);\n  }\n  /**\n   * @type {number} The current playback rate\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      DEFAULT_RATE\n    );\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n};\n_rates2 = /* @__PURE__ */ new WeakMap();\n_render3 = /* @__PURE__ */ new WeakSet();\nrender_fn3 = function() {\n  this.defaultSlot.textContent = \"\";\n  for (const rate of this.rates) {\n    const item = createMenuItem({\n      type: \"radio\",\n      text: this.formatMenuItemText(`${rate}x`, rate),\n      value: rate,\n      checked: this.mediaPlaybackRate == rate\n    });\n    item.prepend(createIndicator(this, \"checked-indicator\"));\n    this.defaultSlot.append(item);\n  }\n};\n_onChange3 = /* @__PURE__ */ new WeakSet();\nonChange_fn3 = function() {\n  if (!this.value)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_PLAYBACK_RATE_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-playback-rate-menu\")) {\n  GlobalThis.customElements.define(\n    \"media-playback-rate-menu\",\n    MediaPlaybackRateMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-playback-rate-menu-button.js\nvar __accessCheck18 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet18 = (obj, member, getter) => {\n  __accessCheck18(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd18 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar _rates3;\nvar Attributes9 = {\n  RATES: \"rates\"\n};\nvar DEFAULT_RATES2 = [1, 1.2, 1.5, 1.7, 2];\nvar DEFAULT_RATE2 = 1;\nvar slotTemplate11 = Document2.createElement(\"template\");\nslotTemplate11.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      min-width: 5ch;\n      padding: var(--media-button-padding, var(--media-control-padding, 10px 5px));\n    }\n  </style>\n  <slot name=\"icon\"></slot>\n`;\nvar MediaPlaybackRateMenuButton = class extends MediaChromeMenuButton {\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate11 }, options));\n    __privateAdd18(this, _rates3, new AttributeTokenList(this, Attributes9.RATES, {\n      defaultValue: DEFAULT_RATES2\n    }));\n    this.container = this.shadowRoot.querySelector('slot[name=\"icon\"]');\n    this.container.innerHTML = `${DEFAULT_RATE2}x`;\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      Attributes9.RATES\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === Attributes9.RATES) {\n      __privateGet18(this, _rates3).value = newValue;\n    }\n    if (attrName === MediaUIAttributes.MEDIA_PLAYBACK_RATE) {\n      const newPlaybackRate = newValue ? +newValue : Number.NaN;\n      const playbackRate = !Number.isNaN(newPlaybackRate) ? newPlaybackRate : DEFAULT_RATE2;\n      this.container.innerHTML = `${playbackRate}x`;\n      this.setAttribute(\"aria-label\", nouns.PLAYBACK_RATE({ playbackRate }));\n    }\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-playback-rate-menu\");\n  }\n  /**\n   * @type { AttributeTokenList | Array<number> | undefined} Will return a DOMTokenList.\n   * Setting a value will accept an array of numbers.\n   */\n  get rates() {\n    return __privateGet18(this, _rates3);\n  }\n  set rates(value) {\n    if (!value) {\n      __privateGet18(this, _rates3).value = \"\";\n    } else if (Array.isArray(value)) {\n      __privateGet18(this, _rates3).value = value.join(\" \");\n    }\n  }\n  /**\n   * @type {number} The current playback rate\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      DEFAULT_RATE2\n    );\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n};\n_rates3 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-playback-rate-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-playback-rate-menu-button\",\n    MediaPlaybackRateMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-play-button.js\nvar playIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"m6 21 15-9L6 3v18Z\"/>\n</svg>`;\nvar pauseIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M6 20h4V4H6v16Zm8-16v16h4V4h-4Z\"/>\n</svg>`;\nvar slotTemplate12 = Document2.createElement(\"template\");\nslotTemplate12.innerHTML = /*html*/\n`\n  <style>\n  :host([${MediaUIAttributes.MEDIA_PAUSED}]) slot[name=pause] {\n    display: none !important;\n  }\n\n  :host(:not([${MediaUIAttributes.MEDIA_PAUSED}])) slot[name=play] {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"play\">${playIcon}</slot>\n    <slot name=\"pause\">${pauseIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel6 = (el) => {\n  const label = el.mediaPaused ? verbs.PLAY() : verbs.PAUSE();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaPlayButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PAUSED,\n      MediaUIAttributes.MEDIA_ENDED\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate12 }, options));\n  }\n  connectedCallback() {\n    updateAriaLabel6(this);\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === MediaUIAttributes.MEDIA_PAUSED) {\n      updateAriaLabel6(this);\n    }\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n  }\n  /**\n   * @type {boolean} Is the media paused\n   */\n  get mediaPaused() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED);\n  }\n  set mediaPaused(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED, value);\n  }\n  handleClick() {\n    const eventName = this.mediaPaused ? MediaUIEvents.MEDIA_PLAY_REQUEST : MediaUIEvents.MEDIA_PAUSE_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-play-button\")) {\n  GlobalThis.customElements.define(\"media-play-button\", MediaPlayButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-poster-image.js\nvar Attributes10 = {\n  PLACEHOLDER_SRC: \"placeholdersrc\",\n  SRC: \"src\"\n};\nvar template12 = Document2.createElement(\"template\");\ntemplate12.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      pointer-events: none;\n      display: var(--media-poster-image-display, inline-block);\n      box-sizing: border-box;\n    }\n\n    img {\n      max-width: 100%;\n      max-height: 100%;\n      min-width: 100%;\n      min-height: 100%;\n      background-repeat: no-repeat;\n      background-position: var(--media-poster-image-background-position, var(--media-object-position, center));\n      background-size: var(--media-poster-image-background-size, var(--media-object-fit, contain));\n      object-fit: var(--media-object-fit, contain);\n      object-position: var(--media-object-position, center);\n    }\n  </style>\n\n  <img part=\"poster img\" aria-hidden=\"true\" id=\"image\"/>\n`;\nvar unsetBackgroundImage = (el) => {\n  el.style.removeProperty(\"background-image\");\n};\nvar setBackgroundImage = (el, image) => {\n  el.style[\"background-image\"] = `url('${image}')`;\n};\nvar MediaPosterImage = class extends GlobalThis.HTMLElement {\n  static get observedAttributes() {\n    return [Attributes10.PLACEHOLDER_SRC, Attributes10.SRC];\n  }\n  constructor() {\n    super();\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template12.content.cloneNode(true));\n    }\n    this.image = this.shadowRoot.querySelector(\"#image\");\n  }\n  attributeChangedCallback(attrName, _oldValue, newValue) {\n    if (attrName === Attributes10.SRC) {\n      if (newValue == null) {\n        this.image.removeAttribute(Attributes10.SRC);\n      } else {\n        this.image.setAttribute(Attributes10.SRC, newValue);\n      }\n    }\n    if (attrName === Attributes10.PLACEHOLDER_SRC) {\n      if (newValue == null) {\n        unsetBackgroundImage(this.image);\n      } else {\n        setBackgroundImage(this.image, newValue);\n      }\n    }\n  }\n  /**\n   * @type {string | undefined}\n   */\n  get placeholderSrc() {\n    return getStringAttr(this, Attributes10.PLACEHOLDER_SRC);\n  }\n  set placeholderSrc(value) {\n    setStringAttr(this, Attributes10.SRC, value);\n  }\n  /**\n   * @type {string | undefined}\n   */\n  get src() {\n    return getStringAttr(this, Attributes10.SRC);\n  }\n  set src(value) {\n    setStringAttr(this, Attributes10.SRC, value);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-poster-image\")) {\n  GlobalThis.customElements.define(\"media-poster-image\", MediaPosterImage);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-preview-chapter-display.js\nvar __accessCheck19 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet19 = (obj, member, getter) => {\n  __accessCheck19(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd19 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet16 = (obj, member, value, setter) => {\n  __accessCheck19(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _slot2;\nvar MediaPreviewChapterDisplay = class extends media_text_display_default {\n  constructor() {\n    super();\n    __privateAdd19(this, _slot2, void 0);\n    __privateSet16(this, _slot2, this.shadowRoot.querySelector(\"slot\"));\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PREVIEW_CHAPTER\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_PREVIEW_CHAPTER) {\n      if (newValue !== oldValue && newValue != null) {\n        __privateGet19(this, _slot2).textContent = newValue;\n        if (newValue !== \"\") {\n          this.setAttribute(\"aria-valuetext\", `chapter: ${newValue}`);\n        } else {\n          this.removeAttribute(\"aria-valuetext\");\n        }\n      }\n    }\n  }\n  /**\n   * @type {string | undefined} Timeline preview chapter\n   */\n  get mediaPreviewChapter() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_CHAPTER);\n  }\n  set mediaPreviewChapter(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_CHAPTER, value);\n  }\n};\n_slot2 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-preview-chapter-display\")) {\n  GlobalThis.customElements.define(\n    \"media-preview-chapter-display\",\n    MediaPreviewChapterDisplay\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-preview-thumbnail.js\nvar __accessCheck20 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet20 = (obj, member, getter) => {\n  __accessCheck20(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd20 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet17 = (obj, member, value, setter) => {\n  __accessCheck20(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController8;\nvar template13 = Document2.createElement(\"template\");\ntemplate13.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      box-sizing: border-box;\n      display: var(--media-control-display, var(--media-preview-thumbnail-display, inline-block));\n      overflow: hidden;\n    }\n\n    img {\n      display: none;\n      position: relative;\n    }\n  </style>\n  <img crossorigin loading=\"eager\" decoding=\"async\">\n`;\nvar MediaPreviewThumbnail = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd20(this, _mediaController8, void 0);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template13.content.cloneNode(true));\n    }\n  }\n  static get observedAttributes() {\n    return [\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER,\n      MediaUIAttributes.MEDIA_PREVIEW_IMAGE,\n      MediaUIAttributes.MEDIA_PREVIEW_COORDS\n    ];\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet17(\n        this,\n        _mediaController8,\n        // @ts-ignore\n        (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId)\n      );\n      (_c = (_b = __privateGet20(this, _mediaController8)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    (_b = (_a3 = __privateGet20(this, _mediaController8)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet17(this, _mediaController8, null);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if ([\n      MediaUIAttributes.MEDIA_PREVIEW_IMAGE,\n      MediaUIAttributes.MEDIA_PREVIEW_COORDS\n    ].includes(attrName)) {\n      this.update();\n    }\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet20(this, _mediaController8)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet17(this, _mediaController8, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet17(this, _mediaController8, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet20(this, _mediaController8)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    }\n  }\n  /**\n   * @type {string | undefined} The url of the preview image\n   */\n  get mediaPreviewImage() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_IMAGE);\n  }\n  set mediaPreviewImage(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_IMAGE, value);\n  }\n  /**\n   * @type {Array<number> | undefined} Fixed length array [x, y, width, height] or undefined\n   */\n  get mediaPreviewCoords() {\n    const attrVal = this.getAttribute(MediaUIAttributes.MEDIA_PREVIEW_COORDS);\n    if (!attrVal)\n      return void 0;\n    return attrVal.split(/\\s+/).map((coord) => +coord);\n  }\n  set mediaPreviewCoords(value) {\n    if (!value) {\n      this.removeAttribute(MediaUIAttributes.MEDIA_PREVIEW_COORDS);\n      return;\n    }\n    this.setAttribute(MediaUIAttributes.MEDIA_PREVIEW_COORDS, value.join(\" \"));\n  }\n  update() {\n    const coords = this.mediaPreviewCoords;\n    const previewImage = this.mediaPreviewImage;\n    if (!(coords && previewImage))\n      return;\n    const [x4, y5, w2, h3] = coords;\n    const src = previewImage.split(\"#\")[0];\n    const computedStyle = getComputedStyle(this);\n    const { maxWidth, maxHeight, minWidth, minHeight } = computedStyle;\n    const maxRatio = Math.min(parseInt(maxWidth) / w2, parseInt(maxHeight) / h3);\n    const minRatio = Math.max(parseInt(minWidth) / w2, parseInt(minHeight) / h3);\n    const isScalingDown = maxRatio < 1;\n    const scale = isScalingDown ? maxRatio : minRatio > 1 ? minRatio : 1;\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    const imgStyle = getOrInsertCSSRule(this.shadowRoot, \"img\").style;\n    const img = this.shadowRoot.querySelector(\"img\");\n    const extremum = isScalingDown ? \"min\" : \"max\";\n    style.setProperty(`${extremum}-width`, \"initial\", \"important\");\n    style.setProperty(`${extremum}-height`, \"initial\", \"important\");\n    style.width = `${w2 * scale}px`;\n    style.height = `${h3 * scale}px`;\n    const resize = () => {\n      imgStyle.width = `${this.imgWidth * scale}px`;\n      imgStyle.height = `${this.imgHeight * scale}px`;\n      imgStyle.display = \"block\";\n    };\n    if (img.src !== src) {\n      img.onload = () => {\n        this.imgWidth = img.naturalWidth;\n        this.imgHeight = img.naturalHeight;\n        resize();\n      };\n      img.src = src;\n      resize();\n    }\n    resize();\n    imgStyle.transform = `translate(-${x4 * scale}px, -${y5 * scale}px)`;\n  }\n};\n_mediaController8 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-preview-thumbnail\")) {\n  GlobalThis.customElements.define(\n    \"media-preview-thumbnail\",\n    MediaPreviewThumbnail\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-preview-time-display.js\nvar __accessCheck21 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet21 = (obj, member, getter) => {\n  __accessCheck21(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd21 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet18 = (obj, member, value, setter) => {\n  __accessCheck21(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _slot3;\nvar MediaPreviewTimeDisplay = class extends MediaTextDisplay {\n  constructor() {\n    super();\n    __privateAdd21(this, _slot3, void 0);\n    __privateSet18(this, _slot3, this.shadowRoot.querySelector(\"slot\"));\n    __privateGet21(this, _slot3).textContent = formatTime(0);\n  }\n  static get observedAttributes() {\n    return [...super.observedAttributes, MediaUIAttributes.MEDIA_PREVIEW_TIME];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_PREVIEW_TIME && newValue != null) {\n      __privateGet21(this, _slot3).textContent = formatTime(newValue);\n    }\n  }\n  /**\n   * @type {number | undefined} Timeline preview time\n   */\n  get mediaPreviewTime() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_PREVIEW_TIME);\n  }\n  set mediaPreviewTime(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PREVIEW_TIME, value);\n  }\n};\n_slot3 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-preview-time-display\")) {\n  GlobalThis.customElements.define(\n    \"media-preview-time-display\",\n    MediaPreviewTimeDisplay\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-rendition-menu.js\nvar __accessCheck22 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet22 = (obj, member, getter) => {\n  __accessCheck22(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd22 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet19 = (obj, member, value, setter) => {\n  __accessCheck22(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod10 = (obj, member, method) => {\n  __accessCheck22(obj, member, \"access private method\");\n  return method;\n};\nvar _renditionList;\nvar _prevState3;\nvar _render4;\nvar render_fn4;\nvar _onChange4;\nvar onChange_fn4;\nvar MediaRenditionMenu = class extends MediaChromeMenu {\n  constructor() {\n    super(...arguments);\n    __privateAdd22(this, _render4);\n    __privateAdd22(this, _onChange4);\n    __privateAdd22(this, _renditionList, []);\n    __privateAdd22(this, _prevState3, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_LIST,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED,\n      MediaUIAttributes.MEDIA_RENDITION_UNAVAILABLE\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_RENDITION_SELECTED && oldValue !== newValue) {\n      this.value = newValue != null ? newValue : \"auto\";\n    } else if (attrName === MediaUIAttributes.MEDIA_RENDITION_LIST && oldValue !== newValue) {\n      __privateSet19(this, _renditionList, parseRenditionList(newValue));\n      __privateMethod10(this, _render4, render_fn4).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod10(this, _onChange4, onChange_fn4));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod10(this, _onChange4, onChange_fn4));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\n      \"media-rendition-menu-button\"\n    );\n  }\n  get mediaRenditionList() {\n    return __privateGet22(this, _renditionList);\n  }\n  set mediaRenditionList(list) {\n    __privateSet19(this, _renditionList, list);\n    __privateMethod10(this, _render4, render_fn4).call(this);\n  }\n  /**\n   * Get selected rendition id.\n   * @return {string}\n   */\n  get mediaRenditionSelected() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED);\n  }\n  set mediaRenditionSelected(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED, id);\n  }\n};\n_renditionList = /* @__PURE__ */ new WeakMap();\n_prevState3 = /* @__PURE__ */ new WeakMap();\n_render4 = /* @__PURE__ */ new WeakSet();\nrender_fn4 = function() {\n  if (__privateGet22(this, _prevState3) === JSON.stringify(this.mediaRenditionList))\n    return;\n  __privateSet19(this, _prevState3, JSON.stringify(this.mediaRenditionList));\n  const renditionList = this.mediaRenditionList.sort(\n    (a2, b4) => b4.height - a2.height\n  );\n  this.defaultSlot.textContent = \"\";\n  let isAuto = !this.mediaRenditionSelected;\n  for (const rendition of renditionList) {\n    const text = this.formatMenuItemText(\n      `${Math.min(rendition.width, rendition.height)}p`,\n      rendition\n    );\n    const item2 = createMenuItem({\n      type: \"radio\",\n      text,\n      value: `${rendition.id}`,\n      checked: rendition.selected && !isAuto\n    });\n    item2.prepend(createIndicator(this, \"checked-indicator\"));\n    this.defaultSlot.append(item2);\n  }\n  const item = createMenuItem({\n    type: \"radio\",\n    text: this.formatMenuItemText(\"Auto\"),\n    value: \"auto\",\n    checked: isAuto\n  });\n  item.prepend(createIndicator(this, \"checked-indicator\"));\n  this.defaultSlot.append(item);\n};\n_onChange4 = /* @__PURE__ */ new WeakSet();\nonChange_fn4 = function() {\n  if (this.value == null)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_RENDITION_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-rendition-menu\")) {\n  GlobalThis.customElements.define(\"media-rendition-menu\", MediaRenditionMenu);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-rendition-menu-button.js\nvar renditionIcon = (\n  /*html*/\n  `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M13.5 2.5h2v6h-2v-2h-11v-2h11v-2Zm4 2h4v2h-4v-2Zm-12 4h2v6h-2v-2h-3v-2h3v-2Zm4 2h12v2h-12v-2Zm1 4h2v6h-2v-2h-8v-2h8v-2Zm4 2h7v2h-7v-2Z\" />\n</svg>`\n);\nvar slotTemplate13 = Document2.createElement(\"template\");\nslotTemplate13.innerHTML = /*html*/\n`\n  <slot name=\"icon\">${renditionIcon}</slot>\n`;\nvar MediaRenditionMenuButton = class extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED,\n      MediaUIAttributes.MEDIA_RENDITION_UNAVAILABLE\n    ];\n  }\n  constructor() {\n    super({ slotTemplate: slotTemplate13 });\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"aria-label\", nouns.QUALITY());\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-rendition-menu\");\n  }\n  /**\n   * Get selected rendition id.\n   * @return {string}\n   */\n  get mediaRenditionSelected() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED);\n  }\n  set mediaRenditionSelected(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED, id);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-rendition-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-rendition-menu-button\",\n    MediaRenditionMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-seek-backward-button.js\nvar Attributes11 = {\n  SEEK_OFFSET: \"seekoffset\"\n};\nvar DEFAULT_SEEK_OFFSET2 = 30;\nvar backwardIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 20 24\"><defs><style>.text{font-size:8px;font-family:Arial-BoldMT, Arial;font-weight:700;}</style></defs><text class=\"text value\" transform=\"translate(2.18 19.87)\">${DEFAULT_SEEK_OFFSET2}</text><path d=\"M10 6V3L4.37 7 10 10.94V8a5.54 5.54 0 0 1 1.9 10.48v2.12A7.5 7.5 0 0 0 10 6Z\"/></svg>`;\nvar slotTemplate14 = Document2.createElement(\"template\");\nslotTemplate14.innerHTML = `\n  <slot name=\"icon\">${backwardIcon}</slot>\n`;\nvar DEFAULT_TIME = 0;\nvar MediaSeekBackwardButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_CURRENT_TIME,\n      Attributes11.SEEK_OFFSET\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate14 }, options));\n  }\n  connectedCallback() {\n    this.seekOffset = getNumericAttr(\n      this,\n      Attributes11.SEEK_OFFSET,\n      DEFAULT_SEEK_OFFSET2\n    );\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, _oldValue, newValue) {\n    if (attrName === Attributes11.SEEK_OFFSET) {\n      this.seekOffset = getNumericAttr(\n        this,\n        Attributes11.SEEK_OFFSET,\n        DEFAULT_SEEK_OFFSET2\n      );\n    }\n    super.attributeChangedCallback(attrName, _oldValue, newValue);\n  }\n  // Own props\n  /**\n   * @type {number | undefined} Seek amount in seconds\n   */\n  get seekOffset() {\n    return getNumericAttr(this, Attributes11.SEEK_OFFSET, DEFAULT_SEEK_OFFSET2);\n  }\n  set seekOffset(value) {\n    setNumericAttr(this, Attributes11.SEEK_OFFSET, value);\n    this.setAttribute(\n      \"aria-label\",\n      verbs.SEEK_BACK_N_SECS({ seekOffset: this.seekOffset })\n    );\n    updateIconText(getSlotted(this, \"icon\"), this.seekOffset);\n  }\n  // Props derived from Media UI Attributes\n  /**\n   * The current time\n   * @type {number | undefined} In seconds\n   */\n  get mediaCurrentTime() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_CURRENT_TIME,\n      DEFAULT_TIME\n    );\n  }\n  set mediaCurrentTime(time) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME, time);\n  }\n  handleClick() {\n    const detail = Math.max(this.mediaCurrentTime - this.seekOffset, 0);\n    const evt = new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_SEEK_REQUEST, {\n      composed: true,\n      bubbles: true,\n      detail\n    });\n    this.dispatchEvent(evt);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-seek-backward-button\")) {\n  GlobalThis.customElements.define(\n    \"media-seek-backward-button\",\n    MediaSeekBackwardButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-seek-forward-button.js\nvar Attributes12 = {\n  SEEK_OFFSET: \"seekoffset\"\n};\nvar DEFAULT_SEEK_OFFSET3 = 30;\nvar forwardIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 20 24\"><defs><style>.text{font-size:8px;font-family:Arial-BoldMT, Arial;font-weight:700;}</style></defs><text class=\"text value\" transform=\"translate(8.9 19.87)\">${DEFAULT_SEEK_OFFSET3}</text><path d=\"M10 6V3l5.61 4L10 10.94V8a5.54 5.54 0 0 0-1.9 10.48v2.12A7.5 7.5 0 0 1 10 6Z\"/></svg>`;\nvar slotTemplate15 = Document2.createElement(\"template\");\nslotTemplate15.innerHTML = `\n  <slot name=\"icon\">${forwardIcon}</slot>\n`;\nvar DEFAULT_TIME2 = 0;\nvar MediaSeekForwardButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_CURRENT_TIME,\n      Attributes12.SEEK_OFFSET\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate15 }, options));\n  }\n  connectedCallback() {\n    this.seekOffset = getNumericAttr(\n      this,\n      Attributes12.SEEK_OFFSET,\n      DEFAULT_SEEK_OFFSET3\n    );\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, _oldValue, newValue) {\n    if (attrName === Attributes12.SEEK_OFFSET) {\n      this.seekOffset = getNumericAttr(\n        this,\n        Attributes12.SEEK_OFFSET,\n        DEFAULT_SEEK_OFFSET3\n      );\n    }\n    super.attributeChangedCallback(attrName, _oldValue, newValue);\n  }\n  // Own props\n  /**\n   * @type {number | undefined} Seek amount in seconds\n   */\n  get seekOffset() {\n    return getNumericAttr(this, Attributes12.SEEK_OFFSET, DEFAULT_SEEK_OFFSET3);\n  }\n  set seekOffset(value) {\n    setNumericAttr(this, Attributes12.SEEK_OFFSET, value);\n    this.setAttribute(\n      \"aria-label\",\n      verbs.SEEK_FORWARD_N_SECS({ seekOffset: this.seekOffset })\n    );\n    updateIconText(getSlotted(this, \"icon\"), this.seekOffset);\n  }\n  // Props derived from Media UI Attributes\n  /**\n   * The current time\n   * @type {number | undefined} In seconds\n   */\n  get mediaCurrentTime() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_CURRENT_TIME,\n      DEFAULT_TIME2\n    );\n  }\n  set mediaCurrentTime(time) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME, time);\n  }\n  handleClick() {\n    const detail = this.mediaCurrentTime + this.seekOffset;\n    const evt = new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_SEEK_REQUEST, {\n      composed: true,\n      bubbles: true,\n      detail\n    });\n    this.dispatchEvent(evt);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-seek-forward-button\")) {\n  GlobalThis.customElements.define(\n    \"media-seek-forward-button\",\n    MediaSeekForwardButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-settings-menu.js\nvar __defProp8 = Object.defineProperty;\nvar __defNormalProp8 = (obj, key, value) => key in obj ? __defProp8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField8 = (obj, key, value) => {\n  __defNormalProp8(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar template14 = Document2.createElement(\"template\");\ntemplate14.innerHTML = MediaChromeMenu.template.innerHTML + /*html*/\n`\n  <style>\n    :host {\n      background: var(--media-settings-menu-background,\n        var(--media-menu-background,\n        var(--media-control-background,\n        var(--media-secondary-color, rgb(20 20 30 / .8)))));\n      min-width: var(--media-settings-menu-min-width, 160px);\n      border-radius: 2px 2px 0 0;\n      overflow: hidden;\n    }\n\n    :host([role=\"menu\"]) {\n      ${/* Bottom fix setting menu items for animation when the height expands. */\n\"\"}\n      justify-content: end;\n    }\n\n    slot:not([name]) {\n      justify-content: var(--media-settings-menu-justify-content);\n      flex-direction: var(--media-settings-menu-flex-direction, column);\n      overflow: visible;\n    }\n\n    #container.has-expanded {\n      --media-settings-menu-item-opacity: 0;\n    }\n  </style>\n`;\nvar MediaSettingsMenu = class extends MediaChromeMenu {\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\"media-settings-menu-button\");\n  }\n};\n__publicField8(MediaSettingsMenu, \"template\", template14);\nif (!GlobalThis.customElements.get(\"media-settings-menu\")) {\n  GlobalThis.customElements.define(\"media-settings-menu\", MediaSettingsMenu);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-settings-menu-button.js\nvar slotTemplate16 = Document2.createElement(\"template\");\nslotTemplate16.innerHTML = /*html*/\n`\n  <slot name=\"icon\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n      <path d=\"M4.5 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Zm7.5 0a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Zm7.5 0a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\"/>\n    </svg>\n  </slot>\n`;\nvar MediaSettingsMenuButton = class extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [...super.observedAttributes, \"target\"];\n  }\n  constructor() {\n    super({ slotTemplate: slotTemplate16 });\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"aria-label\", nouns.SETTINGS());\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-settings-menu\");\n  }\n};\nif (!GlobalThis.customElements.get(\"media-settings-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-settings-menu-button\",\n    MediaSettingsMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-settings-menu-item.js\nvar __defProp9 = Object.defineProperty;\nvar __defNormalProp9 = (obj, key, value) => key in obj ? __defProp9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField9 = (obj, key, value) => {\n  __defNormalProp9(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar _a;\nvar template15 = Document2.createElement(\"template\");\ntemplate15.innerHTML = MediaChromeMenuItem.template.innerHTML + /*html*/\n`\n  <style>\n    slot:not([name=\"submenu\"]) {\n      opacity: var(--media-settings-menu-item-opacity, var(--media-menu-item-opacity));\n    }\n\n    :host([aria-expanded=\"true\"]:hover) {\n      background: transparent;\n    }\n  </style>\n`;\nif ((_a = template15.content) == null ? void 0 : _a.querySelector) {\n  template15.content.querySelector('slot[name=\"suffix\"]').innerHTML = /*html*/\n  `\n    <svg aria-hidden=\"true\" viewBox=\"0 0 20 24\">\n      <path d=\"m8.12 17.585-.742-.669 4.2-4.665-4.2-4.666.743-.669 4.803 5.335-4.803 5.334Z\"/>\n    </svg>\n  `;\n}\nvar MediaSettingsMenuItem = class extends MediaChromeMenuItem {\n};\n__publicField9(MediaSettingsMenuItem, \"template\", template15);\nif (!GlobalThis.customElements.get(\"media-settings-menu-item\")) {\n  GlobalThis.customElements.define(\n    \"media-settings-menu-item\",\n    MediaSettingsMenuItem\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-time-display.js\nvar __accessCheck23 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet23 = (obj, member, getter) => {\n  __accessCheck23(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd23 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet20 = (obj, member, value, setter) => {\n  __accessCheck23(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _slot4;\nvar Attributes13 = {\n  REMAINING: \"remaining\",\n  SHOW_DURATION: \"showduration\",\n  NO_TOGGLE: \"notoggle\"\n};\nvar CombinedAttributes = [\n  ...Object.values(Attributes13),\n  MediaUIAttributes.MEDIA_CURRENT_TIME,\n  MediaUIAttributes.MEDIA_DURATION,\n  MediaUIAttributes.MEDIA_SEEKABLE\n];\nvar ButtonPressedKeys2 = [\"Enter\", \" \"];\nvar DEFAULT_TIMES_SEP = \"&nbsp;/&nbsp;\";\nvar formatTimesLabel = (el, { timesSep = DEFAULT_TIMES_SEP } = {}) => {\n  var _a3, _b;\n  const showRemaining = el.hasAttribute(Attributes13.REMAINING);\n  const showDuration = el.hasAttribute(Attributes13.SHOW_DURATION);\n  const currentTime = (_a3 = el.mediaCurrentTime) != null ? _a3 : 0;\n  const [, seekableEnd] = (_b = el.mediaSeekable) != null ? _b : [];\n  let endTime = 0;\n  if (Number.isFinite(el.mediaDuration)) {\n    endTime = el.mediaDuration;\n  } else if (Number.isFinite(seekableEnd)) {\n    endTime = seekableEnd;\n  }\n  const timeLabel = showRemaining ? formatTime(0 - (endTime - currentTime)) : formatTime(currentTime);\n  if (!showDuration)\n    return timeLabel;\n  return `${timeLabel}${timesSep}${formatTime(endTime)}`;\n};\nvar DEFAULT_MISSING_TIME_PHRASE = \"video not loaded, unknown time.\";\nvar updateAriaValueText = (el) => {\n  var _a3;\n  const currentTime = el.mediaCurrentTime;\n  const [, seekableEnd] = (_a3 = el.mediaSeekable) != null ? _a3 : [];\n  let endTime = null;\n  if (Number.isFinite(el.mediaDuration)) {\n    endTime = el.mediaDuration;\n  } else if (Number.isFinite(seekableEnd)) {\n    endTime = seekableEnd;\n  }\n  if (currentTime == null || endTime === null) {\n    el.setAttribute(\"aria-valuetext\", DEFAULT_MISSING_TIME_PHRASE);\n    return;\n  }\n  const showRemaining = el.hasAttribute(Attributes13.REMAINING);\n  const showDuration = el.hasAttribute(Attributes13.SHOW_DURATION);\n  const currentTimePhrase = showRemaining ? formatAsTimePhrase(0 - (endTime - currentTime)) : formatAsTimePhrase(currentTime);\n  if (!showDuration) {\n    el.setAttribute(\"aria-valuetext\", currentTimePhrase);\n    return;\n  }\n  const totalTimePhrase = formatAsTimePhrase(endTime);\n  const fullPhrase = `${currentTimePhrase} of ${totalTimePhrase}`;\n  el.setAttribute(\"aria-valuetext\", fullPhrase);\n};\nvar MediaTimeDisplay = class extends MediaTextDisplay {\n  constructor() {\n    super();\n    __privateAdd23(this, _slot4, void 0);\n    __privateSet20(this, _slot4, this.shadowRoot.querySelector(\"slot\"));\n    __privateGet23(this, _slot4).innerHTML = `${formatTimesLabel(this)}`;\n  }\n  static get observedAttributes() {\n    return [...super.observedAttributes, ...CombinedAttributes, \"disabled\"];\n  }\n  connectedCallback() {\n    const { style } = getOrInsertCSSRule(\n      this.shadowRoot,\n      \":host(:hover:not([notoggle]))\"\n    );\n    style.setProperty(\"cursor\", \"pointer\");\n    style.setProperty(\n      \"background\",\n      \"var(--media-control-hover-background, rgba(50 50 70 / .7))\"\n    );\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    }\n    this.setAttribute(\"role\", \"progressbar\");\n    this.setAttribute(\"aria-label\", nouns.PLAYBACK_TIME());\n    const keyUpHandler = (evt) => {\n      const { key } = evt;\n      if (!ButtonPressedKeys2.includes(key)) {\n        this.removeEventListener(\"keyup\", keyUpHandler);\n        return;\n      }\n      this.toggleTimeDisplay();\n    };\n    this.addEventListener(\"keydown\", (evt) => {\n      const { metaKey, altKey, key } = evt;\n      if (metaKey || altKey || !ButtonPressedKeys2.includes(key)) {\n        this.removeEventListener(\"keyup\", keyUpHandler);\n        return;\n      }\n      this.addEventListener(\"keyup\", keyUpHandler);\n    });\n    this.addEventListener(\"click\", this.toggleTimeDisplay);\n    super.connectedCallback();\n  }\n  toggleTimeDisplay() {\n    if (this.noToggle) {\n      return;\n    }\n    if (this.hasAttribute(\"remaining\")) {\n      this.removeAttribute(\"remaining\");\n    } else {\n      this.setAttribute(\"remaining\", \"\");\n    }\n  }\n  disconnectedCallback() {\n    this.disable();\n    super.disconnectedCallback();\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (CombinedAttributes.includes(attrName)) {\n      this.update();\n    } else if (attrName === \"disabled\" && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n  }\n  enable() {\n    this.tabIndex = 0;\n  }\n  disable() {\n    this.tabIndex = -1;\n  }\n  // Own props\n  /**\n   * Whether to show the remaining time\n   * @type {boolean}\n   */\n  get remaining() {\n    return getBooleanAttr(this, Attributes13.REMAINING);\n  }\n  set remaining(show) {\n    setBooleanAttr(this, Attributes13.REMAINING, show);\n  }\n  /**\n   * Whether to show the duration\n   * @type {boolean}\n   */\n  get showDuration() {\n    return getBooleanAttr(this, Attributes13.SHOW_DURATION);\n  }\n  set showDuration(show) {\n    setBooleanAttr(this, Attributes13.SHOW_DURATION, show);\n  }\n  /**\n   * Disable the default behavior that toggles between current and remaining time\n   * @type {boolean}\n   */\n  get noToggle() {\n    return getBooleanAttr(this, Attributes13.NO_TOGGLE);\n  }\n  set noToggle(notoggle) {\n    setBooleanAttr(this, Attributes13.NO_TOGGLE, notoggle);\n  }\n  // Props derived from media UI attributes\n  /**\n   * Get the duration\n   * @type {number | undefined} In seconds\n   */\n  get mediaDuration() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_DURATION);\n  }\n  set mediaDuration(time) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_DURATION, time);\n  }\n  /**\n   * The current time\n   * @type {number | undefined} In seconds\n   */\n  get mediaCurrentTime() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME);\n  }\n  set mediaCurrentTime(time) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME, time);\n  }\n  /**\n   * Range of values that can be seeked to\n   * @type {[number, number] | undefined} An array of two numbers [start, end]\n   */\n  get mediaSeekable() {\n    const seekable = this.getAttribute(MediaUIAttributes.MEDIA_SEEKABLE);\n    if (!seekable)\n      return void 0;\n    return seekable.split(\":\").map((time) => +time);\n  }\n  set mediaSeekable(range) {\n    if (range == null) {\n      this.removeAttribute(MediaUIAttributes.MEDIA_SEEKABLE);\n      return;\n    }\n    this.setAttribute(MediaUIAttributes.MEDIA_SEEKABLE, range.join(\":\"));\n  }\n  update() {\n    const timesLabel = formatTimesLabel(this);\n    updateAriaValueText(this);\n    if (timesLabel !== __privateGet23(this, _slot4).innerHTML) {\n      __privateGet23(this, _slot4).innerHTML = timesLabel;\n    }\n  }\n};\n_slot4 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-time-display\")) {\n  GlobalThis.customElements.define(\"media-time-display\", MediaTimeDisplay);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/range-animation.js\nvar __accessCheck24 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet24 = (obj, member, getter) => {\n  __accessCheck24(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd24 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet21 = (obj, member, value, setter) => {\n  __accessCheck24(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateWrapper = (obj, member, setter, getter) => ({\n  set _(value) {\n    __privateSet21(obj, member, value, setter);\n  },\n  get _() {\n    return __privateGet24(obj, member, getter);\n  }\n});\nvar _range;\nvar _startTime;\nvar _previousTime;\nvar _deltaTime;\nvar _frameCount;\nvar _updateTimestamp;\nvar _updateStartValue;\nvar _lastRangeIncrease;\nvar _id;\nvar _animate;\nvar RangeAnimation = class {\n  constructor(range, callback, fps) {\n    __privateAdd24(this, _range, void 0);\n    __privateAdd24(this, _startTime, void 0);\n    __privateAdd24(this, _previousTime, void 0);\n    __privateAdd24(this, _deltaTime, void 0);\n    __privateAdd24(this, _frameCount, void 0);\n    __privateAdd24(this, _updateTimestamp, void 0);\n    __privateAdd24(this, _updateStartValue, void 0);\n    __privateAdd24(this, _lastRangeIncrease, void 0);\n    __privateAdd24(this, _id, 0);\n    __privateAdd24(this, _animate, (now2 = performance.now()) => {\n      __privateSet21(this, _id, requestAnimationFrame(__privateGet24(this, _animate)));\n      __privateSet21(this, _deltaTime, performance.now() - __privateGet24(this, _previousTime));\n      const fpsInterval = 1e3 / this.fps;\n      if (__privateGet24(this, _deltaTime) > fpsInterval) {\n        __privateSet21(this, _previousTime, now2 - __privateGet24(this, _deltaTime) % fpsInterval);\n        const fps2 = 1e3 / ((now2 - __privateGet24(this, _startTime)) / ++__privateWrapper(this, _frameCount)._);\n        const delta = (now2 - __privateGet24(this, _updateTimestamp)) / 1e3 / this.duration;\n        let value = __privateGet24(this, _updateStartValue) + delta * this.playbackRate;\n        const increase = value - __privateGet24(this, _range).valueAsNumber;\n        if (increase > 0) {\n          __privateSet21(this, _lastRangeIncrease, this.playbackRate / this.duration / fps2);\n        } else {\n          __privateSet21(this, _lastRangeIncrease, 0.995 * __privateGet24(this, _lastRangeIncrease));\n          value = __privateGet24(this, _range).valueAsNumber + __privateGet24(this, _lastRangeIncrease);\n        }\n        this.callback(value);\n      }\n    });\n    __privateSet21(this, _range, range);\n    this.callback = callback;\n    this.fps = fps;\n  }\n  start() {\n    if (__privateGet24(this, _id) !== 0)\n      return;\n    __privateSet21(this, _previousTime, performance.now());\n    __privateSet21(this, _startTime, __privateGet24(this, _previousTime));\n    __privateSet21(this, _frameCount, 0);\n    __privateGet24(this, _animate).call(this);\n  }\n  stop() {\n    if (__privateGet24(this, _id) === 0)\n      return;\n    cancelAnimationFrame(__privateGet24(this, _id));\n    __privateSet21(this, _id, 0);\n  }\n  update({ start, duration, playbackRate }) {\n    const increase = start - __privateGet24(this, _range).valueAsNumber;\n    const durationDelta = Math.abs(duration - this.duration);\n    if (increase > 0 || increase < -0.03 || durationDelta >= 0.5) {\n      this.callback(start);\n    }\n    __privateSet21(this, _updateStartValue, start);\n    __privateSet21(this, _updateTimestamp, performance.now());\n    this.duration = duration;\n    this.playbackRate = playbackRate;\n  }\n};\n_range = /* @__PURE__ */ new WeakMap();\n_startTime = /* @__PURE__ */ new WeakMap();\n_previousTime = /* @__PURE__ */ new WeakMap();\n_deltaTime = /* @__PURE__ */ new WeakMap();\n_frameCount = /* @__PURE__ */ new WeakMap();\n_updateTimestamp = /* @__PURE__ */ new WeakMap();\n_updateStartValue = /* @__PURE__ */ new WeakMap();\n_lastRangeIncrease = /* @__PURE__ */ new WeakMap();\n_id = /* @__PURE__ */ new WeakMap();\n_animate = /* @__PURE__ */ new WeakMap();\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-time-range.js\nvar __accessCheck25 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet25 = (obj, member, getter) => {\n  __accessCheck25(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd25 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet22 = (obj, member, value, setter) => {\n  __accessCheck25(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod11 = (obj, member, method) => {\n  __accessCheck25(obj, member, \"access private method\");\n  return method;\n};\nvar _rootNode;\nvar _animation;\nvar _boxes;\nvar _previewTime;\nvar _previewBox;\nvar _currentBox;\nvar _boxPaddingLeft;\nvar _boxPaddingRight;\nvar _mediaChaptersCues;\nvar _toggleRangeAnimation;\nvar toggleRangeAnimation_fn;\nvar _shouldRangeAnimate;\nvar shouldRangeAnimate_fn;\nvar _updateRange;\nvar _getElementRects;\nvar getElementRects_fn;\nvar _getBoxPosition;\nvar getBoxPosition_fn;\nvar _getBoxShiftPosition;\nvar getBoxShiftPosition_fn;\nvar _handlePointerMove3;\nvar handlePointerMove_fn3;\nvar _previewRequest;\nvar previewRequest_fn;\nvar _seekRequest;\nvar seekRequest_fn;\nvar DEFAULT_MISSING_TIME_PHRASE2 = \"video not loaded, unknown time.\";\nvar updateAriaValueText2 = (el) => {\n  const range = el.range;\n  const currentTimePhrase = formatAsTimePhrase(+calcTimeFromRangeValue(el));\n  const totalTimePhrase = formatAsTimePhrase(+el.mediaSeekableEnd);\n  const fullPhrase = !(currentTimePhrase && totalTimePhrase) ? DEFAULT_MISSING_TIME_PHRASE2 : `${currentTimePhrase} of ${totalTimePhrase}`;\n  range.setAttribute(\"aria-valuetext\", fullPhrase);\n};\nvar template16 = Document2.createElement(\"template\");\ntemplate16.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      --media-box-border-radius: 4px;\n      --media-box-padding-left: 10px;\n      --media-box-padding-right: 10px;\n      --media-preview-border-radius: var(--media-box-border-radius);\n      --media-box-arrow-offset: var(--media-box-border-radius);\n      --_control-background: var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .7)));\n      --_preview-background: var(--media-preview-background, var(--_control-background));\n\n      ${/* 1% rail width trick was off in Safari, contain: layout seems to\nprevent the horizontal overflow as well. */\n\"\"}\n      contain: layout;\n    }\n\n    #highlight {\n      background: var(--media-time-range-buffered-color, rgb(255 255 255 / .4));\n    }\n\n    #preview-rail,\n    #current-rail {\n      width: 100%;\n      position: absolute;\n      left: 0;\n      bottom: 100%;\n      pointer-events: none;\n      will-change: transform;\n    }\n\n    [part~=\"box\"] {\n      width: min-content;\n      ${/* absolute position is needed here so the box doesn't overflow the bounds */\n\"\"}\n      position: absolute;\n      bottom: 100%;\n      flex-direction: column;\n      align-items: center;\n      transform: translateX(-50%);\n    }\n\n    [part~=\"current-box\"] {\n      display: var(--media-current-box-display, var(--media-box-display, flex));\n      margin: var(--media-current-box-margin, var(--media-box-margin, 0 0 5px));\n      visibility: hidden;\n    }\n\n    [part~=\"preview-box\"] {\n      display: var(--media-preview-box-display, var(--media-box-display, flex));\n      margin: var(--media-preview-box-margin, var(--media-box-margin, 0 0 5px));\n      transition-property: var(--media-preview-transition-property, visibility, opacity);\n      transition-duration: var(--media-preview-transition-duration-out, .25s);\n      transition-delay: var(--media-preview-transition-delay-out, 0s);\n      visibility: hidden;\n      opacity: 0;\n    }\n\n    :host(:is([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}], [${MediaUIAttributes.MEDIA_PREVIEW_TIME}])[dragging]) [part~=\"preview-box\"] {\n      transition-duration: var(--media-preview-transition-duration-in, .5s);\n      transition-delay: var(--media-preview-transition-delay-in, .25s);\n      visibility: visible;\n      opacity: 1;\n    }\n\n    @media (hover: hover) {\n      :host(:is([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}], [${MediaUIAttributes.MEDIA_PREVIEW_TIME}]):hover) [part~=\"preview-box\"] {\n        transition-duration: var(--media-preview-transition-duration-in, .5s);\n        transition-delay: var(--media-preview-transition-delay-in, .25s);\n        visibility: visible;\n        opacity: 1;\n      }\n    }\n\n    media-preview-thumbnail,\n    ::slotted(media-preview-thumbnail) {\n      visibility: hidden;\n      ${/* delay changing these CSS props until the preview box transition is ended */\n\"\"}\n      transition: visibility 0s .25s;\n      transition-delay: calc(var(--media-preview-transition-delay-out, 0s) + var(--media-preview-transition-duration-out, .25s));\n      background: var(--media-preview-thumbnail-background, var(--_preview-background));\n      box-shadow: var(--media-preview-thumbnail-box-shadow, 0 0 4px rgb(0 0 0 / .2));\n      max-width: var(--media-preview-thumbnail-max-width, 180px);\n      max-height: var(--media-preview-thumbnail-max-height, 160px);\n      min-width: var(--media-preview-thumbnail-min-width, 120px);\n      min-height: var(--media-preview-thumbnail-min-height, 80px);\n      border: var(--media-preview-thumbnail-border);\n      border-radius: var(--media-preview-thumbnail-border-radius,\n        var(--media-preview-border-radius) var(--media-preview-border-radius) 0 0);\n    }\n\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}][dragging]) media-preview-thumbnail,\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}][dragging]) ::slotted(media-preview-thumbnail) {\n      transition-delay: var(--media-preview-transition-delay-in, .25s);\n      visibility: visible;\n    }\n\n    @media (hover: hover) {\n      :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]:hover) media-preview-thumbnail,\n      :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]:hover) ::slotted(media-preview-thumbnail) {\n        transition-delay: var(--media-preview-transition-delay-in, .25s);\n        visibility: visible;\n      }\n\n      :host([${MediaUIAttributes.MEDIA_PREVIEW_TIME}]:hover) {\n        --media-time-range-hover-display: block;\n      }\n    }\n\n    media-preview-chapter-display,\n    ::slotted(media-preview-chapter-display) {\n      font-size: var(--media-font-size, 13px);\n      line-height: 17px;\n      min-width: 0;\n      visibility: hidden;\n      ${/* delay changing these CSS props until the preview box transition is ended */\n\"\"}\n      transition: min-width 0s, border-radius 0s, margin 0s, padding 0s, visibility 0s;\n      transition-delay: calc(var(--media-preview-transition-delay-out, 0s) + var(--media-preview-transition-duration-out, .25s));\n      background: var(--media-preview-chapter-background, var(--_preview-background));\n      border-radius: var(--media-preview-chapter-border-radius,\n        var(--media-preview-border-radius) var(--media-preview-border-radius)\n        var(--media-preview-border-radius) var(--media-preview-border-radius));\n      padding: var(--media-preview-chapter-padding, 3.5px 9px);\n      margin: var(--media-preview-chapter-margin, 0 0 5px);\n      text-shadow: var(--media-preview-chapter-text-shadow, 0 0 4px rgb(0 0 0 / .75));\n    }\n\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]) media-preview-chapter-display,\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]) ::slotted(media-preview-chapter-display) {\n      transition-delay: var(--media-preview-transition-delay-in, .25s);\n      border-radius: var(--media-preview-chapter-border-radius, 0);\n      padding: var(--media-preview-chapter-padding, 3.5px 9px 0);\n      margin: var(--media-preview-chapter-margin, 0);\n      min-width: 100%;\n    }\n\n    media-preview-chapter-display[${MediaUIAttributes.MEDIA_PREVIEW_CHAPTER}],\n    ::slotted(media-preview-chapter-display[${MediaUIAttributes.MEDIA_PREVIEW_CHAPTER}]) {\n      visibility: visible;\n    }\n\n    media-preview-chapter-display:not([aria-valuetext]),\n    ::slotted(media-preview-chapter-display:not([aria-valuetext])) {\n      display: none;\n    }\n\n    media-preview-time-display,\n    ::slotted(media-preview-time-display),\n    media-time-display,\n    ::slotted(media-time-display) {\n      font-size: var(--media-font-size, 13px);\n      line-height: 17px;\n      min-width: 0;\n      ${/* delay changing these CSS props until the preview box transition is ended */\n\"\"}\n      transition: min-width 0s, border-radius 0s;\n      transition-delay: calc(var(--media-preview-transition-delay-out, 0s) + var(--media-preview-transition-duration-out, .25s));\n      background: var(--media-preview-time-background, var(--_preview-background));\n      border-radius: var(--media-preview-time-border-radius,\n        var(--media-preview-border-radius) var(--media-preview-border-radius)\n        var(--media-preview-border-radius) var(--media-preview-border-radius));\n      padding: var(--media-preview-time-padding, 3.5px 9px);\n      margin: var(--media-preview-time-margin, 0);\n      text-shadow: var(--media-preview-time-text-shadow, 0 0 4px rgb(0 0 0 / .75));\n      transform: translateX(min(\n        max(calc(50% - var(--_box-width) / 2),\n        calc(var(--_box-shift, 0))),\n        calc(var(--_box-width) / 2 - 50%)\n      ));\n    }\n\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]) media-preview-time-display,\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]) ::slotted(media-preview-time-display) {\n      transition-delay: var(--media-preview-transition-delay-in, .25s);\n      border-radius: var(--media-preview-time-border-radius,\n        0 0 var(--media-preview-border-radius) var(--media-preview-border-radius));\n      min-width: 100%;\n    }\n\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_TIME}]:hover) {\n      --media-time-range-hover-display: block;\n    }\n\n    [part~=\"arrow\"],\n    ::slotted([part~=\"arrow\"]) {\n      display: var(--media-box-arrow-display, inline-block);\n      transform: translateX(min(\n        max(calc(50% - var(--_box-width) / 2 + var(--media-box-arrow-offset)),\n        calc(var(--_box-shift, 0))),\n        calc(var(--_box-width) / 2 - 50% - var(--media-box-arrow-offset))\n      ));\n      ${/* border-color has to come before border-top-color! */\n\"\"}\n      border-color: transparent;\n      border-top-color: var(--media-box-arrow-background, var(--_control-background));\n      border-width: var(--media-box-arrow-border-width,\n        var(--media-box-arrow-height, 5px) var(--media-box-arrow-width, 6px) 0);\n      border-style: solid;\n      justify-content: center;\n      height: 0;\n    }\n  </style>\n  <div id=\"preview-rail\">\n    <slot name=\"preview\" part=\"box preview-box\">\n      <media-preview-thumbnail></media-preview-thumbnail>\n      <media-preview-chapter-display></media-preview-chapter-display>\n      <media-preview-time-display></media-preview-time-display>\n      <slot name=\"preview-arrow\"><div part=\"arrow\"></div></slot>\n    </slot>\n  </div>\n  <div id=\"current-rail\">\n    <slot name=\"current\" part=\"box current-box\">\n      ${/* Example: add the current time w/ arrow to the playhead\n<media-time-display slot=\"current\"></media-time-display>\n<div part=\"arrow\" slot=\"current\"></div> */\n\"\"}\n    </slot>\n  </div>\n`;\nvar calcRangeValueFromTime = (el, time = el.mediaCurrentTime) => {\n  const startTime = Number.isFinite(el.mediaSeekableStart) ? el.mediaSeekableStart : 0;\n  const endTime = Number.isFinite(el.mediaDuration) ? el.mediaDuration : el.mediaSeekableEnd;\n  if (Number.isNaN(endTime))\n    return 0;\n  const value = (time - startTime) / (endTime - startTime);\n  return Math.max(0, Math.min(value, 1));\n};\nvar calcTimeFromRangeValue = (el, value = el.range.valueAsNumber) => {\n  const startTime = Number.isFinite(el.mediaSeekableStart) ? el.mediaSeekableStart : 0;\n  const endTime = Number.isFinite(el.mediaDuration) ? el.mediaDuration : el.mediaSeekableEnd;\n  if (Number.isNaN(endTime))\n    return 0;\n  return value * (endTime - startTime) + startTime;\n};\nvar MediaTimeRange = class extends MediaChromeRange {\n  constructor() {\n    super();\n    __privateAdd25(this, _toggleRangeAnimation);\n    __privateAdd25(this, _shouldRangeAnimate);\n    __privateAdd25(this, _getElementRects);\n    __privateAdd25(this, _getBoxPosition);\n    __privateAdd25(this, _getBoxShiftPosition);\n    __privateAdd25(this, _handlePointerMove3);\n    __privateAdd25(this, _previewRequest);\n    __privateAdd25(this, _seekRequest);\n    __privateAdd25(this, _rootNode, void 0);\n    __privateAdd25(this, _animation, void 0);\n    __privateAdd25(this, _boxes, void 0);\n    __privateAdd25(this, _previewTime, void 0);\n    __privateAdd25(this, _previewBox, void 0);\n    __privateAdd25(this, _currentBox, void 0);\n    __privateAdd25(this, _boxPaddingLeft, void 0);\n    __privateAdd25(this, _boxPaddingRight, void 0);\n    __privateAdd25(this, _mediaChaptersCues, void 0);\n    __privateAdd25(this, _updateRange, (value) => {\n      if (this.dragging)\n        return;\n      this.range.valueAsNumber = value;\n      this.updateBar();\n    });\n    this.container.appendChild(template16.content.cloneNode(true));\n    __privateSet22(this, _boxes, this.shadowRoot.querySelectorAll('[part~=\"box\"]'));\n    __privateSet22(this, _previewBox, this.shadowRoot.querySelector('[part~=\"preview-box\"]'));\n    __privateSet22(this, _currentBox, this.shadowRoot.querySelector('[part~=\"current-box\"]'));\n    const computedStyle = getComputedStyle(this);\n    __privateSet22(this, _boxPaddingLeft, parseInt(\n      computedStyle.getPropertyValue(\"--media-box-padding-left\")\n    ));\n    __privateSet22(this, _boxPaddingRight, parseInt(\n      computedStyle.getPropertyValue(\"--media-box-padding-right\")\n    ));\n    __privateSet22(this, _animation, new RangeAnimation(this.range, __privateGet25(this, _updateRange), 60));\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PAUSED,\n      MediaUIAttributes.MEDIA_DURATION,\n      MediaUIAttributes.MEDIA_SEEKABLE,\n      MediaUIAttributes.MEDIA_CURRENT_TIME,\n      MediaUIAttributes.MEDIA_PREVIEW_IMAGE,\n      MediaUIAttributes.MEDIA_PREVIEW_TIME,\n      MediaUIAttributes.MEDIA_PREVIEW_CHAPTER,\n      MediaUIAttributes.MEDIA_BUFFERED,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      MediaUIAttributes.MEDIA_LOADING,\n      MediaUIAttributes.MEDIA_ENDED\n    ];\n  }\n  connectedCallback() {\n    var _a3;\n    super.connectedCallback();\n    this.range.setAttribute(\"aria-label\", nouns.SEEK());\n    __privateMethod11(this, _toggleRangeAnimation, toggleRangeAnimation_fn).call(this);\n    __privateSet22(this, _rootNode, this.getRootNode());\n    (_a3 = __privateGet25(this, _rootNode)) == null ? void 0 : _a3.addEventListener(\"transitionstart\", this);\n  }\n  disconnectedCallback() {\n    var _a3;\n    super.disconnectedCallback();\n    __privateMethod11(this, _toggleRangeAnimation, toggleRangeAnimation_fn).call(this);\n    (_a3 = __privateGet25(this, _rootNode)) == null ? void 0 : _a3.removeEventListener(\"transitionstart\", this);\n    __privateSet22(this, _rootNode, null);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (oldValue == newValue)\n      return;\n    if (attrName === MediaUIAttributes.MEDIA_CURRENT_TIME || attrName === MediaUIAttributes.MEDIA_PAUSED || attrName === MediaUIAttributes.MEDIA_ENDED || attrName === MediaUIAttributes.MEDIA_LOADING || attrName === MediaUIAttributes.MEDIA_DURATION || attrName === MediaUIAttributes.MEDIA_SEEKABLE) {\n      __privateGet25(this, _animation).update({\n        start: calcRangeValueFromTime(this),\n        duration: this.mediaSeekableEnd - this.mediaSeekableStart,\n        playbackRate: this.mediaPlaybackRate\n      });\n      __privateMethod11(this, _toggleRangeAnimation, toggleRangeAnimation_fn).call(this);\n      updateAriaValueText2(this);\n    } else if (attrName === MediaUIAttributes.MEDIA_BUFFERED) {\n      this.updateBufferedBar();\n    }\n    if (attrName === MediaUIAttributes.MEDIA_DURATION || attrName === MediaUIAttributes.MEDIA_SEEKABLE) {\n      this.mediaChaptersCues = __privateGet25(this, _mediaChaptersCues);\n      this.updateBar();\n    }\n  }\n  get mediaChaptersCues() {\n    return __privateGet25(this, _mediaChaptersCues);\n  }\n  set mediaChaptersCues(value) {\n    var _a3;\n    __privateSet22(this, _mediaChaptersCues, value);\n    this.updateSegments(\n      (_a3 = __privateGet25(this, _mediaChaptersCues)) == null ? void 0 : _a3.map((c4) => ({\n        start: calcRangeValueFromTime(this, c4.startTime),\n        end: calcRangeValueFromTime(this, c4.endTime)\n      }))\n    );\n  }\n  /**\n   * @type {boolean} Is the media paused\n   */\n  get mediaPaused() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED);\n  }\n  set mediaPaused(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED, value);\n  }\n  /**\n   * @type {boolean} Is the media loading\n   */\n  get mediaLoading() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_LOADING);\n  }\n  set mediaLoading(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_LOADING, value);\n  }\n  /**\n   * @type {number | undefined}\n   */\n  get mediaDuration() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_DURATION);\n  }\n  set mediaDuration(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_DURATION, value);\n  }\n  /**\n   * @type {number | undefined}\n   */\n  get mediaCurrentTime() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME);\n  }\n  set mediaCurrentTime(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME, value);\n  }\n  /**\n   * @type {number}\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, 1);\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n  /**\n   * @type {Array<Array<number>>} An array of ranges, each range being an array of two numbers.\n   * e.g. [[1, 2], [3, 4]]\n   */\n  get mediaBuffered() {\n    const buffered = this.getAttribute(MediaUIAttributes.MEDIA_BUFFERED);\n    if (!buffered)\n      return [];\n    return buffered.split(\" \").map((timePair) => timePair.split(\":\").map((timeStr) => +timeStr));\n  }\n  set mediaBuffered(list) {\n    if (!list) {\n      this.removeAttribute(MediaUIAttributes.MEDIA_BUFFERED);\n      return;\n    }\n    const strVal = list.map((tuple) => tuple.join(\":\")).join(\" \");\n    this.setAttribute(MediaUIAttributes.MEDIA_BUFFERED, strVal);\n  }\n  /**\n   * Range of values that can be seeked to\n   * @type {Array<number> | undefined} An array of two numbers [start, end]\n   */\n  get mediaSeekable() {\n    const seekable = this.getAttribute(MediaUIAttributes.MEDIA_SEEKABLE);\n    if (!seekable)\n      return void 0;\n    return seekable.split(\":\").map((time) => +time);\n  }\n  set mediaSeekable(range) {\n    if (range == null) {\n      this.removeAttribute(MediaUIAttributes.MEDIA_SEEKABLE);\n      return;\n    }\n    this.setAttribute(MediaUIAttributes.MEDIA_SEEKABLE, range.join(\":\"));\n  }\n  /**\n   * @type {number | undefined}\n   */\n  get mediaSeekableEnd() {\n    var _a3;\n    const [, end = this.mediaDuration] = (_a3 = this.mediaSeekable) != null ? _a3 : [];\n    return end;\n  }\n  get mediaSeekableStart() {\n    var _a3;\n    const [start = 0] = (_a3 = this.mediaSeekable) != null ? _a3 : [];\n    return start;\n  }\n  /**\n   * @type {string | undefined} The url of the preview image\n   */\n  get mediaPreviewImage() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_IMAGE);\n  }\n  set mediaPreviewImage(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_IMAGE, value);\n  }\n  /**\n   * @type {number | undefined}\n   */\n  get mediaPreviewTime() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_PREVIEW_TIME);\n  }\n  set mediaPreviewTime(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PREVIEW_TIME, value);\n  }\n  /**\n   * @type {boolean | undefined}\n   */\n  get mediaEnded() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_ENDED);\n  }\n  set mediaEnded(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_ENDED, value);\n  }\n  /* Add a buffered progress bar */\n  updateBar() {\n    super.updateBar();\n    this.updateBufferedBar();\n    this.updateCurrentBox();\n  }\n  updateBufferedBar() {\n    var _a3;\n    const buffered = this.mediaBuffered;\n    if (!buffered.length) {\n      return;\n    }\n    let relativeBufferedEnd;\n    if (!this.mediaEnded) {\n      const currentTime = this.mediaCurrentTime;\n      const [, bufferedEnd = this.mediaSeekableStart] = (_a3 = buffered.find(\n        ([start, end]) => start <= currentTime && currentTime <= end\n      )) != null ? _a3 : [];\n      relativeBufferedEnd = calcRangeValueFromTime(this, bufferedEnd);\n    } else {\n      relativeBufferedEnd = 1;\n    }\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \"#highlight\");\n    style.setProperty(\"width\", `${relativeBufferedEnd * 100}%`);\n  }\n  updateCurrentBox() {\n    const currentSlot = this.shadowRoot.querySelector('slot[name=\"current\"]');\n    if (!currentSlot.assignedElements().length)\n      return;\n    const currentRailRule = getOrInsertCSSRule(\n      this.shadowRoot,\n      \"#current-rail\"\n    );\n    const currentBoxRule = getOrInsertCSSRule(\n      this.shadowRoot,\n      '[part~=\"current-box\"]'\n    );\n    const rects = __privateMethod11(this, _getElementRects, getElementRects_fn).call(this, __privateGet25(this, _currentBox));\n    const boxPos = __privateMethod11(this, _getBoxPosition, getBoxPosition_fn).call(this, rects, this.range.valueAsNumber);\n    const boxShift = __privateMethod11(this, _getBoxShiftPosition, getBoxShiftPosition_fn).call(this, rects, this.range.valueAsNumber);\n    currentRailRule.style.transform = `translateX(${boxPos})`;\n    currentRailRule.style.setProperty(\"--_range-width\", `${rects.range.width}`);\n    currentBoxRule.style.setProperty(\"--_box-shift\", `${boxShift}`);\n    currentBoxRule.style.setProperty(\"--_box-width\", `${rects.box.width}px`);\n    currentBoxRule.style.setProperty(\"visibility\", \"initial\");\n  }\n  handleEvent(evt) {\n    super.handleEvent(evt);\n    switch (evt.type) {\n      case \"input\":\n        __privateMethod11(this, _seekRequest, seekRequest_fn).call(this);\n        break;\n      case \"pointermove\":\n        __privateMethod11(this, _handlePointerMove3, handlePointerMove_fn3).call(this, evt);\n        break;\n      case \"pointerup\":\n      case \"pointerleave\":\n        __privateMethod11(this, _previewRequest, previewRequest_fn).call(this, null);\n        break;\n      case \"transitionstart\":\n        if (containsComposedNode(evt.target, this)) {\n          setTimeout(() => __privateMethod11(this, _toggleRangeAnimation, toggleRangeAnimation_fn).call(this), 0);\n        }\n        break;\n    }\n  }\n};\n_rootNode = /* @__PURE__ */ new WeakMap();\n_animation = /* @__PURE__ */ new WeakMap();\n_boxes = /* @__PURE__ */ new WeakMap();\n_previewTime = /* @__PURE__ */ new WeakMap();\n_previewBox = /* @__PURE__ */ new WeakMap();\n_currentBox = /* @__PURE__ */ new WeakMap();\n_boxPaddingLeft = /* @__PURE__ */ new WeakMap();\n_boxPaddingRight = /* @__PURE__ */ new WeakMap();\n_mediaChaptersCues = /* @__PURE__ */ new WeakMap();\n_toggleRangeAnimation = /* @__PURE__ */ new WeakSet();\ntoggleRangeAnimation_fn = function() {\n  if (__privateMethod11(this, _shouldRangeAnimate, shouldRangeAnimate_fn).call(this)) {\n    __privateGet25(this, _animation).start();\n  } else {\n    __privateGet25(this, _animation).stop();\n  }\n};\n_shouldRangeAnimate = /* @__PURE__ */ new WeakSet();\nshouldRangeAnimate_fn = function() {\n  return this.isConnected && !this.mediaPaused && !this.mediaLoading && !this.mediaEnded && this.mediaSeekableEnd > 0 && isElementVisible(this);\n};\n_updateRange = /* @__PURE__ */ new WeakMap();\n_getElementRects = /* @__PURE__ */ new WeakSet();\ngetElementRects_fn = function(box) {\n  var _a3;\n  const bounds = (_a3 = this.getAttribute(\"bounds\") ? closestComposedNode(this, `#${this.getAttribute(\"bounds\")}`) : this.parentElement) != null ? _a3 : this;\n  const boundsRect = bounds.getBoundingClientRect();\n  const rangeRect = this.range.getBoundingClientRect();\n  const width = box.offsetWidth;\n  const min = -(rangeRect.left - boundsRect.left - width / 2);\n  const max = boundsRect.right - rangeRect.left - width / 2;\n  return {\n    box: { width, min, max },\n    bounds: boundsRect,\n    range: rangeRect\n  };\n};\n_getBoxPosition = /* @__PURE__ */ new WeakSet();\ngetBoxPosition_fn = function(rects, ratio) {\n  let position = `${ratio * 100}%`;\n  const { width, min, max } = rects.box;\n  if (!width)\n    return position;\n  if (!Number.isNaN(min)) {\n    const pad = `var(--media-box-padding-left)`;\n    const minPos = `calc(1 / var(--_range-width) * 100 * ${min}% + ${pad})`;\n    position = `max(${minPos}, ${position})`;\n  }\n  if (!Number.isNaN(max)) {\n    const pad = `var(--media-box-padding-right)`;\n    const maxPos = `calc(1 / var(--_range-width) * 100 * ${max}% - ${pad})`;\n    position = `min(${position}, ${maxPos})`;\n  }\n  return position;\n};\n_getBoxShiftPosition = /* @__PURE__ */ new WeakSet();\ngetBoxShiftPosition_fn = function(rects, ratio) {\n  const { width, min, max } = rects.box;\n  const pointerX = ratio * rects.range.width;\n  if (pointerX < min + __privateGet25(this, _boxPaddingLeft)) {\n    const offset = rects.range.left - rects.bounds.left - __privateGet25(this, _boxPaddingLeft);\n    return `${pointerX - width / 2 + offset}px`;\n  }\n  if (pointerX > max - __privateGet25(this, _boxPaddingRight)) {\n    const offset = rects.bounds.right - rects.range.right - __privateGet25(this, _boxPaddingRight);\n    return `${pointerX + width / 2 - offset - rects.range.width}px`;\n  }\n  return 0;\n};\n_handlePointerMove3 = /* @__PURE__ */ new WeakSet();\nhandlePointerMove_fn3 = function(evt) {\n  const isOverBoxes = [...__privateGet25(this, _boxes)].some(\n    (b4) => evt.composedPath().includes(b4)\n  );\n  if (!this.dragging && (isOverBoxes || !evt.composedPath().includes(this))) {\n    __privateMethod11(this, _previewRequest, previewRequest_fn).call(this, null);\n    return;\n  }\n  const duration = this.mediaSeekableEnd;\n  if (!duration)\n    return;\n  const previewRailRule = getOrInsertCSSRule(\n    this.shadowRoot,\n    \"#preview-rail\"\n  );\n  const previewBoxRule = getOrInsertCSSRule(\n    this.shadowRoot,\n    '[part~=\"preview-box\"]'\n  );\n  const rects = __privateMethod11(this, _getElementRects, getElementRects_fn).call(this, __privateGet25(this, _previewBox));\n  let pointerRatio = (evt.clientX - rects.range.left) / rects.range.width;\n  pointerRatio = Math.max(0, Math.min(1, pointerRatio));\n  const boxPos = __privateMethod11(this, _getBoxPosition, getBoxPosition_fn).call(this, rects, pointerRatio);\n  const boxShift = __privateMethod11(this, _getBoxShiftPosition, getBoxShiftPosition_fn).call(this, rects, pointerRatio);\n  previewRailRule.style.transform = `translateX(${boxPos})`;\n  previewRailRule.style.setProperty(\"--_range-width\", `${rects.range.width}`);\n  previewBoxRule.style.setProperty(\"--_box-shift\", `${boxShift}`);\n  previewBoxRule.style.setProperty(\"--_box-width\", `${rects.box.width}px`);\n  const diff = Math.round(__privateGet25(this, _previewTime)) - Math.round(pointerRatio * duration);\n  if (Math.abs(diff) < 1 && pointerRatio > 0.01 && pointerRatio < 0.99)\n    return;\n  __privateSet22(this, _previewTime, pointerRatio * duration);\n  __privateMethod11(this, _previewRequest, previewRequest_fn).call(this, __privateGet25(this, _previewTime));\n};\n_previewRequest = /* @__PURE__ */ new WeakSet();\npreviewRequest_fn = function(detail) {\n  this.dispatchEvent(\n    new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_PREVIEW_REQUEST, {\n      composed: true,\n      bubbles: true,\n      detail\n    })\n  );\n};\n_seekRequest = /* @__PURE__ */ new WeakSet();\nseekRequest_fn = function() {\n  __privateGet25(this, _animation).stop();\n  const detail = calcTimeFromRangeValue(this);\n  this.dispatchEvent(\n    new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_SEEK_REQUEST, {\n      composed: true,\n      bubbles: true,\n      detail\n    })\n  );\n};\nif (!GlobalThis.customElements.get(\"media-time-range\")) {\n  GlobalThis.customElements.define(\"media-time-range\", MediaTimeRange);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-volume-range.js\nvar DEFAULT_VOLUME = 1;\nvar toVolume = (el) => {\n  if (el.mediaMuted)\n    return 0;\n  return el.mediaVolume;\n};\nvar formatAsPercentString = ({ value }) => `${Math.round(value * 100)}%`;\nvar MediaVolumeRange = class extends MediaChromeRange {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_VOLUME,\n      MediaUIAttributes.MEDIA_MUTED,\n      MediaUIAttributes.MEDIA_VOLUME_UNAVAILABLE\n    ];\n  }\n  constructor() {\n    super();\n    this.range.addEventListener(\"input\", () => {\n      const detail = this.range.value;\n      const evt = new GlobalThis.CustomEvent(\n        MediaUIEvents.MEDIA_VOLUME_REQUEST,\n        {\n          composed: true,\n          bubbles: true,\n          detail\n        }\n      );\n      this.dispatchEvent(evt);\n    });\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.range.setAttribute(\"aria-label\", nouns.VOLUME());\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_VOLUME || attrName === MediaUIAttributes.MEDIA_MUTED) {\n      this.range.valueAsNumber = toVolume(this);\n      this.range.setAttribute(\n        \"aria-valuetext\",\n        formatAsPercentString(this.range)\n      );\n      this.updateBar();\n    }\n  }\n  /**\n   * @type {number}\n   */\n  get mediaVolume() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_VOLUME, DEFAULT_VOLUME);\n  }\n  set mediaVolume(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_VOLUME, value);\n  }\n  /**\n   * @type {boolean} Is the media currently muted\n   */\n  get mediaMuted() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_MUTED);\n  }\n  set mediaMuted(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_MUTED, value);\n  }\n  /**\n   * @type {string | undefined} The volume unavailability state\n   */\n  get mediaVolumeUnavailable() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_VOLUME_UNAVAILABLE);\n  }\n  set mediaVolumeUnavailable(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_VOLUME_UNAVAILABLE, value);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-volume-range\")) {\n  GlobalThis.customElements.define(\"media-volume-range\", MediaVolumeRange);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-chrome-listbox.js\nvar __accessCheck26 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet26 = (obj, member, getter) => {\n  __accessCheck26(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd26 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet23 = (obj, member, value, setter) => {\n  __accessCheck26(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod12 = (obj, member, method) => {\n  __accessCheck26(obj, member, \"access private method\");\n  return method;\n};\nvar _mediaController9;\nvar _keysSoFar2;\nvar _clearKeysTimeout2;\nvar _metaPressed;\nvar _clickListener2;\nvar _handleKeyListener;\nvar handleKeyListener_fn;\nvar _keyupListener2;\nvar _keydownListener2;\nvar _updateLayoutStyle2;\nvar updateLayoutStyle_fn2;\nvar _getOption;\nvar getOption_fn;\nvar _selectOption;\nvar selectOption_fn;\nvar _searchOption;\nvar searchOption_fn;\nvar _clearKeysOnDelay;\nvar clearKeysOnDelay_fn;\nvar checkIcon = (\n  /*html*/\n  `\n<svg aria-hidden=\"true\" viewBox=\"0 1 24 24\" part=\"select-indicator indicator\">\n  <path d=\"m10 15.17 9.193-9.191 1.414 1.414-10.606 10.606-6.364-6.364 1.414-1.414 4.95 4.95Z\"/>\n</svg>`\n);\nfunction createOption(text, value, selected) {\n  const option = Document2.createElement(\"media-chrome-option\");\n  option.part.add(\"option\");\n  option.value = value;\n  option.selected = selected;\n  const label = Document2.createElement(\"span\");\n  label.textContent = text;\n  option.append(label);\n  return option;\n}\nfunction createIndicator2(el, name) {\n  let customIndicator = el.querySelector(`:scope > [slot=\"${name}\"]`);\n  if ((customIndicator == null ? void 0 : customIndicator.nodeName) == \"SLOT\")\n    customIndicator = customIndicator.assignedElements({ flatten: true })[0];\n  if (customIndicator) {\n    customIndicator = customIndicator.cloneNode(true);\n    customIndicator.removeAttribute(\"slot\");\n    return customIndicator;\n  }\n  let fallbackIndicator = el.shadowRoot.querySelector(`[name=\"${name}\"] > svg`);\n  return fallbackIndicator.cloneNode(true);\n}\nvar template17 = Document2.createElement(\"template\");\ntemplate17.innerHTML = /*html*/\n`\n<style>\n  :host {\n    font: var(--media-font,\n      var(--media-font-weight, normal)\n      var(--media-font-size, 15px) /\n      var(--media-text-content-height, var(--media-control-height, 24px))\n      var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n    color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n    background: var(--media-listbox-background, var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .8))));\n    border-radius: var(--media-listbox-border-radius);\n    display: inline-flex;\n    flex-direction: column;\n    position: relative;\n    box-sizing: border-box;\n  }\n\n  ::slotted([slot=\"header\"]) {\n    padding: .4em 1.4em;\n    border-bottom: 1px solid rgb(255 255 255 / .25);\n  }\n\n  #container {\n    gap: var(--media-listbox-gap);\n    display: flex;\n    flex-direction: var(--media-listbox-flex-direction, column);\n    overflow: hidden auto;\n    padding-block: .5em;\n  }\n\n  media-chrome-option {\n    padding-inline: .7em 1.4em;\n  }\n\n  media-chrome-option > span {\n    margin-inline: .5ch;\n  }\n\n  [part~=\"indicator\"] {\n    fill: var(--media-option-indicator-fill, var(--media-icon-color, var(--media-primary-color, rgb(238 238 238))));\n    height: var(--media-option-indicator-height, 1.25em);\n    vertical-align: var(--media-option-indicator-vertical-align, text-top);\n  }\n\n  [part~=\"select-indicator\"] {\n    display: var(--media-option-select-indicator-display);\n    visibility: hidden;\n  }\n\n  [aria-selected=\"true\"] > [part~=\"select-indicator\"] {\n    visibility: visible;\n  }\n</style>\n<style id=\"layout-row\" media=\"width:0\">\n\n  ::slotted([slot=\"header\"]) {\n    padding: .4em .5em;\n  }\n\n  #container {\n    gap: var(--media-listbox-gap, .25em);\n    flex-direction: var(--media-listbox-flex-direction, row);\n    padding-inline: .5em;\n  }\n\n  media-chrome-option {\n    padding: .3em .24em;\n  }\n\n  media-chrome-option[aria-selected=\"true\"] {\n    background: var(--media-option-selected-background, rgb(255 255 255 / .2));\n  }\n\n  [part~=\"select-indicator\"] {\n    display: var(--media-option-select-indicator-display, none);\n  }\n</style>\n<slot name=\"header\"></slot>\n<slot id=\"container\"></slot>\n<slot name=\"select-indicator\" hidden>${checkIcon}</slot>\n`;\nvar MediaChromeListbox = class extends GlobalThis.HTMLElement {\n  constructor(options = {}) {\n    super();\n    __privateAdd26(this, _handleKeyListener);\n    __privateAdd26(this, _updateLayoutStyle2);\n    __privateAdd26(this, _getOption);\n    __privateAdd26(this, _selectOption);\n    __privateAdd26(this, _searchOption);\n    __privateAdd26(this, _clearKeysOnDelay);\n    __privateAdd26(this, _mediaController9, void 0);\n    __privateAdd26(this, _keysSoFar2, \"\");\n    __privateAdd26(this, _clearKeysTimeout2, null);\n    __privateAdd26(this, _metaPressed, false);\n    __privateAdd26(this, _clickListener2, (e) => {\n      this.handleClick(e);\n    });\n    __privateAdd26(this, _keyupListener2, (e) => {\n      const { key } = e;\n      if (key === \"Escape\") {\n        this.removeEventListener(\"keyup\", __privateGet26(this, _keyupListener2));\n        return;\n      }\n      if (key === \"Meta\") {\n        __privateSet23(this, _metaPressed, false);\n        return;\n      }\n      __privateMethod12(this, _handleKeyListener, handleKeyListener_fn).call(this, e);\n    });\n    __privateAdd26(this, _keydownListener2, (e) => {\n      const { key, altKey } = e;\n      if (altKey) {\n        this.removeEventListener(\"keyup\", __privateGet26(this, _keyupListener2));\n        return;\n      }\n      if (key === \"Meta\") {\n        __privateSet23(this, _metaPressed, true);\n        return;\n      }\n      if (this.keysUsed.includes(key)) {\n        e.preventDefault();\n      }\n      if (__privateGet26(this, _metaPressed) && this.keysUsed.includes(key)) {\n        __privateMethod12(this, _handleKeyListener, handleKeyListener_fn).call(this, e);\n        return;\n      }\n      this.addEventListener(\"keyup\", __privateGet26(this, _keyupListener2), { once: true });\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.nativeEl = template17.content.cloneNode(true);\n      if (options.slotTemplate) {\n        this.nativeEl.append(options.slotTemplate.content.cloneNode(true));\n      }\n      this.shadowRoot.append(this.nativeEl);\n    }\n    this.container = this.shadowRoot.querySelector(\"#container\");\n    this.container.addEventListener(\"slotchange\", (event) => {\n      for (let node of event.target.assignedNodes({ flatten: true })) {\n        if (node.nodeType === 3 && node.textContent.trim() === \"\") {\n          node.remove();\n        }\n      }\n    });\n  }\n  static get observedAttributes() {\n    return [\"disabled\", \"style\", MediaStateReceiverAttributes.MEDIA_CONTROLLER];\n  }\n  static formatOptionText(text) {\n    return text;\n  }\n  formatOptionText(text, data) {\n    return this.constructor.formatOptionText(text, data);\n  }\n  get options() {\n    var _a3;\n    let options = this.querySelectorAll(\"media-chrome-option\");\n    if (!options.length) {\n      options = (_a3 = this.container) == null ? void 0 : _a3.querySelectorAll(\"media-chrome-option\");\n    }\n    return Array.from(options);\n  }\n  get selectedOptions() {\n    return this.options.filter((option) => option.selected);\n  }\n  get value() {\n    var _a3, _b;\n    return (_b = (_a3 = this.selectedOptions[0]) == null ? void 0 : _a3.value) != null ? _b : \"\";\n  }\n  set value(newValue) {\n    const option = this.options.find((option2) => option2.value === newValue);\n    if (!option)\n      return;\n    __privateMethod12(this, _selectOption, selectOption_fn).call(this, option);\n  }\n  focus() {\n    var _a3;\n    (_a3 = this.selectedOptions[0]) == null ? void 0 : _a3.focus();\n  }\n  enable() {\n    this.addEventListener(\"click\", __privateGet26(this, _clickListener2));\n    this.addEventListener(\"keydown\", __privateGet26(this, _keydownListener2));\n  }\n  disable() {\n    this.removeEventListener(\"click\", __privateGet26(this, _clickListener2));\n    this.removeEventListener(\"keyup\", __privateGet26(this, _keyupListener2));\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === \"style\" && newValue !== oldValue) {\n      __privateMethod12(this, _updateLayoutStyle2, updateLayoutStyle_fn2).call(this);\n    } else if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet26(this, _mediaController9)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet23(this, _mediaController9, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet23(this, _mediaController9, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet26(this, _mediaController9)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    } else if (attrName === \"disabled\" && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    __privateMethod12(this, _updateLayoutStyle2, updateLayoutStyle_fn2).call(this);\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    }\n    if (!this.hasAttribute(\"role\")) {\n      this.setAttribute(\"role\", \"listbox\");\n    }\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet23(\n        this,\n        _mediaController9,\n        // @ts-ignore\n        (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId)\n      );\n      (_c = (_b = __privateGet26(this, _mediaController9)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    this.disable();\n    (_b = (_a3 = __privateGet26(this, _mediaController9)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet23(this, _mediaController9, null);\n  }\n  get keysUsed() {\n    return [\"Enter\", \" \", \"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"];\n  }\n  handleSelection(e, toggle) {\n    const option = __privateMethod12(this, _getOption, getOption_fn).call(this, e);\n    if (!option)\n      return;\n    __privateMethod12(this, _selectOption, selectOption_fn).call(this, option, toggle);\n  }\n  handleMovement(e) {\n    const { key } = e;\n    const els = this.options;\n    let currentOption = __privateMethod12(this, _getOption, getOption_fn).call(this, e);\n    if (!currentOption) {\n      currentOption = els.filter(\n        (el) => el.getAttribute(\"tabindex\") === \"0\"\n      )[0];\n    }\n    let nextOption;\n    switch (key) {\n      case \"ArrowDown\":\n        nextOption = currentOption.nextElementSibling;\n        if (nextOption == null ? void 0 : nextOption.hasAttribute(\"disabled\")) {\n          nextOption = nextOption.nextElementSibling;\n        }\n        break;\n      case \"ArrowUp\":\n        nextOption = currentOption.previousElementSibling;\n        if (nextOption == null ? void 0 : nextOption.hasAttribute(\"disabled\")) {\n          nextOption = nextOption.previousElementSibling;\n        }\n        break;\n      case \"Home\":\n        nextOption = els[0];\n        break;\n      case \"End\":\n        nextOption = els[els.length - 1];\n        break;\n      default:\n        nextOption = __privateMethod12(this, _searchOption, searchOption_fn).call(this, key);\n        break;\n    }\n    if (nextOption) {\n      els.forEach((el) => el.setAttribute(\"tabindex\", \"-1\"));\n      nextOption.setAttribute(\"tabindex\", \"0\");\n      nextOption.focus();\n    }\n  }\n  handleClick(e) {\n    const option = __privateMethod12(this, _getOption, getOption_fn).call(this, e);\n    if (!option || option.hasAttribute(\"disabled\"))\n      return;\n    this.options.forEach((el) => el.setAttribute(\"tabindex\", \"-1\"));\n    option.setAttribute(\"tabindex\", \"0\");\n    this.handleSelection(\n      e,\n      this.hasAttribute(\"aria-multiselectable\") && this.getAttribute(\"aria-multiselectable\") === \"true\"\n    );\n  }\n};\n_mediaController9 = /* @__PURE__ */ new WeakMap();\n_keysSoFar2 = /* @__PURE__ */ new WeakMap();\n_clearKeysTimeout2 = /* @__PURE__ */ new WeakMap();\n_metaPressed = /* @__PURE__ */ new WeakMap();\n_clickListener2 = /* @__PURE__ */ new WeakMap();\n_handleKeyListener = /* @__PURE__ */ new WeakSet();\nhandleKeyListener_fn = function(e) {\n  const { key } = e;\n  if (key === \"Enter\" || key === \" \") {\n    this.handleSelection(\n      e,\n      this.hasAttribute(\"aria-multiselectable\") && this.getAttribute(\"aria-multiselectable\") === \"true\"\n    );\n  } else {\n    this.handleMovement(e);\n  }\n};\n_keyupListener2 = /* @__PURE__ */ new WeakMap();\n_keydownListener2 = /* @__PURE__ */ new WeakMap();\n_updateLayoutStyle2 = /* @__PURE__ */ new WeakSet();\nupdateLayoutStyle_fn2 = function() {\n  var _a3;\n  const layoutRowStyle = this.shadowRoot.querySelector(\"#layout-row\");\n  const isLayoutRow = ((_a3 = getComputedStyle(this).getPropertyValue(\"--media-listbox-layout\")) == null ? void 0 : _a3.trim()) === \"row\";\n  layoutRowStyle.setAttribute(\"media\", isLayoutRow ? \"\" : \"width:0\");\n};\n_getOption = /* @__PURE__ */ new WeakSet();\ngetOption_fn = function(e) {\n  const composedPath = e.composedPath();\n  const index = composedPath.findIndex(\n    (el) => el.nodeName === \"MEDIA-CHROME-OPTION\"\n  );\n  return composedPath[index];\n};\n_selectOption = /* @__PURE__ */ new WeakSet();\nselectOption_fn = function(option, toggle) {\n  const oldSelectedOptions = [...this.selectedOptions];\n  if (!this.hasAttribute(\"aria-multiselectable\") || this.getAttribute(\"aria-multiselectable\") !== \"true\") {\n    this.options.forEach((el) => el.selected = false);\n  }\n  if (toggle) {\n    option.selected = !option.selected;\n  } else {\n    option.selected = true;\n  }\n  if (this.selectedOptions.some((opt, i2) => opt != oldSelectedOptions[i2])) {\n    this.dispatchEvent(\n      new Event(\"change\", { bubbles: true, composed: true })\n    );\n  }\n};\n_searchOption = /* @__PURE__ */ new WeakSet();\nsearchOption_fn = function(key) {\n  __privateMethod12(this, _clearKeysOnDelay, clearKeysOnDelay_fn).call(this);\n  const els = this.options;\n  const activeIndex = els.findIndex(\n    (el) => el.getAttribute(\"tabindex\") === \"0\"\n  );\n  __privateSet23(this, _keysSoFar2, __privateGet26(this, _keysSoFar2) + key);\n  const repeatedKey = __privateGet26(this, _keysSoFar2).split(\"\").every((k3) => k3 === key);\n  const after = els.slice(activeIndex + (repeatedKey ? 1 : 0)).filter((el) => el.textContent.toLowerCase().startsWith(__privateGet26(this, _keysSoFar2)));\n  const before = els.slice(0, activeIndex - (repeatedKey ? 1 : 0)).filter((el) => el.textContent.toLowerCase().startsWith(__privateGet26(this, _keysSoFar2)));\n  let afterRepeated = [];\n  let beforeRepeated = [];\n  if (repeatedKey) {\n    afterRepeated = els.slice(activeIndex + (repeatedKey ? 1 : 0)).filter((el) => el.textContent.startsWith(key));\n    beforeRepeated = els.slice(0, activeIndex - (repeatedKey ? 1 : 0)).filter((el) => el.textContent.startsWith(key));\n  }\n  const returns = [...after, ...before, ...afterRepeated, ...beforeRepeated];\n  return returns[0];\n};\n_clearKeysOnDelay = /* @__PURE__ */ new WeakSet();\nclearKeysOnDelay_fn = function() {\n  clearTimeout(__privateGet26(this, _clearKeysTimeout2));\n  __privateSet23(this, _clearKeysTimeout2, null);\n  __privateSet23(this, _clearKeysTimeout2, setTimeout(() => {\n    __privateSet23(this, _keysSoFar2, \"\");\n    __privateSet23(this, _clearKeysTimeout2, null);\n  }, 500));\n};\nif (!GlobalThis.customElements.get(\"media-chrome-listbox\")) {\n  GlobalThis.customElements.define(\"media-chrome-listbox\", MediaChromeListbox);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-chrome-option.js\nvar __accessCheck27 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet27 = (obj, member, getter) => {\n  __accessCheck27(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd27 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet24 = (obj, member, value, setter) => {\n  __accessCheck27(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod13 = (obj, member, method) => {\n  __accessCheck27(obj, member, \"access private method\");\n  return method;\n};\nvar _dirty2;\nvar _ownerElement2;\nvar _reset2;\nvar reset_fn2;\nvar template18 = Document2.createElement(\"template\");\ntemplate18.innerHTML = /*html*/\n`\n<style>\n  :host {\n    cursor: pointer;\n    display: block;\n    line-height: revert;\n    white-space: nowrap;\n    white-space-collapse: collapse;\n    text-wrap: nowrap;\n    padding: .4em .5em;\n    transition: var(--media-option-transition);\n    outline: var(--media-option-outline, 0);\n    outline-offset: var(--media-option-outline-offset, -1px);\n  }\n\n  :host(:focus-visible) {\n    box-shadow: var(--media-option-focus-shadow, inset 0 0 0 2px rgb(27 127 204 / .9));\n    outline: var(--media-option-hover-outline, 0);\n    outline-offset: var(--media-option-hover-outline-offset,  var(--media-option-outline-offset, -1px));\n  }\n\n  :host(:hover) {\n    cursor: pointer;\n    background: var(--media-option-hover-background, rgb(82 82 122 / .8));\n    outline: var(--media-option-hover-outline);\n    outline-offset: var(--media-option-hover-outline-offset,  var(--media-option-outline-offset, -1px));\n  }\n\n  :host([aria-selected=\"true\"]) {\n    background: var(--media-option-selected-background);\n  }\n\n  :host([disabled]) {\n    pointer-events: none;\n    color: rgba(255, 255, 255, .3);\n  }\n</style>\n<slot></slot>\n`;\nvar Attributes14 = {\n  VALUE: \"value\",\n  SELECTED: \"selected\",\n  DISABLED: \"disabled\"\n};\nvar MediaChromeOption = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd27(this, _reset2);\n    __privateAdd27(this, _dirty2, false);\n    __privateAdd27(this, _ownerElement2, void 0);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template18.content.cloneNode(true));\n    }\n  }\n  static get observedAttributes() {\n    return [Attributes14.DISABLED, Attributes14.SELECTED, Attributes14.VALUE];\n  }\n  get value() {\n    var _a3;\n    return (_a3 = this.getAttribute(Attributes14.VALUE)) != null ? _a3 : this.text;\n  }\n  set value(val) {\n    this.setAttribute(Attributes14.VALUE, val);\n  }\n  get text() {\n    var _a3;\n    return ((_a3 = this.textContent) != null ? _a3 : \"\").trim();\n  }\n  get selected() {\n    return this.getAttribute(\"aria-selected\") === \"true\";\n  }\n  set selected(value) {\n    __privateSet24(this, _dirty2, true);\n    this.setAttribute(\"aria-selected\", value ? \"true\" : \"false\");\n    if (value) {\n      this.part.add(\"option-selected\");\n    } else {\n      this.part.remove(\"option-selected\");\n    }\n  }\n  enable() {\n    if (!this.hasAttribute(\"tabindex\")) {\n      this.setAttribute(\"tabindex\", -1);\n    }\n    if (!this.hasAttribute(\"aria-selected\")) {\n      this.setAttribute(\"aria-selected\", \"false\");\n    }\n  }\n  disable() {\n    this.removeAttribute(\"tabindex\");\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === Attributes14.SELECTED && !__privateGet27(this, _dirty2)) {\n      this.setAttribute(\"aria-selected\", newValue != null ? \"true\" : \"false\");\n    } else if (attrName === Attributes14.DISABLED && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n  }\n  connectedCallback() {\n    if (!this.hasAttribute(Attributes14.DISABLED)) {\n      this.enable();\n    }\n    this.setAttribute(\"role\", \"option\");\n    __privateSet24(this, _ownerElement2, closestOptionsContainer(this, this.parentNode));\n    __privateMethod13(this, _reset2, reset_fn2).call(this);\n  }\n  disconnectedCallback() {\n    this.disable();\n    __privateMethod13(this, _reset2, reset_fn2).call(this);\n    __privateSet24(this, _ownerElement2, null);\n  }\n  handleClick() {\n  }\n};\n_dirty2 = /* @__PURE__ */ new WeakMap();\n_ownerElement2 = /* @__PURE__ */ new WeakMap();\n_reset2 = /* @__PURE__ */ new WeakSet();\nreset_fn2 = function() {\n  var _a3;\n  const options = (_a3 = __privateGet27(this, _ownerElement2)) == null ? void 0 : _a3.options;\n  if (!options)\n    return;\n  let selectedOption = options.filter((option) => option.getAttribute(\"aria-selected\") === \"true\").pop();\n  if (!selectedOption)\n    selectedOption = options[0];\n  if (__privateGet27(this, _ownerElement2).getAttribute(\"aria-multiselectable\") !== \"true\") {\n    options.forEach((option) => {\n      option.setAttribute(\"tabindex\", \"-1\");\n      option.setAttribute(\"aria-selected\", \"false\");\n    });\n  }\n  selectedOption == null ? void 0 : selectedOption.setAttribute(\"tabindex\", \"0\");\n  selectedOption == null ? void 0 : selectedOption.setAttribute(\"aria-selected\", \"true\");\n};\nfunction closestOptionsContainer(childNode, parentNode) {\n  if (!childNode)\n    return null;\n  const { host } = childNode.getRootNode();\n  if (!parentNode && host)\n    return closestOptionsContainer(childNode, host);\n  if (parentNode == null ? void 0 : parentNode.options)\n    return parentNode;\n  return closestOptionsContainer(parentNode, parentNode == null ? void 0 : parentNode.parentNode);\n}\nif (!GlobalThis.customElements.get(\"media-chrome-option\")) {\n  GlobalThis.customElements.define(\"media-chrome-option\", MediaChromeOption);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-chrome-selectmenu.js\nvar __accessCheck28 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet28 = (obj, member, getter) => {\n  __accessCheck28(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd28 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet25 = (obj, member, value, setter) => {\n  __accessCheck28(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod14 = (obj, member, method) => {\n  __accessCheck28(obj, member, \"access private method\");\n  return method;\n};\nvar _mediaController10;\nvar _button;\nvar _buttonSlot;\nvar _listbox;\nvar _listboxSlot;\nvar _keyupListener3;\nvar _keydownListener3;\nvar _documentClickHandler;\nvar _clickHandler;\nvar _handleOptionChange;\nvar _toggle;\nvar toggle_fn;\nvar _show;\nvar show_fn;\nvar _hide;\nvar hide_fn;\nvar _updateMenuPosition;\nvar template19 = Document2.createElement(\"template\");\ntemplate19.innerHTML = /*html*/\n`\n  <style>\n  :host {\n    font: var(--media-font,\n      var(--media-font-weight, normal)\n      var(--media-font-size, 15px) /\n      var(--media-text-content-height, var(--media-control-height, 24px))\n      var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n    color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n    display: inline-flex;\n    position: relative;\n    flex-shrink: .5;\n  }\n\n  [name=listbox]::slotted(*),\n  [part=listbox] {\n    position: absolute;\n    bottom: 100%;\n    max-height: 300px;\n    transition: var(--media-selectmenu-transition-in,\n      visibility 0s, transform .15s ease-out, opacity .15s ease-out);\n    transform: var(--media-listbox-transform-in, translateY(0) scale(1));\n    visibility: visible;\n    opacity: 1;\n  }\n\n  [name=listbox][hidden]::slotted(*),\n  [hidden] [part=listbox] {\n    transition: var(--media-selectmenu-transition-out,\n      visibility .15s ease-out, transform .15s ease-out, opacity .15s ease-out);\n    transform: var(--media-listbox-transform-out, translateY(2px) scale(.99));\n    visibility: hidden;\n    opacity: 0;\n    pointer-events: none;\n  }\n\n  slot[name=listbox][hidden] {\n    display: block;\n  }\n  </style>\n\n  <slot name=\"button\">\n    <media-chrome-button aria-haspopup=\"listbox\" part=\"button\">\n      <slot name=\"button-content\"></slot>\n    </media-chrome-button>\n  </slot>\n  <slot name=\"listbox\" hidden>\n    <media-chrome-listbox id=\"listbox\" part=\"listbox\">\n      <slot></slot>\n    </media-chrome-listbox>\n  </slot>\n`;\nvar MediaChromeSelectMenu = class extends GlobalThis.HTMLElement {\n  constructor() {\n    var _a3;\n    super();\n    __privateAdd28(this, _toggle);\n    __privateAdd28(this, _show);\n    __privateAdd28(this, _hide);\n    __privateAdd28(this, _mediaController10, void 0);\n    __privateAdd28(this, _button, void 0);\n    __privateAdd28(this, _buttonSlot, void 0);\n    __privateAdd28(this, _listbox, void 0);\n    __privateAdd28(this, _listboxSlot, void 0);\n    __privateAdd28(this, _keyupListener3, (e) => {\n      const { key } = e;\n      if (!this.keysUsed.includes(key)) {\n        this.removeEventListener(\"keyup\", __privateGet28(this, _keyupListener3));\n        return;\n      }\n      const isButton = e.composedPath().includes(__privateGet28(this, _button));\n      if (isButton && (key === \"Enter\" || key === \" \")) {\n        __privateMethod14(this, _toggle, toggle_fn).call(this);\n      } else if (key === \"Escape\") {\n        __privateMethod14(this, _hide, hide_fn).call(this);\n      }\n    });\n    __privateAdd28(this, _keydownListener3, (e) => {\n      const { metaKey, altKey, key } = e;\n      if (metaKey || altKey || !this.keysUsed.includes(key)) {\n        this.removeEventListener(\"keyup\", __privateGet28(this, _keyupListener3));\n        return;\n      }\n      e.preventDefault();\n      this.addEventListener(\"keyup\", __privateGet28(this, _keyupListener3), { once: true });\n    });\n    __privateAdd28(this, _documentClickHandler, (e) => {\n      if (e.composedPath().includes(this))\n        return;\n      __privateMethod14(this, _hide, hide_fn).call(this);\n    });\n    __privateAdd28(this, _clickHandler, (e) => {\n      if (e.composedPath().includes(__privateGet28(this, _button))) {\n        __privateMethod14(this, _toggle, toggle_fn).call(this);\n      }\n    });\n    __privateAdd28(this, _handleOptionChange, () => {\n      __privateMethod14(this, _hide, hide_fn).call(this);\n    });\n    __privateAdd28(this, _updateMenuPosition, () => {\n      if (__privateGet28(this, _listbox).offsetWidth === 0)\n        return;\n      const listboxWidth = __privateGet28(this, _listbox).offsetWidth;\n      const buttonRect = __privateGet28(this, _button).getBoundingClientRect();\n      if (this.hasAttribute(\"mediacontroller\") || __privateGet28(this, _button).hasAttribute(\"mediacontroller\") || __privateGet28(this, _listbox).hasAttribute(\"mediacontroller\")) {\n        __privateGet28(this, _listbox).style.zIndex = \"1\";\n        __privateGet28(this, _listbox).style.bottom = \"unset\";\n        __privateGet28(this, _listbox).style.right = null;\n        __privateGet28(this, _listbox).style.left = \"0\";\n        __privateGet28(this, _listbox).style.top = `${buttonRect.height}px`;\n        return;\n      }\n      const bounds = getBoundsElement2(this);\n      const boundsRect = bounds.getBoundingClientRect();\n      const listboxRight = buttonRect.x + listboxWidth;\n      const position = Math.max(\n        buttonRect.right - listboxRight,\n        buttonRect.right - boundsRect.right\n      );\n      __privateGet28(this, _listbox).style.left = null;\n      __privateGet28(this, _listbox).style.right = `${position}px`;\n      __privateGet28(this, _listbox).style.maxHeight = `${boundsRect.height - buttonRect.height}px`;\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template19.content.cloneNode(true));\n    }\n    (_a3 = this.init) == null ? void 0 : _a3.call(this);\n    __privateSet25(this, _button, this.shadowRoot.querySelector(\"[part=button]\"));\n    __privateSet25(this, _listbox, this.shadowRoot.querySelector(\"[part=listbox]\"));\n    __privateSet25(this, _buttonSlot, this.shadowRoot.querySelector(\"slot[name=button]\"));\n    __privateGet28(this, _buttonSlot).addEventListener(\"slotchange\", () => {\n      const newButton = __privateGet28(this, _buttonSlot).assignedElements()[0];\n      if (!newButton)\n        return;\n      __privateSet25(this, _button, newButton);\n      __privateGet28(this, _button).preventClick = true;\n      const disabled = this.hasAttribute(\"disabled\") || __privateGet28(this, _button).hasAttribute(\"disabled\");\n      if (disabled) {\n        this.disable();\n      } else {\n        this.enable();\n        __privateGet28(this, _button).setAttribute(\"aria-haspopup\", \"listbox\");\n      }\n    });\n    __privateSet25(this, _listboxSlot, this.shadowRoot.querySelector(\"slot[name=listbox]\"));\n    __privateGet28(this, _listboxSlot).addEventListener(\"slotchange\", () => {\n      __privateSet25(this, _listbox, __privateGet28(this, _listboxSlot).assignedElements()[0] || __privateGet28(this, _listbox));\n    });\n  }\n  static get observedAttributes() {\n    return [\"disabled\", MediaStateReceiverAttributes.MEDIA_CONTROLLER];\n  }\n  enable() {\n    __privateGet28(this, _button).toggleAttribute(\"disabled\", false);\n    this.addEventListener(\"change\", __privateGet28(this, _handleOptionChange));\n    this.addEventListener(\"keydown\", __privateGet28(this, _keydownListener3));\n    this.addEventListener(\"click\", __privateGet28(this, _clickHandler));\n    Document2.addEventListener(\"click\", __privateGet28(this, _documentClickHandler));\n  }\n  disable() {\n    __privateGet28(this, _button).toggleAttribute(\"disabled\", true);\n    this.removeEventListener(\"change\", __privateGet28(this, _handleOptionChange));\n    this.removeEventListener(\"keydown\", __privateGet28(this, _keydownListener3));\n    this.removeEventListener(\"keyup\", __privateGet28(this, _keyupListener3));\n    this.removeEventListener(\"click\", __privateGet28(this, _clickHandler));\n    Document2.removeEventListener(\"click\", __privateGet28(this, _documentClickHandler));\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet28(this, _mediaController10)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet25(this, _mediaController10, null);\n        __privateGet28(this, _listbox).removeAttribute(\n          MediaStateReceiverAttributes.MEDIA_CONTROLLER\n        );\n      }\n      if (newValue && this.isConnected) {\n        __privateSet25(this, _mediaController10, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet28(this, _mediaController10)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n        __privateGet28(this, _listbox).setAttribute(\n          MediaStateReceiverAttributes.MEDIA_CONTROLLER,\n          newValue\n        );\n      }\n    } else if (attrName === \"disabled\" && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    style.setProperty(\n      \"display\",\n      `var(--media-control-display, var(--${this.localName}-display, inline-flex))`\n    );\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet25(this, _mediaController10, (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId));\n      (_c = (_b = __privateGet28(this, _mediaController10)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n      __privateGet28(this, _listbox).setAttribute(\n        MediaStateReceiverAttributes.MEDIA_CONTROLLER,\n        mediaControllerId\n      );\n    }\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    }\n    if (!__privateGet28(this, _listboxSlot).hidden) {\n      observeResize(getBoundsElement2(this), __privateGet28(this, _updateMenuPosition));\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    unobserveResize(getBoundsElement2(this), __privateGet28(this, _updateMenuPosition));\n    this.disable();\n    (_b = (_a3 = __privateGet28(this, _mediaController10)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet25(this, _mediaController10, null);\n    __privateGet28(this, _listbox).removeAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n  }\n  get keysUsed() {\n    return [\"Enter\", \"Escape\", \" \", \"ArrowUp\", \"ArrowDown\", \"f\", \"c\", \"k\", \"m\"];\n  }\n};\n_mediaController10 = /* @__PURE__ */ new WeakMap();\n_button = /* @__PURE__ */ new WeakMap();\n_buttonSlot = /* @__PURE__ */ new WeakMap();\n_listbox = /* @__PURE__ */ new WeakMap();\n_listboxSlot = /* @__PURE__ */ new WeakMap();\n_keyupListener3 = /* @__PURE__ */ new WeakMap();\n_keydownListener3 = /* @__PURE__ */ new WeakMap();\n_documentClickHandler = /* @__PURE__ */ new WeakMap();\n_clickHandler = /* @__PURE__ */ new WeakMap();\n_handleOptionChange = /* @__PURE__ */ new WeakMap();\n_toggle = /* @__PURE__ */ new WeakSet();\ntoggle_fn = function() {\n  if (__privateGet28(this, _listboxSlot).hidden) {\n    __privateMethod14(this, _show, show_fn).call(this);\n  } else {\n    __privateMethod14(this, _hide, hide_fn).call(this);\n  }\n};\n_show = /* @__PURE__ */ new WeakSet();\nshow_fn = function() {\n  if (!__privateGet28(this, _listboxSlot).hidden)\n    return;\n  __privateGet28(this, _listboxSlot).hidden = false;\n  __privateGet28(this, _button).setAttribute(\"aria-expanded\", \"true\");\n  __privateGet28(this, _updateMenuPosition).call(this);\n  __privateGet28(this, _listbox).focus();\n  observeResize(getBoundsElement2(this), __privateGet28(this, _updateMenuPosition));\n};\n_hide = /* @__PURE__ */ new WeakSet();\nhide_fn = function() {\n  if (__privateGet28(this, _listboxSlot).hidden)\n    return;\n  unobserveResize(getBoundsElement2(this), __privateGet28(this, _updateMenuPosition));\n  const activeElement = getActiveElement();\n  __privateGet28(this, _listboxSlot).hidden = true;\n  __privateGet28(this, _button).setAttribute(\"aria-expanded\", \"false\");\n  if (containsComposedNode(__privateGet28(this, _listbox), activeElement)) {\n    __privateGet28(this, _button).focus();\n  }\n};\n_updateMenuPosition = /* @__PURE__ */ new WeakMap();\nfunction getBoundsElement2(host) {\n  var _a3;\n  return (_a3 = host.getAttribute(\"bounds\") ? closestComposedNode(host, `#${host.getAttribute(\"bounds\")}`) : getMediaControllerElement(host) || host.parentElement) != null ? _a3 : host;\n}\nfunction getMediaControllerElement(host) {\n  var _a3;\n  const mediaControllerId = host.getAttribute(\n    MediaStateReceiverAttributes.MEDIA_CONTROLLER\n  );\n  if (mediaControllerId) {\n    return (_a3 = host.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId);\n  }\n  return closestComposedNode(host, \"media-controller\");\n}\nif (!GlobalThis.customElements.get(\"media-chrome-selectmenu\")) {\n  GlobalThis.customElements.define(\n    \"media-chrome-selectmenu\",\n    MediaChromeSelectMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-captions-listbox.js\nvar __accessCheck29 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet29 = (obj, member, getter) => {\n  __accessCheck29(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd29 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet26 = (obj, member, value, setter) => {\n  __accessCheck29(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod15 = (obj, member, method) => {\n  __accessCheck29(obj, member, \"access private method\");\n  return method;\n};\nvar _prevState4;\nvar _render5;\nvar render_fn5;\nvar _onChange5;\nvar onChange_fn5;\nvar ccIcon2 = (\n  /*html*/\n  `\n<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\" part=\"captions-indicator indicator\">\n  <path d=\"M22.83 5.68a2.58 2.58 0 0 0-2.3-2.5c-3.62-.24-11.44-.24-15.06 0a2.58 2.58 0 0 0-2.3 2.5c-.23 4.21-.23 8.43 0 12.64a2.58 2.58 0 0 0 2.3 2.5c3.62.24 11.44.24 15.06 0a2.58 2.58 0 0 0 2.3-2.5c.23-4.21.23-8.43 0-12.64Zm-11.39 9.45a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.92 3.92 0 0 1 .92-2.77 3.18 3.18 0 0 1 2.43-1 2.94 2.94 0 0 1 2.13.78c.364.359.62.813.74 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.17 1.61 1.61 0 0 0-1.29.58 2.79 2.79 0 0 0-.5 1.89 3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.48 1.48 0 0 0 1-.37 2.1 2.1 0 0 0 .59-1.14l1.4.44a3.23 3.23 0 0 1-1.07 1.69Zm7.22 0a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.88 3.88 0 0 1 .93-2.77 3.14 3.14 0 0 1 2.42-1 3 3 0 0 1 2.16.82 2.8 2.8 0 0 1 .73 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.21 1.61 1.61 0 0 0-1.29.58A2.79 2.79 0 0 0 15 12a3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.44 1.44 0 0 0 1-.37 2.1 2.1 0 0 0 .6-1.15l1.4.44a3.17 3.17 0 0 1-1.1 1.7Z\"/>\n</svg>`\n);\nvar slotTemplate17 = Document2.createElement(\"template\");\nslotTemplate17.innerHTML = /*html*/\n`\n  <slot name=\"captions-indicator\" hidden>${ccIcon2}</slot>\n`;\nvar MediaCaptionsListbox = class extends MediaChromeListbox {\n  constructor() {\n    super({ slotTemplate: slotTemplate17 });\n    __privateAdd29(this, _render5);\n    __privateAdd29(this, _onChange5);\n    __privateAdd29(this, _prevState4, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      \"aria-multiselectable\",\n      MediaUIAttributes.MEDIA_SUBTITLES_LIST,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_LIST && oldValue !== newValue) {\n      __privateMethod15(this, _render5, render_fn5).call(this);\n    } else if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_SHOWING && oldValue !== newValue) {\n      this.value = newValue;\n    } else if (attrName === \"aria-multiselectable\") {\n      this.removeAttribute(\"aria-multiselectable\");\n      console.warn(\n        \"Captions List doesn't currently support multiple selections. You can enable multiple items via the media.textTracks API.\"\n      );\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod15(this, _onChange5, onChange_fn5));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod15(this, _onChange5, onChange_fn5));\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesList() {\n    return getSubtitlesListAttr4(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST);\n  }\n  set mediaSubtitlesList(list) {\n    setSubtitlesListAttr4(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST, list);\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesShowing() {\n    return getSubtitlesListAttr4(\n      this,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    );\n  }\n  set mediaSubtitlesShowing(list) {\n    setSubtitlesListAttr4(this, MediaUIAttributes.MEDIA_SUBTITLES_SHOWING, list);\n  }\n};\n_prevState4 = /* @__PURE__ */ new WeakMap();\n_render5 = /* @__PURE__ */ new WeakSet();\nrender_fn5 = function() {\n  var _a3;\n  if (__privateGet29(this, _prevState4) === JSON.stringify(this.mediaSubtitlesList))\n    return;\n  __privateSet26(this, _prevState4, JSON.stringify(this.mediaSubtitlesList));\n  const container = this.shadowRoot.querySelector(\"#container\");\n  container.textContent = \"\";\n  const isOff = !this.value;\n  const option = createOption(this.formatOptionText(\"Off\"), \"off\", isOff);\n  option.prepend(createIndicator2(this, \"select-indicator\"));\n  container.append(option);\n  const subtitlesList = this.mediaSubtitlesList;\n  for (const subs of subtitlesList) {\n    const option2 = createOption(\n      this.formatOptionText(subs.label, subs),\n      formatTextTrackObj(subs),\n      this.value == formatTextTrackObj(subs)\n    );\n    option2.prepend(createIndicator2(this, \"select-indicator\"));\n    const type = (_a3 = subs.kind) != null ? _a3 : \"subs\";\n    if (type === \"captions\") {\n      option2.append(createIndicator2(this, \"captions-indicator\"));\n    }\n    container.append(option2);\n  }\n};\n_onChange5 = /* @__PURE__ */ new WeakSet();\nonChange_fn5 = function() {\n  const showingSubs = this.mediaSubtitlesShowing;\n  const showingSubsStr = this.getAttribute(\n    MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n  );\n  const localStateChange = this.value !== showingSubsStr;\n  if ((showingSubs == null ? void 0 : showingSubs.length) && localStateChange) {\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(\n        MediaUIEvents.MEDIA_DISABLE_SUBTITLES_REQUEST,\n        {\n          composed: true,\n          bubbles: true,\n          detail: showingSubs\n        }\n      )\n    );\n  }\n  if (!this.value || !localStateChange)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_SHOW_SUBTITLES_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nvar getSubtitlesListAttr4 = (el, attrName) => {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal ? parseTextTracksStr(attrVal) : [];\n};\nvar setSubtitlesListAttr4 = (el, attrName, list) => {\n  if (!(list == null ? void 0 : list.length)) {\n    el.removeAttribute(attrName);\n    return;\n  }\n  const newValStr = stringifyTextTrackList(list);\n  const oldVal = el.getAttribute(attrName);\n  if (oldVal === newValStr)\n    return;\n  el.setAttribute(attrName, newValStr);\n};\nif (!GlobalThis.customElements.get(\"media-captions-listbox\")) {\n  GlobalThis.customElements.define(\n    \"media-captions-listbox\",\n    MediaCaptionsListbox\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-captions-selectmenu.js\nvar MediaCaptionsSelectMenu = class extends MediaChromeSelectMenu {\n  init() {\n    const captionsButton = Document2.createElement(\"media-captions-button\");\n    captionsButton.part.add(\"button\");\n    captionsButton.preventClick = true;\n    const captionsListbox = Document2.createElement(\"media-captions-listbox\");\n    captionsListbox.part.add(\"listbox\");\n    captionsListbox.setAttribute(\n      \"exportparts\",\n      \"option, option-selected, indicator\"\n    );\n    const buttonSlot = this.shadowRoot.querySelector(\"slot[name=button]\");\n    const listboxSlot = this.shadowRoot.querySelector(\"slot[name=listbox]\");\n    buttonSlot.textContent = \"\";\n    listboxSlot.textContent = \"\";\n    buttonSlot.append(captionsButton);\n    listboxSlot.append(captionsListbox);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-captions-selectmenu\")) {\n  GlobalThis.customElements.define(\n    \"media-captions-selectmenu\",\n    MediaCaptionsSelectMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-playback-rate-listbox.js\nvar __accessCheck30 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet30 = (obj, member, getter) => {\n  __accessCheck30(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd30 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateMethod16 = (obj, member, method) => {\n  __accessCheck30(obj, member, \"access private method\");\n  return method;\n};\nvar _rates4;\nvar _render6;\nvar render_fn6;\nvar _onChange6;\nvar onChange_fn6;\nvar Attributes15 = {\n  RATES: \"rates\"\n};\nvar MediaPlaybackRateListbox = class extends MediaChromeListbox {\n  constructor() {\n    super();\n    __privateAdd30(this, _render6);\n    __privateAdd30(this, _onChange6);\n    __privateAdd30(this, _rates4, new AttributeTokenList(this, Attributes15.RATES, {\n      defaultValue: DEFAULT_RATES\n    }));\n    __privateMethod16(this, _render6, render_fn6).call(this);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      \"aria-multiselectable\",\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      Attributes15.RATES\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_PLAYBACK_RATE && oldValue != newValue) {\n      this.value = newValue;\n    } else if (attrName === Attributes15.RATES && oldValue != newValue) {\n      __privateGet30(this, _rates4).value = newValue;\n      __privateMethod16(this, _render6, render_fn6).call(this);\n    }\n  }\n  /**\n   * @type { AttributeTokenList | Array<number> | undefined} Will return a DOMTokenList.\n   * Setting a value will accept an array of numbers.\n   */\n  get rates() {\n    return __privateGet30(this, _rates4);\n  }\n  set rates(value) {\n    if (!value) {\n      __privateGet30(this, _rates4).value = \"\";\n    } else if (Array.isArray(value)) {\n      __privateGet30(this, _rates4).value = value.join(\" \");\n    }\n    __privateMethod16(this, _render6, render_fn6).call(this);\n  }\n  /**\n   * @type {number} The current playback rate\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      DEFAULT_RATE\n    );\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod16(this, _onChange6, onChange_fn6));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod16(this, _onChange6, onChange_fn6));\n  }\n};\n_rates4 = /* @__PURE__ */ new WeakMap();\n_render6 = /* @__PURE__ */ new WeakSet();\nrender_fn6 = function() {\n  const container = this.shadowRoot.querySelector(\"#container\");\n  container.textContent = \"\";\n  for (const rate of this.rates) {\n    const option = createOption(\n      this.formatOptionText(`${rate}x`, rate),\n      rate,\n      this.mediaPlaybackRate == rate\n    );\n    option.prepend(createIndicator2(this, \"select-indicator\"));\n    container.append(option);\n  }\n};\n_onChange6 = /* @__PURE__ */ new WeakSet();\nonChange_fn6 = function() {\n  if (!this.value)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_PLAYBACK_RATE_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-playback-rate-listbox\")) {\n  GlobalThis.customElements.define(\n    \"media-playback-rate-listbox\",\n    MediaPlaybackRateListbox\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-playback-rate-selectmenu.js\nvar MediaPlaybackRateSelectMenu = class extends MediaChromeSelectMenu {\n  init() {\n    const playbackRateButton = Document2.createElement(\n      \"media-playback-rate-button\"\n    );\n    playbackRateButton.part.add(\"button\");\n    playbackRateButton.preventClick = true;\n    const playbackRateListbox = Document2.createElement(\n      \"media-playback-rate-listbox\"\n    );\n    playbackRateListbox.part.add(\"listbox\");\n    playbackRateListbox.setAttribute(\n      \"exportparts\",\n      \"option, option-selected, indicator\"\n    );\n    const buttonSlot = this.shadowRoot.querySelector(\"slot[name=button]\");\n    const listboxSlot = this.shadowRoot.querySelector(\"slot[name=listbox]\");\n    buttonSlot.textContent = \"\";\n    listboxSlot.textContent = \"\";\n    buttonSlot.append(playbackRateButton);\n    listboxSlot.append(playbackRateListbox);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-playback-rate-selectmenu\")) {\n  GlobalThis.customElements.define(\n    \"media-playback-rate-selectmenu\",\n    MediaPlaybackRateSelectMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-rendition-listbox.js\nvar __accessCheck31 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet31 = (obj, member, getter) => {\n  __accessCheck31(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd31 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet27 = (obj, member, value, setter) => {\n  __accessCheck31(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod17 = (obj, member, method) => {\n  __accessCheck31(obj, member, \"access private method\");\n  return method;\n};\nvar _renditionList2;\nvar _prevState5;\nvar _render7;\nvar render_fn7;\nvar _onChange7;\nvar onChange_fn7;\nvar MediaRenditionListbox = class extends MediaChromeListbox {\n  constructor() {\n    super(...arguments);\n    __privateAdd31(this, _render7);\n    __privateAdd31(this, _onChange7);\n    __privateAdd31(this, _renditionList2, []);\n    __privateAdd31(this, _prevState5, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_LIST,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_RENDITION_SELECTED && oldValue !== newValue) {\n      this.value = newValue != null ? newValue : \"auto\";\n    } else if (attrName === MediaUIAttributes.MEDIA_RENDITION_LIST && oldValue !== newValue) {\n      __privateSet27(this, _renditionList2, parseRenditionList(newValue));\n      __privateMethod17(this, _render7, render_fn7).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod17(this, _onChange7, onChange_fn7));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod17(this, _onChange7, onChange_fn7));\n  }\n  get mediaRenditionList() {\n    return __privateGet31(this, _renditionList2);\n  }\n  set mediaRenditionList(list) {\n    __privateSet27(this, _renditionList2, list);\n    __privateMethod17(this, _render7, render_fn7).call(this);\n  }\n  /**\n   * Get selected rendition id.\n   * @return {string}\n   */\n  get mediaRenditionSelected() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED);\n  }\n  set mediaRenditionSelected(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED, id);\n  }\n};\n_renditionList2 = /* @__PURE__ */ new WeakMap();\n_prevState5 = /* @__PURE__ */ new WeakMap();\n_render7 = /* @__PURE__ */ new WeakSet();\nrender_fn7 = function() {\n  if (__privateGet31(this, _prevState5) === JSON.stringify(this.mediaRenditionList))\n    return;\n  __privateSet27(this, _prevState5, JSON.stringify(this.mediaRenditionList));\n  const renditionList = this.mediaRenditionList.sort(\n    (a2, b4) => b4.height - a2.height\n  );\n  const container = this.shadowRoot.querySelector(\"#container\");\n  container.textContent = \"\";\n  let isAuto = !this.mediaRenditionSelected;\n  for (const rendition of renditionList) {\n    const text = this.formatOptionText(\n      `${Math.min(rendition.width, rendition.height)}p`,\n      rendition\n    );\n    const option2 = createOption(\n      text,\n      `${rendition.id}`,\n      rendition.selected && !isAuto\n    );\n    option2.prepend(createIndicator2(this, \"select-indicator\"));\n    container.append(option2);\n  }\n  const option = createOption(this.formatOptionText(\"Auto\"), \"auto\", isAuto);\n  option.prepend(createIndicator2(this, \"select-indicator\"));\n  container.append(option);\n};\n_onChange7 = /* @__PURE__ */ new WeakSet();\nonChange_fn7 = function() {\n  if (this.value == null)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_RENDITION_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-rendition-listbox\")) {\n  GlobalThis.customElements.define(\n    \"media-rendition-listbox\",\n    MediaRenditionListbox\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-rendition-button.js\nvar renditionIcon2 = (\n  /*html*/\n  `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M13.5 2.5h2v6h-2v-2h-11v-2h11v-2Zm4 2h4v2h-4v-2Zm-12 4h2v6h-2v-2h-3v-2h3v-2Zm4 2h12v2h-12v-2Zm1 4h2v6h-2v-2h-8v-2h8v-2Zm4 2h7v2h-7v-2Z\" />\n</svg>`\n);\nvar slotTemplate18 = Document2.createElement(\"template\");\nslotTemplate18.innerHTML = /*html*/\n`\n  <slot name=\"icon\">${renditionIcon2}</slot>\n`;\nvar MediaRenditionButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED,\n      MediaUIAttributes.MEDIA_RENDITION_UNAVAILABLE\n    ];\n  }\n  constructor() {\n    super({ slotTemplate: slotTemplate18 });\n  }\n  /**\n   * Get selected rendition id.\n   * @return {string}\n   */\n  get mediaRenditionSelected() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED);\n  }\n  set mediaRenditionSelected(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED, id);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-rendition-button\")) {\n  GlobalThis.customElements.define(\n    \"media-rendition-button\",\n    MediaRenditionButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-rendition-selectmenu.js\nvar MediaRenditionSelectMenu = class extends MediaChromeSelectMenu {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED,\n      MediaUIAttributes.MEDIA_RENDITION_UNAVAILABLE\n    ];\n  }\n  init() {\n    const renditionButton = Document2.createElement(\"media-rendition-button\");\n    renditionButton.part.add(\"button\");\n    renditionButton.preventClick = true;\n    const renditionListbox = Document2.createElement(\"media-rendition-listbox\");\n    renditionListbox.part.add(\"listbox\");\n    renditionListbox.setAttribute(\n      \"exportparts\",\n      \"option, option-selected, indicator\"\n    );\n    const buttonSlot = this.shadowRoot.querySelector(\"slot[name=button]\");\n    const listboxSlot = this.shadowRoot.querySelector(\"slot[name=listbox]\");\n    buttonSlot.textContent = \"\";\n    listboxSlot.textContent = \"\";\n    buttonSlot.append(renditionButton);\n    listboxSlot.append(renditionListbox);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-rendition-selectmenu\")) {\n  GlobalThis.customElements.define(\n    \"media-rendition-selectmenu\",\n    MediaRenditionSelectMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-audio-track-listbox.js\nvar __accessCheck32 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet32 = (obj, member, getter) => {\n  __accessCheck32(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd32 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet28 = (obj, member, value, setter) => {\n  __accessCheck32(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod18 = (obj, member, method) => {\n  __accessCheck32(obj, member, \"access private method\");\n  return method;\n};\nvar _audioTrackList2;\nvar _prevState6;\nvar _render8;\nvar render_fn8;\nvar _onChange8;\nvar onChange_fn8;\nvar MediaAudioTrackListbox = class extends MediaChromeListbox {\n  constructor() {\n    super(...arguments);\n    __privateAdd32(this, _render8);\n    __privateAdd32(this, _onChange8);\n    __privateAdd32(this, _audioTrackList2, []);\n    __privateAdd32(this, _prevState6, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED && oldValue !== newValue) {\n      this.value = newValue;\n    } else if (attrName === MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST && oldValue !== newValue) {\n      __privateSet28(this, _audioTrackList2, parseAudioTrackList(newValue));\n      __privateMethod18(this, _render8, render_fn8).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod18(this, _onChange8, onChange_fn8));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod18(this, _onChange8, onChange_fn8));\n  }\n  get mediaAudioTrackList() {\n    return __privateGet32(this, _audioTrackList2);\n  }\n  set mediaAudioTrackList(list) {\n    __privateSet28(this, _audioTrackList2, list);\n    __privateMethod18(this, _render8, render_fn8).call(this);\n  }\n  /**\n   * Get enabled audio track id.\n   * @return {string}\n   */\n  get mediaAudioTrackEnabled() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED);\n  }\n  set mediaAudioTrackEnabled(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED, id);\n  }\n};\n_audioTrackList2 = /* @__PURE__ */ new WeakMap();\n_prevState6 = /* @__PURE__ */ new WeakMap();\n_render8 = /* @__PURE__ */ new WeakSet();\nrender_fn8 = function() {\n  if (__privateGet32(this, _prevState6) === JSON.stringify(this.mediaAudioTrackList))\n    return;\n  __privateSet28(this, _prevState6, JSON.stringify(this.mediaAudioTrackList));\n  const audioTrackList = this.mediaAudioTrackList;\n  const container = this.shadowRoot.querySelector(\"#container\");\n  container.textContent = \"\";\n  for (const audioTrack of audioTrackList) {\n    const text = this.formatOptionText(audioTrack.label, audioTrack);\n    const option = createOption(text, `${audioTrack.id}`, audioTrack.enabled);\n    option.prepend(createIndicator2(this, \"select-indicator\"));\n    container.append(option);\n  }\n};\n_onChange8 = /* @__PURE__ */ new WeakSet();\nonChange_fn8 = function() {\n  if (this.value == null)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_AUDIO_TRACK_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-audio-track-listbox\")) {\n  GlobalThis.customElements.define(\n    \"media-audio-track-listbox\",\n    MediaAudioTrackListbox\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-audio-track-button.js\nvar audioTrackIcon2 = (\n  /*html*/\n  `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M11 17H9.5V7H11v10Zm-3-3H6.5v-4H8v4Zm6-5h-1.5v6H14V9Zm3 7h-1.5V8H17v8Z\"/>\n  <path d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-2 0a8 8 0 1 0-16 0 8 8 0 0 0 16 0Z\"/>\n</svg>`\n);\nvar slotTemplate19 = Document2.createElement(\"template\");\nslotTemplate19.innerHTML = /*html*/\n`\n  <slot name=\"icon\">${audioTrackIcon2}</slot>\n`;\nvar MediaAudioTrackButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_UNAVAILABLE\n    ];\n  }\n  constructor() {\n    super({ slotTemplate: slotTemplate19 });\n  }\n  /**\n   * Get enabled audio track id.\n   * @return {string}\n   */\n  get mediaAudioTrackEnabled() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED);\n  }\n  set mediaAudioTrackEnabled(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED, id);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-audio-track-button\")) {\n  GlobalThis.customElements.define(\n    \"media-audio-track-button\",\n    MediaAudioTrackButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-audio-track-selectmenu.js\nvar MediaAudioTrackSelectMenu = class extends MediaChromeSelectMenu {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_UNAVAILABLE\n    ];\n  }\n  init() {\n    const audioTrackButton = Document2.createElement(\"media-audio-track-button\");\n    audioTrackButton.part.add(\"button\");\n    audioTrackButton.preventClick = true;\n    const audioTrackListbox = Document2.createElement(\n      \"media-audio-track-listbox\"\n    );\n    audioTrackListbox.part.add(\"listbox\");\n    audioTrackListbox.setAttribute(\n      \"exportparts\",\n      \"option, option-selected, indicator\"\n    );\n    const buttonSlot = this.shadowRoot.querySelector(\"slot[name=button]\");\n    const listboxSlot = this.shadowRoot.querySelector(\"slot[name=listbox]\");\n    buttonSlot.textContent = \"\";\n    listboxSlot.textContent = \"\";\n    buttonSlot.append(audioTrackButton);\n    listboxSlot.append(audioTrackListbox);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-audio-track-selectmenu\")) {\n  GlobalThis.customElements.define(\n    \"media-audio-track-selectmenu\",\n    MediaAudioTrackSelectMenu\n  );\n}\n\n// node_modules/.pnpm/@mux+mux-video@0.20.2/node_modules/@mux/mux-video/dist/index.mjs\nvar oi2 = Object.defineProperty;\nvar ai2 = Object.getPrototypeOf;\nvar di2 = Reflect.get;\nvar ci2 = (t2, i2, e) => i2 in t2 ? oi2(t2, i2, { enumerable: true, configurable: true, writable: true, value: e }) : t2[i2] = e;\nvar v3 = (t2, i2, e) => (ci2(t2, typeof i2 != \"symbol\" ? i2 + \"\" : i2, e), e);\nvar ft2 = (t2, i2, e) => {\n  if (!i2.has(t2)) throw TypeError(\"Cannot \" + e);\n};\nvar r9 = (t2, i2, e) => (ft2(t2, i2, \"read from private field\"), e ? e.call(t2) : i2.get(t2));\nvar u = (t2, i2, e) => {\n  if (i2.has(t2)) throw TypeError(\"Cannot add the same private member more than once\");\n  i2 instanceof WeakSet ? i2.add(t2) : i2.set(t2, e);\n};\nvar h2 = (t2, i2, e, s) => (ft2(t2, i2, \"write to private field\"), s ? s.call(t2, e) : i2.set(t2, e), e);\nvar k2 = (t2, i2, e) => (ft2(t2, i2, \"access private method\"), e);\nvar $e3 = (t2, i2, e) => di2(ai2(t2), e, i2);\nvar pe2 = class {\n  addEventListener() {\n  }\n  removeEventListener() {\n  }\n  dispatchEvent(i2) {\n    return true;\n  }\n};\nif (typeof DocumentFragment == \"undefined\") {\n  class t2 extends pe2 {\n  }\n  globalThis.DocumentFragment = t2;\n}\nvar Le3 = class extends pe2 {\n};\nvar mt2 = class extends pe2 {\n};\nvar ui2 = { get(t2) {\n}, define(t2, i2, e) {\n}, upgrade(t2) {\n}, whenDefined(t2) {\n  return Promise.resolve(Le3);\n} };\nvar Me3;\nvar pt3 = class {\n  constructor(i2, e = {}) {\n    u(this, Me3, void 0);\n    h2(this, Me3, e == null ? void 0 : e.detail);\n  }\n  get detail() {\n    return r9(this, Me3);\n  }\n  initCustomEvent() {\n  }\n};\nMe3 = /* @__PURE__ */ new WeakMap();\nfunction hi2(t2, i2) {\n  return new Le3();\n}\nvar Ct2 = { document: { createElement: hi2 }, DocumentFragment, customElements: ui2, CustomEvent: pt3, EventTarget: pe2, HTMLElement: Le3, HTMLVideoElement: mt2 };\nvar Ot2 = typeof window == \"undefined\" || typeof globalThis.customElements == \"undefined\";\nvar ze3 = Ot2 ? Ct2 : globalThis;\nvar Ki2 = Ot2 ? Ct2.document : globalThis.document;\nvar li2 = () => {\n  try {\n    return \"0.20.2\";\n  } catch (e) {\n  }\n  return \"UNKNOWN\";\n};\nvar fi2 = li2();\nvar _t2 = () => fi2;\nvar Et2 = [\"abort\", \"canplay\", \"canplaythrough\", \"durationchange\", \"emptied\", \"encrypted\", \"ended\", \"error\", \"loadeddata\", \"loadedmetadata\", \"loadstart\", \"pause\", \"play\", \"playing\", \"progress\", \"ratechange\", \"seeked\", \"seeking\", \"stalled\", \"suspend\", \"timeupdate\", \"volumechange\", \"waiting\", \"waitingforkey\", \"resize\", \"enterpictureinpicture\", \"leavepictureinpicture\", \"webkitbeginfullscreen\", \"webkitendfullscreen\", \"webkitpresentationmodechanged\"];\nfunction mi2(t2) {\n  return `\n    <style>\n      :host {\n        display: inline-flex;\n        line-height: 0;\n        flex-direction: column;\n        justify-content: end;\n      }\n\n      audio {\n        width: 100%;\n      }\n    </style>\n    <slot name=\"media\">\n      <audio${Nt2(t2)}></audio>\n    </slot>\n    <slot></slot>\n  `;\n}\nfunction pi2(t2) {\n  return `\n    <style>\n      :host {\n        display: inline-block;\n        line-height: 0;\n      }\n\n      video {\n        max-width: 100%;\n        max-height: 100%;\n        min-width: 100%;\n        min-height: 100%;\n        object-fit: var(--media-object-fit, contain);\n        object-position: var(--media-object-position, 50% 50%);\n      }\n\n      video::-webkit-media-text-track-container {\n        transform: var(--media-webkit-text-track-transform);\n        transition: var(--media-webkit-text-track-transition);\n      }\n    </style>\n    <slot name=\"media\">\n      <video${Nt2(t2)}></video>\n    </slot>\n    <slot></slot>\n  `;\n}\nvar Lt2 = (t2, { tag: i2, is: e }) => {\n  var l, a2, p3, E4, I4, Mt3, se5, o, m3, A3, ne5, _3, gt3, L2, wt3, w2, xt3;\n  let s = (a2 = (l = globalThis.document) == null ? void 0 : l.createElement) == null ? void 0 : a2.call(l, i2, { is: e }), n2 = s ? gi2(s) : [];\n  return p3 = class extends t2 {\n    constructor() {\n      super();\n      u(this, A3);\n      u(this, _3);\n      u(this, L2);\n      u(this, w2);\n      u(this, se5, void 0);\n      u(this, o, void 0);\n      u(this, m3, /* @__PURE__ */ new Map());\n    }\n    static get observedAttributes() {\n      var g2, T3, O4;\n      return k2(g2 = p3, I4, Mt3).call(g2), [...(O4 = (T3 = s == null ? void 0 : s.constructor) == null ? void 0 : T3.observedAttributes) != null ? O4 : [], \"autopictureinpicture\", \"disablepictureinpicture\", \"disableremoteplayback\", \"autoplay\", \"controls\", \"controlslist\", \"crossorigin\", \"loop\", \"muted\", \"playsinline\", \"poster\", \"preload\", \"src\"];\n    }\n    get nativeEl() {\n      var f, g2, T3;\n      return k2(this, A3, ne5).call(this), (T3 = (g2 = (f = r9(this, o)) != null ? f : this.shadowRoot.querySelector(i2)) != null ? g2 : this.querySelector(\":scope > [slot=media]\")) != null ? T3 : this.querySelector(i2);\n    }\n    set nativeEl(f) {\n      h2(this, o, f);\n    }\n    get defaultMuted() {\n      return this.hasAttribute(\"muted\");\n    }\n    set defaultMuted(f) {\n      this.toggleAttribute(\"muted\", !!f);\n    }\n    get src() {\n      return this.getAttribute(\"src\");\n    }\n    set src(f) {\n      this.setAttribute(\"src\", `${f}`);\n    }\n    get preload() {\n      var f, g2;\n      return (g2 = this.getAttribute(\"preload\")) != null ? g2 : (f = this.nativeEl) == null ? void 0 : f.preload;\n    }\n    set preload(f) {\n      this.setAttribute(\"preload\", `${f}`);\n    }\n    init() {\n      var f, g2;\n      if (!this.shadowRoot) {\n        this.attachShadow({ mode: \"open\" });\n        let T3 = Ei2(this.attributes);\n        e && (T3.is = e), i2 && (T3.part = i2), this.shadowRoot.innerHTML = this.constructor.getTemplateHTML(T3);\n      }\n      this.nativeEl.muted = this.hasAttribute(\"muted\");\n      for (let T3 of n2) k2(this, L2, wt3).call(this, T3);\n      this.shadowRoot.addEventListener(\"slotchange\", this), k2(this, _3, gt3).call(this);\n      for (let T3 of this.constructor.Events) (g2 = (f = this.shadowRoot).addEventListener) == null || g2.call(f, T3, this, true);\n    }\n    handleEvent(f) {\n      if (f.type === \"slotchange\") {\n        k2(this, _3, gt3).call(this);\n        return;\n      }\n      f.target === this.nativeEl && this.dispatchEvent(new CustomEvent(f.type, { detail: f.detail }));\n    }\n    attributeChangedCallback(f, g2, T3) {\n      k2(this, A3, ne5).call(this), k2(this, w2, xt3).call(this, f, g2, T3);\n    }\n    connectedCallback() {\n      k2(this, A3, ne5).call(this);\n    }\n  }, E4 = /* @__PURE__ */ new WeakMap(), I4 = /* @__PURE__ */ new WeakSet(), Mt3 = function() {\n    if (r9(this, E4)) return;\n    h2(this, E4, true);\n    let f = new Set(this.observedAttributes);\n    f.delete(\"muted\");\n    for (let g2 of n2) {\n      if (g2 in this.prototype) continue;\n      if (typeof s[g2] == \"function\") this.prototype[g2] = function(...O4) {\n        return k2(this, A3, ne5).call(this), this.call ? this.call(g2, ...O4) : this.nativeEl[g2].apply(this.nativeEl, O4);\n      };\n      else {\n        let O4 = { get() {\n          var D3, Pe4, Ie4;\n          k2(this, A3, ne5).call(this);\n          let C3 = g2.toLowerCase();\n          if (f.has(C3)) {\n            let me5 = this.getAttribute(C3);\n            return me5 === null ? false : me5 === \"\" ? true : me5;\n          }\n          return (Ie4 = (D3 = this.get) == null ? void 0 : D3.call(this, g2)) != null ? Ie4 : (Pe4 = this.nativeEl) == null ? void 0 : Pe4[g2];\n        } };\n        g2 !== g2.toUpperCase() && (O4.set = function(C3) {\n          k2(this, A3, ne5).call(this);\n          let D3 = g2.toLowerCase();\n          if (f.has(D3)) {\n            C3 === true || C3 === false || C3 == null ? this.toggleAttribute(D3, !!C3) : this.setAttribute(D3, C3);\n            return;\n          }\n          if (this.set) {\n            this.set(g2, C3);\n            return;\n          }\n          this.nativeEl[g2] = C3;\n        }), Object.defineProperty(this.prototype, g2, O4);\n      }\n    }\n  }, se5 = /* @__PURE__ */ new WeakMap(), o = /* @__PURE__ */ new WeakMap(), m3 = /* @__PURE__ */ new WeakMap(), A3 = /* @__PURE__ */ new WeakSet(), ne5 = function() {\n    r9(this, se5) || (h2(this, se5, true), this.init());\n  }, _3 = /* @__PURE__ */ new WeakSet(), gt3 = function() {\n    let f = new Map(r9(this, m3));\n    this.shadowRoot.querySelector(\"slot:not([name])\").assignedElements({ flatten: true }).filter((g2) => [\"track\", \"source\"].includes(g2.localName)).forEach((g2) => {\n      var O4, C3;\n      f.delete(g2);\n      let T3 = r9(this, m3).get(g2);\n      T3 || (T3 = g2.cloneNode(), r9(this, m3).set(g2, T3)), (C3 = (O4 = this.nativeEl).append) == null || C3.call(O4, T3), T3.localName === \"track\" && T3.default && (T3.kind === \"chapters\" || T3.kind === \"metadata\") && T3.track.mode === \"disabled\" && (T3.track.mode = \"hidden\");\n    }), f.forEach((g2) => g2.remove());\n  }, L2 = /* @__PURE__ */ new WeakSet(), wt3 = function(f) {\n    if (Object.prototype.hasOwnProperty.call(this, f)) {\n      let g2 = this[f];\n      delete this[f], this[f] = g2;\n    }\n  }, w2 = /* @__PURE__ */ new WeakSet(), xt3 = function(f, g2, T3) {\n    var O4, C3, D3, Pe4, Ie4, me5;\n    [\"id\", \"class\"].includes(f) || !p3.observedAttributes.includes(f) && this.constructor.observedAttributes.includes(f) || (T3 === null ? (C3 = (O4 = this.nativeEl).removeAttribute) == null || C3.call(O4, f) : ((Pe4 = (D3 = this.nativeEl).getAttribute) == null ? void 0 : Pe4.call(D3, f)) != T3 && ((me5 = (Ie4 = this.nativeEl).setAttribute) == null || me5.call(Ie4, f, T3)));\n  }, u(p3, I4), v3(p3, \"getTemplateHTML\", i2.endsWith(\"audio\") ? mi2 : pi2), v3(p3, \"shadowRootOptions\", { mode: \"open\" }), v3(p3, \"Events\", Et2), u(p3, E4, void 0), p3;\n};\nfunction gi2(t2) {\n  let i2 = [];\n  for (let e = Object.getPrototypeOf(t2); e && e !== HTMLElement.prototype; e = Object.getPrototypeOf(e)) i2.push(...Object.getOwnPropertyNames(e));\n  return i2;\n}\nfunction Nt2(t2) {\n  let i2 = \"\";\n  for (let e in t2) {\n    let s = t2[e];\n    s === \"\" ? i2 += ` ${e}` : i2 += ` ${e}=\"${s}\"`;\n  }\n  return i2;\n}\nfunction Ei2(t2) {\n  let i2 = {};\n  for (let e of t2) i2[e.name] = e.value;\n  return i2;\n}\nvar Pt2;\nvar Xe3 = Lt2((Pt2 = globalThis.HTMLElement) != null ? Pt2 : class {\n}, { tag: \"video\" });\nvar It2;\nvar zi2 = Lt2((It2 = globalThis.HTMLElement) != null ? It2 : class {\n}, { tag: \"audio\" });\nvar V2 = /* @__PURE__ */ new WeakMap();\nvar ge2 = class extends Error {\n};\nvar Je3 = class extends Error {\n};\nvar Dt2 = globalThis.WeakRef ? class extends Set {\n  add(t2) {\n    super.add(new WeakRef(t2));\n  }\n  forEach(t2) {\n    super.forEach((i2) => {\n      let e = i2.deref();\n      e && t2(e);\n    });\n  }\n} : Set;\nfunction Vt2(t2) {\n  var i2, e, s;\n  (e = (i2 = globalThis.chrome) == null ? void 0 : i2.cast) != null && e.isAvailable ? (s = globalThis.cast) != null && s.framework ? t2() : customElements.whenDefined(\"google-cast-button\").then(t2) : globalThis.__onGCastApiAvailable = () => {\n    customElements.whenDefined(\"google-cast-button\").then(t2);\n  };\n}\nfunction Gt3() {\n  return globalThis.chrome;\n}\nfunction Ft2() {\n  var e;\n  let t2 = \"https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1\";\n  if ((e = globalThis.chrome) != null && e.cast || document.querySelector(`script[src=\"${t2}\"]`)) return;\n  let i2 = document.createElement(\"script\");\n  i2.src = t2, document.head.append(i2);\n}\nfunction W2() {\n  var t2, i2;\n  return (i2 = (t2 = globalThis.cast) == null ? void 0 : t2.framework) == null ? void 0 : i2.CastContext.getInstance();\n}\nfunction we2() {\n  var t2;\n  return (t2 = W2()) == null ? void 0 : t2.getCurrentSession();\n}\nfunction Qe3() {\n  var t2;\n  return (t2 = we2()) == null ? void 0 : t2.getSessionObj().media[0];\n}\nfunction qt2(t2) {\n  return new Promise((i2, e) => {\n    Qe3().editTracksInfo(t2, i2, e);\n  });\n}\nfunction Bt2(t2) {\n  return new Promise((i2, e) => {\n    Qe3().getStatus(t2, i2, e);\n  });\n}\nfunction vt2(t2) {\n  return W2().setOptions(__spreadValues(__spreadValues({}, bt2()), t2));\n}\nfunction bt2() {\n  return { receiverApplicationId: \"CC1AD845\", autoJoinPolicy: \"origin_scoped\", androidReceiverCompatible: false, language: \"en-US\", resumeSavedSession: true };\n}\nvar Ze2 = new Dt2();\nvar j2 = /* @__PURE__ */ new WeakSet();\nvar S2;\nVt2(() => {\n  var t2, i2, e, s;\n  if (!((i2 = (t2 = globalThis.chrome) == null ? void 0 : t2.cast) != null && i2.isAvailable)) {\n    console.debug(\"chrome.cast.isAvailable\", (s = (e = globalThis.chrome) == null ? void 0 : e.cast) == null ? void 0 : s.isAvailable);\n    return;\n  }\n  S2 || (S2 = cast.framework, W2().addEventListener(S2.CastContextEventType.CAST_STATE_CHANGED, (n2) => {\n    Ze2.forEach((l) => {\n      var a2, p3;\n      return (p3 = (a2 = V2.get(l)).onCastStateChanged) == null ? void 0 : p3.call(a2, n2);\n    });\n  }), W2().addEventListener(S2.CastContextEventType.SESSION_STATE_CHANGED, (n2) => {\n    Ze2.forEach((l) => {\n      var a2, p3;\n      return (p3 = (a2 = V2.get(l)).onSessionStateChanged) == null ? void 0 : p3.call(a2, n2);\n    });\n  }), Ze2.forEach((n2) => {\n    var l, a2;\n    return (a2 = (l = V2.get(n2)).init) == null ? void 0 : a2.call(l);\n  }));\n});\nvar Ut2 = 0;\nvar y2;\nvar xe3;\nvar P;\nvar G2;\nvar ae2;\nvar de3;\nvar K3;\nvar tt3;\nvar F3;\nvar oe3;\nvar it;\nvar Wt2;\nvar Ne3;\nvar Tt2;\nvar rt2;\nvar jt3;\nvar De3;\nvar yt;\nvar st3;\nvar Kt;\nvar Ve2;\nvar At2;\nvar et2 = class extends EventTarget {\n  constructor(e) {\n    super();\n    u(this, F3);\n    u(this, it);\n    u(this, Ne3);\n    u(this, rt2);\n    u(this, De3);\n    u(this, st3);\n    u(this, Ve2);\n    u(this, y2, void 0);\n    u(this, xe3, void 0);\n    u(this, P, void 0);\n    u(this, G2, void 0);\n    u(this, ae2, \"disconnected\");\n    u(this, de3, false);\n    u(this, K3, /* @__PURE__ */ new Set());\n    u(this, tt3, /* @__PURE__ */ new WeakMap());\n    h2(this, y2, e), Ze2.add(this), V2.set(this, { init: () => k2(this, De3, yt).call(this), onCastStateChanged: () => k2(this, Ne3, Tt2).call(this), onSessionStateChanged: () => k2(this, rt2, jt3).call(this), getCastPlayer: () => r9(this, F3, oe3) }), k2(this, De3, yt).call(this);\n  }\n  get state() {\n    return r9(this, ae2);\n  }\n  watchAvailability(e) {\n    return __async(this, null, function* () {\n      if (r9(this, y2).disableRemotePlayback) throw new ge2(\"disableRemotePlayback attribute is present.\");\n      return r9(this, tt3).set(e, ++Ut2), r9(this, K3).add(e), Ut2;\n    });\n  }\n  cancelWatchAvailability(e) {\n    return __async(this, null, function* () {\n      if (r9(this, y2).disableRemotePlayback) throw new ge2(\"disableRemotePlayback attribute is present.\");\n      e ? r9(this, K3).delete(e) : r9(this, K3).clear();\n    });\n  }\n  prompt() {\n    return __async(this, null, function* () {\n      var s, n2, l, a2;\n      if (r9(this, y2).disableRemotePlayback) throw new ge2(\"disableRemotePlayback attribute is present.\");\n      if (!((n2 = (s = globalThis.chrome) == null ? void 0 : s.cast) != null && n2.isAvailable)) throw new Je3(\"The RemotePlayback API is disabled on this platform.\");\n      let e = j2.has(r9(this, y2));\n      j2.add(r9(this, y2)), vt2(r9(this, y2).castOptions), Object.entries(r9(this, G2)).forEach(([p3, E4]) => {\n        r9(this, P).controller.addEventListener(p3, E4);\n      });\n      try {\n        yield W2().requestSession();\n      } catch (p3) {\n        if (p3 === \"cancel\") {\n          e || j2.delete(r9(this, y2));\n          return;\n        }\n        throw new Error(p3);\n      }\n      (a2 = (l = V2.get(r9(this, y2))) == null ? void 0 : l.loadOnPrompt) == null || a2.call(l);\n    });\n  }\n};\ny2 = /* @__PURE__ */ new WeakMap(), xe3 = /* @__PURE__ */ new WeakMap(), P = /* @__PURE__ */ new WeakMap(), G2 = /* @__PURE__ */ new WeakMap(), ae2 = /* @__PURE__ */ new WeakMap(), de3 = /* @__PURE__ */ new WeakMap(), K3 = /* @__PURE__ */ new WeakMap(), tt3 = /* @__PURE__ */ new WeakMap(), F3 = /* @__PURE__ */ new WeakSet(), oe3 = function() {\n  if (j2.has(r9(this, y2))) return r9(this, P);\n}, it = /* @__PURE__ */ new WeakSet(), Wt2 = function() {\n  j2.has(r9(this, y2)) && (Object.entries(r9(this, G2)).forEach(([e, s]) => {\n    r9(this, P).controller.removeEventListener(e, s);\n  }), j2.delete(r9(this, y2)), r9(this, y2).muted = r9(this, P).isMuted, r9(this, y2).currentTime = r9(this, P).savedPlayerState.currentTime, r9(this, P).savedPlayerState.isPaused === false && r9(this, y2).play());\n}, Ne3 = /* @__PURE__ */ new WeakSet(), Tt2 = function() {\n  let e = W2().getCastState();\n  if (j2.has(r9(this, y2)) && e === \"CONNECTING\" && (h2(this, ae2, \"connecting\"), this.dispatchEvent(new Event(\"connecting\"))), !r9(this, de3) && (e != null && e.includes(\"CONNECT\"))) {\n    h2(this, de3, true);\n    for (let s of r9(this, K3)) s(true);\n  } else if (r9(this, de3) && (!e || e === \"NO_DEVICES_AVAILABLE\")) {\n    h2(this, de3, false);\n    for (let s of r9(this, K3)) s(false);\n  }\n}, rt2 = /* @__PURE__ */ new WeakSet(), jt3 = function() {\n  return __async(this, null, function* () {\n    var s;\n    let { SESSION_RESUMED: e } = S2.SessionState;\n    if (W2().getSessionState() === e && r9(this, y2).castSrc === ((s = Qe3()) == null ? void 0 : s.media.contentId)) {\n      j2.add(r9(this, y2)), Object.entries(r9(this, G2)).forEach(([n2, l]) => {\n        r9(this, P).controller.addEventListener(n2, l);\n      });\n      try {\n        yield Bt2(new chrome.cast.media.GetStatusRequest());\n      } catch (n2) {\n        console.error(n2);\n      }\n      r9(this, G2)[S2.RemotePlayerEventType.IS_PAUSED_CHANGED](), r9(this, G2)[S2.RemotePlayerEventType.PLAYER_STATE_CHANGED]();\n    }\n  });\n}, De3 = /* @__PURE__ */ new WeakSet(), yt = function() {\n  !S2 || r9(this, xe3) || (h2(this, xe3, true), vt2(r9(this, y2).castOptions), r9(this, y2).textTracks.addEventListener(\"change\", () => k2(this, Ve2, At2).call(this)), k2(this, Ne3, Tt2).call(this), h2(this, P, new S2.RemotePlayer()), new S2.RemotePlayerController(r9(this, P)), h2(this, G2, { [S2.RemotePlayerEventType.IS_CONNECTED_CHANGED]: ({ value: e }) => {\n    e === true ? (h2(this, ae2, \"connected\"), this.dispatchEvent(new Event(\"connect\"))) : (k2(this, it, Wt2).call(this), h2(this, ae2, \"disconnected\"), this.dispatchEvent(new Event(\"disconnect\")));\n  }, [S2.RemotePlayerEventType.DURATION_CHANGED]: () => {\n    r9(this, y2).dispatchEvent(new Event(\"durationchange\"));\n  }, [S2.RemotePlayerEventType.VOLUME_LEVEL_CHANGED]: () => {\n    r9(this, y2).dispatchEvent(new Event(\"volumechange\"));\n  }, [S2.RemotePlayerEventType.IS_MUTED_CHANGED]: () => {\n    r9(this, y2).dispatchEvent(new Event(\"volumechange\"));\n  }, [S2.RemotePlayerEventType.CURRENT_TIME_CHANGED]: () => {\n    var e;\n    (e = r9(this, F3, oe3)) != null && e.isMediaLoaded && r9(this, y2).dispatchEvent(new Event(\"timeupdate\"));\n  }, [S2.RemotePlayerEventType.VIDEO_INFO_CHANGED]: () => {\n    r9(this, y2).dispatchEvent(new Event(\"resize\"));\n  }, [S2.RemotePlayerEventType.IS_PAUSED_CHANGED]: () => {\n    r9(this, y2).dispatchEvent(new Event(this.paused ? \"pause\" : \"play\"));\n  }, [S2.RemotePlayerEventType.PLAYER_STATE_CHANGED]: () => {\n    var e, s;\n    ((e = r9(this, F3, oe3)) == null ? void 0 : e.playerState) !== chrome.cast.media.PlayerState.PAUSED && r9(this, y2).dispatchEvent(new Event({ [chrome.cast.media.PlayerState.PLAYING]: \"playing\", [chrome.cast.media.PlayerState.BUFFERING]: \"waiting\", [chrome.cast.media.PlayerState.IDLE]: \"emptied\" }[(s = r9(this, F3, oe3)) == null ? void 0 : s.playerState]));\n  }, [S2.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED]: () => __async(this, null, function* () {\n    var e;\n    (e = r9(this, F3, oe3)) != null && e.isMediaLoaded && (yield Promise.resolve(), k2(this, st3, Kt).call(this));\n  }) }));\n}, st3 = /* @__PURE__ */ new WeakSet(), Kt = function() {\n  k2(this, Ve2, At2).call(this);\n}, Ve2 = /* @__PURE__ */ new WeakSet(), At2 = function() {\n  return __async(this, null, function* () {\n    var o, m3, A3, He3, _3;\n    if (!r9(this, F3, oe3)) return;\n    let s = ((m3 = (o = r9(this, P).mediaInfo) == null ? void 0 : o.tracks) != null ? m3 : []).filter(({ type: R2 }) => R2 === chrome.cast.media.TrackType.TEXT), n2 = [...r9(this, y2).textTracks].filter(({ kind: R2 }) => R2 === \"subtitles\" || R2 === \"captions\"), l = s.map(({ language: R2, name: L2, trackId: M4 }) => {\n      var N3;\n      let { mode: w2 } = (N3 = n2.find((St3) => St3.language === R2 && St3.label === L2)) != null ? N3 : {};\n      return w2 ? { mode: w2, trackId: M4 } : false;\n    }).filter(Boolean), p3 = l.filter(({ mode: R2 }) => R2 !== \"showing\").map(({ trackId: R2 }) => R2), E4 = l.find(({ mode: R2 }) => R2 === \"showing\"), I4 = (_3 = (He3 = (A3 = we2()) == null ? void 0 : A3.getSessionObj().media[0]) == null ? void 0 : He3.activeTrackIds) != null ? _3 : [], U4 = I4;\n    if (I4.length && (U4 = U4.filter((R2) => !p3.includes(R2))), E4 != null && E4.trackId && (U4 = [...U4, E4.trackId]), U4 = [...new Set(U4)], !((R2, L2) => R2.length === L2.length && R2.every((M4) => L2.includes(M4)))(I4, U4)) try {\n      let R2 = new chrome.cast.media.EditTracksInfoRequest(U4);\n      yield qt2(R2);\n    } catch (R2) {\n      console.error(R2);\n    }\n  });\n};\nvar Yt = (t2) => {\n  var i2, e, s, n2, l, a2, b4, E4, Ht3;\n  return e = class _this extends t2 {\n    constructor() {\n      super(...arguments);\n      u(this, a2);\n      u(this, E4);\n      u(this, s, { paused: false });\n      u(this, n2, bt2());\n      u(this, l, void 0);\n    }\n    get remote() {\n      return r9(this, l) ? r9(this, l) : Gt3() ? (Ft2(), V2.set(this, { loadOnPrompt: () => k2(this, E4, Ht3).call(this) }), h2(this, l, new et2(this))) : super.remote;\n    }\n    attributeChangedCallback(o, m3, A3) {\n      if (super.attributeChangedCallback(o, m3, A3), o === \"cast-receiver\" && A3) {\n        r9(this, n2).receiverApplicationId = A3;\n        return;\n      }\n      if (r9(this, a2, b4)) switch (o) {\n        case \"cast-stream-type\":\n        case \"cast-src\":\n          this.load();\n          break;\n      }\n    }\n    load() {\n      return __async(this, null, function* () {\n        var R2, L2;\n        if (!r9(this, a2, b4)) return __superGet(_this.prototype, this, \"load\").call(this);\n        let o = new chrome.cast.media.MediaInfo(this.castSrc, this.castContentType), m3 = [...this.querySelectorAll(\"track\")].filter(({ kind: M4, src: w2 }) => w2 && (M4 === \"subtitles\" || M4 === \"captions\")), A3 = [], He3 = 0;\n        m3.length && (o.tracks = m3.map((M4) => {\n          let w2 = ++He3;\n          A3.length === 0 && M4.track.mode === \"showing\" && A3.push(w2);\n          let N3 = new chrome.cast.media.Track(w2, chrome.cast.media.TrackType.TEXT);\n          return N3.trackContentId = M4.src, N3.trackContentType = \"text/vtt\", N3.subtype = M4.kind === \"captions\" ? chrome.cast.media.TextTrackType.CAPTIONS : chrome.cast.media.TextTrackType.SUBTITLES, N3.name = M4.label, N3.language = M4.srclang, N3;\n        })), this.castStreamType === \"live\" ? o.streamType = chrome.cast.media.StreamType.LIVE : o.streamType = chrome.cast.media.StreamType.BUFFERED, o.metadata = new chrome.cast.media.GenericMediaMetadata(), o.metadata.title = this.title, o.metadata.images = [{ url: this.poster }];\n        let _3 = new chrome.cast.media.LoadRequest(o);\n        _3.currentTime = (R2 = __superGet(_this.prototype, this, \"currentTime\")) != null ? R2 : 0, _3.autoplay = !r9(this, s).paused, _3.activeTrackIds = A3, yield (L2 = we2()) == null ? void 0 : L2.loadMedia(_3), this.dispatchEvent(new Event(\"volumechange\"));\n      });\n    }\n    play() {\n      var o;\n      if (r9(this, a2, b4)) {\n        r9(this, a2, b4).isPaused && ((o = r9(this, a2, b4).controller) == null || o.playOrPause());\n        return;\n      }\n      return super.play();\n    }\n    pause() {\n      var o;\n      if (r9(this, a2, b4)) {\n        r9(this, a2, b4).isPaused || (o = r9(this, a2, b4).controller) == null || o.playOrPause();\n        return;\n      }\n      super.pause();\n    }\n    get castOptions() {\n      return r9(this, n2);\n    }\n    get castReceiver() {\n      var o;\n      return (o = this.getAttribute(\"cast-receiver\")) != null ? o : void 0;\n    }\n    set castReceiver(o) {\n      this.castReceiver != o && this.setAttribute(\"cast-receiver\", `${o}`);\n    }\n    get castSrc() {\n      var o, m3, A3;\n      return (A3 = (m3 = this.getAttribute(\"cast-src\")) != null ? m3 : (o = this.querySelector(\"source\")) == null ? void 0 : o.src) != null ? A3 : this.currentSrc;\n    }\n    set castSrc(o) {\n      this.castSrc != o && this.setAttribute(\"cast-src\", `${o}`);\n    }\n    get castContentType() {\n      var o;\n      return (o = this.getAttribute(\"cast-content-type\")) != null ? o : void 0;\n    }\n    set castContentType(o) {\n      this.setAttribute(\"cast-content-type\", `${o}`);\n    }\n    get castStreamType() {\n      var o, m3;\n      return (m3 = (o = this.getAttribute(\"cast-stream-type\")) != null ? o : this.streamType) != null ? m3 : void 0;\n    }\n    set castStreamType(o) {\n      this.setAttribute(\"cast-stream-type\", `${o}`);\n    }\n    get readyState() {\n      if (r9(this, a2, b4)) switch (r9(this, a2, b4).playerState) {\n        case chrome.cast.media.PlayerState.IDLE:\n          return 0;\n        case chrome.cast.media.PlayerState.BUFFERING:\n          return 2;\n        default:\n          return 3;\n      }\n      return super.readyState;\n    }\n    get paused() {\n      return r9(this, a2, b4) ? r9(this, a2, b4).isPaused : super.paused;\n    }\n    get muted() {\n      var o;\n      return r9(this, a2, b4) ? (o = r9(this, a2, b4)) == null ? void 0 : o.isMuted : super.muted;\n    }\n    set muted(o) {\n      var m3;\n      if (r9(this, a2, b4)) {\n        (o && !r9(this, a2, b4).isMuted || !o && r9(this, a2, b4).isMuted) && ((m3 = r9(this, a2, b4).controller) == null || m3.muteOrUnmute());\n        return;\n      }\n      super.muted = o;\n    }\n    get volume() {\n      var o, m3;\n      return r9(this, a2, b4) ? (m3 = (o = r9(this, a2, b4)) == null ? void 0 : o.volumeLevel) != null ? m3 : 1 : super.volume;\n    }\n    set volume(o) {\n      var m3;\n      if (r9(this, a2, b4)) {\n        r9(this, a2, b4).volumeLevel = +o, (m3 = r9(this, a2, b4).controller) == null || m3.setVolumeLevel();\n        return;\n      }\n      super.volume = o;\n    }\n    get duration() {\n      var o, m3, A3;\n      return r9(this, a2, b4) && ((o = r9(this, a2, b4)) != null && o.isMediaLoaded) ? (A3 = (m3 = r9(this, a2, b4)) == null ? void 0 : m3.duration) != null ? A3 : NaN : super.duration;\n    }\n    get currentTime() {\n      var o, m3, A3;\n      return r9(this, a2, b4) && ((o = r9(this, a2, b4)) != null && o.isMediaLoaded) ? (A3 = (m3 = r9(this, a2, b4)) == null ? void 0 : m3.currentTime) != null ? A3 : 0 : super.currentTime;\n    }\n    set currentTime(o) {\n      var m3;\n      if (r9(this, a2, b4)) {\n        r9(this, a2, b4).currentTime = o, (m3 = r9(this, a2, b4).controller) == null || m3.seek();\n        return;\n      }\n      super.currentTime = o;\n    }\n  }, s = /* @__PURE__ */ new WeakMap(), n2 = /* @__PURE__ */ new WeakMap(), l = /* @__PURE__ */ new WeakMap(), a2 = /* @__PURE__ */ new WeakSet(), b4 = function() {\n    var o, m3;\n    return (m3 = (o = V2.get(this.remote)) == null ? void 0 : o.getCastPlayer) == null ? void 0 : m3.call(o);\n  }, E4 = /* @__PURE__ */ new WeakSet(), Ht3 = function() {\n    return __async(this, null, function* () {\n      r9(this, s).paused = $e3(e.prototype, this, \"paused\"), $e3(e.prototype, this, \"pause\").call(this), this.muted = $e3(e.prototype, this, \"muted\");\n      try {\n        yield this.load();\n      } catch (o) {\n        console.error(o);\n      }\n    });\n  }, v3(e, \"observedAttributes\", [...(i2 = t2.observedAttributes) != null ? i2 : [], \"cast-src\", \"cast-content-type\", \"cast-stream-type\", \"cast-receiver\"]), e;\n};\nvar q2 = class extends Event {\n  constructor(e, s) {\n    super(e);\n    v3(this, \"track\");\n    this.track = s.track;\n  }\n};\nvar kt2 = /* @__PURE__ */ new WeakMap();\nfunction d2(t2) {\n  var i2;\n  return (i2 = kt2.get(t2)) != null ? i2 : vi2(t2, {});\n}\nfunction vi2(t2, i2) {\n  let e = kt2.get(t2);\n  return e || kt2.set(t2, e = {}), Object.assign(e, i2);\n}\nfunction nt3(t2, i2) {\n  let e = t2.videoTracks;\n  d2(i2).media = t2, d2(i2).renditionSet || (d2(i2).renditionSet = /* @__PURE__ */ new Set());\n  let s = d2(e).trackSet;\n  s.add(i2);\n  let n2 = s.size - 1;\n  n2 in ue3.prototype || Object.defineProperty(ue3.prototype, n2, { get() {\n    return [...d2(this).trackSet][n2];\n  } }), queueMicrotask(() => {\n    e.dispatchEvent(new q2(\"addtrack\", { track: i2 }));\n  });\n}\nfunction ot3(t2) {\n  var s;\n  let i2 = (s = d2(t2).media) == null ? void 0 : s.videoTracks;\n  if (!i2) return;\n  d2(i2).trackSet.delete(t2), queueMicrotask(() => {\n    i2.dispatchEvent(new q2(\"removetrack\", { track: t2 }));\n  });\n}\nfunction $t(t2) {\n  var s;\n  let i2 = (s = d2(t2).media.videoTracks) != null ? s : [], e = false;\n  for (let n2 of i2) n2 !== t2 && (n2.selected = false, e = true);\n  if (e) {\n    if (d2(i2).changeRequested) return;\n    d2(i2).changeRequested = true, queueMicrotask(() => {\n      delete d2(i2).changeRequested, i2.dispatchEvent(new Event(\"change\"));\n    });\n  }\n}\nvar Y2;\nvar H3;\nvar $3;\nvar ce3;\nvar Ge2;\nvar ue3 = class extends EventTarget {\n  constructor() {\n    super();\n    u(this, ce3);\n    u(this, Y2, void 0);\n    u(this, H3, void 0);\n    u(this, $3, void 0);\n    d2(this).trackSet = /* @__PURE__ */ new Set();\n  }\n  [Symbol.iterator]() {\n    return r9(this, ce3, Ge2).values();\n  }\n  get length() {\n    return r9(this, ce3, Ge2).size;\n  }\n  getTrackById(e) {\n    var s;\n    return (s = [...r9(this, ce3, Ge2)].find((n2) => n2.id === e)) != null ? s : null;\n  }\n  get selectedIndex() {\n    return [...r9(this, ce3, Ge2)].findIndex((e) => e.selected);\n  }\n  get onaddtrack() {\n    return r9(this, Y2);\n  }\n  set onaddtrack(e) {\n    r9(this, Y2) && (this.removeEventListener(\"addtrack\", r9(this, Y2)), h2(this, Y2, void 0)), typeof e == \"function\" && (h2(this, Y2, e), this.addEventListener(\"addtrack\", e));\n  }\n  get onremovetrack() {\n    return r9(this, H3);\n  }\n  set onremovetrack(e) {\n    r9(this, H3) && (this.removeEventListener(\"removetrack\", r9(this, H3)), h2(this, H3, void 0)), typeof e == \"function\" && (h2(this, H3, e), this.addEventListener(\"removetrack\", e));\n  }\n  get onchange() {\n    return r9(this, $3);\n  }\n  set onchange(e) {\n    r9(this, $3) && (this.removeEventListener(\"change\", r9(this, $3)), h2(this, $3, void 0)), typeof e == \"function\" && (h2(this, $3, e), this.addEventListener(\"change\", e));\n  }\n};\nY2 = /* @__PURE__ */ new WeakMap(), H3 = /* @__PURE__ */ new WeakMap(), $3 = /* @__PURE__ */ new WeakMap(), ce3 = /* @__PURE__ */ new WeakSet(), Ge2 = function() {\n  return d2(this).trackSet;\n};\nvar B3 = class extends Event {\n  constructor(e, s) {\n    super(e);\n    v3(this, \"rendition\");\n    this.rendition = s.rendition;\n  }\n};\nfunction zt2(t2, i2) {\n  let e = d2(t2).media.videoRenditions;\n  d2(i2).media = d2(t2).media, d2(i2).track = t2;\n  let s = d2(t2).renditionSet;\n  s.add(i2);\n  let n2 = s.size - 1;\n  n2 in he3.prototype || Object.defineProperty(he3.prototype, n2, { get() {\n    return Ee3(this)[n2];\n  } }), queueMicrotask(() => {\n    t2.selected && e.dispatchEvent(new B3(\"addrendition\", { rendition: i2 }));\n  });\n}\nfunction Xt3(t2) {\n  let i2 = d2(t2).media.videoRenditions, e = d2(t2).track;\n  d2(e).renditionSet.delete(t2), queueMicrotask(() => {\n    d2(t2).track.selected && i2.dispatchEvent(new B3(\"removerendition\", { rendition: t2 }));\n  });\n}\nfunction Jt3(t2) {\n  let i2 = d2(t2).media.videoRenditions;\n  !i2 || d2(i2).changeRequested || (d2(i2).changeRequested = true, queueMicrotask(() => {\n    delete d2(i2).changeRequested, d2(t2).track.selected && i2.dispatchEvent(new Event(\"change\"));\n  }));\n}\nfunction Ee3(t2) {\n  return [...d2(t2).media.videoTracks].filter((e) => e.selected).flatMap((e) => [...d2(e).renditionSet]);\n}\nvar z;\nvar X3;\nvar J2;\nvar he3 = class extends EventTarget {\n  constructor() {\n    super(...arguments);\n    u(this, z, void 0);\n    u(this, X3, void 0);\n    u(this, J2, void 0);\n  }\n  [Symbol.iterator]() {\n    return Ee3(this).values();\n  }\n  get length() {\n    return Ee3(this).length;\n  }\n  getRenditionById(e) {\n    var s;\n    return (s = Ee3(this).find((n2) => `${n2.id}` == `${e}`)) != null ? s : null;\n  }\n  get selectedIndex() {\n    return Ee3(this).findIndex((e) => e.selected);\n  }\n  set selectedIndex(e) {\n    for (let [s, n2] of Ee3(this).entries()) n2.selected = s === e;\n  }\n  get onaddrendition() {\n    return r9(this, z);\n  }\n  set onaddrendition(e) {\n    r9(this, z) && (this.removeEventListener(\"addrendition\", r9(this, z)), h2(this, z, void 0)), typeof e == \"function\" && (h2(this, z, e), this.addEventListener(\"addrendition\", e));\n  }\n  get onremoverendition() {\n    return r9(this, X3);\n  }\n  set onremoverendition(e) {\n    r9(this, X3) && (this.removeEventListener(\"removerendition\", r9(this, X3)), h2(this, X3, void 0)), typeof e == \"function\" && (h2(this, X3, e), this.addEventListener(\"removerendition\", e));\n  }\n  get onchange() {\n    return r9(this, J2);\n  }\n  set onchange(e) {\n    r9(this, J2) && (this.removeEventListener(\"change\", r9(this, J2)), h2(this, J2, void 0)), typeof e == \"function\" && (h2(this, J2, e), this.addEventListener(\"change\", e));\n  }\n};\nz = /* @__PURE__ */ new WeakMap(), X3 = /* @__PURE__ */ new WeakMap(), J2 = /* @__PURE__ */ new WeakMap();\nvar ve3;\nvar Fe2 = class {\n  constructor() {\n    v3(this, \"src\");\n    v3(this, \"id\");\n    v3(this, \"width\");\n    v3(this, \"height\");\n    v3(this, \"bitrate\");\n    v3(this, \"frameRate\");\n    v3(this, \"codec\");\n    u(this, ve3, false);\n  }\n  get selected() {\n    return r9(this, ve3);\n  }\n  set selected(i2) {\n    r9(this, ve3) !== i2 && (h2(this, ve3, i2), Jt3(this));\n  }\n};\nve3 = /* @__PURE__ */ new WeakMap();\nvar be2;\nvar Te2 = class {\n  constructor() {\n    v3(this, \"id\");\n    v3(this, \"kind\");\n    v3(this, \"label\", \"\");\n    v3(this, \"language\", \"\");\n    v3(this, \"sourceBuffer\");\n    u(this, be2, false);\n  }\n  addRendition(i2, e, s, n2, l, a2) {\n    let p3 = new Fe2();\n    return p3.src = i2, p3.width = e, p3.height = s, p3.frameRate = a2, p3.bitrate = l, p3.codec = n2, zt2(this, p3), p3;\n  }\n  removeRendition(i2) {\n    Xt3(i2);\n  }\n  get selected() {\n    return r9(this, be2);\n  }\n  set selected(i2) {\n    r9(this, be2) !== i2 && (h2(this, be2, i2), i2 === true && $t(this));\n  }\n};\nbe2 = /* @__PURE__ */ new WeakMap();\nfunction Qt3(t2, i2) {\n  let e = d2(t2).media.audioRenditions;\n  d2(i2).media = d2(t2).media, d2(i2).track = t2;\n  let s = d2(t2).renditionSet;\n  s.add(i2);\n  let n2 = s.size - 1;\n  n2 in le3.prototype || Object.defineProperty(le3.prototype, n2, { get() {\n    return ye3(this)[n2];\n  } }), queueMicrotask(() => {\n    t2.enabled && e.dispatchEvent(new B3(\"addrendition\", { rendition: i2 }));\n  });\n}\nfunction Zt2(t2) {\n  let i2 = d2(t2).media.audioRenditions, e = d2(t2).track;\n  d2(e).renditionSet.delete(t2), queueMicrotask(() => {\n    d2(t2).track.enabled && i2.dispatchEvent(new B3(\"removerendition\", { rendition: t2 }));\n  });\n}\nfunction ei2(t2) {\n  let i2 = d2(t2).media.audioRenditions;\n  !i2 || d2(i2).changeRequested || (d2(i2).changeRequested = true, queueMicrotask(() => {\n    delete d2(i2).changeRequested, d2(t2).track.enabled && i2.dispatchEvent(new Event(\"change\"));\n  }));\n}\nfunction ye3(t2) {\n  return [...d2(t2).media.audioTracks].filter((e) => e.enabled).flatMap((e) => [...d2(e).renditionSet]);\n}\nvar Q2;\nvar Z3;\nvar ee3;\nvar le3 = class extends EventTarget {\n  constructor() {\n    super(...arguments);\n    u(this, Q2, void 0);\n    u(this, Z3, void 0);\n    u(this, ee3, void 0);\n  }\n  [Symbol.iterator]() {\n    return ye3(this).values();\n  }\n  get length() {\n    return ye3(this).length;\n  }\n  getRenditionById(e) {\n    var s;\n    return (s = ye3(this).find((n2) => `${n2.id}` == `${e}`)) != null ? s : null;\n  }\n  get selectedIndex() {\n    return ye3(this).findIndex((e) => e.selected);\n  }\n  set selectedIndex(e) {\n    for (let [s, n2] of ye3(this).entries()) n2.selected = s === e;\n  }\n  get onaddrendition() {\n    return r9(this, Q2);\n  }\n  set onaddrendition(e) {\n    r9(this, Q2) && (this.removeEventListener(\"addrendition\", r9(this, Q2)), h2(this, Q2, void 0)), typeof e == \"function\" && (h2(this, Q2, e), this.addEventListener(\"addrendition\", e));\n  }\n  get onremoverendition() {\n    return r9(this, Z3);\n  }\n  set onremoverendition(e) {\n    r9(this, Z3) && (this.removeEventListener(\"removerendition\", r9(this, Z3)), h2(this, Z3, void 0)), typeof e == \"function\" && (h2(this, Z3, e), this.addEventListener(\"removerendition\", e));\n  }\n  get onchange() {\n    return r9(this, ee3);\n  }\n  set onchange(e) {\n    r9(this, ee3) && (this.removeEventListener(\"change\", r9(this, ee3)), h2(this, ee3, void 0)), typeof e == \"function\" && (h2(this, ee3, e), this.addEventListener(\"change\", e));\n  }\n};\nQ2 = /* @__PURE__ */ new WeakMap(), Z3 = /* @__PURE__ */ new WeakMap(), ee3 = /* @__PURE__ */ new WeakMap();\nvar Ae;\nvar qe3 = class {\n  constructor() {\n    v3(this, \"src\");\n    v3(this, \"id\");\n    v3(this, \"bitrate\");\n    v3(this, \"codec\");\n    u(this, Ae, false);\n  }\n  get selected() {\n    return r9(this, Ae);\n  }\n  set selected(i2) {\n    r9(this, Ae) !== i2 && (h2(this, Ae, i2), ei2(this));\n  }\n};\nAe = /* @__PURE__ */ new WeakMap();\nfunction dt3(t2, i2) {\n  let e = t2.audioTracks;\n  d2(i2).media = t2, d2(i2).renditionSet || (d2(i2).renditionSet = /* @__PURE__ */ new Set());\n  let s = d2(e).trackSet;\n  s.add(i2);\n  let n2 = s.size - 1;\n  n2 in fe3.prototype || Object.defineProperty(fe3.prototype, n2, { get() {\n    return [...d2(this).trackSet][n2];\n  } }), queueMicrotask(() => {\n    e.dispatchEvent(new q2(\"addtrack\", { track: i2 }));\n  });\n}\nfunction ct2(t2) {\n  var s;\n  let i2 = (s = d2(t2).media) == null ? void 0 : s.audioTracks;\n  if (!i2) return;\n  d2(i2).trackSet.delete(t2), queueMicrotask(() => {\n    i2.dispatchEvent(new q2(\"removetrack\", { track: t2 }));\n  });\n}\nfunction ti2(t2) {\n  let i2 = d2(t2).media.audioTracks;\n  !i2 || d2(i2).changeRequested || (d2(i2).changeRequested = true, queueMicrotask(() => {\n    delete d2(i2).changeRequested, i2.dispatchEvent(new Event(\"change\"));\n  }));\n}\nvar te3;\nvar ie3;\nvar re2;\nvar ke3;\nvar at3;\nvar fe3 = class extends EventTarget {\n  constructor() {\n    super();\n    u(this, ke3);\n    u(this, te3, void 0);\n    u(this, ie3, void 0);\n    u(this, re2, void 0);\n    d2(this).trackSet = /* @__PURE__ */ new Set();\n  }\n  [Symbol.iterator]() {\n    return r9(this, ke3, at3).values();\n  }\n  get length() {\n    return r9(this, ke3, at3).size;\n  }\n  getTrackById(e) {\n    var s;\n    return (s = [...r9(this, ke3, at3)].find((n2) => n2.id === e)) != null ? s : null;\n  }\n  get onaddtrack() {\n    return r9(this, te3);\n  }\n  set onaddtrack(e) {\n    r9(this, te3) && (this.removeEventListener(\"addtrack\", r9(this, te3)), h2(this, te3, void 0)), typeof e == \"function\" && (h2(this, te3, e), this.addEventListener(\"addtrack\", e));\n  }\n  get onremovetrack() {\n    return r9(this, ie3);\n  }\n  set onremovetrack(e) {\n    r9(this, ie3) && (this.removeEventListener(\"removetrack\", r9(this, ie3)), h2(this, ie3, void 0)), typeof e == \"function\" && (h2(this, ie3, e), this.addEventListener(\"removetrack\", e));\n  }\n  get onchange() {\n    return r9(this, re2);\n  }\n  set onchange(e) {\n    r9(this, re2) && (this.removeEventListener(\"change\", r9(this, re2)), h2(this, re2, void 0)), typeof e == \"function\" && (h2(this, re2, e), this.addEventListener(\"change\", e));\n  }\n};\nte3 = /* @__PURE__ */ new WeakMap(), ie3 = /* @__PURE__ */ new WeakMap(), re2 = /* @__PURE__ */ new WeakMap(), ke3 = /* @__PURE__ */ new WeakSet(), at3 = function() {\n  return d2(this).trackSet;\n};\nvar Re2;\nvar Se = class {\n  constructor() {\n    v3(this, \"id\");\n    v3(this, \"kind\");\n    v3(this, \"label\", \"\");\n    v3(this, \"language\", \"\");\n    v3(this, \"sourceBuffer\");\n    u(this, Re2, false);\n  }\n  addRendition(i2, e, s) {\n    let n2 = new qe3();\n    return n2.src = i2, n2.codec = e, n2.bitrate = s, Qt3(this, n2), n2;\n  }\n  removeRendition(i2) {\n    Zt2(i2);\n  }\n  get enabled() {\n    return r9(this, Re2);\n  }\n  set enabled(i2) {\n    r9(this, Re2) !== i2 && (h2(this, Re2, i2), ti2(this));\n  }\n};\nRe2 = /* @__PURE__ */ new WeakMap();\nvar ii2 = ut2(globalThis.HTMLMediaElement, \"video\");\nvar ri2 = ut2(globalThis.HTMLMediaElement, \"audio\");\nfunction si2(t2) {\n  if (!(t2 != null && t2.prototype)) return t2;\n  let i2 = ut2(t2, \"video\");\n  (!i2 || `${i2}`.includes(\"[native code]\")) && Object.defineProperty(t2.prototype, \"videoTracks\", { get() {\n    return bi2(this);\n  } });\n  let e = ut2(t2, \"audio\");\n  (!e || `${e}`.includes(\"[native code]\")) && Object.defineProperty(t2.prototype, \"audioTracks\", { get() {\n    return Ti2(this);\n  } }), \"addVideoTrack\" in t2.prototype || (t2.prototype.addVideoTrack = function(l, a2 = \"\", p3 = \"\") {\n    let E4 = new Te2();\n    return E4.kind = l, E4.label = a2, E4.language = p3, nt3(this, E4), E4;\n  }), \"removeVideoTrack\" in t2.prototype || (t2.prototype.removeVideoTrack = ot3), \"addAudioTrack\" in t2.prototype || (t2.prototype.addAudioTrack = function(l, a2 = \"\", p3 = \"\") {\n    let E4 = new Se();\n    return E4.kind = l, E4.label = a2, E4.language = p3, dt3(this, E4), E4;\n  }), \"removeAudioTrack\" in t2.prototype || (t2.prototype.removeAudioTrack = ct2), \"videoRenditions\" in t2.prototype || Object.defineProperty(t2.prototype, \"videoRenditions\", { get() {\n    return s(this);\n  } });\n  let s = (l) => {\n    let a2 = d2(l).videoRenditions;\n    return a2 || (a2 = new he3(), d2(a2).media = l, d2(l).videoRenditions = a2), a2;\n  };\n  \"audioRenditions\" in t2.prototype || Object.defineProperty(t2.prototype, \"audioRenditions\", { get() {\n    return n2(this);\n  } });\n  let n2 = (l) => {\n    let a2 = d2(l).audioRenditions;\n    return a2 || (a2 = new le3(), d2(a2).media = l, d2(l).audioRenditions = a2), a2;\n  };\n  return t2;\n}\nfunction ut2(t2, i2) {\n  var e;\n  if (t2 != null && t2.prototype) return (e = Object.getOwnPropertyDescriptor(t2.prototype, `${i2}Tracks`)) == null ? void 0 : e.get;\n}\nfunction bi2(t2) {\n  var e;\n  let i2 = d2(t2).videoTracks;\n  if (!i2 && (i2 = new ue3(), d2(t2).videoTracks = i2, ii2)) {\n    let s = ii2.call((e = t2.nativeEl) != null ? e : t2);\n    for (let n2 of s) nt3(t2, n2);\n    s.addEventListener(\"change\", () => {\n      i2.dispatchEvent(new Event(\"change\"));\n    }), s.addEventListener(\"addtrack\", (n2) => {\n      if ([...i2].some((l) => l instanceof Te2)) {\n        for (let l of s) ot3(l);\n        return;\n      }\n      nt3(t2, n2.track);\n    }), s.addEventListener(\"removetrack\", (n2) => {\n      ot3(n2.track);\n    });\n  }\n  return i2;\n}\nfunction Ti2(t2) {\n  var e;\n  let i2 = d2(t2).audioTracks;\n  if (!i2 && (i2 = new fe3(), d2(t2).audioTracks = i2, ri2)) {\n    let s = ri2.call((e = t2.nativeEl) != null ? e : t2);\n    for (let n2 of s) dt3(t2, n2);\n    s.addEventListener(\"change\", () => {\n      i2.dispatchEvent(new Event(\"change\"));\n    }), s.addEventListener(\"addtrack\", (n2) => {\n      if ([...i2].some((l) => l instanceof Se)) {\n        for (let l of s) ct2(l);\n        return;\n      }\n      dt3(t2, n2.track);\n    }), s.addEventListener(\"removetrack\", (n2) => {\n      ct2(n2.track);\n    });\n  }\n  return i2;\n}\nEt2.push(\"castchange\", \"entercast\", \"leavecast\");\nvar c = { BEACON_COLLECTION_DOMAIN: \"beacon-collection-domain\", CUSTOM_DOMAIN: \"custom-domain\", DEBUG: \"debug\", DISABLE_TRACKING: \"disable-tracking\", DISABLE_COOKIES: \"disable-cookies\", DRM_TOKEN: \"drm-token\", ENV_KEY: \"env-key\", MAX_RESOLUTION: \"max-resolution\", MIN_RESOLUTION: \"min-resolution\", RENDITION_ORDER: \"rendition-order\", PROGRAM_START_TIME: \"program-start-time\", PROGRAM_END_TIME: \"program-end-time\", METADATA_URL: \"metadata-url\", PLAYBACK_ID: \"playback-id\", PLAYER_SOFTWARE_NAME: \"player-software-name\", PLAYER_SOFTWARE_VERSION: \"player-software-version\", PREFER_CMCD: \"prefer-cmcd\", PREFER_PLAYBACK: \"prefer-playback\", START_TIME: \"start-time\", STREAM_TYPE: \"stream-type\", TARGET_LIVE_WINDOW: \"target-live-window\", LIVE_EDGE_OFFSET: \"live-edge-offset\", TYPE: \"type\" };\nvar qi2 = Object.values(c);\nvar Bi2 = _t2();\nvar Ui2 = \"mux-video\";\nvar x2;\nvar Ce3;\nvar Ue2;\nvar Oe3;\nvar We3;\nvar je3;\nvar Ke3;\nvar Ye3;\nvar _e3;\nvar lt3;\nvar Rt2 = class extends Xe3 {\n  constructor() {\n    super();\n    u(this, _e3);\n    u(this, x2, void 0);\n    u(this, Ce3, void 0);\n    u(this, Ue2, void 0);\n    u(this, Oe3, {});\n    u(this, We3, void 0);\n    u(this, je3, void 0);\n    u(this, Ke3, void 0);\n    u(this, Ye3, void 0);\n    h2(this, Ue2, Xt2());\n  }\n  static get observedAttributes() {\n    var e;\n    return [...qi2, ...(e = Xe3.observedAttributes) != null ? e : []];\n  }\n  get preferCmcd() {\n    var e;\n    return (e = this.getAttribute(c.PREFER_CMCD)) != null ? e : void 0;\n  }\n  set preferCmcd(e) {\n    e !== this.preferCmcd && (e ? dt2.includes(e) ? this.setAttribute(c.PREFER_CMCD, e) : console.warn(`Invalid value for preferCmcd. Must be one of ${dt2.join()}`) : this.removeAttribute(c.PREFER_CMCD));\n  }\n  get playerInitTime() {\n    return r9(this, Ue2);\n  }\n  get playerSoftwareName() {\n    var e;\n    return (e = r9(this, Ke3)) != null ? e : Ui2;\n  }\n  set playerSoftwareName(e) {\n    h2(this, Ke3, e);\n  }\n  get playerSoftwareVersion() {\n    var e;\n    return (e = r9(this, je3)) != null ? e : Bi2;\n  }\n  set playerSoftwareVersion(e) {\n    h2(this, je3, e);\n  }\n  get _hls() {\n    var e;\n    return (e = r9(this, x2)) == null ? void 0 : e.engine;\n  }\n  get mux() {\n    var e;\n    return (e = this.nativeEl) == null ? void 0 : e.mux;\n  }\n  get error() {\n    var e;\n    return (e = jt2(this.nativeEl)) != null ? e : null;\n  }\n  get errorTranslator() {\n    return r9(this, Ye3);\n  }\n  set errorTranslator(e) {\n    h2(this, Ye3, e);\n  }\n  get src() {\n    return this.getAttribute(\"src\");\n  }\n  set src(e) {\n    e !== this.src && (e == null ? this.removeAttribute(\"src\") : this.setAttribute(\"src\", e));\n  }\n  get type() {\n    var e;\n    return (e = this.getAttribute(c.TYPE)) != null ? e : void 0;\n  }\n  set type(e) {\n    e !== this.type && (e ? this.setAttribute(c.TYPE, e) : this.removeAttribute(c.TYPE));\n  }\n  get autoplay() {\n    let e = this.getAttribute(\"autoplay\");\n    return e === null ? false : e === \"\" ? true : e;\n  }\n  set autoplay(e) {\n    let s = this.autoplay;\n    e !== s && (e ? this.setAttribute(\"autoplay\", typeof e == \"string\" ? e : \"\") : this.removeAttribute(\"autoplay\"));\n  }\n  get preload() {\n    let e = this.getAttribute(\"preload\");\n    return e === \"\" ? \"auto\" : [\"none\", \"metadata\", \"auto\"].includes(e) ? e : super.preload;\n  }\n  set preload(e) {\n    e != this.getAttribute(\"preload\") && ([\"\", \"none\", \"metadata\", \"auto\"].includes(e) ? this.setAttribute(\"preload\", e) : this.removeAttribute(\"preload\"));\n  }\n  get debug() {\n    return this.getAttribute(c.DEBUG) != null;\n  }\n  set debug(e) {\n    e !== this.debug && (e ? this.setAttribute(c.DEBUG, \"\") : this.removeAttribute(c.DEBUG));\n  }\n  get disableTracking() {\n    return this.hasAttribute(c.DISABLE_TRACKING);\n  }\n  set disableTracking(e) {\n    e !== this.disableTracking && this.toggleAttribute(c.DISABLE_TRACKING, !!e);\n  }\n  get disableCookies() {\n    return this.hasAttribute(c.DISABLE_COOKIES);\n  }\n  set disableCookies(e) {\n    e !== this.disableCookies && (e ? this.setAttribute(c.DISABLE_COOKIES, \"\") : this.removeAttribute(c.DISABLE_COOKIES));\n  }\n  get startTime() {\n    let e = this.getAttribute(c.START_TIME);\n    if (e == null) return;\n    let s = +e;\n    return Number.isNaN(s) ? void 0 : s;\n  }\n  set startTime(e) {\n    e !== this.startTime && (e == null ? this.removeAttribute(c.START_TIME) : this.setAttribute(c.START_TIME, `${e}`));\n  }\n  get playbackId() {\n    var e;\n    return this.hasAttribute(c.PLAYBACK_ID) ? this.getAttribute(c.PLAYBACK_ID) : (e = be(this.src)) != null ? e : void 0;\n  }\n  set playbackId(e) {\n    e !== this.playbackId && (e ? this.setAttribute(c.PLAYBACK_ID, e) : this.removeAttribute(c.PLAYBACK_ID));\n  }\n  get maxResolution() {\n    var e;\n    return (e = this.getAttribute(c.MAX_RESOLUTION)) != null ? e : void 0;\n  }\n  set maxResolution(e) {\n    e !== this.maxResolution && (e ? this.setAttribute(c.MAX_RESOLUTION, e) : this.removeAttribute(c.MAX_RESOLUTION));\n  }\n  get minResolution() {\n    var e;\n    return (e = this.getAttribute(c.MIN_RESOLUTION)) != null ? e : void 0;\n  }\n  set minResolution(e) {\n    e !== this.minResolution && (e ? this.setAttribute(c.MIN_RESOLUTION, e) : this.removeAttribute(c.MIN_RESOLUTION));\n  }\n  get renditionOrder() {\n    var e;\n    return (e = this.getAttribute(c.RENDITION_ORDER)) != null ? e : void 0;\n  }\n  set renditionOrder(e) {\n    e !== this.renditionOrder && (e ? this.setAttribute(c.RENDITION_ORDER, e) : this.removeAttribute(c.RENDITION_ORDER));\n  }\n  get programStartTime() {\n    let e = this.getAttribute(c.PROGRAM_START_TIME);\n    if (e == null) return;\n    let s = +e;\n    return Number.isNaN(s) ? void 0 : s;\n  }\n  set programStartTime(e) {\n    e == null ? this.removeAttribute(c.PROGRAM_START_TIME) : this.setAttribute(c.PROGRAM_START_TIME, `${e}`);\n  }\n  get programEndTime() {\n    let e = this.getAttribute(c.PROGRAM_END_TIME);\n    if (e == null) return;\n    let s = +e;\n    return Number.isNaN(s) ? void 0 : s;\n  }\n  set programEndTime(e) {\n    e == null ? this.removeAttribute(c.PROGRAM_END_TIME) : this.setAttribute(c.PROGRAM_END_TIME, `${e}`);\n  }\n  get customDomain() {\n    var e;\n    return (e = this.getAttribute(c.CUSTOM_DOMAIN)) != null ? e : void 0;\n  }\n  set customDomain(e) {\n    e !== this.customDomain && (e ? this.setAttribute(c.CUSTOM_DOMAIN, e) : this.removeAttribute(c.CUSTOM_DOMAIN));\n  }\n  get drmToken() {\n    var e;\n    return (e = this.getAttribute(c.DRM_TOKEN)) != null ? e : void 0;\n  }\n  set drmToken(e) {\n    e !== this.drmToken && (e ? this.setAttribute(c.DRM_TOKEN, e) : this.removeAttribute(c.DRM_TOKEN));\n  }\n  get ended() {\n    return Je2(this.nativeEl, this._hls);\n  }\n  get envKey() {\n    var e;\n    return (e = this.getAttribute(c.ENV_KEY)) != null ? e : void 0;\n  }\n  set envKey(e) {\n    e !== this.envKey && (e ? this.setAttribute(c.ENV_KEY, e) : this.removeAttribute(c.ENV_KEY));\n  }\n  get beaconCollectionDomain() {\n    var e;\n    return (e = this.getAttribute(c.BEACON_COLLECTION_DOMAIN)) != null ? e : void 0;\n  }\n  set beaconCollectionDomain(e) {\n    e !== this.beaconCollectionDomain && (e ? this.setAttribute(c.BEACON_COLLECTION_DOMAIN, e) : this.removeAttribute(c.BEACON_COLLECTION_DOMAIN));\n  }\n  get streamType() {\n    var e;\n    return (e = this.getAttribute(c.STREAM_TYPE)) != null ? e : Te(this.nativeEl);\n  }\n  set streamType(e) {\n    e !== this.streamType && (e ? this.setAttribute(c.STREAM_TYPE, e) : this.removeAttribute(c.STREAM_TYPE));\n  }\n  get targetLiveWindow() {\n    return this.hasAttribute(c.TARGET_LIVE_WINDOW) ? +this.getAttribute(c.TARGET_LIVE_WINDOW) : Jt2(this.nativeEl);\n  }\n  set targetLiveWindow(e) {\n    e != this.targetLiveWindow && (e == null ? this.removeAttribute(c.TARGET_LIVE_WINDOW) : this.setAttribute(c.TARGET_LIVE_WINDOW, `${+e}`));\n  }\n  get liveEdgeStart() {\n    var e, s;\n    if (this.hasAttribute(c.LIVE_EDGE_OFFSET)) {\n      let { liveEdgeOffset: n2 } = this, l = (e = this.nativeEl.seekable.end(0)) != null ? e : 0, a2 = (s = this.nativeEl.seekable.start(0)) != null ? s : 0;\n      return Math.max(a2, l - n2);\n    }\n    return Qt2(this.nativeEl);\n  }\n  get liveEdgeOffset() {\n    if (this.hasAttribute(c.LIVE_EDGE_OFFSET)) return +this.getAttribute(c.LIVE_EDGE_OFFSET);\n  }\n  set liveEdgeOffset(e) {\n    e != this.targetLiveWindow && (e == null ? this.removeAttribute(c.LIVE_EDGE_OFFSET) : this.setAttribute(c.LIVE_EDGE_OFFSET, `${+e}`));\n  }\n  get seekable() {\n    return q(this.nativeEl);\n  }\n  addCuePoints(e) {\n    return __async(this, null, function* () {\n      return ie2(this.nativeEl, e);\n    });\n  }\n  get activeCuePoint() {\n    return ce2(this.nativeEl);\n  }\n  get cuePoints() {\n    return He(this.nativeEl);\n  }\n  addChapters(e) {\n    return __async(this, null, function* () {\n      return le2(this.nativeEl, e);\n    });\n  }\n  get activeChapter() {\n    return pe(this.nativeEl);\n  }\n  get chapters() {\n    return Ne2(this.nativeEl);\n  }\n  getStartDate() {\n    return _e2(this.nativeEl, this._hls);\n  }\n  get currentPdt() {\n    return Oe2(this.nativeEl, this._hls);\n  }\n  get preferPlayback() {\n    let e = this.getAttribute(c.PREFER_PLAYBACK);\n    if (e === _.MSE || e === _.NATIVE) return e;\n  }\n  set preferPlayback(e) {\n    e !== this.preferPlayback && (e === _.MSE || e === _.NATIVE ? this.setAttribute(c.PREFER_PLAYBACK, e) : this.removeAttribute(c.PREFER_PLAYBACK));\n  }\n  get metadata() {\n    return __spreadValues(__spreadValues({}, this.getAttributeNames().filter((s) => s.startsWith(\"metadata-\") && ![c.METADATA_URL].includes(s)).reduce((s, n2) => {\n      let l = this.getAttribute(n2);\n      return l != null && (s[n2.replace(/^metadata-/, \"\").replace(/-/g, \"_\")] = l), s;\n    }, {})), r9(this, Oe3));\n  }\n  set metadata(e) {\n    h2(this, Oe3, e != null ? e : {}), this.mux && this.mux.emit(\"hb\", r9(this, Oe3));\n  }\n  get _hlsConfig() {\n    return r9(this, We3);\n  }\n  set _hlsConfig(e) {\n    h2(this, We3, e);\n  }\n  load() {\n    h2(this, x2, Zt(this, this.nativeEl, r9(this, x2)));\n  }\n  unload() {\n    Qe2(this.nativeEl, r9(this, x2)), h2(this, x2, void 0);\n  }\n  attributeChangedCallback(e, s, n2) {\n    var a2, p3;\n    switch (Xe3.observedAttributes.includes(e) && ![\"src\", \"autoplay\", \"preload\"].includes(e) && super.attributeChangedCallback(e, s, n2), e) {\n      case c.PLAYER_SOFTWARE_NAME:\n        this.playerSoftwareName = n2 != null ? n2 : void 0;\n        break;\n      case c.PLAYER_SOFTWARE_VERSION:\n        this.playerSoftwareVersion = n2 != null ? n2 : void 0;\n        break;\n      case \"src\": {\n        let E4 = !!s, I4 = !!n2;\n        !E4 && I4 ? k2(this, _e3, lt3).call(this) : E4 && !I4 ? this.unload() : E4 && I4 && (this.unload(), k2(this, _e3, lt3).call(this));\n        break;\n      }\n      case \"autoplay\":\n        if (n2 === s) break;\n        (a2 = r9(this, x2)) == null || a2.setAutoplay(this.autoplay);\n        break;\n      case \"preload\":\n        if (n2 === s) break;\n        (p3 = r9(this, x2)) == null || p3.setPreload(n2);\n        break;\n      case c.PLAYBACK_ID:\n        this.src = Gt2(this);\n        break;\n      case c.DEBUG: {\n        let E4 = this.debug;\n        this.mux && console.info(\"Cannot toggle debug mode of mux data after initialization. Make sure you set all metadata to override before setting the src.\"), this._hls && (this._hls.config.debug = E4);\n        break;\n      }\n      case c.METADATA_URL:\n        n2 && fetch(n2).then((E4) => E4.json()).then((E4) => this.metadata = E4).catch(() => console.error(`Unable to load or parse metadata JSON from metadata-url ${n2}!`));\n        break;\n      case c.STREAM_TYPE:\n        (n2 == null || n2 !== s) && this.dispatchEvent(new CustomEvent(\"streamtypechange\", { composed: true, bubbles: true }));\n        break;\n      case c.TARGET_LIVE_WINDOW:\n        (n2 == null || n2 !== s) && this.dispatchEvent(new CustomEvent(\"targetlivewindowchange\", { composed: true, bubbles: true, detail: this.targetLiveWindow }));\n        break;\n      default:\n        break;\n    }\n  }\n  connectedCallback() {\n    var e;\n    (e = super.connectedCallback) == null || e.call(this), this.nativeEl && this.src && !r9(this, x2) && k2(this, _e3, lt3).call(this);\n  }\n  disconnectedCallback() {\n    this.unload();\n  }\n};\nx2 = /* @__PURE__ */ new WeakMap(), Ce3 = /* @__PURE__ */ new WeakMap(), Ue2 = /* @__PURE__ */ new WeakMap(), Oe3 = /* @__PURE__ */ new WeakMap(), We3 = /* @__PURE__ */ new WeakMap(), je3 = /* @__PURE__ */ new WeakMap(), Ke3 = /* @__PURE__ */ new WeakMap(), Ye3 = /* @__PURE__ */ new WeakMap(), _e3 = /* @__PURE__ */ new WeakSet(), lt3 = function() {\n  return __async(this, null, function* () {\n    r9(this, Ce3) || (yield h2(this, Ce3, Promise.resolve()), h2(this, Ce3, null), this.load());\n  });\n};\nvar Be3 = class extends Yt(si2(Rt2)) {\n};\nze3.customElements.get(\"mux-video\") || (ze3.customElements.define(\"mux-video\", Be3), ze3.MuxVideoElement = Be3);\nvar ks = Be3;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/template-parts.js\nvar __defProp10 = Object.defineProperty;\nvar __defNormalProp10 = (obj, key, value) => key in obj ? __defProp10(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField10 = (obj, key, value) => {\n  __defNormalProp10(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck33 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet33 = (obj, member, getter) => {\n  __accessCheck33(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd33 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet29 = (obj, member, value, setter) => {\n  __accessCheck33(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _parts;\nvar _processor;\nvar _items;\nvar _value;\nvar _element;\nvar _attributeName;\nvar _namespaceURI;\nvar _list;\nvar list_get;\nvar _parentNode;\nvar _nodes;\nvar ELEMENT = 1;\nvar STRING2 = 0;\nvar PART = 1;\nvar defaultProcessor = {\n  processCallback(instance, parts, state) {\n    if (!state)\n      return;\n    for (const [expression, part] of parts) {\n      if (expression in state) {\n        const value = state[expression];\n        if (typeof value === \"boolean\" && part instanceof AttrPart && typeof part.element[part.attributeName] === \"boolean\") {\n          part.booleanValue = value;\n        } else if (typeof value === \"function\" && part instanceof AttrPart) {\n          part.element[part.attributeName] = value;\n        } else {\n          part.value = value;\n        }\n      }\n    }\n  }\n};\nvar TemplateInstance = class extends GlobalThis.DocumentFragment {\n  constructor(template20, state, processor2 = defaultProcessor) {\n    var _a3;\n    super();\n    __privateAdd33(this, _parts, void 0);\n    __privateAdd33(this, _processor, void 0);\n    this.append(template20.content.cloneNode(true));\n    __privateSet29(this, _parts, parse(this));\n    __privateSet29(this, _processor, processor2);\n    (_a3 = processor2.createCallback) == null ? void 0 : _a3.call(processor2, this, __privateGet33(this, _parts), state);\n    processor2.processCallback(this, __privateGet33(this, _parts), state);\n  }\n  update(state) {\n    __privateGet33(this, _processor).processCallback(this, __privateGet33(this, _parts), state);\n  }\n};\n_parts = /* @__PURE__ */ new WeakMap();\n_processor = /* @__PURE__ */ new WeakMap();\nvar parse = (element, parts = []) => {\n  let type, value;\n  for (let attr of element.attributes || []) {\n    if (attr.value.includes(\"{{\")) {\n      const list = new AttrPartList();\n      for ([type, value] of tokenize(attr.value)) {\n        if (!type)\n          list.append(value);\n        else {\n          const part = new AttrPart(element, attr.name, attr.namespaceURI);\n          list.append(part);\n          parts.push([value, part]);\n        }\n      }\n      attr.value = list.toString();\n    }\n  }\n  for (let node of element.childNodes) {\n    if (node.nodeType === ELEMENT && !(node instanceof HTMLTemplateElement)) {\n      parse(node, parts);\n    } else {\n      if (node.nodeType === ELEMENT || node.data.includes(\"{{\")) {\n        const items = [];\n        if (node.data) {\n          for ([type, value] of tokenize(node.data))\n            if (!type)\n              items.push(new Text(value));\n            else {\n              const part = new ChildNodePart(element);\n              items.push(part);\n              parts.push([value, part]);\n            }\n        } else if (node instanceof HTMLTemplateElement) {\n          const part = new InnerTemplatePart(element, node);\n          items.push(part);\n          parts.push([part.expression, part]);\n        }\n        node.replaceWith(\n          ...items.flatMap((part) => part.replacementNodes || [part])\n        );\n      }\n    }\n  }\n  return parts;\n};\nvar mem = {};\nvar tokenize = (text) => {\n  let value = \"\", open = 0, tokens = mem[text], i2 = 0, c4;\n  if (tokens)\n    return tokens;\n  else\n    tokens = [];\n  for (; c4 = text[i2]; i2++) {\n    if (c4 === \"{\" && text[i2 + 1] === \"{\" && text[i2 - 1] !== \"\\\\\" && text[i2 + 2] && ++open == 1) {\n      if (value)\n        tokens.push([STRING2, value]);\n      value = \"\";\n      i2++;\n    } else if (c4 === \"}\" && text[i2 + 1] === \"}\" && text[i2 - 1] !== \"\\\\\" && !--open) {\n      tokens.push([PART, value.trim()]);\n      value = \"\";\n      i2++;\n    } else\n      value += c4 || \"\";\n  }\n  if (value)\n    tokens.push([STRING2, (open > 0 ? \"{{\" : \"\") + value]);\n  return mem[text] = tokens;\n};\nvar FRAGMENT = 11;\nvar Part2 = class {\n  get value() {\n    return \"\";\n  }\n  set value(val) {\n  }\n  toString() {\n    return this.value;\n  }\n};\nvar attrPartToList = /* @__PURE__ */ new WeakMap();\nvar AttrPartList = class {\n  constructor() {\n    __privateAdd33(this, _items, []);\n  }\n  [Symbol.iterator]() {\n    return __privateGet33(this, _items).values();\n  }\n  get length() {\n    return __privateGet33(this, _items).length;\n  }\n  item(index) {\n    return __privateGet33(this, _items)[index];\n  }\n  append(...items) {\n    for (const item of items) {\n      if (item instanceof AttrPart) {\n        attrPartToList.set(item, this);\n      }\n      __privateGet33(this, _items).push(item);\n    }\n  }\n  toString() {\n    return __privateGet33(this, _items).join(\"\");\n  }\n};\n_items = /* @__PURE__ */ new WeakMap();\nvar AttrPart = class extends Part2 {\n  constructor(element, attributeName, namespaceURI) {\n    super();\n    __privateAdd33(this, _list);\n    __privateAdd33(this, _value, \"\");\n    __privateAdd33(this, _element, void 0);\n    __privateAdd33(this, _attributeName, void 0);\n    __privateAdd33(this, _namespaceURI, void 0);\n    __privateSet29(this, _element, element);\n    __privateSet29(this, _attributeName, attributeName);\n    __privateSet29(this, _namespaceURI, namespaceURI);\n  }\n  get attributeName() {\n    return __privateGet33(this, _attributeName);\n  }\n  get attributeNamespace() {\n    return __privateGet33(this, _namespaceURI);\n  }\n  get element() {\n    return __privateGet33(this, _element);\n  }\n  get value() {\n    return __privateGet33(this, _value);\n  }\n  set value(newValue) {\n    if (__privateGet33(this, _value) === newValue)\n      return;\n    __privateSet29(this, _value, newValue);\n    if (!__privateGet33(this, _list, list_get) || __privateGet33(this, _list, list_get).length === 1) {\n      if (newValue == null) {\n        __privateGet33(this, _element).removeAttributeNS(\n          __privateGet33(this, _namespaceURI),\n          __privateGet33(this, _attributeName)\n        );\n      } else {\n        __privateGet33(this, _element).setAttributeNS(\n          __privateGet33(this, _namespaceURI),\n          __privateGet33(this, _attributeName),\n          newValue\n        );\n      }\n    } else {\n      __privateGet33(this, _element).setAttributeNS(\n        __privateGet33(this, _namespaceURI),\n        __privateGet33(this, _attributeName),\n        __privateGet33(this, _list, list_get)\n      );\n    }\n  }\n  /** @type boolean */\n  get booleanValue() {\n    return __privateGet33(this, _element).hasAttributeNS(\n      __privateGet33(this, _namespaceURI),\n      __privateGet33(this, _attributeName)\n    );\n  }\n  set booleanValue(value) {\n    if (!__privateGet33(this, _list, list_get) || __privateGet33(this, _list, list_get).length === 1)\n      this.value = value ? \"\" : null;\n    else\n      throw new DOMException(\"Value is not fully templatized\");\n  }\n};\n_value = /* @__PURE__ */ new WeakMap();\n_element = /* @__PURE__ */ new WeakMap();\n_attributeName = /* @__PURE__ */ new WeakMap();\n_namespaceURI = /* @__PURE__ */ new WeakMap();\n_list = /* @__PURE__ */ new WeakSet();\nlist_get = function() {\n  return attrPartToList.get(this);\n};\nvar ChildNodePart = class extends Part2 {\n  constructor(parentNode, nodes) {\n    super();\n    __privateAdd33(this, _parentNode, void 0);\n    __privateAdd33(this, _nodes, void 0);\n    __privateSet29(this, _parentNode, parentNode);\n    __privateSet29(this, _nodes, nodes ? [...nodes] : [new Text()]);\n  }\n  get replacementNodes() {\n    return __privateGet33(this, _nodes);\n  }\n  get parentNode() {\n    return __privateGet33(this, _parentNode);\n  }\n  get nextSibling() {\n    return __privateGet33(this, _nodes)[__privateGet33(this, _nodes).length - 1].nextSibling;\n  }\n  get previousSibling() {\n    return __privateGet33(this, _nodes)[0].previousSibling;\n  }\n  // FIXME: not sure why do we need string serialization here? Just because parent class has type DOMString?\n  get value() {\n    return __privateGet33(this, _nodes).map((node) => node.textContent).join(\"\");\n  }\n  set value(newValue) {\n    this.replace(newValue);\n  }\n  replace(...nodes) {\n    const normalisedNodes = nodes.flat().flatMap(\n      (node) => node == null ? [new Text()] : node.forEach ? [...node] : node.nodeType === FRAGMENT ? [...node.childNodes] : node.nodeType ? [node] : [new Text(node)]\n    );\n    if (!normalisedNodes.length)\n      normalisedNodes.push(new Text());\n    __privateSet29(this, _nodes, swapdom(\n      __privateGet33(this, _nodes)[0].parentNode,\n      __privateGet33(this, _nodes),\n      normalisedNodes,\n      this.nextSibling\n    ));\n  }\n};\n_parentNode = /* @__PURE__ */ new WeakMap();\n_nodes = /* @__PURE__ */ new WeakMap();\nvar InnerTemplatePart = class extends ChildNodePart {\n  constructor(parentNode, template20) {\n    let directive = template20.getAttribute(\"directive\") || template20.getAttribute(\"type\");\n    let expression = template20.getAttribute(\"expression\") || template20.getAttribute(directive) || \"\";\n    if (expression.startsWith(\"{{\"))\n      expression = expression.trim().slice(2, -2).trim();\n    super(parentNode);\n    __publicField10(this, \"directive\");\n    this.expression = expression;\n    this.template = template20;\n    this.directive = directive;\n  }\n};\nfunction swapdom(parent, a2, b4, end = null) {\n  let i2 = 0, cur, next, bi3, n2 = b4.length, m3 = a2.length;\n  while (i2 < n2 && i2 < m3 && a2[i2] == b4[i2])\n    i2++;\n  while (i2 < n2 && i2 < m3 && b4[n2 - 1] == a2[m3 - 1])\n    end = b4[--m3, --n2];\n  if (i2 == m3)\n    while (i2 < n2)\n      parent.insertBefore(b4[i2++], end);\n  if (i2 == n2)\n    while (i2 < m3)\n      parent.removeChild(a2[i2++]);\n  else {\n    cur = a2[i2];\n    while (i2 < n2) {\n      bi3 = b4[i2++], next = cur ? cur.nextSibling : end;\n      if (cur == bi3)\n        cur = next;\n      else if (i2 < n2 && b4[i2] == next)\n        parent.replaceChild(bi3, cur), cur = next;\n      else\n        parent.insertBefore(bi3, cur);\n    }\n    while (cur != end)\n      next = cur.nextSibling, parent.removeChild(cur), cur = next;\n  }\n  return b4;\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/template-processor.js\nvar pipeModifiers = {\n  string: (value) => String(value)\n};\nvar PartialTemplate = class {\n  constructor(template20) {\n    this.template = template20;\n    this.state = void 0;\n  }\n};\nvar templates = /* @__PURE__ */ new WeakMap();\nvar templateInstances = /* @__PURE__ */ new WeakMap();\nvar Directives = {\n  partial: (part, state) => {\n    state[part.expression] = new PartialTemplate(part.template);\n  },\n  if: (part, state) => {\n    var _a3;\n    if (evaluateExpression(part.expression, state)) {\n      if (templates.get(part) !== part.template) {\n        templates.set(part, part.template);\n        const tpl = new TemplateInstance(part.template, state, processor);\n        part.replace(tpl);\n        templateInstances.set(part, tpl);\n      } else {\n        (_a3 = templateInstances.get(part)) == null ? void 0 : _a3.update(state);\n      }\n    } else {\n      part.replace(\"\");\n      templates.delete(part);\n      templateInstances.delete(part);\n    }\n  }\n};\nvar DirectiveNames = Object.keys(Directives);\nvar processor = {\n  processCallback(instance, parts, state) {\n    var _a3, _b;\n    if (!state)\n      return;\n    for (const [expression, part] of parts) {\n      if (part instanceof InnerTemplatePart) {\n        if (!part.directive) {\n          const directive = DirectiveNames.find(\n            (n2) => part.template.hasAttribute(n2)\n          );\n          if (directive) {\n            part.directive = directive;\n            part.expression = part.template.getAttribute(directive);\n          }\n        }\n        (_a3 = Directives[part.directive]) == null ? void 0 : _a3.call(Directives, part, state);\n        continue;\n      }\n      let value = evaluateExpression(expression, state);\n      if (value instanceof PartialTemplate) {\n        if (templates.get(part) !== value.template) {\n          templates.set(part, value.template);\n          value = new TemplateInstance(value.template, value.state, processor);\n          part.value = value;\n          templateInstances.set(part, value);\n        } else {\n          (_b = templateInstances.get(part)) == null ? void 0 : _b.update(value.state);\n        }\n        continue;\n      }\n      if (value) {\n        if (part instanceof AttrPart) {\n          if (part.attributeName.startsWith(\"aria-\")) {\n            value = String(value);\n          }\n        }\n        if (part instanceof AttrPart) {\n          if (typeof value === \"boolean\") {\n            part.booleanValue = value;\n          } else if (typeof value === \"function\") {\n            part.element[part.attributeName] = value;\n          } else {\n            part.value = value;\n          }\n        } else {\n          part.value = value;\n          templates.delete(part);\n          templateInstances.delete(part);\n        }\n      } else {\n        if (part instanceof AttrPart) {\n          part.value = void 0;\n        } else {\n          part.value = void 0;\n          templates.delete(part);\n          templateInstances.delete(part);\n        }\n      }\n    }\n  }\n};\nvar operators = {\n  \"!\": (a2) => !a2,\n  \"!!\": (a2) => !!a2,\n  \"==\": (a2, b4) => a2 == b4,\n  \"!=\": (a2, b4) => a2 != b4,\n  \">\": (a2, b4) => a2 > b4,\n  \">=\": (a2, b4) => a2 >= b4,\n  \"<\": (a2, b4) => a2 < b4,\n  \"<=\": (a2, b4) => a2 <= b4,\n  \"??\": (a2, b4) => a2 != null ? a2 : b4,\n  \"|\": (a2, b4) => {\n    var _a3;\n    return (_a3 = pipeModifiers[b4]) == null ? void 0 : _a3.call(pipeModifiers, a2);\n  }\n};\nfunction tokenizeExpression(expr) {\n  return tokenize2(expr, {\n    boolean: /true|false/,\n    number: /-?\\d+\\.?\\d*/,\n    string: /([\"'])((?:\\\\.|[^\\\\])*?)\\1/,\n    operator: /[!=><][=!]?|\\?\\?|\\|/,\n    ws: /\\s+/,\n    param: /[$a-z_][$\\w]*/i\n  }).filter(({ type }) => type !== \"ws\");\n}\nfunction evaluateExpression(expr, state = {}) {\n  var _a3, _b, _c, _d, _e5, _f, _g;\n  const tokens = tokenizeExpression(expr);\n  if (tokens.length === 0 || tokens.some(({ type }) => !type)) {\n    return invalidExpression(expr);\n  }\n  if (((_a3 = tokens[0]) == null ? void 0 : _a3.token) === \">\") {\n    const partial = state[(_b = tokens[1]) == null ? void 0 : _b.token];\n    if (!partial) {\n      return invalidExpression(expr);\n    }\n    const partialState = __spreadValues({}, state);\n    partial.state = partialState;\n    const args = tokens.slice(2);\n    for (let i2 = 0; i2 < args.length; i2 += 3) {\n      const name = (_c = args[i2]) == null ? void 0 : _c.token;\n      const operator = (_d = args[i2 + 1]) == null ? void 0 : _d.token;\n      const value = (_e5 = args[i2 + 2]) == null ? void 0 : _e5.token;\n      if (name && operator === \"=\") {\n        partialState[name] = getParamValue(value, state);\n      }\n    }\n    return partial;\n  }\n  if (tokens.length === 1) {\n    if (!isValidParam(tokens[0])) {\n      return invalidExpression(expr);\n    }\n    return getParamValue(tokens[0].token, state);\n  }\n  if (tokens.length === 2) {\n    const operator = (_f = tokens[0]) == null ? void 0 : _f.token;\n    const run = operators[operator];\n    if (!run || !isValidParam(tokens[1])) {\n      return invalidExpression(expr);\n    }\n    const a2 = getParamValue(tokens[1].token, state);\n    return run(a2);\n  }\n  if (tokens.length === 3) {\n    const operator = (_g = tokens[1]) == null ? void 0 : _g.token;\n    const run = operators[operator];\n    if (!run || !isValidParam(tokens[0]) || !isValidParam(tokens[2])) {\n      return invalidExpression(expr);\n    }\n    const a2 = getParamValue(tokens[0].token, state);\n    if (operator === \"|\") {\n      return run(a2, tokens[2].token);\n    }\n    const b4 = getParamValue(tokens[2].token, state);\n    return run(a2, b4);\n  }\n}\nfunction invalidExpression(expr) {\n  console.warn(`Warning: invalid expression \\`${expr}\\``);\n  return false;\n}\nfunction isValidParam({ type }) {\n  return [\"number\", \"boolean\", \"string\", \"param\"].includes(type);\n}\nfunction getParamValue(raw, state) {\n  const firstChar = raw[0];\n  const lastChar = raw.slice(-1);\n  if (raw === \"true\" || raw === \"false\") {\n    return raw === \"true\";\n  }\n  if (firstChar === lastChar && [`'`, `\"`].includes(firstChar)) {\n    return raw.slice(1, -1);\n  }\n  if (isNumericString(raw)) {\n    return parseFloat(raw);\n  }\n  return state[raw];\n}\nfunction tokenize2(str, parsers) {\n  let len, match, token, tokens = [];\n  while (str) {\n    token = null;\n    len = str.length;\n    for (let key in parsers) {\n      match = parsers[key].exec(str);\n      if (match && match.index < len) {\n        token = {\n          token: match[0],\n          type: key,\n          matches: match.slice(1)\n        };\n        len = match.index;\n      }\n    }\n    if (len) {\n      tokens.push({\n        token: str.substr(0, len),\n        type: void 0\n      });\n    }\n    if (token) {\n      tokens.push(token);\n    }\n    str = str.substr(len + (token ? token.token.length : 0));\n  }\n  return tokens;\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-theme-element.js\nvar __defProp11 = Object.defineProperty;\nvar __defNormalProp11 = (obj, key, value) => key in obj ? __defProp11(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField11 = (obj, key, value) => {\n  __defNormalProp11(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck34 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet34 = (obj, member, getter) => {\n  __accessCheck34(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd34 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet30 = (obj, member, value, setter) => {\n  __accessCheck34(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod19 = (obj, member, method) => {\n  __accessCheck34(obj, member, \"access private method\");\n  return method;\n};\nvar _template;\nvar _prevTemplate;\nvar _prevTemplateId;\nvar _upgradeProperty;\nvar upgradeProperty_fn;\nvar _updateTemplate;\nvar updateTemplate_fn;\nvar observedMediaAttributes = {\n  mediatargetlivewindow: \"targetlivewindow\",\n  mediastreamtype: \"streamtype\"\n};\nvar prependTemplate = Document2.createElement(\"template\");\nprependTemplate.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      display: inline-block;\n      line-height: 0;\n    }\n\n    media-controller {\n      width: 100%;\n      height: 100%;\n    }\n\n    media-controller:not([mediasubtitleslist]) media-captions-selectmenu,\n    media-captions-button:not([mediasubtitleslist]),\n    media-rendition-selectmenu[mediarenditionunavailable],\n    media-audio-track-selectmenu[mediaaudiotrackunavailable],\n    media-volume-range[mediavolumeunavailable],\n    media-airplay-button[mediaairplayunavailable],\n    media-fullscreen-button[mediafullscreenunavailable],\n    media-cast-button[mediacastunavailable],\n    media-pip-button[mediapipunavailable] {\n      display: none;\n    }\n  </style>\n`;\nvar MediaThemeElement = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd34(this, _upgradeProperty);\n    __privateAdd34(this, _updateTemplate);\n    __publicField11(this, \"renderRoot\");\n    __publicField11(this, \"renderer\");\n    __privateAdd34(this, _template, void 0);\n    __privateAdd34(this, _prevTemplate, void 0);\n    __privateAdd34(this, _prevTemplateId, void 0);\n    if (this.shadowRoot) {\n      this.renderRoot = this.shadowRoot;\n    } else {\n      this.renderRoot = this.attachShadow({ mode: \"open\" });\n      this.createRenderer();\n    }\n    const observer2 = new MutationObserver((mutationList) => {\n      var _a3;\n      if (this.mediaController && !((_a3 = this.mediaController) == null ? void 0 : _a3.breakpointsComputed))\n        return;\n      if (mutationList.some((mutation) => {\n        const target = (\n          /** @type {HTMLElement} */\n          mutation.target\n        );\n        if (target === this)\n          return true;\n        if (target.localName !== \"media-controller\")\n          return false;\n        if (observedMediaAttributes[mutation.attributeName])\n          return true;\n        if (mutation.attributeName.startsWith(\"breakpoint\"))\n          return true;\n        return false;\n      })) {\n        this.render();\n      }\n    });\n    observer2.observe(this, { attributes: true });\n    observer2.observe(this.renderRoot, {\n      attributes: true,\n      subtree: true\n    });\n    this.addEventListener(\n      MediaStateChangeEvents.BREAKPOINTS_COMPUTED,\n      this.render\n    );\n    __privateMethod19(this, _upgradeProperty, upgradeProperty_fn).call(this, \"template\");\n  }\n  /** @type {HTMLElement & { breakpointsComputed?: boolean }} */\n  get mediaController() {\n    return this.renderRoot.querySelector(\"media-controller\");\n  }\n  get template() {\n    var _a3;\n    return (_a3 = __privateGet34(this, _template)) != null ? _a3 : this.constructor.template;\n  }\n  set template(element) {\n    __privateSet30(this, _prevTemplateId, null);\n    __privateSet30(this, _template, element);\n    this.createRenderer();\n  }\n  get props() {\n    var _a3, _b, _c;\n    const observedAttributes = [\n      ...Array.from((_b = (_a3 = this.mediaController) == null ? void 0 : _a3.attributes) != null ? _b : []).filter(\n        ({ name }) => {\n          return observedMediaAttributes[name] || name.startsWith(\"breakpoint\");\n        }\n      ),\n      ...Array.from(this.attributes)\n    ];\n    const props = {};\n    for (let attr of observedAttributes) {\n      const name = (_c = observedMediaAttributes[attr.name]) != null ? _c : camelCase(attr.name);\n      let { value } = attr;\n      if (value != null) {\n        if (isNumericString(value)) {\n          value = parseFloat(value);\n        }\n        props[name] = value === \"\" ? true : value;\n      } else {\n        props[name] = false;\n      }\n    }\n    return props;\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === \"template\" && oldValue != newValue) {\n      __privateMethod19(this, _updateTemplate, updateTemplate_fn).call(this);\n    }\n  }\n  connectedCallback() {\n    __privateMethod19(this, _updateTemplate, updateTemplate_fn).call(this);\n  }\n  createRenderer() {\n    if (this.template && this.template !== __privateGet34(this, _prevTemplate)) {\n      __privateSet30(this, _prevTemplate, this.template);\n      this.renderer = new TemplateInstance(\n        this.template,\n        this.props,\n        // @ts-ignore\n        this.constructor.processor\n      );\n      this.renderRoot.textContent = \"\";\n      this.renderRoot.append(\n        prependTemplate.content.cloneNode(true),\n        this.renderer\n      );\n    }\n  }\n  render() {\n    var _a3;\n    (_a3 = this.renderer) == null ? void 0 : _a3.update(this.props);\n  }\n};\n_template = /* @__PURE__ */ new WeakMap();\n_prevTemplate = /* @__PURE__ */ new WeakMap();\n_prevTemplateId = /* @__PURE__ */ new WeakMap();\n_upgradeProperty = /* @__PURE__ */ new WeakSet();\nupgradeProperty_fn = function(prop) {\n  if (Object.prototype.hasOwnProperty.call(this, prop)) {\n    const value = this[prop];\n    delete this[prop];\n    this[prop] = value;\n  }\n};\n_updateTemplate = /* @__PURE__ */ new WeakSet();\nupdateTemplate_fn = function() {\n  var _a3;\n  const templateId = this.getAttribute(\"template\");\n  if (!templateId || templateId === __privateGet34(this, _prevTemplateId))\n    return;\n  const rootNode = (\n    /** @type HTMLDocument | ShadowRoot */\n    this.getRootNode()\n  );\n  const template20 = (_a3 = rootNode == null ? void 0 : rootNode.getElementById) == null ? void 0 : _a3.call(rootNode, templateId);\n  if (template20) {\n    __privateSet30(this, _prevTemplateId, templateId);\n    __privateSet30(this, _template, template20);\n    this.createRenderer();\n    return;\n  }\n  if (isValidUrl(templateId)) {\n    __privateSet30(this, _prevTemplateId, templateId);\n    request(templateId).then((data) => {\n      const template22 = Document2.createElement(\"template\");\n      template22.innerHTML = data;\n      __privateSet30(this, _template, template22);\n      this.createRenderer();\n    }).catch(console.error);\n  }\n};\n__publicField11(MediaThemeElement, \"template\");\n__publicField11(MediaThemeElement, \"observedAttributes\", [\"template\"]);\n__publicField11(MediaThemeElement, \"processor\", processor);\nfunction isValidUrl(url) {\n  if (!/^(\\/|\\.\\/|https?:\\/\\/)/.test(url))\n    return false;\n  const base = /^https?:\\/\\//.test(url) ? void 0 : location.origin;\n  try {\n    new URL(url, base);\n  } catch (e) {\n    return false;\n  }\n  return true;\n}\nfunction request(resource) {\n  return __async(this, null, function* () {\n    const response = yield fetch(resource);\n    if (response.status !== 200) {\n      throw new Error(\n        `Failed to load resource: the server responded with a status of ${response.status}`\n      );\n    }\n    return response.text();\n  });\n}\nif (!GlobalThis.customElements.get(\"media-theme\")) {\n  GlobalThis.customElements.define(\"media-theme\", MediaThemeElement);\n}\n\n// node_modules/.pnpm/@mux+mux-player@2.9.1/node_modules/@mux/mux-player/dist/index.mjs\nvar xe4 = (t2, i2, e) => {\n  if (!i2.has(t2)) throw TypeError(\"Cannot \" + e);\n};\nvar u2 = (t2, i2, e) => (xe4(t2, i2, \"read from private field\"), e ? e.call(t2) : i2.get(t2));\nvar p = (t2, i2, e) => {\n  if (i2.has(t2)) throw TypeError(\"Cannot add the same private member more than once\");\n  i2 instanceof WeakSet ? i2.add(t2) : i2.set(t2, e);\n};\nvar x3 = (t2, i2, e, a2) => (xe4(t2, i2, \"write to private field\"), a2 ? a2.call(t2, e) : i2.set(t2, e), e);\nvar b3 = (t2, i2, e) => (xe4(t2, i2, \"access private method\"), e);\nvar G3 = class {\n  addEventListener() {\n  }\n  removeEventListener() {\n  }\n  dispatchEvent(i2) {\n    return true;\n  }\n};\nif (typeof DocumentFragment == \"undefined\") {\n  class t2 extends G3 {\n  }\n  globalThis.DocumentFragment = t2;\n}\nvar X4 = class extends G3 {\n};\nvar Le4 = class extends G3 {\n};\nvar Ft3 = { get(t2) {\n}, define(t2, i2, e) {\n}, upgrade(t2) {\n}, whenDefined(t2) {\n  return Promise.resolve(X4);\n} };\nvar J3;\nvar Re3 = class {\n  constructor(i2, e = {}) {\n    p(this, J3, void 0);\n    x3(this, J3, e == null ? void 0 : e.detail);\n  }\n  get detail() {\n    return u2(this, J3);\n  }\n  initCustomEvent() {\n  }\n};\nJ3 = /* @__PURE__ */ new WeakMap();\nfunction Yt2(t2, i2) {\n  return new X4();\n}\nvar dt4 = { document: { createElement: Yt2 }, DocumentFragment, customElements: Ft3, CustomEvent: Re3, EventTarget: G3, HTMLElement: X4, HTMLVideoElement: Le4 };\nvar lt4 = typeof window == \"undefined\" || typeof globalThis.customElements == \"undefined\";\nvar c2 = lt4 ? dt4 : globalThis;\nvar T2 = lt4 ? dt4.document : globalThis.document;\nvar Wt3 = \"en\";\nvar U3 = { code: Wt3 };\nvar mt3 = \"en\";\nfunction m(t2, i2 = true) {\n  var r10, o;\n  let e = i2 && (o = (r10 = U3) == null ? void 0 : r10[t2]) != null ? o : t2, a2 = i2 ? U3.code : mt3;\n  return new we3(e, a2);\n}\nvar we3 = class {\n  constructor(i2, e = ((a2) => (a2 = U3.code) != null ? a2 : mt3)()) {\n    this.message = i2, this.locale = e;\n  }\n  format(i2) {\n    return this.message.replace(/\\{(\\w+)\\}/g, (e, a2) => {\n      var r10;\n      return (r10 = i2[a2]) != null ? r10 : \"\";\n    });\n  }\n  toString() {\n    return this.message;\n  }\n};\nfunction ut3(t2) {\n  let i2 = \"\";\n  return Object.entries(t2).forEach(([e, a2]) => {\n    a2 != null && (i2 += `${de4(e)}: ${a2}; `);\n  }), i2 ? i2.trim() : void 0;\n}\nfunction de4(t2) {\n  return t2.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\nfunction le4(t2) {\n  return t2.replace(/[-_]([a-z])/g, (i2, e) => e.toUpperCase());\n}\nfunction L(t2) {\n  if (t2 == null) return;\n  let i2 = +t2;\n  return Number.isNaN(i2) ? void 0 : i2;\n}\nfunction Oe4(t2) {\n  let i2 = Zt3(t2).toString();\n  return i2 ? \"?\" + i2 : \"\";\n}\nfunction Zt3(t2) {\n  let i2 = {};\n  for (let e in t2) t2[e] != null && (i2[e] = t2[e]);\n  return new URLSearchParams(i2);\n}\nfunction N2(t2) {\n  let i2 = (t2 != null ? t2 : \"\").split(\".\")[1];\n  if (!i2) return {};\n  let e = i2.replace(/-/g, \"+\").replace(/_/g, \"/\"), a2 = decodeURIComponent(atob(e).split(\"\").map(function(r10) {\n    return \"%\" + (\"00\" + r10.charCodeAt(0).toString(16)).slice(-2);\n  }).join(\"\"));\n  return JSON.parse(a2);\n}\nvar Se2 = (t2, i2) => !t2 || !i2 ? false : t2.contains(i2) ? true : Se2(t2, i2.getRootNode().host);\nvar ct3 = \"mux.com\";\nvar Gt4 = () => {\n  try {\n    return \"2.9.1\";\n  } catch (e) {\n  }\n  return \"UNKNOWN\";\n};\nvar jt4 = Gt4();\nvar ue4 = () => jt4;\nvar pt4 = (t2, { token: i2, customDomain: e = ct3, thumbnailTime: a2, programTime: r10 } = {}) => {\n  let o = i2 == null ? a2 : void 0, { aud: s } = N2(i2);\n  if (!(i2 && s !== \"t\")) return `https://image.${e}/${t2}/thumbnail.webp${Oe4({ token: i2, time: o, program_time: r10 })}`;\n};\nvar bt3 = (t2, { token: i2, customDomain: e = ct3, programStartTime: a2, programEndTime: r10 } = {}) => {\n  let { aud: o } = N2(i2);\n  if (!(i2 && o !== \"s\")) return `https://image.${e}/${t2}/storyboard.vtt${Oe4({ token: i2, format: \"webp\", program_start_time: a2, program_end_time: r10 })}`;\n};\nvar Q3 = (t2) => {\n  if (t2) {\n    if ([g.LIVE, g.ON_DEMAND].includes(t2)) return t2;\n    if (t2 != null && t2.includes(\"live\")) return g.LIVE;\n  }\n};\nvar qt3 = { crossorigin: \"crossOrigin\", playsinline: \"playsInline\" };\nfunction ht(t2) {\n  var i2;\n  return (i2 = qt3[t2]) != null ? i2 : le4(t2);\n}\nvar K4;\nvar $4;\nvar E2;\nvar me3 = class {\n  constructor(i2, e) {\n    p(this, K4, void 0);\n    p(this, $4, void 0);\n    p(this, E2, []);\n    x3(this, K4, i2), x3(this, $4, e);\n  }\n  [Symbol.iterator]() {\n    return u2(this, E2).values();\n  }\n  get length() {\n    return u2(this, E2).length;\n  }\n  get value() {\n    var i2;\n    return (i2 = u2(this, E2).join(\" \")) != null ? i2 : \"\";\n  }\n  set value(i2) {\n    var e;\n    i2 !== this.value && (x3(this, E2, []), this.add(...(e = i2 == null ? void 0 : i2.split(\" \")) != null ? e : []));\n  }\n  toString() {\n    return this.value;\n  }\n  item(i2) {\n    return u2(this, E2)[i2];\n  }\n  values() {\n    return u2(this, E2).values();\n  }\n  keys() {\n    return u2(this, E2).keys();\n  }\n  forEach(i2) {\n    u2(this, E2).forEach(i2);\n  }\n  add(...i2) {\n    var e, a2;\n    i2.forEach((r10) => {\n      this.contains(r10) || u2(this, E2).push(r10);\n    }), !(this.value === \"\" && !((e = u2(this, K4)) != null && e.hasAttribute(`${u2(this, $4)}`))) && ((a2 = u2(this, K4)) == null || a2.setAttribute(`${u2(this, $4)}`, `${this.value}`));\n  }\n  remove(...i2) {\n    var e;\n    i2.forEach((a2) => {\n      u2(this, E2).splice(u2(this, E2).indexOf(a2), 1);\n    }), (e = u2(this, K4)) == null || e.setAttribute(`${u2(this, $4)}`, `${this.value}`);\n  }\n  contains(i2) {\n    return u2(this, E2).includes(i2);\n  }\n  toggle(i2, e) {\n    return typeof e != \"undefined\" ? e ? (this.add(i2), true) : (this.remove(i2), false) : this.contains(i2) ? (this.remove(i2), false) : (this.add(i2), true);\n  }\n  replace(i2, e) {\n    this.remove(i2), this.add(e);\n  }\n};\nK4 = /* @__PURE__ */ new WeakMap(), $4 = /* @__PURE__ */ new WeakMap(), E2 = /* @__PURE__ */ new WeakMap();\nvar gt2 = `[mux-player ${ue4()}]`;\nfunction I3(...t2) {\n  console.warn(gt2, ...t2);\n}\nfunction A2(...t2) {\n  console.error(gt2, ...t2);\n}\nfunction _e4(t2) {\n  var e;\n  let i2 = (e = t2.message) != null ? e : \"\";\n  if (t2.context && (i2 += ` ${t2.context}`), t2.file) {\n    let a2 = \"https://github.com/muxinc/elements/blob/main/errors/\";\n    i2 += ` ${m(\"Read more: \")}\n${a2}${t2.file}`;\n  }\n  I3(i2);\n}\nvar y3 = { AUTOPLAY: \"autoplay\", CROSSORIGIN: \"crossorigin\", LOOP: \"loop\", MUTED: \"muted\", PLAYSINLINE: \"playsinline\", PRELOAD: \"preload\" };\nvar F4 = { VOLUME: \"volume\", PLAYBACKRATE: \"playbackrate\", MUTED: \"muted\" };\nvar yt2 = Object.freeze({ length: 0, start(t2) {\n  let i2 = t2 >>> 0;\n  if (i2 >= this.length) throw new DOMException(`Failed to execute 'start' on 'TimeRanges': The index provided (${i2}) is greater than or equal to the maximum bound (${this.length}).`);\n  return 0;\n}, end(t2) {\n  let i2 = t2 >>> 0;\n  if (i2 >= this.length) throw new DOMException(`Failed to execute 'end' on 'TimeRanges': The index provided (${i2}) is greater than or equal to the maximum bound (${this.length}).`);\n  return 0;\n} });\nvar Xt4 = Et2.filter((t2) => t2 !== \"error\");\nvar Jt4 = Object.values(y3).filter((t2) => ![y3.PLAYSINLINE].includes(t2));\nvar Qt4 = Object.values(F4);\nvar j3;\nvar Pe3 = class extends c2.HTMLElement {\n  constructor() {\n    super();\n    p(this, j3, /* @__PURE__ */ new WeakMap());\n    let e = (r10) => {\n      for (let o of r10) o.type === \"childList\" && (o.removedNodes.forEach((s) => {\n        var l;\n        (l = u2(this, j3).get(s)) == null || l.remove();\n      }), o.addedNodes.forEach((s) => {\n        var h3;\n        let l = s;\n        l != null && l.slot || (h3 = this.media) == null || h3.append(vt3(u2(this, j3), s));\n      }));\n    };\n    new MutationObserver(e).observe(this, { childList: true, subtree: true });\n  }\n  static get observedAttributes() {\n    return [...Jt4, ...Qt4];\n  }\n  init() {\n    this.querySelectorAll(\":scope > :not([slot])\").forEach((e) => {\n      var a2;\n      (a2 = this.media) == null || a2.append(vt3(u2(this, j3), e));\n    }), Xt4.forEach((e) => {\n      var a2;\n      (a2 = this.media) == null || a2.addEventListener(e, (r10) => {\n        this.dispatchEvent(new Event(r10.type));\n      });\n    });\n  }\n  attributeChangedCallback(e, a2, r10) {\n    var o, s;\n    switch (e) {\n      case F4.MUTED: {\n        this.media && (this.media.muted = r10 != null, this.media.defaultMuted = r10 != null);\n        return;\n      }\n      case F4.VOLUME: {\n        let l = (o = L(r10)) != null ? o : 1;\n        this.media && (this.media.volume = l);\n        return;\n      }\n      case F4.PLAYBACKRATE: {\n        let l = (s = L(r10)) != null ? s : 1;\n        this.media && (this.media.playbackRate = l, this.media.defaultPlaybackRate = l);\n        return;\n      }\n    }\n  }\n  play() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.play()) != null ? a2 : Promise.reject();\n  }\n  pause() {\n    var e;\n    (e = this.media) == null || e.pause();\n  }\n  load() {\n    var e;\n    (e = this.media) == null || e.load();\n  }\n  requestCast(e) {\n    var a2;\n    return (a2 = this.media) == null ? void 0 : a2.requestCast(e);\n  }\n  get media() {\n    var e;\n    return (e = this.shadowRoot) == null ? void 0 : e.querySelector(\"mux-video\");\n  }\n  get audioTracks() {\n    return this.media.audioTracks;\n  }\n  get videoTracks() {\n    return this.media.videoTracks;\n  }\n  get audioRenditions() {\n    return this.media.audioRenditions;\n  }\n  get videoRenditions() {\n    return this.media.videoRenditions;\n  }\n  get paused() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.paused) != null ? a2 : true;\n  }\n  get duration() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.duration) != null ? a2 : NaN;\n  }\n  get ended() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.ended) != null ? a2 : false;\n  }\n  get buffered() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.buffered) != null ? a2 : yt2;\n  }\n  get seekable() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.seekable) != null ? a2 : yt2;\n  }\n  get readyState() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.readyState) != null ? a2 : 0;\n  }\n  get videoWidth() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.videoWidth) != null ? a2 : 0;\n  }\n  get videoHeight() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.videoHeight) != null ? a2 : 0;\n  }\n  get currentSrc() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.currentSrc) != null ? a2 : \"\";\n  }\n  get currentTime() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.currentTime) != null ? a2 : 0;\n  }\n  set currentTime(e) {\n    this.media && (this.media.currentTime = Number(e));\n  }\n  get volume() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.volume) != null ? a2 : 1;\n  }\n  set volume(e) {\n    this.media && (this.media.volume = Number(e));\n  }\n  get playbackRate() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.playbackRate) != null ? a2 : 1;\n  }\n  set playbackRate(e) {\n    this.media && (this.media.playbackRate = Number(e));\n  }\n  get defaultPlaybackRate() {\n    var e;\n    return (e = L(this.getAttribute(F4.PLAYBACKRATE))) != null ? e : 1;\n  }\n  set defaultPlaybackRate(e) {\n    e != null ? this.setAttribute(F4.PLAYBACKRATE, `${e}`) : this.removeAttribute(F4.PLAYBACKRATE);\n  }\n  get crossOrigin() {\n    return ee4(this, y3.CROSSORIGIN);\n  }\n  set crossOrigin(e) {\n    this.setAttribute(y3.CROSSORIGIN, `${e}`);\n  }\n  get autoplay() {\n    return ee4(this, y3.AUTOPLAY) != null;\n  }\n  set autoplay(e) {\n    e ? this.setAttribute(y3.AUTOPLAY, typeof e == \"string\" ? e : \"\") : this.removeAttribute(y3.AUTOPLAY);\n  }\n  get loop() {\n    return ee4(this, y3.LOOP) != null;\n  }\n  set loop(e) {\n    e ? this.setAttribute(y3.LOOP, \"\") : this.removeAttribute(y3.LOOP);\n  }\n  get muted() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.muted) != null ? a2 : false;\n  }\n  set muted(e) {\n    this.media && (this.media.muted = !!e);\n  }\n  get defaultMuted() {\n    return ee4(this, y3.MUTED) != null;\n  }\n  set defaultMuted(e) {\n    e ? this.setAttribute(y3.MUTED, \"\") : this.removeAttribute(y3.MUTED);\n  }\n  get playsInline() {\n    return ee4(this, y3.PLAYSINLINE) != null;\n  }\n  set playsInline(e) {\n    A2(\"playsInline is set to true by default and is not currently supported as a setter.\");\n  }\n  get preload() {\n    return this.media ? this.media.preload : this.getAttribute(\"preload\");\n  }\n  set preload(e) {\n    [\"\", \"none\", \"metadata\", \"auto\"].includes(e) ? this.setAttribute(y3.PRELOAD, e) : this.removeAttribute(y3.PRELOAD);\n  }\n};\nj3 = /* @__PURE__ */ new WeakMap();\nfunction ee4(t2, i2) {\n  return t2.media ? t2.media.getAttribute(i2) : t2.getAttribute(i2);\n}\nfunction vt3(t2, i2) {\n  let e = t2.get(i2);\n  return e || (e = i2.cloneNode(), t2.set(i2, e)), e;\n}\nvar Ne4 = Pe3;\nvar Et3 = `:host {\n  --media-control-display: var(--controls);\n  --media-loading-indicator-display: var(--loading-indicator);\n  --media-dialog-display: var(--dialog);\n  --media-play-button-display: var(--play-button);\n  --media-live-button-display: var(--live-button);\n  --media-seek-backward-button-display: var(--seek-backward-button);\n  --media-seek-forward-button-display: var(--seek-forward-button);\n  --media-mute-button-display: var(--mute-button);\n  --media-captions-button-display: var(--captions-button);\n  --media-captions-selectmenu-display: var(--captions-selectmenu, var(--media-captions-button-display));\n  --media-rendition-selectmenu-display: var(--rendition-selectmenu);\n  --media-audio-track-selectmenu-display: var(--audio-track-selectmenu);\n  --media-airplay-button-display: var(--airplay-button);\n  --media-pip-button-display: var(--pip-button);\n  --media-fullscreen-button-display: var(--fullscreen-button);\n  --media-cast-button-display: var(--cast-button, var(--_cast-button-drm-display));\n  --media-playback-rate-button-display: var(--playback-rate-button);\n  --media-playback-rate-selectmenu-display: var(--playback-rate-selectmenu);\n  --media-volume-range-display: var(--volume-range);\n  --media-time-range-display: var(--time-range);\n  --media-time-display-display: var(--time-display);\n  --media-duration-display-display: var(--duration-display);\n  --media-title-display-display: var(--title-display);\n\n  display: inline-block;\n  width: 100%;\n  line-height: 0;\n}\n\n/* Hide custom elements that are not defined yet */\n:not(:defined) {\n  display: none;\n}\n\na {\n  color: #fff;\n  font-size: 0.9em;\n  text-decoration: underline;\n}\n\nmedia-theme {\n  width: 100%;\n  height: 100%;\n  direction: ltr;\n}\n\nmedia-poster-image {\n  width: 100%;\n  height: 100%;\n}\n\nmedia-poster-image:not([src]):not([placeholdersrc]) {\n  display: none;\n}\n\n::part(top),\n[part~='top'] {\n  --media-control-display: var(--controls, var(--top-controls));\n  --media-play-button-display: var(--play-button, var(--top-play-button));\n  --media-live-button-display: var(--live-button, var(--top-live-button));\n  --media-seek-backward-button-display: var(--seek-backward-button, var(--top-seek-backward-button));\n  --media-seek-forward-button-display: var(--seek-forward-button, var(--top-seek-forward-button));\n  --media-mute-button-display: var(--mute-button, var(--top-mute-button));\n  --media-captions-button-display: var(--captions-button, var(--top-captions-button));\n  --media-captions-selectmenu-display: var(\n    --captions-selectmenu,\n    var(--media-captions-button-display, var(--top-captions-selectmenu))\n  );\n  --media-rendition-selectmenu-display: var(--rendition-selectmenu, var(--top-rendition-selectmenu));\n  --media-audio-track-selectmenu-display: var(--audio-track-selectmenu, var(--top-audio-track-selectmenu));\n  --media-airplay-button-display: var(--airplay-button, var(--top-airplay-button));\n  --media-pip-button-display: var(--pip-button, var(--top-pip-button));\n  --media-fullscreen-button-display: var(--fullscreen-button, var(--top-fullscreen-button));\n  --media-cast-button-display: var(--cast-button, var(--top-cast-button, var(--_cast-button-drm-display)));\n  --media-playback-rate-button-display: var(--playback-rate-button, var(--top-playback-rate-button));\n  --media-playback-rate-selectmenu-display: var(\n    --captions-selectmenu,\n    var(--media-playback-rate-button-display, var(--top-playback-rate-selectmenu))\n  );\n  --media-volume-range-display: var(--volume-range, var(--top-volume-range));\n  --media-time-range-display: var(--time-range, var(--top-time-range));\n  --media-time-display-display: var(--time-display, var(--top-time-display));\n  --media-duration-display-display: var(--duration-display, var(--top-duration-display));\n  --media-title-display-display: var(--title-display, var(--top-title-display));\n}\n\n::part(center),\n[part~='center'] {\n  --media-control-display: var(--controls, var(--center-controls));\n  --media-play-button-display: var(--play-button, var(--center-play-button));\n  --media-live-button-display: var(--live-button, var(--center-live-button));\n  --media-seek-backward-button-display: var(--seek-backward-button, var(--center-seek-backward-button));\n  --media-seek-forward-button-display: var(--seek-forward-button, var(--center-seek-forward-button));\n  --media-mute-button-display: var(--mute-button, var(--center-mute-button));\n  --media-captions-button-display: var(--captions-button, var(--center-captions-button));\n  --media-captions-selectmenu-display: var(\n    --captions-selectmenu,\n    var(--media-captions-button-display, var(--center-captions-selectmenu))\n  );\n  --media-rendition-selectmenu-display: var(--rendition-selectmenu, var(--center-rendition-selectmenu));\n  --media-audio-track-selectmenu-display: var(--audio-track-selectmenu, var(--center-audio-track-selectmenu));\n  --media-airplay-button-display: var(--airplay-button, var(--center-airplay-button));\n  --media-pip-button-display: var(--pip-button, var(--center-pip-button));\n  --media-fullscreen-button-display: var(--fullscreen-button, var(--center-fullscreen-button));\n  --media-cast-button-display: var(--cast-button, var(--center-cast-button, var(--_cast-button-drm-display)));\n  --media-playback-rate-button-display: var(--playback-rate-button, var(--center-playback-rate-button));\n  --media-playback-rate-selectmenu-display: var(\n    --playback-rate-selectmenu,\n    var(--media-playback-rate-button-display, var(--center-playback-rate-selectmenu))\n  );\n  --media-volume-range-display: var(--volume-range, var(--center-volume-range));\n  --media-time-range-display: var(--time-range, var(--center-time-range));\n  --media-time-display-display: var(--time-display, var(--center-time-display));\n  --media-duration-display-display: var(--duration-display, var(--center-duration-display));\n}\n\n::part(bottom),\n[part~='bottom'] {\n  --media-control-display: var(--controls, var(--bottom-controls));\n  --media-play-button-display: var(--play-button, var(--bottom-play-button));\n  --media-live-button-display: var(--live-button, var(--bottom-live-button));\n  --media-seek-backward-button-display: var(--seek-backward-button, var(--bottom-seek-backward-button));\n  --media-seek-forward-button-display: var(--seek-forward-button, var(--bottom-seek-forward-button));\n  --media-mute-button-display: var(--mute-button, var(--bottom-mute-button));\n  --media-captions-button-display: var(--captions-button, var(--bottom-captions-button));\n  --media-captions-selectmenu-display: var(\n    --captions-selectmenu,\n    var(--media-captions-button-display, var(--bottom-captions-selectmenu))\n  );\n  --media-rendition-selectmenu-display: var(--rendition-selectmenu, var(--bottom-rendition-selectmenu));\n  --media-audio-track-selectmenu-display: var(--audio-track-selectmenu, var(--bottom-audio-track-selectmenu));\n  --media-airplay-button-display: var(--airplay-button, var(--bottom-airplay-button));\n  --media-pip-button-display: var(--pip-button, var(--bottom-pip-button));\n  --media-fullscreen-button-display: var(--fullscreen-button, var(--bottom-fullscreen-button));\n  --media-cast-button-display: var(--cast-button, var(--bottom-cast-button, var(--_cast-button-drm-display)));\n  --media-playback-rate-button-display: var(--playback-rate-button, var(--bottom-playback-rate-button));\n  --media-playback-rate-selectmenu-display: var(\n    --playback-rate-selectmenu,\n    var(--media-playback-rate-button-display, var(--bottom-playback-rate-selectmenu))\n  );\n  --media-volume-range-display: var(--volume-range, var(--bottom-volume-range));\n  --media-time-range-display: var(--time-range, var(--bottom-time-range));\n  --media-time-display-display: var(--time-display, var(--bottom-time-display));\n  --media-duration-display-display: var(--duration-display, var(--bottom-duration-display));\n  --media-title-display-display: var(--title-display, var(--bottom-title-display));\n}\n`;\nvar Tt3 = `\n  :host {\n    z-index: 100;\n    display: var(--media-dialog-display, flex);\n    justify-content: center;\n    align-items: center;\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    top: 0;\n    left: 0;\n    box-sizing: border-box;\n    color: #fff;\n    line-height: 18px;\n    font-family: Arial, sans-serif;\n    padding: var(--media-dialog-backdrop-padding, 0);\n    background: var(--media-dialog-backdrop-background,\n      linear-gradient(to bottom, rgba(20, 20, 30, 0.7) 50%, rgba(20, 20, 30, 0.9))\n    );\n    /* Needs to use !important to prevent overwrite of media-chrome */\n    transition: var(--media-dialog-transition-open, visibility .2s, opacity .2s) !important;\n    transform: var(--media-dialog-transform-open, none) !important;\n    visibility: visible !important;\n    opacity: 1 !important;\n    pointer-events: auto !important;\n  }\n\n  :host(:not([open])) {\n    /* Needs to use !important to prevent overwrite of media-chrome */\n    transition: var(--media-dialog-transition-close, visibility .1s, opacity .1s) !important;\n    transform: var(--media-dialog-transform-close, none) !important;\n    visibility: hidden !important;\n    opacity: 0 !important;\n    pointer-events: none !important;\n  }\n\n  :focus-visible {\n    box-shadow: 0 0 0 2px rgba(27, 127, 204, 0.9);\n  }\n\n  .dialog {\n    position: relative;\n    box-sizing: border-box;\n    background: var(--media-dialog-background, none);\n    padding: var(--media-dialog-padding, 10px);\n    width: min(320px, 100%);\n    word-wrap: break-word;\n    max-height: 100%;\n    overflow: auto;\n    text-align: center;\n    line-height: 1.4;\n  }\n`;\nvar At3 = T2.createElement(\"template\");\nAt3.innerHTML = `\n  <style>\n    ${Tt3}\n  </style>\n\n  <div class=\"dialog\">\n    <slot></slot>\n  </div>\n`;\nvar D2 = class extends c2.HTMLElement {\n  constructor() {\n    var e;\n    super();\n    this.attachShadow({ mode: \"open\" }), (e = this.shadowRoot) == null || e.appendChild(this.constructor.template.content.cloneNode(true));\n  }\n  show() {\n    this.setAttribute(\"open\", \"\"), this.dispatchEvent(new CustomEvent(\"open\", { composed: true, bubbles: true })), kt3(this);\n  }\n  close() {\n    this.hasAttribute(\"open\") && (this.removeAttribute(\"open\"), this.dispatchEvent(new CustomEvent(\"close\", { composed: true, bubbles: true })), ta(this));\n  }\n  attributeChangedCallback(e, a2, r10) {\n    e === \"open\" && a2 !== r10 && (r10 != null ? this.show() : this.close());\n  }\n  connectedCallback() {\n    this.hasAttribute(\"role\") || this.setAttribute(\"role\", \"dialog\"), this.hasAttribute(\"open\") && kt3(this);\n  }\n};\nD2.styles = Tt3, D2.template = At3, D2.observedAttributes = [\"open\"];\nfunction kt3(t2) {\n  let i2 = new CustomEvent(\"initfocus\", { composed: true, bubbles: true, cancelable: true });\n  if (t2.dispatchEvent(i2), i2.defaultPrevented) return;\n  let e = t2.querySelector(\"[autofocus]:not([disabled])\");\n  !e && t2.tabIndex >= 0 && (e = t2), e || (e = Ct3(t2.shadowRoot)), t2._previouslyFocusedElement = T2.activeElement, T2.activeElement instanceof HTMLElement && T2.activeElement.blur(), t2.addEventListener(\"transitionend\", () => {\n    e instanceof HTMLElement && e.focus({ preventScroll: true });\n  }, { once: true });\n}\nfunction Ct3(t2) {\n  let e = [\"button\", \"input\", \"keygen\", \"select\", \"textarea\"].map(function(r10) {\n    return r10 + \":not([disabled])\";\n  });\n  e.push('[tabindex]:not([disabled]):not([tabindex=\"\"])');\n  let a2 = t2 == null ? void 0 : t2.querySelector(e.join(\", \"));\n  if (!a2 && \"attachShadow\" in Element.prototype) {\n    let r10 = (t2 == null ? void 0 : t2.querySelectorAll(\"*\")) || [];\n    for (let o = 0; o < r10.length && !(r10[o].tagName && r10[o].shadowRoot && (a2 = Ct3(r10[o].shadowRoot), a2)); o++) ;\n  }\n  return a2;\n}\nfunction ta(t2) {\n  t2._previouslyFocusedElement instanceof HTMLElement && t2._previouslyFocusedElement.focus();\n}\nc2.customElements.get(\"media-dialog\") || (c2.customElements.define(\"media-dialog\", D2), c2.MediaDialog = D2);\nvar Ie3 = D2;\nvar xt2 = T2.createElement(\"template\");\nxt2.innerHTML = `\n  <style>\n    ${Ie3.styles}\n\n    .close {\n      background: none;\n      color: inherit;\n      border: none;\n      padding: 0;\n      font: inherit;\n      cursor: pointer;\n      outline: inherit;\n      width: 28px;\n      height: 28px;\n      position: absolute;\n      top: 1rem;\n      right: 1rem;\n    }\n  </style>\n\n  <div class=\"dialog\">\n    <slot></slot>\n  </div>\n\n  <slot name=\"close\">\n    <button class=\"close\" tabindex=\"0\">\n      <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n      </svg>\n    </button>\n  </slot>\n`;\nvar te4 = class extends Ie3 {\n  constructor() {\n    var i2, e;\n    super(), (e = (i2 = this.shadowRoot) == null ? void 0 : i2.querySelector(\".close\")) == null || e.addEventListener(\"click\", () => {\n      this.close();\n    });\n  }\n};\nte4.template = xt2;\nc2.customElements.get(\"mxp-dialog\") || (c2.customElements.define(\"mxp-dialog\", te4), c2.MxpDialog = te4);\nvar ae3 = /* @__PURE__ */ new WeakMap();\nvar Ve3 = class t {\n  constructor(i2, e) {\n    this.element = i2;\n    this.type = e;\n    this.element.addEventListener(this.type, this);\n    let a2 = ae3.get(this.element);\n    a2 && a2.set(this.type, this);\n  }\n  set(i2) {\n    if (typeof i2 == \"function\") this.handleEvent = i2.bind(this.element);\n    else if (typeof i2 == \"object\" && typeof i2.handleEvent == \"function\") this.handleEvent = i2.handleEvent.bind(i2);\n    else {\n      this.element.removeEventListener(this.type, this);\n      let e = ae3.get(this.element);\n      e && e.delete(this.type);\n    }\n  }\n  static for(i2) {\n    ae3.has(i2.element) || ae3.set(i2.element, /* @__PURE__ */ new Map());\n    let e = i2.attributeName.slice(2), a2 = ae3.get(i2.element);\n    return a2 && a2.has(e) ? a2.get(e) : new t(i2.element, e);\n  }\n};\nfunction ia(t2, i2) {\n  return t2 instanceof AttrPart && t2.attributeName.startsWith(\"on\") ? (Ve3.for(t2).set(i2), t2.element.removeAttributeNS(t2.attributeNamespace, t2.attributeName), true) : false;\n}\nfunction ra(t2, i2) {\n  return i2 instanceof ce4 && t2 instanceof ChildNodePart ? (i2.renderInto(t2), true) : false;\n}\nfunction oa(t2, i2) {\n  return i2 instanceof DocumentFragment && t2 instanceof ChildNodePart ? (i2.childNodes.length && t2.replace(...i2.childNodes), true) : false;\n}\nfunction na(t2, i2) {\n  if (t2 instanceof AttrPart) {\n    let e = t2.attributeNamespace, a2 = t2.element.getAttributeNS(e, t2.attributeName);\n    return String(i2) !== a2 && (t2.value = String(i2)), true;\n  }\n  return t2.value = String(i2), true;\n}\nfunction sa(t2, i2) {\n  if (t2 instanceof AttrPart && i2 instanceof Element) {\n    let e = t2.element;\n    return e[t2.attributeName] !== i2 && (t2.element.removeAttributeNS(t2.attributeNamespace, t2.attributeName), e[t2.attributeName] = i2), true;\n  }\n  return false;\n}\nfunction da(t2, i2) {\n  if (typeof i2 == \"boolean\" && t2 instanceof AttrPart) {\n    let e = t2.attributeNamespace, a2 = t2.element.hasAttributeNS(e, t2.attributeName);\n    return i2 !== a2 && (t2.booleanValue = i2), true;\n  }\n  return false;\n}\nfunction la(t2, i2) {\n  return i2 === false && t2 instanceof ChildNodePart ? (t2.replace(\"\"), true) : false;\n}\nfunction ma(t2, i2) {\n  sa(t2, i2) || da(t2, i2) || ia(t2, i2) || la(t2, i2) || ra(t2, i2) || oa(t2, i2) || na(t2, i2);\n}\nvar De4 = /* @__PURE__ */ new Map();\nvar Lt3 = /* @__PURE__ */ new WeakMap();\nvar Rt3 = /* @__PURE__ */ new WeakMap();\nvar ce4 = class {\n  constructor(i2, e, a2) {\n    this.strings = i2;\n    this.values = e;\n    this.processor = a2;\n    this.stringsKey = this.strings.join(\"\u0001\");\n  }\n  get template() {\n    if (De4.has(this.stringsKey)) return De4.get(this.stringsKey);\n    {\n      let i2 = T2.createElement(\"template\"), e = this.strings.length - 1;\n      return i2.innerHTML = this.strings.reduce((a2, r10, o) => a2 + r10 + (o < e ? `{{ ${o} }}` : \"\"), \"\"), De4.set(this.stringsKey, i2), i2;\n    }\n  }\n  renderInto(i2) {\n    var r10;\n    let e = this.template;\n    if (Lt3.get(i2) !== e) {\n      Lt3.set(i2, e);\n      let o = new TemplateInstance(e, this.values, this.processor);\n      Rt3.set(i2, o), i2 instanceof ChildNodePart ? i2.replace(...o.children) : i2.appendChild(o);\n      return;\n    }\n    let a2 = Rt3.get(i2);\n    (r10 = a2 == null ? void 0 : a2.update) == null || r10.call(a2, this.values);\n  }\n};\nvar ua = { processCallback(t2, i2, e) {\n  var a2;\n  if (e) {\n    for (let [r10, o] of i2) if (r10 in e) {\n      let s = (a2 = e[r10]) != null ? a2 : \"\";\n      ma(o, s);\n    }\n  }\n} };\nfunction S3(t2, ...i2) {\n  return new ce4(t2, i2, ua);\n}\nfunction wt2(t2, i2) {\n  t2.renderInto(i2);\n}\nvar pa = (t2) => {\n  let { tokens: i2 } = t2;\n  return i2.drm ? \":host { --_cast-button-drm-display: none; }\" : \"\";\n};\nvar St2 = (t2) => S3`\n  <style>\n    ${pa(t2)}\n    ${Et3}\n  </style>\n  ${fa(t2)}\n`;\nvar ba = (t2) => {\n  let i2 = t2.hotKeys ? `${t2.hotKeys}` : \"\";\n  return Q3(t2.streamType) === \"live\" && (i2 += \" noarrowleft noarrowright\"), i2;\n};\nvar ha = { TOP: \"top\", CENTER: \"center\", BOTTOM: \"bottom\", LAYER: \"layer\", MEDIA_LAYER: \"media-layer\", POSTER_LAYER: \"poster-layer\", VERTICAL_LAYER: \"vertical-layer\", CENTERED_LAYER: \"centered-layer\", GESTURE_LAYER: \"gesture-layer\", CONTROLLER_LAYER: \"controller\", BUTTON: \"button\", RANGE: \"range\", DISPLAY: \"display\", CONTROL_BAR: \"control-bar\", SELECTMENU: \"selectmenu\", LISTBOX: \"listbox\", OPTION: \"option\", POSTER: \"poster\", LIVE: \"live\", PLAY: \"play\", PRE_PLAY: \"pre-play\", SEEK_BACKWARD: \"seek-backward\", SEEK_FORWARD: \"seek-forward\", MUTE: \"mute\", CAPTIONS: \"captions\", AIRPLAY: \"airplay\", PIP: \"pip\", FULLSCREEN: \"fullscreen\", CAST: \"cast\", PLAYBACK_RATE: \"playback-rate\", VOLUME: \"volume\", TIME: \"time\", TITLE: \"title\", AUDIO_TRACK: \"audio-track\", RENDITION: \"rendition\" };\nvar ga = Object.values(ha).join(\", \");\nvar fa = (t2) => {\n  var i2, e, a2, r10, o, s, l, h3, R2, k3, v4, f, C3, P2, g2, B5, q3, z2, $e4, Fe3, Ye4, We4, Ze3, Ge3, je4, qe4, ze4, Xe4, Je4, Qe4, et3, tt4, at4, it2, rt3, ot4, nt4, st4;\n  return S3`\n  <media-theme\n    template=\"${t2.themeTemplate || false}\"\n    defaultstreamtype=\"${(i2 = t2.defaultStreamType) != null ? i2 : false}\"\n    hotkeys=\"${ba(t2) || false}\"\n    nohotkeys=\"${t2.noHotKeys || !t2.hasSrc || t2.isDialogOpen || false}\"\n    noautoseektolive=\"${!!((e = t2.streamType) != null && e.includes(g.LIVE)) && t2.targetLiveWindow !== 0}\"\n    novolumepref=\"${t2.novolumepref || false}\"\n    disabled=\"${!t2.hasSrc || t2.isDialogOpen}\"\n    audio=\"${(a2 = t2.audio) != null ? a2 : false}\"\n    style=\"${(r10 = ut3({ \"--media-primary-color\": t2.primaryColor, \"--media-secondary-color\": t2.secondaryColor, \"--media-accent-color\": t2.accentColor })) != null ? r10 : false}\"\n    defaultsubtitles=\"${!t2.defaultHiddenCaptions}\"\n    forwardseekoffset=\"${(o = t2.forwardSeekOffset) != null ? o : false}\"\n    backwardseekoffset=\"${(s = t2.backwardSeekOffset) != null ? s : false}\"\n    playbackrates=\"${(l = t2.playbackRates) != null ? l : false}\"\n    defaultshowremainingtime=\"${(h3 = t2.defaultShowRemainingTime) != null ? h3 : false}\"\n    defaultduration=\"${(R2 = t2.defaultDuration) != null ? R2 : false}\"\n    hideduration=\"${(k3 = t2.hideDuration) != null ? k3 : false}\"\n    title=\"${(v4 = t2.title) != null ? v4 : false}\"\n    exportparts=\"${ga}\"\n  >\n    <mux-video\n      slot=\"media\"\n      target-live-window=\"${(f = t2.targetLiveWindow) != null ? f : false}\"\n      stream-type=\"${(C3 = Q3(t2.streamType)) != null ? C3 : false}\"\n      crossorigin=\"${(P2 = t2.crossOrigin) != null ? P2 : \"\"}\"\n      playsinline\n      autoplay=\"${(g2 = t2.autoplay) != null ? g2 : false}\"\n      muted=\"${(B5 = t2.muted) != null ? B5 : false}\"\n      loop=\"${(q3 = t2.loop) != null ? q3 : false}\"\n      preload=\"${(z2 = t2.preload) != null ? z2 : false}\"\n      debug=\"${($e4 = t2.debug) != null ? $e4 : false}\"\n      prefer-cmcd=\"${(Fe3 = t2.preferCmcd) != null ? Fe3 : false}\"\n      disable-tracking=\"${(Ye4 = t2.disableTracking) != null ? Ye4 : false}\"\n      disable-cookies=\"${(We4 = t2.disableCookies) != null ? We4 : false}\"\n      prefer-playback=\"${(Ze3 = t2.preferPlayback) != null ? Ze3 : false}\"\n      start-time=\"${t2.startTime != null ? t2.startTime : false}\"\n      beacon-collection-domain=\"${(Ge3 = t2.beaconCollectionDomain) != null ? Ge3 : false}\"\n      player-software-name=\"${(je4 = t2.playerSoftwareName) != null ? je4 : false}\"\n      player-software-version=\"${(qe4 = t2.playerSoftwareVersion) != null ? qe4 : false}\"\n      env-key=\"${(ze4 = t2.envKey) != null ? ze4 : false}\"\n      custom-domain=\"${(Xe4 = t2.customDomain) != null ? Xe4 : false}\"\n      src=\"${t2.src ? t2.src : t2.playbackId ? Gt2(t2) : false}\"\n      cast-src=\"${t2.src ? t2.src : t2.playbackId ? Gt2(t2) : false}\"\n      drm-token=\"${(Qe4 = (Je4 = t2.tokens) == null ? void 0 : Je4.drm) != null ? Qe4 : false}\"\n      exportparts=\"video\"\n    >\n      ${t2.storyboard ? S3`<track label=\"thumbnails\" default kind=\"metadata\" src=\"${t2.storyboard}\" />` : S3``}\n    </mux-video>\n    <slot name=\"poster\" slot=\"poster\">\n      <media-poster-image\n        part=\"poster\"\n        exportparts=\"poster, img\"\n        src=\"${t2.poster === \"\" ? false : (et3 = t2.poster) != null ? et3 : false}\"\n        placeholdersrc=\"${(tt4 = t2.placeholder) != null ? tt4 : false}\"\n      ></media-poster-image>\n    </slot>\n    <mxp-dialog\n      no-auto-hide\n      open=\"${(at4 = t2.isDialogOpen) != null ? at4 : false}\"\n      onclose=\"${t2.onCloseErrorDialog}\"\n      oninitfocus=\"${t2.onInitFocusDialog}\"\n    >\n      ${(it2 = t2.dialog) != null && it2.title ? S3`<h3>${t2.dialog.title}</h3>` : S3``}\n      <p>\n        ${(rt3 = t2.dialog) == null ? void 0 : rt3.message}\n        ${(ot4 = t2.dialog) != null && ot4.linkUrl ? S3`<a\n              href=\"${t2.dialog.linkUrl}\"\n              target=\"_blank\"\n              rel=\"external noopener\"\n              aria-label=\"${(nt4 = t2.dialog.linkText) != null ? nt4 : \"\"} ${m(\"(opens in a new window)\")}\"\n              >${(st4 = t2.dialog.linkText) != null ? st4 : t2.dialog.linkUrl}</a\n            >` : S3``}\n      </p>\n    </mxp-dialog>\n  </media-theme>\n`;\n};\nfunction ge3(t2, i2, e, a2, r10) {\n  var l, h3, R2;\n  let o = {}, s = {};\n  switch (t2.code) {\n    case x.MEDIA_ERR_NETWORK: {\n      switch (o.title = m(\"Network Error\", r10), o.message = t2.message, (l = t2.data) == null ? void 0 : l.response.code) {\n        case 412: {\n          o.title = m(\"Video is not currently available\", r10), o.message = m(\"The live stream or video file are not yet ready.\", r10), s.message = m(\"This playback-id may belong to a live stream that is not currently active or an asset that is not ready.\", r10), s.file = \"412-not-playable.md\";\n          break;\n        }\n        case 404: {\n          o.title = m(\"Video does not exist\", r10), o.message = \"\", s.message = m(\"This playback-id does not exist. You may have used an Asset ID or an ID from a different resource.\", r10), s.file = \"404-not-found.md\";\n          break;\n        }\n        case 403: {\n          if (o.title = m(\"Invalid playback URL\", r10), o.message = m(\"The video URL or playback-token are formatted with incorrect or incomplete information.\", r10), s.message = m(\"403 error trying to access this playback URL. If this is a signed URL, you might need to provide a playback-token.\", r10), s.file = \"missing-signed-tokens.md\", !a2) break;\n          let { exp: k3, aud: v4, sub: f } = N2(a2), C3 = Date.now() > k3 * 1e3, P2 = f !== e, g2 = v4 !== \"v\", B5 = { timeStyle: \"medium\", dateStyle: \"medium\" };\n          if (C3) {\n            o.title = m(\"Video URL has expired\", r10), o.message = m(\"The video\\u2019s secured playback-token has expired.\", r10), s.message = m(\"The video\\u2019s secured playback-token has expired.\", r10), s.context = m(\"Expired at: {expiredDate}. Current time: {currentDate}.\", r10).format({ expiredDate: new Intl.DateTimeFormat(U3.code, B5).format(k3 * 1e3), currentDate: new Intl.DateTimeFormat(U3.code, B5).format(Date.now()) }), s.file = \"403-expired-token.md\";\n            break;\n          }\n          if (P2) {\n            o.title = m(\"Video URL is formatted incorrectly\", r10), o.message = m(\"The video\\u2019s playback ID does not match the one encoded in the playback-token.\", r10), s.message = m(\"The video\\u2019s playback ID does not match the one encoded in the playback-token.\", r10), s.context = m(\"Specified playback ID: {playbackId} and the playback ID encoded in the playback-token: {tokenPlaybackId}\", r10).format({ playbackId: e, tokenPlaybackId: f }), s.file = \"403-playback-id-mismatch.md\";\n            break;\n          }\n          if (g2) {\n            o.title = m(\"Video URL is formatted incorrectly\", r10), o.message = m(\"The playback-token is formatted with incorrect information.\", r10), s.message = m(\"The playback-token is formatted with incorrect information.\", r10), s.context = m(\"The playback-token has an incorrect aud value: {tokenType}. aud value should be v.\", r10).format({ tokenType: v4 }), s.file = \"403-incorrect-aud-value.md\";\n            break;\n          }\n          s.message = m(\"403 error trying to access this playback URL. If this is a signed playback ID, the token might not have been generated correctly.\", r10), s.file = \"403-malformatted-token.md\";\n          break;\n        }\n      }\n      break;\n    }\n    case x.MEDIA_ERR_DECODE: {\n      let { message: k3 } = t2;\n      o = { title: m(\"Media Error\", r10), message: k3 }, s.file = \"media-decode-error.md\";\n      break;\n    }\n    case x.MEDIA_ERR_SRC_NOT_SUPPORTED: {\n      let k3 = (R2 = (h3 = t2.data) == null ? void 0 : h3.response) == null ? void 0 : R2.code;\n      if (k3 >= 400 && k3 < 500) {\n        t2.code = x.MEDIA_ERR_NETWORK, t2.data = { response: { code: k3 } }, { dialog: o, devlog: s } = ge3(t2, i2, e, a2);\n        break;\n      }\n      o = { title: m(\"Source Not Supported\", r10), message: t2.message }, s.file = \"media-src-not-supported.md\";\n      break;\n    }\n    default:\n      o = { title: m(\"Error\", r10), message: t2.message };\n      break;\n  }\n  return i2 && (o = { title: m(\"Your device appears to be offline\", r10), message: m(\"Check your internet connection and try reloading this video.\", r10) }), { dialog: o, devlog: s };\n}\nvar Mt2 = `<template id=\"media-theme-gerwig\">\n  <style>\n    @keyframes pre-play-hide {\n      0% {\n        transform: scale(1);\n        opacity: 1;\n      }\n\n      30% {\n        transform: scale(0.7);\n      }\n\n      100% {\n        transform: scale(1.5);\n        opacity: 0;\n      }\n    }\n\n    :host {\n      --_primary-color: var(--media-primary-color, #fff);\n      --_secondary-color: var(--media-secondary-color, transparent);\n      --_accent-color: var(--media-accent-color, #fa50b5);\n      --_text-color: var(--media-text-color, #000);\n\n      --media-icon-color: var(--_primary-color);\n      --media-control-background: var(--_secondary-color);\n      --media-control-hover-background: var(--_accent-color);\n      --media-time-buffered-color: rgba(255, 255, 255, 0.4);\n      --media-preview-time-text-shadow: none;\n      --media-control-height: 14px;\n      --media-control-padding: 6px;\n\n      color: var(--_primary-color);\n      display: inline-block;\n      width: 100%;\n      height: 100%;\n    }\n\n    :host([audio]) {\n      --_secondary-color: var(--media-secondary-color, black);\n      --media-preview-time-text-shadow: none;\n    }\n\n    :host([audio]) ::slotted([slot='media']) {\n      height: 0px;\n    }\n\n    :host([audio]) media-loading-indicator {\n      display: none;\n    }\n\n    :host([audio]) media-controller {\n      background: transparent;\n    }\n\n    :host([audio]) media-controller::part(vertical-layer) {\n      background: transparent;\n    }\n\n    :host([audio]) media-control-bar {\n      width: 100%;\n      background-color: var(--media-control-background);\n    }\n\n    /*\n     * 0.433s is the transition duration for VTT Regions.\n     * Borrowed here, so the captions don't move too fast.\n     */\n    media-controller {\n      --media-webkit-text-track-transform: translateY(0) scale(0.98);\n      --media-webkit-text-track-transition: transform 0.433s ease-out 0.3s;\n    }\n    media-controller:is([mediapaused], :not([userinactive])) {\n      --media-webkit-text-track-transform: translateY(-50px) scale(0.98);\n      --media-webkit-text-track-transition: transform 0.15s ease;\n    }\n\n    /*\n     * CSS specific to iOS devices.\n     * See: https://stackoverflow.com/questions/30102792/css-media-query-to-target-only-ios-devices/60220757#60220757\n     */\n    @supports (-webkit-touch-callout: none) {\n      /* Disable subtitle adjusting for iOS Safari */\n      media-controller[mediaisfullscreen] {\n        --media-webkit-text-track-transform: unset;\n        --media-webkit-text-track-transition: unset;\n      }\n    }\n\n    media-time-range {\n      --media-box-padding-left: 6px;\n      --media-box-padding-right: 6px;\n      --media-range-bar-color: var(--_accent-color);\n      --media-time-range-buffered-color: var(--_primary-color);\n      --media-range-track-color: transparent;\n      --media-range-track-background: rgba(255, 255, 255, 0.4);\n      --media-range-thumb-background: radial-gradient(\n        circle,\n        #000 0%,\n        #000 25%,\n        var(--_accent-color) 25%,\n        var(--_accent-color)\n      );\n      --media-range-thumb-width: 12px;\n      --media-range-thumb-height: 12px;\n      --media-range-thumb-transform: scale(0);\n      --media-range-thumb-transition: transform 0.3s;\n      --media-range-thumb-opacity: 1;\n      --media-preview-background: var(--_primary-color);\n      --media-box-arrow-background: var(--_primary-color);\n      --media-preview-thumbnail-border: 5px solid var(--_primary-color);\n      --media-preview-border-radius: 5px;\n      --media-text-color: var(--_text-color);\n      --media-control-hover-background: transparent;\n      --media-preview-chapter-text-shadow: none;\n      color: var(--_accent-color);\n      padding: 0 6px;\n    }\n\n    :host([audio]) media-time-range {\n      --media-preview-time-padding: 1.5px 6px;\n      --media-preview-box-margin: 0 0 -5px;\n    }\n\n    media-time-range:hover {\n      --media-range-thumb-transform: scale(1);\n    }\n\n    media-preview-thumbnail {\n      border-bottom-width: 0;\n    }\n\n    [part~='listbox'] {\n      border-radius: 2px;\n      border: 1px solid rgba(0, 0, 0, 0.1);\n      bottom: calc(100% + 16px);\n      padding: 2.5px 10px;\n    }\n\n    [part~='listbox']::part(indicator) {\n      fill: var(--_accent-color);\n    }\n\n    [part~='listbox']::part(option) {\n      box-sizing: border-box;\n      display: flex;\n      align-items: center;\n      padding: 6px 10px;\n      min-height: 34px;\n    }\n\n    [part~='listbox']::part(option-selected) {\n      font-weight: 700;\n    }\n\n    media-captions-selectmenu,\n    media-rendition-selectmenu,\n    media-audio-track-selectmenu,\n    media-playback-rate-listbox[part~='listbox'] {\n      --media-listbox-background: var(--_primary-color);\n      --media-option-selected-background: transparent;\n      --media-option-hover-background: transparent;\n      --media-option-hover-outline: var(--_accent-color) solid 1px;\n      --media-text-color: var(--_text-color);\n    }\n\n    /* The icon is a circle so make it 16px high instead of 14px for more balance. */\n    media-audio-track-selectmenu {\n      --media-control-padding: 5px;\n      --media-control-height: 16px;\n    }\n\n    media-playback-rate-button {\n      --media-control-padding: 6px 3px;\n      min-width: 4.4ch;\n    }\n\n    media-playback-rate-listbox[part~='listbox'] {\n      --media-listbox-layout: row;\n      --media-option-selected-background: var(--_accent-color);\n      margin-right: 6px;\n      padding: 0;\n    }\n\n    media-playback-rate-listbox[part~='listbox']::part(option) {\n      padding: 6px 4px;\n    }\n\n    media-playback-rate-listbox[part~='listbox']::part(option-selected) {\n      color: #fff;\n    }\n\n    :host(:not([audio])) media-time-range {\n      /* Adding px is required here for calc() */\n      --media-range-padding: 0px;\n      background: transparent;\n      z-index: 10;\n      height: 10px;\n      bottom: -3px;\n      width: 100%;\n    }\n\n    media-control-bar :is([role='button'], [role='switch'], button) {\n      line-height: 0;\n    }\n\n    media-control-bar :is([part*='button'], [part*='range'], [part*='display']) {\n      border-radius: 3px;\n    }\n\n    .spacer {\n      flex-grow: 1;\n      background-color: var(--media-control-background, rgba(20, 20, 30, 0.7));\n    }\n\n    media-control-bar[slot~='top-chrome'] {\n      min-height: 42px;\n      pointer-events: none;\n    }\n\n    media-control-bar {\n      --gradient-steps: hsl(0 0% 0% / 0) 0%, hsl(0 0% 0% / 0.013) 8.1%, hsl(0 0% 0% / 0.049) 15.5%,\n        hsl(0 0% 0% / 0.104) 22.5%, hsl(0 0% 0% / 0.175) 29%, hsl(0 0% 0% / 0.259) 35.3%, hsl(0 0% 0% / 0.352) 41.2%,\n        hsl(0 0% 0% / 0.45) 47.1%, hsl(0 0% 0% / 0.55) 52.9%, hsl(0 0% 0% / 0.648) 58.8%, hsl(0 0% 0% / 0.741) 64.7%,\n        hsl(0 0% 0% / 0.825) 71%, hsl(0 0% 0% / 0.896) 77.5%, hsl(0 0% 0% / 0.951) 84.5%, hsl(0 0% 0% / 0.987) 91.9%,\n        hsl(0 0% 0%) 100%;\n    }\n\n    :host([title]:not([audio])) media-control-bar[slot='top-chrome']::before {\n      content: '';\n      position: absolute;\n      width: 100%;\n      padding-bottom: min(100px, 25%);\n      background: linear-gradient(to top, var(--gradient-steps));\n      opacity: 0.8;\n      pointer-events: none;\n    }\n\n    :host(:not([audio])) media-control-bar[part~='bottom']::before {\n      content: '';\n      position: absolute;\n      width: 100%;\n      bottom: 0;\n      left: 0;\n      padding-bottom: min(100px, 25%);\n      background: linear-gradient(to bottom, var(--gradient-steps));\n      opacity: 0.8;\n      z-index: 1;\n      pointer-events: none;\n    }\n\n    media-control-bar[part~='bottom'] > * {\n      z-index: 2;\n    }\n\n    media-control-bar[part~='bottom'] {\n      padding: 6px 6px;\n    }\n\n    media-control-bar[slot~='top-chrome'] > * {\n      --media-control-background: transparent;\n      --media-control-hover-background: transparent;\n      position: relative;\n    }\n\n    media-controller::part(vertical-layer) {\n      transition: background-color 1s;\n    }\n\n    media-controller:is([mediapaused], :not([userinactive]))::part(vertical-layer) {\n      background-color: var(--controls-backdrop-color, var(--controls, transparent));\n      transition: background-color 0.25s;\n    }\n\n    .center-controls {\n      --media-button-icon-width: 100%;\n      --media-button-icon-height: auto;\n      pointer-events: none;\n      width: 100%;\n      display: flex;\n      flex-flow: row;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 0 2px rgb(0 0 0 / 0.25)) drop-shadow(0 0 6px rgb(0 0 0 / 0.25));\n      paint-order: stroke;\n      stroke: rgba(102, 102, 102, 1);\n      stroke-width: 0.3px;\n      text-shadow:\n        0 0 2px rgb(0 0 0 / 0.25),\n        0 0 6px rgb(0 0 0 / 0.25);\n    }\n\n    .center-controls media-play-button {\n      --media-control-background: transparent;\n      --media-control-hover-background: transparent;\n      --media-control-padding: 0;\n      width: 40px;\n    }\n\n    [breakpointsm] .center-controls media-play-button {\n      width: 90px;\n      height: 90px;\n      border-radius: 50%;\n      transition: background 0.4s;\n      padding: 24px;\n      --media-control-background: #000;\n      --media-control-hover-background: var(--_accent-color);\n    }\n\n    .center-controls media-seek-backward-button,\n    .center-controls media-seek-forward-button {\n      --media-control-background: transparent;\n      --media-control-hover-background: transparent;\n      padding: 0;\n      margin: 0 20px;\n      width: max(33px, min(8%, 40px));\n    }\n\n    [breakpointsm]:not([audio]) .center-controls.pre-playback {\n      display: grid;\n      align-items: initial;\n      justify-content: initial;\n      height: 100%;\n      overflow: hidden;\n    }\n\n    [breakpointsm]:not([audio]) .center-controls.pre-playback media-play-button {\n      place-self: var(--_pre-playback-place, center);\n      grid-area: 1 / 1;\n      margin: 16px;\n    }\n\n    /* Show and hide controls or pre-playback state */\n\n    [breakpointsm]:is([mediahasplayed], :not([mediapaused])):not([audio])\n      .center-controls.pre-playback\n      media-play-button {\n      /* Using \\`forwards\\` would lead to a laggy UI after the animation got in the end state */\n      animation: 0.3s linear pre-play-hide;\n      opacity: 0;\n      pointer-events: none;\n    }\n\n    .autoplay-unmute {\n      --media-control-hover-background: transparent;\n      width: 100%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 0 2px rgb(0 0 0 / 0.25)) drop-shadow(0 0 6px rgb(0 0 0 / 0.25));\n    }\n\n    .autoplay-unmute-btn {\n      --media-control-height: 16px;\n      border-radius: 8px;\n      background: #000;\n      color: var(--_primary-color);\n      display: flex;\n      align-items: center;\n      padding: 8px 16px;\n      font-size: 18px;\n      font-weight: 500;\n      cursor: pointer;\n    }\n\n    .autoplay-unmute-btn:hover {\n      background: var(--_accent-color);\n    }\n\n    [breakpointsm] .autoplay-unmute-btn {\n      --media-control-height: 30px;\n      padding: 14px 24px;\n      font-size: 26px;\n    }\n\n    .autoplay-unmute-btn svg {\n      margin: 0 6px 0 0;\n    }\n\n    [breakpointsm] .autoplay-unmute-btn svg {\n      margin: 0 10px 0 0;\n    }\n\n    media-controller:not([audio]):not([mediahasplayed]) *:is(media-control-bar, media-time-range) {\n      display: none;\n    }\n\n    media-loading-indicator {\n      --media-loading-icon-width: 100%;\n      --media-button-icon-height: auto;\n      display: var(--media-control-display, var(--media-loading-indicator-display, flex));\n      pointer-events: none;\n      position: absolute;\n      width: min(15%, 150px);\n      flex-flow: row;\n      align-items: center;\n      justify-content: center;\n    }\n\n    /* Intentionally don't target the div for transition but the children\n     of the div. Prevents messing with media-chrome's autohide feature. */\n    media-loading-indicator + div * {\n      transition: opacity 0.15s;\n      opacity: 1;\n    }\n\n    media-loading-indicator[medialoading]:not([mediapaused]) ~ div > * {\n      opacity: 0;\n      transition-delay: 400ms;\n    }\n\n    media-volume-range {\n      width: min(100%, 100px);\n      --media-range-padding-left: 10px;\n      --media-range-padding-right: 10px;\n      --media-range-thumb-width: 12px;\n      --media-range-thumb-height: 12px;\n      --media-range-thumb-background: radial-gradient(\n        circle,\n        #000 0%,\n        #000 25%,\n        var(--_primary-color) 25%,\n        var(--_primary-color)\n      );\n      --media-control-hover-background: none;\n    }\n\n    media-time-display {\n      white-space: nowrap;\n    }\n\n    /* Generic style for explicitly disabled controls */\n    media-control-bar[part~='bottom'] [disabled],\n    media-control-bar[part~='bottom'] [aria-disabled='true'] {\n      opacity: 60%;\n      cursor: not-allowed;\n    }\n\n    media-text-display {\n      --media-font-size: 16px;\n      --media-control-padding: 14px;\n      font-weight: 500;\n    }\n\n    media-play-button.animated *:is(g, path) {\n      transition: all 0.3s;\n    }\n\n    media-play-button.animated[mediapaused] .pause-icon-pt1 {\n      opacity: 0;\n    }\n\n    media-play-button.animated[mediapaused] .pause-icon-pt2 {\n      transform-origin: center center;\n      transform: scaleY(0);\n    }\n\n    media-play-button.animated[mediapaused] .play-icon {\n      clip-path: inset(0 0 0 0);\n    }\n\n    media-play-button.animated:not([mediapaused]) .play-icon {\n      clip-path: inset(0 0 0 100%);\n    }\n\n    media-seek-forward-button,\n    media-seek-backward-button {\n      --media-font-weight: 400;\n    }\n\n    .mute-icon {\n      display: inline-block;\n    }\n\n    .mute-icon :is(path, g) {\n      transition: opacity 0.5s;\n    }\n\n    .muted {\n      opacity: 0;\n    }\n\n    media-mute-button[mediavolumelevel='low'] :is(.volume-medium, .volume-high),\n    media-mute-button[mediavolumelevel='medium'] :is(.volume-high) {\n      opacity: 0;\n    }\n\n    media-mute-button[mediavolumelevel='off'] .unmuted {\n      opacity: 0;\n    }\n\n    media-mute-button[mediavolumelevel='off'] .muted {\n      opacity: 1;\n    }\n\n    /**\n     * Our defaults for these buttons are to hide them at small sizes\n     * users can override this with CSS\n     */\n    media-controller:not([breakpointsm]):not([audio]) {\n      --bottom-play-button: none;\n      --bottom-seek-backward-button: none;\n      --bottom-seek-forward-button: none;\n      --bottom-time-display: none;\n      --bottom-playback-rate-selectmenu: none;\n      --bottom-pip-button: none;\n    }\n  </style>\n\n  <template partial=\"TitleDisplay\">\n    <template if=\"title\">\n      <media-text-display part=\"top title display\" class=\"title-display\">{{title}}</media-text-display>\n    </template>\n  </template>\n\n  <template partial=\"PlayButton\">\n    <media-play-button\n      part=\"{{section ?? 'bottom'}} play button\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n      class=\"animated\"\n    >\n      <svg aria-hidden=\"true\" viewBox=\"0 0 18 14\" slot=\"icon\">\n        <g class=\"play-icon\">\n          <path\n            d=\"M15.5987 6.2911L3.45577 0.110898C2.83667 -0.204202 2.06287 0.189698 2.06287 0.819798V13.1802C2.06287 13.8103 2.83667 14.2042 3.45577 13.8891L15.5987 7.7089C16.2178 7.3938 16.2178 6.6061 15.5987 6.2911Z\"\n          />\n        </g>\n        <g class=\"pause-icon\">\n          <path\n            class=\"pause-icon-pt1\"\n            d=\"M5.90709 0H2.96889C2.46857 0 2.06299 0.405585 2.06299 0.9059V13.0941C2.06299 13.5944 2.46857 14 2.96889 14H5.90709C6.4074 14 6.81299 13.5944 6.81299 13.0941V0.9059C6.81299 0.405585 6.4074 0 5.90709 0Z\"\n          />\n          <path\n            class=\"pause-icon-pt2\"\n            d=\"M15.1571 0H12.2189C11.7186 0 11.313 0.405585 11.313 0.9059V13.0941C11.313 13.5944 11.7186 14 12.2189 14H15.1571C15.6574 14 16.063 13.5944 16.063 13.0941V0.9059C16.063 0.405585 15.6574 0 15.1571 0Z\"\n          />\n        </g>\n      </svg>\n    </media-play-button>\n  </template>\n\n  <template partial=\"PrePlayButton\">\n    <media-play-button\n      part=\"{{section ?? 'center'}} play button pre-play\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    >\n      <svg aria-hidden=\"true\" viewBox=\"0 0 18 14\" slot=\"icon\" style=\"transform: translate(3px, 0)\">\n        <path\n          d=\"M15.5987 6.2911L3.45577 0.110898C2.83667 -0.204202 2.06287 0.189698 2.06287 0.819798V13.1802C2.06287 13.8103 2.83667 14.2042 3.45577 13.8891L15.5987 7.7089C16.2178 7.3938 16.2178 6.6061 15.5987 6.2911Z\"\n        />\n      </svg>\n    </media-play-button>\n  </template>\n\n  <template partial=\"SeekBackwardButton\">\n    <media-seek-backward-button\n      seekoffset=\"{{backwardseekoffset}}\"\n      part=\"{{section ?? 'bottom'}} seek-backward button\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    >\n      <svg viewBox=\"0 0 22 14\" aria-hidden=\"true\" slot=\"icon\">\n        <path\n          d=\"M3.65 2.07888L0.0864 6.7279C-0.0288 6.87812 -0.0288 7.12188 0.0864 7.2721L3.65 11.9211C3.7792 12.0896 4 11.9703 4 11.7321V2.26787C4 2.02968 3.7792 1.9104 3.65 2.07888Z\"\n        />\n        <text transform=\"translate(6 12)\" style=\"font-size: 14px; font-family: 'ArialMT', 'Arial'\">\n          {{backwardseekoffset}}\n        </text>\n      </svg>\n    </media-seek-backward-button>\n  </template>\n\n  <template partial=\"SeekForwardButton\">\n    <media-seek-forward-button\n      seekoffset=\"{{forwardseekoffset}}\"\n      part=\"{{section ?? 'bottom'}} seek-forward button\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    >\n      <svg viewBox=\"0 0 22 14\" aria-hidden=\"true\" slot=\"icon\">\n        <g>\n          <text transform=\"translate(-1 12)\" style=\"font-size: 14px; font-family: 'ArialMT', 'Arial'\">\n            {{forwardseekoffset}}\n          </text>\n          <path\n            d=\"M18.35 11.9211L21.9136 7.2721C22.0288 7.12188 22.0288 6.87812 21.9136 6.7279L18.35 2.07888C18.2208 1.91041 18 2.02968 18 2.26787V11.7321C18 11.9703 18.2208 12.0896 18.35 11.9211Z\"\n          />\n        </g>\n      </svg>\n    </media-seek-forward-button>\n  </template>\n\n  <template partial=\"MuteButton\">\n    <media-mute-button part=\"bottom mute button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <svg viewBox=\"0 0 18 14\" slot=\"icon\" class=\"mute-icon\" aria-hidden=\"true\">\n        <g class=\"unmuted\">\n          <path\n            d=\"M6.76786 1.21233L3.98606 3.98924H1.19937C0.593146 3.98924 0.101743 4.51375 0.101743 5.1607V6.96412L0 6.99998L0.101743 7.03583V8.83926C0.101743 9.48633 0.593146 10.0108 1.19937 10.0108H3.98606L6.76773 12.7877C7.23561 13.2547 8 12.9007 8 12.2171V1.78301C8 1.09925 7.23574 0.745258 6.76786 1.21233Z\"\n          />\n          <path\n            class=\"volume-low\"\n            d=\"M10 3.54781C10.7452 4.55141 11.1393 5.74511 11.1393 6.99991C11.1393 8.25471 10.7453 9.44791 10 10.4515L10.7988 11.0496C11.6734 9.87201 12.1356 8.47161 12.1356 6.99991C12.1356 5.52821 11.6735 4.12731 10.7988 2.94971L10 3.54781Z\"\n          />\n          <path\n            class=\"volume-medium\"\n            d=\"M12.3778 2.40086C13.2709 3.76756 13.7428 5.35806 13.7428 7.00026C13.7428 8.64246 13.2709 10.233 12.3778 11.5992L13.2106 12.1484C14.2107 10.6185 14.739 8.83796 14.739 7.00016C14.739 5.16236 14.2107 3.38236 13.2106 1.85156L12.3778 2.40086Z\"\n          />\n          <path\n            class=\"volume-high\"\n            d=\"M15.5981 0.75L14.7478 1.2719C15.7937 2.9919 16.3468 4.9723 16.3468 7C16.3468 9.0277 15.7937 11.0082 14.7478 12.7281L15.5981 13.25C16.7398 11.3722 17.343 9.211 17.343 7C17.343 4.789 16.7398 2.6268 15.5981 0.75Z\"\n          />\n        </g>\n        <g class=\"muted\">\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M4.39976 4.98924H1.19937C1.19429 4.98924 1.17777 4.98961 1.15296 5.01609C1.1271 5.04369 1.10174 5.09245 1.10174 5.1607V8.83926C1.10174 8.90761 1.12714 8.95641 1.15299 8.984C1.17779 9.01047 1.1943 9.01084 1.19937 9.01084H4.39977L7 11.6066V2.39357L4.39976 4.98924ZM7.47434 1.92006C7.4743 1.9201 7.47439 1.92002 7.47434 1.92006V1.92006ZM6.76773 12.7877L3.98606 10.0108H1.19937C0.593146 10.0108 0.101743 9.48633 0.101743 8.83926V7.03583L0 6.99998L0.101743 6.96412V5.1607C0.101743 4.51375 0.593146 3.98924 1.19937 3.98924H3.98606L6.76786 1.21233C7.23574 0.745258 8 1.09925 8 1.78301V12.2171C8 12.9007 7.23561 13.2547 6.76773 12.7877Z\"\n          />\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M15.2677 9.30323C15.463 9.49849 15.7796 9.49849 15.9749 9.30323C16.1701 9.10796 16.1701 8.79138 15.9749 8.59612L14.2071 6.82841L15.9749 5.06066C16.1702 4.8654 16.1702 4.54882 15.9749 4.35355C15.7796 4.15829 15.4631 4.15829 15.2678 4.35355L13.5 6.1213L11.7322 4.35348C11.537 4.15822 11.2204 4.15822 11.0251 4.35348C10.8298 4.54874 10.8298 4.86532 11.0251 5.06058L12.7929 6.82841L11.0251 8.59619C10.8299 8.79146 10.8299 9.10804 11.0251 9.3033C11.2204 9.49856 11.537 9.49856 11.7323 9.3033L13.5 7.53552L15.2677 9.30323Z\"\n          />\n        </g>\n      </svg>\n    </media-mute-button>\n  </template>\n\n  <template partial=\"PipButton\">\n    <media-pip-button part=\"bottom pip button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"icon\">\n        <path\n          d=\"M15.9891 0H2.011C0.9004 0 0 0.9003 0 2.0109V11.989C0 13.0996 0.9004 14 2.011 14H15.9891C17.0997 14 18 13.0997 18 11.9891V2.0109C18 0.9003 17.0997 0 15.9891 0ZM17 11.9891C17 12.5465 16.5465 13 15.9891 13H2.011C1.4536 13 1.0001 12.5465 1.0001 11.9891V2.0109C1.0001 1.4535 1.4536 0.9999 2.011 0.9999H15.9891C16.5465 0.9999 17 1.4535 17 2.0109V11.9891Z\"\n        />\n        <path\n          d=\"M15.356 5.67822H8.19523C8.03253 5.67822 7.90063 5.81012 7.90063 5.97282V11.3836C7.90063 11.5463 8.03253 11.6782 8.19523 11.6782H15.356C15.5187 11.6782 15.6506 11.5463 15.6506 11.3836V5.97282C15.6506 5.81012 15.5187 5.67822 15.356 5.67822Z\"\n        />\n      </svg>\n    </media-pip-button>\n  </template>\n\n  <template partial=\"CaptionsMenuButton\">\n    <media-captions-selectmenu part=\"bottom captions selectmenu\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <media-captions-button\n        slot=\"button\"\n        part=\"bottom captions button\"\n        disabled=\"{{disabled}}\"\n        aria-disabled=\"{{disabled}}\"\n      >\n        <svg aria-hidden=\"true\" viewBox=\"0 0 18 14\" slot=\"on\">\n          <path\n            d=\"M15.989 0H2.011C0.9004 0 0 0.9003 0 2.0109V11.9891C0 13.0997 0.9004 14 2.011 14H15.989C17.0997 14 18 13.0997 18 11.9891V2.0109C18 0.9003 17.0997 0 15.989 0ZM4.2292 8.7639C4.5954 9.1902 5.0935 9.4031 5.7233 9.4031C6.1852 9.4031 6.5544 9.301 6.8302 9.0969C7.1061 8.8933 7.2863 8.614 7.3702 8.26H8.4322C8.3062 8.884 8.0093 9.3733 7.5411 9.7273C7.0733 10.0813 6.4703 10.2581 5.732 10.2581C5.108 10.2581 4.5699 10.1219 4.1168 9.8489C3.6637 9.5759 3.3141 9.1946 3.0685 8.7058C2.8224 8.2165 2.6994 7.6511 2.6994 7.009C2.6994 6.3611 2.8224 5.7927 3.0685 5.3034C3.3141 4.8146 3.6637 4.4323 4.1168 4.1559C4.5699 3.88 5.108 3.7418 5.732 3.7418C6.4703 3.7418 7.0733 3.922 7.5411 4.2818C8.0094 4.6422 8.3062 5.1461 8.4322 5.794H7.3702C7.2862 5.4283 7.106 5.1368 6.8302 4.921C6.5544 4.7052 6.1852 4.5968 5.7233 4.5968C5.0934 4.5968 4.5954 4.8116 4.2292 5.2404C3.8635 5.6696 3.6804 6.259 3.6804 7.009C3.6804 7.7531 3.8635 8.3381 4.2292 8.7639ZM11.0974 8.7639C11.4636 9.1902 11.9617 9.4031 12.5915 9.4031C13.0534 9.4031 13.4226 9.301 13.6984 9.0969C13.9743 8.8933 14.1545 8.614 14.2384 8.26H15.3004C15.1744 8.884 14.8775 9.3733 14.4093 9.7273C13.9415 10.0813 13.3385 10.2581 12.6002 10.2581C11.9762 10.2581 11.4381 10.1219 10.985 9.8489C10.5319 9.5759 10.1823 9.1946 9.9367 8.7058C9.6906 8.2165 9.5676 7.6511 9.5676 7.009C9.5676 6.3611 9.6906 5.7927 9.9367 5.3034C10.1823 4.8146 10.5319 4.4323 10.985 4.1559C11.4381 3.88 11.9762 3.7418 12.6002 3.7418C13.3385 3.7418 13.9415 3.922 14.4093 4.2818C14.8776 4.6422 15.1744 5.1461 15.3004 5.794H14.2384C14.1544 5.4283 13.9742 5.1368 13.6984 4.921C13.4226 4.7052 13.0534 4.5968 12.5915 4.5968C11.9616 4.5968 11.4636 4.8116 11.0974 5.2404C10.7317 5.6696 10.5486 6.259 10.5486 7.009C10.5486 7.7531 10.7317 8.3381 11.0974 8.7639Z\"\n          />\n        </svg>\n        <svg aria-hidden=\"true\" viewBox=\"0 0 18 14\" slot=\"off\">\n          <path\n            d=\"M5.73219 10.258C5.10819 10.258 4.57009 10.1218 4.11699 9.8488C3.66389 9.5758 3.31429 9.1945 3.06869 8.7057C2.82259 8.2164 2.69958 7.651 2.69958 7.0089C2.69958 6.361 2.82259 5.7926 3.06869 5.3033C3.31429 4.8145 3.66389 4.4322 4.11699 4.1558C4.57009 3.8799 5.10819 3.7417 5.73219 3.7417C6.47049 3.7417 7.07348 3.9219 7.54128 4.2817C8.00958 4.6421 8.30638 5.146 8.43238 5.7939H7.37039C7.28639 5.4282 7.10618 5.1367 6.83039 4.9209C6.55459 4.7051 6.18538 4.5967 5.72348 4.5967C5.09358 4.5967 4.59559 4.8115 4.22939 5.2403C3.86369 5.6695 3.68058 6.2589 3.68058 7.0089C3.68058 7.753 3.86369 8.338 4.22939 8.7638C4.59559 9.1901 5.09368 9.403 5.72348 9.403C6.18538 9.403 6.55459 9.3009 6.83039 9.0968C7.10629 8.8932 7.28649 8.6139 7.37039 8.2599H8.43238C8.30638 8.8839 8.00948 9.3732 7.54128 9.7272C7.07348 10.0812 6.47049 10.258 5.73219 10.258Z\"\n          />\n          <path\n            d=\"M12.6003 10.258C11.9763 10.258 11.4382 10.1218 10.9851 9.8488C10.532 9.5758 10.1824 9.1945 9.93685 8.7057C9.69075 8.2164 9.56775 7.651 9.56775 7.0089C9.56775 6.361 9.69075 5.7926 9.93685 5.3033C10.1824 4.8145 10.532 4.4322 10.9851 4.1558C11.4382 3.8799 11.9763 3.7417 12.6003 3.7417C13.3386 3.7417 13.9416 3.9219 14.4094 4.2817C14.8777 4.6421 15.1745 5.146 15.3005 5.7939H14.2385C14.1545 5.4282 13.9743 5.1367 13.6985 4.9209C13.4227 4.7051 13.0535 4.5967 12.5916 4.5967C11.9617 4.5967 11.4637 4.8115 11.0975 5.2403C10.7318 5.6695 10.5487 6.2589 10.5487 7.0089C10.5487 7.753 10.7318 8.338 11.0975 8.7638C11.4637 9.1901 11.9618 9.403 12.5916 9.403C13.0535 9.403 13.4227 9.3009 13.6985 9.0968C13.9744 8.8932 14.1546 8.6139 14.2385 8.2599H15.3005C15.1745 8.8839 14.8776 9.3732 14.4094 9.7272C13.9416 10.0812 13.3386 10.258 12.6003 10.258Z\"\n          />\n          <path\n            d=\"M15.9891 1C16.5465 1 17 1.4535 17 2.011V11.9891C17 12.5465 16.5465 13 15.9891 13H2.0109C1.4535 13 1 12.5465 1 11.9891V2.0109C1 1.4535 1.4535 0.9999 2.0109 0.9999L15.9891 1ZM15.9891 0H2.0109C0.9003 0 0 0.9003 0 2.0109V11.9891C0 13.0997 0.9003 14 2.0109 14H15.9891C17.0997 14 18 13.0997 18 11.9891V2.0109C18 0.9003 17.0997 0 15.9891 0Z\"\n          />\n        </svg>\n      </media-captions-button>\n      <media-captions-listbox slot=\"listbox\" exportparts=\"option\" part=\"bottom captions listbox\">\n        <div slot=\"select-indicator\">\n          <style>\n            .listbox-indicator {\n              position: relative;\n              top: 1px;\n              width: 0.9em;\n              height: auto;\n              fill: var(--_accent-color);\n            }\n\n            [aria-selected='false'] .listbox-indicator {\n              display: none;\n            }\n          </style>\n          <svg viewBox=\"0 0 14 18\" class=\"listbox-indicator\">\n            <path\n              d=\"M12.252 3.48c-.115.033-.301.161-.425.291-.059.063-1.407 1.815-2.995 3.894s-2.897 3.79-2.908 3.802c-.013.014-.661-.616-1.672-1.624-.908-.905-1.702-1.681-1.765-1.723-.401-.27-.783-.211-1.176.183a1.285 1.285 0 0 0-.261.342.582.582 0 0 0-.082.35c0 .165.01.205.08.35.075.153.213.296 2.182 2.271 1.156 1.159 2.17 2.159 2.253 2.222.189.143.338.196.539.194.203-.003.412-.104.618-.299.205-.193 6.7-8.693 6.804-8.903a.716.716 0 0 0 .085-.345c.01-.179.005-.203-.062-.339-.124-.252-.45-.531-.746-.639a.784.784 0 0 0-.469-.027\"\n              fill-rule=\"evenodd\"\n            />\n          </svg>\n        </div>\n      </media-captions-listbox>\n    </media-captions-selectmenu>\n  </template>\n\n  <template partial=\"AirplayButton\">\n    <media-airplay-button part=\"bottom airplay button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"icon\">\n        <path\n          d=\"M16.1383 0H1.8618C0.8335 0 0 0.8335 0 1.8617V10.1382C0 11.1664 0.8335 12 1.8618 12H3.076C3.1204 11.9433 3.1503 11.8785 3.2012 11.826L4.004 11H1.8618C1.3866 11 1 10.6134 1 10.1382V1.8617C1 1.3865 1.3866 0.9999 1.8618 0.9999H16.1383C16.6135 0.9999 17.0001 1.3865 17.0001 1.8617V10.1382C17.0001 10.6134 16.6135 11 16.1383 11H13.9961L14.7989 11.826C14.8499 11.8785 14.8798 11.9432 14.9241 12H16.1383C17.1665 12 18.0001 11.1664 18.0001 10.1382V1.8617C18 0.8335 17.1665 0 16.1383 0Z\"\n        />\n        <path\n          d=\"M9.55061 8.21903C9.39981 8.06383 9.20001 7.98633 9.00011 7.98633C8.80021 7.98633 8.60031 8.06383 8.44951 8.21903L4.09771 12.697C3.62471 13.1838 3.96961 13.9998 4.64831 13.9998H13.3518C14.0304 13.9998 14.3754 13.1838 13.9023 12.697L9.55061 8.21903Z\"\n        />\n      </svg>\n    </media-airplay-button>\n  </template>\n\n  <template partial=\"FullscreenButton\">\n    <media-fullscreen-button part=\"bottom fullscreen button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"enter\">\n        <path\n          d=\"M1.00745 4.39539L1.01445 1.98789C1.01605 1.43049 1.47085 0.978289 2.02835 0.979989L6.39375 0.992589L6.39665 -0.007411L2.03125 -0.020011C0.920646 -0.023211 0.0176463 0.874489 0.0144463 1.98509L0.00744629 4.39539H1.00745Z\"\n        />\n        <path\n          d=\"M17.0144 2.03431L17.0076 4.39541H18.0076L18.0144 2.03721C18.0176 0.926712 17.1199 0.0237125 16.0093 0.0205125L11.6439 0.0078125L11.641 1.00781L16.0064 1.02041C16.5638 1.02201 17.016 1.47681 17.0144 2.03431Z\"\n        />\n        <path\n          d=\"M16.9925 9.60498L16.9855 12.0124C16.9839 12.5698 16.5291 13.022 15.9717 13.0204L11.6063 13.0078L11.6034 14.0078L15.9688 14.0204C17.0794 14.0236 17.9823 13.1259 17.9855 12.0153L17.9925 9.60498H16.9925Z\"\n        />\n        <path\n          d=\"M0.985626 11.9661L0.992426 9.60498H-0.0074737L-0.0142737 11.9632C-0.0174737 13.0738 0.880226 13.9767 1.99083 13.98L6.35623 13.9926L6.35913 12.9926L1.99373 12.98C1.43633 12.9784 0.983926 12.5236 0.985626 11.9661Z\"\n        />\n      </svg>\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"exit\">\n        <path\n          d=\"M5.39655 -0.0200195L5.38955 2.38748C5.38795 2.94488 4.93315 3.39708 4.37565 3.39538L0.0103463 3.38278L0.00744629 4.38278L4.37285 4.39538C5.48345 4.39858 6.38635 3.50088 6.38965 2.39028L6.39665 -0.0200195H5.39655Z\"\n        />\n        <path\n          d=\"M12.6411 2.36891L12.6479 0.0078125H11.6479L11.6411 2.36601C11.6379 3.47651 12.5356 4.37951 13.6462 4.38271L18.0116 4.39531L18.0145 3.39531L13.6491 3.38271C13.0917 3.38111 12.6395 2.92641 12.6411 2.36891Z\"\n        />\n        <path\n          d=\"M12.6034 14.0204L12.6104 11.613C12.612 11.0556 13.0668 10.6034 13.6242 10.605L17.9896 10.6176L17.9925 9.61759L13.6271 9.60499C12.5165 9.60179 11.6136 10.4995 11.6104 11.6101L11.6034 14.0204H12.6034Z\"\n        />\n        <path\n          d=\"M5.359 11.6315L5.3522 13.9926H6.3522L6.359 11.6344C6.3622 10.5238 5.4645 9.62088 4.3539 9.61758L-0.0115043 9.60498L-0.0144043 10.605L4.351 10.6176C4.9084 10.6192 5.3607 11.074 5.359 11.6315Z\"\n        />\n      </svg>\n    </media-fullscreen-button>\n  </template>\n\n  <template partial=\"CastButton\">\n    <media-cast-button part=\"bottom cast button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"enter\">\n        <path\n          d=\"M16.0072 0H2.0291C0.9185 0 0.0181 0.9003 0.0181 2.011V5.5009C0.357 5.5016 0.6895 5.5275 1.0181 5.5669V2.011C1.0181 1.4536 1.4716 1 2.029 1H16.0072C16.5646 1 17.0181 1.4536 17.0181 2.011V11.9891C17.0181 12.5465 16.5646 13 16.0072 13H8.4358C8.4746 13.3286 8.4999 13.6611 8.4999 13.9999H16.0071C17.1177 13.9999 18.018 13.0996 18.018 11.989V2.011C18.0181 0.9003 17.1178 0 16.0072 0ZM0 6.4999V7.4999C3.584 7.4999 6.5 10.4159 6.5 13.9999H7.5C7.5 9.8642 4.1357 6.4999 0 6.4999ZM0 8.7499V9.7499C2.3433 9.7499 4.25 11.6566 4.25 13.9999H5.25C5.25 11.1049 2.895 8.7499 0 8.7499ZM0.0181 11V14H3.0181C3.0181 12.3431 1.675 11 0.0181 11Z\"\n        />\n      </svg>\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"exit\">\n        <path\n          d=\"M15.9891 0H2.01103C0.900434 0 3.35947e-05 0.9003 3.35947e-05 2.011V5.5009C0.338934 5.5016 0.671434 5.5275 1.00003 5.5669V2.011C1.00003 1.4536 1.45353 1 2.01093 1H15.9891C16.5465 1 17 1.4536 17 2.011V11.9891C17 12.5465 16.5465 13 15.9891 13H8.41773C8.45653 13.3286 8.48183 13.6611 8.48183 13.9999H15.989C17.0996 13.9999 17.9999 13.0996 17.9999 11.989V2.011C18 0.9003 17.0997 0 15.9891 0ZM-0.0180664 6.4999V7.4999C3.56593 7.4999 6.48193 10.4159 6.48193 13.9999H7.48193C7.48193 9.8642 4.11763 6.4999 -0.0180664 6.4999ZM-0.0180664 8.7499V9.7499C2.32523 9.7499 4.23193 11.6566 4.23193 13.9999H5.23193C5.23193 11.1049 2.87693 8.7499 -0.0180664 8.7499ZM3.35947e-05 11V14H3.00003C3.00003 12.3431 1.65693 11 3.35947e-05 11Z\"\n        />\n        <path d=\"M2.15002 5.634C5.18352 6.4207 7.57252 8.8151 8.35282 11.8499H15.8501V2.1499H2.15002V5.634Z\" />\n      </svg>\n    </media-cast-button>\n  </template>\n\n  <template partial=\"LiveButton\">\n    <media-live-button part=\"{{section ?? 'top'}} live button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <span slot=\"text\">Live</span>\n    </media-live-button>\n  </template>\n\n  <template partial=\"PlaybackRateSelect\">\n    <media-playback-rate-selectmenu\n      part=\"bottom playback-rate selectmenu\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    >\n      <media-playback-rate-button slot=\"button\" part=\"bottom playback-rate button\"></media-playback-rate-button>\n      <media-playback-rate-listbox\n        slot=\"listbox\"\n        rates=\"{{playbackrates}}\"\n        exportparts=\"option\"\n        part=\"bottom playback-rate listbox\"\n      ></media-playback-rate-listbox>\n    </media-playback-rate-selectmenu>\n  </template>\n\n  <template partial=\"VolumeRange\">\n    <media-volume-range\n      part=\"bottom volume range\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    ></media-volume-range>\n  </template>\n\n  <template partial=\"TimeDisplay\">\n    <media-time-display\n      remaining=\"{{defaultshowremainingtime}}\"\n      showduration=\"{{!hideduration}}\"\n      part=\"bottom time display\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    ></media-time-display>\n  </template>\n\n  <template partial=\"TimeRange\">\n    <media-time-range part=\"bottom time range\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <media-preview-thumbnail slot=\"preview\"></media-preview-thumbnail>\n      <media-preview-chapter-display slot=\"preview\"></media-preview-chapter-display>\n      <media-preview-time-display slot=\"preview\"></media-preview-time-display>\n      <div slot=\"preview\" part=\"arrow\"></div>\n    </media-time-range>\n  </template>\n\n  <template partial=\"AudioTrackSelect\">\n    <media-audio-track-selectmenu\n      part=\"bottom audio-track selectmenu\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    >\n      <media-audio-track-button slot=\"button\" part=\"bottom audio-track button\">\n        <svg aria-hidden=\"true\" slot=\"icon\" viewBox=\"0 0 18 16\">\n          <path d=\"M9 15A7 7 0 1 1 9 1a7 7 0 0 1 0 14Zm0 1A8 8 0 1 0 9 0a8 8 0 0 0 0 16Z\" />\n          <path\n            d=\"M5.2 6.3a.5.5 0 0 1 .5.5v2.4a.5.5 0 1 1-1 0V6.8a.5.5 0 0 1 .5-.5Zm2.4-2.4a.5.5 0 0 1 .5.5v7.2a.5.5 0 0 1-1 0V4.4a.5.5 0 0 1 .5-.5ZM10 5.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.4-.8a.5.5 0 0 1 .5.5v5.6a.5.5 0 0 1-1 0V5.2a.5.5 0 0 1 .5-.5Z\"\n          />\n        </svg>\n      </media-audio-track-button>\n      <media-audio-track-listbox slot=\"listbox\" exportparts=\"option\" part=\"bottom audio-track listbox\">\n        <div slot=\"select-indicator\">\n          <style>\n            .listbox-indicator {\n              position: relative;\n              top: 1px;\n              width: 0.9em;\n              height: auto;\n              fill: var(--_accent-color);\n            }\n\n            [aria-selected='false'] .listbox-indicator {\n              display: none;\n            }\n          </style>\n          <svg viewBox=\"0 0 14 18\" class=\"listbox-indicator\">\n            <path\n              d=\"M12.252 3.48c-.115.033-.301.161-.425.291-.059.063-1.407 1.815-2.995 3.894s-2.897 3.79-2.908 3.802c-.013.014-.661-.616-1.672-1.624-.908-.905-1.702-1.681-1.765-1.723-.401-.27-.783-.211-1.176.183a1.285 1.285 0 0 0-.261.342.582.582 0 0 0-.082.35c0 .165.01.205.08.35.075.153.213.296 2.182 2.271 1.156 1.159 2.17 2.159 2.253 2.222.189.143.338.196.539.194.203-.003.412-.104.618-.299.205-.193 6.7-8.693 6.804-8.903a.716.716 0 0 0 .085-.345c.01-.179.005-.203-.062-.339-.124-.252-.45-.531-.746-.639a.784.784 0 0 0-.469-.027\"\n              fill-rule=\"evenodd\"\n            />\n          </svg>\n        </div>\n      </media-audio-track-listbox>\n    </media-audio-track-selectmenu>\n  </template>\n\n  <template partial=\"RenditionSelect\">\n    <media-rendition-selectmenu part=\"bottom rendition selectmenu\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <media-rendition-button slot=\"button\" part=\"bottom rendition button\">\n        <svg aria-hidden=\"true\" slot=\"icon\" viewBox=\"0 0 18 14\">\n          <path\n            d=\"M2.25 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4ZM9 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm6.75 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\"\n          />\n        </svg>\n      </media-rendition-button>\n      <media-rendition-listbox slot=\"listbox\" exportparts=\"option\" part=\"bottom rendition listbox\">\n        <div slot=\"select-indicator\">\n          <style>\n            .listbox-indicator {\n              position: relative;\n              top: 1px;\n              width: 0.9em;\n              height: auto;\n              fill: var(--_accent-color);\n            }\n\n            [aria-selected='false'] .listbox-indicator {\n              display: none;\n            }\n          </style>\n          <svg viewBox=\"0 0 14 18\" class=\"listbox-indicator\">\n            <path\n              d=\"M12.252 3.48c-.115.033-.301.161-.425.291-.059.063-1.407 1.815-2.995 3.894s-2.897 3.79-2.908 3.802c-.013.014-.661-.616-1.672-1.624-.908-.905-1.702-1.681-1.765-1.723-.401-.27-.783-.211-1.176.183a1.285 1.285 0 0 0-.261.342.582.582 0 0 0-.082.35c0 .165.01.205.08.35.075.153.213.296 2.182 2.271 1.156 1.159 2.17 2.159 2.253 2.222.189.143.338.196.539.194.203-.003.412-.104.618-.299.205-.193 6.7-8.693 6.804-8.903a.716.716 0 0 0 .085-.345c.01-.179.005-.203-.062-.339-.124-.252-.45-.531-.746-.639a.784.784 0 0 0-.469-.027\"\n              fill-rule=\"evenodd\"\n            />\n          </svg>\n        </div>\n      </media-rendition-listbox>\n    </media-rendition-selectmenu>\n  </template>\n\n  <media-controller\n    part=\"controller\"\n    defaultstreamtype=\"{{defaultstreamtype ?? 'on-demand'}}\"\n    breakpoints=\"sm:470\"\n    gesturesdisabled=\"{{disabled}}\"\n    hotkeys=\"{{hotkeys}}\"\n    nohotkeys=\"{{nohotkeys}}\"\n    novolumepref=\"{{novolumepref}}\"\n    audio=\"{{audio}}\"\n    noautoseektolive=\"{{noautoseektolive}}\"\n    defaultsubtitles=\"{{defaultsubtitles}}\"\n    defaultduration=\"{{defaultduration ?? false}}\"\n    keyboardforwardseekoffset=\"{{forwardseekoffset}}\"\n    keyboardbackwardseekoffset=\"{{backwardseekoffset}}\"\n    exportparts=\"layer, media-layer, poster-layer, vertical-layer, centered-layer, gesture-layer\"\n    style=\"--_pre-playback-place:{{preplaybackplace ?? 'center'}}\"\n  >\n    <slot name=\"media\" slot=\"media\"></slot>\n    <slot name=\"poster\" slot=\"poster\"></slot>\n\n    <media-loading-indicator slot=\"centered-chrome\" noautohide></media-loading-indicator>\n\n    <template if=\"!audio\">\n      <!-- Pre-playback UI -->\n      <div slot=\"centered-chrome\" class=\"center-controls pre-playback\">\n        <template if=\"streamtype == 'on-demand'\">\n          <template if=\"!breakpointsm\"> {{>SeekBackwardButton section=\"center\"}} </template>\n          <template if=\"!breakpointsm\"> {{>PlayButton section=\"center\"}} </template>\n          <template if=\"breakpointsm\"> {{>PrePlayButton section=\"center\"}} </template>\n          <template if=\"!breakpointsm\"> {{>SeekForwardButton section=\"center\"}} </template>\n        </template>\n\n        <template if=\"streamtype == 'live'\">\n          <template if=\"!breakpointsm\">\n            <template if=\"targetlivewindow > 0\"> {{>SeekBackwardButton section=\"center\"}} </template>\n          </template>\n          <template if=\"!breakpointsm\"> {{>PlayButton section=\"center\"}} </template>\n          <template if=\"breakpointsm\"> {{>PrePlayButton section=\"center\"}} </template>\n          <template if=\"!breakpointsm\">\n            <template if=\"targetlivewindow > 0\"> {{>SeekForwardButton section=\"center\"}} </template>\n          </template>\n        </template>\n      </div>\n\n      <!-- Auotplay centered unmute button -->\n      <!--\n        todo: figure out how show this with available state variables\n        needs to show when:\n        - autoplay is enabled\n        - playback has been successful\n        - audio is muted\n        - in place / instead of the pre-plaback play button\n        - not to show again after user has interacted with this button\n          - OR user has interacted with the mute button in the control bar\n      -->\n      <!--\n        There should be a >MuteButton to the left of the \"Unmute\" text, but a templating bug\n        makes it appear even if commented out in the markup, add it back when code is un-commented\n      -->\n      <!-- <div slot=\"centered-chrome\" class=\"autoplay-unmute\">\n        <div role=\"button\" class=\"autoplay-unmute-btn\">Unmute</div>\n      </div> -->\n\n      <template if=\"streamtype == 'on-demand'\">\n        <template if=\"breakpointsm\">\n          <media-control-bar part=\"control-bar top\" slot=\"top-chrome\">{{>TitleDisplay}} </media-control-bar>\n        </template>\n        {{>TimeRange}}\n        <media-control-bar part=\"control-bar bottom\">\n          {{>PlayButton}} {{>SeekBackwardButton}} {{>SeekForwardButton}} {{>TimeDisplay}} {{>MuteButton}}\n          {{>VolumeRange}}\n          <div class=\"spacer\"></div>\n          {{>RenditionSelect}} {{>PlaybackRateSelect}} {{>AudioTrackSelect}} {{>CaptionsMenuButton}} {{>AirplayButton}}\n          {{>CastButton}} {{>PipButton}} {{>FullscreenButton}}\n        </media-control-bar>\n      </template>\n\n      <template if=\"streamtype == 'live'\">\n        <media-control-bar part=\"control-bar top\" slot=\"top-chrome\">\n          {{>LiveButton}}\n          <template if=\"breakpointsm\"> {{>TitleDisplay}} </template>\n        </media-control-bar>\n        <template if=\"targetlivewindow > 0\">{{>TimeRange}}</template>\n        <media-control-bar part=\"control-bar bottom\">\n          {{>PlayButton}}\n          <template if=\"targetlivewindow > 0\">{{>SeekBackwardButton}} {{>SeekForwardButton}}</template>\n          {{>MuteButton}} {{>VolumeRange}}\n          <div class=\"spacer\"></div>\n          {{>RenditionSelect}} {{>AudioTrackSelect}} {{>CaptionsMenuButton}} {{>AirplayButton}} {{>CastButton}}\n          {{>PipButton}} {{>FullscreenButton}}\n        </media-control-bar>\n      </template>\n    </template>\n\n    <template if=\"audio\">\n      <template if=\"streamtype == 'on-demand'\">\n        <template if=\"title\">\n          <media-control-bar part=\"control-bar top\">{{>TitleDisplay}}</media-control-bar>\n        </template>\n        <media-control-bar part=\"control-bar bottom\">\n          {{>PlayButton}}\n          <template if=\"breakpointsm\"> {{>SeekBackwardButton}} {{>SeekForwardButton}} </template>\n          {{>MuteButton}}\n          <template if=\"breakpointsm\">{{>VolumeRange}}</template>\n          {{>TimeDisplay}} {{>TimeRange}}\n          <template if=\"breakpointsm\">{{>PlaybackRateSelect}}</template>\n          {{>AirplayButton}} {{>CastButton}}\n        </media-control-bar>\n      </template>\n\n      <template if=\"streamtype == 'live'\">\n        <template if=\"title\">\n          <media-control-bar part=\"control-bar top\">{{>TitleDisplay}}</media-control-bar>\n        </template>\n        <media-control-bar part=\"control-bar bottom\">\n          <template if=\"breakpointsm\">\n            {{>PlayButton}} {{>LiveButton section=\"bottom\"}} {{>MuteButton}} {{>VolumeRange}}\n            <template if=\"targetlivewindow > 0\"> {{>SeekBackwardButton}} {{>SeekForwardButton}} </template>\n          </template>\n          <template if=\"targetlivewindow > 0\"> {{>TimeDisplay}} {{>TimeRange}} </template>\n          <template if=\"!targetlivewindow\"><div class=\"spacer\"></div></template>\n          {{>AirplayButton}} {{>CastButton}}\n        </media-control-bar>\n      </template>\n    </template>\n\n    <slot></slot>\n  </media-controller>\n</template>\n`;\nvar He2 = T2.createElement(\"template\");\n\"innerHTML\" in He2 && (He2.innerHTML = Mt2);\nvar _t3;\nvar Pt3;\nvar fe4 = class extends MediaThemeElement {\n};\nfe4.template = (Pt3 = (_t3 = He2.content) == null ? void 0 : _t3.children) == null ? void 0 : Pt3[0];\nc2.customElements.get(\"media-theme-gerwig\") || c2.customElements.define(\"media-theme-gerwig\", fe4);\nvar Ca = \"gerwig\";\nvar M3 = { SRC: \"src\", POSTER: \"poster\" };\nvar n = { STYLE: \"style\", DEFAULT_HIDDEN_CAPTIONS: \"default-hidden-captions\", PRIMARY_COLOR: \"primary-color\", SECONDARY_COLOR: \"secondary-color\", ACCENT_COLOR: \"accent-color\", FORWARD_SEEK_OFFSET: \"forward-seek-offset\", BACKWARD_SEEK_OFFSET: \"backward-seek-offset\", PLAYBACK_TOKEN: \"playback-token\", THUMBNAIL_TOKEN: \"thumbnail-token\", STORYBOARD_TOKEN: \"storyboard-token\", DRM_TOKEN: \"drm-token\", STORYBOARD_SRC: \"storyboard-src\", THUMBNAIL_TIME: \"thumbnail-time\", AUDIO: \"audio\", NOHOTKEYS: \"nohotkeys\", HOTKEYS: \"hotkeys\", PLAYBACK_RATES: \"playbackrates\", DEFAULT_SHOW_REMAINING_TIME: \"default-show-remaining-time\", DEFAULT_DURATION: \"default-duration\", TITLE: \"title\", PLACEHOLDER: \"placeholder\", THEME: \"theme\", DEFAULT_STREAM_TYPE: \"default-stream-type\", TARGET_LIVE_WINDOW: \"target-live-window\", EXTRA_SOURCE_PARAMS: \"extra-source-params\", NO_VOLUME_PREF: \"no-volume-pref\" };\nvar Ue3 = [\"audio\", \"backwardseekoffset\", \"defaultduration\", \"defaultshowremainingtime\", \"defaultsubtitles\", \"noautoseektolive\", \"disabled\", \"exportparts\", \"forwardseekoffset\", \"hideduration\", \"hotkeys\", \"nohotkeys\", \"playbackrates\", \"defaultstreamtype\", \"streamtype\", \"style\", \"targetlivewindow\", \"template\", \"title\", \"novolumepref\"];\nfunction xa2(t2, i2) {\n  var a2;\n  return __spreadProps(__spreadValues({ src: !t2.playbackId && t2.src, playbackId: t2.playbackId, hasSrc: !!t2.playbackId || !!t2.src || !!t2.currentSrc, poster: t2.poster, storyboard: t2.storyboard, storyboardSrc: t2.getAttribute(n.STORYBOARD_SRC), placeholder: t2.getAttribute(\"placeholder\"), themeTemplate: La2(t2), thumbnailTime: !t2.tokens.thumbnail && t2.thumbnailTime, autoplay: t2.autoplay, crossOrigin: t2.crossOrigin, loop: t2.loop, noHotKeys: t2.hasAttribute(n.NOHOTKEYS), hotKeys: t2.getAttribute(n.HOTKEYS), muted: t2.muted, paused: t2.paused, preload: t2.preload, envKey: t2.envKey, preferCmcd: t2.preferCmcd, debug: t2.debug, disableTracking: t2.disableTracking, disableCookies: t2.disableCookies, tokens: t2.tokens, beaconCollectionDomain: t2.beaconCollectionDomain, maxResolution: t2.maxResolution, minResolution: t2.minResolution, programStartTime: t2.programStartTime, programEndTime: t2.programEndTime, renditionOrder: t2.renditionOrder, metadata: t2.metadata, playerSoftwareName: t2.playerSoftwareName, playerSoftwareVersion: t2.playerSoftwareVersion, startTime: t2.startTime, preferPlayback: t2.preferPlayback, audio: t2.audio, defaultStreamType: t2.defaultStreamType, targetLiveWindow: t2.getAttribute(c.TARGET_LIVE_WINDOW), streamType: Q3(t2.getAttribute(c.STREAM_TYPE)), primaryColor: t2.getAttribute(n.PRIMARY_COLOR), secondaryColor: t2.getAttribute(n.SECONDARY_COLOR), accentColor: t2.getAttribute(n.ACCENT_COLOR), forwardSeekOffset: t2.forwardSeekOffset, backwardSeekOffset: t2.backwardSeekOffset, defaultHiddenCaptions: t2.defaultHiddenCaptions, defaultDuration: t2.defaultDuration, defaultShowRemainingTime: t2.defaultShowRemainingTime, hideDuration: Ra2(t2), playbackRates: t2.getAttribute(n.PLAYBACK_RATES), customDomain: (a2 = t2.getAttribute(c.CUSTOM_DOMAIN)) != null ? a2 : void 0, title: t2.getAttribute(n.TITLE), novolumepref: t2.hasAttribute(n.NO_VOLUME_PREF) }, i2), { extraSourceParams: t2.extraSourceParams });\n}\nfunction La2(t2) {\n  var e, a2;\n  let i2 = t2.theme;\n  if (i2) {\n    let r10 = (a2 = (e = t2.getRootNode()) == null ? void 0 : e.getElementById) == null ? void 0 : a2.call(e, i2);\n    if (r10 && r10 instanceof HTMLTemplateElement) return r10;\n    i2.startsWith(\"media-theme-\") || (i2 = `media-theme-${i2}`);\n    let o = c2.customElements.get(i2);\n    if (o != null && o.template) return o.template;\n  }\n}\nfunction Ra2(t2) {\n  var e;\n  let i2 = (e = t2.mediaController) == null ? void 0 : e.querySelector(\"media-time-display\");\n  return i2 && getComputedStyle(i2).getPropertyValue(\"--media-duration-display-display\").trim() === \"none\";\n}\nfunction Dt3(t2) {\n  let i2 = t2.hasAttribute(n.TITLE) ? { video_title: t2.getAttribute(n.TITLE) } : {};\n  return t2.getAttributeNames().filter((e) => e.startsWith(\"metadata-\")).reduce((e, a2) => {\n    let r10 = t2.getAttribute(a2);\n    return r10 !== null && (e[a2.replace(/^metadata-/, \"\").replace(/-/g, \"_\")] = r10), e;\n  }, i2);\n}\nvar wa = Object.values(c);\nvar Oa2 = Object.values(M3);\nvar Sa2 = Object.values(n);\nvar Ma = ue4();\nvar _a2 = \"mux-player\";\nvar Vt3 = { dialog: void 0, isDialogOpen: false };\nvar Pa2 = { redundant_streams: true };\nvar re3;\nvar oe4;\nvar H4;\nvar ne3;\nvar Z4;\nvar O3;\nvar V3;\nvar Ee4;\nvar Ht2;\nvar se3;\nvar Ke4;\nvar _2;\nvar W3;\nvar ke4;\nvar Bt3;\nvar Te3;\nvar Ut3;\nvar Ae2;\nvar Kt2;\nvar Ce4;\nvar $t2;\nvar ie4 = class extends Ne4 {\n  constructor() {\n    super();\n    p(this, O3);\n    p(this, Ee4);\n    p(this, se3);\n    p(this, _2);\n    p(this, ke4);\n    p(this, Te3);\n    p(this, Ae2);\n    p(this, Ce4);\n    p(this, re3, false);\n    p(this, oe4, {});\n    p(this, H4, true);\n    p(this, ne3, new me3(this, \"hotkeys\"));\n    p(this, Z4, __spreadProps(__spreadValues({}, Vt3), { onCloseErrorDialog: () => b3(this, se3, Ke4).call(this, { dialog: void 0, isDialogOpen: false }), onInitFocusDialog: (e) => {\n      Se2(this, T2.activeElement) || e.preventDefault();\n    } }));\n    this.attachShadow({ mode: \"open\" }), b3(this, Ee4, Ht2).call(this), this.isConnected && b3(this, O3, V3).call(this);\n  }\n  static get observedAttributes() {\n    var e;\n    return [...(e = Ne4.observedAttributes) != null ? e : [], ...Oa2, ...wa, ...Sa2];\n  }\n  get mediaTheme() {\n    var e;\n    return (e = this.shadowRoot) == null ? void 0 : e.querySelector(\"media-theme\");\n  }\n  get mediaController() {\n    var e, a2;\n    return (a2 = (e = this.mediaTheme) == null ? void 0 : e.shadowRoot) == null ? void 0 : a2.querySelector(\"media-controller\");\n  }\n  connectedCallback() {\n    var a2;\n    let e = (a2 = this.shadowRoot) == null ? void 0 : a2.querySelector(\"mux-video\");\n    e && (e.metadata = Dt3(this));\n  }\n  attributeChangedCallback(e, a2, r10) {\n    switch (b3(this, O3, V3).call(this), super.attributeChangedCallback(e, a2, r10), e) {\n      case n.HOTKEYS:\n        u2(this, ne3).value = r10;\n        break;\n      case n.THUMBNAIL_TIME: {\n        r10 != null && this.tokens.thumbnail && I3(m(\"Use of thumbnail-time with thumbnail-token is currently unsupported. Ignore thumbnail-time.\").format({}));\n        break;\n      }\n      case n.THUMBNAIL_TOKEN: {\n        let { aud: s } = N2(r10);\n        r10 && s !== \"t\" && I3(m(\"The provided thumbnail-token should have audience value 't' instead of '{aud}'.\").format({ aud: s }));\n        break;\n      }\n      case n.STORYBOARD_TOKEN: {\n        let { aud: s } = N2(r10);\n        r10 && s !== \"s\" && I3(m(\"The provided storyboard-token should have audience value 's' instead of '{aud}'.\").format({ aud: s }));\n        break;\n      }\n      case c.PLAYBACK_ID: {\n        r10 != null && r10.includes(\"?token\") && A2(m(\"The specificed playback ID {playbackId} contains a token which must be provided via the playback-token attribute.\").format({ playbackId: r10 }));\n        break;\n      }\n      case c.STREAM_TYPE:\n        r10 && ![g.LIVE, g.ON_DEMAND, g.UNKNOWN].includes(r10) ? [\"ll-live\", \"live:dvr\", \"ll-live:dvr\"].includes(this.streamType) ? this.targetLiveWindow = r10.includes(\"dvr\") ? Number.POSITIVE_INFINITY : 0 : _e4({ file: \"invalid-stream-type.md\", message: m(\"Invalid stream-type value supplied: `{streamType}`. Please provide stream-type as either: `on-demand` or `live`\").format({ streamType: this.streamType }) }) : r10 === g.LIVE ? this.getAttribute(n.TARGET_LIVE_WINDOW) == null && (this.targetLiveWindow = 0) : this.targetLiveWindow = Number.NaN;\n    }\n    [c.PLAYBACK_ID, M3.SRC, n.PLAYBACK_TOKEN].includes(e) && a2 !== r10 && x3(this, Z4, __spreadValues(__spreadValues({}, u2(this, Z4)), Vt3)), b3(this, _2, W3).call(this, { [ht(e)]: r10 });\n  }\n  get preferCmcd() {\n    var e;\n    return (e = this.getAttribute(c.PREFER_CMCD)) != null ? e : void 0;\n  }\n  set preferCmcd(e) {\n    e !== this.preferCmcd && (e ? dt2.includes(e) ? this.setAttribute(c.PREFER_CMCD, e) : I3(`Invalid value for preferCmcd. Must be one of ${dt2.join()}`) : this.removeAttribute(c.PREFER_CMCD));\n  }\n  get hasPlayed() {\n    var e, a2;\n    return (a2 = (e = this.mediaController) == null ? void 0 : e.hasAttribute(MediaUIAttributes.MEDIA_HAS_PLAYED)) != null ? a2 : false;\n  }\n  get inLiveWindow() {\n    var e;\n    return (e = this.mediaController) == null ? void 0 : e.hasAttribute(MediaUIAttributes.MEDIA_TIME_IS_LIVE);\n  }\n  get _hls() {\n    var e;\n    return (e = this.media) == null ? void 0 : e._hls;\n  }\n  get mux() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.mux;\n  }\n  get theme() {\n    var e;\n    return (e = this.getAttribute(n.THEME)) != null ? e : Ca;\n  }\n  set theme(e) {\n    this.setAttribute(n.THEME, `${e}`);\n  }\n  get themeProps() {\n    let e = this.mediaTheme;\n    if (!e) return;\n    let a2 = {};\n    for (let r10 of e.getAttributeNames()) {\n      if (Ue3.includes(r10)) continue;\n      let o = e.getAttribute(r10);\n      a2[le4(r10)] = o === \"\" ? true : o;\n    }\n    return a2;\n  }\n  set themeProps(e) {\n    var r10, o;\n    b3(this, O3, V3).call(this);\n    let a2 = __spreadValues(__spreadValues({}, this.themeProps), e);\n    for (let s in a2) {\n      if (Ue3.includes(s)) continue;\n      let l = e == null ? void 0 : e[s];\n      typeof l == \"boolean\" || l == null ? (r10 = this.mediaTheme) == null || r10.toggleAttribute(de4(s), !!l) : (o = this.mediaTheme) == null || o.setAttribute(de4(s), l);\n    }\n  }\n  get playbackId() {\n    var e;\n    return (e = this.getAttribute(c.PLAYBACK_ID)) != null ? e : void 0;\n  }\n  set playbackId(e) {\n    e ? this.setAttribute(c.PLAYBACK_ID, e) : this.removeAttribute(c.PLAYBACK_ID);\n  }\n  get src() {\n    var e, a2;\n    return this.playbackId ? (e = Y3(this, M3.SRC)) != null ? e : void 0 : (a2 = this.getAttribute(M3.SRC)) != null ? a2 : void 0;\n  }\n  set src(e) {\n    e ? this.setAttribute(M3.SRC, e) : this.removeAttribute(M3.SRC);\n  }\n  get poster() {\n    var a2;\n    let e = this.getAttribute(M3.POSTER);\n    if (e != null) return e;\n    if (this.playbackId && !this.audio) return pt4(this.playbackId, { customDomain: this.customDomain, thumbnailTime: (a2 = this.thumbnailTime) != null ? a2 : this.startTime, programTime: this.programStartTime, token: this.tokens.thumbnail });\n  }\n  set poster(e) {\n    e || e === \"\" ? this.setAttribute(M3.POSTER, e) : this.removeAttribute(M3.POSTER);\n  }\n  get storyboardSrc() {\n    var e;\n    return (e = this.getAttribute(n.STORYBOARD_SRC)) != null ? e : void 0;\n  }\n  set storyboardSrc(e) {\n    e ? this.setAttribute(n.STORYBOARD_SRC, e) : this.removeAttribute(n.STORYBOARD_SRC);\n  }\n  get storyboard() {\n    if (this.storyboardSrc && !this.tokens.storyboard) return this.storyboardSrc;\n    if (!(this.audio || !this.playbackId || !this.streamType || [g.LIVE, g.UNKNOWN].includes(this.streamType))) return bt3(this.playbackId, { customDomain: this.customDomain, token: this.tokens.storyboard, programStartTime: this.programStartTime, programEndTime: this.programEndTime });\n  }\n  get audio() {\n    return this.hasAttribute(n.AUDIO);\n  }\n  set audio(e) {\n    if (!e) {\n      this.removeAttribute(n.AUDIO);\n      return;\n    }\n    this.setAttribute(n.AUDIO, \"\");\n  }\n  get hotkeys() {\n    return u2(this, ne3);\n  }\n  get nohotkeys() {\n    return this.hasAttribute(n.NOHOTKEYS);\n  }\n  set nohotkeys(e) {\n    if (!e) {\n      this.removeAttribute(n.NOHOTKEYS);\n      return;\n    }\n    this.setAttribute(n.NOHOTKEYS, \"\");\n  }\n  get thumbnailTime() {\n    return L(this.getAttribute(n.THUMBNAIL_TIME));\n  }\n  set thumbnailTime(e) {\n    this.setAttribute(n.THUMBNAIL_TIME, `${e}`);\n  }\n  get title() {\n    var e;\n    return (e = this.getAttribute(n.TITLE)) != null ? e : \"\";\n  }\n  set title(e) {\n    e !== this.title && (e ? this.setAttribute(n.TITLE, e) : this.removeAttribute(\"title\"), super.title = e);\n  }\n  get placeholder() {\n    var e;\n    return (e = Y3(this, n.PLACEHOLDER)) != null ? e : \"\";\n  }\n  set placeholder(e) {\n    this.setAttribute(n.PLACEHOLDER, `${e}`);\n  }\n  get primaryColor() {\n    var a2, r10;\n    let e = this.getAttribute(n.PRIMARY_COLOR);\n    if (e != null || this.mediaTheme && (e = (r10 = (a2 = c2.getComputedStyle(this.mediaTheme)) == null ? void 0 : a2.getPropertyValue(\"--_primary-color\")) == null ? void 0 : r10.trim(), e)) return e;\n  }\n  set primaryColor(e) {\n    this.setAttribute(n.PRIMARY_COLOR, `${e}`);\n  }\n  get secondaryColor() {\n    var a2, r10;\n    let e = this.getAttribute(n.SECONDARY_COLOR);\n    if (e != null || this.mediaTheme && (e = (r10 = (a2 = c2.getComputedStyle(this.mediaTheme)) == null ? void 0 : a2.getPropertyValue(\"--_secondary-color\")) == null ? void 0 : r10.trim(), e)) return e;\n  }\n  set secondaryColor(e) {\n    this.setAttribute(n.SECONDARY_COLOR, `${e}`);\n  }\n  get accentColor() {\n    var a2, r10;\n    let e = this.getAttribute(n.ACCENT_COLOR);\n    if (e != null || this.mediaTheme && (e = (r10 = (a2 = c2.getComputedStyle(this.mediaTheme)) == null ? void 0 : a2.getPropertyValue(\"--_accent-color\")) == null ? void 0 : r10.trim(), e)) return e;\n  }\n  set accentColor(e) {\n    this.setAttribute(n.ACCENT_COLOR, `${e}`);\n  }\n  get defaultShowRemainingTime() {\n    return this.hasAttribute(n.DEFAULT_SHOW_REMAINING_TIME);\n  }\n  set defaultShowRemainingTime(e) {\n    e ? this.setAttribute(n.DEFAULT_SHOW_REMAINING_TIME, \"\") : this.removeAttribute(n.DEFAULT_SHOW_REMAINING_TIME);\n  }\n  get playbackRates() {\n    if (this.hasAttribute(n.PLAYBACK_RATES)) return this.getAttribute(n.PLAYBACK_RATES).trim().split(/\\s*,?\\s+/).map((e) => Number(e)).filter((e) => !Number.isNaN(e)).sort((e, a2) => e - a2);\n  }\n  set playbackRates(e) {\n    if (!e) {\n      this.removeAttribute(n.PLAYBACK_RATES);\n      return;\n    }\n    this.setAttribute(n.PLAYBACK_RATES, e.join(\" \"));\n  }\n  get forwardSeekOffset() {\n    var e;\n    return (e = L(this.getAttribute(n.FORWARD_SEEK_OFFSET))) != null ? e : 10;\n  }\n  set forwardSeekOffset(e) {\n    this.setAttribute(n.FORWARD_SEEK_OFFSET, `${e}`);\n  }\n  get backwardSeekOffset() {\n    var e;\n    return (e = L(this.getAttribute(n.BACKWARD_SEEK_OFFSET))) != null ? e : 10;\n  }\n  set backwardSeekOffset(e) {\n    this.setAttribute(n.BACKWARD_SEEK_OFFSET, `${e}`);\n  }\n  get defaultHiddenCaptions() {\n    return this.hasAttribute(n.DEFAULT_HIDDEN_CAPTIONS);\n  }\n  set defaultHiddenCaptions(e) {\n    e ? this.setAttribute(n.DEFAULT_HIDDEN_CAPTIONS, \"\") : this.removeAttribute(n.DEFAULT_HIDDEN_CAPTIONS);\n  }\n  get defaultDuration() {\n    return L(this.getAttribute(n.DEFAULT_DURATION));\n  }\n  set defaultDuration(e) {\n    e == null ? this.removeAttribute(n.DEFAULT_DURATION) : this.setAttribute(n.DEFAULT_DURATION, `${e}`);\n  }\n  get playerSoftwareName() {\n    var e;\n    return (e = this.getAttribute(c.PLAYER_SOFTWARE_NAME)) != null ? e : _a2;\n  }\n  get playerSoftwareVersion() {\n    var e;\n    return (e = this.getAttribute(c.PLAYER_SOFTWARE_VERSION)) != null ? e : Ma;\n  }\n  get beaconCollectionDomain() {\n    var e;\n    return (e = this.getAttribute(c.BEACON_COLLECTION_DOMAIN)) != null ? e : void 0;\n  }\n  set beaconCollectionDomain(e) {\n    e !== this.beaconCollectionDomain && (e ? this.setAttribute(c.BEACON_COLLECTION_DOMAIN, e) : this.removeAttribute(c.BEACON_COLLECTION_DOMAIN));\n  }\n  get maxResolution() {\n    var e;\n    return (e = this.getAttribute(c.MAX_RESOLUTION)) != null ? e : void 0;\n  }\n  set maxResolution(e) {\n    e !== this.maxResolution && (e ? this.setAttribute(c.MAX_RESOLUTION, e) : this.removeAttribute(c.MAX_RESOLUTION));\n  }\n  get minResolution() {\n    var e;\n    return (e = this.getAttribute(c.MIN_RESOLUTION)) != null ? e : void 0;\n  }\n  set minResolution(e) {\n    e !== this.minResolution && (e ? this.setAttribute(c.MIN_RESOLUTION, e) : this.removeAttribute(c.MIN_RESOLUTION));\n  }\n  get renditionOrder() {\n    var e;\n    return (e = this.getAttribute(c.RENDITION_ORDER)) != null ? e : void 0;\n  }\n  set renditionOrder(e) {\n    e !== this.renditionOrder && (e ? this.setAttribute(c.RENDITION_ORDER, e) : this.removeAttribute(c.RENDITION_ORDER));\n  }\n  get programStartTime() {\n    return L(this.getAttribute(c.PROGRAM_START_TIME));\n  }\n  set programStartTime(e) {\n    e == null ? this.removeAttribute(c.PROGRAM_START_TIME) : this.setAttribute(c.PROGRAM_START_TIME, `${e}`);\n  }\n  get programEndTime() {\n    return L(this.getAttribute(c.PROGRAM_END_TIME));\n  }\n  set programEndTime(e) {\n    e == null ? this.removeAttribute(c.PROGRAM_END_TIME) : this.setAttribute(c.PROGRAM_END_TIME, `${e}`);\n  }\n  get extraSourceParams() {\n    return this.hasAttribute(n.EXTRA_SOURCE_PARAMS) ? [...new URLSearchParams(this.getAttribute(n.EXTRA_SOURCE_PARAMS)).entries()].reduce((e, [a2, r10]) => (e[a2] = r10, e), {}) : Pa2;\n  }\n  set extraSourceParams(e) {\n    e == null ? this.removeAttribute(n.EXTRA_SOURCE_PARAMS) : this.setAttribute(n.EXTRA_SOURCE_PARAMS, new URLSearchParams(e).toString());\n  }\n  get customDomain() {\n    var e;\n    return (e = this.getAttribute(c.CUSTOM_DOMAIN)) != null ? e : void 0;\n  }\n  set customDomain(e) {\n    e !== this.customDomain && (e ? this.setAttribute(c.CUSTOM_DOMAIN, e) : this.removeAttribute(c.CUSTOM_DOMAIN));\n  }\n  get envKey() {\n    var e;\n    return (e = Y3(this, c.ENV_KEY)) != null ? e : void 0;\n  }\n  set envKey(e) {\n    this.setAttribute(c.ENV_KEY, `${e}`);\n  }\n  get noVolumePref() {\n    return this.hasAttribute(n.NO_VOLUME_PREF);\n  }\n  set noVolumePref(e) {\n    e ? this.setAttribute(n.NO_VOLUME_PREF, \"\") : this.removeAttribute(n.NO_VOLUME_PREF);\n  }\n  get debug() {\n    return Y3(this, c.DEBUG) != null;\n  }\n  set debug(e) {\n    e ? this.setAttribute(c.DEBUG, \"\") : this.removeAttribute(c.DEBUG);\n  }\n  get disableTracking() {\n    return Y3(this, c.DISABLE_TRACKING) != null;\n  }\n  set disableTracking(e) {\n    this.toggleAttribute(c.DISABLE_TRACKING, !!e);\n  }\n  get disableCookies() {\n    return Y3(this, c.DISABLE_COOKIES) != null;\n  }\n  set disableCookies(e) {\n    e ? this.setAttribute(c.DISABLE_COOKIES, \"\") : this.removeAttribute(c.DISABLE_COOKIES);\n  }\n  get streamType() {\n    var e, a2, r10;\n    return (r10 = (a2 = this.getAttribute(c.STREAM_TYPE)) != null ? a2 : (e = this.media) == null ? void 0 : e.streamType) != null ? r10 : g.UNKNOWN;\n  }\n  set streamType(e) {\n    this.setAttribute(c.STREAM_TYPE, `${e}`);\n  }\n  get defaultStreamType() {\n    var e, a2, r10;\n    return (r10 = (a2 = this.getAttribute(n.DEFAULT_STREAM_TYPE)) != null ? a2 : (e = this.mediaController) == null ? void 0 : e.getAttribute(n.DEFAULT_STREAM_TYPE)) != null ? r10 : g.ON_DEMAND;\n  }\n  set defaultStreamType(e) {\n    e ? this.setAttribute(n.DEFAULT_STREAM_TYPE, e) : this.removeAttribute(n.DEFAULT_STREAM_TYPE);\n  }\n  get targetLiveWindow() {\n    var e, a2;\n    return this.hasAttribute(n.TARGET_LIVE_WINDOW) ? +this.getAttribute(n.TARGET_LIVE_WINDOW) : (a2 = (e = this.media) == null ? void 0 : e.targetLiveWindow) != null ? a2 : Number.NaN;\n  }\n  set targetLiveWindow(e) {\n    e == this.targetLiveWindow || Number.isNaN(e) && Number.isNaN(this.targetLiveWindow) || (e == null ? this.removeAttribute(n.TARGET_LIVE_WINDOW) : this.setAttribute(n.TARGET_LIVE_WINDOW, `${+e}`));\n  }\n  get liveEdgeStart() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.liveEdgeStart;\n  }\n  get startTime() {\n    return L(Y3(this, c.START_TIME));\n  }\n  set startTime(e) {\n    this.setAttribute(c.START_TIME, `${e}`);\n  }\n  get preferPlayback() {\n    let e = this.getAttribute(c.PREFER_PLAYBACK);\n    if (e === _.MSE || e === _.NATIVE) return e;\n  }\n  set preferPlayback(e) {\n    e !== this.preferPlayback && (e === _.MSE || e === _.NATIVE ? this.setAttribute(c.PREFER_PLAYBACK, e) : this.removeAttribute(c.PREFER_PLAYBACK));\n  }\n  get metadata() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.metadata;\n  }\n  set metadata(e) {\n    if (b3(this, O3, V3).call(this), !this.media) {\n      A2(\"underlying media element missing when trying to set metadata. metadata will not be set.\");\n      return;\n    }\n    this.media.metadata = __spreadValues(__spreadValues({}, Dt3(this)), e);\n  }\n  get _hlsConfig() {\n    var e;\n    return (e = this.media) == null ? void 0 : e._hlsConfig;\n  }\n  set _hlsConfig(e) {\n    if (b3(this, O3, V3).call(this), !this.media) {\n      A2(\"underlying media element missing when trying to set _hlsConfig. _hlsConfig will not be set.\");\n      return;\n    }\n    this.media._hlsConfig = e;\n  }\n  addCuePoints(e) {\n    return __async(this, null, function* () {\n      var a2;\n      if (b3(this, O3, V3).call(this), !this.media) {\n        A2(\"underlying media element missing when trying to addCuePoints. cuePoints will not be added.\");\n        return;\n      }\n      return (a2 = this.media) == null ? void 0 : a2.addCuePoints(e);\n    });\n  }\n  get activeCuePoint() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.activeCuePoint;\n  }\n  get cuePoints() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.cuePoints) != null ? a2 : [];\n  }\n  addChapters(e) {\n    var a2;\n    if (b3(this, O3, V3).call(this), !this.media) {\n      A2(\"underlying media element missing when trying to addChapters. chapters will not be added.\");\n      return;\n    }\n    return (a2 = this.media) == null ? void 0 : a2.addChapters(e);\n  }\n  get activeChapter() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.activeChapter;\n  }\n  get chapters() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.chapters) != null ? a2 : [];\n  }\n  getStartDate() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.getStartDate();\n  }\n  get currentPdt() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.currentPdt;\n  }\n  get tokens() {\n    let e = this.getAttribute(n.PLAYBACK_TOKEN), a2 = this.getAttribute(n.DRM_TOKEN), r10 = this.getAttribute(n.THUMBNAIL_TOKEN), o = this.getAttribute(n.STORYBOARD_TOKEN);\n    return __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, u2(this, oe4)), e != null ? { playback: e } : {}), a2 != null ? { drm: a2 } : {}), r10 != null ? { thumbnail: r10 } : {}), o != null ? { storyboard: o } : {});\n  }\n  set tokens(e) {\n    x3(this, oe4, e != null ? e : {});\n  }\n  get playbackToken() {\n    var e;\n    return (e = this.getAttribute(n.PLAYBACK_TOKEN)) != null ? e : void 0;\n  }\n  set playbackToken(e) {\n    this.setAttribute(n.PLAYBACK_TOKEN, `${e}`);\n  }\n  get drmToken() {\n    var e;\n    return (e = this.getAttribute(n.DRM_TOKEN)) != null ? e : void 0;\n  }\n  set drmToken(e) {\n    this.setAttribute(n.DRM_TOKEN, `${e}`);\n  }\n  get thumbnailToken() {\n    var e;\n    return (e = this.getAttribute(n.THUMBNAIL_TOKEN)) != null ? e : void 0;\n  }\n  set thumbnailToken(e) {\n    this.setAttribute(n.THUMBNAIL_TOKEN, `${e}`);\n  }\n  get storyboardToken() {\n    var e;\n    return (e = this.getAttribute(n.STORYBOARD_TOKEN)) != null ? e : void 0;\n  }\n  set storyboardToken(e) {\n    this.setAttribute(n.STORYBOARD_TOKEN, `${e}`);\n  }\n  addTextTrack(e, a2, r10, o) {\n    var l;\n    let s = (l = this.media) == null ? void 0 : l.nativeEl;\n    if (s) return W(s, e, a2, r10, o);\n  }\n  removeTextTrack(e) {\n    var r10;\n    let a2 = (r10 = this.media) == null ? void 0 : r10.nativeEl;\n    if (a2) return Re(a2, e);\n  }\n  get textTracks() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.textTracks;\n  }\n};\nre3 = /* @__PURE__ */ new WeakMap(), oe4 = /* @__PURE__ */ new WeakMap(), H4 = /* @__PURE__ */ new WeakMap(), ne3 = /* @__PURE__ */ new WeakMap(), Z4 = /* @__PURE__ */ new WeakMap(), O3 = /* @__PURE__ */ new WeakSet(), V3 = function() {\n  var e, a2, r10, o;\n  if (!u2(this, re3)) {\n    x3(this, re3, true), b3(this, _2, W3).call(this);\n    try {\n      if (customElements.upgrade(this.mediaTheme), !(this.mediaTheme instanceof c2.HTMLElement)) throw \"\";\n    } catch (e2) {\n      A2(\"<media-theme> failed to upgrade!\");\n    }\n    try {\n      if (customElements.upgrade(this.media), !(this.media instanceof ks)) throw \"\";\n    } catch (e2) {\n      A2(\"<mux-video> failed to upgrade!\");\n    }\n    try {\n      if (customElements.upgrade(this.mediaController), !(this.mediaController instanceof media_controller_default)) throw \"\";\n    } catch (e2) {\n      A2(\"<media-controller> failed to upgrade!\");\n    }\n    this.init(), b3(this, ke4, Bt3).call(this), b3(this, Te3, Ut3).call(this), b3(this, Ae2, Kt2).call(this), x3(this, H4, (a2 = (e = this.mediaController) == null ? void 0 : e.hasAttribute(Attributes.USER_INACTIVE)) != null ? a2 : true), b3(this, Ce4, $t2).call(this), (r10 = this.media) == null || r10.addEventListener(\"streamtypechange\", () => b3(this, _2, W3).call(this)), (o = this.media) == null || o.addEventListener(\"loadstart\", () => b3(this, _2, W3).call(this));\n  }\n}, Ee4 = /* @__PURE__ */ new WeakSet(), Ht2 = function() {\n  var e, a2;\n  try {\n    (e = window == null ? void 0 : window.CSS) == null || e.registerProperty({ name: \"--media-primary-color\", syntax: \"<color>\", inherits: true }), (a2 = window == null ? void 0 : window.CSS) == null || a2.registerProperty({ name: \"--media-secondary-color\", syntax: \"<color>\", inherits: true });\n  } catch (e2) {\n  }\n}, se3 = /* @__PURE__ */ new WeakSet(), Ke4 = function(e) {\n  Object.assign(u2(this, Z4), e), b3(this, _2, W3).call(this);\n}, _2 = /* @__PURE__ */ new WeakSet(), W3 = function(e = {}) {\n  wt2(St2(xa2(this, __spreadValues(__spreadValues({}, u2(this, Z4)), e))), this.shadowRoot);\n}, ke4 = /* @__PURE__ */ new WeakSet(), Bt3 = function() {\n  let e = (r10) => {\n    var l, h3;\n    if (!(r10 != null && r10.startsWith(\"theme-\"))) return;\n    let o = r10.replace(/^theme-/, \"\");\n    if (Ue3.includes(o)) return;\n    let s = this.getAttribute(r10);\n    s != null ? (l = this.mediaTheme) == null || l.setAttribute(o, s) : (h3 = this.mediaTheme) == null || h3.removeAttribute(o);\n  };\n  new MutationObserver((r10) => {\n    for (let { attributeName: o } of r10) e(o);\n  }).observe(this, { attributes: true }), this.getAttributeNames().forEach(e);\n}, Te3 = /* @__PURE__ */ new WeakSet(), Ut3 = function() {\n  var a2;\n  let e = (r10) => {\n    let { detail: o } = r10;\n    if (o instanceof x || (o = new x(o.message, o.code, o.fatal)), !(o != null && o.fatal)) {\n      I3(o), o.data && I3(`${o.name} data:`, o.data);\n      return;\n    }\n    let { dialog: s, devlog: l } = ge3(o, !window.navigator.onLine, this.playbackId, this.playbackToken);\n    l.message && _e4(l), A2(o), o.data && A2(`${o.name} data:`, o.data), b3(this, se3, Ke4).call(this, { isDialogOpen: true, dialog: s });\n  };\n  this.addEventListener(\"error\", e), this.media && (this.media.errorTranslator = (r10 = {}) => {\n    var s, l, h3;\n    if (!(((s = this.media) == null ? void 0 : s.error) instanceof x)) return r10;\n    let { devlog: o } = ge3((l = this.media) == null ? void 0 : l.error, !window.navigator.onLine, this.playbackId, this.playbackToken, false);\n    return { player_error_code: (h3 = this.media) == null ? void 0 : h3.error.code, player_error_message: o.message ? String(o.message) : r10.player_error_message, player_error_context: o.context ? String(o.context) : r10.player_error_context };\n  }), (a2 = this.media) == null || a2.addEventListener(\"error\", (r10) => {\n    var s, l;\n    let { detail: o } = r10;\n    if (!o) {\n      let { message: h3, code: R2 } = (l = (s = this.media) == null ? void 0 : s.error) != null ? l : {};\n      o = new x(h3, R2);\n    }\n    o != null && o.fatal && this.dispatchEvent(new CustomEvent(\"error\", { detail: o }));\n  });\n}, Ae2 = /* @__PURE__ */ new WeakSet(), Kt2 = function() {\n  var a2, r10, o, s;\n  let e = () => b3(this, _2, W3).call(this);\n  (r10 = (a2 = this.media) == null ? void 0 : a2.textTracks) == null || r10.addEventListener(\"addtrack\", e), (s = (o = this.media) == null ? void 0 : o.textTracks) == null || s.addEventListener(\"removetrack\", e);\n}, Ce4 = /* @__PURE__ */ new WeakSet(), $t2 = function() {\n  var R2, k3;\n  if (!/Firefox/i.test(navigator.userAgent)) return;\n  let a2, r10 = /* @__PURE__ */ new WeakMap(), o = () => this.streamType === g.LIVE && !this.secondaryColor && this.offsetWidth >= 800, s = (v4, f, C3 = false) => {\n    if (o()) return;\n    Array.from(v4 && v4.activeCues || []).forEach((g2) => {\n      if (!(!g2.snapToLines || g2.line < -5 || g2.line >= 0 && g2.line < 10)) if (!f || this.paused) {\n        let B5 = g2.text.split(`\n`).length, q3 = -3;\n        this.streamType === g.LIVE && (q3 = -2);\n        let z2 = q3 - B5;\n        if (g2.line === z2 && !C3) return;\n        r10.has(g2) || r10.set(g2, g2.line), g2.line = z2;\n      } else setTimeout(() => {\n        g2.line = r10.get(g2) || \"auto\";\n      }, 500);\n    });\n  }, l = () => {\n    var v4, f;\n    s(a2, (f = (v4 = this.mediaController) == null ? void 0 : v4.hasAttribute(Attributes.USER_INACTIVE)) != null ? f : false);\n  }, h3 = () => {\n    var C3, P2;\n    let f = Array.from(((P2 = (C3 = this.mediaController) == null ? void 0 : C3.media) == null ? void 0 : P2.textTracks) || []).filter((g2) => [\"subtitles\", \"captions\"].includes(g2.kind) && g2.mode === \"showing\")[0];\n    f !== a2 && (a2 == null || a2.removeEventListener(\"cuechange\", l)), a2 = f, a2 == null || a2.addEventListener(\"cuechange\", l), s(a2, u2(this, H4));\n  };\n  h3(), (R2 = this.textTracks) == null || R2.addEventListener(\"change\", h3), (k3 = this.textTracks) == null || k3.addEventListener(\"addtrack\", h3), this.addEventListener(\"userinactivechange\", () => {\n    var f, C3;\n    let v4 = (C3 = (f = this.mediaController) == null ? void 0 : f.hasAttribute(Attributes.USER_INACTIVE)) != null ? C3 : true;\n    u2(this, H4) !== v4 && (x3(this, H4, v4), s(a2, u2(this, H4)));\n  });\n};\nfunction Y3(t2, i2) {\n  return t2.media ? t2.media.getAttribute(i2) : t2.getAttribute(i2);\n}\nc2.customElements.get(\"mux-player\") || (c2.customElements.define(\"mux-player\", ie4), c2.MuxPlayerElement = ie4);\n\n// node_modules/.pnpm/@mux+mux-player-react@2.9.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@mux/mux-player-react/dist/index.mjs\nimport { useRef as ye4 } from \"react\";\nimport { useEffect as ee5, useRef as ne4 } from \"react\";\nimport { useEffect as te5 } from \"react\";\nvar p2 = { className: \"class\", classname: \"class\", htmlFor: \"for\", crossOrigin: \"crossorigin\", viewBox: \"viewBox\", playsInline: \"playsinline\", autoPlay: \"autoplay\", playbackRate: \"playbackrate\" };\nvar Y4 = (e) => e == null;\nvar $5 = (e, n2) => Y4(n2) ? false : e in n2;\nvar Q4 = (e) => e.replace(/[A-Z]/g, (n2) => `-${n2.toLowerCase()}`);\nvar X5 = (e, n2) => {\n  if (!(typeof n2 == \"boolean\" && !n2)) {\n    if ($5(e, p2)) return p2[e];\n    if (typeof n2 != null) return /[A-Z]/.test(e) ? Q4(e) : e;\n  }\n};\nvar B4 = (e, n2) => typeof e == \"boolean\" ? \"\" : e;\nvar d3 = (e = {}) => Object.entries(e).reduce((n2, [t2, o]) => {\n  let r10 = X5(t2, o);\n  if (!r10) return n2;\n  let s = B4(o, t2);\n  return n2[r10] = s, n2;\n}, {});\nvar m2 = (...e) => {\n  let n2 = ne4(null);\n  return ee5(() => {\n    e.forEach((t2) => {\n      t2 && (typeof t2 == \"function\" ? t2(n2.current) : t2.current = n2.current);\n    });\n  }, [e]), n2;\n};\nvar ae4 = Object.prototype.hasOwnProperty;\nvar re4 = (e, n2) => {\n  if (Object.is(e, n2)) return true;\n  if (typeof e != \"object\" || e === null || typeof n2 != \"object\" || n2 === null) return false;\n  if (Array.isArray(e)) return !Array.isArray(n2) || e.length !== n2.length ? false : e.some((r10, s) => n2[s] === r10);\n  let t2 = Object.keys(e), o = Object.keys(n2);\n  if (t2.length !== o.length) return false;\n  for (let r10 = 0; r10 < t2.length; r10++) if (!ae4.call(n2, t2[r10]) || !Object.is(e[t2[r10]], n2[t2[r10]])) return false;\n  return true;\n};\nvar c3 = (e, n2, t2) => !re4(n2, e[t2]);\nvar oe5 = (e, n2, t2) => {\n  e[t2] = n2;\n};\nvar ie5 = (e, n2, t2, o = oe5, r10 = c3) => te5(() => {\n  let s = t2 == null ? void 0 : t2.current;\n  s && r10(s, n2, e) && o(s, n2, e);\n}, [t2 == null ? void 0 : t2.current, n2]);\nvar i = ie5;\nvar se4 = () => {\n  try {\n    return \"2.9.1\";\n  } catch (e) {\n  }\n  return \"UNKNOWN\";\n};\nvar le5 = se4();\nvar E3 = () => le5;\nvar ce5 = y4.forwardRef((_a3, t2) => {\n  var _b = _a3, { children: e } = _b, n2 = __objRest(_b, [\"children\"]);\n  return y4.createElement(\"mux-player\", d3(__spreadProps(__spreadValues({}, n2), { ref: t2 })), e);\n});\nvar a = (e, n2, t2) => ue5(() => {\n  let o = n2 == null ? void 0 : n2.current;\n  if (!(!o || !t2)) return o.addEventListener(e, t2), () => {\n    o.removeEventListener(e, t2);\n  };\n}, [n2 == null ? void 0 : n2.current, t2]);\nvar pe3 = (e, n2) => {\n  let _a3 = n2, { onAbort: t2, onCanPlay: o, onCanPlayThrough: r10, onEmptied: s, onLoadStart: g2, onLoadedData: M4, onLoadedMetadata: P2, onProgress: f, onDurationChange: b4, onVolumeChange: v4, onRateChange: x4, onResize: h3, onWaiting: T3, onPlay: R2, onPlaying: C3, onTimeUpdate: k3, onPause: L2, onSeeking: O4, onSeeked: S4, onStalled: G4, onSuspend: w2, onEnded: V4, onError: A3, onCuePointChange: N3, onCuePointsChange: I4, onChapterChange: K5, metadata: D3, tokens: U4, paused: _3, playbackId: H5, playbackRates: j4, currentTime: z2, themeProps: F5, extraSourceParams: W4, _hlsConfig: Z5 } = _a3, q3 = __objRest(_a3, [\"onAbort\", \"onCanPlay\", \"onCanPlayThrough\", \"onEmptied\", \"onLoadStart\", \"onLoadedData\", \"onLoadedMetadata\", \"onProgress\", \"onDurationChange\", \"onVolumeChange\", \"onRateChange\", \"onResize\", \"onWaiting\", \"onPlay\", \"onPlaying\", \"onTimeUpdate\", \"onPause\", \"onSeeking\", \"onSeeked\", \"onStalled\", \"onSuspend\", \"onEnded\", \"onError\", \"onCuePointChange\", \"onCuePointsChange\", \"onChapterChange\", \"metadata\", \"tokens\", \"paused\", \"playbackId\", \"playbackRates\", \"currentTime\", \"themeProps\", \"extraSourceParams\", \"_hlsConfig\"]);\n  return i(\"playbackRates\", j4, e), i(\"metadata\", D3, e), i(\"extraSourceParams\", W4, e), i(\"_hlsConfig\", Z5, e), i(\"themeProps\", F5, e), i(\"tokens\", U4, e), i(\"playbackId\", H5, e), i(\"paused\", _3, e, (l, u3) => {\n    u3 != null && (u3 ? l.pause() : l.play());\n  }, (l, u3, J4) => l.hasAttribute(\"autoplay\") && !l.hasPlayed ? false : c3(l, u3, J4)), i(\"currentTime\", z2, e, (l, u3) => {\n    u3 != null && (l.currentTime = u3);\n  }), a(\"abort\", e, t2), a(\"canplay\", e, o), a(\"canplaythrough\", e, r10), a(\"emptied\", e, s), a(\"loadstart\", e, g2), a(\"loadeddata\", e, M4), a(\"loadedmetadata\", e, P2), a(\"progress\", e, f), a(\"durationchange\", e, b4), a(\"volumechange\", e, v4), a(\"ratechange\", e, x4), a(\"resize\", e, h3), a(\"waiting\", e, T3), a(\"play\", e, R2), a(\"playing\", e, C3), a(\"timeupdate\", e, k3), a(\"pause\", e, L2), a(\"seeking\", e, O4), a(\"seeked\", e, S4), a(\"stalled\", e, G4), a(\"suspend\", e, w2), a(\"ended\", e, V4), a(\"error\", e, A3), a(\"cuepointchange\", e, N3), a(\"cuepointschange\", e, I4), a(\"chapterchange\", e, K5), [q3];\n};\nvar de5 = E3();\nvar me4 = \"mux-player-react\";\nvar Ee5 = y4.forwardRef((e, n2) => {\n  let t2 = ye4(null), o = m2(t2, n2), [r10] = pe3(t2, e);\n  return y4.createElement(ce5, __spreadValues({ ref: o, playerSoftwareName: me4, playerSoftwareVersion: de5 }, r10));\n});\nvar Ae3 = Ee5;\n\nexport {\n  Ae3 as Ae\n};\n/*! Bundled license information:\n\nmux-embed/dist/mux.mjs:\n  (*!\n  * JavaScript Cookie v2.1.3\n  * https://github.com/js-cookie/js-cookie\n  *\n  * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n  * Released under the MIT license\n  *)\n*/\n","import {\n  Spinner\n} from \"./chunk-SDKSBXQ2.mjs\";\nimport {\n  Arrow\n} from \"./chunk-EJKG6TUT.mjs\";\nimport {\n  Ae\n} from \"./chunk-PO4BOMMR.mjs\";\nimport {\n  AspectRatio,\n  cx,\n  useMounted\n} from \"./chunk-XHUQFNFZ.mjs\";\n\n// src/class/Video.tsx\nimport { useEffect, useRef, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction Video({\n  video,\n  showNote = false,\n  noteLink = \"https://comfy-for-real-ads.notion.to/\"\n}) {\n  const mounted = useMounted();\n  const { playbackId, title, thumbnailTime, chapters, workflows } = video;\n  const videoRef = useRef(null);\n  const playbackKey = playbackId;\n  const [lastKnownTime, setLastKnownTime] = useState(0);\n  const [isFirstPlay, setIsFirstPlay] = useState(true);\n  const [canPlay, setCanPlay] = useState(false);\n  useEffect(() => {\n    if (!mounted) return;\n    const player = videoRef.current;\n    if (player) {\n      const savedTime = parseFloat(window.localStorage.getItem(playbackId)) || 0;\n      setLastKnownTime(savedTime);\n      const handleTimeUpdate = (e) => {\n        window.localStorage.setItem(playbackKey, e.target.currentTime);\n      };\n      const handleEnded = () => {\n        window.localStorage.removeItem(playbackKey);\n      };\n      const handlePlay = () => {\n        if (isFirstPlay && lastKnownTime > 0) {\n          player.pause();\n          const formattedTime = new Date(lastKnownTime * 1e3).toISOString().substr(11, 8);\n          const resume = window.confirm(\n            `\\uC774\\uC804\\uC5D0 \\uC7AC\\uC0DD\\uD558\\uC2E0 \\uBD80\\uBD84\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uC2DC\\uACA0\\uC5B4\\uC694? (${formattedTime})`\n          );\n          if (resume) {\n            player.currentTime = lastKnownTime;\n          } else {\n            player.currentTime = 0;\n          }\n          player.play();\n          setIsFirstPlay(false);\n        }\n      };\n      player.addEventListener(\"timeupdate\", handleTimeUpdate);\n      player.addEventListener(\"ended\", handleEnded);\n      player.addEventListener(\"play\", handlePlay);\n      return () => {\n        player.removeEventListener(\"timeupdate\", handleTimeUpdate);\n        player.removeEventListener(\"ended\", handleEnded);\n        player.removeEventListener(\"play\", handlePlay);\n      };\n    }\n  }, [isFirstPlay, lastKnownTime, playbackKey, videoRef, mounted]);\n  return /* @__PURE__ */ jsxs(Fragment, { children: [\n    /* @__PURE__ */ jsxs(AspectRatio, { ratio: 3456 / 2234, style: { overflow: \"hidden\" }, children: [\n      !canPlay && /* @__PURE__ */ jsx(\n        Spinner,\n        {\n          style: {\n            width: 24,\n            height: 24,\n            position: \"absolute\",\n            left: \"50%\",\n            top: \"50%\",\n            transform: \"translate(-50%, -50%)\"\n          }\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          className: cx(\n            \"w-full transition-all ease-in-out delay-650\",\n            \"absolute left-0 top-0\",\n            canPlay ? \"md:opacity-100\" : \"md:opacity-0\",\n            \"opacity-100\"\n          ),\n          children: /* @__PURE__ */ jsx(\n            Ae,\n            {\n              ref: videoRef,\n              streamType: \"on-demand\",\n              metadataVideoTitle: title,\n              primaryColor: \"#FFFFFF\",\n              secondaryColor: \"#000000\",\n              accentColor: \"#005DFA\",\n              playbackId,\n              thumbnailTime,\n              onCanPlay: () => setCanPlay(true)\n            }\n          )\n        }\n      )\n    ] }),\n    /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-row justify-between w-full\", children: [\n      /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col gap-5\", children: [\n        /* @__PURE__ */ jsx(VideoIndex, { playerRef: videoRef, chapters }),\n        (workflows == null ? void 0 : workflows.length) > 0 && /* @__PURE__ */ jsxs(\n          \"div\",\n          {\n            className: \"flex flex-col justify-end gap-2\",\n            style: {\n              border: \"1px solid #005DFA\",\n              borderStyle: \"dashed\",\n              padding: \"12px 24px\",\n              borderRadius: \"4px\"\n            },\n            children: [\n              /* @__PURE__ */ jsx(\"div\", { className: \"font-bold text-base\", style: { color: \"#005DFA\" }, children: \"Workflows\" }),\n              workflows.map((workflow, index) => /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-row gap-2 items-center\", children: [\n                /* @__PURE__ */ jsx(\n                  \"a\",\n                  {\n                    href: workflow.link,\n                    target: \"_blank\",\n                    className: \"text-sm\",\n                    style: { color: \"#005DFA\" },\n                    children: workflow.title\n                  }\n                ),\n                /* @__PURE__ */ jsx(Arrow, { className: \"w-4 h-4\" })\n              ] }, index))\n            ]\n          }\n        )\n      ] }),\n      showNote ? /* @__PURE__ */ jsx(\n        \"a\",\n        {\n          href: noteLink,\n          target: \"_blank\",\n          className: \"font-bold text-base\",\n          style: { color: \"#005DFA\" },\n          children: \"\\uAC15\\uC758 \\uB178\\uD2B8\"\n        }\n      ) : /* @__PURE__ */ jsx(\"div\", {})\n    ] })\n  ] });\n}\nvar VideoIndex = ({ playerRef, chapters }) => {\n  const handleChapterClick = (time) => {\n    const [minutes, seconds] = time.split(\":\").map(Number);\n    const timeInSeconds = minutes * 60 + seconds;\n    if (playerRef.current) {\n      playerRef.current.currentTime = timeInSeconds;\n    }\n  };\n  return /* @__PURE__ */ jsx(\"ul\", { style: { listStyle: \"none\" }, children: chapters.map((chapter, index) => /* @__PURE__ */ jsxs(\"li\", { onClick: () => handleChapterClick(chapter.time), children: [\n    /* @__PURE__ */ jsx(\n      \"span\",\n      {\n        style: {\n          color: \"#005DFA\",\n          cursor: \"pointer\",\n          width: \"30px\",\n          display: \"inline-block\",\n          textAlign: \"right\",\n          marginRight: \"4px\"\n        },\n        children: chapter.time\n      }\n    ),\n    \" \",\n    chapter.title\n  ] }, index)) });\n};\n\nexport {\n  Video\n};\n","import {\n  NeedPayment\n} from \"./chunk-RZ4MXR2C.mjs\";\nimport {\n  Video\n} from \"./chunk-RIZ22KMY.mjs\";\nimport {\n  Button,\n  CourseTitle,\n  LiveEventInfo,\n  NordyInfo,\n  VideoItem\n} from \"./chunk-SDKSBXQ2.mjs\";\nimport {\n  isDev\n} from \"./chunk-XHUQFNFZ.mjs\";\nimport {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\n\n// src/class/VideoList.tsx\nimport { ControlType } from \"framer\";\nimport { useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction VideoList({\n  passwordProtect,\n  courseId,\n  title,\n  showNote,\n  showNordyInfo,\n  showLiveEventInfo,\n  videos,\n  noteLink\n}) {\n  var _a;\n  const [store, setStore] = useGlobalStore();\n  const [password, setPassword] = useState(\"\");\n  const [canAccess, setCanAccess] = useState(false);\n  const { user } = store;\n  const firstVideo = videos[0];\n  const [current, setCurrent] = useState(firstVideo);\n  if (!isDev && !(courseId === \"my-ai-model\") && !passwordProtect) {\n    if (!user) return;\n    if (!((_a = user.access) == null ? void 0 : _a[courseId])) return /* @__PURE__ */ jsx(NeedPayment, {});\n  }\n  if (passwordProtect && !canAccess) {\n    return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col gap-2\", children: [\n      /* @__PURE__ */ jsx(\"div\", { className: \"text-sm text-gray-500\", children: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC785\\uB825\\uD574\\uC8FC\\uC138\\uC694.\" }),\n      /* @__PURE__ */ jsx(\n        \"input\",\n        {\n          type: \"password\",\n          value: password,\n          onChange: (e) => setPassword(e.target.value),\n          className: \"border border-gray-300 rounded-md p-2\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        Button,\n        {\n          text: \"\\uC785\\uC7A5 \\uD558\\uAE30\",\n          variant: \"primary\",\n          onClick: () => {\n            setCanAccess(password === \"4893\");\n          }\n        }\n      )\n    ] }) });\n  }\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col gap-8 md:flex-row\", children: [\n    /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col gap-8 w-80 p-2 sticky top-0 h-fit max-md:relative max-md:w-full max-md:overflow-y-scroll\", children: [\n      /* @__PURE__ */ jsx(CourseTitle, { title, style: { width: \"100%\" } }),\n      /* @__PURE__ */ jsx(\"div\", { children: videos.map((video, id) => /* @__PURE__ */ jsx(\n        VideoItem,\n        {\n          title: `${video.title} ${video.locked ? \"\" : `(${video.duration})`}`,\n          onClick: () => setCurrent(video),\n          variant: (() => {\n            if (video.locked) return \"locked\";\n            return video.playbackId === current.playbackId ? \"active\" : \"default\";\n          })(),\n          category: video.category,\n          showBadges: video.showBadges,\n          showBadge: video.showBadge,\n          style: { width: \"100%\" }\n        },\n        id + current\n      )) })\n    ] }),\n    /* @__PURE__ */ jsxs(\n      \"div\",\n      {\n        style: {\n          flex: 1,\n          display: \"flex\",\n          flexDirection: \"column\",\n          alignItems: \"start\",\n          gap: 32\n        },\n        className: \"sticky top-0 h-fit\",\n        children: [\n          /* @__PURE__ */ jsx(\n            Video,\n            {\n              video: current,\n              showNote,\n              noteLink\n            },\n            current.playbackId\n          ),\n          courseId === \"comfy-and-celeb-models\" && /* @__PURE__ */ jsx(\n            Button,\n            {\n              text: `\\uC704 \\uB0B4\\uC6A9\\uB4E4\\uC744 \\uB354 \\uC790\\uC138\\uD788 \\uBC30\\uC6B0\\uACE0 \\uC2F6\\uB2E4\\uBA74? \\u{1F449}\\u{1F3FB} \\uBCF8\\uAC15\\uC758 \\uB458\\uB7EC\\uBCF4\\uAE30`,\n              variant: \"primary\",\n              onClick: () => window.open(\n                \"https://harbor.school/courses/comfy-for-real-ads/\",\n                \"_blank\"\n              )\n            }\n          ),\n          courseId !== \"comfy-and-celeb-models\" && /* @__PURE__ */ jsx(\n            Button,\n            {\n              text: `\\uC2AC\\uB799\\uC5D0\\uC11C \\uBB3B\\uACE0 \\uB2F5\\uD558\\uAE30 (#${courseId} \\uCC44\\uB110)`,\n              variant: \"primary\",\n              onClick: () => window.open(\n                \"https://join.slack.com/t/harbor-school/shared_invite/zt-2lk1yeevo-BLNt1IGXduBstl10Pk_JxQ\",\n                \"_blank\"\n              )\n            }\n          ),\n          showNordyInfo && /* @__PURE__ */ jsx(NordyInfo, {}),\n          showLiveEventInfo && /* @__PURE__ */ jsx(LiveEventInfo, {})\n        ]\n      }\n    )\n  ] });\n}\nVideoList.propertyControls = {\n  passwordProtect: {\n    type: ControlType.Boolean,\n    defaultValue: false\n  },\n  courseId: {\n    type: ControlType.String\n  },\n  title: {\n    type: ControlType.String,\n    defaultValue: `\\uC9C4\\uC9DC \\uAD11\\uACE0 \\uC774\\uBBF8\\uC9C0\\uB97C \\uB9CC\\uB4E4\\uBA74\\uC11C\n\\uBC30\\uC6B0\\uB294 AI (ComfyUI)`,\n    displayTextArea: true\n  },\n  showNote: {\n    type: ControlType.Boolean,\n    defaultValue: false\n  },\n  noteLink: {\n    type: ControlType.String,\n    defaultValue: \"https://comfy-for-real-ads.notion.to/\"\n  },\n  showNordyInfo: {\n    type: ControlType.Boolean,\n    defaultValue: true\n  },\n  showLiveEventInfo: {\n    type: ControlType.Boolean,\n    defaultValue: false\n  },\n  videos: {\n    type: ControlType.Array,\n    control: {\n      type: ControlType.Object,\n      controls: {\n        title: { type: ControlType.String },\n        duration: { type: ControlType.String },\n        thumbnailTime: {\n          type: ControlType.Number,\n          displayStepper: true\n        },\n        locked: { type: ControlType.Boolean, defaultValue: true },\n        playbackId: { type: ControlType.String },\n        category: { type: ControlType.String, defaultValue: \"\" },\n        showBadges: { type: ControlType.Boolean, defaultValue: false },\n        showBadge: { type: ControlType.Boolean, defaultValue: false },\n        chapters: {\n          type: ControlType.Array,\n          control: {\n            type: ControlType.Object,\n            controls: {\n              time: { type: ControlType.String },\n              title: { type: ControlType.String }\n            }\n          }\n        },\n        workflows: {\n          type: ControlType.Array,\n          control: {\n            type: ControlType.Object,\n            controls: {\n              title: { type: ControlType.String },\n              link: { type: ControlType.String }\n            }\n          }\n        }\n      }\n    },\n    defaultValue: [\n      {\n        playbackId: \"XMPYGKG1MpOGgz9L01IvbkreyK8ZLbCusIE77TlxBirU\",\n        title: \"Video Title\",\n        duration: \"10:23\",\n        thumbnailTime: 10\n      }\n    ]\n  }\n};\n\nexport {\n  VideoList\n};\n","import {\n  afterPayments\n} from \"./chunk-Q5CPC3JV.mjs\";\nimport {\n  getCustomData\n} from \"./chunk-HQBHGXH5.mjs\";\nimport {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\nimport {\n  __async\n} from \"./chunk-JWK35I2R.mjs\";\n\n// src/payments/HandleMobileRedirection.tsx\nimport { useEffect } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction HandleMobileRedirection(props) {\n  const [store, setStore] = useGlobalStore();\n  const { clerk, supabase, user } = store;\n  useEffect(() => {\n    if (!supabase) return;\n    const urlParams = new URLSearchParams(window.location.search);\n    const paymentId = urlParams.get(\"paymentId\");\n    const courseId = urlParams.get(\"courseId\");\n    console.log({ paymentId, courseId });\n    if (paymentId && courseId) update();\n    function update() {\n      return __async(this, null, function* () {\n        const url = `https://api.portone.io/payments/${paymentId}`;\n        const options = {\n          method: \"get\",\n          headers: {\n            \"Content-Type\": \"application/json\",\n            Authorization: `PortOne OjRGB7mXwV755EDUV9mW7nIf7RYAxdIYxeQn2AyW3p4n75YsQM2pCudTeRl1U890k5o3at5lXauxCJFx`\n          }\n        };\n        try {\n          const response = yield fetch(url, options);\n          const paymentData = yield response.json();\n          console.log(\"paymentData\", paymentData);\n          const email = paymentData.customer.email;\n          const username = paymentData.customer.name;\n          const phone = paymentData.customer.phoneNumber;\n          if (paymentData.status === \"PAID\") {\n            const customData = yield getCustomData();\n            afterPayments({\n              supabase,\n              courseId,\n              paymentId,\n              email,\n              username,\n              phone,\n              totalAmount: customData.value\n            });\n          } else alert(\"\\uACB0\\uC81C \\uC5D0\\uB7EC\");\n        } catch (error) {\n          console.error(error);\n        }\n      });\n    }\n  }, [supabase]);\n  return /* @__PURE__ */ jsx(\"h1\", { className: \"text-2xl font-bold\", children: \"\\uACB0\\uC81C \\uC644\\uB8CC\\uC911..\" });\n}\n\nexport {\n  HandleMobileRedirection\n};\n","import {\n  CourseCard\n} from \"./chunk-SDKSBXQ2.mjs\";\nimport {\n  isDev\n} from \"./chunk-XHUQFNFZ.mjs\";\nimport {\n  courses\n} from \"./chunk-HQBHGXH5.mjs\";\nimport {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\n\n// src/class/ClasList.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction ClassList(props) {\n  const [store, setStore] = useGlobalStore();\n  const { user } = store;\n  if (!isDev) {\n    if (!user) return;\n  }\n  const myCourses = Object.keys((user == null ? void 0 : user.access) || {});\n  return /* @__PURE__ */ jsx(\"div\", { className: \"flex flex-col gap-8 justify-center md:flex-row\", children: myCourses.map((course, id) => {\n    const courseInfo = courses[course];\n    if (!courseInfo) return null;\n    return /* @__PURE__ */ jsx(\n      CourseCard,\n      {\n        smallTitle: \"\",\n        subTitle: courses[course].title,\n        content: \"\\uC218\\uAC15 \\uC911 \\uC785\\uB2C8\\uB2E4\",\n        link: courses[course].link,\n        style: { width: \"100%\" }\n      },\n      id\n    );\n  }) });\n}\n\nexport {\n  ClassList\n};\n","// src/class/Framer101-2.tsx\nimport { motion } from \"framer-motion\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction Framer101_2() {\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100\", children: [\n    /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 md:px-8 lg:px-16 bg-indigo-600 text-white text-center\", children: [\n      /* @__PURE__ */ jsx(\n        motion.h1,\n        {\n          initial: { opacity: 0, y: 50 },\n          animate: { opacity: 1, y: 0 },\n          transition: { duration: 0.8 },\n          className: \"text-5xl font-bold mb-4\",\n          children: \"Framer 101: Master Interactive Design\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        motion.p,\n        {\n          initial: { opacity: 0, y: 50 },\n          animate: { opacity: 1, y: 0 },\n          transition: { duration: 0.8, delay: 0.2 },\n          className: \"text-2xl mb-8\",\n          children: \"Transform your ideas into stunning, interactive prototypes and websites \\u2013 no coding required!\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        motion.button,\n        {\n          initial: { opacity: 0, y: 50 },\n          animate: { opacity: 1, y: 0 },\n          transition: { duration: 0.8, delay: 0.4 },\n          whileHover: { scale: 1.05 },\n          className: \"bg-white text-indigo-600 font-bold py-3 px-6 rounded-full text-lg hover:bg-indigo-100 transition\",\n          children: \"Enroll Now and Start Creating\"\n        }\n      )\n    ] }),\n    /* @__PURE__ */ jsxs(\"section\", { className: \"py-16 px-4 md:px-8 lg:px-16\", children: [\n      /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"Why Choose Our Framer Course?\" }),\n      /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: [\n        /* @__PURE__ */ jsxs(\n          motion.div,\n          {\n            initial: { opacity: 0, y: 50 },\n            whileInView: { opacity: 1, y: 0 },\n            transition: { duration: 0.5 },\n            viewport: { once: true },\n            className: \"bg-white p-6 rounded-lg shadow-lg\",\n            children: [\n              /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-semibold mb-4\", children: \"Hands-On Learning\" }),\n              /* @__PURE__ */ jsx(\"p\", { children: \"Build real projects inspired by top courses like Harbor School's Framer 101 and Fastcampus Framer.\" })\n            ]\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          motion.div,\n          {\n            initial: { opacity: 0, y: 50 },\n            whileInView: { opacity: 1, y: 0 },\n            transition: { duration: 0.5, delay: 0.2 },\n            viewport: { once: true },\n            className: \"bg-white p-6 rounded-lg shadow-lg\",\n            children: [\n              /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-semibold mb-4\", children: \"Expert Instruction\" }),\n              /* @__PURE__ */ jsx(\"p\", { children: \"Learn from industry pros who've created amazing interactive experiences.\" })\n            ]\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          motion.div,\n          {\n            initial: { opacity: 0, y: 50 },\n            whileInView: { opacity: 1, y: 0 },\n            transition: { duration: 0.5, delay: 0.4 },\n            viewport: { once: true },\n            className: \"bg-white p-6 rounded-lg shadow-lg\",\n            children: [\n              /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-semibold mb-4\", children: \"Lifetime Access\" }),\n              /* @__PURE__ */ jsx(\"p\", { children: \"Get unlimited access to course materials and future updates.\" })\n            ]\n          }\n        )\n      ] })\n    ] }),\n    /* @__PURE__ */ jsxs(\"section\", { className: \"py-16 px-4 md:px-8 lg:px-16 bg-gray-100\", children: [\n      /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"What You'll Learn\" }),\n      /* @__PURE__ */ jsxs(\"ul\", { className: \"list-disc pl-8 max-w-3xl mx-auto text-lg\", children: [\n        /* @__PURE__ */ jsx(\n          motion.li,\n          {\n            initial: { opacity: 0, x: -50 },\n            whileInView: { opacity: 1, x: 0 },\n            transition: { duration: 0.5 },\n            viewport: { once: true },\n            children: \"Framer fundamentals and interface navigation\"\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          motion.li,\n          {\n            initial: { opacity: 0, x: -50 },\n            whileInView: { opacity: 1, x: 0 },\n            transition: { duration: 0.5, delay: 0.1 },\n            viewport: { once: true },\n            children: \"Creating responsive layouts and components\"\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          motion.li,\n          {\n            initial: { opacity: 0, x: -50 },\n            whileInView: { opacity: 1, x: 0 },\n            transition: { duration: 0.5, delay: 0.2 },\n            viewport: { once: true },\n            children: \"Advanced animations and interactions\"\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          motion.li,\n          {\n            initial: { opacity: 0, x: -50 },\n            whileInView: { opacity: 1, x: 0 },\n            transition: { duration: 0.5, delay: 0.3 },\n            viewport: { once: true },\n            children: \"Integrating with CMS and data sources\"\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          motion.li,\n          {\n            initial: { opacity: 0, x: -50 },\n            whileInView: { opacity: 1, x: 0 },\n            transition: { duration: 0.5, delay: 0.4 },\n            viewport: { once: true },\n            children: \"Publishing and optimizing your projects\"\n          }\n        )\n      ] })\n    ] }),\n    /* @__PURE__ */ jsxs(\"section\", { className: \"py-16 px-4 md:px-8 lg:px-16\", children: [\n      /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"What Our Students Say\" }),\n      /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-2 gap-8\", children: [\n        /* @__PURE__ */ jsxs(\n          motion.div,\n          {\n            initial: { opacity: 0, scale: 0.9 },\n            whileInView: { opacity: 1, scale: 1 },\n            transition: { duration: 0.5 },\n            viewport: { once: true },\n            className: \"bg-white p-6 rounded-lg shadow-lg\",\n            children: [\n              /* @__PURE__ */ jsx(\"p\", { className: \"italic mb-4\", children: '\"This course transformed how I approach design. Absolutely essential!\"' }),\n              /* @__PURE__ */ jsx(\"p\", { className: \"font-semibold\", children: \"- Alex D., UI Designer\" })\n            ]\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          motion.div,\n          {\n            initial: { opacity: 0, scale: 0.9 },\n            whileInView: { opacity: 1, scale: 1 },\n            transition: { duration: 0.5, delay: 0.2 },\n            viewport: { once: true },\n            className: \"bg-white p-6 rounded-lg shadow-lg\",\n            children: [\n              /* @__PURE__ */ jsx(\"p\", { className: \"italic mb-4\", children: '\"From beginner to pro in weeks. The projects are game-changers.\"' }),\n              /* @__PURE__ */ jsx(\"p\", { className: \"font-semibold\", children: \"- Sarah K., Product Manager\" })\n            ]\n          }\n        )\n      ] })\n    ] }),\n    /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 md:px-8 lg:px-16 bg-indigo-600 text-white text-center\", children: [\n      /* @__PURE__ */ jsx(\n        motion.h2,\n        {\n          initial: { opacity: 0, y: 50 },\n          whileInView: { opacity: 1, y: 0 },\n          transition: { duration: 0.8 },\n          viewport: { once: true },\n          className: \"text-4xl font-bold mb-4\",\n          children: \"Ready to Revolutionize Your Design Skills?\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        motion.p,\n        {\n          initial: { opacity: 0, y: 50 },\n          whileInView: { opacity: 1, y: 0 },\n          transition: { duration: 0.8, delay: 0.2 },\n          viewport: { once: true },\n          className: \"text-xl mb-8\",\n          children: \"Join thousands of designers who've elevated their craft with Framer.\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        motion.button,\n        {\n          initial: { opacity: 0, y: 50 },\n          whileInView: { opacity: 1, y: 0 },\n          transition: { duration: 0.8, delay: 0.4 },\n          whileHover: { scale: 1.05 },\n          viewport: { once: true },\n          className: \"bg-white text-indigo-600 font-bold py-3 px-6 rounded-full text-lg hover:bg-indigo-100 transition\",\n          children: \"Buy Now - Limited Time Offer!\"\n        }\n      )\n    ] })\n  ] });\n}\n\nexport {\n  Framer101_2\n};\n","// src/class/Framer101-3.tsx\nimport { useState, useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar colors = {\n  harborBlue: \"#005DFA\",\n  white: \"#FEFDFA\",\n  harborPink: \"#FCEBEF\",\n  textDark: \"#1a202c\",\n  textMedium: \"#4a5568\",\n  textLight: \"#718096\"\n};\nvar CheckIcon = ({ className }) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 24 24\",\n    fill: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        fillRule: \"evenodd\",\n        d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm13.36-1.814a.75.75 0 10-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 00-1.06 1.06l2.25 2.25a.75.75 0 001.14-.094l3.75-5.25z\",\n        clipRule: \"evenodd\"\n      }\n    )\n  }\n);\nvar StarIcon = ({ className }) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 24 24\",\n    fill: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        fillRule: \"evenodd\",\n        d: \"M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.007z\",\n        clipRule: \"evenodd\"\n      }\n    )\n  }\n);\nfunction Framer101_3() {\n  const features = [\n    \"\\uD504\\uB808\\uC774\\uBA38\\uC758 \\uBAA8\\uB4E0 \\uAE30\\uB2A5, \\uAE30\\uCD08\\uBD80\\uD130 \\uC2E4\\uBB34\\uAE4C\\uC9C0\",\n    \"Apple.com \\uC2A4\\uD0C0\\uC77C\\uC758 \\uACE0\\uAE09 \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158\",\n    \"\\uC2E4\\uC81C \\uCD9C\\uC2DC \\uAC00\\uB2A5\\uD55C \\uBC18\\uC751\\uD615 \\uC6F9 \\uD504\\uB85C\\uC81D\\uD2B8 \\uC81C\\uC791\",\n    \"\\uB514\\uC790\\uC778\\uB9CC\\uC73C\\uB85C \\uB05D\\uB0B4\\uC9C0 \\uC54A\\uB294, \\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uD65C\\uC6A9\\uBC95\",\n    \"Framer CMS\\uB97C \\uD65C\\uC6A9\\uD55C \\uB370\\uC774\\uD130 \\uC5F0\\uB3D9 \\uB9C8\\uC2A4\\uD130\",\n    \"AI\\uB97C \\uD65C\\uC6A9\\uD55C \\uC6F9\\uB514\\uC790\\uC778 \\uBC0F \\uCF54\\uB4DC \\uC0DD\\uC131 \\uC790\\uB3D9\\uD654\"\n  ];\n  const audience = [\n    {\n      title: \"\\uC6F9 \\uB514\\uC790\\uC778\\uC744 \\uCF54\\uB529 \\uB54C\\uBB38\\uC5D0 \\uD3EC\\uAE30\\uD588\\uB358 \\uB514\\uC790\\uC774\\uB108\",\n      description: \"\\uC774\\uC81C \\uAC1C\\uBC1C\\uC790\\uC5D0\\uAC8C \\uC544\\uC26C\\uC6B4 \\uC18C\\uB9AC \\uD558\\uC9C0 \\uB9C8\\uC138\\uC694. \\uB2F9\\uC2E0\\uC774 \\uC0C1\\uC0C1\\uD55C \\uB514\\uC790\\uC778, 100% \\uADF8\\uB300\\uB85C \\uAD6C\\uD604\\uB418\\uB294 \\uC644\\uBCBD\\uD55C \\uBC18\\uC751\\uD615 \\uC6F9\\uC0AC\\uC774\\uD2B8\\uB97C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      title: \"\\uC678\\uC8FC \\uBE44\\uC6A9\\uC774 \\uBD80\\uB2F4\\uB418\\uB294 1\\uC778 \\uC0AC\\uC5C5\\uAC00, \\uC2A4\\uD0C0\\uD2B8\\uC5C5\",\n      description: \"\\uB79C\\uB529\\uD398\\uC774\\uC9C0 \\uD558\\uB098\\uC5D0 \\uC218\\uBC31\\uB9CC \\uC6D0... \\uC774\\uC81C \\uC9C1\\uC811 \\uB9CC\\uB4E4\\uACE0 5\\uBD84 \\uB9CC\\uC5D0 \\uC218\\uC815\\uD558\\uC138\\uC694. \\uC544\\uB080 \\uC678\\uC8FC\\uBE44\\uB85C \\uBE44\\uC988\\uB2C8\\uC2A4\\uC758 \\uC131\\uACF5 \\uD655\\uB960\\uC744 \\uB192\\uC77C \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      title: \"Framer\\uB85C \\uD558\\uC774\\uC5D4\\uB4DC \\uD504\\uB85C\\uC81D\\uD2B8\\uB97C \\uAFC8\\uAFB8\\uB294 \\uC804\\uBB38\\uAC00\",\n      description: \"\\uB2E8\\uC21C \\uD398\\uC774\\uC9C0 \\uC81C\\uC791\\uC744 \\uB118\\uC5B4, \\uACE0\\uAC1D\\uC744 \\uAC10\\uB3D9\\uC2DC\\uD0A4\\uB294 \\uD558\\uC774\\uC5D4\\uB4DC \\uC778\\uD130\\uB799\\uC158\\uC73C\\uB85C \\uB2F9\\uC2E0\\uC758 \\uC11C\\uBE44\\uC2A4 \\uB2E8\\uAC00\\uB97C 2\\uBC30 \\uC774\\uC0C1 \\uB04C\\uC5B4\\uC62C\\uB9AC\\uC138\\uC694. \\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C \\uC804\\uBB38\\uAC00\\uAC00 \\uB418\\uC2ED\\uC2DC\\uC624.\"\n    }\n  ];\n  const reviews = [\n    {\n      name: \"\\uAE40\\uC9C0\\uC218\",\n      role: \"UX/UI \\uB514\\uC790\\uC774\\uB108\",\n      text: \"\\uC774 \\uAC15\\uC758 \\uC5C6\\uC5C8\\uC73C\\uBA74 \\uC5B4\\uCA54 \\uBED4 \\uD588\\uB098\\uC694. \\uAC1C\\uBC1C\\uC790\\uC640\\uC758 \\uC18C\\uD1B5 \\uBE44\\uC6A9\\uC774 1/10\\uB85C \\uC904\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uC81C\\uAC00 \\uC9C1\\uC811 \\uB9CC\\uB4DC\\uB294 \\uAC8C \\uD6E8\\uC52C \\uBE60\\uB974\\uACE0 \\uD004\\uB9AC\\uD2F0\\uB3C4 \\uB192\\uC544\\uC694.\"\n    },\n    {\n      name: \"\\uBC15\\uB300\\uD45C\",\n      role: \"\\uC2A4\\uD0C0\\uD2B8\\uC5C5 \\uB300\\uD45C\",\n      text: \"\\uC678\\uC8FC \\uB9E1\\uAE38 \\uB3C8\\uC73C\\uB85C \\uB9C8\\uCF00\\uD305\\uC5D0 \\uB354 \\uC9D1\\uC911\\uD560 \\uC218 \\uC788\\uAC8C \\uB410\\uC2B5\\uB2C8\\uB2E4. MVP \\uC81C\\uC791\\uACFC \\uD14C\\uC2A4\\uD2B8\\uAC00 \\uC815\\uB9D0 \\uBE68\\uB77C\\uC84C\\uACE0, \\uD22C\\uC790 \\uC720\\uCE58\\uC5D0\\uB3C4 \\uD070 \\uB3C4\\uC6C0\\uC774 \\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      name: \"\\uD504\\uB9AC\\uB79C\\uC11C \\uBC15\",\n      role: \"Framer \\uC804\\uBB38\\uAC00\",\n      text: \"\\uC194\\uC9C1\\uD788 \\uC800\\uB9CC \\uC54C\\uACE0 \\uC2F6\\uC740 \\uAC15\\uC758\\uC785\\uB2C8\\uB2E4. \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158 \\uD30C\\uD2B8\\uB294 \\uC815\\uB9D0... \\uC608\\uC220\\uC785\\uB2C8\\uB2E4. \\uD504\\uB85C\\uC81D\\uD2B8 \\uB2E8\\uAC00\\uAC00 \\uB2EC\\uB77C\\uC84C\\uC5B4\\uC694.\"\n    }\n  ];\n  const curriculum = [\n    {\n      module: \"Week 1: Welcome to Framer\",\n      title: \"Framer \\uC2DC\\uC791\\uD558\\uAE30: \\uAE30\\uBCF8\\uAE30 \\uC644\\uC804 \\uC815\\uBCF5\",\n      description: \"Framer\\uC758 \\uC778\\uD130\\uD398\\uC774\\uC2A4\\uBD80\\uD130 \\uC2DC\\uC791\\uD574, \\uB514\\uC790\\uC778\\uC758 \\uAE30\\uBCF8 \\uC694\\uC18C\\uB4E4\\uC744 \\uC775\\uD788\\uACE0, \\uC65C Framer\\uAC00 \\uD604\\uC874 \\uCD5C\\uACE0\\uC758 \\uC6F9 \\uB514\\uC790\\uC778 \\uD234\\uC778\\uC9C0 \\uC9C1\\uC811 \\uACBD\\uD5D8\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"3.5\\uC2DC\\uAC04\",\n      outcome: \"Framer\\uC758 \\uAE30\\uBCF8 \\uC870\\uC791\\uBC95\\uC744 \\uC644\\uC804\\uD788 \\uC775\\uD788\\uACE0, \\uAC04\\uB2E8\\uD55C \\uB514\\uC790\\uC778 \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Framer\\uB780 \\uBB34\\uC5C7\\uC778\\uAC00? (\\uCCA0\\uD559 & \\uBE44\\uC804)\",\n        \"\\uC778\\uD130\\uD398\\uC774\\uC2A4 \\uC644\\uBCBD \\uAC00\\uC774\\uB4DC: \\uD55C \\uBC88\\uC5D0 \\uB05D\\uB0B4\\uAE30\",\n        \"\\uAE30\\uBCF8 \\uB3C4\\uD615\\uACFC \\uD504\\uB808\\uC784 \\uB2E4\\uB8E8\\uAE30\",\n        \"\\uB808\\uC774\\uC544\\uC6C3\\uC758 \\uD575\\uC2EC: \\uC2A4\\uD0DD\\uACFC \\uADF8\\uB9AC\\uB4DC\",\n        \"[\\uC2E4\\uC2B5] \\uAC04\\uB2E8\\uD55C \\uD504\\uB85C\\uD544 \\uCE74\\uB4DC \\uB9CC\\uB4E4\\uAE30\"\n      ]\n    },\n    {\n      module: \"Week 2: Interactive Design\",\n      title: \"\\uC0B4\\uC544 \\uC6C0\\uC9C1\\uC774\\uB294 \\uB514\\uC790\\uC778: \\uC778\\uD130\\uB799\\uC158 \\uAE30\\uCD08\",\n      description: \"\\uB2E8\\uC21C\\uD55C \\uC774\\uBBF8\\uC9C0\\uB97C \\uB118\\uC5B4 \\uC0AC\\uC6A9\\uC790\\uC640 \\uC0C1\\uD638\\uC791\\uC6A9\\uD558\\uB294 \\uB514\\uC790\\uC778\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4. \\uD074\\uB9AD, \\uD638\\uBC84, \\uB4DC\\uB798\\uADF8 \\uB4F1 \\uD544\\uC218 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uB9C8\\uC2A4\\uD130\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"4\\uC2DC\\uAC04\",\n      outcome: \"\\uC7AC\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uB9CC\\uB4E4\\uACE0, \\uB2E4\\uC591\\uD55C \\uC0C1\\uD0DC\\uC5D0 \\uB530\\uB978 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uAD6C\\uD604\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Effects: \\uADF8\\uB9BC\\uC790, \\uBE14\\uB7EC \\uB4F1 \\uB514\\uC790\\uC778\\uC5D0 \\uAE4A\\uC774 \\uB354\\uD558\\uAE30\",\n        \"Components: \\uC7AC\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uB514\\uC790\\uC778 \\uC2DC\\uC2A4\\uD15C \\uB9CC\\uB4E4\\uAE30\",\n        \"Variants: \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uC0C1\\uD0DC \\uAD00\\uB9AC\\uC758 \\uBAA8\\uB4E0 \\uAC83\",\n        \"\\uAE30\\uBCF8 \\uC778\\uD130\\uB799\\uC158: \\uD074\\uB9AD, \\uD638\\uBC84, \\uB51C\\uB808\\uC774\",\n        \"[\\uC2E4\\uC2B5] \\uC778\\uD130\\uB799\\uD2F0\\uBE0C \\uBC84\\uD2BC \\uBC0F \\uCE74\\uB4DC UI \\uC81C\\uC791\"\n      ]\n    },\n    {\n      module: \"Week 3: Advanced Animations\",\n      title: \"\\uC2DC\\uC120\\uC744 \\uC0AC\\uB85C\\uC7A1\\uB294 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\",\n      description: \"\\uD398\\uC774\\uC9C0 \\uC2A4\\uD06C\\uB864, \\uC694\\uC18C\\uC758 \\uB4F1\\uC7A5\\uACFC \\uC0AC\\uB77C\\uC9D0 \\uB4F1 \\uC815\\uAD50\\uD55C \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC744 \\uAD6C\\uD604\\uD558\\uC5EC \\uC0AC\\uC6A9\\uC790 \\uACBD\\uD5D8\\uC744 \\uADF9\\uB300\\uD654\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"5\\uC2DC\\uAC04\",\n      outcome: \"\\uC2A4\\uD06C\\uB864\\uACFC \\uC5F0\\uB3D9\\uB418\\uB294 \\uBCF5\\uD569\\uC801\\uC778 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC744 \\uC790\\uC720\\uC790\\uC7AC\\uB85C \\uAD6C\\uD604\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"\\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC758 \\uC6D0\\uB9AC: Timing, Easing, Spring\",\n        \"Scroll Section & Scroll Variants\",\n        \"Stagger: \\uC21C\\uCC28\\uC801\\uC778 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC758 \\uBBF8\\uD559\",\n        \"Code Overrides\\uC758 \\uAE30\\uCD08: \\uC560\\uB2C8\\uBA54\\uC774\\uC158 \\uC81C\\uC5B4\\uD558\\uAE30\",\n        \"[\\uC2E4\\uC2B5] \\uC2A4\\uD06C\\uB864\\uC5D0 \\uBC18\\uC751\\uD558\\uB294 \\uD5E4\\uB354 \\uC81C\\uC791\"\n      ]\n    },\n    {\n      module: \"Week 4: The Apple Way\",\n      title: \"\\uC560\\uD50C \\uC2A4\\uD0C0\\uC77C \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158 \\uC815\\uBCF5\",\n      description: \"\\uBAA8\\uB450\\uAC00 \\uAC10\\uD0C4\\uD558\\uB294 \\uC560\\uD50C \\uC6F9\\uC0AC\\uC774\\uD2B8\\uC758 \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158. \\uADF8 \\uC6D0\\uB9AC\\uB97C \\uD30C\\uD5E4\\uCE58\\uACE0, \\uC6B0\\uB9AC \\uC190\\uC73C\\uB85C \\uC9C1\\uC811 \\uAD6C\\uD604\\uD574\\uBD05\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"6.5\\uC2DC\\uAC04\",\n      outcome: \"\\uB204\\uAD6C\\uB098 \\uAC10\\uD0C4\\uD560 \\uB9CC\\uD55C \\uD558\\uC774\\uC5D4\\uB4DC \\uC6F9\\uC0AC\\uC774\\uD2B8\\uC758 \\uD575\\uC2EC \\uC778\\uD130\\uB799\\uC158\\uC744 \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Sticky \\uC2A4\\uD06C\\uB864\\uC758 \\uC6D0\\uB9AC\\uC640 \\uD65C\\uC6A9\",\n        \"3D Transform\\uC744 \\uC774\\uC6A9\\uD55C \\uC785\\uCCB4\\uC801 \\uD6A8\\uACFC\",\n        \"\\uB3D9\\uC601\\uC0C1\\uACFC \\uC2A4\\uD06C\\uB864 \\uC5F0\\uB3D9\\uD558\\uAE30\",\n        \"\\uC2A4\\uD06C\\uB864 \\uC9C4\\uD589\\uB3C4\\uC5D0 \\uB530\\uB978 \\uBCF5\\uD569 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\",\n        \"[\\uC2E4\\uC2B5] \\uC560\\uD50C \\uC5D0\\uC5B4\\uD31F \\uD504\\uB85C \\uC2A4\\uD0C0\\uC77C \\uD398\\uC774\\uC9C0 \\uD074\\uB860\"\n      ]\n    },\n    {\n      module: \"Week 5: Real-World Project\",\n      title: \"\\uC2E4\\uC804! \\uBC18\\uC751\\uD615 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC0AC\\uC774\\uD2B8 \\uC81C\\uC791\",\n      description: \"\\uC9C0\\uAE08\\uAE4C\\uC9C0 \\uBC30\\uC6B4 \\uBAA8\\uB4E0 \\uAE30\\uC220\\uC744 \\uCD1D\\uB3D9\\uC6D0\\uD558\\uC5EC, \\uB370\\uC2A4\\uD06C\\uD0D1\\uBD80\\uD130 \\uBAA8\\uBC14\\uC77C\\uAE4C\\uC9C0 \\uC644\\uBCBD\\uD558\\uAC8C \\uB300\\uC751\\uD558\\uB294 \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC0AC\\uC774\\uD2B8\\uB97C \\uB9CC\\uB4ED\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"8\\uC2DC\\uAC04\",\n      outcome: \"\\uAE30\\uD68D\\uBD80\\uD130 \\uBC30\\uD3EC\\uAE4C\\uC9C0, \\uC6F9 \\uD504\\uB85C\\uC81D\\uD2B8 \\uC804\\uCCB4 \\uC0AC\\uC774\\uD074\\uC744 \\uACBD\\uD5D8\\uD558\\uACE0 \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624\\uB97C \\uC644\\uC131\\uD569\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"\\uD504\\uB85C\\uC81D\\uD2B8 \\uAE30\\uD68D \\uBC0F \\uB514\\uC790\\uC778 \\uC2DC\\uC2A4\\uD15C \\uAD6C\\uCD95\",\n        \"CMS\\uB97C \\uD65C\\uC6A9\\uD55C \\uCF58\\uD150\\uCE20 \\uAD00\\uB9AC\",\n        \"\\uB370\\uC2A4\\uD06C\\uD0D1, \\uD0DC\\uBE14\\uB9BF, \\uBAA8\\uBC14\\uC77C \\uBC18\\uC751\\uD615 \\uB514\\uC790\\uC778\",\n        \"\\uC2E4\\uC81C \\uB3C4\\uBA54\\uC778 \\uC5F0\\uACB0 \\uBC0F \\uC0AC\\uC774\\uD2B8 \\uBC30\\uD3EC\",\n        \"[\\uC2E4\\uC804] \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC6F9\\uC0AC\\uC774\\uD2B8 \\uC644\\uC131\"\n      ]\n    },\n    {\n      module: \"Week 6: From Skill to Profit\",\n      title: \"Framer\\uB85C \\uB3C8 \\uBC8C\\uAE30: \\uC678\\uC8FC\\uBD80\\uD130 \\uCC3D\\uC5C5\\uAE4C\\uC9C0\",\n      description: \"\\uC0C8\\uB85C\\uC6B4 \\uC2A4\\uD0AC\\uC744 \\uC2E4\\uC81C \\uC218\\uC775\\uC73C\\uB85C \\uC5F0\\uACB0\\uD558\\uB294 \\uBC29\\uBC95\\uC744 \\uBC30\\uC6C1\\uB2C8\\uB2E4. \\uC678\\uC8FC \\uD504\\uB85C\\uC81D\\uD2B8 \\uC218\\uC8FC \\uB178\\uD558\\uC6B0, \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC804\\uB7B5, \\uCC3D\\uC5C5 \\uC544\\uC774\\uB514\\uC5B4\\uAE4C\\uC9C0 \\uBAA8\\uB450 \\uACF5\\uAC1C\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 7,\n      duration: \"5\\uC2DC\\uAC04\",\n      outcome: \"\\uC2B5\\uB4DD\\uD55C Framer \\uC2A4\\uD0AC\\uC744 \\uD1B5\\uD574 \\uC2E4\\uC81C \\uC218\\uC775\\uC744 \\uCC3D\\uCD9C\\uD558\\uB294 \\uAD6C\\uCCB4\\uC801\\uC778 \\uBC29\\uBC95\\uC744 \\uC54C\\uAC8C \\uB429\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Framer \\uC804\\uBB38\\uAC00\\uB85C \\uD3EC\\uC9C0\\uC154\\uB2DD\\uD558\\uAE30\",\n        \"\\uCCAB \\uC678\\uC8FC, 100\\uB9CC\\uC6D0\\uBD80\\uD130 \\uC2DC\\uC791\\uD558\\uB294 \\uBC95\",\n        \"\\uD074\\uB77C\\uC774\\uC5B8\\uD2B8\\uB97C \\uC124\\uB4DD\\uD558\\uB294 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC804\\uB7B5\",\n        \"\\uACAC\\uC801\\uBD80\\uD130 \\uACC4\\uC57D\\uAE4C\\uC9C0: \\uC2E4\\uD328 \\uC5C6\\uB294 \\uD504\\uB85C\\uC81D\\uD2B8 \\uAD00\\uB9AC\",\n        \"Framer\\uB85C \\uAC00\\uB2A5\\uD55C 1\\uC778 \\uCC3D\\uC5C5 \\uC544\\uC774\\uD15C\\uB4E4\",\n        \"AI\\uB97C \\uD65C\\uC6A9\\uD55C \\uC0DD\\uC0B0\\uC131 10\\uBC30 \\uB192\\uC774\\uAE30\",\n        \"[\\uD2B9\\uAC15] \\uC6D4 1,000\\uB9CC\\uC6D0 \\uBC84\\uB294 \\uB514\\uC790\\uC774\\uB108\\uC758 \\uC2DC\\uAC04 \\uAD00\\uB9AC\\uBC95\"\n      ]\n    }\n  ];\n  const faqs = [\n    {\n      question: \"\\uCF54\\uB529\\uC744 \\uC804\\uD600 \\uBAA8\\uB974\\uB294\\uB370, \\uC815\\uB9D0 \\uAD1C\\uCC2E\\uC744\\uAE4C\\uC694?\",\n      answer: \"\\uB124, \\uADF8\\uB7FC\\uC694! \\uC774 \\uAC15\\uC758\\uB294 \\uCF54\\uB529 \\uACBD\\uD5D8\\uC774 \\uC804\\uBB34\\uD55C \\uBD84\\uB4E4\\uC744 \\uC704\\uD574 \\uC124\\uACC4\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4. Framer\\uC758 \\uAC15\\uB825\\uD55C \\uB178\\uCF54\\uB4DC \\uAE30\\uB2A5\\uC744 \\uD65C\\uC6A9\\uD558\\uC5EC \\uCF54\\uB529 \\uC5C6\\uC774\\uB3C4 100% \\uC0C1\\uC0C1\\uD558\\uB358 \\uC6F9\\uC0AC\\uC774\\uD2B8\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uCF54\\uB529\\uC740 \\uC120\\uD0DD \\uC0AC\\uD56D\\uC77C \\uBFD0\\uC774\\uBA70, \\uAC15\\uC758 \\uD6C4\\uBC18\\uBD80\\uC758 \\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uD30C\\uD2B8\\uB3C4 \\uBCF5\\uC0AC/\\uBD99\\uC5EC\\uB123\\uAE30\\uB9CC\\uC73C\\uB85C \\uB530\\uB77C\\uC62C \\uC218 \\uC788\\uB3C4\\uB85D \\uAD6C\\uC131\\uD588\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      question: \"\\uAC15\\uC758\\uB97C \\uB4E3\\uAE30 \\uC704\\uD574 \\uBB34\\uC5C7\\uC744 \\uC900\\uBE44\\uD574\\uC57C \\uD558\\uB098\\uC694?\",\n      answer: \"Framer \\uACC4\\uC815\\uACFC \\uC778\\uD130\\uB137\\uC774 \\uC5F0\\uACB0\\uB41C \\uCEF4\\uD4E8\\uD130\\uB9CC \\uC788\\uC73C\\uBA74 \\uB429\\uB2C8\\uB2E4! Framer\\uB294 \\uBB34\\uB8CC \\uD50C\\uB79C\\uC73C\\uB85C\\uB3C4 \\uAC15\\uC758\\uC758 95% \\uC774\\uC0C1\\uC744 \\uC218\\uAC15\\uD558\\uB294 \\uB370 \\uC804\\uD600 \\uBB38\\uC81C\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uCD94\\uAC00\\uB85C \\uC720\\uB8CC \\uD50C\\uB79C\\uC774 \\uD544\\uC694\\uD55C \\uBD80\\uBD84\\uC740 \\uAC15\\uC758\\uC5D0\\uC11C \\uBCC4\\uB3C4\\uB85C \\uC548\\uB0B4\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4.\"\n    },\n    {\n      question: \"\\uAC15\\uC758 \\uC218\\uAC15 \\uAE30\\uAC04\\uC5D0 \\uC81C\\uD55C\\uC774 \\uC788\\uB098\\uC694?\",\n      answer: \"\\uC544\\uB2C8\\uC694! \\uD55C\\uBC88 \\uAD6C\\uB9E4\\uD558\\uC2DC\\uBA74 \\uBAA8\\uB4E0 \\uAC15\\uC758 \\uC601\\uC0C1\\uACFC \\uC790\\uB8CC\\uB294 \\uD3C9\\uC0DD \\uC18C\\uC7A5\\uC774 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4. \\uC5B8\\uC81C \\uC5B4\\uB514\\uC11C\\uB4E0 \\uD3B8\\uD558\\uAC8C \\uBC18\\uBCF5 \\uD559\\uC2B5\\uD558\\uC138\\uC694.\"\n    },\n    {\n      question: \"\\uAC15\\uC758\\uB97C \\uB4E3\\uB2E4\\uAC00 \\uBAA8\\uB974\\uB294 \\uC810\\uC774 \\uC0DD\\uAE30\\uBA74 \\uC5B4\\uB5BB\\uAC8C \\uD558\\uC8E0?\",\n      answer: \"\\uC218\\uAC15\\uC0DD \\uC804\\uC6A9 \\uC2AC\\uB799 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\\uB97C \\uD1B5\\uD574 \\uC9C8\\uBB38\\uC744 \\uB0A8\\uACA8\\uC8FC\\uC2DC\\uBA74, \\uAC15\\uC0AC\\uB2D8\\uACFC \\uB2E4\\uB978 \\uC218\\uAC15\\uC0DD\\uB4E4\\uC774 \\uB2F5\\uBCC0\\uC744 \\uB2EC\\uC544\\uB4DC\\uB9BD\\uB2C8\\uB2E4. \\uD568\\uAED8 \\uBC30\\uC6B0\\uACE0 \\uC131\\uC7A5\\uD558\\uB294 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\\uC5D0 \\uCC38\\uC5EC\\uD558\\uC138\\uC694!\"\n    }\n  ];\n  const CountdownTimer = ({ targetDate }) => {\n    const calculateTimeLeft = () => {\n      const difference = +new Date(targetDate) - +/* @__PURE__ */ new Date();\n      let timeLeft2 = {};\n      if (difference > 0) {\n        timeLeft2 = {\n          \\uC77C: Math.floor(difference / (1e3 * 60 * 60 * 24)),\n          \\uC2DC\\uAC04: Math.floor(difference / (1e3 * 60 * 60) % 24),\n          \\uBD84: Math.floor(difference / 1e3 / 60 % 60),\n          \\uCD08: Math.floor(difference / 1e3 % 60)\n        };\n      }\n      return timeLeft2;\n    };\n    const [timeLeft, setTimeLeft] = useState(calculateTimeLeft());\n    useEffect(() => {\n      const timer = setTimeout(() => {\n        setTimeLeft(calculateTimeLeft());\n      }, 1e3);\n      return () => clearTimeout(timer);\n    });\n    const timerComponents = [];\n    Object.keys(timeLeft).forEach((interval) => {\n      if (!timeLeft[interval] && Object.keys(timeLeft).length > 1) {\n        return;\n      }\n      timerComponents.push(\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-baseline\", children: [\n          /* @__PURE__ */ jsx(\"span\", { className: \"text-2xl md:text-4xl font-bold\", children: String(timeLeft[interval]).padStart(\n            2,\n            \"0\"\n          ) }),\n          /* @__PURE__ */ jsx(\"span\", { className: \"text-sm ml-1\", children: interval })\n        ] }, interval)\n      );\n    });\n    return /* @__PURE__ */ jsx(\"div\", { className: \"flex justify-center space-x-4\", children: timerComponents.length ? timerComponents : /* @__PURE__ */ jsx(\"span\", { children: \"Time's up!\" }) });\n  };\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      style: { backgroundColor: colors.white, color: colors.textDark },\n      className: \"font-sans\",\n      children: [\n        /* @__PURE__ */ jsxs(\"header\", { className: \"text-center py-20 px-4\", children: [\n          /* @__PURE__ */ jsxs(\"h1\", { className: \"text-5xl md:text-7xl font-bold leading-tight mb-4\", children: [\n            /* @__PURE__ */ jsx(\"span\", { className: \"block\", children: \"\\uCF54\\uB4DC\\uC758 \\uC7A5\\uBCBD\\uC744 \\uB118\\uC5B4,\" }),\n            /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, className: \"block\", children: \"\\uB514\\uC790\\uC778\\uC758 \\uC644\\uC804\\uD55C \\uC790\\uC720\\uB97C \\uACBD\\uD5D8\\uD558\\uC138\\uC694\" })\n          ] }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              style: { color: colors.textMedium },\n              className: \"max-w-2xl mx-auto text-lg md:text-xl mb-8\",\n              children: [\n                \"\\uB2F9\\uC2E0\\uC758 \\uC815\\uAD50\\uD55C \\uB514\\uC790\\uC778\\uC774 \\uAC1C\\uBC1C \\uACFC\\uC815\\uC5D0\\uC11C \\uAE38\\uC744 \\uC783\\uC9C0 \\uC54A\\uB3C4\\uB85D.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"Framer\\uB294 \\uC0C1\\uC0C1\\uC744 \\uD604\\uC2E4\\uB85C \\uB9CC\\uB4DC\\uB294 \\uAC00\\uC7A5 \\uBE60\\uB978 \\uAE38\\uC744 \\uC81C\\uC548\\uD569\\uB2C8\\uB2E4.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\n            \"div\",\n            {\n              style: { backgroundColor: colors.harborPink },\n              className: \"text-center py-4 px-6 rounded-lg max-w-lg mx-auto mb-8\",\n              children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"font-bold text-lg\", style: { color: colors.harborBlue }, children: \"\\uC0C8\\uB85C\\uC6B4 \\uC2DC\\uB300\\uC758 \\uB514\\uC790\\uC774\\uB108\\uB97C \\uC704\\uD55C \\uB9C8\\uC9C0\\uB9C9 \\uD560\\uC778\" }),\n                /* @__PURE__ */ jsx(\"div\", { style: { color: colors.harborBlue }, children: /* @__PURE__ */ jsx(\n                  CountdownTimer,\n                  {\n                    targetDate: new Date(\n                      Date.now() + 3 * 24 * 60 * 60 * 1e3\n                    ).toISOString()\n                  }\n                ) })\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            \"a\",\n            {\n              href: \"#pricing\",\n              style: { backgroundColor: colors.harborBlue, color: colors.white },\n              className: \"font-bold py-4 px-10 rounded-full text-lg hover:opacity-90 transition-opacity duration-300\",\n              children: \"\\uC790\\uC720\\uB97C \\uD5A5\\uD55C \\uC5EC\\uC815 \\uC2DC\\uC791\\uD558\\uAE30\"\n            }\n          )\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto text-center\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-3xl md:text-4xl font-bold mb-6\", children: \"\\uD639\\uC2DC, \\uB2F9\\uC2E0\\uC758 \\uC774\\uC57C\\uAE30\\uC778\\uAC00\\uC694?\" }),\n              /* @__PURE__ */ jsxs(\n                \"p\",\n                {\n                  className: \"text-lg leading-relaxed\",\n                  style: { color: colors.textMedium },\n                  children: [\n                    '\"\\uBD84\\uBA85 \\uC644\\uBCBD\\uD55C \\uB514\\uC790\\uC778\\uC774\\uC5C8\\uB294\\uB370, \\uC65C \\uAC1C\\uBC1C\\uB9CC \\uAC70\\uCE58\\uBA74 \\uD3C9\\uBC94\\uD574\\uC9C8\\uAE4C?\"',\n                    /* @__PURE__ */ jsx(\"br\", {}),\n                    \"\\uC218\\uB9CE\\uC740 \\uB514\\uC790\\uC774\\uB108\\uAC00 \\uACAA\\uB294 \\uC88C\\uC808\\uC785\\uB2C8\\uB2E4. \\uAC1C\\uBC1C\\uC790\\uC640\\uC758 \\uC18C\\uD1B5 \\uBE44\\uC6A9, \\uAE30\\uC220\\uC801 \\uC81C\\uC57D, \\uAE38\\uC5B4\\uC9C0\\uB294 \\uC81C\\uC791 \\uAE30\\uAC04...\",\n                    /* @__PURE__ */ jsx(\"br\", {}),\n                    \"\\uB2F9\\uC2E0\\uC758 \\uC704\\uB300\\uD55C \\uC544\\uC774\\uB514\\uC5B4\\uB294 \\uADF8\\uB807\\uAC8C \\uBE5B\\uC744 \\uC783\\uC5B4\\uAC11\\uB2C8\\uB2E4.\",\n                    /* @__PURE__ */ jsxs(\"span\", { style: { color: colors.harborBlue }, className: \"font-bold\", children: [\n                      \" \",\n                      \"\\uC774\\uC81C \\uADF8 \\uACE0\\uB9AC\\uB97C \\uB04A\\uC5B4\\uB0BC \\uC2DC\\uAC04\\uC785\\uB2C8\\uB2E4.\"\n                    ] })\n                  ]\n                }\n              )\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-12\", children: \"\\uB2F9\\uC2E0\\uC758 \\uC791\\uC5C5\\uBB3C, \\uC774\\uB807\\uAC8C \\uB2EC\\uB77C\\uC9D1\\uB2C8\\uB2E4\" }),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-2 gap-8 items-center\", children: [\n            /* @__PURE__ */ jsxs(\"div\", { children: [\n              /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-bold mb-4 text-red-500\", children: \"Before\" }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"p-4 rounded-lg border border-gray-200 bg-white shadow-lg\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-left text-sm font-semibold mb-2\", children: \"[\\uC218\\uAC15 \\uC804] Figma-\\uAC1C\\uBC1C\\uC790 \\uC804\\uB2EC \\uBC29\\uC2DD\" }),\n                /* @__PURE__ */ jsxs(\"div\", { className: \"aspect-video bg-gray-100 rounded flex flex-col items-center justify-center text-gray-400 p-4\", children: [\n                  /* @__PURE__ */ jsx(\"p\", { children: \"\\uC815\\uC801\\uC778 \\uB514\\uC790\\uC778 \\uC2DC\\uC548\" }),\n                  /* @__PURE__ */ jsx(\"p\", { className: \"text-xs mt-2\", children: \"(\\uC778\\uD130\\uB799\\uC158\\uC740 \\uC0C1\\uC0C1\\uC5D0 \\uB9E1\\uACA8\\uC57C \\uD568)\" }),\n                  /* @__PURE__ */ jsx(\"p\", { className: \"text-xs mt-2\", children: \"\\uAC1C\\uBC1C \\uACFC\\uC815\\uC5D0\\uC11C \\uC7A6\\uC740 \\uC218\\uC815, \\uD0C0\\uD611\" })\n                ] })\n              ] }),\n              /* @__PURE__ */ jsx(\"p\", { className: \"mt-4\", style: { color: colors.textLight }, children: \"\\uC18C\\uD1B5 \\uBE44\\uC6A9 \\uC99D\\uAC00, \\uAD6C\\uD604 \\uD004\\uB9AC\\uD2F0 \\uC800\\uD558\" })\n            ] }),\n            /* @__PURE__ */ jsxs(\"div\", { children: [\n              /* @__PURE__ */ jsx(\n                \"h3\",\n                {\n                  className: \"text-2xl font-bold mb-4\",\n                  style: { color: colors.harborBlue },\n                  children: \"After\"\n                }\n              ),\n              /* @__PURE__ */ jsxs(\n                \"div\",\n                {\n                  className: \"p-4 rounded-lg border-2\",\n                  style: { borderColor: colors.harborBlue },\n                  children: [\n                    /* @__PURE__ */ jsx(\n                      \"p\",\n                      {\n                        className: \"text-left text-sm font-semibold mb-2\",\n                        style: { color: colors.harborBlue },\n                        children: \"[\\uC218\\uAC15 \\uD6C4] Framer\\uB97C \\uD1B5\\uD55C \\uC6D0\\uC2A4\\uD1B1 \\uC81C\\uC791\"\n                      }\n                    ),\n                    /* @__PURE__ */ jsxs(\"div\", { className: \"aspect-video bg-gray-100 rounded flex flex-col items-center justify-center p-4\", children: [\n                      /* @__PURE__ */ jsx(\"p\", { className: \"font-bold\", style: { color: colors.harborBlue }, children: \"\\uC778\\uD130\\uB799\\uD2F0\\uBE0C\\uD55C \\uCD5C\\uC885 \\uACB0\\uACFC\\uBB3C\" }),\n                      /* @__PURE__ */ jsx(\n                        \"p\",\n                        {\n                          className: \"text-xs mt-2\",\n                          style: { color: colors.textMedium },\n                          children: \"(\\uB0B4\\uAC00 \\uB514\\uC790\\uC778\\uD55C \\uADF8\\uB300\\uB85C 100% \\uAD6C\\uD604)\"\n                        }\n                      ),\n                      /* @__PURE__ */ jsx(\n                        \"p\",\n                        {\n                          className: \"text-xs mt-2\",\n                          style: { color: colors.textMedium },\n                          children: \"\\uC218\\uC815/\\uBC30\\uD3EC \\uD074\\uB9AD \\uD55C \\uBC88\\uC73C\\uB85C\"\n                        }\n                      )\n                    ] })\n                  ]\n                }\n              ),\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"mt-4 font-bold\",\n                  style: { color: colors.harborBlue },\n                  children: \"\\uC555\\uB3C4\\uC801\\uC778 \\uC18D\\uB3C4, \\uC644\\uBCBD\\uD55C \\uD004\\uB9AC\\uD2F0\"\n                }\n              )\n            ] })\n          ] })\n        ] }) }),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-12\", style: { backgroundColor: colors.harborPink }, children: /* @__PURE__ */ jsx(\"div\", { className: \"max-w-6xl mx-auto px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"grid grid-cols-1 md:grid-cols-3 gap-8 text-center\", children: [\n          /* @__PURE__ */ jsxs(\"div\", { children: [\n            /* @__PURE__ */ jsx(\n              \"p\",\n              {\n                className: \"text-4xl font-bold\",\n                style: { color: colors.harborBlue },\n                children: \"1,300+\"\n              }\n            ),\n            /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uB204\\uC801 \\uC218\\uAC15\\uC0DD\" })\n          ] }),\n          /* @__PURE__ */ jsxs(\"div\", { children: [\n            /* @__PURE__ */ jsx(\n              \"p\",\n              {\n                className: \"text-4xl font-bold\",\n                style: { color: colors.harborBlue },\n                children: \"4.9/5.0\"\n              }\n            ),\n            /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uC218\\uAC15\\uC0DD \\uB9CC\\uC871\\uB3C4\" })\n          ] }),\n          /* @__PURE__ */ jsxs(\"div\", { children: [\n            /* @__PURE__ */ jsx(\n              \"p\",\n              {\n                className: \"text-4xl font-bold\",\n                style: { color: colors.harborBlue },\n                children: \"30+\"\n              }\n            ),\n            /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8 \\uACBD\\uD5D8\" })\n          ] })\n        ] }) }) }),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl md:text-5xl font-bold mb-6\", children: \"\\uACB0\\uACFC\\uB85C \\uC99D\\uBA85\\uD558\\uB294, \\uB2E8 \\uD558\\uB098\\uC758 \\uB9C8\\uC2A4\\uD130\\uB9AC \\uCF54\\uC2A4\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"max-w-3xl mx-auto text-lg\",\n              style: { color: colors.textMedium },\n              children: [\n                \"\\uC774 \\uAC15\\uC758\\uB294 Framer \\uC0AC\\uC6A9\\uBC95\\uC744 \\uC54C\\uB824\\uC8FC\\uB294 \\uAC15\\uC758\\uAC00 \\uC544\\uB2D9\\uB2C8\\uB2E4.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uB514\\uC790\\uC774\\uB108\\uAC00 \\uC790\\uC2E0\\uC758 \\uAC00\\uCE58\\uB97C \\uC2A4\\uC2A4\\uB85C \\uC99D\\uBA85\\uD558\\uACE0,\",\n                \" \",\n                /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, children: \"\\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C \\uC804\\uBB38\\uAC00\" }),\n                \"\\uB85C \\uAC70\\uB4ED\\uB098\\uB294 \\uBC29\\uBC95\\uC744 \\uC548\\uB0B4\\uD569\\uB2C8\\uB2E4.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto grid md:grid-cols-3 gap-8 mt-12 text-left\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: {\n                  backgroundColor: colors.white,\n                  border: `1px solid ${colors.harborPink}`\n                },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"1. \\uCC3D\\uC791\\uC758 \\uC644\\uC804\\uD55C \\uC790\\uC728\\uC131\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC544\\uC774\\uB514\\uC5B4 \\uC2A4\\uCF00\\uCE58\\uBD80\\uD130 \\uCD5C\\uC885 \\uBC30\\uD3EC\\uAE4C\\uC9C0, \\uBAA8\\uB4E0 \\uCC3D\\uC791 \\uACFC\\uC815\\uC744 \\uC628\\uC804\\uD788 \\uD1B5\\uC81C\\uD558\\uC138\\uC694. \\uB354 \\uC774\\uC0C1 \\uAE30\\uC220\\uC801 \\uC81C\\uC57D\\uC774\\uB098 \\uC18C\\uD1B5\\uC758 \\uC624\\uB958\\uB85C \\uB2F9\\uC2E0\\uC758 \\uBE44\\uC804\\uC774 \\uD0C0\\uD611\\uB418\\uB294 \\uC77C\\uC740 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: {\n                  backgroundColor: colors.white,\n                  border: `1px solid ${colors.harborPink}`\n                },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"2. \\uC138\\uACC4\\uC801 \\uC218\\uC900\\uC758 \\uC778\\uD130\\uB799\\uC158\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uB2E8\\uC21C\\uD788 '\\uC6C0\\uC9C1\\uC774\\uB294' \\uAC83\\uC744 \\uB118\\uC5B4 '\\uBC18\\uC751\\uD558\\uB294' \\uB514\\uC790\\uC778\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4. \\uC0AC\\uC6A9\\uC790\\uC758 \\uBAA8\\uB4E0 \\uD589\\uB3D9\\uC5D0 \\uC12C\\uC138\\uD558\\uAC8C \\uBC18\\uC751\\uD558\\uB294 \\uC6D4\\uB4DC\\uD074\\uB798\\uC2A4 \\uC778\\uD130\\uB799\\uC158\\uC73C\\uB85C \\uD504\\uB85C\\uC81D\\uD2B8\\uC758 \\uACA9\\uC744 \\uB192\\uC774\\uC138\\uC694.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: {\n                  backgroundColor: colors.white,\n                  border: `1px solid ${colors.harborPink}`\n                },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"3. \\uB514\\uC790\\uC774\\uB108 \\uB108\\uBA38\\uC758 \\uBE44\\uC988\\uB2C8\\uC2A4\\uB9E8\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uD6CC\\uB96D\\uD55C \\uB514\\uC790\\uC778\\uC744 \\uB192\\uC740 \\uAC00\\uCE58\\uB85C \\uBCC0\\uD658\\uD558\\uB294 \\uBE44\\uC988\\uB2C8\\uC2A4 \\uC804\\uB7B5\\uAE4C\\uC9C0 \\uD568\\uAED8 \\uBC30\\uC6C1\\uB2C8\\uB2E4. \\uB2F9\\uC2E0\\uC758 \\uC7AC\\uB2A5\\uC744 \\uCD5C\\uACE0\\uC758 \\uC218\\uC775\\uC73C\\uB85C \\uC5F0\\uACB0\\uD558\\uB294 \\uBC29\\uBC95\\uC744 \\uC54C\\uB824\\uB4DC\\uB9BD\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uC65C \\uC774 \\uAC15\\uC758\\uAC00 \\uAC00\\uC7A5 \\uBE60\\uB978 \\uAE38\\uC77C\\uAE4C\\uC694?\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"overflow-x-auto\", children: /* @__PURE__ */ jsxs(\"table\", { className: \"w-full text-left border-collapse\", children: [\n                /* @__PURE__ */ jsx(\"thead\", { children: /* @__PURE__ */ jsxs(\"tr\", { children: [\n                  /* @__PURE__ */ jsx(\"th\", { className: \"p-4 border-b-2 font-bold\", children: \"\\uD559\\uC2B5 \\uBC29\\uBC95\" }),\n                  /* @__PURE__ */ jsx(\"th\", { className: \"p-4 border-b-2 font-bold text-center\", children: \"\\uACB0\\uACFC\\uBB3C \\uD004\\uB9AC\\uD2F0\" }),\n                  /* @__PURE__ */ jsx(\"th\", { className: \"p-4 border-b-2 font-bold text-center\", children: \"\\uD559\\uC2B5 \\uC18D\\uB3C4\" }),\n                  /* @__PURE__ */ jsx(\"th\", { className: \"p-4 border-b-2 font-bold text-center\", children: \"\\uC2DC\\uD589\\uCC29\\uC624 \\uBE44\\uC6A9\" }),\n                  /* @__PURE__ */ jsx(\n                    \"th\",\n                    {\n                      className: \"p-4 border-b-2 font-bold bg-blue-100\",\n                      style: { color: colors.harborBlue },\n                      children: \"The Framer Mastery\"\n                    }\n                  )\n                ] }) }),\n                /* @__PURE__ */ jsxs(\"tbody\", { children: [\n                  /* @__PURE__ */ jsxs(\"tr\", { style: { backgroundColor: colors.white }, children: [\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b font-bold\", children: \"\\uB3C5\\uD559 (\\uC720\\uD29C\\uBE0C/\\uBE14\\uB85C\\uADF8)\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F914}\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F422}\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F4B8}\\u{1F4B8}\\u{1F4B8}\" }),\n                    /* @__PURE__ */ jsx(\n                      \"td\",\n                      {\n                        className: \"p-4 border-b text-center row-span-4 align-middle font-bold\",\n                        style: { color: colors.harborBlue },\n                        children: /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col items-center justify-center h-full\", children: [\n                          /* @__PURE__ */ jsx(\"p\", { children: \"\\uC555\\uB3C4\\uC801\\uC778\" }),\n                          /* @__PURE__ */ jsx(\"p\", { children: \"\\uD6A8\\uC728\\uACFC \\uACB0\\uACFC\" })\n                        ] })\n                      }\n                    )\n                  ] }),\n                  /* @__PURE__ */ jsxs(\"tr\", { style: { backgroundColor: colors.white }, children: [\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b font-bold\", children: \"\\uD0C0 \\uC628\\uB77C\\uC778 \\uAC15\\uC758\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F642}\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F3C3}\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F4B8}\\u{1F4B8}\" })\n                  ] }),\n                  /* @__PURE__ */ jsxs(\"tr\", { style: { backgroundColor: colors.white }, children: [\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b font-bold\", children: \"\\uB514\\uC790\\uC778 + \\uAC1C\\uBC1C \\uC678\\uC8FC\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F601}\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F6B6}\\u200D\\u2642\\uFE0F\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F4B8}\\u{1F4B8}\\u{1F4B8}\\u{1F4B8}\\u{1F4B8}\" })\n                  ] })\n                ] })\n              ] }) }),\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"text-center mt-4 text-sm\",\n                  style: { color: colors.textLight },\n                  children: \"* \\uC704 \\uD45C\\uB294 \\uC77C\\uBC18\\uC801\\uC778 \\uACBD\\uC6B0\\uB97C \\uAE30\\uC900\\uC73C\\uB85C \\uD55C \\uBE44\\uAD50\\uC774\\uBA70, \\uAC1C\\uC778\\uC5D0 \\uB530\\uB77C \\uCC28\\uC774\\uAC00 \\uC788\\uC744 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n                }\n              )\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-2xl font-bold\", style: { color: colors.harborBlue }, children: \"GAME CHANGER\" }),\n          /* @__PURE__ */ jsx(\"h3\", { className: \"text-4xl md:text-5xl font-bold my-4\", children: \"\\uC65C \\uC9C0\\uAE08, Framer\\uC778\\uAC00?\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"max-w-3xl mx-auto text-lg\",\n              style: { color: colors.textMedium },\n              children: [\n                \"90%\\uC758 \\uBC18\\uBCF5 \\uC791\\uC5C5\\uACFC 10%\\uC758 \\uD06C\\uB9AC\\uC5D0\\uC774\\uD2F0\\uBE0C. \\uC6F9\\uB514\\uC790\\uC778\\uC758 \\uD604\\uC2E4\\uC785\\uB2C8\\uB2E4. \",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"Framer\\uB294 \\uC774 \\uACF5\\uC2DD\\uC744 \\uC644\\uC804\\uD788 \\uB4A4\\uC9D1\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uC81C \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04 90%\\uB97C \\uC624\\uB86F\\uC774 \\uCC3D\\uC758\\uC131\\uC5D0 \\uC3DF\\uC544\\uBD80\\uC73C\\uC138\\uC694.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto grid md:grid-cols-3 gap-8 mt-12\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uC555\\uB3C4\\uC801\\uC778 \\uC18D\\uB3C4\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC544\\uC774\\uB514\\uC5B4\\uB97C \\uD604\\uC2E4\\uB85C \\uB9CC\\uB4DC\\uB294 \\uB370 \\uB2E8 \\uD558\\uB8E8. Framer\\uC758 \\uBE14\\uB85D \\uC2DC\\uC2A4\\uD15C\\uACFC AI \\uAE30\\uB2A5\\uC774 \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04\\uC744 \\uC544\\uAEF4\\uC90D\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uCF54\\uB4DC \\uC5C6\\uB294 \\uACE0\\uD004\\uB9AC\\uD2F0\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC1C\\uBC1C\\uC790\\uAC00 \\uBA87 \\uC8FC\\uAC04 \\uAD6C\\uD604\\uD560 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uB2E8 \\uBA87 \\uBC88\\uC758 \\uD074\\uB9AD\\uC73C\\uB85C. \\uB2F9\\uC2E0\\uC758 \\uB514\\uC790\\uC778\\uC740 \\uC774\\uC81C \\uC8FD\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uC2E4\\uC2DC\\uAC04 \\uD611\\uC5C5\\uACFC \\uBC30\\uD3EC\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uB514\\uC790\\uC778\\uBD80\\uD130 \\uBC30\\uD3EC\\uAE4C\\uC9C0 \\uD55C \\uACF3\\uC5D0\\uC11C. \\uD300\\uACFC \\uD568\\uAED8 \\uC2E4\\uC2DC\\uAC04\\uC73C\\uB85C \\uC791\\uC5C5\\uD558\\uACE0, \\uD074\\uB9AD \\uD55C \\uBC88\\uC73C\\uB85C \\uC138\\uC0C1\\uC5D0 \\uACF5\\uAC1C\\uD558\\uC138\\uC694.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uC774 \\uC704\\uB300\\uD55C \\uC5EC\\uC815\\uC744 \\uD568\\uAED8\\uD560 \\uBD84\\uB4E4\\uC744 \\uCC3E\\uC2B5\\uB2C8\\uB2E4\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: audience.map((person, index) => /* @__PURE__ */ jsxs(\n                \"div\",\n                {\n                  className: \"p-8 rounded-lg bg-white shadow-md hover:shadow-xl transition-shadow duration-300\",\n                  children: [\n                    /* @__PURE__ */ jsx(\n                      \"h3\",\n                      {\n                        className: \"text-xl font-bold mb-4\",\n                        style: { color: colors.harborBlue },\n                        children: person.title\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: person.description })\n                  ]\n                },\n                index\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto grid md:grid-cols-2 gap-12 items-center\", children: [\n          /* @__PURE__ */ jsxs(\"div\", { className: \"text-center md:text-left\", children: [\n            /* @__PURE__ */ jsx(\"p\", { className: \"font-bold\", style: { color: colors.harborBlue }, children: \"INSTRUCTOR\" }),\n            /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold my-4\", children: \"Yongmin, Harbor School\" }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"mb-6\", style: { color: colors.textMedium }, children: \"Framer\\uAC00 \\uD55C\\uAD6D\\uC5D0 \\uC54C\\uB824\\uC9C0\\uAE30 \\uC804\\uBD80\\uD130 7\\uB144\\uAC04 Framer\\uB9CC\\uC744 \\uC5F0\\uAD6C\\uD558\\uACE0, 30\\uAC1C \\uC774\\uC0C1\\uC758 \\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8\\uB97C \\uC131\\uACF5\\uC2DC\\uD0A8 1\\uC138\\uB300 Framer \\uC804\\uBB38\\uAC00\\uC785\\uB2C8\\uB2E4. \\uB2E8\\uC21C\\uD55C \\uD234 \\uC0AC\\uC6A9\\uBC95\\uC744 \\uB118\\uC5B4, '\\uC5B4\\uB5BB\\uAC8C' \\uB514\\uC790\\uC778\\uC73C\\uB85C \\uBB38\\uC81C\\uB97C \\uD574\\uACB0\\uD558\\uB294\\uC9C0\\uC5D0 \\uB300\\uD55C \\uAE4A\\uC740 \\uD1B5\\uCC30\\uB825\\uC744 \\uACF5\\uC720\\uD569\\uB2C8\\uB2E4.\" }),\n            /* @__PURE__ */ jsxs(\"div\", { className: \"flex justify-center md:justify-start space-x-8\", children: [\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"7+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uAD50\\uC721 \\uACBD\\uB825\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"30+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"1,300+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uB204\\uC801 \\uC218\\uAC15\\uC0DD\" })\n              ] })\n            ] })\n          ] }),\n          /* @__PURE__ */ jsx(\"div\", { className: \"w-full max-w-sm mx-auto\", children: /* @__PURE__ */ jsx(\n            \"div\",\n            {\n              className: \"aspect-square rounded-full p-2\",\n              style: {\n                background: `linear-gradient(to bottom right, ${colors.harborPink}, ${colors.harborBlue})`\n              },\n              children: /* @__PURE__ */ jsx(\"div\", { className: \"w-full h-full rounded-full flex items-center justify-center bg-gray-100\", children: /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"[\\uAC15\\uC0AC \\uC774\\uBBF8\\uC9C0]\" }) })\n            }\n          ) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uB2F9\\uC2E0\\uC774 \\uB9C8\\uC2A4\\uD130\\uD560 6\\uAC00\\uC9C0 \\uD575\\uC2EC \\uC5ED\\uB7C9\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-2 gap-x-8 gap-y-6\", children: features.map((feature, index) => /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-start space-x-4\", children: [\n                /* @__PURE__ */ jsx(\n                  CheckIcon,\n                  {\n                    className: \"h-6 w-6 mt-1 flex-shrink-0\",\n                    style: { color: colors.harborBlue }\n                  }\n                ),\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-lg\", style: { color: colors.textMedium }, children: feature })\n              ] }, index)) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uC878\\uC5C5\\uC0DD\\uB4E4\\uC758 \\uC2E4\\uC81C \\uACB0\\uACFC\\uBB3C\" }),\n          /* @__PURE__ */ jsx(\n            \"p\",\n            {\n              className: \"max-w-2xl mx-auto mb-12\",\n              style: { color: colors.textMedium },\n              children: \"\\uC774 \\uAC15\\uC758\\uB97C \\uD1B5\\uD574 \\uB2F9\\uC2E0\\uCC98\\uB7FC \\uD3C9\\uBC94\\uD588\\uB358 \\uB514\\uC790\\uC774\\uB108\\uB4E4\\uC774 \\uB9CC\\uB4E4\\uC5B4\\uB0B8, \\uBE44\\uBC94\\uD55C \\uACB0\\uACFC\\uBB3C\\uB4E4\\uC785\\uB2C8\\uB2E4.\"\n            }\n          ),\n          /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsxs(\"div\", { className: \"group\", children: [\n            /* @__PURE__ */ jsx(\"div\", { className: \"aspect-video rounded-lg bg-gray-100 mb-4 border border-gray-200 flex items-center justify-center\", children: /* @__PURE__ */ jsxs(\"p\", { style: { color: colors.textLight }, children: [\n              \"[\\uC878\\uC5C5\\uC0DD \\uD504\\uB85C\\uC81D\\uD2B8 \",\n              i,\n              \"]\"\n            ] }) }),\n            /* @__PURE__ */ jsxs(\"h3\", { className: \"text-lg font-bold\", children: [\n              \"Project Title \",\n              i\n            ] }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"by Alumnus Name\" })\n          ] }, i)) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto text-center\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uBC31\\uBB38\\uC774 \\uBD88\\uC5EC\\uC77C\\uACAC\" }),\n              /* @__PURE__ */ jsxs(\"p\", { className: \"text-lg mb-8\", style: { color: colors.textMedium }, children: [\n                \"\\uC774 \\uAC15\\uC758\\uB97C \\uD1B5\\uD574 \\uB2F9\\uC2E0\\uC774 \\uC9C1\\uC811 \\uB9CC\\uB4E4\\uAC8C \\uB420\",\n                \" \",\n                /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, className: \"font-bold\", children: \"\\uC2E4\\uC804 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uD504\\uB85C\\uC81D\\uD2B8\" }),\n                \"\\uC785\\uB2C8\\uB2E4.\"\n              ] }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"aspect-video rounded-lg shadow-2xl p-2 border border-gray-200 bg-white\", children: /* @__PURE__ */ jsx(\"div\", { className: \"w-full h-full bg-gray-100 rounded flex items-center justify-center\", children: /* @__PURE__ */ jsxs(\"p\", { style: { color: colors.textLight }, children: [\n                \"[\",\n                /* @__PURE__ */ jsx(\n                  \"a\",\n                  {\n                    href: \"https://marianne.framer.website\",\n                    target: \"_blank\",\n                    rel: \"noopener noreferrer\",\n                    className: \"underline\",\n                    style: { color: colors.harborBlue },\n                    children: \"https://marianne.framer.website\"\n                  }\n                ),\n                \"]\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"(\\uC704 \\uB9C1\\uD06C\\uC640 \\uAC19\\uC740 \\uD004\\uB9AC\\uD2F0\\uC758 \\uACB0\\uACFC\\uBB3C\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4)\"\n              ] }) }) }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-left mt-8 grid md:grid-cols-2 gap-x-8 gap-y-4 max-w-2xl mx-auto\", children: [\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uC644\\uBCBD\\uD55C \\uBC18\\uC751\\uD615 \\uB808\\uC774\\uC544\\uC6C3\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"CMS\\uB97C \\uD1B5\\uD55C \\uB3D9\\uC801 \\uCF58\\uD150\\uCE20 \\uAD00\\uB9AC\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uC2DC\\uC120\\uC744 \\uC0AC\\uB85C\\uC7A1\\uB294 \\uC2A4\\uD06C\\uB864 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uD65C\\uC6A9\\uD55C \\uAE30\\uB2A5 \\uD655\\uC7A5\"\n                ] })\n              ] })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uC7A0\\uC7AC\\uB825\\uC744 \\uD3ED\\uBC1C\\uC2DC\\uD0AC 6\\uC8FC\\uAC04\\uC758 \\uC555\\uCD95 \\uC131\\uC7A5 \\uD504\\uB85C\\uADF8\\uB7A8\" }),\n          /* @__PURE__ */ jsx(\"div\", { className: \"space-y-4\", children: curriculum.map((week, index) => /* @__PURE__ */ jsxs(\n            \"details\",\n            {\n              className: \"p-6 rounded-lg group border\",\n              open: index === 0,\n              style: {\n                backgroundColor: colors.white,\n                borderColor: colors.harborPink\n              },\n              children: [\n                /* @__PURE__ */ jsxs(\"summary\", { className: \"font-bold text-xl list-none flex justify-between items-center cursor-pointer\", children: [\n                  /* @__PURE__ */ jsxs(\"div\", { children: [\n                    /* @__PURE__ */ jsx(\n                      \"p\",\n                      {\n                        className: \"text-sm font-bold\",\n                        style: { color: colors.harborBlue },\n                        children: week.module\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-bold mt-1 group-hover:opacity-80 transition-opacity\", children: week.title })\n                  ] }),\n                  /* @__PURE__ */ jsxs(\n                    \"span\",\n                    {\n                      className: \"text-sm ml-4 whitespace-nowrap\",\n                      style: { color: colors.textLight },\n                      children: [\n                        week.lessonsCount,\n                        \"\\uAC15 / \",\n                        week.duration\n                      ]\n                    }\n                  )\n                ] }),\n                /* @__PURE__ */ jsxs(\"div\", { className: \"overflow-hidden max-h-0 group-open:max-h-[1000px] transition-all duration-500 ease-in-out\", children: [\n                  /* @__PURE__ */ jsx(\"p\", { className: \"my-4\", style: { color: colors.textMedium }, children: week.description }),\n                  /* @__PURE__ */ jsxs(\n                    \"div\",\n                    {\n                      className: \"p-4 rounded-md mt-4\",\n                      style: { backgroundColor: colors.harborPink },\n                      children: [\n                        /* @__PURE__ */ jsx(\n                          \"p\",\n                          {\n                            className: \"font-bold text-sm\",\n                            style: { color: colors.harborBlue },\n                            children: \"Key Outcome\"\n                          }\n                        ),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"mt-1\", style: { color: colors.textMedium }, children: week.outcome })\n                      ]\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"ul\", { className: \"space-y-2 pt-4 mt-4 border-t border-gray-200\", children: week.lessons.map((lesson, lessonIndex) => /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                    /* @__PURE__ */ jsx(\n                      CheckIcon,\n                      {\n                        className: \"h-5 w-5 mr-3 mt-1 flex-shrink-0\",\n                        style: { color: colors.textLight }\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"span\", { style: { color: colors.textMedium }, children: lesson })\n                  ] }, lessonIndex)) })\n                ] })\n              ]\n            },\n            index\n          )) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uBA3C\\uC800 \\uACBD\\uD5D8\\uD55C \\uBD84\\uB4E4\\uC758 \\uC758\\uC2EC \\uC5C6\\uB294 \\uCC2C\\uC0AC\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: reviews.map((review, i) => /* @__PURE__ */ jsxs(\n                \"div\",\n                {\n                  className: \"bg-white p-6 rounded-lg flex flex-col shadow-md hover:shadow-xl transition-shadow duration-300\",\n                  children: [\n                    /* @__PURE__ */ jsx(\"div\", { className: \"flex mb-4\", children: [...Array(5)].map((_, starIndex) => /* @__PURE__ */ jsx(\n                      StarIcon,\n                      {\n                        className: \"h-5 w-5 text-yellow-400\"\n                      },\n                      starIndex\n                    )) }),\n                    /* @__PURE__ */ jsxs(\"p\", { className: \"flex-grow\", style: { color: colors.textMedium }, children: [\n                      '\"',\n                      review.text,\n                      '\"'\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"div\", { className: \"mt-4\", children: [\n                      /* @__PURE__ */ jsx(\"p\", { className: \"font-bold\", children: review.name }),\n                      /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: review.role })\n                    ] })\n                  ]\n                },\n                i\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uB2F9\\uC2E0\\uC758 \\uC131\\uC7A5\\uC744 \\uC704\\uD55C, \\uB2E8 \\uD558\\uB098\\uC758 \\uD0A4\\uD2B8\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"text-lg max-w-2xl mx-auto mb-10\",\n              style: { color: colors.textMedium },\n              children: [\n                \"\\uC131\\uACF5\\uC801\\uC778 \\uC5EC\\uC815\\uC744 \\uC704\\uD574 \\uD544\\uC694\\uD55C \\uBAA8\\uB4E0 \\uAC83\\uC744 \\uB2F4\\uC558\\uC2B5\\uB2C8\\uB2E4.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uB2F9\\uC2E0\\uC740 \\uADF8\\uC800 \\uC131\\uC7A5\\uC5D0\\uB9CC \\uC9D1\\uC911\\uD558\\uC138\\uC694.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto grid md:grid-cols-2 gap-8 text-left\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC131\\uC7A5\\uC758 \\uB3D9\\uBC18\\uC790, \\uC2AC\\uB799 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC19\\uC740 \\uBAA9\\uD45C\\uB97C \\uAC00\\uC9C4 \\uB3D9\\uB8CC\\uB4E4\\uACFC \\uD568\\uAED8\\uB77C\\uBA74 \\uB354 \\uBA40\\uB9AC, \\uB354 \\uBE60\\uB974\\uAC8C \\uAC08 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uACF3\\uC740 \\uB2E8\\uC21C\\uD55C Q&A \\uACF5\\uAC04\\uC774 \\uC544\\uB2CC, \\uC9D1\\uB2E8 \\uC9C0\\uC131\\uC758 \\uD5C8\\uBE0C\\uC785\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC2DC\\uAC04\\uC744 \\uC9C0\\uBC30\\uD558\\uB294, \\uD575\\uC2EC \\uB9AC\\uC18C\\uC2A4\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC15\\uC758\\uC5D0 \\uC0AC\\uC6A9\\uB41C \\uBAA8\\uB4E0 Framer \\uD30C\\uC77C\\uACFC \\uCF54\\uB4DC \\uC2A4\\uB2C8\\uD3AB\\uC740 \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04\\uC744 \\uC544\\uAEF4\\uC8FC\\uB294 \\uAC00\\uC7A5 \\uAC15\\uB825\\uD55C \\uBB34\\uAE30\\uAC00 \\uB420 \\uAC83\\uC785\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uD504\\uB85C\\uD398\\uC154\\uB110\\uC758 \\uC0C1\\uC9D5, \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uD15C\\uD50C\\uB9BF\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC15\\uC758 \\uC644\\uAC15 \\uD6C4, \\uB2F9\\uC2E0\\uC758 \\uC2E4\\uB825\\uC744 \\uC99D\\uBA85\\uD560 \\uAC00\\uC7A5 \\uBE60\\uB978 \\uBC29\\uBC95. \\uC804\\uBB38\\uAC00\\uAC00 \\uB514\\uC790\\uC778\\uD55C \\uACE0\\uD488\\uC9C8 \\uD15C\\uD50C\\uB9BF\\uC73C\\uB85C \\uB2F9\\uC2E0\\uC758 \\uAC00\\uCE58\\uB97C \\uBCF4\\uC5EC\\uC8FC\\uC138\\uC694.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC131\\uC7A5\\uC758 \\uD604\\uC7AC\\uC9C4\\uD589\\uD615, \\uD3C9\\uC0DD \\uC5C5\\uB370\\uC774\\uD2B8\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC774 \\uAC15\\uC758\\uB294 \\uC0B4\\uC544\\uC788\\uB294 \\uC720\\uAE30\\uCCB4\\uC785\\uB2C8\\uB2E4. Framer\\uC758 \\uBC1C\\uC804\\uC5D0 \\uB9DE\\uCDB0 \\uB04A\\uC784\\uC5C6\\uC774 \\uC9C4\\uD654\\uD558\\uBA70, \\uB2F9\\uC2E0\\uC758 \\uC2E4\\uB825\\uC744 \\uD56D\\uC0C1 \\uCD5C\\uC2E0\\uC73C\\uB85C \\uC720\\uC9C0\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uB2F9\\uC2E0\\uC758 \\uB9C8\\uC9C0\\uB9C9 \\uB9DD\\uC124\\uC784\\uC744 \\uD574\\uACB0\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"space-y-4\", children: faqs.map((faq, index) => /* @__PURE__ */ jsxs(\n                \"details\",\n                {\n                  className: \"bg-white p-6 rounded-lg group cursor-pointer shadow-sm\",\n                  children: [\n                    /* @__PURE__ */ jsxs(\"summary\", { className: \"font-bold text-lg list-none flex justify-between items-center\", children: [\n                      faq.question,\n                      /* @__PURE__ */ jsx(\n                        \"span\",\n                        {\n                          style: { color: colors.harborBlue },\n                          className: \"transform transition-transform duration-300 group-open:rotate-45 text-2xl\",\n                          children: \"+\"\n                        }\n                      )\n                    ] }),\n                    /* @__PURE__ */ jsx(\"div\", { className: \"overflow-hidden max-h-0 group-open:max-h-screen transition-all duration-500 ease-in-out\", children: /* @__PURE__ */ jsx(\"p\", { className: \"mt-4\", style: { color: colors.textMedium }, children: faq.answer }) })\n                  ]\n                },\n                index\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { id: \"pricing\", className: \"py-20 px-4 text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl md:text-5xl font-bold mb-4\", children: \"\\uAC00\\uC7A5 \\uC704\\uB300\\uD55C \\uD22C\\uC790\\uB294 \\uB2F9\\uC2E0\\uC758 \\uC131\\uC7A5\\uC785\\uB2C8\\uB2E4\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"text-lg max-w-2xl mx-auto mb-10\",\n              style: { color: colors.textMedium },\n              children: [\n                \"\\uD55C \\uBC88\\uC758 \\uACB0\\uC2EC\\uC73C\\uB85C, \\uB2F9\\uC2E0\\uC758 \\uCEE4\\uB9AC\\uC5B4\\uB294 \\uC0C8\\uB85C\\uC6B4 \\uC2DC\\uB300\\uB97C \\uB9DE\\uC774\\uD569\\uB2C8\\uB2E4.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uC5B4\\uC81C\\uC758 \\uB2F9\\uC2E0\\uACFC \\uC791\\uBCC4\\uD558\\uACE0, \\uB0B4\\uC77C\\uC758 \\uC804\\uBB38\\uAC00\\uC640 \\uB9CC\\uB098\\uC138\\uC694.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\n            \"div\",\n            {\n              className: \"inline-block rounded-lg p-8 border shadow-xl max-w-md w-full\",\n              style: {\n                borderColor: colors.harborBlue,\n                backgroundColor: colors.white\n              },\n              children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-lg font-bold\", style: { color: colors.harborBlue }, children: \"The Framer Mastery \\uD3C9\\uC0DD\\uC18C\\uC7A5\" }),\n                /* @__PURE__ */ jsxs(\"div\", { className: \"my-4\", children: [\n                  /* @__PURE__ */ jsx(\n                    \"span\",\n                    {\n                      className: \"text-2xl line-through mr-4\",\n                      style: { color: colors.textLight },\n                      children: \"630,000\\uC6D0\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsxs(\"span\", { className: \"text-5xl font-bold\", children: [\n                    new Intl.NumberFormat(\"ko-KR\").format(398e3),\n                    \"\\uC6D0\"\n                  ] })\n                ] }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC6D4 33,166\\uC6D0 (12\\uAC1C\\uC6D4 \\uD560\\uBD80 \\uC2DC)\" }),\n                /* @__PURE__ */ jsx(\"p\", { className: \"my-6 font-bold\", style: { color: colors.harborBlue }, children: \"\\u{1F525} \\uB2F9\\uC2E0\\uC758 \\uC7A0\\uC7AC\\uB825\\uC5D0 \\uD22C\\uC790\\uD558\\uC138\\uC694. \\uD560\\uC778\\uC740 \\uAC70\\uB4E4 \\uBFD0. \\u{1F525}\" }),\n                /* @__PURE__ */ jsx(\n                  \"a\",\n                  {\n                    href: \"#\",\n                    style: { backgroundColor: colors.harborBlue, color: colors.white },\n                    className: \"w-full block font-bold py-4 px-8 rounded-lg text-xl hover:opacity-90 transition-opacity duration-300 transform hover:scale-105\",\n                    children: \"\\uB0B4 \\uAC00\\uCE58\\uB97C \\uC62C\\uB9AC\\uB294 \\uD22C\\uC790 \\uC2DC\\uC791\\uD558\\uAE30\"\n                  }\n                ),\n                /* @__PURE__ */ jsxs(\n                  \"div\",\n                  {\n                    className: \"mt-8 text-left text-sm space-y-2\",\n                    style: { color: colors.textMedium },\n                    children: [\n                      /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                        /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-2\" }),\n                        \" \\uD3C9\\uC0DD \\uC18C\\uC7A5 VOD \\uAC15\\uC758\"\n                      ] }),\n                      /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                        /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-2\" }),\n                        \" \\uC804\\uC6A9 \\uC2AC\\uB799 \\uCEE4\\uBBA4\\uB2C8\\uD2F0 \\uCD08\\uB300\"\n                      ] }),\n                      /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                        /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-2\" }),\n                        \" \\uBAA8\\uB4E0 \\uAC15\\uC758 \\uC790\\uB8CC \\uBC0F \\uD575\\uC2EC \\uB9AC\\uC18C\\uC2A4 \\uC81C\\uACF5\"\n                      ] })\n                    ]\n                  }\n                )\n              ]\n            }\n          )\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4 border-t\",\n            style: {\n              borderColor: colors.harborPink,\n              color: colors.textLight,\n              fontSize: \"0.875rem\"\n            },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\n                \"h2\",\n                {\n                  className: \"text-2xl font-bold text-center mb-8\",\n                  style: { color: colors.textDark },\n                  children: \"\\uD559\\uC2B5 \\uBC0F \\uD658\\uBD88 \\uADDC\\uC815\"\n                }\n              ),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"space-y-6\", children: [\n                /* @__PURE__ */ jsxs(\"div\", { children: [\n                  /* @__PURE__ */ jsx(\"h3\", { className: \"font-bold mb-2\", style: { color: colors.textDark }, children: \"\\uD559\\uC2B5 \\uADDC\\uC815\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBCF8 \\uC0C1\\uD488\\uC740 \\uB3D9\\uC601\\uC0C1 \\uD615\\uD0DC\\uC758 \\uAC15\\uC758\\uB97C \\uD3C9\\uC0DD \\uC18C\\uC7A5\\uD558\\uBA70 \\uC218\\uAC15\\uD558\\uB294 \\uC0C1\\uD488\\uC785\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2E0\\uCCAD \\uBC0F \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD558\\uC2DC\\uBA74, \\uB9C8\\uC774\\uD398\\uC774\\uC9C0\\uB97C \\uD1B5\\uD574 \\uBC14\\uB85C \\uC218\\uAC15\\uC774 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* ID \\uACF5\\uC720, \\uAC15\\uC758 \\uC601\\uC0C1 \\uBB34\\uB2E8 \\uBC30\\uD3EC \\uBC0F \\uAC00\\uACF5, \\uCEA1\\uCCD0, \\uD310\\uB9E4 \\uB4F1 \\uC77C\\uCCB4\\uC758 \\uC800\\uC791\\uAD8C \\uCE68\\uD574 \\uD589\\uC704\\uB97C \\uAE08\\uC9C0\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBD80\\uC815 \\uC0AC\\uC6A9\\uC774 \\uC801\\uBC1C\\uB420 \\uACBD\\uC6B0 \\uC800\\uC791\\uAD8C\\uBC95 \\uC704\\uBC18\\uC5D0 \\uC758\\uD55C \\uBC95\\uC801\\uC778 \\uC81C\\uC7AC\\uB97C \\uBC1B\\uC73C\\uC2E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\" })\n                ] }),\n                /* @__PURE__ */ jsxs(\"div\", { children: [\n                  /* @__PURE__ */ jsx(\"h3\", { className: \"font-bold mb-2\", style: { color: colors.textDark }, children: \"\\uD658\\uBD88 \\uADDC\\uC815\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uD658\\uBD88 \\uAE08\\uC561\\uC740 \\uC815\\uAC00\\uAC00 \\uC544\\uB2CC \\uC2E4\\uC81C \\uACB0\\uC81C \\uAE08\\uC561\\uC744 \\uAE30\\uC900\\uC73C\\uB85C \\uACC4\\uC0B0\\uB429\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2DC\\uC791 \\uD6C4 7\\uC77C \\uC774\\uB0B4, 2\\uAC1C \\uAC15\\uC758 \\uBBF8\\uB9CC \\uC218\\uAC15 \\uC2DC\\uC5D0\\uB294 100% \\uD658\\uBD88 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2DC\\uC791 \\uD6C4 7\\uC77C \\uC774\\uB0B4, 2\\uAC1C \\uAC15\\uC758 \\uC774\\uC0C1 \\uC218\\uAC15 \\uC2DC \\uB610\\uB294 7\\uC77C \\uCD08\\uACFC \\uC2DC\\uC5D0\\uB294 \\uD559\\uC2B5\\uB960\\uC5D0 \\uB530\\uB77C \\uCC28\\uAC10 \\uD6C4 \\uD658\\uBD88\\uC774 \\uC9C4\\uD589\\uB429\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBCF4\\uB2E4 \\uC790\\uC138\\uD55C \\uD658\\uBD88 \\uADDC\\uC815\\uC740 \\uACE0\\uAC1D\\uC13C\\uD130\\uB85C \\uBB38\\uC758 \\uBC14\\uB78D\\uB2C8\\uB2E4.\" })\n                ] })\n              ] })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          \"footer\",\n          {\n            className: \"text-center py-10 border-t\",\n            style: { borderColor: colors.harborPink },\n            children: [\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"text-lg font-bold mb-4\",\n                  style: { color: colors.textDark },\n                  children: \"(\\uC8FC) \\uD558\\uBC84\\uC2A4\\uCFE8\"\n                }\n              ),\n              /* @__PURE__ */ jsxs(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: [\n                \"\\uB300\\uD45C\\uC790 : OOO | \\uAC1C\\uC778\\uC815\\uBCF4\\uCC45\\uC784\\uAD00\\uB9AC\\uC790 : OOO\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uC0AC\\uC5C5\\uC790\\uBC88\\uD638 : 559-63-00040 | \\uD1B5\\uC2E0\\uD310\\uB9E4\\uC5C5 \\uC2E0\\uACE0\\uBC88\\uD638 : \\uC81C 2019-\\uC11C\\uC6B8\\uAC15\\uB0A8-04995\\uD638\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uC8FC\\uC18C : \\uC11C\\uC6B8\\uD2B9\\uBCC4\\uC2DC \\uAD00\\uC545\\uAD6C \\uC870\\uC6D0\\uB85C 25 109 | \\uC774\\uBA54\\uC77C : help@harbor.school\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                /* @__PURE__ */ jsx(\"a\", { href: \"#\", className: \"underline\", children: \"\\uC774\\uC6A9\\uC57D\\uAD00\" }),\n                \" \",\n                \"|\",\n                \" \",\n                /* @__PURE__ */ jsx(\"a\", { href: \"#\", className: \"underline\", children: \"\\uAC1C\\uC778\\uC815\\uBCF4\\uCC98\\uB9AC\\uBC29\\uCE68\" })\n              ] }),\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"mt-4\",\n                  style: { color: colors.textLight, fontSize: \"0.875rem\" },\n                  children: \"\\xA9 2024 Harbor School. All rights reserved.\"\n                }\n              )\n            ]\n          }\n        )\n      ]\n    }\n  );\n}\n\nexport {\n  Framer101_3\n};\n","// src/class/BeforeAfter.tsx\nimport { useState } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar colors = {\n  harborBlue: \"#005DFA\",\n  white: \"#FEFDFA\",\n  textDark: \"#1a202c\",\n  textMedium: \"#4a5568\",\n  textLight: \"#718096\",\n  lightGray: \"#f8f9fa\"\n};\nvar Icon = ({\n  path,\n  className = \"w-10 h-10\"\n}) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    stroke: \"currentColor\",\n    strokeWidth: \"1.5\",\n    children: /* @__PURE__ */ jsx(\"path\", { strokeLinecap: \"round\", strokeLinejoin: \"round\", d: path })\n  }\n);\nvar FigmaIcon = () => /* @__PURE__ */ jsxs(\n  \"svg\",\n  {\n    width: \"24\",\n    height: \"24\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    children: [\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\",\n          fill: \"#2C2C2C\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M7.50009 12C7.50009 10.0688 9.06884 8.5 11.0001 8.5H13.5001C15.4313 8.5 17.0001 10.0688 17.0001 12C17.0001 13.9312 15.4313 15.5 13.5001 15.5H11.0001C9.06884 15.5 7.50009 13.9312 7.50009 12Z\",\n          fill: \"#0ACF83\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M7.5 6.25C7.5 4.31875 9.06875 2.75 11 2.75H13.5C15.4312 2.75 17 4.31875 17 6.25V8.5H13.5C11.5688 8.5 10 7.18125 10 5.25C10 4.81875 9.68125 4.5 9.25 4.5C8.2875 4.5 7.5 5.2875 7.5 6.25Z\",\n          fill: \"#A259FF\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M7.5 17.75C7.5 19.6812 9.06875 21.25 11 21.25H13.5C15.4312 21.25 17 19.6812 17 17.75V15.5H13.5C11.5688 15.5 10 16.8187 10 18.75C10 19.1812 9.68125 19.5 9.25 19.5C8.2875 19.5 7.5 18.7125 7.5 17.75Z\",\n          fill: \"#F24E1E\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M17 12C17 13.9312 15.4312 15.5 13.5 15.5H11C9.06875 15.5 7.5 13.9312 7.5 12C7.5 10.0688 9.06875 8.5 11 8.5H13.5C15.4312 8.5 17 10.0688 17 12Z\",\n          fill: \"#FF7262\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M19.25 12C19.25 13.9312 17.6812 15.5 15.75 15.5H13.5V8.5H15.75C17.6812 8.5 19.25 10.0688 19.25 12Z\",\n          fill: \"#1ABCFE\"\n        }\n      )\n    ]\n  }\n);\nvar ScrollIcon = () => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className: \"w-8 h-8 text-white animate-bounce\",\n    fill: \"none\",\n    viewBox: \"0 0 24 24\",\n    stroke: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        strokeLinecap: \"round\",\n        strokeLinejoin: \"round\",\n        strokeWidth: \"1.5\",\n        d: \"M15 13l-3 3m0 0l-3-3m3 3V8m0 13a9 9 0 110-18 9 9 0 010 18z\"\n      }\n    )\n  }\n);\nvar Arrow = ({ className }) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    stroke: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        strokeLinecap: \"round\",\n        strokeLinejoin: \"round\",\n        strokeWidth: 2,\n        d: \"M14 5l7 7m0 0l-7 7m7-7H3\"\n      }\n    )\n  }\n);\nvar BeforeAfterGraphic = () => {\n  const [showTooltip, setShowTooltip] = useState(true);\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-2 gap-8 items-start\", children: [\n    /* @__PURE__ */ jsxs(\"div\", { children: [\n      /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-bold mb-4 text-red-500\", children: \"Before\" }),\n      /* @__PURE__ */ jsxs(\"div\", { className: \"p-4 rounded-lg border border-gray-200 bg-white shadow-lg h-full\", children: [\n        /* @__PURE__ */ jsx(\"p\", { className: \"text-left text-sm font-semibold mb-4\", children: \"[\\uC218\\uAC15 \\uC804] Figma-\\uAC1C\\uBC1C\\uC790 \\uC804\\uB2EC \\uBC29\\uC2DD\" }),\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col items-center space-y-2\", children: [\n          /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center space-x-2\", children: [\n            /* @__PURE__ */ jsx(FigmaIcon, {}),\n            /* @__PURE__ */ jsx(\"span\", { className: \"font-bold\", children: \"\\uB514\\uC790\\uC774\\uB108\" })\n          ] }),\n          /* @__PURE__ */ jsx(\"p\", { className: \"text-xs text-gray-500\", children: \"\\uC815\\uC801 \\uB514\\uC790\\uC778 \\uC81C\\uC791\" }),\n          /* @__PURE__ */ jsx(Arrow, { className: \"w-8 h-8 text-gray-300 transform rotate-90\" }),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"text-center p-2 bg-red-50 border border-red-200 rounded-lg\", children: [\n            /* @__PURE__ */ jsx(\"p\", { className: \"font-bold text-red-600 text-sm\", children: \"\\uC18C\\uD1B5\\uC758 \\uBCBD\" }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"text-xs text-red-500\", children: '\"\\uC774\\uAC70 \\uC774\\uB807\\uAC8C \\uC548\\uB418\\uB098\\uC694?\"' }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"text-xs text-red-500\", children: '\"\\uC774\\uAC74 \\uAD6C\\uD604\\uC774 \\uC5B4\\uB824\\uC6B4\\uB370...\"' })\n          ] }),\n          /* @__PURE__ */ jsx(Arrow, { className: \"w-8 h-8 text-gray-300 transform rotate-90\" }),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center space-x-2\", children: [\n            /* @__PURE__ */ jsx(\n              Icon,\n              {\n                path: \"M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4\",\n                className: \"w-8 h-8 text-gray-600\"\n              }\n            ),\n            /* @__PURE__ */ jsx(\"span\", { className: \"font-bold\", children: \"\\uAC1C\\uBC1C\\uC790\" })\n          ] }),\n          /* @__PURE__ */ jsx(\"p\", { className: \"text-xs text-gray-500\", children: \"\\uD574\\uC11D\\uD558\\uACE0 \\uC7AC\\uAD6C\\uD604\" })\n        ] })\n      ] }),\n      /* @__PURE__ */ jsx(\"p\", { className: \"mt-4 text-center\", style: { color: colors.textLight }, children: \"\\uC18C\\uD1B5 \\uBE44\\uC6A9 \\uC99D\\uAC00, \\uAD6C\\uD604 \\uD004\\uB9AC\\uD2F0 \\uC800\\uD558\" })\n    ] }),\n    /* @__PURE__ */ jsxs(\"div\", { children: [\n      /* @__PURE__ */ jsx(\n        \"h3\",\n        {\n          className: \"text-2xl font-bold mb-4\",\n          style: { color: colors.harborBlue },\n          children: \"After\"\n        }\n      ),\n      /* @__PURE__ */ jsxs(\n        \"div\",\n        {\n          className: \"p-4 rounded-lg border-2 h-full\",\n          style: { borderColor: colors.harborBlue },\n          children: [\n            /* @__PURE__ */ jsx(\n              \"p\",\n              {\n                className: \"text-left text-sm font-semibold mb-4\",\n                style: { color: colors.harborBlue },\n                children: \"[\\uC218\\uAC15 \\uD6C4] Framer\\uB97C \\uD1B5\\uD55C \\uC6D0\\uC2A4\\uD1B1 \\uC81C\\uC791\"\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"relative w-full h-[450px] rounded-lg overflow-hidden group\",\n                onMouseEnter: () => setShowTooltip(false),\n                children: [\n                  showTooltip && /* @__PURE__ */ jsxs(\"div\", { className: \"absolute inset-0 z-10 flex flex-col items-center justify-center bg-black bg-opacity-60 transition-opacity duration-300 pointer-events-none\", children: [\n                    /* @__PURE__ */ jsx(ScrollIcon, {}),\n                    /* @__PURE__ */ jsx(\"p\", { className: \"mt-2 text-white font-bold\", children: \"\\uC2A4\\uD06C\\uB864\\uD558\\uC5EC \\uC778\\uD130\\uB799\\uC158\\uC744 \\uD655\\uC778\\uD574\\uBCF4\\uC138\\uC694\" })\n                  ] }),\n                  /* @__PURE__ */ jsx(\n                    \"iframe\",\n                    {\n                      src: \"https://marianne.framer.website/\",\n                      className: \"w-full h-full border-0\",\n                      title: \"Framer Project Example\",\n                      scrolling: \"no\"\n                    }\n                  )\n                ]\n              }\n            )\n          ]\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"p\",\n        {\n          className: \"mt-4 text-center font-bold\",\n          style: { color: colors.harborBlue },\n          children: \"\\uC555\\uB3C4\\uC801\\uC778 \\uC18D\\uB3C4, \\uC644\\uBCBD\\uD55C \\uD004\\uB9AC\\uD2F0\"\n        }\n      )\n    ] })\n  ] });\n};\n\nexport {\n  BeforeAfterGraphic\n};\n","import {\n  BeforeAfterGraphic\n} from \"./chunk-6OBOGQ5Q.mjs\";\n\n// src/class/Framer101.tsx\nimport { useState, useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar colors = {\n  harborBlue: \"#005DFA\",\n  white: \"#FEFDFA\",\n  harborPink: \"#FCEBEF\",\n  black: \"#25313c\",\n  textMedium: \"#4a5568\",\n  textLight: \"#718096\",\n  lightGray: \"#f8f9fa\"\n};\nvar CheckIcon = ({ className }) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 24 24\",\n    fill: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        fillRule: \"evenodd\",\n        d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm13.36-1.814a.75.75 0 10-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 00-1.06 1.06l2.25 2.25a.75.75 0 001.14-.094l3.75-5.25z\",\n        clipRule: \"evenodd\"\n      }\n    )\n  }\n);\nvar StarIcon = ({ className }) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 24 24\",\n    fill: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        fillRule: \"evenodd\",\n        d: \"M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.007z\",\n        clipRule: \"evenodd\"\n      }\n    )\n  }\n);\nfunction Framer101() {\n  const features = [\n    \"\\uD504\\uB808\\uC774\\uBA38\\uC758 \\uBAA8\\uB4E0 \\uAE30\\uB2A5, \\uAE30\\uCD08\\uBD80\\uD130 \\uC2E4\\uBB34\\uAE4C\\uC9C0\",\n    \"Apple.com \\uC2A4\\uD0C0\\uC77C\\uC758 \\uACE0\\uAE09 \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158\",\n    \"\\uC2E4\\uC81C \\uCD9C\\uC2DC \\uAC00\\uB2A5\\uD55C \\uBC18\\uC751\\uD615 \\uC6F9 \\uD504\\uB85C\\uC81D\\uD2B8 \\uC81C\\uC791\",\n    \"\\uB514\\uC790\\uC778\\uB9CC\\uC73C\\uB85C \\uB05D\\uB0B4\\uC9C0 \\uC54A\\uB294, \\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uD65C\\uC6A9\\uBC95\",\n    \"Framer CMS\\uB97C \\uD65C\\uC6A9\\uD55C \\uB370\\uC774\\uD130 \\uC5F0\\uB3D9 \\uB9C8\\uC2A4\\uD130\",\n    \"AI\\uB97C \\uD65C\\uC6A9\\uD55C \\uC6F9\\uB514\\uC790\\uC778 \\uBC0F \\uCF54\\uB4DC \\uC0DD\\uC131 \\uC790\\uB3D9\\uD654\"\n  ];\n  const audience = [\n    {\n      title: \"\\uC6F9 \\uB514\\uC790\\uC778\\uC744 \\uCF54\\uB529 \\uB54C\\uBB38\\uC5D0 \\uD3EC\\uAE30\\uD588\\uB358 \\uB514\\uC790\\uC774\\uB108\",\n      description: \"\\uC774\\uC81C \\uAC1C\\uBC1C\\uC790\\uC5D0\\uAC8C \\uC544\\uC26C\\uC6B4 \\uC18C\\uB9AC \\uD558\\uC9C0 \\uB9C8\\uC138\\uC694. \\uB2F9\\uC2E0\\uC774 \\uC0C1\\uC0C1\\uD55C \\uB514\\uC790\\uC778, 100% \\uADF8\\uB300\\uB85C \\uAD6C\\uD604\\uB418\\uB294 \\uC644\\uBCBD\\uD55C \\uBC18\\uC751\\uD615 \\uC6F9\\uC0AC\\uC774\\uD2B8\\uB97C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      title: \"\\uC678\\uC8FC \\uBE44\\uC6A9\\uC774 \\uBD80\\uB2F4\\uB418\\uB294 1\\uC778 \\uC0AC\\uC5C5\\uAC00, \\uC2A4\\uD0C0\\uD2B8\\uC5C5\",\n      description: \"\\uB79C\\uB529\\uD398\\uC774\\uC9C0 \\uD558\\uB098\\uC5D0 \\uC218\\uBC31\\uB9CC \\uC6D0... \\uC774\\uC81C \\uC9C1\\uC811 \\uB9CC\\uB4E4\\uACE0 5\\uBD84 \\uB9CC\\uC5D0 \\uC218\\uC815\\uD558\\uC138\\uC694. \\uC544\\uB080 \\uC678\\uC8FC\\uBE44\\uB85C \\uBE44\\uC988\\uB2C8\\uC2A4\\uC758 \\uC131\\uACF5 \\uD655\\uB960\\uC744 \\uB192\\uC77C \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      title: \"Framer\\uB85C \\uD558\\uC774\\uC5D4\\uB4DC \\uD504\\uB85C\\uC81D\\uD2B8\\uB97C \\uAFC8\\uAFB8\\uB294 \\uC804\\uBB38\\uAC00\",\n      description: \"\\uB2E8\\uC21C \\uD398\\uC774\\uC9C0 \\uC81C\\uC791\\uC744 \\uB118\\uC5B4, \\uACE0\\uAC1D\\uC744 \\uAC10\\uB3D9\\uC2DC\\uD0A4\\uB294 \\uD558\\uC774\\uC5D4\\uB4DC \\uC778\\uD130\\uB799\\uC158\\uC73C\\uB85C \\uB2F9\\uC2E0\\uC758 \\uC11C\\uBE44\\uC2A4 \\uB2E8\\uAC00\\uB97C 2\\uBC30 \\uC774\\uC0C1 \\uB04C\\uC5B4\\uC62C\\uB9AC\\uC138\\uC694. \\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C \\uC804\\uBB38\\uAC00\\uAC00 \\uB418\\uC2ED\\uC2DC\\uC624.\"\n    }\n  ];\n  const reviews = [\n    {\n      name: \"\\uAE40\\uC9C0\\uC218\",\n      role: \"UX/UI \\uB514\\uC790\\uC774\\uB108\",\n      text: \"\\uC774 \\uAC15\\uC758 \\uC5C6\\uC5C8\\uC73C\\uBA74 \\uC5B4\\uCA54 \\uBED4 \\uD588\\uB098\\uC694. \\uAC1C\\uBC1C\\uC790\\uC640\\uC758 \\uC18C\\uD1B5 \\uBE44\\uC6A9\\uC774 1/10\\uB85C \\uC904\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uC81C\\uAC00 \\uC9C1\\uC811 \\uB9CC\\uB4DC\\uB294 \\uAC8C \\uD6E8\\uC52C \\uBE60\\uB974\\uACE0 \\uD004\\uB9AC\\uD2F0\\uB3C4 \\uB192\\uC544\\uC694.\"\n    },\n    {\n      name: \"\\uBC15\\uB300\\uD45C\",\n      role: \"\\uC2A4\\uD0C0\\uD2B8\\uC5C5 \\uB300\\uD45C\",\n      text: \"\\uC678\\uC8FC \\uB9E1\\uAE38 \\uB3C8\\uC73C\\uB85C \\uB9C8\\uCF00\\uD305\\uC5D0 \\uB354 \\uC9D1\\uC911\\uD560 \\uC218 \\uC788\\uAC8C \\uB410\\uC2B5\\uB2C8\\uB2E4. MVP \\uC81C\\uC791\\uACFC \\uD14C\\uC2A4\\uD2B8\\uAC00 \\uC815\\uB9D0 \\uBE68\\uB77C\\uC84C\\uACE0, \\uD22C\\uC790 \\uC720\\uCE58\\uC5D0\\uB3C4 \\uD070 \\uB3C4\\uC6C0\\uC774 \\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      name: \"\\uD504\\uB9AC\\uB79C\\uC11C \\uBC15\",\n      role: \"Framer \\uC804\\uBB38\\uAC00\",\n      text: \"\\uC194\\uC9C1\\uD788 \\uC800\\uB9CC \\uC54C\\uACE0 \\uC2F6\\uC740 \\uAC15\\uC758\\uC785\\uB2C8\\uB2E4. \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158 \\uD30C\\uD2B8\\uB294 \\uC815\\uB9D0... \\uC608\\uC220\\uC785\\uB2C8\\uB2E4. \\uD504\\uB85C\\uC81D\\uD2B8 \\uB2E8\\uAC00\\uAC00 \\uB2EC\\uB77C\\uC84C\\uC5B4\\uC694.\"\n    }\n  ];\n  const curriculum = [\n    {\n      module: \"Week 1: Welcome to Framer\",\n      title: \"Framer \\uC2DC\\uC791\\uD558\\uAE30: \\uAE30\\uBCF8\\uAE30 \\uC644\\uC804 \\uC815\\uBCF5\",\n      description: \"Framer\\uC758 \\uC778\\uD130\\uD398\\uC774\\uC2A4\\uBD80\\uD130 \\uC2DC\\uC791\\uD574, \\uB514\\uC790\\uC778\\uC758 \\uAE30\\uBCF8 \\uC694\\uC18C\\uB4E4\\uC744 \\uC775\\uD788\\uACE0, \\uC65C Framer\\uAC00 \\uD604\\uC874 \\uCD5C\\uACE0\\uC758 \\uC6F9 \\uB514\\uC790\\uC778 \\uD234\\uC778\\uC9C0 \\uC9C1\\uC811 \\uACBD\\uD5D8\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"3.5\\uC2DC\\uAC04\",\n      outcome: \"Framer\\uC758 \\uAE30\\uBCF8 \\uC870\\uC791\\uBC95\\uC744 \\uC644\\uC804\\uD788 \\uC775\\uD788\\uACE0, \\uAC04\\uB2E8\\uD55C \\uB514\\uC790\\uC778 \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Framer\\uB780 \\uBB34\\uC5C7\\uC778\\uAC00? (\\uCCA0\\uD559 & \\uBE44\\uC804)\",\n        \"\\uC778\\uD130\\uD398\\uC774\\uC2A4 \\uC644\\uBCBD \\uAC00\\uC774\\uB4DC: \\uD55C \\uBC88\\uC5D0 \\uB05D\\uB0B4\\uAE30\",\n        \"\\uAE30\\uBCF8 \\uB3C4\\uD615\\uACFC \\uD504\\uB808\\uC784 \\uB2E4\\uB8E8\\uAE30\",\n        \"\\uB808\\uC774\\uC544\\uC6C3\\uC758 \\uD575\\uC2EC: \\uC2A4\\uD0DD\\uACFC \\uADF8\\uB9AC\\uB4DC\",\n        \"[\\uC2E4\\uC2B5] \\uAC04\\uB2E8\\uD55C \\uD504\\uB85C\\uD544 \\uCE74\\uB4DC \\uB9CC\\uB4E4\\uAE30\"\n      ]\n    },\n    {\n      module: \"Week 2: Interactive Design\",\n      title: \"\\uC0B4\\uC544 \\uC6C0\\uC9C1\\uC774\\uB294 \\uB514\\uC790\\uC778: \\uC778\\uD130\\uB799\\uC158 \\uAE30\\uCD08\",\n      description: \"\\uB2E8\\uC21C\\uD55C \\uC774\\uBBF8\\uC9C0\\uB97C \\uB118\\uC5B4 \\uC0AC\\uC6A9\\uC790\\uC640 \\uC0C1\\uD638\\uC791\\uC6A9\\uD558\\uB294 \\uB514\\uC790\\uC778\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4. \\uD074\\uB9AD, \\uD638\\uBC84, \\uB4DC\\uB798\\uADF8 \\uB4F1 \\uD544\\uC218 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uB9C8\\uC2A4\\uD130\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"4\\uC2DC\\uAC04\",\n      outcome: \"\\uC7AC\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uB9CC\\uB4E4\\uACE0, \\uB2E4\\uC591\\uD55C \\uC0C1\\uD0DC\\uC5D0 \\uB530\\uB978 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uAD6C\\uD604\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Effects: \\uADF8\\uB9BC\\uC790, \\uBE14\\uB7EC \\uB4F1 \\uB514\\uC790\\uC778\\uC5D0 \\uAE4A\\uC774 \\uB354\\uD558\\uAE30\",\n        \"Components: \\uC7AC\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uB514\\uC790\\uC778 \\uC2DC\\uC2A4\\uD15C \\uB9CC\\uB4E4\\uAE30\",\n        \"Variants: \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uC0C1\\uD0DC \\uAD00\\uB9AC\\uC758 \\uBAA8\\uB4E0 \\uAC83\",\n        \"\\uAE30\\uBCF8 \\uC778\\uD130\\uB799\\uC158: \\uD074\\uB9AD, \\uD638\\uBC84, \\uB51C\\uB808\\uC774\",\n        \"[\\uC2E4\\uC2B5] \\uC778\\uD130\\uB799\\uD2F0\\uBE0C \\uBC84\\uD2BC \\uBC0F \\uCE74\\uB4DC UI \\uC81C\\uC791\"\n      ]\n    },\n    {\n      module: \"Week 3: Advanced Animations\",\n      title: \"\\uC2DC\\uC120\\uC744 \\uC0AC\\uB85C\\uC7A1\\uB294 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\",\n      description: \"\\uD398\\uC774\\uC9C0 \\uC2A4\\uD06C\\uB864, \\uC694\\uC18C\\uC758 \\uB4F1\\uC7A5\\uACFC \\uC0AC\\uB77C\\uC9D0 \\uB4F1 \\uC815\\uAD50\\uD55C \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC744 \\uAD6C\\uD604\\uD558\\uC5EC \\uC0AC\\uC6A9\\uC790 \\uACBD\\uD5D8\\uC744 \\uADF9\\uB300\\uD654\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"5\\uC2DC\\uAC04\",\n      outcome: \"\\uC2A4\\uD06C\\uB864\\uACFC \\uC5F0\\uB3D9\\uB418\\uB294 \\uBCF5\\uD569\\uC801\\uC778 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC744 \\uC790\\uC720\\uC790\\uC7AC\\uB85C \\uAD6C\\uD604\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"\\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC758 \\uC6D0\\uB9AC: Timing, Easing, Spring\",\n        \"Scroll Section & Scroll Variants\",\n        \"Stagger: \\uC21C\\uCC28\\uC801\\uC778 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC758 \\uBBF8\\uD559\",\n        \"Code Overrides\\uC758 \\uAE30\\uCD08: \\uC560\\uB2C8\\uBA54\\uC774\\uC158 \\uC81C\\uC5B4\\uD558\\uAE30\",\n        \"[\\uC2E4\\uC2B5] \\uC2A4\\uD06C\\uB864\\uC5D0 \\uBC18\\uC751\\uD558\\uB294 \\uD5E4\\uB354 \\uC81C\\uC791\"\n      ]\n    },\n    {\n      module: \"Week 4: The Apple Way\",\n      title: \"\\uC560\\uD50C \\uC2A4\\uD0C0\\uC77C \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158 \\uC815\\uBCF5\",\n      description: \"\\uBAA8\\uB450\\uAC00 \\uAC10\\uD0C4\\uD558\\uB294 \\uC560\\uD50C \\uC6F9\\uC0AC\\uC774\\uD2B8\\uC758 \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158. \\uADF8 \\uC6D0\\uB9AC\\uB97C \\uD30C\\uD5E4\\uCE58\\uACE0, \\uC6B0\\uB9AC \\uC190\\uC73C\\uB85C \\uC9C1\\uC811 \\uAD6C\\uD604\\uD574\\uBD05\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"6.5\\uC2DC\\uAC04\",\n      outcome: \"\\uB204\\uAD6C\\uB098 \\uAC10\\uD0C4\\uD560 \\uB9CC\\uD55C \\uD558\\uC774\\uC5D4\\uB4DC \\uC6F9\\uC0AC\\uC774\\uD2B8\\uC758 \\uD575\\uC2EC \\uC778\\uD130\\uB799\\uC158\\uC744 \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Sticky \\uC2A4\\uD06C\\uB864\\uC758 \\uC6D0\\uB9AC\\uC640 \\uD65C\\uC6A9\",\n        \"3D Transform\\uC744 \\uC774\\uC6A9\\uD55C \\uC785\\uCCB4\\uC801 \\uD6A8\\uACFC\",\n        \"\\uB3D9\\uC601\\uC0C1\\uACFC \\uC2A4\\uD06C\\uB864 \\uC5F0\\uB3D9\\uD558\\uAE30\",\n        \"\\uC2A4\\uD06C\\uB864 \\uC9C4\\uD589\\uB3C4\\uC5D0 \\uB530\\uB978 \\uBCF5\\uD569 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\",\n        \"[\\uC2E4\\uC2B5] \\uC560\\uD50C \\uC5D0\\uC5B4\\uD31F \\uD504\\uB85C \\uC2A4\\uD0C0\\uC77C \\uD398\\uC774\\uC9C0 \\uD074\\uB860\"\n      ]\n    },\n    {\n      module: \"Week 5: Real-World Project\",\n      title: \"\\uC2E4\\uC804! \\uBC18\\uC751\\uD615 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC0AC\\uC774\\uD2B8 \\uC81C\\uC791\",\n      description: \"\\uC9C0\\uAE08\\uAE4C\\uC9C0 \\uBC30\\uC6B4 \\uBAA8\\uB4E0 \\uAE30\\uC220\\uC744 \\uCD1D\\uB3D9\\uC6D0\\uD558\\uC5EC, \\uB370\\uC2A4\\uD06C\\uD0D1\\uBD80\\uD130 \\uBAA8\\uBC14\\uC77C\\uAE4C\\uC9C0 \\uC644\\uBCBD\\uD558\\uAC8C \\uB300\\uC751\\uD558\\uB294 \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC0AC\\uC774\\uD2B8\\uB97C \\uB9CC\\uB4ED\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"8\\uC2DC\\uAC04\",\n      outcome: \"\\uAE30\\uD68D\\uBD80\\uD130 \\uBC30\\uD3EC\\uAE4C\\uC9C0, \\uC6F9 \\uD504\\uB85C\\uC81D\\uD2B8 \\uC804\\uCCB4 \\uC0AC\\uC774\\uD074\\uC744 \\uACBD\\uD5D8\\uD558\\uACE0 \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624\\uB97C \\uC644\\uC131\\uD569\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"\\uD504\\uB85C\\uC81D\\uD2B8 \\uAE30\\uD68D \\uBC0F \\uB514\\uC790\\uC778 \\uC2DC\\uC2A4\\uD15C \\uAD6C\\uCD95\",\n        \"CMS\\uB97C \\uD65C\\uC6A9\\uD55C \\uCF58\\uD150\\uCE20 \\uAD00\\uB9AC\",\n        \"\\uB370\\uC2A4\\uD06C\\uD0D1, \\uD0DC\\uBE14\\uB9BF, \\uBAA8\\uBC14\\uC77C \\uBC18\\uC751\\uD615 \\uB514\\uC790\\uC778\",\n        \"\\uC2E4\\uC81C \\uB3C4\\uBA54\\uC778 \\uC5F0\\uACB0 \\uBC0F \\uC0AC\\uC774\\uD2B8 \\uBC30\\uD3EC\",\n        \"[\\uC2E4\\uC804] \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC6F9\\uC0AC\\uC774\\uD2B8 \\uC644\\uC131\"\n      ]\n    },\n    {\n      module: \"Week 6: From Skill to Profit\",\n      title: \"Framer\\uB85C \\uB3C8 \\uBC8C\\uAE30: \\uC678\\uC8FC\\uBD80\\uD130 \\uCC3D\\uC5C5\\uAE4C\\uC9C0\",\n      description: \"\\uC0C8\\uB85C\\uC6B4 \\uC2A4\\uD0AC\\uC744 \\uC2E4\\uC81C \\uC218\\uC775\\uC73C\\uB85C \\uC5F0\\uACB0\\uD558\\uB294 \\uBC29\\uBC95\\uC744 \\uBC30\\uC6C1\\uB2C8\\uB2E4. \\uC678\\uC8FC \\uD504\\uB85C\\uC81D\\uD2B8 \\uC218\\uC8FC \\uB178\\uD558\\uC6B0, \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC804\\uB7B5, \\uCC3D\\uC5C5 \\uC544\\uC774\\uB514\\uC5B4\\uAE4C\\uC9C0 \\uBAA8\\uB450 \\uACF5\\uAC1C\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 7,\n      duration: \"5\\uC2DC\\uAC04\",\n      outcome: \"\\uC2B5\\uB4DD\\uD55C Framer \\uC2A4\\uD0AC\\uC744 \\uD1B5\\uD574 \\uC2E4\\uC81C \\uC218\\uC775\\uC744 \\uCC3D\\uCD9C\\uD558\\uB294 \\uAD6C\\uCCB4\\uC801\\uC778 \\uBC29\\uBC95\\uC744 \\uC54C\\uAC8C \\uB429\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Framer \\uC804\\uBB38\\uAC00\\uB85C \\uD3EC\\uC9C0\\uC154\\uB2DD\\uD558\\uAE30\",\n        \"\\uCCAB \\uC678\\uC8FC, 100\\uB9CC\\uC6D0\\uBD80\\uD130 \\uC2DC\\uC791\\uD558\\uB294 \\uBC95\",\n        \"\\uD074\\uB77C\\uC774\\uC5B8\\uD2B8\\uB97C \\uC124\\uB4DD\\uD558\\uB294 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC804\\uB7B5\",\n        \"\\uACAC\\uC801\\uBD80\\uD130 \\uACC4\\uC57D\\uAE4C\\uC9C0: \\uC2E4\\uD328 \\uC5C6\\uB294 \\uD504\\uB85C\\uC81D\\uD2B8 \\uAD00\\uB9AC\",\n        \"Framer\\uB85C \\uAC00\\uB2A5\\uD55C 1\\uC778 \\uCC3D\\uC5C5 \\uC544\\uC774\\uD15C\\uB4E4\",\n        \"AI\\uB97C \\uD65C\\uC6A9\\uD55C \\uC0DD\\uC0B0\\uC131 10\\uBC30 \\uB192\\uC774\\uAE30\",\n        \"[\\uD2B9\\uAC15] \\uC6D4 1,000\\uB9CC\\uC6D0 \\uBC84\\uB294 \\uB514\\uC790\\uC774\\uB108\\uC758 \\uC2DC\\uAC04 \\uAD00\\uB9AC\\uBC95\"\n      ]\n    }\n  ];\n  const faqs = [\n    {\n      question: \"\\uCF54\\uB529\\uC744 \\uC804\\uD600 \\uBAA8\\uB974\\uB294\\uB370, \\uC815\\uB9D0 \\uAD1C\\uCC2E\\uC744\\uAE4C\\uC694?\",\n      answer: \"\\uB124, \\uADF8\\uB7FC\\uC694! \\uC774 \\uAC15\\uC758\\uB294 \\uCF54\\uB529 \\uACBD\\uD5D8\\uC774 \\uC804\\uBB34\\uD55C \\uBD84\\uB4E4\\uC744 \\uC704\\uD574 \\uC124\\uACC4\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4. Framer\\uC758 \\uAC15\\uB825\\uD55C \\uB178\\uCF54\\uB4DC \\uAE30\\uB2A5\\uC744 \\uD65C\\uC6A9\\uD558\\uC5EC \\uCF54\\uB529 \\uC5C6\\uC774\\uB3C4 100% \\uC0C1\\uC0C1\\uD558\\uB358 \\uC6F9\\uC0AC\\uC774\\uD2B8\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uCF54\\uB529\\uC740 \\uC120\\uD0DD \\uC0AC\\uD56D\\uC77C \\uBFD0\\uC774\\uBA70, \\uAC15\\uC758 \\uD6C4\\uBC18\\uBD80\\uC758 \\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uD30C\\uD2B8\\uB3C4 \\uBCF5\\uC0AC/\\uBD99\\uC5EC\\uB123\\uAE30\\uB9CC\\uC73C\\uB85C \\uB530\\uB77C\\uC62C \\uC218 \\uC788\\uB3C4\\uB85D \\uAD6C\\uC131\\uD588\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      question: \"\\uAC15\\uC758\\uB97C \\uB4E3\\uAE30 \\uC704\\uD574 \\uBB34\\uC5C7\\uC744 \\uC900\\uBE44\\uD574\\uC57C \\uD558\\uB098\\uC694?\",\n      answer: \"Framer \\uACC4\\uC815\\uACFC \\uC778\\uD130\\uB137\\uC774 \\uC5F0\\uACB0\\uB41C \\uCEF4\\uD4E8\\uD130\\uB9CC \\uC788\\uC73C\\uBA74 \\uB429\\uB2C8\\uB2E4! Framer\\uB294 \\uBB34\\uB8CC \\uD50C\\uB79C\\uC73C\\uB85C\\uB3C4 \\uAC15\\uC758\\uC758 95% \\uC774\\uC0C1\\uC744 \\uC218\\uAC15\\uD558\\uB294 \\uB370 \\uC804\\uD600 \\uBB38\\uC81C\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uCD94\\uAC00\\uB85C \\uC720\\uB8CC \\uD50C\\uB79C\\uC774 \\uD544\\uC694\\uD55C \\uBD80\\uBD84\\uC740 \\uAC15\\uC758\\uC5D0\\uC11C \\uBCC4\\uB3C4\\uB85C \\uC548\\uB0B4\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4.\"\n    },\n    {\n      question: \"\\uAC15\\uC758 \\uC218\\uAC15 \\uAE30\\uAC04\\uC5D0 \\uC81C\\uD55C\\uC774 \\uC788\\uB098\\uC694?\",\n      answer: \"\\uC544\\uB2C8\\uC694! \\uD55C\\uBC88 \\uAD6C\\uB9E4\\uD558\\uC2DC\\uBA74 \\uBAA8\\uB4E0 \\uAC15\\uC758 \\uC601\\uC0C1\\uACFC \\uC790\\uB8CC\\uB294 \\uD3C9\\uC0DD \\uC18C\\uC7A5\\uC774 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4. \\uC5B8\\uC81C \\uC5B4\\uB514\\uC11C\\uB4E0 \\uD3B8\\uD558\\uAC8C \\uBC18\\uBCF5 \\uD559\\uC2B5\\uD558\\uC138\\uC694.\"\n    },\n    {\n      question: \"\\uAC15\\uC758\\uB97C \\uB4E3\\uB2E4\\uAC00 \\uBAA8\\uB974\\uB294 \\uC810\\uC774 \\uC0DD\\uAE30\\uBA74 \\uC5B4\\uB5BB\\uAC8C \\uD558\\uC8E0?\",\n      answer: \"\\uC218\\uAC15\\uC0DD \\uC804\\uC6A9 \\uC2AC\\uB799 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\\uB97C \\uD1B5\\uD574 \\uC9C8\\uBB38\\uC744 \\uB0A8\\uACA8\\uC8FC\\uC2DC\\uBA74, \\uAC15\\uC0AC\\uB2D8\\uACFC \\uB2E4\\uB978 \\uC218\\uAC15\\uC0DD\\uB4E4\\uC774 \\uB2F5\\uBCC0\\uC744 \\uB2EC\\uC544\\uB4DC\\uB9BD\\uB2C8\\uB2E4. \\uD568\\uAED8 \\uBC30\\uC6B0\\uACE0 \\uC131\\uC7A5\\uD558\\uB294 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\\uC5D0 \\uCC38\\uC5EC\\uD558\\uC138\\uC694!\"\n    }\n  ];\n  const CountdownTimer = ({ targetDate }) => {\n    const calculateTimeLeft = () => {\n      const difference = +new Date(targetDate) - +/* @__PURE__ */ new Date();\n      let timeLeft2 = {};\n      if (difference > 0) {\n        timeLeft2 = {\n          \\uC77C: Math.floor(difference / (1e3 * 60 * 60 * 24)),\n          \\uC2DC\\uAC04: Math.floor(difference / (1e3 * 60 * 60) % 24),\n          \\uBD84: Math.floor(difference / 1e3 / 60 % 60),\n          \\uCD08: Math.floor(difference / 1e3 % 60)\n        };\n      }\n      return timeLeft2;\n    };\n    const [timeLeft, setTimeLeft] = useState(calculateTimeLeft());\n    useEffect(() => {\n      const timer = setTimeout(() => {\n        setTimeLeft(calculateTimeLeft());\n      }, 1e3);\n      return () => clearTimeout(timer);\n    });\n    const timerComponents = [];\n    Object.keys(timeLeft).forEach((interval) => {\n      if (!timeLeft[interval] && Object.keys(timeLeft).length > 1) {\n        return;\n      }\n      timerComponents.push(\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-baseline\", children: [\n          /* @__PURE__ */ jsx(\"span\", { className: \"text-2xl md:text-4xl font-bold\", children: String(timeLeft[interval]).padStart(\n            2,\n            \"0\"\n          ) }),\n          /* @__PURE__ */ jsx(\"span\", { className: \"text-sm ml-1\", children: interval })\n        ] }, interval)\n      );\n    });\n    return /* @__PURE__ */ jsx(\"div\", { className: \"flex justify-center space-x-4\", children: timerComponents.length ? timerComponents : /* @__PURE__ */ jsx(\"span\", { children: \"Time's up!\" }) });\n  };\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      style: { backgroundColor: colors.white, color: colors.black },\n      className: \"font-sans\",\n      children: [\n        /* @__PURE__ */ jsxs(\"header\", { className: \"text-center py-20 px-4\", children: [\n          /* @__PURE__ */ jsxs(\"h1\", { className: \"text-5xl md:text-7xl font-bold leading-tight mb-4\", children: [\n            /* @__PURE__ */ jsx(\"span\", { className: \"block\", children: \"\\uCF54\\uB4DC\\uC758 \\uC7A5\\uBCBD\\uC744 \\uB118\\uC5B4,\" }),\n            /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, className: \"block\", children: \"\\uB514\\uC790\\uC778\\uC758 \\uC644\\uC804\\uD55C \\uC790\\uC720\\uB97C \\uACBD\\uD5D8\\uD558\\uC138\\uC694\" })\n          ] }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              style: { color: colors.textMedium },\n              className: \"max-w-2xl mx-auto text-lg md:text-xl mb-8\",\n              children: [\n                \"\\uB2F9\\uC2E0\\uC758 \\uC815\\uAD50\\uD55C \\uB514\\uC790\\uC778\\uC774 \\uAC1C\\uBC1C \\uACFC\\uC815\\uC5D0\\uC11C \\uAE38\\uC744 \\uC783\\uC9C0 \\uC54A\\uB3C4\\uB85D.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"Framer\\uB294 \\uC0C1\\uC0C1\\uC744 \\uD604\\uC2E4\\uB85C \\uB9CC\\uB4DC\\uB294 \\uAC00\\uC7A5 \\uBE60\\uB978 \\uAE38\\uC744 \\uC81C\\uC548\\uD569\\uB2C8\\uB2E4.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\n            \"div\",\n            {\n              style: { backgroundColor: colors.harborPink },\n              className: \"text-center py-4 px-6 rounded-lg max-w-lg mx-auto mb-8\",\n              children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"font-bold text-lg\", style: { color: colors.harborBlue }, children: \"\\uC0C8\\uB85C\\uC6B4 \\uC2DC\\uB300\\uC758 \\uB514\\uC790\\uC774\\uB108\\uB97C \\uC704\\uD55C \\uB9C8\\uC9C0\\uB9C9 \\uD560\\uC778\" }),\n                /* @__PURE__ */ jsx(\"div\", { style: { color: colors.harborBlue }, children: /* @__PURE__ */ jsx(\n                  CountdownTimer,\n                  {\n                    targetDate: new Date(\n                      Date.now() + 3 * 24 * 60 * 60 * 1e3\n                    ).toISOString()\n                  }\n                ) })\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            \"a\",\n            {\n              href: \"#pricing\",\n              style: { backgroundColor: colors.harborBlue, color: colors.white },\n              className: \"font-bold py-4 px-10 rounded-full text-lg hover:opacity-90 transition-opacity duration-300\",\n              children: \"\\uC790\\uC720\\uB97C \\uD5A5\\uD55C \\uC5EC\\uC815 \\uC2DC\\uC791\\uD558\\uAE30\"\n            }\n          )\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto text-center\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-3xl md:text-4xl font-bold mb-6\", children: \"\\uD639\\uC2DC, \\uB2F9\\uC2E0\\uC758 \\uC774\\uC57C\\uAE30\\uC778\\uAC00\\uC694?\" }),\n              /* @__PURE__ */ jsxs(\n                \"p\",\n                {\n                  className: \"text-lg leading-relaxed\",\n                  style: { color: colors.textMedium },\n                  children: [\n                    '\"\\uBD84\\uBA85 \\uC644\\uBCBD\\uD55C \\uB514\\uC790\\uC778\\uC774\\uC5C8\\uB294\\uB370, \\uC65C \\uAC1C\\uBC1C\\uB9CC \\uAC70\\uCE58\\uBA74 \\uD3C9\\uBC94\\uD574\\uC9C8\\uAE4C?\"',\n                    /* @__PURE__ */ jsx(\"br\", {}),\n                    \"\\uC218\\uB9CE\\uC740 \\uB514\\uC790\\uC774\\uB108\\uAC00 \\uACAA\\uB294 \\uC88C\\uC808\\uC785\\uB2C8\\uB2E4. \\uAC1C\\uBC1C\\uC790\\uC640\\uC758 \\uC18C\\uD1B5 \\uBE44\\uC6A9, \\uAE30\\uC220\\uC801 \\uC81C\\uC57D, \\uAE38\\uC5B4\\uC9C0\\uB294 \\uC81C\\uC791 \\uAE30\\uAC04...\",\n                    /* @__PURE__ */ jsx(\"br\", {}),\n                    \"\\uB2F9\\uC2E0\\uC758 \\uC704\\uB300\\uD55C \\uC544\\uC774\\uB514\\uC5B4\\uB294 \\uADF8\\uB807\\uAC8C \\uBE5B\\uC744 \\uC783\\uC5B4\\uAC11\\uB2C8\\uB2E4.\",\n                    /* @__PURE__ */ jsxs(\"span\", { style: { color: colors.harborBlue }, className: \"font-bold\", children: [\n                      \" \",\n                      \"\\uC774\\uC81C \\uADF8 \\uACE0\\uB9AC\\uB97C \\uB04A\\uC5B4\\uB0BC \\uC2DC\\uAC04\\uC785\\uB2C8\\uB2E4.\"\n                    ] })\n                  ]\n                }\n              )\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4 border-t border-gray-100\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-12\", children: \"\\uB2F9\\uC2E0\\uC758 \\uC791\\uC5C5\\uBB3C, \\uC774\\uB807\\uAC8C \\uB2EC\\uB77C\\uC9D1\\uB2C8\\uB2E4\" }),\n          /* @__PURE__ */ jsx(BeforeAfterGraphic, {})\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-12 border-t border-gray-100\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsx(\"div\", { className: \"max-w-6xl mx-auto px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"grid grid-cols-1 md:grid-cols-3 gap-8 text-center\", children: [\n              /* @__PURE__ */ jsxs(\"div\", { children: [\n                /* @__PURE__ */ jsx(\n                  \"p\",\n                  {\n                    className: \"text-4xl font-bold\",\n                    style: { color: colors.harborBlue },\n                    children: \"1,300+\"\n                  }\n                ),\n                /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uB204\\uC801 \\uC218\\uAC15\\uC0DD\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { children: [\n                /* @__PURE__ */ jsx(\n                  \"p\",\n                  {\n                    className: \"text-4xl font-bold\",\n                    style: { color: colors.harborBlue },\n                    children: \"4.9/5.0\"\n                  }\n                ),\n                /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uC218\\uAC15\\uC0DD \\uB9CC\\uC871\\uB3C4\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { children: [\n                /* @__PURE__ */ jsx(\n                  \"p\",\n                  {\n                    className: \"text-4xl font-bold\",\n                    style: { color: colors.harborBlue },\n                    children: \"30+\"\n                  }\n                ),\n                /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8 \\uACBD\\uD5D8\" })\n              ] })\n            ] }) })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center border-t border-gray-100\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl md:text-5xl font-bold mb-6\", children: \"\\uACB0\\uACFC\\uB85C \\uC99D\\uBA85\\uD558\\uB294, \\uB2E8 \\uD558\\uB098\\uC758 \\uB9C8\\uC2A4\\uD130\\uB9AC \\uCF54\\uC2A4\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"max-w-3xl mx-auto text-lg\",\n              style: { color: colors.textMedium },\n              children: [\n                \"\\uC774 \\uAC15\\uC758\\uB294 Framer \\uC0AC\\uC6A9\\uBC95\\uC744 \\uC54C\\uB824\\uC8FC\\uB294 \\uAC15\\uC758\\uAC00 \\uC544\\uB2D9\\uB2C8\\uB2E4.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uB514\\uC790\\uC774\\uB108\\uAC00 \\uC790\\uC2E0\\uC758 \\uAC00\\uCE58\\uB97C \\uC2A4\\uC2A4\\uB85C \\uC99D\\uBA85\\uD558\\uACE0,\",\n                \" \",\n                /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, children: \"\\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C \\uC804\\uBB38\\uAC00\" }),\n                \"\\uB85C \\uAC70\\uB4ED\\uB098\\uB294 \\uBC29\\uBC95\\uC744 \\uC548\\uB0B4\\uD569\\uB2C8\\uB2E4.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto grid md:grid-cols-3 gap-8 mt-12 text-left\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg border border-gray-200\",\n                style: { backgroundColor: colors.white },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"1. \\uCC3D\\uC791\\uC758 \\uC644\\uC804\\uD55C \\uC790\\uC728\\uC131\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC544\\uC774\\uB514\\uC5B4 \\uC2A4\\uCF00\\uCE58\\uBD80\\uD130 \\uCD5C\\uC885 \\uBC30\\uD3EC\\uAE4C\\uC9C0, \\uBAA8\\uB4E0 \\uCC3D\\uC791 \\uACFC\\uC815\\uC744 \\uC628\\uC804\\uD788 \\uD1B5\\uC81C\\uD558\\uC138\\uC694. \\uB354 \\uC774\\uC0C1 \\uAE30\\uC220\\uC801 \\uC81C\\uC57D\\uC774\\uB098 \\uC18C\\uD1B5\\uC758 \\uC624\\uB958\\uB85C \\uB2F9\\uC2E0\\uC758 \\uBE44\\uC804\\uC774 \\uD0C0\\uD611\\uB418\\uB294 \\uC77C\\uC740 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg border border-gray-200\",\n                style: { backgroundColor: colors.white },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"2. \\uC138\\uACC4\\uC801 \\uC218\\uC900\\uC758 \\uC778\\uD130\\uB799\\uC158\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uB2E8\\uC21C\\uD788 '\\uC6C0\\uC9C1\\uC774\\uB294' \\uAC83\\uC744 \\uB118\\uC5B4 '\\uBC18\\uC751\\uD558\\uB294' \\uB514\\uC790\\uC778\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4. \\uC0AC\\uC6A9\\uC790\\uC758 \\uBAA8\\uB4E0 \\uD589\\uB3D9\\uC5D0 \\uC12C\\uC138\\uD558\\uAC8C \\uBC18\\uC751\\uD558\\uB294 \\uC6D4\\uB4DC\\uD074\\uB798\\uC2A4 \\uC778\\uD130\\uB799\\uC158\\uC73C\\uB85C \\uD504\\uB85C\\uC81D\\uD2B8\\uC758 \\uACA9\\uC744 \\uB192\\uC774\\uC138\\uC694.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg border border-gray-200\",\n                style: { backgroundColor: colors.white },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"3. \\uC2E4\\uC804\\uC73C\\uB85C \\uC644\\uC131\\uB418\\uB294 \\uD559\\uC2B5 \\uACBD\\uD5D8\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC774\\uB860\\uC5D0 \\uBA38\\uBB34\\uB294 \\uC9C0\\uC2DD\\uC740 \\uC758\\uBBF8 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uB9E4\\uC8FC \\uC2E4\\uC804 \\uACFC\\uC81C\\uB97C \\uD1B5\\uD574 \\uBC30\\uC6B4 \\uAC83\\uC744 \\uC989\\uC2DC \\uCCB4\\uD654\\uD558\\uACE0, \\uCD5C\\uC885 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uD504\\uB85C\\uC81D\\uD2B8\\uB85C \\uB2F9\\uC2E0\\uC758 \\uC131\\uC7A5\\uC744 \\uC138\\uC0C1\\uC5D0 \\uC99D\\uBA85\\uD558\\uC138\\uC694. \\uC774 \\uAC15\\uC758\\uB294 \\uB2F9\\uC2E0\\uC744 '\\uC544\\uB294' \\uB514\\uC790\\uC774\\uB108\\uAC00 \\uC544\\uB2CC '\\uD574\\uB0B4\\uB294' \\uB514\\uC790\\uC774\\uB108\\uB85C \\uB9CC\\uB4ED\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-4\", children: \"\\uC5B4\\uB5A4 \\uAC15\\uC758\\uB97C \\uC120\\uD0DD\\uD574\\uC57C \\uD560\\uC9C0, \\uACE0\\uBBFC\\uB418\\uC2DC\\uB098\\uC694?\" }),\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"text-lg text-center mb-12\",\n                  style: { color: colors.textMedium },\n                  children: \"\\uB2F9\\uC2E0\\uC758 \\uC18C\\uC911\\uD55C \\uC2DC\\uAC04\\uACFC \\uB178\\uB825\\uC744 \\uAC00\\uC7A5 \\uAC00\\uCE58\\uC788\\uAC8C \\uB9CC\\uB4DC\\uB294 \\uC120\\uD0DD. \\uC800\\uD76C\\uAC00 \\uADF8 \\uCC28\\uC774\\uB97C \\uBA85\\uD655\\uD788 \\uBCF4\\uC5EC\\uB4DC\\uB9BD\\uB2C8\\uB2E4.\"\n                }\n              ),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-2 gap-8\", children: [\n                /* @__PURE__ */ jsxs(\"div\", { className: \"border-2 border-gray-200 rounded-lg p-6 bg-white\", children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-2xl font-bold text-center mb-6\",\n                      style: { color: colors.textLight },\n                      children: \"\\uD0C0\\uC0AC \\uC218\\uC775\\uD615 \\uAC15\\uC758 (ex. \\uD328\\uC2A4\\uD2B8\\uCEA0\\uD37C\\uC2A4)\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsxs(\"ul\", { className: \"space-y-4\", children: [\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(\"span\", { className: \"text-red-500 font-bold mr-3 text-xl\", children: \"\\u2715\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uCCA0\\uD559: \\uB2E8\\uAE30 \\uC218\\uC775 \\uC911\\uC2EC\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: '\"\\uC6D4 1,000\\uB9CC\\uC6D0\"\\uACFC \\uAC19\\uC740 \\uC790\\uADF9\\uC801\\uC778 \\uD0A4\\uC6CC\\uB4DC\\uB85C \\uB2E8\\uAE30\\uC801\\uC778 \\uC218\\uC775 \\uCC3D\\uCD9C\\uC5D0\\uB9CC \\uC9D1\\uC911\\uD569\\uB2C8\\uB2E4. \\uD558\\uC9C0\\uB9CC \\uC804\\uBB38\\uC131\\uC758 \\uAE4A\\uC774\\uB294 \\uB193\\uCE60 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.' })\n                      ] })\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(\"span\", { className: \"text-red-500 font-bold mr-3 text-xl\", children: \"\\u2715\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uD559\\uC2B5 \\uACBD\\uD5D8: \\uD30C\\uD3B8\\uD654\\uB41C \\uC2A4\\uD0AC \\uC2B5\\uB4DD\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uC678\\uC8FC \\uC2A4\\uD0AC, \\uD2B9\\uC815 \\uAE30\\uC220 \\uB4F1 \\uD30C\\uD3B8\\uD654\\uB41C \\uC9C0\\uC2DD\\uC744 \\uB098\\uC5F4\\uD558\\uC5EC \\uC81C\\uACF5\\uD569\\uB2C8\\uB2E4. \\uC65C, \\uC5B4\\uB5BB\\uAC8C \\uC368\\uC57C\\uD558\\uB294\\uC9C0\\uC5D0 \\uB300\\uD55C \\uADFC\\uBCF8\\uC801\\uC778 \\uC774\\uD574\\uAC00 \\uBD80\\uC871\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\" })\n                      ] })\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(\"span\", { className: \"text-red-500 font-bold mr-3 text-xl\", children: \"\\u2715\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uC811\\uADFC\\uC131: \\uC21C\\uCC28\\uC801 \\uAC15\\uC758 \\uACF5\\uAC1C\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uAC15\\uC758\\uAC00 \\uBA87 \\uB2EC\\uC5D0 \\uAC78\\uCCD0 \\uB098\\uB258\\uC5B4 \\uACF5\\uAC1C\\uB429\\uB2C8\\uB2E4. \\uB098\\uC758 \\uD559\\uC2B5 \\uC18D\\uB3C4\\uC640 \\uC0C1\\uAD00\\uC5C6\\uC774, \\uCF58\\uD150\\uCE20\\uAC00 \\uACF5\\uAC1C\\uB420 \\uB54C\\uAE4C\\uC9C0 \\uAE30\\uB2E4\\uB824\\uC57C\\uB9CC \\uD569\\uB2C8\\uB2E4.\" })\n                      ] })\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(\"span\", { className: \"text-red-500 font-bold mr-3 text-xl\", children: \"\\u2715\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uACB0\\uACFC: \\uAE30\\uB2A5 \\uBCF4\\uC720\\uC790\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"Framer\\uB77C\\uB294 '\\uD234'\\uC740 \\uB2E4\\uB8F0 \\uC218 \\uC788\\uC9C0\\uB9CC, \\uB354 \\uC800\\uB834\\uD55C \\uBE44\\uC6A9\\uC744 \\uC81C\\uC2DC\\uD558\\uB294 \\uB2E4\\uB978 '\\uAE30\\uB2A5 \\uBCF4\\uC720\\uC790'\\uC5D0\\uAC8C \\uB300\\uCCB4\\uB420 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\" })\n                      ] })\n                    ] })\n                  ] })\n                ] }),\n                /* @__PURE__ */ jsxs(\n                  \"div\",\n                  {\n                    className: \"border-2 rounded-lg p-6\",\n                    style: {\n                      borderColor: colors.harborBlue,\n                      backgroundColor: colors.white\n                    },\n                    children: [\n                      /* @__PURE__ */ jsx(\n                        \"h3\",\n                        {\n                          className: \"text-2xl font-bold text-center mb-6\",\n                          style: { color: colors.harborBlue },\n                          children: \"Harbor School \\uD504\\uB808\\uC774\\uBA38 101\"\n                        }\n                      ),\n                      /* @__PURE__ */ jsxs(\"ul\", { className: \"space-y-4\", children: [\n                        /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                          /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                          /* @__PURE__ */ jsxs(\"div\", { children: [\n                            /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uCCA0\\uD559: \\uC804\\uBB38\\uAC00\\uB85C\\uC758 \\uC131\\uC7A5\" }),\n                            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"7\\uB144\\uAC04\\uC758 \\uAD50\\uC721 \\uACBD\\uD5D8\\uC744 \\uBC14\\uD0D5\\uC73C\\uB85C, \\uB514\\uC790\\uC778\\uC758 \\uBCF8\\uC9C8\\uACFC \\uBB38\\uC81C \\uD574\\uACB0 \\uB2A5\\uB825\\uC744 \\uAE38\\uB7EC '\\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C' \\uC804\\uBB38\\uAC00\\uB85C \\uC131\\uC7A5\\uC2DC\\uD0B5\\uB2C8\\uB2E4.\" })\n                          ] })\n                        ] }),\n                        /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                          /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                          /* @__PURE__ */ jsxs(\"div\", { children: [\n                            /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uD559\\uC2B5 \\uACBD\\uD5D8: \\uCCB4\\uACC4\\uC801\\uC778 \\uB9C8\\uC2A4\\uD130\\uB9AC\" }),\n                            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uAE30\\uCD08\\uBD80\\uD130 \\uC560\\uD50C \\uC218\\uC900\\uC758 \\uC778\\uD130\\uB799\\uC158, \\uBE44\\uC988\\uB2C8\\uC2A4 \\uC804\\uB7B5\\uAE4C\\uC9C0. \\uBAA8\\uB4E0 \\uACFC\\uC815\\uC774 \\uC720\\uAE30\\uC801\\uC73C\\uB85C \\uC5F0\\uACB0\\uB418\\uC5B4 \\uC555\\uCD95 \\uC131\\uC7A5\\uC744 \\uB3D5\\uB294 \\uAC80\\uC99D\\uB41C \\uB85C\\uB4DC\\uB9F5\\uC785\\uB2C8\\uB2E4.\" })\n                          ] })\n                        ] }),\n                        /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                          /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                          /* @__PURE__ */ jsxs(\"div\", { children: [\n                            /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uC811\\uADFC\\uC131: \\uACB0\\uC81C \\uC989\\uC2DC, \\uBAA8\\uB4E0 \\uAC15\\uC758 \\uC218\\uAC15\" }),\n                            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uAE30\\uB2E4\\uB9B4 \\uD544\\uC694 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uB2F9\\uC2E0\\uC758 \\uD559\\uC2B5 \\uC18D\\uB3C4\\uC5D0 \\uB9DE\\uCDB0 \\uBAA8\\uB4E0 \\uCC55\\uD130\\uB97C \\uC790\\uC720\\uB86D\\uAC8C \\uB118\\uB098\\uB4E4\\uBA70, \\uAC00\\uC7A5 \\uD6A8\\uC728\\uC801\\uC73C\\uB85C \\uD559\\uC2B5\\uD558\\uACE0 \\uBE60\\uB974\\uAC8C \\uC131\\uC7A5\\uD558\\uC138\\uC694.\" })\n                          ] })\n                        ] }),\n                        /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                          /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                          /* @__PURE__ */ jsxs(\"div\", { children: [\n                            /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uACB0\\uACFC: \\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C \\uC804\\uBB38\\uAC00\" }),\n                            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uC790\\uC2E0\\uB9CC\\uC758 \\uB514\\uC790\\uC778 \\uCCA0\\uD559\\uC744 \\uAC16\\uACE0, \\uC5B4\\uB5A4 \\uBB38\\uC81C\\uB4E0 \\uD574\\uACB0\\uD560 \\uC218 \\uC788\\uB294 \\uC804\\uBB38\\uAC00. \\uAC00\\uACA9\\uC774 \\uC544\\uB2CC '\\uAC00\\uCE58'\\uB85C \\uACBD\\uC7C1\\uD558\\uB294 \\uB514\\uC790\\uC774\\uB108\\uAC00 \\uB429\\uB2C8\\uB2E4.\" })\n                          ] })\n                        ] })\n                      ] })\n                    ]\n                  }\n                )\n              ] })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center border-t border-gray-100\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-2xl font-bold\", style: { color: colors.harborBlue }, children: \"GAME CHANGER\" }),\n          /* @__PURE__ */ jsx(\"h3\", { className: \"text-4xl md:text-5xl font-bold my-4\", children: \"\\uC65C \\uC9C0\\uAE08, Framer\\uC778\\uAC00?\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"max-w-3xl mx-auto text-lg\",\n              style: { color: colors.textMedium },\n              children: [\n                \"90%\\uC758 \\uBC18\\uBCF5 \\uC791\\uC5C5\\uACFC 10%\\uC758 \\uD06C\\uB9AC\\uC5D0\\uC774\\uD2F0\\uBE0C. \\uC6F9\\uB514\\uC790\\uC778\\uC758 \\uD604\\uC2E4\\uC785\\uB2C8\\uB2E4. \",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"Framer\\uB294 \\uC774 \\uACF5\\uC2DD\\uC744 \\uC644\\uC804\\uD788 \\uB4A4\\uC9D1\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uC81C \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04 90%\\uB97C \\uC624\\uB86F\\uC774 \\uCC3D\\uC758\\uC131\\uC5D0 \\uC3DF\\uC544\\uBD80\\uC73C\\uC138\\uC694.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto grid md:grid-cols-3 gap-8 mt-12\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.lightGray },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uC555\\uB3C4\\uC801\\uC778 \\uC18D\\uB3C4\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC544\\uC774\\uB514\\uC5B4\\uB97C \\uD604\\uC2E4\\uB85C \\uB9CC\\uB4DC\\uB294 \\uB370 \\uB2E8 \\uD558\\uB8E8. Framer\\uC758 \\uBE14\\uB85D \\uC2DC\\uC2A4\\uD15C\\uACFC AI \\uAE30\\uB2A5\\uC774 \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04\\uC744 \\uC544\\uAEF4\\uC90D\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.lightGray },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uCF54\\uB4DC \\uC5C6\\uB294 \\uACE0\\uD004\\uB9AC\\uD2F0\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC1C\\uBC1C\\uC790\\uAC00 \\uBA87 \\uC8FC\\uAC04 \\uAD6C\\uD604\\uD560 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uB2E8 \\uBA87 \\uBC88\\uC758 \\uD074\\uB9AD\\uC73C\\uB85C. \\uB2F9\\uC2E0\\uC758 \\uB514\\uC790\\uC778\\uC740 \\uC774\\uC81C \\uC8FD\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.lightGray },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uC2E4\\uC2DC\\uAC04 \\uD611\\uC5C5\\uACFC \\uBC30\\uD3EC\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uB514\\uC790\\uC778\\uBD80\\uD130 \\uBC30\\uD3EC\\uAE4C\\uC9C0 \\uD55C \\uACF3\\uC5D0\\uC11C. \\uD300\\uACFC \\uD568\\uAED8 \\uC2E4\\uC2DC\\uAC04\\uC73C\\uB85C \\uC791\\uC5C5\\uD558\\uACE0, \\uD074\\uB9AD \\uD55C \\uBC88\\uC73C\\uB85C \\uC138\\uC0C1\\uC5D0 \\uACF5\\uAC1C\\uD558\\uC138\\uC694.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uC774 \\uC704\\uB300\\uD55C \\uC5EC\\uC815\\uC744 \\uD568\\uAED8\\uD560 \\uBD84\\uB4E4\\uC744 \\uCC3E\\uC2B5\\uB2C8\\uB2E4\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: audience.map((person, index) => /* @__PURE__ */ jsxs(\n                \"div\",\n                {\n                  className: \"p-8 rounded-lg bg-white shadow-md hover:shadow-xl transition-shadow duration-300\",\n                  children: [\n                    /* @__PURE__ */ jsx(\n                      \"h3\",\n                      {\n                        className: \"text-xl font-bold mb-4\",\n                        style: { color: colors.harborBlue },\n                        children: person.title\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: person.description })\n                  ]\n                },\n                index\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4 border-t border-gray-100\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto grid md:grid-cols-2 gap-12 items-center\", children: [\n          /* @__PURE__ */ jsxs(\"div\", { className: \"text-center md:text-left\", children: [\n            /* @__PURE__ */ jsx(\"p\", { className: \"font-bold\", style: { color: colors.harborBlue }, children: \"INSTRUCTOR\" }),\n            /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold my-4\", children: \"Yongmin, Harbor School\" }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"mb-6\", style: { color: colors.textMedium }, children: \"Framer\\uAC00 \\uD55C\\uAD6D\\uC5D0 \\uC54C\\uB824\\uC9C0\\uAE30 \\uC804\\uBD80\\uD130 7\\uB144\\uAC04 Framer\\uB9CC\\uC744 \\uC5F0\\uAD6C\\uD558\\uACE0, 30\\uAC1C \\uC774\\uC0C1\\uC758 \\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8\\uB97C \\uC131\\uACF5\\uC2DC\\uD0A8 1\\uC138\\uB300 Framer \\uC804\\uBB38\\uAC00\\uC785\\uB2C8\\uB2E4. \\uB2E8\\uC21C\\uD55C \\uD234 \\uC0AC\\uC6A9\\uBC95\\uC744 \\uB118\\uC5B4, '\\uC5B4\\uB5BB\\uAC8C' \\uB514\\uC790\\uC778\\uC73C\\uB85C \\uBB38\\uC81C\\uB97C \\uD574\\uACB0\\uD558\\uB294\\uC9C0\\uC5D0 \\uB300\\uD55C \\uAE4A\\uC740 \\uD1B5\\uCC30\\uB825\\uC744 \\uACF5\\uC720\\uD569\\uB2C8\\uB2E4.\" }),\n            /* @__PURE__ */ jsxs(\"div\", { className: \"flex justify-center md:justify-start space-x-8\", children: [\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"7+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uAD50\\uC721 \\uACBD\\uB825\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"30+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"1,300+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uB204\\uC801 \\uC218\\uAC15\\uC0DD\" })\n              ] })\n            ] })\n          ] }),\n          /* @__PURE__ */ jsx(\"div\", { className: \"w-full max-w-sm mx-auto\", children: /* @__PURE__ */ jsx(\n            \"div\",\n            {\n              className: \"aspect-square rounded-full p-2\",\n              style: {\n                background: `linear-gradient(to bottom right, ${colors.harborPink}, ${colors.harborBlue})`\n              },\n              children: /* @__PURE__ */ jsx(\"div\", { className: \"w-full h-full rounded-full flex items-center justify-center bg-gray-100\", children: /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"[\\uAC15\\uC0AC \\uC774\\uBBF8\\uC9C0]\" }) })\n            }\n          ) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uB2F9\\uC2E0\\uC774 \\uB9C8\\uC2A4\\uD130\\uD560 6\\uAC00\\uC9C0 \\uD575\\uC2EC \\uC5ED\\uB7C9\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-2 gap-x-8 gap-y-6\", children: features.map((feature, index) => /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-start space-x-4\", children: [\n                /* @__PURE__ */ jsx(\n                  CheckIcon,\n                  {\n                    className: \"h-6 w-6 mt-1 flex-shrink-0\",\n                    style: { color: colors.harborBlue }\n                  }\n                ),\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-lg\", style: { color: colors.textMedium }, children: feature })\n              ] }, index)) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4 border-t border-gray-100\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uC878\\uC5C5\\uC0DD\\uB4E4\\uC758 \\uC2E4\\uC81C \\uACB0\\uACFC\\uBB3C\" }),\n          /* @__PURE__ */ jsx(\n            \"p\",\n            {\n              className: \"max-w-2xl mx-auto mb-12\",\n              style: { color: colors.textMedium },\n              children: \"\\uC774 \\uAC15\\uC758\\uB97C \\uD1B5\\uD574 \\uB2F9\\uC2E0\\uCC98\\uB7FC \\uD3C9\\uBC94\\uD588\\uB358 \\uB514\\uC790\\uC774\\uB108\\uB4E4\\uC774 \\uB9CC\\uB4E4\\uC5B4\\uB0B8, \\uBE44\\uBC94\\uD55C \\uACB0\\uACFC\\uBB3C\\uB4E4\\uC785\\uB2C8\\uB2E4.\"\n            }\n          ),\n          /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsxs(\"div\", { className: \"group\", children: [\n            /* @__PURE__ */ jsx(\"div\", { className: \"aspect-video rounded-lg bg-gray-100 mb-4 border border-gray-200 flex items-center justify-center\", children: /* @__PURE__ */ jsxs(\"p\", { style: { color: colors.textLight }, children: [\n              \"[\\uC878\\uC5C5\\uC0DD \\uD504\\uB85C\\uC81D\\uD2B8 \",\n              i,\n              \"]\"\n            ] }) }),\n            /* @__PURE__ */ jsxs(\"h3\", { className: \"text-lg font-bold\", children: [\n              \"Project Title \",\n              i\n            ] }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"by Alumnus Name\" })\n          ] }, i)) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto text-center\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uBC31\\uBB38\\uC774 \\uBD88\\uC5EC\\uC77C\\uACAC\" }),\n              /* @__PURE__ */ jsxs(\"p\", { className: \"text-lg mb-8\", style: { color: colors.textMedium }, children: [\n                \"\\uC774 \\uAC15\\uC758\\uB97C \\uD1B5\\uD574 \\uB2F9\\uC2E0\\uC774 \\uC9C1\\uC811 \\uB9CC\\uB4E4\\uAC8C \\uB420\",\n                \" \",\n                /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, className: \"font-bold\", children: \"\\uC2E4\\uC804 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uD504\\uB85C\\uC81D\\uD2B8\" }),\n                \"\\uC785\\uB2C8\\uB2E4.\"\n              ] }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"aspect-video rounded-lg shadow-2xl p-2 border border-gray-200 bg-white\", children: /* @__PURE__ */ jsx(\"div\", { className: \"w-full h-full bg-gray-100 rounded flex items-center justify-center\", children: /* @__PURE__ */ jsxs(\"p\", { style: { color: colors.textLight }, children: [\n                \"[\",\n                /* @__PURE__ */ jsx(\n                  \"a\",\n                  {\n                    href: \"https://marianne.framer.website\",\n                    target: \"_blank\",\n                    rel: \"noopener noreferrer\",\n                    className: \"underline\",\n                    style: { color: colors.harborBlue },\n                    children: \"https://marianne.framer.website\"\n                  }\n                ),\n                \"]\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"(\\uC704 \\uB9C1\\uD06C\\uC640 \\uAC19\\uC740 \\uD004\\uB9AC\\uD2F0\\uC758 \\uACB0\\uACFC\\uBB3C\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4)\"\n              ] }) }) }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-left mt-8 grid md:grid-cols-2 gap-x-8 gap-y-4 max-w-2xl mx-auto\", children: [\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uC644\\uBCBD\\uD55C \\uBC18\\uC751\\uD615 \\uB808\\uC774\\uC544\\uC6C3\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"CMS\\uB97C \\uD1B5\\uD55C \\uB3D9\\uC801 \\uCF58\\uD150\\uCE20 \\uAD00\\uB9AC\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uC2DC\\uC120\\uC744 \\uC0AC\\uB85C\\uC7A1\\uB294 \\uC2A4\\uD06C\\uB864 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uD65C\\uC6A9\\uD55C \\uAE30\\uB2A5 \\uD655\\uC7A5\"\n                ] })\n              ] })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4 border-t border-gray-100\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uC7A0\\uC7AC\\uB825\\uC744 \\uD3ED\\uBC1C\\uC2DC\\uD0AC 6\\uC8FC\\uAC04\\uC758 \\uC555\\uCD95 \\uC131\\uC7A5 \\uD504\\uB85C\\uADF8\\uB7A8\" }),\n          /* @__PURE__ */ jsx(\"div\", { className: \"space-y-4\", children: curriculum.map((week, index) => /* @__PURE__ */ jsxs(\n            \"details\",\n            {\n              className: \"p-6 rounded-lg group border border-gray-200\",\n              open: index === 0,\n              style: { backgroundColor: colors.white },\n              children: [\n                /* @__PURE__ */ jsxs(\"summary\", { className: \"font-bold text-xl list-none flex justify-between items-center cursor-pointer\", children: [\n                  /* @__PURE__ */ jsxs(\"div\", { children: [\n                    /* @__PURE__ */ jsx(\n                      \"p\",\n                      {\n                        className: \"text-sm font-bold\",\n                        style: { color: colors.harborBlue },\n                        children: week.module\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-bold mt-1 group-hover:opacity-80 transition-opacity\", children: week.title })\n                  ] }),\n                  /* @__PURE__ */ jsxs(\n                    \"span\",\n                    {\n                      className: \"text-sm ml-4 whitespace-nowrap\",\n                      style: { color: colors.textLight },\n                      children: [\n                        week.lessonsCount,\n                        \"\\uAC15 / \",\n                        week.duration\n                      ]\n                    }\n                  )\n                ] }),\n                /* @__PURE__ */ jsxs(\"div\", { className: \"overflow-hidden max-h-0 group-open:max-h-[1000px] transition-all duration-500 ease-in-out\", children: [\n                  /* @__PURE__ */ jsx(\"p\", { className: \"my-4\", style: { color: colors.textMedium }, children: week.description }),\n                  /* @__PURE__ */ jsxs(\n                    \"div\",\n                    {\n                      className: \"p-4 rounded-md mt-4\",\n                      style: { backgroundColor: colors.lightGray },\n                      children: [\n                        /* @__PURE__ */ jsx(\n                          \"p\",\n                          {\n                            className: \"font-bold text-sm\",\n                            style: { color: colors.harborBlue },\n                            children: \"Key Outcome\"\n                          }\n                        ),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"mt-1\", style: { color: colors.textMedium }, children: week.outcome })\n                      ]\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"ul\", { className: \"space-y-2 pt-4 mt-4 border-t border-gray-200\", children: week.lessons.map((lesson, lessonIndex) => /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                    /* @__PURE__ */ jsx(\n                      CheckIcon,\n                      {\n                        className: \"h-5 w-5 mr-3 mt-1 flex-shrink-0\",\n                        style: { color: colors.textLight }\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"span\", { style: { color: colors.textMedium }, children: lesson })\n                  ] }, lessonIndex)) })\n                ] })\n              ]\n            },\n            index\n          )) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uBA3C\\uC800 \\uACBD\\uD5D8\\uD55C \\uBD84\\uB4E4\\uC758 \\uC758\\uC2EC \\uC5C6\\uB294 \\uCC2C\\uC0AC\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: reviews.map((review, i) => /* @__PURE__ */ jsxs(\n                \"div\",\n                {\n                  className: \"bg-white p-6 rounded-lg flex flex-col shadow-md hover:shadow-xl transition-shadow duration-300\",\n                  children: [\n                    /* @__PURE__ */ jsx(\"div\", { className: \"flex mb-4\", children: [...Array(5)].map((_, starIndex) => /* @__PURE__ */ jsx(\n                      StarIcon,\n                      {\n                        className: \"h-5 w-5 text-yellow-400\"\n                      },\n                      starIndex\n                    )) }),\n                    /* @__PURE__ */ jsxs(\"p\", { className: \"flex-grow\", style: { color: colors.textMedium }, children: [\n                      '\"',\n                      review.text,\n                      '\"'\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"div\", { className: \"mt-4\", children: [\n                      /* @__PURE__ */ jsx(\"p\", { className: \"font-bold\", children: review.name }),\n                      /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: review.role })\n                    ] })\n                  ]\n                },\n                i\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center border-t border-gray-100\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uB2F9\\uC2E0\\uC758 \\uC131\\uC7A5\\uC744 \\uC704\\uD55C, \\uB2E8 \\uD558\\uB098\\uC758 \\uD0A4\\uD2B8\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"text-lg max-w-2xl mx-auto mb-10\",\n              style: { color: colors.textMedium },\n              children: [\n                \"\\uC131\\uACF5\\uC801\\uC778 \\uC5EC\\uC815\\uC744 \\uC704\\uD574 \\uD544\\uC694\\uD55C \\uBAA8\\uB4E0 \\uAC83\\uC744 \\uB2F4\\uC558\\uC2B5\\uB2C8\\uB2E4.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uB2F9\\uC2E0\\uC740 \\uADF8\\uC800 \\uC131\\uC7A5\\uC5D0\\uB9CC \\uC9D1\\uC911\\uD558\\uC138\\uC694.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto grid md:grid-cols-2 gap-8 text-left\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC131\\uC7A5\\uC758 \\uB3D9\\uBC18\\uC790, \\uC2AC\\uB799 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC19\\uC740 \\uBAA9\\uD45C\\uB97C \\uAC00\\uC9C4 \\uB3D9\\uB8CC\\uB4E4\\uACFC \\uD568\\uAED8\\uB77C\\uBA74 \\uB354 \\uBA40\\uB9AC, \\uB354 \\uBE60\\uB974\\uAC8C \\uAC08 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uACF3\\uC740 \\uB2E8\\uC21C\\uD55C Q&A \\uACF5\\uAC04\\uC774 \\uC544\\uB2CC, \\uC9D1\\uB2E8 \\uC9C0\\uC131\\uC758 \\uD5C8\\uBE0C\\uC785\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC2DC\\uAC04\\uC744 \\uC9C0\\uBC30\\uD558\\uB294, \\uD575\\uC2EC \\uB9AC\\uC18C\\uC2A4\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC15\\uC758\\uC5D0 \\uC0AC\\uC6A9\\uB41C \\uBAA8\\uB4E0 Framer \\uD30C\\uC77C\\uACFC \\uCF54\\uB4DC \\uC2A4\\uB2C8\\uD3AB\\uC740 \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04\\uC744 \\uC544\\uAEF4\\uC8FC\\uB294 \\uAC00\\uC7A5 \\uAC15\\uB825\\uD55C \\uBB34\\uAE30\\uAC00 \\uB420 \\uAC83\\uC785\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uD504\\uB85C\\uD398\\uC154\\uB110\\uC758 \\uC0C1\\uC9D5, \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uD15C\\uD50C\\uB9BF\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC15\\uC758 \\uC644\\uAC15 \\uD6C4, \\uB2F9\\uC2E0\\uC758 \\uC2E4\\uB825\\uC744 \\uC99D\\uBA85\\uD560 \\uAC00\\uC7A5 \\uBE60\\uB978 \\uBC29\\uBC95. \\uC804\\uBB38\\uAC00\\uAC00 \\uB514\\uC790\\uC778\\uD55C \\uACE0\\uD488\\uC9C8 \\uD15C\\uD50C\\uB9BF\\uC73C\\uB85C \\uB2F9\\uC2E0\\uC758 \\uAC00\\uCE58\\uB97C \\uBCF4\\uC5EC\\uC8FC\\uC138\\uC694.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC131\\uC7A5\\uC758 \\uD604\\uC7AC\\uC9C4\\uD589\\uD615, \\uD3C9\\uC0DD \\uC5C5\\uB370\\uC774\\uD2B8\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC774 \\uAC15\\uC758\\uB294 \\uC0B4\\uC544\\uC788\\uB294 \\uC720\\uAE30\\uCCB4\\uC785\\uB2C8\\uB2E4. Framer\\uC758 \\uBC1C\\uC804\\uC5D0 \\uB9DE\\uCDB0 \\uB04A\\uC784\\uC5C6\\uC774 \\uC9C4\\uD654\\uD558\\uBA70, \\uB2F9\\uC2E0\\uC758 \\uC2E4\\uB825\\uC744 \\uD56D\\uC0C1 \\uCD5C\\uC2E0\\uC73C\\uB85C \\uC720\\uC9C0\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uB2F9\\uC2E0\\uC758 \\uB9C8\\uC9C0\\uB9C9 \\uB9DD\\uC124\\uC784\\uC744 \\uD574\\uACB0\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"space-y-4\", children: faqs.map((faq, index) => /* @__PURE__ */ jsxs(\n                \"details\",\n                {\n                  className: \"bg-white p-6 rounded-lg group cursor-pointer shadow-sm\",\n                  children: [\n                    /* @__PURE__ */ jsxs(\"summary\", { className: \"font-bold text-lg list-none flex justify-between items-center\", children: [\n                      faq.question,\n                      /* @__PURE__ */ jsx(\n                        \"span\",\n                        {\n                          style: { color: colors.harborBlue },\n                          className: \"transform transition-transform duration-300 group-open:rotate-45 text-2xl\",\n                          children: \"+\"\n                        }\n                      )\n                    ] }),\n                    /* @__PURE__ */ jsx(\"div\", { className: \"overflow-hidden max-h-0 group-open:max-h-screen transition-all duration-500 ease-in-out\", children: /* @__PURE__ */ jsx(\"p\", { className: \"mt-4\", style: { color: colors.textMedium }, children: faq.answer }) })\n                  ]\n                },\n                index\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          \"section\",\n          {\n            id: \"pricing\",\n            className: \"py-20 px-4 text-center border-t border-gray-100\",\n            children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl md:text-5xl font-bold mb-4\", children: \"\\uAC00\\uC7A5 \\uC704\\uB300\\uD55C \\uD22C\\uC790\\uB294 \\uB2F9\\uC2E0\\uC758 \\uC131\\uC7A5\\uC785\\uB2C8\\uB2E4\" }),\n              /* @__PURE__ */ jsxs(\n                \"p\",\n                {\n                  className: \"text-lg max-w-2xl mx-auto mb-10\",\n                  style: { color: colors.textMedium },\n                  children: [\n                    \"\\uD55C \\uBC88\\uC758 \\uACB0\\uC2EC\\uC73C\\uB85C, \\uB2F9\\uC2E0\\uC758 \\uCEE4\\uB9AC\\uC5B4\\uB294 \\uC0C8\\uB85C\\uC6B4 \\uC2DC\\uB300\\uB97C \\uB9DE\\uC774\\uD569\\uB2C8\\uB2E4.\",\n                    /* @__PURE__ */ jsx(\"br\", {}),\n                    \"\\uC5B4\\uC81C\\uC758 \\uB2F9\\uC2E0\\uACFC \\uC791\\uBCC4\\uD558\\uACE0, \\uB0B4\\uC77C\\uC758 \\uC804\\uBB38\\uAC00\\uC640 \\uB9CC\\uB098\\uC138\\uC694.\"\n                  ]\n                }\n              ),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-2 max-w-4xl mx-auto items-center gap-8\", children: [\n                /* @__PURE__ */ jsxs(\"div\", { className: \"text-left\", children: [\n                  /* @__PURE__ */ jsx(\"h3\", { className: \"text-3xl font-bold mb-4\", children: \"\\uBB34\\uC5C7\\uC744 \\uB9DD\\uC124\\uC774\\uB098\\uC694?\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, className: \"mb-4\", children: \"\\uC774 \\uAC15\\uC758\\uB294 \\uB2E8\\uC21C\\uD55C \\uC9C0\\uCD9C\\uC774 \\uC544\\uB2CC, \\uB2F9\\uC2E0\\uC758 \\uBBF8\\uB798\\uB97C \\uC704\\uD55C \\uAC00\\uC7A5 \\uD655\\uC2E4\\uD55C \\uD22C\\uC790\\uC785\\uB2C8\\uB2E4. \\uC218\\uC2ED, \\uC218\\uBC31 \\uBC30\\uC758 \\uAC00\\uCE58\\uB85C \\uB3CC\\uC544\\uC62C \\uC131\\uC7A5\\uC758 \\uAE30\\uD68C\\uB97C \\uB354 \\uC774\\uC0C1 \\uBBF8\\uB8E8\\uC9C0 \\uB9C8\\uC138\\uC694.\" }),\n                  /* @__PURE__ */ jsxs(\"ul\", { className: \"space-y-3\", children: [\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uD3C9\\uC0DD \\uC18C\\uC7A5 VOD\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uC5B8\\uC81C \\uC5B4\\uB514\\uC11C\\uB4E0, \\uB2F9\\uC2E0\\uC758 \\uD398\\uC774\\uC2A4\\uC5D0 \\uB9DE\\uCDB0 \\uD559\\uC2B5\\uD558\\uC138\\uC694.\" })\n                      ] })\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uC804\\uBB38\\uAC00 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uD63C\\uC790\\uAC00 \\uC544\\uB2CC \\uD568\\uAED8\\uC758 \\uD798\\uC73C\\uB85C \\uB354 \\uBE60\\uB974\\uAC8C \\uC131\\uC7A5\\uD569\\uB2C8\\uB2E4.\" })\n                      ] })\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uC2E4\\uC804 \\uC911\\uC2EC\\uC758 \\uACB0\\uACFC\\uBB3C\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uAC15\\uC758\\uAC00 \\uB05D\\uB098\\uBA74, \\uB2F9\\uC2E0\\uC758 \\uC2E4\\uB825\\uC744 \\uC99D\\uBA85\\uD560 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624\\uAC00 \\uB0A8\\uC2B5\\uB2C8\\uB2E4.\" })\n                      ] })\n                    ] })\n                  ] })\n                ] }),\n                /* @__PURE__ */ jsxs(\n                  \"div\",\n                  {\n                    style: { backgroundColor: colors.harborBlue, color: colors.white },\n                    className: \"rounded-lg p-8 shadow-2xl text-center\",\n                    children: [\n                      /* @__PURE__ */ jsx(\"p\", { className: \"text-lg font-bold\", children: \"Framer 101 Mastery\" }),\n                      /* @__PURE__ */ jsxs(\"p\", { className: \"text-5xl font-bold my-4\", children: [\n                        new Intl.NumberFormat(\"ko-KR\").format(32e4),\n                        \"\\uC6D0\"\n                      ] }),\n                      /* @__PURE__ */ jsxs(\"p\", { className: \"line-through text-xl opacity-70\", children: [\n                        new Intl.NumberFormat(\"ko-KR\").format(63e4),\n                        \"\\uC6D0\"\n                      ] }),\n                      /* @__PURE__ */ jsx(\"div\", { className: \"my-6\", children: /* @__PURE__ */ jsx(\"span\", { className: \"bg-yellow-400 text-black font-bold py-1 px-3 rounded-md\", children: \"49% OFF\" }) }),\n                      /* @__PURE__ */ jsx(\n                        \"a\",\n                        {\n                          href: \"#\",\n                          style: {\n                            backgroundColor: colors.harborPink,\n                            color: colors.black\n                          },\n                          className: \"w-full block font-bold py-4 px-8 rounded-lg text-xl hover:opacity-90 transition-opacity duration-300 transform hover:scale-105\",\n                          children: \"\\uBC14\\uB85C \\uAD6C\\uB9E4\\uD558\\uACE0 \\uC2DC\\uC791\\uD558\\uAE30\"\n                        }\n                      ),\n                      /* @__PURE__ */ jsx(\"p\", { className: \"text-sm mt-4 opacity-80\", children: \"\\uC6D4 26,600\\uC6D0 (12\\uAC1C\\uC6D4 \\uD560\\uBD80 \\uC2DC)\" })\n                    ]\n                  }\n                )\n              ] })\n            ]\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4 border-t border-gray-100\",\n            style: {\n              backgroundColor: colors.lightGray,\n              color: colors.textLight,\n              fontSize: \"0.875rem\"\n            },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\n                \"h2\",\n                {\n                  className: \"text-2xl font-bold text-center mb-8\",\n                  style: { color: colors.black },\n                  children: \"\\uD559\\uC2B5 \\uBC0F \\uD658\\uBD88 \\uADDC\\uC815\"\n                }\n              ),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"space-y-6\", children: [\n                /* @__PURE__ */ jsxs(\"div\", { children: [\n                  /* @__PURE__ */ jsx(\"h3\", { className: \"font-bold mb-2\", style: { color: colors.black }, children: \"\\uD559\\uC2B5 \\uADDC\\uC815\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBCF8 \\uC0C1\\uD488\\uC740 \\uB3D9\\uC601\\uC0C1 \\uD615\\uD0DC\\uC758 \\uAC15\\uC758\\uB97C \\uD3C9\\uC0DD \\uC18C\\uC7A5\\uD558\\uBA70 \\uC218\\uAC15\\uD558\\uB294 \\uC0C1\\uD488\\uC785\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2E0\\uCCAD \\uBC0F \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD558\\uC2DC\\uBA74, \\uB9C8\\uC774\\uD398\\uC774\\uC9C0\\uB97C \\uD1B5\\uD574 \\uBC14\\uB85C \\uC218\\uAC15\\uC774 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* ID \\uACF5\\uC720, \\uAC15\\uC758 \\uC601\\uC0C1 \\uBB34\\uB2E8 \\uBC30\\uD3EC \\uBC0F \\uAC00\\uACF5, \\uCEA1\\uCCD0, \\uD310\\uB9E4 \\uB4F1 \\uC77C\\uCCB4\\uC758 \\uC800\\uC791\\uAD8C \\uCE68\\uD574 \\uD589\\uC704\\uB97C \\uAE08\\uC9C0\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBD80\\uC815 \\uC0AC\\uC6A9\\uC774 \\uC801\\uBC1C\\uB420 \\uACBD\\uC6B0 \\uC800\\uC791\\uAD8C\\uBC95 \\uC704\\uBC18\\uC5D0 \\uC758\\uD55C \\uBC95\\uC801\\uC778 \\uC81C\\uC7AC\\uB97C \\uBC1B\\uC73C\\uC2E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\" })\n                ] }),\n                /* @__PURE__ */ jsxs(\"div\", { children: [\n                  /* @__PURE__ */ jsx(\"h3\", { className: \"font-bold mb-2\", style: { color: colors.black }, children: \"\\uD658\\uBD88 \\uADDC\\uC815\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uD658\\uBD88 \\uAE08\\uC561\\uC740 \\uC815\\uAC00\\uAC00 \\uC544\\uB2CC \\uC2E4\\uC81C \\uACB0\\uC81C \\uAE08\\uC561\\uC744 \\uAE30\\uC900\\uC73C\\uB85C \\uACC4\\uC0B0\\uB429\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2DC\\uC791 \\uD6C4 7\\uC77C \\uC774\\uB0B4, 2\\uAC1C \\uAC15\\uC758 \\uBBF8\\uB9CC \\uC218\\uAC15 \\uC2DC\\uC5D0\\uB294 100% \\uD658\\uBD88 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2DC\\uC791 \\uD6C4 7\\uC77C \\uC774\\uB0B4, 2\\uAC1C \\uAC15\\uC758 \\uC774\\uC0C1 \\uC218\\uAC15 \\uC2DC \\uB610\\uB294 7\\uC77C \\uCD08\\uACFC \\uC2DC\\uC5D0\\uB294 \\uD559\\uC2B5\\uB960\\uC5D0 \\uB530\\uB77C \\uCC28\\uAC10 \\uD6C4 \\uD658\\uBD88\\uC774 \\uC9C4\\uD589\\uB429\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBCF4\\uB2E4 \\uC790\\uC138\\uD55C \\uD658\\uBD88 \\uADDC\\uC815\\uC740 \\uACE0\\uAC1D\\uC13C\\uD130\\uB85C \\uBB38\\uC758 \\uBC14\\uB78D\\uB2C8\\uB2E4.\" })\n                ] })\n              ] })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          \"footer\",\n          {\n            className: \"text-center py-10 border-t border-gray-100\",\n            style: { backgroundColor: colors.white },\n            children: [\n              /* @__PURE__ */ jsx(\"p\", { className: \"text-lg font-bold mb-4\", style: { color: colors.black }, children: \"(\\uC8FC) \\uD558\\uBC84\\uC2A4\\uCFE8\" }),\n              /* @__PURE__ */ jsxs(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: [\n                \"\\uB300\\uD45C\\uC790 : OOO | \\uAC1C\\uC778\\uC815\\uBCF4\\uCC45\\uC784\\uAD00\\uB9AC\\uC790 : OOO\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uC0AC\\uC5C5\\uC790\\uBC88\\uD638 : 559-63-00040 | \\uD1B5\\uC2E0\\uD310\\uB9E4\\uC5C5 \\uC2E0\\uACE0\\uBC88\\uD638 : \\uC81C 2019-\\uC11C\\uC6B8\\uAC15\\uB0A8-04995\\uD638\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uC8FC\\uC18C : \\uC11C\\uC6B8\\uD2B9\\uBCC4\\uC2DC \\uAD00\\uC545\\uAD6C \\uC870\\uC6D0\\uB85C 25 109 | \\uC774\\uBA54\\uC77C : help@harbor.school\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                /* @__PURE__ */ jsx(\"a\", { href: \"#\", className: \"underline\", children: \"\\uC774\\uC6A9\\uC57D\\uAD00\" }),\n                \" \",\n                \"|\",\n                \" \",\n                /* @__PURE__ */ jsx(\"a\", { href: \"#\", className: \"underline\", children: \"\\uAC1C\\uC778\\uC815\\uBCF4\\uCC98\\uB9AC\\uBC29\\uCE68\" })\n              ] }),\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"mt-4\",\n                  style: { color: colors.textLight, fontSize: \"0.875rem\" },\n                  children: \"\\xA9 2024 Harbor School. All rights reserved.\"\n                }\n              )\n            ]\n          }\n        )\n      ]\n    }\n  );\n}\n\nexport {\n  Framer101\n};\n","// src/class/Reviews.tsx\nimport { useState } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar FONTS = {\n  bold: '\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\n  medium: '\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\n  light: '\"Pretendard Light\", \"Pretendard Light Placeholder\", sans-serif'\n};\nvar StarRating = ({\n  rating,\n  size = \"md\"\n}) => {\n  const sizeClasses = {\n    sm: \"w-4 h-4\",\n    md: \"w-5 h-5\",\n    lg: \"w-6 h-6\"\n  };\n  return /* @__PURE__ */ jsx(\"div\", { className: \"flex items-center space-x-1\", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(\n    \"svg\",\n    {\n      className: `${sizeClasses[size]} ${star <= rating ? \"text-yellow-400\" : \"text-gray-300\"} fill-current`,\n      viewBox: \"0 0 20 20\",\n      children: /* @__PURE__ */ jsx(\"path\", { d: \"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z\" })\n    },\n    star\n  )) });\n};\nvar ReviewItem = ({ review }) => {\n  const [isHelpful, setIsHelpful] = useState(false);\n  const [helpfulCount, setHelpfulCount] = useState(review.helpful);\n  const handleHelpful = () => {\n    if (!isHelpful) {\n      setHelpfulCount((prev) => prev + 1);\n      setIsHelpful(true);\n    }\n  };\n  return /* @__PURE__ */ jsx(\"div\", { className: \"bg-white border border-gray-200 rounded-lg p-6 mb-4 shadow-sm hover:shadow-md transition-shadow max-md:p-4 max-md:mb-3\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-start space-x-4 max-md:space-x-3\", children: [\n    /* @__PURE__ */ jsx(\"div\", { className: \"flex-shrink-0\", children: /* @__PURE__ */ jsx(\n      \"div\",\n      {\n        className: \"w-12 h-12 bg-gradient-to-br from-blue-500 to-purple-600 rounded-full flex items-center justify-center text-white text-lg max-md:w-10 max-md:h-10 max-md:text-base\",\n        style: { fontFamily: FONTS.bold },\n        children: review.name.charAt(0)\n      }\n    ) }),\n    /* @__PURE__ */ jsxs(\"div\", { className: \"flex-1 min-w-0\", children: [\n      /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-start justify-between mb-2 max-md:flex-col max-md:gap-2\", children: [\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex-1 min-w-0\", children: [\n          /* @__PURE__ */ jsx(\n            \"h4\",\n            {\n              className: \"text-gray-900 max-md:text-sm\",\n              style: { fontFamily: FONTS.bold },\n              children: review.name\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            \"p\",\n            {\n              className: \"text-sm text-gray-600 max-md:text-xs\",\n              style: { fontFamily: FONTS.light },\n              children: review.role\n            }\n          )\n        ] }),\n        review.verified && /* @__PURE__ */ jsxs(\n          \"span\",\n          {\n            className: \"inline-flex items-center px-2 py-1 rounded-full text-xs bg-green-100 text-green-800 max-md:px-1 max-md:py-0.5 max-md:text-xs flex-shrink-0\",\n            style: { fontFamily: FONTS.medium },\n            children: [\n              /* @__PURE__ */ jsx(\n                \"svg\",\n                {\n                  className: \"w-3 h-3 mr-1 max-md:w-2 max-md:h-2\",\n                  fill: \"currentColor\",\n                  viewBox: \"0 0 20 20\",\n                  children: /* @__PURE__ */ jsx(\n                    \"path\",\n                    {\n                      fillRule: \"evenodd\",\n                      d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\",\n                      clipRule: \"evenodd\"\n                    }\n                  )\n                }\n              ),\n              /* @__PURE__ */ jsx(\"span\", { className: \"max-md:hidden\", children: \"\\uC778\\uC99D\\uB41C \\uC218\\uAC15\\uC0DD\" }),\n              /* @__PURE__ */ jsx(\"span\", { className: \"md:hidden\", children: \"\\uC778\\uC99D\" })\n            ]\n          }\n        )\n      ] }),\n      /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center space-x-4 mb-3 max-md:space-x-2 max-md:mb-2\", children: [\n        /* @__PURE__ */ jsx(\"div\", { className: \"hidden md:block\", children: /* @__PURE__ */ jsx(StarRating, { rating: review.rating, size: \"md\" }) }),\n        /* @__PURE__ */ jsx(\"div\", { className: \"md:hidden\", children: /* @__PURE__ */ jsx(StarRating, { rating: review.rating, size: \"sm\" }) }),\n        /* @__PURE__ */ jsx(\n          \"span\",\n          {\n            className: \"text-sm text-gray-500 max-md:text-xs\",\n            style: { fontFamily: FONTS.light },\n            children: review.date\n          }\n        )\n      ] }),\n      /* @__PURE__ */ jsx(\n        \"p\",\n        {\n          className: \"text-gray-700 leading-relaxed mb-4 max-md:text-sm max-md:leading-normal max-md:mb-3\",\n          style: { fontFamily: FONTS.light },\n          children: review.content\n        }\n      ),\n      /* @__PURE__ */ jsx(\"div\", { className: \"flex items-center space-x-4 text-sm max-md:space-x-2\", children: /* @__PURE__ */ jsxs(\n        \"button\",\n        {\n          onClick: handleHelpful,\n          className: `flex items-center space-x-1 px-3 py-1 rounded-full transition-colors max-md:px-2 max-md:py-1 max-md:text-xs ${isHelpful ? \"bg-blue-100 text-blue-700\" : \"bg-gray-100 text-gray-600 hover:bg-gray-200\"}`,\n          style: { fontFamily: FONTS.medium },\n          children: [\n            /* @__PURE__ */ jsx(\n              \"svg\",\n              {\n                className: \"w-4 h-4 max-md:w-3 max-md:h-3\",\n                fill: \"none\",\n                stroke: \"currentColor\",\n                viewBox: \"0 0 24 24\",\n                children: /* @__PURE__ */ jsx(\n                  \"path\",\n                  {\n                    strokeLinecap: \"round\",\n                    strokeLinejoin: \"round\",\n                    strokeWidth: 2,\n                    d: \"M14 10h4.764a2 2 0 011.789 2.894l-3.5 7A2 2 0 0115.263 21h-4.017c-.163 0-.326-.02-.485-.06L7 20m7-10V5a2 2 0 00-2-2h-.095c-.5 0-.905.405-.905.905 0 .714-.211 1.412-.608 2.006L9 6m-5 4v10m5-10H4a2 2 0 00-2 2v8a2 2 0 002 2h5z\"\n                  }\n                )\n              }\n            ),\n            /* @__PURE__ */ jsxs(\"span\", { children: [\n              \"\\uB3C4\\uC6C0\\uB428 \",\n              helpfulCount\n            ] })\n          ]\n        }\n      ) })\n    ] })\n  ] }) });\n};\nvar ReviewStats = ({ reviews }) => {\n  const averageRating = reviews.reduce((sum, review) => sum + review.rating, 0) / reviews.length;\n  const ratingDistribution = [5, 4, 3, 2, 1].map((rating) => ({\n    rating,\n    count: reviews.filter((r) => r.rating === rating).length,\n    percentage: reviews.filter((r) => r.rating === rating).length / reviews.length * 100\n  }));\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"bg-white border border-gray-200 rounded-lg p-6 mb-8 max-md:p-4 max-md:mb-6\", children: [\n    /* @__PURE__ */ jsx(\n      \"h3\",\n      {\n        className: \"text-xl mb-4 max-md:text-lg max-md:mb-3\",\n        style: { fontFamily: FONTS.bold },\n        children: \"\\uC218\\uAC15\\uC0DD \\uB9AC\\uBDF0 \\uD1B5\\uACC4\"\n      }\n    ),\n    /* @__PURE__ */ jsxs(\"div\", { className: \"grid grid-cols-1 md:grid-cols-2 gap-8 max-md:gap-6\", children: [\n      /* @__PURE__ */ jsx(\"div\", { children: /* @__PURE__ */ jsxs(\"div\", { className: \"text-center mb-4 max-md:mb-3\", children: [\n        /* @__PURE__ */ jsx(\n          \"div\",\n          {\n            className: \"text-4xl text-gray-900 max-md:text-3xl\",\n            style: { fontFamily: FONTS.bold },\n            children: averageRating.toFixed(1)\n          }\n        ),\n        /* @__PURE__ */ jsx(\"div\", { className: \"hidden md:block\", children: /* @__PURE__ */ jsx(StarRating, { rating: Math.round(averageRating), size: \"lg\" }) }),\n        /* @__PURE__ */ jsx(\"div\", { className: \"md:hidden\", children: /* @__PURE__ */ jsx(StarRating, { rating: Math.round(averageRating), size: \"md\" }) }),\n        /* @__PURE__ */ jsxs(\n          \"p\",\n          {\n            className: \"text-gray-600 mt-2 max-md:text-sm max-md:mt-1\",\n            style: { fontFamily: FONTS.light },\n            children: [\n              \"\\uCD1D \",\n              reviews.length,\n              \"\\uAC1C\\uC758 \\uB9AC\\uBDF0\"\n            ]\n          }\n        )\n      ] }) }),\n      /* @__PURE__ */ jsx(\"div\", { children: /* @__PURE__ */ jsx(\"div\", { className: \"space-y-2 max-md:space-y-1\", children: ratingDistribution.map(({ rating, count, percentage }) => /* @__PURE__ */ jsxs(\n        \"div\",\n        {\n          className: \"flex items-center space-x-2 max-md:space-x-1\",\n          children: [\n            /* @__PURE__ */ jsxs(\n              \"span\",\n              {\n                className: \"text-sm text-gray-600 w-8 max-md:text-xs max-md:w-6\",\n                style: { fontFamily: FONTS.light },\n                children: [\n                  rating,\n                  \"\\uC810\"\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsx(\"div\", { className: \"flex-1 bg-gray-200 rounded-full h-2 max-md:h-1.5\", children: /* @__PURE__ */ jsx(\n              \"div\",\n              {\n                className: \"bg-yellow-400 h-2 rounded-full transition-all duration-500 max-md:h-1.5\",\n                style: { width: `${percentage}%` }\n              }\n            ) }),\n            /* @__PURE__ */ jsx(\n              \"span\",\n              {\n                className: \"text-sm text-gray-600 w-8 max-md:text-xs max-md:w-6\",\n                style: { fontFamily: FONTS.light },\n                children: count\n              }\n            )\n          ]\n        },\n        rating\n      )) }) })\n    ] })\n  ] });\n};\nvar Reviews = () => {\n  const [sortBy, setSortBy] = useState(\n    \"latest\"\n  );\n  const [filterRating, setFilterRating] = useState(null);\n  const reviewsData = [\n    {\n      id: 1,\n      name: \"\\uC548\\uC6B0\\uC900\",\n      role: \"AI Artist, TA\",\n      rating: 5,\n      date: \"2024.11.15\",\n      content: \"\\uC774 \\uAC15\\uC758\\uB97C \\uB4E4\\uC5B4\\uC11C \\uCDE8\\uC5C5\\uD55C \\uB9CC\\uD07C \\uC544\\uC8FC \\uC88B\\uC740 \\uAC15\\uC758\\uB77C\\uACE0 \\uC0DD\\uAC01\\uB429\\uB2C8\\uB2E4. \\uAD11\\uACE0\\uCABD\\uC740 \\uC774 \\uAC15\\uC758\\uB97C \\uB4E4\\uC73C\\uBA74 AI\\uB85C \\uD560 \\uC218 \\uC788\\uB294 \\uB300\\uBD80\\uBD84\\uC744 \\uC751\\uC6A9\\uD560 \\uC218 \\uC788\\uB2E4\\uACE0 \\uC0DD\\uAC01\\uB429\\uB2C8\\uB2E4. \\uC2E4\\uBB34\\uC5D0\\uC11C \\uBC14\\uB85C \\uC368\\uBA39\\uC744 \\uC218 \\uC788\\uB294 \\uC6CC\\uD06C\\uD50C\\uB85C\\uC6B0\\uB4E4\\uC774 \\uC815\\uB9D0 \\uC720\\uC6A9\\uD588\\uC5B4\\uC694. \\uD2B9\\uD788 ComfyUI\\uC758 \\uBCF5\\uC7A1\\uD55C \\uB178\\uB4DC \\uC2DC\\uC2A4\\uD15C\\uC744 \\uC774\\uD574\\uD558\\uAE30 \\uC27D\\uAC8C \\uC124\\uBA85\\uD574\\uC8FC\\uC154\\uC11C \\uAC10\\uC0AC\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 45,\n      verified: true\n    },\n    {\n      id: 2,\n      name: \"\\uC218\\uAC15\\uC0DD K\",\n      role: \"\\uB9C8\\uCF00\\uD130\",\n      rating: 5,\n      date: \"2024.11.10\",\n      content: \"\\uC88B\\uC558\\uB358 \\uC810\\uC740 \\uAC15\\uC758\\uC5D0\\uC11C \\uC2DC\\uC5F0\\uC73C\\uB85C \\uBCF4\\uC5EC\\uC8FC\\uC2DC\\uB294 \\uBAA8\\uB4E0 \\uC6CC\\uD06C\\uD50C\\uB85C\\uC6B0\\uB97C \\uC0C1\\uC138\\uD788 \\uB2E4\\uB904\\uC8FC\\uC2E0 \\uD6C4 \\uC804\\uBD80 \\uACF5\\uC720\\uB97C \\uD574\\uC8FC\\uC2E0\\uB2E4\\uB294 \\uC810\\uC774\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uB2E8\\uC21C\\uD788 \\uB178\\uB4DC\\uB4E4\\uC758 \\uAE30\\uB2A5\\uC744 \\uB098\\uC5F4\\uD558\\uB294 \\uAC83\\uC774 \\uC544\\uB2C8\\uB77C, \\uC2E4\\uC81C \\uB9C8\\uCF00\\uD305\\uC5D0 \\uC5B4\\uB5BB\\uAC8C \\uD65C\\uC6A9\\uD560 \\uC218 \\uC788\\uB294\\uC9C0, \\uC2DC\\uAC04 \\uD6A8\\uC728\\uC131\\uC740 \\uC5B4\\uB5BB\\uAC8C \\uB192\\uC77C \\uC218 \\uC788\\uB294\\uC9C0 \\uB4F1 \\uC2E4\\uBB34\\uC790\\uC758 \\uAD00\\uC810\\uC5D0\\uC11C \\uD544\\uC694\\uD55C \\uB0B4\\uC6A9\\uC744 \\uC0C1\\uC138\\uD558\\uAC8C \\uC54C\\uB824\\uC8FC\\uC168\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 38,\n      verified: true\n    },\n    {\n      id: 3,\n      name: \"\\uAE40\\uB2E4\\uC560\",\n      role: \"\\uC758\\uB958\\uBE0C\\uB79C\\uB4DC \\uC885\\uC0AC\\uC790\",\n      rating: 5,\n      date: \"2024.11.08\",\n      content: \"\\uC2E4\\uBB34\\uC6A9\\uC73C\\uB85C \\uC88B\\uC558\\uB358 \\uAC15\\uC758\\uAC19\\uC544\\uC694. \\uB2E4\\uB978\\uBD84\\uB4E4 \\uAC15\\uC758\\uB294 \\uC774\\uB860\\uC124\\uBA85\\uBD80\\uD130 \\uAE4A\\uC774\\uC788\\uB294 \\uC124\\uBA85\\uC744 \\uCD94\\uAD6C\\uD558\\uC2DC\\uB294 \\uBD84\\uB4E4\\uC774 \\uB9CE\\uC558\\uB294\\uB370, \\uB108\\uBB34 \\uBD80\\uC218\\uC801\\uC778 \\uC124\\uBA85\\uC740 \\uC880 \\uC5B4\\uB835\\uAC70\\uB4E0\\uC694 \\u314E\\u314E \\uD544\\uC694\\uD55C\\uAC83\\uB9CC \\uB531\\uB531 \\uB4E3\\uAE30 \\uB108\\uBB34\\uC88B\\uC740\\uB290\\uB08C. \\uBE0C\\uB79C\\uB4DC \\uC774\\uBBF8\\uC9C0 \\uC81C\\uC791\\uC5D0 \\uBC14\\uB85C \\uD65C\\uC6A9\\uD560 \\uC218 \\uC788\\uC5B4\\uC11C \\uC5C5\\uBB34 \\uD6A8\\uC728\\uC774 \\uD06C\\uAC8C \\uD5A5\\uC0C1\\uB410\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 42,\n      verified: true\n    },\n    {\n      id: 4,\n      name: \"\\uC218\\uAC15\\uC0DD J\",\n      role: \"\\uB9C8\\uCF00\\uD130\",\n      rating: 5,\n      date: \"2024.11.05\",\n      content: \"\\uB8E8\\uC6C0\\uB2D8\\uC758 ComfyUI \\uAC15\\uC758\\uB294 \\uB9C8\\uCF00\\uD305 \\uC2E4\\uBB34\\uC790\\uC5D0\\uAC8C \\uD544\\uC218\\uC801\\uC778 AI \\uC774\\uBBF8\\uC9C0 \\uC0DD\\uC131 \\uAE30\\uC220\\uC744 \\uCCB4\\uACC4\\uC801\\uC73C\\uB85C \\uC804\\uB2EC\\uD558\\uB294 \\uAC15\\uC758\\uC778 \\uAC83 \\uAC19\\uC2B5\\uB2C8\\uB2E4. \\uC2E4\\uBB34\\uC5D0\\uC11C \\uC989\\uC2DC \\uD65C\\uC6A9\\uD560 \\uC218 \\uC788\\uB294 \\uC6CC\\uD06C\\uD50C\\uB85C\\uC6B0 \\uAE30\\uBC18\\uC73C\\uB85C \\uC54C\\uB824\\uC8FC\\uC154\\uC11C \\uB354\\uC6B1 \\uCC3D\\uC758\\uC801\\uC774\\uACE0 \\uD6A8\\uC728\\uC801\\uC778 \\uB9C8\\uCF00\\uD305 \\uC774\\uBBF8\\uC9C0 \\uC81C\\uC791\\uC774 \\uAC00\\uB2A5\\uD574\\uC84C\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 33,\n      verified: true\n    },\n    {\n      id: 5,\n      name: \"\\uC774\\uC131\\uBBFC\",\n      role: \"\\uD504\\uB9AC\\uB79C\\uC11C \\uB514\\uC790\\uC774\\uB108\",\n      rating: 5,\n      date: \"2024.11.02\",\n      content: \"ComfyUI \\uCC98\\uC74C \\uC811\\uD588\\uB294\\uB370 \\uC815\\uB9D0 \\uC5B4\\uB824\\uC6E0\\uC5B4\\uC694. \\uD558\\uC9C0\\uB9CC \\uAC15\\uC758\\uB97C \\uCC28\\uADFC\\uCC28\\uADFC \\uB530\\uB77C\\uD558\\uB2C8\\uAE4C \\uC774\\uD574\\uAC00 \\uB410\\uC2B5\\uB2C8\\uB2E4. \\uD2B9\\uD788 ControlNet \\uBD80\\uBD84\\uC774 \\uC2E0\\uAE30\\uD588\\uC5B4\\uC694. \\uD074\\uB77C\\uC774\\uC5B8\\uD2B8 \\uC694\\uAD6C\\uC0AC\\uD56D\\uC5D0 \\uB9DE\\uCDB0 \\uC815\\uD655\\uD55C \\uC774\\uBBF8\\uC9C0\\uB97C \\uC0DD\\uC131\\uD560 \\uC218 \\uC788\\uAC8C \\uB418\\uC5B4\\uC11C \\uC791\\uC5C5 \\uC2DC\\uAC04\\uC774 \\uC808\\uBC18\\uC73C\\uB85C \\uC904\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uC815\\uB9D0 \\uAC10\\uC0AC\\uD569\\uB2C8\\uB2E4!\",\n      helpful: 29,\n      verified: true\n    },\n    {\n      id: 6,\n      name: \"\\uBC15\\uC9C0\\uD6C8\",\n      role: \"\\uAD11\\uACE0 \\uB300\\uD589\\uC0AC \\uD06C\\uB9AC\\uC5D0\\uC774\\uD130\",\n      rating: 4,\n      date: \"2024.10.28\",\n      content: \"\\uAC15\\uC758 \\uB0B4\\uC6A9\\uC740 \\uC815\\uB9D0 \\uC88B\\uC558\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uB9CC \\uCD08\\uBCF4\\uC790\\uC5D0\\uAC8C\\uB294 \\uC870\\uAE08 \\uC5B4\\uB824\\uC6B8 \\uC218 \\uC788\\uC744 \\uAC83 \\uAC19\\uC544\\uC694. \\uADF8\\uB798\\uB3C4 \\uBC18\\uBCF5\\uD574\\uC11C \\uB4E4\\uC73C\\uBA74 \\uCDA9\\uBD84\\uD788 \\uC774\\uD574\\uD560 \\uC218 \\uC788\\uACE0, \\uC2E4\\uC81C \\uAD11\\uACE0 \\uC81C\\uC791\\uC5D0 \\uD65C\\uC6A9\\uD560 \\uC218 \\uC788\\uB294 \\uACE0\\uAE09 \\uAE30\\uBC95\\uB4E4\\uC744 \\uBC30\\uC6B8 \\uC218 \\uC788\\uC5B4\\uC11C \\uB9CC\\uC871\\uD569\\uB2C8\\uB2E4. \\uC6CC\\uD06C\\uD50C\\uB85C\\uC6B0 \\uD30C\\uC77C \\uC81C\\uACF5\\uB3C4 \\uD070 \\uB3C4\\uC6C0\\uC774 \\uB410\\uC5B4\\uC694.\",\n      helpful: 25,\n      verified: true\n    },\n    {\n      id: 7,\n      name: \"\\uCD5C\\uC5F0\\uD76C\",\n      role: \"\\uC2A4\\uD0C0\\uD2B8\\uC5C5 \\uB9C8\\uCF00\\uD305 \\uD300\\uC7A5\",\n      rating: 5,\n      date: \"2024.10.25\",\n      content: \"\\uC2A4\\uD0C0\\uD2B8\\uC5C5\\uC5D0\\uC11C \\uC608\\uC0B0\\uC774 \\uBD80\\uC871\\uD574\\uC11C \\uD56D\\uC0C1 \\uC774\\uBBF8\\uC9C0 \\uC18C\\uC2A4 \\uAD6C\\uD558\\uAE30\\uAC00 \\uC5B4\\uB824\\uC6E0\\uB294\\uB370, \\uC774 \\uAC15\\uC758 \\uB355\\uBD84\\uC5D0 \\uC6B0\\uB9AC\\uB9CC\\uC758 \\uBE0C\\uB79C\\uB4DC \\uC774\\uBBF8\\uC9C0\\uB97C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uAC8C \\uB410\\uC5B4\\uC694. \\uD2B9\\uD788 Inpainting \\uAE30\\uB2A5\\uC73C\\uB85C \\uAE30\\uC874 \\uC774\\uBBF8\\uC9C0\\uB97C \\uC6B0\\uB9AC \\uBE0C\\uB79C\\uB4DC\\uC5D0 \\uB9DE\\uAC8C \\uC218\\uC815\\uD558\\uB294 \\uBC29\\uBC95\\uC774 \\uC815\\uB9D0 \\uC720\\uC6A9\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uD300\\uC6D0\\uB4E4\\uB3C4 \\uBAA8\\uB450 \\uB9CC\\uC871\\uD574\\uD569\\uB2C8\\uB2E4!\",\n      helpful: 36,\n      verified: true\n    },\n    {\n      id: 8,\n      name: \"\\uAE40\\uD0DC\\uD604\",\n      role: \"\\uAC8C\\uC784 \\uD68C\\uC0AC \\uC544\\uD2F0\\uC2A4\\uD2B8\",\n      rating: 5,\n      date: \"2024.10.22\",\n      content: \"\\uAC8C\\uC784 \\uC5C5\\uACC4\\uC5D0\\uC11C \\uCEE8\\uC149 \\uC544\\uD2B8 \\uC791\\uC5C5\\uC744 \\uD558\\uACE0 \\uC788\\uB294\\uB370, ComfyUI\\uB97C \\uD1B5\\uD574 \\uC544\\uC774\\uB514\\uC5B4\\uB97C \\uBE60\\uB974\\uAC8C \\uC2DC\\uAC01\\uD654\\uD560 \\uC218 \\uC788\\uAC8C \\uB410\\uC5B4\\uC694. \\uD2B9\\uD788 IP-Adapter\\uB97C \\uD65C\\uC6A9\\uD55C \\uC2A4\\uD0C0\\uC77C \\uC804\\uC774 \\uAE30\\uBC95\\uC774 \\uC815\\uB9D0 \\uC778\\uC0C1\\uC801\\uC774\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uAE30\\uC874 \\uCEE8\\uC149 \\uC544\\uD2B8 \\uC81C\\uC791 \\uC2DC\\uAC04\\uC774 70% \\uC774\\uC0C1 \\uB2E8\\uCD95\\uB410\\uC5B4\\uC694.\",\n      helpful: 31,\n      verified: true\n    },\n    {\n      id: 9,\n      name: \"\\uC815\\uC218\\uC5F0\",\n      role: \"\\uCF58\\uD150\\uCE20 \\uD06C\\uB9AC\\uC5D0\\uC774\\uD130\",\n      rating: 4,\n      date: \"2024.10.18\",\n      content: \"\\uC720\\uD29C\\uBE0C \\uC378\\uB124\\uC77C\\uC774\\uB098 \\uC778\\uC2A4\\uD0C0\\uADF8\\uB7A8 \\uD3EC\\uC2A4\\uD305\\uC6A9 \\uC774\\uBBF8\\uC9C0 \\uB9CC\\uB4E4 \\uB54C \\uD56D\\uC0C1 \\uACE0\\uBBFC\\uC774 \\uB9CE\\uC558\\uB294\\uB370, \\uC774\\uC81C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC5B4\\uC11C \\uB108\\uBB34 \\uC88B\\uC544\\uC694. \\uAC15\\uC758\\uAC00 \\uB2E8\\uACC4\\uBCC4\\uB85C \\uC798 \\uAD6C\\uC131\\uB418\\uC5B4 \\uC788\\uC5B4\\uC11C \\uB530\\uB77C\\uD558\\uAE30 \\uC26C\\uC6E0\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uB9CC \\uB80C\\uB354\\uB9C1 \\uC2DC\\uAC04\\uC774 \\uC880 \\uC624\\uB798 \\uAC78\\uB9AC\\uB294 \\uAC8C \\uC544\\uC26C\\uC6CC\\uC694. \\uADF8\\uB798\\uB3C4 \\uACB0\\uACFC\\uBB3C\\uC740 \\uC815\\uB9D0 \\uB9CC\\uC871\\uC2A4\\uB7FD\\uC2B5\\uB2C8\\uB2E4!\",\n      helpful: 22,\n      verified: true\n    },\n    {\n      id: 10,\n      name: \"\\uC624\\uC131\\uC9C4\",\n      role: \"\\uC6F9 \\uAC1C\\uBC1C\\uC790\",\n      rating: 5,\n      date: \"2024.10.15\",\n      content: \"\\uAC1C\\uBC1C\\uC790\\uC778\\uB370 \\uB514\\uC790\\uC778 \\uAC10\\uAC01\\uC774 \\uBD80\\uC871\\uD574\\uC11C \\uD56D\\uC0C1 \\uACE0\\uBBFC\\uC774\\uC5C8\\uC5B4\\uC694. \\uC774 \\uAC15\\uC758\\uB97C \\uD1B5\\uD574 \\uC6F9\\uC0AC\\uC774\\uD2B8\\uB098 \\uC571\\uC5D0 \\uB4E4\\uC5B4\\uAC08 \\uC774\\uBBF8\\uC9C0\\uB4E4\\uC744 \\uC9C1\\uC811 \\uC0DD\\uC131\\uD560 \\uC218 \\uC788\\uAC8C \\uB410\\uC2B5\\uB2C8\\uB2E4. \\uD2B9\\uD788 Upscaling \\uAE30\\uBC95\\uC73C\\uB85C \\uACE0\\uD574\\uC0C1\\uB3C4 \\uC774\\uBBF8\\uC9C0\\uB97C \\uB9CC\\uB4DC\\uB294 \\uBC29\\uBC95\\uC774 \\uC815\\uB9D0 \\uC720\\uC6A9\\uD588\\uC5B4\\uC694. \\uD074\\uB77C\\uC774\\uC5B8\\uD2B8 \\uD504\\uB85C\\uC81D\\uD2B8\\uC5D0 \\uBC14\\uB85C \\uC801\\uC6A9\\uD558\\uACE0 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 28,\n      verified: true\n    },\n    {\n      id: 11,\n      name: \"\\uC774\\uBBF8\\uACBD\",\n      role: \"\\uC628\\uB77C\\uC778 \\uC1FC\\uD551\\uBAB0 \\uC6B4\\uC601\\uC790\",\n      rating: 5,\n      date: \"2024.10.12\",\n      content: \"\\uC1FC\\uD551\\uBAB0 \\uC0C1\\uD488 \\uC774\\uBBF8\\uC9C0 \\uC81C\\uC791\\uC5D0 \\uACE0\\uBBFC\\uC774 \\uB9CE\\uC558\\uB294\\uB370, \\uC774 \\uAC15\\uC758\\uB97C \\uB4E3\\uACE0 \\uB098\\uC11C \\uC9C1\\uC811 \\uC81C\\uC791\\uD560 \\uC218 \\uC788\\uAC8C \\uB410\\uC5B4\\uC694. \\uD2B9\\uD788 \\uC0C1\\uD488\\uC744 \\uB2E4\\uC591\\uD55C \\uBC30\\uACBD\\uC5D0 \\uD569\\uC131\\uD558\\uB294 \\uAE30\\uBC95\\uC774 \\uC815\\uB9D0 \\uB3C4\\uC6C0\\uC774 \\uB410\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uC81C \\uCD2C\\uC601 \\uBE44\\uC6A9 \\uAC71\\uC815 \\uC5C6\\uC774 \\uB2E4\\uC591\\uD55C \\uC0C1\\uD488 \\uC774\\uBBF8\\uC9C0\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC5B4\\uC11C \\uB9E4\\uCD9C\\uB3C4 \\uB298\\uC5C8\\uC5B4\\uC694!\",\n      helpful: 34,\n      verified: true\n    },\n    {\n      id: 12,\n      name: \"\\uD55C\\uBBFC\\uC218\",\n      role: \"\\uAD11\\uACE0 \\uAE30\\uD68D\\uC790\",\n      rating: 4,\n      date: \"2024.10.08\",\n      content: \"\\uAD11\\uACE0 \\uAE30\\uD68D \\uB2E8\\uACC4\\uC5D0\\uC11C \\uC544\\uC774\\uB514\\uC5B4\\uB97C \\uAD6C\\uCCB4\\uD654\\uD558\\uB294 \\uB370 \\uC815\\uB9D0 \\uB3C4\\uC6C0\\uC774 \\uB410\\uC2B5\\uB2C8\\uB2E4. \\uD074\\uB77C\\uC774\\uC5B8\\uD2B8\\uC5D0\\uAC8C \\uC81C\\uC548\\uD560 \\uB54C \\uD14D\\uC2A4\\uD2B8\\uB85C\\uB9CC \\uC124\\uBA85\\uD558\\uB358 \\uAC83\\uC744 \\uC774\\uC81C \\uC774\\uBBF8\\uC9C0\\uB85C \\uBCF4\\uC5EC\\uC904 \\uC218 \\uC788\\uC5B4\\uC11C \\uC18C\\uD1B5\\uC774 \\uD6E8\\uC52C \\uC6D0\\uD65C\\uD574\\uC84C\\uC5B4\\uC694. \\uAC15\\uC758 \\uB0B4\\uC6A9\\uB3C4 \\uCCB4\\uACC4\\uC801\\uC774\\uACE0 \\uC2E4\\uC2B5 \\uC704\\uC8FC\\uB77C\\uC11C \\uC88B\\uC558\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 26,\n      verified: true\n    },\n    {\n      id: 13,\n      name: \"\\uC724\\uC11C\\uC601\",\n      role: \"UI/UX \\uB514\\uC790\\uC774\\uB108\",\n      rating: 5,\n      date: \"2024.10.05\",\n      content: \"UI \\uB514\\uC790\\uC778\\uD560 \\uB54C \\uD544\\uC694\\uD55C \\uC544\\uC774\\uCF58\\uC774\\uB098 \\uC77C\\uB7EC\\uC2A4\\uD2B8\\uB97C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uAC8C \\uB410\\uC5B4\\uC694. \\uD2B9\\uD788 \\uC77C\\uAD00\\uB41C \\uC2A4\\uD0C0\\uC77C\\uC744 \\uC720\\uC9C0\\uD558\\uBA74\\uC11C \\uB2E4\\uC591\\uD55C \\uBCC0\\uD615\\uC744 \\uB9CC\\uB4DC\\uB294 \\uBC29\\uBC95\\uC774 \\uC815\\uB9D0 \\uC778\\uC0C1\\uC801\\uC774\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uB514\\uC790\\uC778 \\uC2DC\\uC2A4\\uD15C \\uAD6C\\uCD95\\uC5D0\\uB3C4 \\uD070 \\uB3C4\\uC6C0\\uC774 \\uB410\\uACE0, \\uC791\\uC5C5 \\uD6A8\\uC728\\uC131\\uC774 \\uB9CE\\uC774 \\uD5A5\\uC0C1\\uB410\\uC5B4\\uC694.\",\n      helpful: 37,\n      verified: true\n    },\n    {\n      id: 14,\n      name: \"\\uC870\\uD604\\uC6B0\",\n      role: \"\\uCD9C\\uD310\\uC0AC \\uD3B8\\uC9D1\\uC790\",\n      rating: 5,\n      date: \"2024.10.02\",\n      content: \"\\uCC45 \\uD45C\\uC9C0\\uB098 \\uB0B4\\uC9C0\\uC5D0 \\uB4E4\\uC5B4\\uAC08 \\uC774\\uBBF8\\uC9C0\\uB97C \\uCC3E\\uAE30 \\uC5B4\\uB824\\uC6E0\\uB294\\uB370, \\uC774\\uC81C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC5B4\\uC11C \\uB108\\uBB34 \\uC88B\\uC544\\uC694. \\uD2B9\\uD788 \\uD14D\\uC2A4\\uD2B8\\uC640 \\uC774\\uBBF8\\uC9C0\\uB97C \\uC870\\uD654\\uB86D\\uAC8C \\uBC30\\uCE58\\uD558\\uB294 \\uAE30\\uBC95\\uC774 \\uC720\\uC6A9\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uC800\\uC791\\uAD8C \\uAC71\\uC815 \\uC5C6\\uC774 \\uC6D0\\uD558\\uB294 \\uC774\\uBBF8\\uC9C0\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC5B4\\uC11C \\uCD9C\\uD310 \\uC5C5\\uBB34\\uAC00 \\uD6E8\\uC52C \\uC218\\uC6D4\\uD574\\uC84C\\uC5B4\\uC694.\",\n      helpful: 30,\n      verified: true\n    },\n    {\n      id: 15,\n      name: \"\\uC784\\uC218\\uBE48\",\n      role: \"\\uCE74\\uD398 \\uC0AC\\uC7A5\",\n      rating: 4,\n      date: \"2024.09.28\",\n      content: \"\\uCE74\\uD398 \\uD64D\\uBCF4\\uC6A9 \\uC774\\uBBF8\\uC9C0\\uB098 \\uBA54\\uB274\\uD310 \\uC81C\\uC791\\uC5D0 \\uD65C\\uC6A9\\uD558\\uACE0 \\uC788\\uC5B4\\uC694. \\uC804\\uBB38\\uAC00\\uC5D0\\uAC8C \\uB9E1\\uAE30\\uBA74 \\uBE44\\uC6A9\\uC774 \\uB9CE\\uC774 \\uB4E4\\uC5C8\\uB294\\uB370, \\uC774\\uC81C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC5B4\\uC11C \\uACBD\\uC81C\\uC801\\uC73C\\uB85C\\uB3C4 \\uB9CE\\uC740 \\uB3C4\\uC6C0\\uC774 \\uB410\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uB9CC \\uCC98\\uC74C\\uC5D0\\uB294 \\uC870\\uAE08 \\uC5B4\\uB824\\uC6E0\\uC9C0\\uB9CC, \\uBC18\\uBCF5 \\uC5F0\\uC2B5\\uD558\\uB2C8\\uAE4C \\uC775\\uC219\\uD574\\uC84C\\uC5B4\\uC694. \\uCD94\\uCC9C\\uD569\\uB2C8\\uB2E4!\",\n      helpful: 23,\n      verified: true\n    }\n  ];\n  const filteredAndSortedReviews = reviewsData.filter((review) => filterRating === null || review.rating === filterRating).sort((a, b) => {\n    switch (sortBy) {\n      case \"rating\":\n        return b.rating - a.rating;\n      case \"helpful\":\n        return b.helpful - a.helpful;\n      case \"latest\":\n      default:\n        return new Date(b.date).getTime() - new Date(a.date).getTime();\n    }\n  });\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto p-6 max-md:p-4\", children: [\n    /* @__PURE__ */ jsxs(\"div\", { className: \"mb-8 max-md:mb-6\", children: [\n      /* @__PURE__ */ jsx(\n        \"h2\",\n        {\n          className: \"text-3xl text-gray-900 mb-2 max-md:text-2xl max-md:mb-1\",\n          style: { fontFamily: FONTS.bold },\n          children: \"\\uC218\\uAC15\\uC0DD \\uB9AC\\uBDF0\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"p\",\n        {\n          className: \"text-gray-600 max-md:text-sm\",\n          style: { fontFamily: FONTS.light },\n          children: \"ComfyUI for Real Ads \\uAC15\\uC758\\uC5D0 \\uB300\\uD55C \\uC2E4\\uC81C \\uC218\\uAC15\\uC0DD\\uB4E4\\uC758 \\uC194\\uC9C1\\uD55C \\uD6C4\\uAE30\\uC785\\uB2C8\\uB2E4.\"\n        }\n      )\n    ] }),\n    /* @__PURE__ */ jsx(ReviewStats, { reviews: reviewsData }),\n    /* @__PURE__ */ jsx(\"div\", { className: \"bg-white border border-gray-200 rounded-lg p-4 mb-6 max-md:p-3 max-md:mb-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col md:flex-row md:items-center md:justify-between space-y-4 md:space-y-0 max-md:space-y-3\", children: [\n      /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center space-x-4 max-md:space-x-2\", children: [\n        /* @__PURE__ */ jsx(\n          \"label\",\n          {\n            className: \"text-sm text-gray-700 max-md:text-xs\",\n            style: { fontFamily: FONTS.medium },\n            children: \"\\uC815\\uB82C:\"\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          \"select\",\n          {\n            value: sortBy,\n            onChange: (e) => setSortBy(e.target.value),\n            className: \"px-3 py-2 border border-gray-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 max-md:px-2 max-md:py-1 max-md:text-xs\",\n            style: { fontFamily: FONTS.light },\n            children: [\n              /* @__PURE__ */ jsx(\"option\", { value: \"latest\", children: \"\\uCD5C\\uC2E0\\uC21C\" }),\n              /* @__PURE__ */ jsx(\"option\", { value: \"rating\", children: \"\\uD3C9\\uC810\\uC21C\" }),\n              /* @__PURE__ */ jsx(\"option\", { value: \"helpful\", children: \"\\uB3C4\\uC6C0\\uC21C\" })\n            ]\n          }\n        )\n      ] }),\n      /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col space-y-2 md:flex-row md:items-center md:space-y-0 md:space-x-4 max-md:space-y-2\", children: [\n        /* @__PURE__ */ jsx(\n          \"label\",\n          {\n            className: \"text-sm text-gray-700 max-md:text-xs\",\n            style: { fontFamily: FONTS.medium },\n            children: \"\\uD3C9\\uC810 \\uD544\\uD130:\"\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-wrap gap-2 max-md:gap-1\", children: [\n          /* @__PURE__ */ jsx(\n            \"button\",\n            {\n              onClick: () => setFilterRating(null),\n              className: `px-3 py-1 rounded-full text-sm transition-colors max-md:px-2 max-md:text-xs ${filterRating === null ? \"bg-blue-500 text-white\" : \"bg-gray-200 text-gray-700 hover:bg-gray-300\"}`,\n              style: { fontFamily: FONTS.medium },\n              children: \"\\uC804\\uCCB4\"\n            }\n          ),\n          [5, 4, 3, 2, 1].map((rating) => /* @__PURE__ */ jsxs(\n            \"button\",\n            {\n              onClick: () => setFilterRating(rating),\n              className: `px-3 py-1 rounded-full text-sm transition-colors max-md:px-2 max-md:text-xs ${filterRating === rating ? \"bg-blue-500 text-white\" : \"bg-gray-200 text-gray-700 hover:bg-gray-300\"}`,\n              style: { fontFamily: FONTS.medium },\n              children: [\n                rating,\n                \"\\uC810\"\n              ]\n            },\n            rating\n          ))\n        ] })\n      ] })\n    ] }) }),\n    /* @__PURE__ */ jsx(\"div\", { className: \"space-y-4 max-h-[800px] overflow-y-auto pr-2 max-md:max-h-[600px] max-md:pr-1\", children: filteredAndSortedReviews.map((review) => /* @__PURE__ */ jsx(ReviewItem, { review }, review.id)) }),\n    filteredAndSortedReviews.length === 0 && /* @__PURE__ */ jsx(\"div\", { className: \"text-center py-12 max-md:py-8\", children: /* @__PURE__ */ jsx(\n      \"p\",\n      {\n        className: \"text-gray-500 max-md:text-sm\",\n        style: { fontFamily: FONTS.light },\n        children: \"\\uC120\\uD0DD\\uD55C \\uC870\\uAC74\\uC5D0 \\uB9DE\\uB294 \\uB9AC\\uBDF0\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\"\n      }\n    ) })\n  ] });\n};\n\nexport {\n  Reviews\n};\n","var __awaiter = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst resolveFetch = (customFetch) => {\n  let _fetch;\n  if (customFetch) {\n    _fetch = customFetch;\n  } else if (typeof fetch === \"undefined\") {\n    _fetch = (...args) => __awaiter(void 0, void 0, void 0, function* () {\n      return yield (yield import(\"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\")).fetch(...args);\n    });\n  } else {\n    _fetch = fetch;\n  }\n  return (...args) => _fetch(...args);\n};\nclass FunctionsError extends Error {\n  constructor(message, name = \"FunctionsError\", context) {\n    super(message);\n    super.name = name;\n    this.context = context;\n  }\n}\nclass FunctionsFetchError extends FunctionsError {\n  constructor(context) {\n    super(\"Failed to send a request to the Edge Function\", \"FunctionsFetchError\", context);\n  }\n}\nclass FunctionsRelayError extends FunctionsError {\n  constructor(context) {\n    super(\"Relay Error invoking the Edge Function\", \"FunctionsRelayError\", context);\n  }\n}\nclass FunctionsHttpError extends FunctionsError {\n  constructor(context) {\n    super(\"Edge Function returned a non-2xx status code\", \"FunctionsHttpError\", context);\n  }\n}\nvar __awaiter$1 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nclass FunctionsClient {\n  constructor(url, {headers = {}, customFetch} = {}) {\n    this.url = url;\n    this.headers = headers;\n    this.fetch = resolveFetch(customFetch);\n  }\n  setAuth(token) {\n    this.headers.Authorization = `Bearer ${token}`;\n  }\n  invoke(functionName, options = {}) {\n    var _a;\n    return __awaiter$1(this, void 0, void 0, function* () {\n      try {\n        const {headers, method, body: functionArgs} = options;\n        let _headers = {};\n        let body;\n        if (functionArgs && (headers && !Object.prototype.hasOwnProperty.call(headers, \"Content-Type\") || !headers)) {\n          if (typeof Blob !== \"undefined\" && functionArgs instanceof Blob || functionArgs instanceof ArrayBuffer) {\n            _headers[\"Content-Type\"] = \"application/octet-stream\";\n            body = functionArgs;\n          } else if (typeof functionArgs === \"string\") {\n            _headers[\"Content-Type\"] = \"text/plain\";\n            body = functionArgs;\n          } else if (typeof FormData !== \"undefined\" && functionArgs instanceof FormData) {\n            body = functionArgs;\n          } else {\n            _headers[\"Content-Type\"] = \"application/json\";\n            body = JSON.stringify(functionArgs);\n          }\n        }\n        const response = yield this.fetch(`${this.url}/${functionName}`, {\n          method: method || \"POST\",\n          headers: Object.assign(Object.assign(Object.assign({}, _headers), this.headers), headers),\n          body\n        }).catch((fetchError) => {\n          throw new FunctionsFetchError(fetchError);\n        });\n        const isRelayError = response.headers.get(\"x-relay-error\");\n        if (isRelayError && isRelayError === \"true\") {\n          throw new FunctionsRelayError(response);\n        }\n        if (!response.ok) {\n          throw new FunctionsHttpError(response);\n        }\n        let responseType = ((_a = response.headers.get(\"Content-Type\")) !== null && _a !== void 0 ? _a : \"text/plain\").split(\";\")[0].trim();\n        let data;\n        if (responseType === \"application/json\") {\n          data = yield response.json();\n        } else if (responseType === \"application/octet-stream\") {\n          data = yield response.blob();\n        } else if (responseType === \"multipart/form-data\") {\n          data = yield response.formData();\n        } else {\n          data = yield response.text();\n        }\n        return {data, error: null};\n      } catch (error) {\n        return {data: null, error};\n      }\n    });\n  }\n}\nexport {FunctionsClient, FunctionsError, FunctionsFetchError, FunctionsHttpError, FunctionsRelayError};\nexport default null;\n","import crossFetch from \"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\";\nclass PostgrestBuilder {\n  constructor(builder) {\n    this.shouldThrowOnError = false;\n    this.method = builder.method;\n    this.url = builder.url;\n    this.headers = builder.headers;\n    this.schema = builder.schema;\n    this.body = builder.body;\n    this.shouldThrowOnError = builder.shouldThrowOnError;\n    this.signal = builder.signal;\n    this.allowEmpty = builder.allowEmpty;\n    if (builder.fetch) {\n      this.fetch = builder.fetch;\n    } else if (typeof fetch === \"undefined\") {\n      this.fetch = crossFetch;\n    } else {\n      this.fetch = fetch;\n    }\n  }\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  then(onfulfilled, onrejected) {\n    if (this.schema === void 0)\n      ;\n    else if ([\"GET\", \"HEAD\"].includes(this.method)) {\n      this.headers[\"Accept-Profile\"] = this.schema;\n    } else {\n      this.headers[\"Content-Profile\"] = this.schema;\n    }\n    if (this.method !== \"GET\" && this.method !== \"HEAD\") {\n      this.headers[\"Content-Type\"] = \"application/json\";\n    }\n    const _fetch = this.fetch;\n    let res = _fetch(this.url.toString(), {\n      method: this.method,\n      headers: this.headers,\n      body: JSON.stringify(this.body),\n      signal: this.signal\n    }).then(async (res2) => {\n      var _a, _b, _c;\n      let error = null;\n      let data = null;\n      let count = null;\n      let status = res2.status;\n      let statusText = res2.statusText;\n      if (res2.ok) {\n        if (this.method !== \"HEAD\") {\n          const body = await res2.text();\n          if (body === \"\")\n            ;\n          else if (this.headers[\"Accept\"] === \"text/csv\") {\n            data = body;\n          } else if (this.headers[\"Accept\"] && this.headers[\"Accept\"].includes(\"application/vnd.pgrst.plan+text\")) {\n            data = body;\n          } else {\n            data = JSON.parse(body);\n          }\n        }\n        const countHeader = (_a = this.headers[\"Prefer\"]) === null || _a === void 0 ? void 0 : _a.match(/count=(exact|planned|estimated)/);\n        const contentRange = (_b = res2.headers.get(\"content-range\")) === null || _b === void 0 ? void 0 : _b.split(\"/\");\n        if (countHeader && contentRange && contentRange.length > 1) {\n          count = parseInt(contentRange[1]);\n        }\n      } else {\n        const body = await res2.text();\n        try {\n          error = JSON.parse(body);\n          if (Array.isArray(error) && res2.status === 404) {\n            data = [];\n            error = null;\n            status = 200;\n            statusText = \"OK\";\n          }\n        } catch (_d) {\n          if (res2.status === 404 && body === \"\") {\n            status = 204;\n            statusText = \"No Content\";\n          } else {\n            error = {\n              message: body\n            };\n          }\n        }\n        if (error && this.allowEmpty && ((_c = error === null || error === void 0 ? void 0 : error.details) === null || _c === void 0 ? void 0 : _c.includes(\"Results contain 0 rows\"))) {\n          error = null;\n          status = 200;\n          statusText = \"OK\";\n        }\n        if (error && this.shouldThrowOnError) {\n          throw error;\n        }\n      }\n      const postgrestResponse = {\n        error,\n        data,\n        count,\n        status,\n        statusText\n      };\n      return postgrestResponse;\n    });\n    if (!this.shouldThrowOnError) {\n      res = res.catch((fetchError) => ({\n        error: {\n          message: `FetchError: ${fetchError.message}`,\n          details: \"\",\n          hint: \"\",\n          code: fetchError.code || \"\"\n        },\n        data: null,\n        count: null,\n        status: 0,\n        statusText: \"\"\n      }));\n    }\n    return res.then(onfulfilled, onrejected);\n  }\n}\nclass PostgrestTransformBuilder extends PostgrestBuilder {\n  select(columns) {\n    let quoted = false;\n    const cleanedColumns = (columns !== null && columns !== void 0 ? columns : \"*\").split(\"\").map((c) => {\n      if (/\\s/.test(c) && !quoted) {\n        return \"\";\n      }\n      if (c === '\"') {\n        quoted = !quoted;\n      }\n      return c;\n    }).join(\"\");\n    this.url.searchParams.set(\"select\", cleanedColumns);\n    if (this.headers[\"Prefer\"]) {\n      this.headers[\"Prefer\"] += \",\";\n    }\n    this.headers[\"Prefer\"] += \"return=representation\";\n    return this;\n  }\n  order(column, {ascending = true, nullsFirst, foreignTable} = {}) {\n    const key = foreignTable ? `${foreignTable}.order` : \"order\";\n    const existingOrder = this.url.searchParams.get(key);\n    this.url.searchParams.set(key, `${existingOrder ? `${existingOrder},` : \"\"}${column}.${ascending ? \"asc\" : \"desc\"}${nullsFirst === void 0 ? \"\" : nullsFirst ? \".nullsfirst\" : \".nullslast\"}`);\n    return this;\n  }\n  limit(count, {foreignTable} = {}) {\n    const key = typeof foreignTable === \"undefined\" ? \"limit\" : `${foreignTable}.limit`;\n    this.url.searchParams.set(key, `${count}`);\n    return this;\n  }\n  range(from, to, {foreignTable} = {}) {\n    const keyOffset = typeof foreignTable === \"undefined\" ? \"offset\" : `${foreignTable}.offset`;\n    const keyLimit = typeof foreignTable === \"undefined\" ? \"limit\" : `${foreignTable}.limit`;\n    this.url.searchParams.set(keyOffset, `${from}`);\n    this.url.searchParams.set(keyLimit, `${to - from + 1}`);\n    return this;\n  }\n  abortSignal(signal) {\n    this.signal = signal;\n    return this;\n  }\n  single() {\n    this.headers[\"Accept\"] = \"application/vnd.pgrst.object+json\";\n    return this;\n  }\n  maybeSingle() {\n    this.headers[\"Accept\"] = \"application/vnd.pgrst.object+json\";\n    this.allowEmpty = true;\n    return this;\n  }\n  csv() {\n    this.headers[\"Accept\"] = \"text/csv\";\n    return this;\n  }\n  geojson() {\n    this.headers[\"Accept\"] = \"application/geo+json\";\n    return this;\n  }\n  explain({analyze = false, verbose = false, settings = false, buffers = false, wal = false, format = \"text\"} = {}) {\n    const options = [\n      analyze ? \"analyze\" : null,\n      verbose ? \"verbose\" : null,\n      settings ? \"settings\" : null,\n      buffers ? \"buffers\" : null,\n      wal ? \"wal\" : null\n    ].filter(Boolean).join(\"|\");\n    const forMediatype = this.headers[\"Accept\"];\n    this.headers[\"Accept\"] = `application/vnd.pgrst.plan+${format}; for=\"${forMediatype}\"; options=${options};`;\n    if (format === \"json\")\n      return this;\n    else\n      return this;\n  }\n  rollback() {\n    var _a;\n    if (((_a = this.headers[\"Prefer\"]) !== null && _a !== void 0 ? _a : \"\").trim().length > 0) {\n      this.headers[\"Prefer\"] += \",tx=rollback\";\n    } else {\n      this.headers[\"Prefer\"] = \"tx=rollback\";\n    }\n    return this;\n  }\n  returns() {\n    return this;\n  }\n}\nclass PostgrestFilterBuilder extends PostgrestTransformBuilder {\n  eq(column, value) {\n    this.url.searchParams.append(column, `eq.${value}`);\n    return this;\n  }\n  neq(column, value) {\n    this.url.searchParams.append(column, `neq.${value}`);\n    return this;\n  }\n  gt(column, value) {\n    this.url.searchParams.append(column, `gt.${value}`);\n    return this;\n  }\n  gte(column, value) {\n    this.url.searchParams.append(column, `gte.${value}`);\n    return this;\n  }\n  lt(column, value) {\n    this.url.searchParams.append(column, `lt.${value}`);\n    return this;\n  }\n  lte(column, value) {\n    this.url.searchParams.append(column, `lte.${value}`);\n    return this;\n  }\n  like(column, pattern) {\n    this.url.searchParams.append(column, `like.${pattern}`);\n    return this;\n  }\n  ilike(column, pattern) {\n    this.url.searchParams.append(column, `ilike.${pattern}`);\n    return this;\n  }\n  is(column, value) {\n    this.url.searchParams.append(column, `is.${value}`);\n    return this;\n  }\n  in(column, values) {\n    const cleanedValues = values.map((s) => {\n      if (typeof s === \"string\" && new RegExp(\"[,()]\").test(s))\n        return `\"${s}\"`;\n      else\n        return `${s}`;\n    }).join(\",\");\n    this.url.searchParams.append(column, `in.(${cleanedValues})`);\n    return this;\n  }\n  contains(column, value) {\n    if (typeof value === \"string\") {\n      this.url.searchParams.append(column, `cs.${value}`);\n    } else if (Array.isArray(value)) {\n      this.url.searchParams.append(column, `cs.{${value.join(\",\")}}`);\n    } else {\n      this.url.searchParams.append(column, `cs.${JSON.stringify(value)}`);\n    }\n    return this;\n  }\n  containedBy(column, value) {\n    if (typeof value === \"string\") {\n      this.url.searchParams.append(column, `cd.${value}`);\n    } else if (Array.isArray(value)) {\n      this.url.searchParams.append(column, `cd.{${value.join(\",\")}}`);\n    } else {\n      this.url.searchParams.append(column, `cd.${JSON.stringify(value)}`);\n    }\n    return this;\n  }\n  rangeGt(column, range) {\n    this.url.searchParams.append(column, `sr.${range}`);\n    return this;\n  }\n  rangeGte(column, range) {\n    this.url.searchParams.append(column, `nxl.${range}`);\n    return this;\n  }\n  rangeLt(column, range) {\n    this.url.searchParams.append(column, `sl.${range}`);\n    return this;\n  }\n  rangeLte(column, range) {\n    this.url.searchParams.append(column, `nxr.${range}`);\n    return this;\n  }\n  rangeAdjacent(column, range) {\n    this.url.searchParams.append(column, `adj.${range}`);\n    return this;\n  }\n  overlaps(column, value) {\n    if (typeof value === \"string\") {\n      this.url.searchParams.append(column, `ov.${value}`);\n    } else {\n      this.url.searchParams.append(column, `ov.{${value.join(\",\")}}`);\n    }\n    return this;\n  }\n  textSearch(column, query, {config, type} = {}) {\n    let typePart = \"\";\n    if (type === \"plain\") {\n      typePart = \"pl\";\n    } else if (type === \"phrase\") {\n      typePart = \"ph\";\n    } else if (type === \"websearch\") {\n      typePart = \"w\";\n    }\n    const configPart = config === void 0 ? \"\" : `(${config})`;\n    this.url.searchParams.append(column, `${typePart}fts${configPart}.${query}`);\n    return this;\n  }\n  match(query) {\n    Object.entries(query).forEach(([column, value]) => {\n      this.url.searchParams.append(column, `eq.${value}`);\n    });\n    return this;\n  }\n  not(column, operator, value) {\n    this.url.searchParams.append(column, `not.${operator}.${value}`);\n    return this;\n  }\n  or(filters, {foreignTable} = {}) {\n    const key = foreignTable ? `${foreignTable}.or` : \"or\";\n    this.url.searchParams.append(key, `(${filters})`);\n    return this;\n  }\n  filter(column, operator, value) {\n    this.url.searchParams.append(column, `${operator}.${value}`);\n    return this;\n  }\n}\nclass PostgrestQueryBuilder {\n  constructor(url, {headers = {}, schema, fetch: fetch2}) {\n    this.url = url;\n    this.headers = headers;\n    this.schema = schema;\n    this.fetch = fetch2;\n  }\n  select(columns, {head = false, count} = {}) {\n    const method = head ? \"HEAD\" : \"GET\";\n    let quoted = false;\n    const cleanedColumns = (columns !== null && columns !== void 0 ? columns : \"*\").split(\"\").map((c) => {\n      if (/\\s/.test(c) && !quoted) {\n        return \"\";\n      }\n      if (c === '\"') {\n        quoted = !quoted;\n      }\n      return c;\n    }).join(\"\");\n    this.url.searchParams.set(\"select\", cleanedColumns);\n    if (count) {\n      this.headers[\"Prefer\"] = `count=${count}`;\n    }\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n  insert(values, {count} = {}) {\n    const method = \"POST\";\n    const prefersHeaders = [];\n    const body = values;\n    if (count) {\n      prefersHeaders.push(`count=${count}`);\n    }\n    if (this.headers[\"Prefer\"]) {\n      prefersHeaders.unshift(this.headers[\"Prefer\"]);\n    }\n    this.headers[\"Prefer\"] = prefersHeaders.join(\",\");\n    if (Array.isArray(values)) {\n      const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), []);\n      if (columns.length > 0) {\n        const uniqueColumns = [...new Set(columns)].map((column) => `\"${column}\"`);\n        this.url.searchParams.set(\"columns\", uniqueColumns.join(\",\"));\n      }\n    }\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n  upsert(values, {onConflict, ignoreDuplicates = false, count} = {}) {\n    const method = \"POST\";\n    const prefersHeaders = [`resolution=${ignoreDuplicates ? \"ignore\" : \"merge\"}-duplicates`];\n    if (onConflict !== void 0)\n      this.url.searchParams.set(\"on_conflict\", onConflict);\n    const body = values;\n    if (count) {\n      prefersHeaders.push(`count=${count}`);\n    }\n    if (this.headers[\"Prefer\"]) {\n      prefersHeaders.unshift(this.headers[\"Prefer\"]);\n    }\n    this.headers[\"Prefer\"] = prefersHeaders.join(\",\");\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n  update(values, {count} = {}) {\n    const method = \"PATCH\";\n    const prefersHeaders = [];\n    const body = values;\n    if (count) {\n      prefersHeaders.push(`count=${count}`);\n    }\n    if (this.headers[\"Prefer\"]) {\n      prefersHeaders.unshift(this.headers[\"Prefer\"]);\n    }\n    this.headers[\"Prefer\"] = prefersHeaders.join(\",\");\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n  delete({count} = {}) {\n    const method = \"DELETE\";\n    const prefersHeaders = [];\n    if (count) {\n      prefersHeaders.push(`count=${count}`);\n    }\n    if (this.headers[\"Prefer\"]) {\n      prefersHeaders.unshift(this.headers[\"Prefer\"]);\n    }\n    this.headers[\"Prefer\"] = prefersHeaders.join(\",\");\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n}\nconst version = \"1.4.1\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `postgrest-js/${version}`};\nclass PostgrestClient {\n  constructor(url, {headers = {}, schema, fetch: fetch2} = {}) {\n    this.url = url;\n    this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS), headers);\n    this.schema = schema;\n    this.fetch = fetch2;\n  }\n  from(relation) {\n    const url = new URL(`${this.url}/${relation}`);\n    return new PostgrestQueryBuilder(url, {\n      headers: Object.assign({}, this.headers),\n      schema: this.schema,\n      fetch: this.fetch\n    });\n  }\n  rpc(fn, args = {}, {head = false, count} = {}) {\n    let method;\n    const url = new URL(`${this.url}/rpc/${fn}`);\n    let body;\n    if (head) {\n      method = \"HEAD\";\n      Object.entries(args).forEach(([name, value]) => {\n        url.searchParams.append(name, `${value}`);\n      });\n    } else {\n      method = \"POST\";\n      body = args;\n    }\n    const headers = Object.assign({}, this.headers);\n    if (count) {\n      headers[\"Prefer\"] = `count=${count}`;\n    }\n    return new PostgrestFilterBuilder({\n      method,\n      url,\n      headers,\n      schema: this.schema,\n      body,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n}\nexport {PostgrestBuilder, PostgrestClient, PostgrestFilterBuilder, PostgrestQueryBuilder, PostgrestTransformBuilder};\nexport default null;\n","var naiveFallback = function() {\n  if (typeof self === \"object\" && self)\n    return self;\n  if (typeof window === \"object\" && window)\n    return window;\n  throw new Error(\"Unable to resolve global `this`\");\n};\nvar __VIRTUAL_FILE = function() {\n  if (this)\n    return this;\n  if (typeof globalThis === \"object\" && globalThis)\n    return globalThis;\n  try {\n    Object.defineProperty(Object.prototype, \"__global__\", {\n      get: function() {\n        return this;\n      },\n      configurable: true\n    });\n  } catch (error) {\n    return naiveFallback();\n  }\n  try {\n    if (!__global__)\n      return naiveFallback();\n    return __global__;\n  } finally {\n    delete Object.prototype.__global__;\n  }\n}();\nexport default __VIRTUAL_FILE;\n","import require$$0$1 from \"/-/es5-ext@v0.10.53-QgoIgxGeG8vPfAwjei6y/dist=es2019,mode=imports/unoptimized/global.js\";\nconst name = \"websocket\";\nconst description = \"Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.\";\nconst keywords = [\n  \"websocket\",\n  \"websockets\",\n  \"socket\",\n  \"networking\",\n  \"comet\",\n  \"push\",\n  \"RFC-6455\",\n  \"realtime\",\n  \"server\",\n  \"client\"\n];\nconst author = \"Brian McKelvey <theturtle32@gmail.com> (https://github.com/theturtle32)\";\nconst contributors = [\n  \"I\\xF1aki Baz Castillo <ibc@aliax.net> (http://dev.sipdoc.net)\"\n];\nconst version = \"1.0.34\";\nconst repository = {\n  type: \"git\",\n  url: \"https://github.com/theturtle32/WebSocket-Node.git\"\n};\nconst homepage = \"https://github.com/theturtle32/WebSocket-Node\";\nconst engines = {\n  node: \">=4.0.0\"\n};\nconst dependencies = {\n  bufferutil: \"^4.0.1\",\n  debug: \"^2.2.0\",\n  \"es5-ext\": \"^0.10.50\",\n  \"typedarray-to-buffer\": \"^3.1.5\",\n  \"utf-8-validate\": \"^5.0.2\",\n  yaeti: \"^0.0.6\"\n};\nconst devDependencies = {\n  \"buffer-equal\": \"^1.0.0\",\n  gulp: \"^4.0.2\",\n  \"gulp-jshint\": \"^2.0.4\",\n  \"jshint-stylish\": \"^2.2.1\",\n  jshint: \"^2.0.0\",\n  tape: \"^4.9.1\"\n};\nconst config = {\n  verbose: false\n};\nconst scripts = {\n  test: \"tape test/unit/*.js\",\n  gulp: \"gulp\"\n};\nconst main = \"index\";\nconst directories = {\n  lib: \"./lib\"\n};\nconst browser = \"lib/browser.js\";\nconst license = \"Apache-2.0\";\nvar require$$0 = {\n  name,\n  description,\n  keywords,\n  author,\n  contributors,\n  version,\n  repository,\n  homepage,\n  engines,\n  dependencies,\n  devDependencies,\n  config,\n  scripts,\n  main,\n  directories,\n  browser,\n  license\n};\nvar version$1 = require$$0.version;\nvar _globalThis;\nif (typeof globalThis === \"object\") {\n  _globalThis = globalThis;\n} else {\n  try {\n    _globalThis = require$$0$1;\n  } catch (error) {\n  } finally {\n    if (!_globalThis && typeof window !== \"undefined\") {\n      _globalThis = window;\n    }\n    if (!_globalThis) {\n      throw new Error(\"Could not determine global this\");\n    }\n  }\n}\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nfunction W3CWebSocket(uri, protocols) {\n  var native_instance;\n  if (protocols) {\n    native_instance = new NativeWebSocket(uri, protocols);\n  } else {\n    native_instance = new NativeWebSocket(uri);\n  }\n  return native_instance;\n}\nif (NativeWebSocket) {\n  [\"CONNECTING\", \"OPEN\", \"CLOSING\", \"CLOSED\"].forEach(function(prop) {\n    Object.defineProperty(W3CWebSocket, prop, {\n      get: function() {\n        return NativeWebSocket[prop];\n      }\n    });\n  });\n}\nvar browser$1 = {\n  w3cwebsocket: NativeWebSocket ? W3CWebSocket : null,\n  version: version$1\n};\nexport default browser$1;\nvar w3cwebsocket = browser$1.w3cwebsocket;\nexport {browser$1 as __moduleExports, w3cwebsocket};\n","import __commonjs_module0 from \"/-/websocket@v1.0.34-bITKCQn27Ks1QQoRgk94/dist=es2019,mode=imports/optimized/websocket.js\";\nconst {w3cwebsocket} = __commonjs_module0;\n;\nconst version = \"2.6.0\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `realtime-js/${version}`};\nconst VSN = \"1.0.0\";\nconst DEFAULT_TIMEOUT = 1e4;\nconst WS_CLOSE_NORMAL = 1e3;\nvar SOCKET_STATES;\n(function(SOCKET_STATES2) {\n  SOCKET_STATES2[SOCKET_STATES2[\"connecting\"] = 0] = \"connecting\";\n  SOCKET_STATES2[SOCKET_STATES2[\"open\"] = 1] = \"open\";\n  SOCKET_STATES2[SOCKET_STATES2[\"closing\"] = 2] = \"closing\";\n  SOCKET_STATES2[SOCKET_STATES2[\"closed\"] = 3] = \"closed\";\n})(SOCKET_STATES || (SOCKET_STATES = {}));\nvar CHANNEL_STATES;\n(function(CHANNEL_STATES2) {\n  CHANNEL_STATES2[\"closed\"] = \"closed\";\n  CHANNEL_STATES2[\"errored\"] = \"errored\";\n  CHANNEL_STATES2[\"joined\"] = \"joined\";\n  CHANNEL_STATES2[\"joining\"] = \"joining\";\n  CHANNEL_STATES2[\"leaving\"] = \"leaving\";\n})(CHANNEL_STATES || (CHANNEL_STATES = {}));\nvar CHANNEL_EVENTS;\n(function(CHANNEL_EVENTS2) {\n  CHANNEL_EVENTS2[\"close\"] = \"phx_close\";\n  CHANNEL_EVENTS2[\"error\"] = \"phx_error\";\n  CHANNEL_EVENTS2[\"join\"] = \"phx_join\";\n  CHANNEL_EVENTS2[\"reply\"] = \"phx_reply\";\n  CHANNEL_EVENTS2[\"leave\"] = \"phx_leave\";\n  CHANNEL_EVENTS2[\"access_token\"] = \"access_token\";\n})(CHANNEL_EVENTS || (CHANNEL_EVENTS = {}));\nvar TRANSPORTS;\n(function(TRANSPORTS2) {\n  TRANSPORTS2[\"websocket\"] = \"websocket\";\n})(TRANSPORTS || (TRANSPORTS = {}));\nvar CONNECTION_STATE;\n(function(CONNECTION_STATE2) {\n  CONNECTION_STATE2[\"Connecting\"] = \"connecting\";\n  CONNECTION_STATE2[\"Open\"] = \"open\";\n  CONNECTION_STATE2[\"Closing\"] = \"closing\";\n  CONNECTION_STATE2[\"Closed\"] = \"closed\";\n})(CONNECTION_STATE || (CONNECTION_STATE = {}));\nclass Timer {\n  constructor(callback, timerCalc) {\n    this.callback = callback;\n    this.timerCalc = timerCalc;\n    this.timer = void 0;\n    this.tries = 0;\n    this.callback = callback;\n    this.timerCalc = timerCalc;\n  }\n  reset() {\n    this.tries = 0;\n    clearTimeout(this.timer);\n  }\n  scheduleTimeout() {\n    clearTimeout(this.timer);\n    this.timer = setTimeout(() => {\n      this.tries = this.tries + 1;\n      this.callback();\n    }, this.timerCalc(this.tries + 1));\n  }\n}\nclass Serializer {\n  constructor() {\n    this.HEADER_LENGTH = 1;\n  }\n  decode(rawPayload, callback) {\n    if (rawPayload.constructor === ArrayBuffer) {\n      return callback(this._binaryDecode(rawPayload));\n    }\n    if (typeof rawPayload === \"string\") {\n      return callback(JSON.parse(rawPayload));\n    }\n    return callback({});\n  }\n  _binaryDecode(buffer) {\n    const view = new DataView(buffer);\n    const decoder = new TextDecoder();\n    return this._decodeBroadcast(buffer, view, decoder);\n  }\n  _decodeBroadcast(buffer, view, decoder) {\n    const topicSize = view.getUint8(1);\n    const eventSize = view.getUint8(2);\n    let offset = this.HEADER_LENGTH + 2;\n    const topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n    offset = offset + topicSize;\n    const event = decoder.decode(buffer.slice(offset, offset + eventSize));\n    offset = offset + eventSize;\n    const data = JSON.parse(decoder.decode(buffer.slice(offset, buffer.byteLength)));\n    return {ref: null, topic, event, payload: data};\n  }\n}\nclass Push {\n  constructor(channel, event, payload = {}, timeout = DEFAULT_TIMEOUT) {\n    this.channel = channel;\n    this.event = event;\n    this.payload = payload;\n    this.timeout = timeout;\n    this.sent = false;\n    this.timeoutTimer = void 0;\n    this.ref = \"\";\n    this.receivedResp = null;\n    this.recHooks = [];\n    this.refEvent = null;\n    this.rateLimited = false;\n  }\n  resend(timeout) {\n    this.timeout = timeout;\n    this._cancelRefEvent();\n    this.ref = \"\";\n    this.refEvent = null;\n    this.receivedResp = null;\n    this.sent = false;\n    this.send();\n  }\n  send() {\n    if (this._hasReceived(\"timeout\")) {\n      return;\n    }\n    this.startTimeout();\n    this.sent = true;\n    const status = this.channel.socket.push({\n      topic: this.channel.topic,\n      event: this.event,\n      payload: this.payload,\n      ref: this.ref,\n      join_ref: this.channel._joinRef()\n    });\n    if (status === \"rate limited\") {\n      this.rateLimited = true;\n    }\n  }\n  updatePayload(payload) {\n    this.payload = Object.assign(Object.assign({}, this.payload), payload);\n  }\n  receive(status, callback) {\n    var _a;\n    if (this._hasReceived(status)) {\n      callback((_a = this.receivedResp) === null || _a === void 0 ? void 0 : _a.response);\n    }\n    this.recHooks.push({status, callback});\n    return this;\n  }\n  startTimeout() {\n    if (this.timeoutTimer) {\n      return;\n    }\n    this.ref = this.channel.socket._makeRef();\n    this.refEvent = this.channel._replyEventName(this.ref);\n    const callback = (payload) => {\n      this._cancelRefEvent();\n      this._cancelTimeout();\n      this.receivedResp = payload;\n      this._matchReceive(payload);\n    };\n    this.channel._on(this.refEvent, {}, callback);\n    this.timeoutTimer = setTimeout(() => {\n      this.trigger(\"timeout\", {});\n    }, this.timeout);\n  }\n  trigger(status, response) {\n    if (this.refEvent)\n      this.channel._trigger(this.refEvent, {status, response});\n  }\n  destroy() {\n    this._cancelRefEvent();\n    this._cancelTimeout();\n  }\n  _cancelRefEvent() {\n    if (!this.refEvent) {\n      return;\n    }\n    this.channel._off(this.refEvent, {});\n  }\n  _cancelTimeout() {\n    clearTimeout(this.timeoutTimer);\n    this.timeoutTimer = void 0;\n  }\n  _matchReceive({status, response}) {\n    this.recHooks.filter((h) => h.status === status).forEach((h) => h.callback(response));\n  }\n  _hasReceived(status) {\n    return this.receivedResp && this.receivedResp.status === status;\n  }\n}\nvar REALTIME_PRESENCE_LISTEN_EVENTS;\n(function(REALTIME_PRESENCE_LISTEN_EVENTS2) {\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"SYNC\"] = \"sync\";\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"JOIN\"] = \"join\";\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"LEAVE\"] = \"leave\";\n})(REALTIME_PRESENCE_LISTEN_EVENTS || (REALTIME_PRESENCE_LISTEN_EVENTS = {}));\nclass RealtimePresence {\n  constructor(channel, opts) {\n    this.channel = channel;\n    this.state = {};\n    this.pendingDiffs = [];\n    this.joinRef = null;\n    this.caller = {\n      onJoin: () => {\n      },\n      onLeave: () => {\n      },\n      onSync: () => {\n      }\n    };\n    const events = (opts === null || opts === void 0 ? void 0 : opts.events) || {\n      state: \"presence_state\",\n      diff: \"presence_diff\"\n    };\n    this.channel._on(events.state, {}, (newState) => {\n      const {onJoin, onLeave, onSync} = this.caller;\n      this.joinRef = this.channel._joinRef();\n      this.state = RealtimePresence.syncState(this.state, newState, onJoin, onLeave);\n      this.pendingDiffs.forEach((diff) => {\n        this.state = RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);\n      });\n      this.pendingDiffs = [];\n      onSync();\n    });\n    this.channel._on(events.diff, {}, (diff) => {\n      const {onJoin, onLeave, onSync} = this.caller;\n      if (this.inPendingSyncState()) {\n        this.pendingDiffs.push(diff);\n      } else {\n        this.state = RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);\n        onSync();\n      }\n    });\n    this.onJoin((key, currentPresences, newPresences) => {\n      this.channel._trigger(\"presence\", {\n        event: \"join\",\n        key,\n        currentPresences,\n        newPresences\n      });\n    });\n    this.onLeave((key, currentPresences, leftPresences) => {\n      this.channel._trigger(\"presence\", {\n        event: \"leave\",\n        key,\n        currentPresences,\n        leftPresences\n      });\n    });\n    this.onSync(() => {\n      this.channel._trigger(\"presence\", {event: \"sync\"});\n    });\n  }\n  static syncState(currentState, newState, onJoin, onLeave) {\n    const state = this.cloneDeep(currentState);\n    const transformedState = this.transformState(newState);\n    const joins = {};\n    const leaves = {};\n    this.map(state, (key, presences) => {\n      if (!transformedState[key]) {\n        leaves[key] = presences;\n      }\n    });\n    this.map(transformedState, (key, newPresences) => {\n      const currentPresences = state[key];\n      if (currentPresences) {\n        const newPresenceRefs = newPresences.map((m) => m.presence_ref);\n        const curPresenceRefs = currentPresences.map((m) => m.presence_ref);\n        const joinedPresences = newPresences.filter((m) => curPresenceRefs.indexOf(m.presence_ref) < 0);\n        const leftPresences = currentPresences.filter((m) => newPresenceRefs.indexOf(m.presence_ref) < 0);\n        if (joinedPresences.length > 0) {\n          joins[key] = joinedPresences;\n        }\n        if (leftPresences.length > 0) {\n          leaves[key] = leftPresences;\n        }\n      } else {\n        joins[key] = newPresences;\n      }\n    });\n    return this.syncDiff(state, {joins, leaves}, onJoin, onLeave);\n  }\n  static syncDiff(state, diff, onJoin, onLeave) {\n    const {joins, leaves} = {\n      joins: this.transformState(diff.joins),\n      leaves: this.transformState(diff.leaves)\n    };\n    if (!onJoin) {\n      onJoin = () => {\n      };\n    }\n    if (!onLeave) {\n      onLeave = () => {\n      };\n    }\n    this.map(joins, (key, newPresences) => {\n      var _a;\n      const currentPresences = (_a = state[key]) !== null && _a !== void 0 ? _a : [];\n      state[key] = this.cloneDeep(newPresences);\n      if (currentPresences.length > 0) {\n        const joinedPresenceRefs = state[key].map((m) => m.presence_ref);\n        const curPresences = currentPresences.filter((m) => joinedPresenceRefs.indexOf(m.presence_ref) < 0);\n        state[key].unshift(...curPresences);\n      }\n      onJoin(key, currentPresences, newPresences);\n    });\n    this.map(leaves, (key, leftPresences) => {\n      let currentPresences = state[key];\n      if (!currentPresences)\n        return;\n      const presenceRefsToRemove = leftPresences.map((m) => m.presence_ref);\n      currentPresences = currentPresences.filter((m) => presenceRefsToRemove.indexOf(m.presence_ref) < 0);\n      state[key] = currentPresences;\n      onLeave(key, currentPresences, leftPresences);\n      if (currentPresences.length === 0)\n        delete state[key];\n    });\n    return state;\n  }\n  static map(obj, func) {\n    return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]));\n  }\n  static transformState(state) {\n    state = this.cloneDeep(state);\n    return Object.getOwnPropertyNames(state).reduce((newState, key) => {\n      const presences = state[key];\n      if (\"metas\" in presences) {\n        newState[key] = presences.metas.map((presence) => {\n          presence[\"presence_ref\"] = presence[\"phx_ref\"];\n          delete presence[\"phx_ref\"];\n          delete presence[\"phx_ref_prev\"];\n          return presence;\n        });\n      } else {\n        newState[key] = presences;\n      }\n      return newState;\n    }, {});\n  }\n  static cloneDeep(obj) {\n    return JSON.parse(JSON.stringify(obj));\n  }\n  onJoin(callback) {\n    this.caller.onJoin = callback;\n  }\n  onLeave(callback) {\n    this.caller.onLeave = callback;\n  }\n  onSync(callback) {\n    this.caller.onSync = callback;\n  }\n  inPendingSyncState() {\n    return !this.joinRef || this.joinRef !== this.channel._joinRef();\n  }\n}\nvar PostgresTypes;\n(function(PostgresTypes2) {\n  PostgresTypes2[\"abstime\"] = \"abstime\";\n  PostgresTypes2[\"bool\"] = \"bool\";\n  PostgresTypes2[\"date\"] = \"date\";\n  PostgresTypes2[\"daterange\"] = \"daterange\";\n  PostgresTypes2[\"float4\"] = \"float4\";\n  PostgresTypes2[\"float8\"] = \"float8\";\n  PostgresTypes2[\"int2\"] = \"int2\";\n  PostgresTypes2[\"int4\"] = \"int4\";\n  PostgresTypes2[\"int4range\"] = \"int4range\";\n  PostgresTypes2[\"int8\"] = \"int8\";\n  PostgresTypes2[\"int8range\"] = \"int8range\";\n  PostgresTypes2[\"json\"] = \"json\";\n  PostgresTypes2[\"jsonb\"] = \"jsonb\";\n  PostgresTypes2[\"money\"] = \"money\";\n  PostgresTypes2[\"numeric\"] = \"numeric\";\n  PostgresTypes2[\"oid\"] = \"oid\";\n  PostgresTypes2[\"reltime\"] = \"reltime\";\n  PostgresTypes2[\"text\"] = \"text\";\n  PostgresTypes2[\"time\"] = \"time\";\n  PostgresTypes2[\"timestamp\"] = \"timestamp\";\n  PostgresTypes2[\"timestamptz\"] = \"timestamptz\";\n  PostgresTypes2[\"timetz\"] = \"timetz\";\n  PostgresTypes2[\"tsrange\"] = \"tsrange\";\n  PostgresTypes2[\"tstzrange\"] = \"tstzrange\";\n})(PostgresTypes || (PostgresTypes = {}));\nconst convertChangeData = (columns, record, options = {}) => {\n  var _a;\n  const skipTypes = (_a = options.skipTypes) !== null && _a !== void 0 ? _a : [];\n  return Object.keys(record).reduce((acc, rec_key) => {\n    acc[rec_key] = convertColumn(rec_key, columns, record, skipTypes);\n    return acc;\n  }, {});\n};\nconst convertColumn = (columnName, columns, record, skipTypes) => {\n  const column = columns.find((x) => x.name === columnName);\n  const colType = column === null || column === void 0 ? void 0 : column.type;\n  const value = record[columnName];\n  if (colType && !skipTypes.includes(colType)) {\n    return convertCell(colType, value);\n  }\n  return noop(value);\n};\nconst convertCell = (type, value) => {\n  if (type.charAt(0) === \"_\") {\n    const dataType = type.slice(1, type.length);\n    return toArray(value, dataType);\n  }\n  switch (type) {\n    case PostgresTypes.bool:\n      return toBoolean(value);\n    case PostgresTypes.float4:\n    case PostgresTypes.float8:\n    case PostgresTypes.int2:\n    case PostgresTypes.int4:\n    case PostgresTypes.int8:\n    case PostgresTypes.numeric:\n    case PostgresTypes.oid:\n      return toNumber(value);\n    case PostgresTypes.json:\n    case PostgresTypes.jsonb:\n      return toJson(value);\n    case PostgresTypes.timestamp:\n      return toTimestampString(value);\n    case PostgresTypes.abstime:\n    case PostgresTypes.date:\n    case PostgresTypes.daterange:\n    case PostgresTypes.int4range:\n    case PostgresTypes.int8range:\n    case PostgresTypes.money:\n    case PostgresTypes.reltime:\n    case PostgresTypes.text:\n    case PostgresTypes.time:\n    case PostgresTypes.timestamptz:\n    case PostgresTypes.timetz:\n    case PostgresTypes.tsrange:\n    case PostgresTypes.tstzrange:\n      return noop(value);\n    default:\n      return noop(value);\n  }\n};\nconst noop = (value) => {\n  return value;\n};\nconst toBoolean = (value) => {\n  switch (value) {\n    case \"t\":\n      return true;\n    case \"f\":\n      return false;\n    default:\n      return value;\n  }\n};\nconst toNumber = (value) => {\n  if (typeof value === \"string\") {\n    const parsedValue = parseFloat(value);\n    if (!Number.isNaN(parsedValue)) {\n      return parsedValue;\n    }\n  }\n  return value;\n};\nconst toJson = (value) => {\n  if (typeof value === \"string\") {\n    try {\n      return JSON.parse(value);\n    } catch (error) {\n      console.log(`JSON parse error: ${error}`);\n      return value;\n    }\n  }\n  return value;\n};\nconst toArray = (value, type) => {\n  if (typeof value !== \"string\") {\n    return value;\n  }\n  const lastIdx = value.length - 1;\n  const closeBrace = value[lastIdx];\n  const openBrace = value[0];\n  if (openBrace === \"{\" && closeBrace === \"}\") {\n    let arr;\n    const valTrim = value.slice(1, lastIdx);\n    try {\n      arr = JSON.parse(\"[\" + valTrim + \"]\");\n    } catch (_) {\n      arr = valTrim ? valTrim.split(\",\") : [];\n    }\n    return arr.map((val) => convertCell(type, val));\n  }\n  return value;\n};\nconst toTimestampString = (value) => {\n  if (typeof value === \"string\") {\n    return value.replace(\" \", \"T\");\n  }\n  return value;\n};\nvar __awaiter = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nvar REALTIME_POSTGRES_CHANGES_LISTEN_EVENT;\n(function(REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2) {\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"ALL\"] = \"*\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"INSERT\"] = \"INSERT\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"UPDATE\"] = \"UPDATE\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"DELETE\"] = \"DELETE\";\n})(REALTIME_POSTGRES_CHANGES_LISTEN_EVENT || (REALTIME_POSTGRES_CHANGES_LISTEN_EVENT = {}));\nvar REALTIME_LISTEN_TYPES;\n(function(REALTIME_LISTEN_TYPES2) {\n  REALTIME_LISTEN_TYPES2[\"BROADCAST\"] = \"broadcast\";\n  REALTIME_LISTEN_TYPES2[\"PRESENCE\"] = \"presence\";\n  REALTIME_LISTEN_TYPES2[\"POSTGRES_CHANGES\"] = \"postgres_changes\";\n})(REALTIME_LISTEN_TYPES || (REALTIME_LISTEN_TYPES = {}));\nvar REALTIME_SUBSCRIBE_STATES;\n(function(REALTIME_SUBSCRIBE_STATES2) {\n  REALTIME_SUBSCRIBE_STATES2[\"SUBSCRIBED\"] = \"SUBSCRIBED\";\n  REALTIME_SUBSCRIBE_STATES2[\"TIMED_OUT\"] = \"TIMED_OUT\";\n  REALTIME_SUBSCRIBE_STATES2[\"CLOSED\"] = \"CLOSED\";\n  REALTIME_SUBSCRIBE_STATES2[\"CHANNEL_ERROR\"] = \"CHANNEL_ERROR\";\n})(REALTIME_SUBSCRIBE_STATES || (REALTIME_SUBSCRIBE_STATES = {}));\nclass RealtimeChannel {\n  constructor(topic, params = {config: {}}, socket) {\n    this.topic = topic;\n    this.params = params;\n    this.socket = socket;\n    this.bindings = {};\n    this.state = CHANNEL_STATES.closed;\n    this.joinedOnce = false;\n    this.pushBuffer = [];\n    this.params.config = Object.assign({\n      broadcast: {ack: false, self: false},\n      presence: {key: \"\"}\n    }, params.config);\n    this.timeout = this.socket.timeout;\n    this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout);\n    this.rejoinTimer = new Timer(() => this._rejoinUntilConnected(), this.socket.reconnectAfterMs);\n    this.joinPush.receive(\"ok\", () => {\n      this.state = CHANNEL_STATES.joined;\n      this.rejoinTimer.reset();\n      this.pushBuffer.forEach((pushEvent) => pushEvent.send());\n      this.pushBuffer = [];\n    });\n    this._onClose(() => {\n      this.rejoinTimer.reset();\n      this.socket.log(\"channel\", `close ${this.topic} ${this._joinRef()}`);\n      this.state = CHANNEL_STATES.closed;\n      this.socket._remove(this);\n    });\n    this._onError((reason) => {\n      if (this._isLeaving() || this._isClosed()) {\n        return;\n      }\n      this.socket.log(\"channel\", `error ${this.topic}`, reason);\n      this.state = CHANNEL_STATES.errored;\n      this.rejoinTimer.scheduleTimeout();\n    });\n    this.joinPush.receive(\"timeout\", () => {\n      if (!this._isJoining()) {\n        return;\n      }\n      this.socket.log(\"channel\", `timeout ${this.topic}`, this.joinPush.timeout);\n      this.state = CHANNEL_STATES.errored;\n      this.rejoinTimer.scheduleTimeout();\n    });\n    this._on(CHANNEL_EVENTS.reply, {}, (payload, ref) => {\n      this._trigger(this._replyEventName(ref), payload);\n    });\n    this.presence = new RealtimePresence(this);\n  }\n  subscribe(callback, timeout = this.timeout) {\n    var _a, _b;\n    if (this.joinedOnce) {\n      throw `tried to subscribe multiple times. 'subscribe' can only be called a single time per channel instance`;\n    } else {\n      const {config: {broadcast, presence}} = this.params;\n      this._onError((e) => callback && callback(\"CHANNEL_ERROR\", e));\n      this._onClose(() => callback && callback(\"CLOSED\"));\n      const accessTokenPayload = {};\n      const config = {\n        broadcast,\n        presence,\n        postgres_changes: (_b = (_a = this.bindings.postgres_changes) === null || _a === void 0 ? void 0 : _a.map((r) => r.filter)) !== null && _b !== void 0 ? _b : []\n      };\n      if (this.socket.accessToken) {\n        accessTokenPayload.access_token = this.socket.accessToken;\n      }\n      this.updateJoinPayload(Object.assign({config}, accessTokenPayload));\n      this.joinedOnce = true;\n      this._rejoin(timeout);\n      this.joinPush.receive(\"ok\", ({postgres_changes: serverPostgresFilters}) => {\n        var _a2;\n        this.socket.accessToken && this.socket.setAuth(this.socket.accessToken);\n        if (serverPostgresFilters === void 0) {\n          callback && callback(\"SUBSCRIBED\");\n          return;\n        } else {\n          const clientPostgresBindings = this.bindings.postgres_changes;\n          const bindingsLen = (_a2 = clientPostgresBindings === null || clientPostgresBindings === void 0 ? void 0 : clientPostgresBindings.length) !== null && _a2 !== void 0 ? _a2 : 0;\n          const newPostgresBindings = [];\n          for (let i = 0; i < bindingsLen; i++) {\n            const clientPostgresBinding = clientPostgresBindings[i];\n            const {filter: {event, schema, table, filter}} = clientPostgresBinding;\n            const serverPostgresFilter = serverPostgresFilters && serverPostgresFilters[i];\n            if (serverPostgresFilter && serverPostgresFilter.event === event && serverPostgresFilter.schema === schema && serverPostgresFilter.table === table && serverPostgresFilter.filter === filter) {\n              newPostgresBindings.push(Object.assign(Object.assign({}, clientPostgresBinding), {id: serverPostgresFilter.id}));\n            } else {\n              this.unsubscribe();\n              callback && callback(\"CHANNEL_ERROR\", new Error(\"mismatch between server and client bindings for postgres changes\"));\n              return;\n            }\n          }\n          this.bindings.postgres_changes = newPostgresBindings;\n          callback && callback(\"SUBSCRIBED\");\n          return;\n        }\n      }).receive(\"error\", (error) => {\n        callback && callback(\"CHANNEL_ERROR\", new Error(JSON.stringify(Object.values(error).join(\", \") || \"error\")));\n        return;\n      }).receive(\"timeout\", () => {\n        callback && callback(\"TIMED_OUT\");\n        return;\n      });\n    }\n    return this;\n  }\n  presenceState() {\n    return this.presence.state;\n  }\n  track(payload, opts = {}) {\n    return __awaiter(this, void 0, void 0, function* () {\n      return yield this.send({\n        type: \"presence\",\n        event: \"track\",\n        payload\n      }, opts.timeout || this.timeout);\n    });\n  }\n  untrack(opts = {}) {\n    return __awaiter(this, void 0, void 0, function* () {\n      return yield this.send({\n        type: \"presence\",\n        event: \"untrack\"\n      }, opts);\n    });\n  }\n  on(type, filter, callback) {\n    return this._on(type, filter, callback);\n  }\n  send(payload, opts = {}) {\n    return new Promise((resolve) => {\n      var _a, _b, _c;\n      const push = this._push(payload.type, payload, opts.timeout || this.timeout);\n      if (push.rateLimited) {\n        resolve(\"rate limited\");\n      }\n      if (payload.type === \"broadcast\" && !((_c = (_b = (_a = this.params) === null || _a === void 0 ? void 0 : _a.config) === null || _b === void 0 ? void 0 : _b.broadcast) === null || _c === void 0 ? void 0 : _c.ack)) {\n        resolve(\"ok\");\n      }\n      push.receive(\"ok\", () => resolve(\"ok\"));\n      push.receive(\"timeout\", () => resolve(\"timed out\"));\n    });\n  }\n  updateJoinPayload(payload) {\n    this.joinPush.updatePayload(payload);\n  }\n  unsubscribe(timeout = this.timeout) {\n    this.state = CHANNEL_STATES.leaving;\n    const onClose = () => {\n      this.socket.log(\"channel\", `leave ${this.topic}`);\n      this._trigger(CHANNEL_EVENTS.close, \"leave\", this._joinRef());\n    };\n    this.rejoinTimer.reset();\n    this.joinPush.destroy();\n    return new Promise((resolve) => {\n      const leavePush = new Push(this, CHANNEL_EVENTS.leave, {}, timeout);\n      leavePush.receive(\"ok\", () => {\n        onClose();\n        resolve(\"ok\");\n      }).receive(\"timeout\", () => {\n        onClose();\n        resolve(\"timed out\");\n      }).receive(\"error\", () => {\n        resolve(\"error\");\n      });\n      leavePush.send();\n      if (!this._canPush()) {\n        leavePush.trigger(\"ok\", {});\n      }\n    });\n  }\n  _push(event, payload, timeout = this.timeout) {\n    if (!this.joinedOnce) {\n      throw `tried to push '${event}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;\n    }\n    let pushEvent = new Push(this, event, payload, timeout);\n    if (this._canPush()) {\n      pushEvent.send();\n    } else {\n      pushEvent.startTimeout();\n      this.pushBuffer.push(pushEvent);\n    }\n    return pushEvent;\n  }\n  _onMessage(_event, payload, _ref) {\n    return payload;\n  }\n  _isMember(topic) {\n    return this.topic === topic;\n  }\n  _joinRef() {\n    return this.joinPush.ref;\n  }\n  _trigger(type, payload, ref) {\n    var _a, _b;\n    const typeLower = type.toLocaleLowerCase();\n    const {close, error, leave, join} = CHANNEL_EVENTS;\n    const events = [close, error, leave, join];\n    if (ref && events.indexOf(typeLower) >= 0 && ref !== this._joinRef()) {\n      return;\n    }\n    let handledPayload = this._onMessage(typeLower, payload, ref);\n    if (payload && !handledPayload) {\n      throw \"channel onMessage callbacks must return the payload, modified or unmodified\";\n    }\n    if ([\"insert\", \"update\", \"delete\"].includes(typeLower)) {\n      (_a = this.bindings.postgres_changes) === null || _a === void 0 ? void 0 : _a.filter((bind) => {\n        var _a2, _b2, _c;\n        return ((_a2 = bind.filter) === null || _a2 === void 0 ? void 0 : _a2.event) === \"*\" || ((_c = (_b2 = bind.filter) === null || _b2 === void 0 ? void 0 : _b2.event) === null || _c === void 0 ? void 0 : _c.toLocaleLowerCase()) === typeLower;\n      }).map((bind) => bind.callback(handledPayload, ref));\n    } else {\n      (_b = this.bindings[typeLower]) === null || _b === void 0 ? void 0 : _b.filter((bind) => {\n        var _a2, _b2, _c, _d, _e, _f;\n        if ([\"broadcast\", \"presence\", \"postgres_changes\"].includes(typeLower)) {\n          if (\"id\" in bind) {\n            const bindId = bind.id;\n            const bindEvent = (_a2 = bind.filter) === null || _a2 === void 0 ? void 0 : _a2.event;\n            return bindId && ((_b2 = payload.ids) === null || _b2 === void 0 ? void 0 : _b2.includes(bindId)) && (bindEvent === \"*\" || (bindEvent === null || bindEvent === void 0 ? void 0 : bindEvent.toLocaleLowerCase()) === ((_c = payload.data) === null || _c === void 0 ? void 0 : _c.type.toLocaleLowerCase()));\n          } else {\n            const bindEvent = (_e = (_d = bind === null || bind === void 0 ? void 0 : bind.filter) === null || _d === void 0 ? void 0 : _d.event) === null || _e === void 0 ? void 0 : _e.toLocaleLowerCase();\n            return bindEvent === \"*\" || bindEvent === ((_f = payload === null || payload === void 0 ? void 0 : payload.event) === null || _f === void 0 ? void 0 : _f.toLocaleLowerCase());\n          }\n        } else {\n          return bind.type.toLocaleLowerCase() === typeLower;\n        }\n      }).map((bind) => {\n        if (typeof handledPayload === \"object\" && \"ids\" in handledPayload) {\n          const postgresChanges = handledPayload.data;\n          const {schema, table, commit_timestamp, type: type2, errors} = postgresChanges;\n          const enrichedPayload = {\n            schema,\n            table,\n            commit_timestamp,\n            eventType: type2,\n            new: {},\n            old: {},\n            errors\n          };\n          handledPayload = Object.assign(Object.assign({}, enrichedPayload), this._getPayloadRecords(postgresChanges));\n        }\n        bind.callback(handledPayload, ref);\n      });\n    }\n  }\n  _isClosed() {\n    return this.state === CHANNEL_STATES.closed;\n  }\n  _isJoined() {\n    return this.state === CHANNEL_STATES.joined;\n  }\n  _isJoining() {\n    return this.state === CHANNEL_STATES.joining;\n  }\n  _isLeaving() {\n    return this.state === CHANNEL_STATES.leaving;\n  }\n  _replyEventName(ref) {\n    return `chan_reply_${ref}`;\n  }\n  _on(type, filter, callback) {\n    const typeLower = type.toLocaleLowerCase();\n    const binding = {\n      type: typeLower,\n      filter,\n      callback\n    };\n    if (this.bindings[typeLower]) {\n      this.bindings[typeLower].push(binding);\n    } else {\n      this.bindings[typeLower] = [binding];\n    }\n    return this;\n  }\n  _off(type, filter) {\n    const typeLower = type.toLocaleLowerCase();\n    this.bindings[typeLower] = this.bindings[typeLower].filter((bind) => {\n      var _a;\n      return !(((_a = bind.type) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase()) === typeLower && RealtimeChannel.isEqual(bind.filter, filter));\n    });\n    return this;\n  }\n  static isEqual(obj1, obj2) {\n    if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n      return false;\n    }\n    for (const k in obj1) {\n      if (obj1[k] !== obj2[k]) {\n        return false;\n      }\n    }\n    return true;\n  }\n  _rejoinUntilConnected() {\n    this.rejoinTimer.scheduleTimeout();\n    if (this.socket.isConnected()) {\n      this._rejoin();\n    }\n  }\n  _onClose(callback) {\n    this._on(CHANNEL_EVENTS.close, {}, callback);\n  }\n  _onError(callback) {\n    this._on(CHANNEL_EVENTS.error, {}, (reason) => callback(reason));\n  }\n  _canPush() {\n    return this.socket.isConnected() && this._isJoined();\n  }\n  _rejoin(timeout = this.timeout) {\n    if (this._isLeaving()) {\n      return;\n    }\n    this.socket._leaveOpenTopic(this.topic);\n    this.state = CHANNEL_STATES.joining;\n    this.joinPush.resend(timeout);\n  }\n  _getPayloadRecords(payload) {\n    const records = {\n      new: {},\n      old: {}\n    };\n    if (payload.type === \"INSERT\" || payload.type === \"UPDATE\") {\n      records.new = convertChangeData(payload.columns, payload.record);\n    }\n    if (payload.type === \"UPDATE\" || payload.type === \"DELETE\") {\n      records.old = convertChangeData(payload.columns, payload.old_record);\n    }\n    return records;\n  }\n}\nvar __awaiter$1 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst noop$1 = () => {\n};\nclass RealtimeClient {\n  constructor(endPoint, options) {\n    var _a;\n    this.accessToken = null;\n    this.channels = [];\n    this.endPoint = \"\";\n    this.headers = DEFAULT_HEADERS;\n    this.params = {};\n    this.timeout = DEFAULT_TIMEOUT;\n    this.transport = w3cwebsocket;\n    this.heartbeatIntervalMs = 3e4;\n    this.heartbeatTimer = void 0;\n    this.pendingHeartbeatRef = null;\n    this.ref = 0;\n    this.logger = noop$1;\n    this.conn = null;\n    this.sendBuffer = [];\n    this.serializer = new Serializer();\n    this.stateChangeCallbacks = {\n      open: [],\n      close: [],\n      error: [],\n      message: []\n    };\n    this.eventsPerSecondLimitMs = 100;\n    this.inThrottle = false;\n    this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`;\n    if (options === null || options === void 0 ? void 0 : options.params)\n      this.params = options.params;\n    if (options === null || options === void 0 ? void 0 : options.headers)\n      this.headers = Object.assign(Object.assign({}, this.headers), options.headers);\n    if (options === null || options === void 0 ? void 0 : options.timeout)\n      this.timeout = options.timeout;\n    if (options === null || options === void 0 ? void 0 : options.logger)\n      this.logger = options.logger;\n    if (options === null || options === void 0 ? void 0 : options.transport)\n      this.transport = options.transport;\n    if (options === null || options === void 0 ? void 0 : options.heartbeatIntervalMs)\n      this.heartbeatIntervalMs = options.heartbeatIntervalMs;\n    const eventsPerSecond = (_a = options === null || options === void 0 ? void 0 : options.params) === null || _a === void 0 ? void 0 : _a.eventsPerSecond;\n    if (eventsPerSecond)\n      this.eventsPerSecondLimitMs = Math.floor(1e3 / eventsPerSecond);\n    this.reconnectAfterMs = (options === null || options === void 0 ? void 0 : options.reconnectAfterMs) ? options.reconnectAfterMs : (tries) => {\n      return [1e3, 2e3, 5e3, 1e4][tries - 1] || 1e4;\n    };\n    this.encode = (options === null || options === void 0 ? void 0 : options.encode) ? options.encode : (payload, callback) => {\n      return callback(JSON.stringify(payload));\n    };\n    this.decode = (options === null || options === void 0 ? void 0 : options.decode) ? options.decode : this.serializer.decode.bind(this.serializer);\n    this.reconnectTimer = new Timer(() => __awaiter$1(this, void 0, void 0, function* () {\n      this.disconnect();\n      this.connect();\n    }), this.reconnectAfterMs);\n  }\n  connect() {\n    if (this.conn) {\n      return;\n    }\n    this.conn = new this.transport(this._endPointURL(), [], null, this.headers);\n    if (this.conn) {\n      this.conn.binaryType = \"arraybuffer\";\n      this.conn.onopen = () => this._onConnOpen();\n      this.conn.onerror = (error) => this._onConnError(error);\n      this.conn.onmessage = (event) => this._onConnMessage(event);\n      this.conn.onclose = (event) => this._onConnClose(event);\n    }\n  }\n  disconnect(code, reason) {\n    if (this.conn) {\n      this.conn.onclose = function() {\n      };\n      if (code) {\n        this.conn.close(code, reason !== null && reason !== void 0 ? reason : \"\");\n      } else {\n        this.conn.close();\n      }\n      this.conn = null;\n      this.heartbeatTimer && clearInterval(this.heartbeatTimer);\n      this.reconnectTimer.reset();\n    }\n  }\n  getChannels() {\n    return this.channels;\n  }\n  removeChannel(channel) {\n    return channel.unsubscribe().then((status) => {\n      if (this.channels.length === 0) {\n        this.disconnect();\n      }\n      return status;\n    });\n  }\n  removeAllChannels() {\n    return Promise.all(this.channels.map((channel) => channel.unsubscribe())).then((values) => {\n      this.disconnect();\n      return values;\n    });\n  }\n  log(kind, msg, data) {\n    this.logger(kind, msg, data);\n  }\n  connectionState() {\n    switch (this.conn && this.conn.readyState) {\n      case SOCKET_STATES.connecting:\n        return CONNECTION_STATE.Connecting;\n      case SOCKET_STATES.open:\n        return CONNECTION_STATE.Open;\n      case SOCKET_STATES.closing:\n        return CONNECTION_STATE.Closing;\n      default:\n        return CONNECTION_STATE.Closed;\n    }\n  }\n  isConnected() {\n    return this.connectionState() === CONNECTION_STATE.Open;\n  }\n  channel(topic, params = {config: {}}) {\n    if (!this.isConnected()) {\n      this.connect();\n    }\n    const chan = new RealtimeChannel(`realtime:${topic}`, params, this);\n    this.channels.push(chan);\n    return chan;\n  }\n  push(data) {\n    const {topic, event, payload, ref} = data;\n    let callback = () => {\n      this.encode(data, (result) => {\n        var _a;\n        (_a = this.conn) === null || _a === void 0 ? void 0 : _a.send(result);\n      });\n    };\n    this.log(\"push\", `${topic} ${event} (${ref})`, payload);\n    if (this.isConnected()) {\n      if ([\"broadcast\", \"presence\", \"postgres_changes\"].includes(event)) {\n        const isThrottled = this._throttle(callback)();\n        if (isThrottled) {\n          return \"rate limited\";\n        }\n      } else {\n        callback();\n      }\n    } else {\n      this.sendBuffer.push(callback);\n    }\n  }\n  setAuth(token) {\n    this.accessToken = token;\n    this.channels.forEach((channel) => {\n      token && channel.updateJoinPayload({access_token: token});\n      if (channel.joinedOnce && channel._isJoined()) {\n        channel._push(CHANNEL_EVENTS.access_token, {access_token: token});\n      }\n    });\n  }\n  _makeRef() {\n    let newRef = this.ref + 1;\n    if (newRef === this.ref) {\n      this.ref = 0;\n    } else {\n      this.ref = newRef;\n    }\n    return this.ref.toString();\n  }\n  _leaveOpenTopic(topic) {\n    let dupChannel = this.channels.find((c) => c.topic === topic && (c._isJoined() || c._isJoining()));\n    if (dupChannel) {\n      this.log(\"transport\", `leaving duplicate topic \"${topic}\"`);\n      dupChannel.unsubscribe();\n    }\n  }\n  _remove(channel) {\n    this.channels = this.channels.filter((c) => c._joinRef() !== channel._joinRef());\n  }\n  _endPointURL() {\n    return this._appendParams(this.endPoint, Object.assign({}, this.params, {vsn: VSN}));\n  }\n  _onConnMessage(rawMessage) {\n    this.decode(rawMessage.data, (msg) => {\n      let {topic, event, payload, ref} = msg;\n      if (ref && ref === this.pendingHeartbeatRef || event === (payload === null || payload === void 0 ? void 0 : payload.type)) {\n        this.pendingHeartbeatRef = null;\n      }\n      this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload);\n      this.channels.filter((channel) => channel._isMember(topic)).forEach((channel) => channel._trigger(event, payload, ref));\n      this.stateChangeCallbacks.message.forEach((callback) => callback(msg));\n    });\n  }\n  _onConnOpen() {\n    this.log(\"transport\", `connected to ${this._endPointURL()}`);\n    this._flushSendBuffer();\n    this.reconnectTimer.reset();\n    this.heartbeatTimer && clearInterval(this.heartbeatTimer);\n    this.heartbeatTimer = setInterval(() => this._sendHeartbeat(), this.heartbeatIntervalMs);\n    this.stateChangeCallbacks.open.forEach((callback) => callback());\n  }\n  _onConnClose(event) {\n    this.log(\"transport\", \"close\", event);\n    this._triggerChanError();\n    this.heartbeatTimer && clearInterval(this.heartbeatTimer);\n    this.reconnectTimer.scheduleTimeout();\n    this.stateChangeCallbacks.close.forEach((callback) => callback(event));\n  }\n  _onConnError(error) {\n    this.log(\"transport\", error.message);\n    this._triggerChanError();\n    this.stateChangeCallbacks.error.forEach((callback) => callback(error));\n  }\n  _triggerChanError() {\n    this.channels.forEach((channel) => channel._trigger(CHANNEL_EVENTS.error));\n  }\n  _appendParams(url, params) {\n    if (Object.keys(params).length === 0) {\n      return url;\n    }\n    const prefix = url.match(/\\?/) ? \"&\" : \"?\";\n    const query = new URLSearchParams(params);\n    return `${url}${prefix}${query}`;\n  }\n  _flushSendBuffer() {\n    if (this.isConnected() && this.sendBuffer.length > 0) {\n      this.sendBuffer.forEach((callback) => callback());\n      this.sendBuffer = [];\n    }\n  }\n  _sendHeartbeat() {\n    var _a;\n    if (!this.isConnected()) {\n      return;\n    }\n    if (this.pendingHeartbeatRef) {\n      this.pendingHeartbeatRef = null;\n      this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\");\n      (_a = this.conn) === null || _a === void 0 ? void 0 : _a.close(WS_CLOSE_NORMAL, \"hearbeat timeout\");\n      return;\n    }\n    this.pendingHeartbeatRef = this._makeRef();\n    this.push({\n      topic: \"phoenix\",\n      event: \"heartbeat\",\n      payload: {},\n      ref: this.pendingHeartbeatRef\n    });\n    this.setAuth(this.accessToken);\n  }\n  _throttle(callback, eventsPerSecondLimitMs = this.eventsPerSecondLimitMs) {\n    return () => {\n      if (this.inThrottle)\n        return true;\n      callback();\n      if (eventsPerSecondLimitMs > 0) {\n        this.inThrottle = true;\n        setTimeout(() => {\n          this.inThrottle = false;\n        }, eventsPerSecondLimitMs);\n      }\n      return false;\n    };\n  }\n}\nexport {REALTIME_LISTEN_TYPES, REALTIME_POSTGRES_CHANGES_LISTEN_EVENT, REALTIME_PRESENCE_LISTEN_EVENTS, REALTIME_SUBSCRIBE_STATES, RealtimeChannel, RealtimeClient, RealtimePresence};\nexport default null;\n","class StorageError extends Error {\n  constructor(message) {\n    super(message);\n    this.__isStorageError = true;\n    this.name = \"StorageError\";\n  }\n}\nfunction isStorageError(error) {\n  return typeof error === \"object\" && error !== null && \"__isStorageError\" in error;\n}\nclass StorageApiError extends StorageError {\n  constructor(message, status) {\n    super(message);\n    this.name = \"StorageApiError\";\n    this.status = status;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status\n    };\n  }\n}\nclass StorageUnknownError extends StorageError {\n  constructor(message, originalError) {\n    super(message);\n    this.name = \"StorageUnknownError\";\n    this.originalError = originalError;\n  }\n}\nvar __awaiter = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst resolveFetch = (customFetch) => {\n  let _fetch;\n  if (customFetch) {\n    _fetch = customFetch;\n  } else if (typeof fetch === \"undefined\") {\n    _fetch = (...args) => __awaiter(void 0, void 0, void 0, function* () {\n      return yield (yield import(\"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\")).fetch(...args);\n    });\n  } else {\n    _fetch = fetch;\n  }\n  return (...args) => _fetch(...args);\n};\nconst resolveResponse = () => __awaiter(void 0, void 0, void 0, function* () {\n  if (typeof Response === \"undefined\") {\n    return (yield import(\"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\")).Response;\n  }\n  return Response;\n});\nvar __awaiter$1 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst _getErrorMessage = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err);\nconst handleError = (error, reject) => __awaiter$1(void 0, void 0, void 0, function* () {\n  const Res = yield resolveResponse();\n  if (error instanceof Res) {\n    error.json().then((err) => {\n      reject(new StorageApiError(_getErrorMessage(err), error.status || 500));\n    }).catch((err) => {\n      reject(new StorageUnknownError(_getErrorMessage(err), err));\n    });\n  } else {\n    reject(new StorageUnknownError(_getErrorMessage(error), error));\n  }\n});\nconst _getRequestParams = (method, options, parameters, body) => {\n  const params = {method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {}};\n  if (method === \"GET\") {\n    return params;\n  }\n  params.headers = Object.assign({\"Content-Type\": \"application/json\"}, options === null || options === void 0 ? void 0 : options.headers);\n  params.body = JSON.stringify(body);\n  return Object.assign(Object.assign({}, params), parameters);\n};\nfunction _handleRequest(fetcher, method, url, options, parameters, body) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return new Promise((resolve, reject) => {\n      fetcher(url, _getRequestParams(method, options, parameters, body)).then((result) => {\n        if (!result.ok)\n          throw result;\n        if (options === null || options === void 0 ? void 0 : options.noResolveJson)\n          return result;\n        return result.json();\n      }).then((data) => resolve(data)).catch((error) => handleError(error, reject));\n    });\n  });\n}\nfunction get(fetcher, url, options, parameters) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"GET\", url, options, parameters);\n  });\n}\nfunction post(fetcher, url, body, options, parameters) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"POST\", url, options, parameters, body);\n  });\n}\nfunction put(fetcher, url, body, options, parameters) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"PUT\", url, options, parameters, body);\n  });\n}\nfunction remove(fetcher, url, body, options, parameters) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"DELETE\", url, options, parameters, body);\n  });\n}\nvar __awaiter$2 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst DEFAULT_SEARCH_OPTIONS = {\n  limit: 100,\n  offset: 0,\n  sortBy: {\n    column: \"name\",\n    order: \"asc\"\n  }\n};\nconst DEFAULT_FILE_OPTIONS = {\n  cacheControl: \"3600\",\n  contentType: \"text/plain;charset=UTF-8\",\n  upsert: false\n};\nclass StorageFileApi {\n  constructor(url, headers = {}, bucketId, fetch2) {\n    this.url = url;\n    this.headers = headers;\n    this.bucketId = bucketId;\n    this.fetch = resolveFetch(fetch2);\n  }\n  uploadOrUpdate(method, path, fileBody, fileOptions) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        let body;\n        const options = Object.assign(Object.assign({}, DEFAULT_FILE_OPTIONS), fileOptions);\n        const headers = Object.assign(Object.assign({}, this.headers), method === \"POST\" && {\"x-upsert\": String(options.upsert)});\n        if (typeof Blob !== \"undefined\" && fileBody instanceof Blob) {\n          body = new FormData();\n          body.append(\"cacheControl\", options.cacheControl);\n          body.append(\"\", fileBody);\n        } else if (typeof FormData !== \"undefined\" && fileBody instanceof FormData) {\n          body = fileBody;\n          body.append(\"cacheControl\", options.cacheControl);\n        } else {\n          body = fileBody;\n          headers[\"cache-control\"] = `max-age=${options.cacheControl}`;\n          headers[\"content-type\"] = options.contentType;\n        }\n        const cleanPath = this._removeEmptyFolders(path);\n        const _path = this._getFinalPath(cleanPath);\n        const res = yield this.fetch(`${this.url}/object/${_path}`, {\n          method,\n          body,\n          headers\n        });\n        if (res.ok) {\n          return {\n            data: {path: cleanPath},\n            error: null\n          };\n        } else {\n          const error = yield res.json();\n          return {data: null, error};\n        }\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  upload(path, fileBody, fileOptions) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      return this.uploadOrUpdate(\"POST\", path, fileBody, fileOptions);\n    });\n  }\n  update(path, fileBody, fileOptions) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      return this.uploadOrUpdate(\"PUT\", path, fileBody, fileOptions);\n    });\n  }\n  move(fromPath, toPath) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/object/move`, {bucketId: this.bucketId, sourceKey: fromPath, destinationKey: toPath}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  copy(fromPath, toPath) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/object/copy`, {bucketId: this.bucketId, sourceKey: fromPath, destinationKey: toPath}, {headers: this.headers});\n        return {data: {path: data.Key}, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  createSignedUrl(path, expiresIn, options) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        let _path = this._getFinalPath(path);\n        let data = yield post(this.fetch, `${this.url}/object/sign/${_path}`, Object.assign({expiresIn}, (options === null || options === void 0 ? void 0 : options.transform) ? {transform: options.transform} : {}), {headers: this.headers});\n        const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `&download=${options.download === true ? \"\" : options.download}` : \"\";\n        const signedUrl = encodeURI(`${this.url}${data.signedURL}${downloadQueryParam}`);\n        data = {signedUrl};\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  createSignedUrls(paths, expiresIn, options) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/object/sign/${this.bucketId}`, {expiresIn, paths}, {headers: this.headers});\n        const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `&download=${options.download === true ? \"\" : options.download}` : \"\";\n        return {\n          data: data.map((datum) => Object.assign(Object.assign({}, datum), {signedUrl: datum.signedURL ? encodeURI(`${this.url}${datum.signedURL}${downloadQueryParam}`) : null})),\n          error: null\n        };\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  download(path, options) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      const wantsTransformation = typeof (options === null || options === void 0 ? void 0 : options.transform) !== \"undefined\";\n      const renderPath = wantsTransformation ? \"render/image/authenticated\" : \"object\";\n      const transformationQuery = this.transformOptsToQueryString((options === null || options === void 0 ? void 0 : options.transform) || {});\n      const queryString = transformationQuery ? `?${transformationQuery}` : \"\";\n      try {\n        const _path = this._getFinalPath(path);\n        const res = yield get(this.fetch, `${this.url}/${renderPath}/${_path}${queryString}`, {\n          headers: this.headers,\n          noResolveJson: true\n        });\n        const data = yield res.blob();\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  getPublicUrl(path, options) {\n    const _path = this._getFinalPath(path);\n    const _queryString = [];\n    const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `download=${options.download === true ? \"\" : options.download}` : \"\";\n    if (downloadQueryParam !== \"\") {\n      _queryString.push(downloadQueryParam);\n    }\n    const wantsTransformation = typeof (options === null || options === void 0 ? void 0 : options.transform) !== \"undefined\";\n    const renderPath = wantsTransformation ? \"render/image\" : \"object\";\n    const transformationQuery = this.transformOptsToQueryString((options === null || options === void 0 ? void 0 : options.transform) || {});\n    if (transformationQuery !== \"\") {\n      _queryString.push(transformationQuery);\n    }\n    let queryString = _queryString.join(\"&\");\n    if (queryString !== \"\") {\n      queryString = `?${queryString}`;\n    }\n    return {\n      data: {publicUrl: encodeURI(`${this.url}/${renderPath}/public/${_path}${queryString}`)}\n    };\n  }\n  remove(paths) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const data = yield remove(this.fetch, `${this.url}/object/${this.bucketId}`, {prefixes: paths}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  list(path, options, parameters) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const body = Object.assign(Object.assign(Object.assign({}, DEFAULT_SEARCH_OPTIONS), options), {prefix: path || \"\"});\n        const data = yield post(this.fetch, `${this.url}/object/list/${this.bucketId}`, body, {headers: this.headers}, parameters);\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _getFinalPath(path) {\n    return `${this.bucketId}/${path}`;\n  }\n  _removeEmptyFolders(path) {\n    return path.replace(/^\\/|\\/$/g, \"\").replace(/\\/+/g, \"/\");\n  }\n  transformOptsToQueryString(transform) {\n    const params = [];\n    if (transform.width) {\n      params.push(`width=${transform.width}`);\n    }\n    if (transform.height) {\n      params.push(`height=${transform.height}`);\n    }\n    if (transform.resize) {\n      params.push(`resize=${transform.resize}`);\n    }\n    if (transform.format) {\n      params.push(`format=${transform.format}`);\n    }\n    if (transform.quality) {\n      params.push(`quality=${transform.quality}`);\n    }\n    return params.join(\"&\");\n  }\n}\nconst version = \"2.3.1\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `storage-js/${version}`};\nvar __awaiter$3 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nclass StorageBucketApi {\n  constructor(url, headers = {}, fetch2) {\n    this.url = url;\n    this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS), headers);\n    this.fetch = resolveFetch(fetch2);\n  }\n  listBuckets() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield get(this.fetch, `${this.url}/bucket`, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  getBucket(id) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield get(this.fetch, `${this.url}/bucket/${id}`, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  createBucket(id, options = {public: false}) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/bucket`, {id, name: id, public: options.public}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  updateBucket(id, options) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield put(this.fetch, `${this.url}/bucket/${id}`, {id, name: id, public: options.public}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  emptyBucket(id) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/bucket/${id}/empty`, {}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  deleteBucket(id) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield remove(this.fetch, `${this.url}/bucket/${id}`, {}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n}\nclass StorageClient extends StorageBucketApi {\n  constructor(url, headers = {}, fetch2) {\n    super(url, headers, fetch2);\n  }\n  from(id) {\n    return new StorageFileApi(this.url, this.headers, id, this.fetch);\n  }\n}\nexport {StorageApiError, StorageClient, StorageError, StorageUnknownError, isStorageError};\nexport default null;\n","var __awaiter = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nfunction expiresAt(expiresIn) {\n  const timeNow = Math.round(Date.now() / 1e3);\n  return timeNow + expiresIn;\n}\nfunction uuid() {\n  return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n    const r = Math.random() * 16 | 0, v = c == \"x\" ? r : r & 3 | 8;\n    return v.toString(16);\n  });\n}\nconst isBrowser = () => typeof document !== \"undefined\";\nconst localStorageWriteTests = {\n  tested: false,\n  writable: false\n};\nconst supportsLocalStorage = () => {\n  if (!isBrowser()) {\n    return false;\n  }\n  try {\n    if (typeof globalThis.localStorage !== \"object\") {\n      return false;\n    }\n  } catch (e) {\n    return false;\n  }\n  if (localStorageWriteTests.tested) {\n    return localStorageWriteTests.writable;\n  }\n  const randomKey = `lswt-${Math.random()}${Math.random()}`;\n  try {\n    globalThis.localStorage.setItem(randomKey, randomKey);\n    globalThis.localStorage.removeItem(randomKey);\n    localStorageWriteTests.tested = true;\n    localStorageWriteTests.writable = true;\n  } catch (e) {\n    localStorageWriteTests.tested = true;\n    localStorageWriteTests.writable = false;\n  }\n  return localStorageWriteTests.writable;\n};\nfunction getParameterByName(name, url) {\n  var _a;\n  if (!url)\n    url = ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.href) || \"\";\n  name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n  const regex = new RegExp(\"[?&#]\" + name + \"(=([^&#]*)|&|#|$)\"), results = regex.exec(url);\n  if (!results)\n    return null;\n  if (!results[2])\n    return \"\";\n  return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n}\nconst resolveFetch = (customFetch) => {\n  let _fetch;\n  if (customFetch) {\n    _fetch = customFetch;\n  } else if (typeof fetch === \"undefined\") {\n    _fetch = (...args) => __awaiter(void 0, void 0, void 0, function* () {\n      return yield (yield import(\"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\")).fetch(...args);\n    });\n  } else {\n    _fetch = fetch;\n  }\n  return (...args) => _fetch(...args);\n};\nconst looksLikeFetchResponse = (maybeResponse) => {\n  return typeof maybeResponse === \"object\" && maybeResponse !== null && \"status\" in maybeResponse && \"ok\" in maybeResponse && \"json\" in maybeResponse && typeof maybeResponse.json === \"function\";\n};\nconst setItemAsync = (storage, key, data) => __awaiter(void 0, void 0, void 0, function* () {\n  yield storage.setItem(key, JSON.stringify(data));\n});\nconst getItemAsync = (storage, key) => __awaiter(void 0, void 0, void 0, function* () {\n  const value = yield storage.getItem(key);\n  if (!value) {\n    return null;\n  }\n  try {\n    return JSON.parse(value);\n  } catch (_a) {\n    return value;\n  }\n});\nconst removeItemAsync = (storage, key) => __awaiter(void 0, void 0, void 0, function* () {\n  yield storage.removeItem(key);\n});\nfunction decodeBase64URL(value) {\n  const key = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n  let base64 = \"\";\n  let chr1, chr2, chr3;\n  let enc1, enc2, enc3, enc4;\n  let i = 0;\n  value = value.replace(\"-\", \"+\").replace(\"_\", \"/\");\n  while (i < value.length) {\n    enc1 = key.indexOf(value.charAt(i++));\n    enc2 = key.indexOf(value.charAt(i++));\n    enc3 = key.indexOf(value.charAt(i++));\n    enc4 = key.indexOf(value.charAt(i++));\n    chr1 = enc1 << 2 | enc2 >> 4;\n    chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n    chr3 = (enc3 & 3) << 6 | enc4;\n    base64 = base64 + String.fromCharCode(chr1);\n    if (enc3 != 64 && chr2 != 0) {\n      base64 = base64 + String.fromCharCode(chr2);\n    }\n    if (enc4 != 64 && chr3 != 0) {\n      base64 = base64 + String.fromCharCode(chr3);\n    }\n  }\n  return base64;\n}\nclass Deferred {\n  constructor() {\n    this.promise = new Deferred.promiseConstructor((res, rej) => {\n      this.resolve = res;\n      this.reject = rej;\n    });\n  }\n}\nDeferred.promiseConstructor = Promise;\nfunction decodeJWTPayload(token) {\n  const base64UrlRegex = /^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}=?$|[a-z0-9_-]{2}(==)?$)$/i;\n  const parts = token.split(\".\");\n  if (parts.length !== 3) {\n    throw new Error(\"JWT is not valid: not a JWT structure\");\n  }\n  if (!base64UrlRegex.test(parts[1])) {\n    throw new Error(\"JWT is not valid: payload is not in base64url format\");\n  }\n  const base64Url = parts[1];\n  return JSON.parse(decodeBase64URL(base64Url));\n}\nfunction sleep(time) {\n  return new Promise((accept) => {\n    setTimeout(() => accept(null), time);\n  });\n}\nfunction retryable(fn, isRetryable) {\n  const promise = new Promise((accept, reject) => {\n    (() => __awaiter(this, void 0, void 0, function* () {\n      for (let attempt = 0; attempt < Infinity; attempt++) {\n        try {\n          const result = yield fn(attempt);\n          if (!isRetryable(attempt, null, result)) {\n            accept(result);\n            return;\n          }\n        } catch (e) {\n          if (!isRetryable(attempt, e)) {\n            reject(e);\n            return;\n          }\n        }\n      }\n    }))();\n  });\n  return promise;\n}\nclass AuthError extends Error {\n  constructor(message, status) {\n    super(message);\n    this.__isAuthError = true;\n    this.name = \"AuthError\";\n    this.status = status;\n  }\n}\nfunction isAuthError(error) {\n  return typeof error === \"object\" && error !== null && \"__isAuthError\" in error;\n}\nclass AuthApiError extends AuthError {\n  constructor(message, status) {\n    super(message, status);\n    this.name = \"AuthApiError\";\n    this.status = status;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status\n    };\n  }\n}\nfunction isAuthApiError(error) {\n  return isAuthError(error) && error.name === \"AuthApiError\";\n}\nclass AuthUnknownError extends AuthError {\n  constructor(message, originalError) {\n    super(message);\n    this.name = \"AuthUnknownError\";\n    this.originalError = originalError;\n  }\n}\nclass CustomAuthError extends AuthError {\n  constructor(message, name, status) {\n    super(message);\n    this.name = name;\n    this.status = status;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status\n    };\n  }\n}\nclass AuthSessionMissingError extends CustomAuthError {\n  constructor() {\n    super(\"Auth session missing!\", \"AuthSessionMissingError\", 400);\n  }\n}\nclass AuthInvalidCredentialsError extends CustomAuthError {\n  constructor(message) {\n    super(message, \"AuthInvalidCredentialsError\", 400);\n  }\n}\nclass AuthImplicitGrantRedirectError extends CustomAuthError {\n  constructor(message, details = null) {\n    super(message, \"AuthImplicitGrantRedirectError\", 500);\n    this.details = null;\n    this.details = details;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      details: this.details\n    };\n  }\n}\nclass AuthRetryableFetchError extends CustomAuthError {\n  constructor(message, status) {\n    super(message, \"AuthRetryableFetchError\", status);\n  }\n}\nvar __awaiter$1 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nvar __rest = function(s, e) {\n  var t = {};\n  for (var p in s)\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n      if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n        t[p[i]] = s[p[i]];\n    }\n  return t;\n};\nconst _getErrorMessage = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err);\nconst handleError = (error, reject) => __awaiter$1(void 0, void 0, void 0, function* () {\n  const NETWORK_ERROR_CODES = [502, 503, 504];\n  if (!looksLikeFetchResponse(error)) {\n    reject(new AuthRetryableFetchError(_getErrorMessage(error), 0));\n  } else if (NETWORK_ERROR_CODES.includes(error.status)) {\n    reject(new AuthRetryableFetchError(_getErrorMessage(error), error.status));\n  } else {\n    error.json().then((err) => {\n      reject(new AuthApiError(_getErrorMessage(err), error.status || 500));\n    }).catch((e) => {\n      reject(new AuthUnknownError(_getErrorMessage(e), e));\n    });\n  }\n});\nconst _getRequestParams = (method, options, parameters, body) => {\n  const params = {method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {}};\n  if (method === \"GET\") {\n    return params;\n  }\n  params.headers = Object.assign({\"Content-Type\": \"application/json;charset=UTF-8\"}, options === null || options === void 0 ? void 0 : options.headers);\n  params.body = JSON.stringify(body);\n  return Object.assign(Object.assign({}, params), parameters);\n};\nfunction _request(fetcher, method, url, options) {\n  var _a;\n  return __awaiter$1(this, void 0, void 0, function* () {\n    const headers = Object.assign({}, options === null || options === void 0 ? void 0 : options.headers);\n    if (options === null || options === void 0 ? void 0 : options.jwt) {\n      headers[\"Authorization\"] = `Bearer ${options.jwt}`;\n    }\n    const qs = (_a = options === null || options === void 0 ? void 0 : options.query) !== null && _a !== void 0 ? _a : {};\n    if (options === null || options === void 0 ? void 0 : options.redirectTo) {\n      qs[\"redirect_to\"] = options.redirectTo;\n    }\n    const queryString = Object.keys(qs).length ? \"?\" + new URLSearchParams(qs).toString() : \"\";\n    const data = yield _handleRequest(fetcher, method, url + queryString, {headers, noResolveJson: options === null || options === void 0 ? void 0 : options.noResolveJson}, {}, options === null || options === void 0 ? void 0 : options.body);\n    return (options === null || options === void 0 ? void 0 : options.xform) ? options === null || options === void 0 ? void 0 : options.xform(data) : {data: Object.assign({}, data), error: null};\n  });\n}\nfunction _handleRequest(fetcher, method, url, options, parameters, body) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return new Promise((resolve, reject) => {\n      fetcher(url, _getRequestParams(method, options, parameters, body)).then((result) => {\n        if (!result.ok)\n          throw result;\n        if (options === null || options === void 0 ? void 0 : options.noResolveJson)\n          return result;\n        return result.json();\n      }).then((data) => resolve(data)).catch((error) => handleError(error, reject));\n    });\n  });\n}\nfunction _sessionResponse(data) {\n  var _a;\n  let session = null;\n  if (hasSession(data)) {\n    session = Object.assign({}, data);\n    session.expires_at = expiresAt(data.expires_in);\n  }\n  const user = (_a = data.user) !== null && _a !== void 0 ? _a : data;\n  return {data: {session, user}, error: null};\n}\nfunction _userResponse(data) {\n  var _a;\n  const user = (_a = data.user) !== null && _a !== void 0 ? _a : data;\n  return {data: {user}, error: null};\n}\nfunction _ssoResponse(data) {\n  return {data, error: null};\n}\nfunction _generateLinkResponse(data) {\n  const {action_link, email_otp, hashed_token, redirect_to, verification_type} = data, rest = __rest(data, [\"action_link\", \"email_otp\", \"hashed_token\", \"redirect_to\", \"verification_type\"]);\n  const properties = {\n    action_link,\n    email_otp,\n    hashed_token,\n    redirect_to,\n    verification_type\n  };\n  const user = Object.assign({}, rest);\n  return {\n    data: {\n      properties,\n      user\n    },\n    error: null\n  };\n}\nfunction _noResolveJsonResponse(data) {\n  return data;\n}\nfunction hasSession(data) {\n  return data.access_token && data.refresh_token && data.expires_in;\n}\nvar __awaiter$2 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nvar __rest$1 = function(s, e) {\n  var t = {};\n  for (var p in s)\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n      if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n        t[p[i]] = s[p[i]];\n    }\n  return t;\n};\nclass GoTrueAdminApi {\n  constructor({url = \"\", headers = {}, fetch: fetch2}) {\n    this.url = url;\n    this.headers = headers;\n    this.fetch = resolveFetch(fetch2);\n    this.mfa = {\n      listFactors: this._listFactors.bind(this),\n      deleteFactor: this._deleteFactor.bind(this)\n    };\n  }\n  signOut(jwt) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        yield _request(this.fetch, \"POST\", `${this.url}/logout`, {\n          headers: this.headers,\n          jwt,\n          noResolveJson: true\n        });\n        return {data: null, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  inviteUserByEmail(email, options = {}) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"POST\", `${this.url}/invite`, {\n          body: {email, data: options.data},\n          headers: this.headers,\n          redirectTo: options.redirectTo,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  generateLink(params) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const {options} = params, rest = __rest$1(params, [\"options\"]);\n        const body = Object.assign(Object.assign({}, rest), options);\n        if (\"newEmail\" in rest) {\n          body.new_email = rest === null || rest === void 0 ? void 0 : rest.newEmail;\n          delete body[\"newEmail\"];\n        }\n        return yield _request(this.fetch, \"POST\", `${this.url}/admin/generate_link`, {\n          body,\n          headers: this.headers,\n          xform: _generateLinkResponse,\n          redirectTo: options === null || options === void 0 ? void 0 : options.redirectTo\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {\n            data: {\n              properties: null,\n              user: null\n            },\n            error\n          };\n        }\n        throw error;\n      }\n    });\n  }\n  createUser(attributes) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"POST\", `${this.url}/admin/users`, {\n          body: attributes,\n          headers: this.headers,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  listUsers(params) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const pagination = {nextPage: null, lastPage: 0, total: 0};\n        const response = yield _request(this.fetch, \"GET\", `${this.url}/admin/users`, {\n          headers: this.headers,\n          noResolveJson: true,\n          query: {\n            page: (_b = (_a = params === null || params === void 0 ? void 0 : params.page) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : \"\",\n            per_page: (_d = (_c = params === null || params === void 0 ? void 0 : params.perPage) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : \"\"\n          },\n          xform: _noResolveJsonResponse\n        });\n        if (response.error)\n          throw response.error;\n        const users = yield response.json();\n        const total = (_e = response.headers.get(\"x-total-count\")) !== null && _e !== void 0 ? _e : 0;\n        const links = (_g = (_f = response.headers.get(\"link\")) === null || _f === void 0 ? void 0 : _f.split(\",\")) !== null && _g !== void 0 ? _g : [];\n        if (links.length > 0) {\n          links.forEach((link) => {\n            const page = parseInt(link.split(\";\")[0].split(\"=\")[1].substring(0, 1));\n            const rel = JSON.parse(link.split(\";\")[1].split(\"=\")[1]);\n            pagination[`${rel}Page`] = page;\n          });\n          pagination.total = parseInt(total);\n        }\n        return {data: Object.assign(Object.assign({}, users), pagination), error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {users: []}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  getUserById(uid) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"GET\", `${this.url}/admin/users/${uid}`, {\n          headers: this.headers,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  updateUserById(uid, attributes) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"PUT\", `${this.url}/admin/users/${uid}`, {\n          body: attributes,\n          headers: this.headers,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  deleteUser(id, shouldSoftDelete = false) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"DELETE\", `${this.url}/admin/users/${id}`, {\n          headers: this.headers,\n          body: {\n            should_soft_delete: shouldSoftDelete\n          },\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _listFactors(params) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const {data, error} = yield _request(this.fetch, \"GET\", `${this.url}/admin/users/${params.userId}/factors`, {\n          headers: this.headers,\n          xform: (factors) => {\n            return {data: {factors}, error: null};\n          }\n        });\n        return {data, error};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _deleteFactor(params) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const data = yield _request(this.fetch, \"DELETE\", `${this.url}/admin/users/${params.userId}/factors/${params.id}`, {\n          headers: this.headers\n        });\n        return {data, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n}\nconst version = \"2.12.1\";\nconst GOTRUE_URL = \"http://localhost:9999\";\nconst STORAGE_KEY = \"supabase.auth.token\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `gotrue-js/${version}`};\nconst EXPIRY_MARGIN = 10;\nconst localStorageAdapter = {\n  getItem: (key) => {\n    if (!supportsLocalStorage()) {\n      return null;\n    }\n    return globalThis.localStorage.getItem(key);\n  },\n  setItem: (key, value) => {\n    if (!supportsLocalStorage()) {\n      return;\n    }\n    globalThis.localStorage.setItem(key, value);\n  },\n  removeItem: (key) => {\n    if (!supportsLocalStorage()) {\n      return;\n    }\n    globalThis.localStorage.removeItem(key);\n  }\n};\nfunction polyfillGlobalThis() {\n  if (typeof globalThis === \"object\")\n    return;\n  try {\n    Object.defineProperty(Object.prototype, \"__magic__\", {\n      get: function() {\n        return this;\n      },\n      configurable: true\n    });\n    __magic__.globalThis = __magic__;\n    delete Object.prototype.__magic__;\n  } catch (e) {\n    if (typeof self !== \"undefined\") {\n      self.globalThis = self;\n    }\n  }\n}\nvar __awaiter$3 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\npolyfillGlobalThis();\nconst DEFAULT_OPTIONS = {\n  url: GOTRUE_URL,\n  storageKey: STORAGE_KEY,\n  autoRefreshToken: true,\n  persistSession: true,\n  detectSessionInUrl: true,\n  headers: DEFAULT_HEADERS\n};\nconst AUTO_REFRESH_TICK_DURATION = 10 * 1e3;\nconst AUTO_REFRESH_TICK_THRESHOLD = 3;\nclass GoTrueClient {\n  constructor(options) {\n    this.stateChangeEmitters = new Map();\n    this.autoRefreshTicker = null;\n    this.visibilityChangedCallback = null;\n    this.refreshingDeferred = null;\n    this.initializePromise = null;\n    this.detectSessionInUrl = true;\n    this.broadcastChannel = null;\n    const settings = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);\n    this.inMemorySession = null;\n    this.storageKey = settings.storageKey;\n    this.autoRefreshToken = settings.autoRefreshToken;\n    this.persistSession = settings.persistSession;\n    this.storage = settings.storage || localStorageAdapter;\n    this.admin = new GoTrueAdminApi({\n      url: settings.url,\n      headers: settings.headers,\n      fetch: settings.fetch\n    });\n    this.url = settings.url;\n    this.headers = settings.headers;\n    this.fetch = resolveFetch(settings.fetch);\n    this.detectSessionInUrl = settings.detectSessionInUrl;\n    this.mfa = {\n      verify: this._verify.bind(this),\n      enroll: this._enroll.bind(this),\n      unenroll: this._unenroll.bind(this),\n      challenge: this._challenge.bind(this),\n      listFactors: this._listFactors.bind(this),\n      challengeAndVerify: this._challengeAndVerify.bind(this),\n      getAuthenticatorAssuranceLevel: this._getAuthenticatorAssuranceLevel.bind(this)\n    };\n    if (isBrowser() && globalThis.BroadcastChannel && this.persistSession && this.storageKey) {\n      this.broadcastChannel = new globalThis.BroadcastChannel(this.storageKey);\n      this.broadcastChannel.addEventListener(\"message\", (event) => {\n        this._notifyAllSubscribers(event.data.event, event.data.session, false);\n      });\n    }\n    this.initialize();\n  }\n  initialize() {\n    if (!this.initializePromise) {\n      this.initializePromise = this._initialize();\n    }\n    return this.initializePromise;\n  }\n  _initialize() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (this.initializePromise) {\n        return this.initializePromise;\n      }\n      try {\n        if (this.detectSessionInUrl && this._isImplicitGrantFlow()) {\n          const {data, error} = yield this._getSessionFromUrl();\n          if (error) {\n            yield this._removeSession();\n            return {error};\n          }\n          const {session, redirectType} = data;\n          yield this._saveSession(session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", session);\n          if (redirectType === \"recovery\") {\n            this._notifyAllSubscribers(\"PASSWORD_RECOVERY\", session);\n          }\n          return {error: null};\n        }\n        yield this._recoverAndRefresh();\n        return {error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {error};\n        }\n        return {\n          error: new AuthUnknownError(\"Unexpected error during initialization\", error)\n        };\n      } finally {\n        yield this._handleVisibilityChange();\n      }\n    });\n  }\n  signUp(credentials) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        yield this._removeSession();\n        let res;\n        if (\"email\" in credentials) {\n          const {email, password, options} = credentials;\n          res = yield _request(this.fetch, \"POST\", `${this.url}/signup`, {\n            headers: this.headers,\n            redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,\n            body: {\n              email,\n              password,\n              data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : {},\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            },\n            xform: _sessionResponse\n          });\n        } else if (\"phone\" in credentials) {\n          const {phone, password, options} = credentials;\n          res = yield _request(this.fetch, \"POST\", `${this.url}/signup`, {\n            headers: this.headers,\n            body: {\n              phone,\n              password,\n              data: (_b = options === null || options === void 0 ? void 0 : options.data) !== null && _b !== void 0 ? _b : {},\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            },\n            xform: _sessionResponse\n          });\n        } else {\n          throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number and a password\");\n        }\n        const {data, error} = res;\n        if (error || !data) {\n          return {data: {user: null, session: null}, error};\n        }\n        const session = data.session;\n        const user = data.user;\n        if (data.session) {\n          yield this._saveSession(data.session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", session);\n        }\n        return {data: {user, session}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  signInWithPassword(credentials) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        yield this._removeSession();\n        let res;\n        if (\"email\" in credentials) {\n          const {email, password, options} = credentials;\n          res = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=password`, {\n            headers: this.headers,\n            body: {\n              email,\n              password,\n              data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : {},\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            },\n            xform: _sessionResponse\n          });\n        } else if (\"phone\" in credentials) {\n          const {phone, password, options} = credentials;\n          res = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=password`, {\n            headers: this.headers,\n            body: {\n              phone,\n              password,\n              data: (_b = options === null || options === void 0 ? void 0 : options.data) !== null && _b !== void 0 ? _b : {},\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            },\n            xform: _sessionResponse\n          });\n        } else {\n          throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number and a password\");\n        }\n        const {data, error} = res;\n        if (error || !data)\n          return {data: {user: null, session: null}, error};\n        if (data.session) {\n          yield this._saveSession(data.session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n        }\n        return {data, error};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  signInWithOAuth(credentials) {\n    var _a, _b, _c, _d;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      yield this._removeSession();\n      return this._handleProviderSignIn(credentials.provider, {\n        redirectTo: (_a = credentials.options) === null || _a === void 0 ? void 0 : _a.redirectTo,\n        scopes: (_b = credentials.options) === null || _b === void 0 ? void 0 : _b.scopes,\n        queryParams: (_c = credentials.options) === null || _c === void 0 ? void 0 : _c.queryParams,\n        skipBrowserRedirect: (_d = credentials.options) === null || _d === void 0 ? void 0 : _d.skipBrowserRedirect\n      });\n    });\n  }\n  signInWithIdToken(credentials) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      yield this._removeSession();\n      try {\n        const {options, provider, token, nonce} = credentials;\n        const res = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=id_token`, {\n          headers: this.headers,\n          body: {\n            provider,\n            id_token: token,\n            nonce,\n            gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n          },\n          xform: _sessionResponse\n        });\n        const {data, error} = res;\n        if (error || !data)\n          return {data: {user: null, session: null}, error};\n        if (data.session) {\n          yield this._saveSession(data.session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n        }\n        return {data, error};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  signInWithOtp(credentials) {\n    var _a, _b, _c, _d;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        yield this._removeSession();\n        if (\"email\" in credentials) {\n          const {email, options} = credentials;\n          const {error} = yield _request(this.fetch, \"POST\", `${this.url}/otp`, {\n            headers: this.headers,\n            body: {\n              email,\n              data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : {},\n              create_user: (_b = options === null || options === void 0 ? void 0 : options.shouldCreateUser) !== null && _b !== void 0 ? _b : true,\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            },\n            redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo\n          });\n          return {data: {user: null, session: null}, error};\n        }\n        if (\"phone\" in credentials) {\n          const {phone, options} = credentials;\n          const {error} = yield _request(this.fetch, \"POST\", `${this.url}/otp`, {\n            headers: this.headers,\n            body: {\n              phone,\n              data: (_c = options === null || options === void 0 ? void 0 : options.data) !== null && _c !== void 0 ? _c : {},\n              create_user: (_d = options === null || options === void 0 ? void 0 : options.shouldCreateUser) !== null && _d !== void 0 ? _d : true,\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            }\n          });\n          return {data: {user: null, session: null}, error};\n        }\n        throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number.\");\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  verifyOtp(params) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        yield this._removeSession();\n        const {data, error} = yield _request(this.fetch, \"POST\", `${this.url}/verify`, {\n          headers: this.headers,\n          body: Object.assign(Object.assign({}, params), {gotrue_meta_security: {captcha_token: (_a = params.options) === null || _a === void 0 ? void 0 : _a.captchaToken}}),\n          redirectTo: (_b = params.options) === null || _b === void 0 ? void 0 : _b.redirectTo,\n          xform: _sessionResponse\n        });\n        if (error) {\n          throw error;\n        }\n        if (!data) {\n          throw \"An error occurred on token verification.\";\n        }\n        const session = data.session;\n        const user = data.user;\n        if (session === null || session === void 0 ? void 0 : session.access_token) {\n          yield this._saveSession(session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", session);\n        }\n        return {data: {user, session}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  signInWithSSO(params) {\n    var _a, _b, _c;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        yield this._removeSession();\n        return yield _request(this.fetch, \"POST\", `${this.url}/sso`, {\n          body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, \"providerId\" in params ? {provider_id: params.providerId} : null), \"domain\" in params ? {domain: params.domain} : null), {redirect_to: (_b = (_a = params.options) === null || _a === void 0 ? void 0 : _a.redirectTo) !== null && _b !== void 0 ? _b : void 0}), ((_c = params === null || params === void 0 ? void 0 : params.options) === null || _c === void 0 ? void 0 : _c.captchaToken) ? {gotrue_meta_security: {captcha_token: params.options.captchaToken}} : null), {skip_http_redirect: true}),\n          headers: this.headers,\n          xform: _ssoResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  getSession() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      yield this.initializePromise;\n      let currentSession = null;\n      if (this.persistSession) {\n        const maybeSession = yield getItemAsync(this.storage, this.storageKey);\n        if (maybeSession !== null) {\n          if (this._isValidSession(maybeSession)) {\n            currentSession = maybeSession;\n          } else {\n            yield this._removeSession();\n          }\n        }\n      } else {\n        currentSession = this.inMemorySession;\n      }\n      if (!currentSession) {\n        return {data: {session: null}, error: null};\n      }\n      const hasExpired = currentSession.expires_at ? currentSession.expires_at <= Date.now() / 1e3 : false;\n      if (!hasExpired) {\n        return {data: {session: currentSession}, error: null};\n      }\n      const {session, error} = yield this._callRefreshToken(currentSession.refresh_token);\n      if (error) {\n        return {data: {session: null}, error};\n      }\n      return {data: {session}, error: null};\n    });\n  }\n  getUser(jwt) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        if (!jwt) {\n          const {data, error} = yield this.getSession();\n          if (error) {\n            throw error;\n          }\n          jwt = (_b = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : void 0;\n        }\n        return yield _request(this.fetch, \"GET\", `${this.url}/user`, {\n          headers: this.headers,\n          jwt,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  updateUser(attributes, options = {}) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const {data: sessionData, error: sessionError} = yield this.getSession();\n        if (sessionError) {\n          throw sessionError;\n        }\n        if (!sessionData.session) {\n          throw new AuthSessionMissingError();\n        }\n        const session = sessionData.session;\n        const {data, error: userError} = yield _request(this.fetch, \"PUT\", `${this.url}/user`, {\n          headers: this.headers,\n          redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,\n          body: attributes,\n          jwt: session.access_token,\n          xform: _userResponse\n        });\n        if (userError)\n          throw userError;\n        session.user = data.user;\n        yield this._saveSession(session);\n        this._notifyAllSubscribers(\"USER_UPDATED\", session);\n        return {data: {user: session.user}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _decodeJWT(jwt) {\n    return decodeJWTPayload(jwt);\n  }\n  setSession(currentSession) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        if (!currentSession.access_token || !currentSession.refresh_token) {\n          throw new AuthSessionMissingError();\n        }\n        const timeNow = Date.now() / 1e3;\n        let expiresAt2 = timeNow;\n        let hasExpired = true;\n        let session = null;\n        const payload = decodeJWTPayload(currentSession.access_token);\n        if (payload.exp) {\n          expiresAt2 = payload.exp;\n          hasExpired = expiresAt2 <= timeNow;\n        }\n        if (hasExpired) {\n          const {session: refreshedSession, error} = yield this._callRefreshToken(currentSession.refresh_token);\n          if (error) {\n            return {data: {user: null, session: null}, error};\n          }\n          if (!refreshedSession) {\n            return {data: {user: null, session: null}, error: null};\n          }\n          session = refreshedSession;\n        } else {\n          const {data, error} = yield this.getUser(currentSession.access_token);\n          if (error) {\n            throw error;\n          }\n          session = {\n            access_token: currentSession.access_token,\n            refresh_token: currentSession.refresh_token,\n            user: data.user,\n            token_type: \"bearer\",\n            expires_in: expiresAt2 - timeNow,\n            expires_at: expiresAt2\n          };\n          yield this._saveSession(session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", session);\n        }\n        return {data: {user: session.user, session}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {session: null, user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  refreshSession(currentSession) {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        if (!currentSession) {\n          const {data, error: error2} = yield this.getSession();\n          if (error2) {\n            throw error2;\n          }\n          currentSession = (_a = data.session) !== null && _a !== void 0 ? _a : void 0;\n        }\n        if (!(currentSession === null || currentSession === void 0 ? void 0 : currentSession.refresh_token)) {\n          throw new AuthSessionMissingError();\n        }\n        const {session, error} = yield this._callRefreshToken(currentSession.refresh_token);\n        if (error) {\n          return {data: {user: null, session: null}, error};\n        }\n        if (!session) {\n          return {data: {user: null, session: null}, error: null};\n        }\n        return {data: {user: session.user, session}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _getSessionFromUrl() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        if (!isBrowser())\n          throw new AuthImplicitGrantRedirectError(\"No browser detected.\");\n        if (!this._isImplicitGrantFlow()) {\n          throw new AuthImplicitGrantRedirectError(\"Not a valid implicit grant flow url.\");\n        }\n        const error_description = getParameterByName(\"error_description\");\n        if (error_description) {\n          const error_code = getParameterByName(\"error_code\");\n          if (!error_code)\n            throw new AuthImplicitGrantRedirectError(\"No error_code detected.\");\n          const error2 = getParameterByName(\"error\");\n          if (!error2)\n            throw new AuthImplicitGrantRedirectError(\"No error detected.\");\n          throw new AuthImplicitGrantRedirectError(error_description, {error: error2, code: error_code});\n        }\n        const provider_token = getParameterByName(\"provider_token\");\n        const provider_refresh_token = getParameterByName(\"provider_refresh_token\");\n        const access_token = getParameterByName(\"access_token\");\n        if (!access_token)\n          throw new AuthImplicitGrantRedirectError(\"No access_token detected.\");\n        const expires_in = getParameterByName(\"expires_in\");\n        if (!expires_in)\n          throw new AuthImplicitGrantRedirectError(\"No expires_in detected.\");\n        const refresh_token = getParameterByName(\"refresh_token\");\n        if (!refresh_token)\n          throw new AuthImplicitGrantRedirectError(\"No refresh_token detected.\");\n        const token_type = getParameterByName(\"token_type\");\n        if (!token_type)\n          throw new AuthImplicitGrantRedirectError(\"No token_type detected.\");\n        const timeNow = Math.round(Date.now() / 1e3);\n        const expires_at = timeNow + parseInt(expires_in);\n        const {data, error} = yield this.getUser(access_token);\n        if (error)\n          throw error;\n        const user = data.user;\n        const session = {\n          provider_token,\n          provider_refresh_token,\n          access_token,\n          expires_in: parseInt(expires_in),\n          expires_at,\n          refresh_token,\n          token_type,\n          user\n        };\n        const redirectType = getParameterByName(\"type\");\n        window.location.hash = \"\";\n        return {data: {session, redirectType}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {session: null, redirectType: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _isImplicitGrantFlow() {\n    return isBrowser() && (Boolean(getParameterByName(\"access_token\")) || Boolean(getParameterByName(\"error_description\")));\n  }\n  signOut() {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const {data, error: sessionError} = yield this.getSession();\n      if (sessionError) {\n        return {error: sessionError};\n      }\n      const accessToken = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token;\n      if (accessToken) {\n        const {error} = yield this.admin.signOut(accessToken);\n        if (error) {\n          if (!(isAuthApiError(error) && (error.status === 404 || error.status === 401))) {\n            return {error};\n          }\n        }\n      }\n      yield this._removeSession();\n      this._notifyAllSubscribers(\"SIGNED_OUT\", null);\n      return {error: null};\n    });\n  }\n  onAuthStateChange(callback) {\n    const id = uuid();\n    const subscription = {\n      id,\n      callback,\n      unsubscribe: () => {\n        this.stateChangeEmitters.delete(id);\n      }\n    };\n    this.stateChangeEmitters.set(id, subscription);\n    return {data: {subscription}};\n  }\n  resetPasswordForEmail(email, options = {}) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"POST\", `${this.url}/recover`, {\n          body: {email, gotrue_meta_security: {captcha_token: options.captchaToken}},\n          headers: this.headers,\n          redirectTo: options.redirectTo\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _refreshAccessToken(refreshToken) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const startedAt = Date.now();\n        return yield retryable((attempt) => __awaiter$3(this, void 0, void 0, function* () {\n          yield sleep(attempt * 200);\n          return yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=refresh_token`, {\n            body: {refresh_token: refreshToken},\n            headers: this.headers,\n            xform: _sessionResponse\n          });\n        }), (attempt, _, result) => result && result.error && result.error instanceof AuthRetryableFetchError && Date.now() + (attempt + 1) * 200 - startedAt < AUTO_REFRESH_TICK_DURATION);\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {session: null, user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _isValidSession(maybeSession) {\n    const isValidSession = typeof maybeSession === \"object\" && maybeSession !== null && \"access_token\" in maybeSession && \"refresh_token\" in maybeSession && \"expires_at\" in maybeSession;\n    return isValidSession;\n  }\n  _handleProviderSignIn(provider, options = {}) {\n    const url = this._getUrlForProvider(provider, {\n      redirectTo: options.redirectTo,\n      scopes: options.scopes,\n      queryParams: options.queryParams\n    });\n    if (isBrowser() && !options.skipBrowserRedirect) {\n      window.location.assign(url);\n    }\n    return {data: {provider, url}, error: null};\n  }\n  _recoverAndRefresh() {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const currentSession = yield getItemAsync(this.storage, this.storageKey);\n        if (!this._isValidSession(currentSession)) {\n          if (currentSession !== null) {\n            yield this._removeSession();\n          }\n          return;\n        }\n        const timeNow = Math.round(Date.now() / 1e3);\n        if (((_a = currentSession.expires_at) !== null && _a !== void 0 ? _a : Infinity) < timeNow + EXPIRY_MARGIN) {\n          if (this.autoRefreshToken && currentSession.refresh_token) {\n            const {error} = yield this._callRefreshToken(currentSession.refresh_token);\n            if (error) {\n              console.log(error.message);\n              yield this._removeSession();\n            }\n          } else {\n            yield this._removeSession();\n          }\n        } else {\n          if (this.persistSession) {\n            yield this._saveSession(currentSession);\n          }\n          this._notifyAllSubscribers(\"SIGNED_IN\", currentSession);\n        }\n      } catch (err) {\n        console.error(err);\n        return;\n      }\n    });\n  }\n  _callRefreshToken(refreshToken) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (this.refreshingDeferred) {\n        return this.refreshingDeferred.promise;\n      }\n      try {\n        this.refreshingDeferred = new Deferred();\n        if (!refreshToken) {\n          throw new AuthSessionMissingError();\n        }\n        const {data, error} = yield this._refreshAccessToken(refreshToken);\n        if (error)\n          throw error;\n        if (!data.session)\n          throw new AuthSessionMissingError();\n        yield this._saveSession(data.session);\n        this._notifyAllSubscribers(\"TOKEN_REFRESHED\", data.session);\n        const result = {session: data.session, error: null};\n        this.refreshingDeferred.resolve(result);\n        return result;\n      } catch (error) {\n        if (isAuthError(error)) {\n          const result = {session: null, error};\n          (_a = this.refreshingDeferred) === null || _a === void 0 ? void 0 : _a.resolve(result);\n          return result;\n        }\n        (_b = this.refreshingDeferred) === null || _b === void 0 ? void 0 : _b.reject(error);\n        throw error;\n      } finally {\n        this.refreshingDeferred = null;\n      }\n    });\n  }\n  _notifyAllSubscribers(event, session, broadcast = true) {\n    if (this.broadcastChannel && broadcast) {\n      this.broadcastChannel.postMessage({event, session});\n    }\n    this.stateChangeEmitters.forEach((x) => x.callback(event, session));\n  }\n  _saveSession(session) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (!this.persistSession) {\n        this.inMemorySession = session;\n      }\n      if (this.persistSession && session.expires_at) {\n        yield this._persistSession(session);\n      }\n    });\n  }\n  _persistSession(currentSession) {\n    return setItemAsync(this.storage, this.storageKey, currentSession);\n  }\n  _removeSession() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (this.persistSession) {\n        yield removeItemAsync(this.storage, this.storageKey);\n      } else {\n        this.inMemorySession = null;\n      }\n    });\n  }\n  _removeVisibilityChangedCallback() {\n    const callback = this.visibilityChangedCallback;\n    this.visibilityChangedCallback = null;\n    try {\n      if (callback && isBrowser() && (window === null || window === void 0 ? void 0 : window.removeEventListener)) {\n        window.removeEventListener(\"visibilitychange\", callback);\n      }\n    } catch (e) {\n      console.error(\"removing visibilitychange callback failed\", e);\n    }\n  }\n  _startAutoRefresh() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      yield this._stopAutoRefresh();\n      const ticker = setInterval(() => this._autoRefreshTokenTick(), AUTO_REFRESH_TICK_DURATION);\n      this.autoRefreshTicker = ticker;\n      if (ticker && typeof ticker === \"object\" && typeof ticker.unref === \"function\") {\n        ticker.unref();\n      }\n      yield this._autoRefreshTokenTick();\n    });\n  }\n  _stopAutoRefresh() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const ticker = this.autoRefreshTicker;\n      this.autoRefreshTicker = null;\n      if (ticker) {\n        clearInterval(ticker);\n      }\n    });\n  }\n  startAutoRefresh() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      this._removeVisibilityChangedCallback();\n      yield this._startAutoRefresh();\n    });\n  }\n  stopAutoRefresh() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      this._removeVisibilityChangedCallback();\n      yield this._stopAutoRefresh();\n    });\n  }\n  _autoRefreshTokenTick() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const now = Date.now();\n      try {\n        const {data: {session}} = yield this.getSession();\n        if (!session || !session.refresh_token || !session.expires_at) {\n          return;\n        }\n        const expiresInTicks = Math.floor((session.expires_at * 1e3 - now) / AUTO_REFRESH_TICK_DURATION);\n        if (expiresInTicks < AUTO_REFRESH_TICK_THRESHOLD) {\n          yield this._callRefreshToken(session.refresh_token);\n        }\n      } catch (e) {\n        console.error(\"Auto refresh tick failed with error. This is likely a transient error.\", e);\n      }\n    });\n  }\n  _handleVisibilityChange() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (!isBrowser() || !(window === null || window === void 0 ? void 0 : window.addEventListener)) {\n        if (this.autoRefreshToken) {\n          this.startAutoRefresh();\n        }\n        return false;\n      }\n      try {\n        this.visibilityChangedCallback = () => __awaiter$3(this, void 0, void 0, function* () {\n          return yield this._onVisibilityChanged(false);\n        });\n        window === null || window === void 0 ? void 0 : window.addEventListener(\"visibilitychange\", this.visibilityChangedCallback);\n        yield this._onVisibilityChanged(true);\n      } catch (error) {\n        console.error(\"_handleVisibilityChange\", error);\n      }\n    });\n  }\n  _onVisibilityChanged(isInitial) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (document.visibilityState === \"visible\") {\n        if (!isInitial) {\n          yield this.initializePromise;\n          yield this._recoverAndRefresh();\n        }\n        if (this.autoRefreshToken) {\n          this._startAutoRefresh();\n        }\n      } else if (document.visibilityState === \"hidden\") {\n        if (this.autoRefreshToken) {\n          this._stopAutoRefresh();\n        }\n      }\n    });\n  }\n  _getUrlForProvider(provider, options) {\n    const urlParams = [`provider=${encodeURIComponent(provider)}`];\n    if (options === null || options === void 0 ? void 0 : options.redirectTo) {\n      urlParams.push(`redirect_to=${encodeURIComponent(options.redirectTo)}`);\n    }\n    if (options === null || options === void 0 ? void 0 : options.scopes) {\n      urlParams.push(`scopes=${encodeURIComponent(options.scopes)}`);\n    }\n    if (options === null || options === void 0 ? void 0 : options.queryParams) {\n      const query = new URLSearchParams(options.queryParams);\n      urlParams.push(query.toString());\n    }\n    return `${this.url}/authorize?${urlParams.join(\"&\")}`;\n  }\n  _unenroll(params) {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const {data: sessionData, error: sessionError} = yield this.getSession();\n        if (sessionError) {\n          return {data: null, error: sessionError};\n        }\n        return yield _request(this.fetch, \"DELETE\", `${this.url}/factors/${params.factorId}`, {\n          headers: this.headers,\n          jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _enroll(params) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const {data: sessionData, error: sessionError} = yield this.getSession();\n        if (sessionError) {\n          return {data: null, error: sessionError};\n        }\n        const {data, error} = yield _request(this.fetch, \"POST\", `${this.url}/factors`, {\n          body: {\n            friendly_name: params.friendlyName,\n            factor_type: params.factorType,\n            issuer: params.issuer\n          },\n          headers: this.headers,\n          jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n        });\n        if (error) {\n          return {data: null, error};\n        }\n        if ((_b = data === null || data === void 0 ? void 0 : data.totp) === null || _b === void 0 ? void 0 : _b.qr_code) {\n          data.totp.qr_code = `data:image/svg+xml;utf-8,${data.totp.qr_code}`;\n        }\n        return {data, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _verify(params) {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const {data: sessionData, error: sessionError} = yield this.getSession();\n        if (sessionError) {\n          return {data: null, error: sessionError};\n        }\n        const {data, error} = yield _request(this.fetch, \"POST\", `${this.url}/factors/${params.factorId}/verify`, {\n          body: {code: params.code, challenge_id: params.challengeId},\n          headers: this.headers,\n          jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n        });\n        if (error) {\n          return {data: null, error};\n        }\n        yield this._saveSession(Object.assign({expires_at: Math.round(Date.now() / 1e3) + data.expires_in}, data));\n        this._notifyAllSubscribers(\"MFA_CHALLENGE_VERIFIED\", data);\n        return {data, error};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _challenge(params) {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const {data: sessionData, error: sessionError} = yield this.getSession();\n        if (sessionError) {\n          return {data: null, error: sessionError};\n        }\n        return yield _request(this.fetch, \"POST\", `${this.url}/factors/${params.factorId}/challenge`, {\n          headers: this.headers,\n          jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _challengeAndVerify(params) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const {data: challengeData, error: challengeError} = yield this._challenge({\n        factorId: params.factorId\n      });\n      if (challengeError) {\n        return {data: null, error: challengeError};\n      }\n      return yield this._verify({\n        factorId: params.factorId,\n        challengeId: challengeData.id,\n        code: params.code\n      });\n    });\n  }\n  _listFactors() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const {data: {user}, error: userError} = yield this.getUser();\n      if (userError) {\n        return {data: null, error: userError};\n      }\n      const factors = (user === null || user === void 0 ? void 0 : user.factors) || [];\n      const totp = factors.filter((factor) => factor.factor_type === \"totp\" && factor.status === \"verified\");\n      return {\n        data: {\n          all: factors,\n          totp\n        },\n        error: null\n      };\n    });\n  }\n  _getAuthenticatorAssuranceLevel() {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const {data: {session}, error: sessionError} = yield this.getSession();\n      if (sessionError) {\n        return {data: null, error: sessionError};\n      }\n      if (!session) {\n        return {\n          data: {currentLevel: null, nextLevel: null, currentAuthenticationMethods: []},\n          error: null\n        };\n      }\n      const payload = this._decodeJWT(session.access_token);\n      let currentLevel = null;\n      if (payload.aal) {\n        currentLevel = payload.aal;\n      }\n      let nextLevel = currentLevel;\n      const verifiedFactors = (_b = (_a = session.user.factors) === null || _a === void 0 ? void 0 : _a.filter((factor) => factor.status === \"verified\")) !== null && _b !== void 0 ? _b : [];\n      if (verifiedFactors.length > 0) {\n        nextLevel = \"aal2\";\n      }\n      const currentAuthenticationMethods = payload.amr || [];\n      return {data: {currentLevel, nextLevel, currentAuthenticationMethods}, error: null};\n    });\n  }\n}\nexport {AuthApiError, AuthError, AuthImplicitGrantRedirectError, AuthInvalidCredentialsError, AuthRetryableFetchError, AuthSessionMissingError, AuthUnknownError, CustomAuthError, GoTrueAdminApi, GoTrueClient, isAuthApiError, isAuthError};\nexport default null;\n","import {FunctionsClient} from \"/-/@supabase/functions-js@v2.1.0-RnZ2mgdVtYJw6BDBGbAJ/dist=es2019,mode=imports/optimized/@supabase/functions-js.js\";\nexport {FunctionsError, FunctionsFetchError, FunctionsHttpError, FunctionsRelayError} from \"/-/@supabase/functions-js@v2.1.0-RnZ2mgdVtYJw6BDBGbAJ/dist=es2019,mode=imports/optimized/@supabase/functions-js.js\";\nimport {PostgrestClient} from \"/-/@supabase/postgrest-js@v1.4.1-M6VL6LW6WNlsBWTBZFbq/dist=es2019,mode=imports/optimized/@supabase/postgrest-js.js\";\nimport {RealtimeClient} from \"/-/@supabase/realtime-js@v2.6.0-KChn2jQyrOOE0GhQ08fE/dist=es2019,mode=imports/optimized/@supabase/realtime-js.js\";\nexport * from \"/-/@supabase/realtime-js@v2.6.0-KChn2jQyrOOE0GhQ08fE/dist=es2019,mode=imports/optimized/@supabase/realtime-js.js\";\nimport {StorageClient} from \"/-/@supabase/storage-js@v2.3.1-BHfs8j7jU6qHoJRSHZPL/dist=es2019,mode=imports/optimized/@supabase/storage-js.js\";\nimport crossFetch from \"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\";\nconst {Headers: Headers$1} = crossFetch;\n;\nimport {GoTrueClient} from \"/-/@supabase/gotrue-js@v2.12.1-U9V71OI5x9GUonOWwkxZ/dist=es2019,mode=imports/optimized/@supabase/gotrue-js.js\";\nexport * from \"/-/@supabase/gotrue-js@v2.12.1-U9V71OI5x9GUonOWwkxZ/dist=es2019,mode=imports/optimized/@supabase/gotrue-js.js\";\nconst version = \"2.10.0\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `supabase-js/${version}`};\nvar __awaiter = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst resolveFetch = (customFetch) => {\n  let _fetch;\n  if (customFetch) {\n    _fetch = customFetch;\n  } else if (typeof fetch === \"undefined\") {\n    _fetch = crossFetch;\n  } else {\n    _fetch = fetch;\n  }\n  return (...args) => _fetch(...args);\n};\nconst resolveHeadersConstructor = () => {\n  if (typeof Headers === \"undefined\") {\n    return Headers$1;\n  }\n  return Headers;\n};\nconst fetchWithAuth = (supabaseKey, getAccessToken, customFetch) => {\n  const fetch2 = resolveFetch(customFetch);\n  const HeadersConstructor = resolveHeadersConstructor();\n  return (input, init) => __awaiter(void 0, void 0, void 0, function* () {\n    var _a;\n    const accessToken = (_a = yield getAccessToken()) !== null && _a !== void 0 ? _a : supabaseKey;\n    let headers = new HeadersConstructor(init === null || init === void 0 ? void 0 : init.headers);\n    if (!headers.has(\"apikey\")) {\n      headers.set(\"apikey\", supabaseKey);\n    }\n    if (!headers.has(\"Authorization\")) {\n      headers.set(\"Authorization\", `Bearer ${accessToken}`);\n    }\n    return fetch2(input, Object.assign(Object.assign({}, init), {headers}));\n  });\n};\nfunction stripTrailingSlash(url) {\n  return url.replace(/\\/$/, \"\");\n}\nfunction applySettingDefaults(options, defaults) {\n  const {db: dbOptions, auth: authOptions, realtime: realtimeOptions, global: globalOptions} = options;\n  const {db: DEFAULT_DB_OPTIONS2, auth: DEFAULT_AUTH_OPTIONS2, realtime: DEFAULT_REALTIME_OPTIONS2, global: DEFAULT_GLOBAL_OPTIONS2} = defaults;\n  return {\n    db: Object.assign(Object.assign({}, DEFAULT_DB_OPTIONS2), dbOptions),\n    auth: Object.assign(Object.assign({}, DEFAULT_AUTH_OPTIONS2), authOptions),\n    realtime: Object.assign(Object.assign({}, DEFAULT_REALTIME_OPTIONS2), realtimeOptions),\n    global: Object.assign(Object.assign({}, DEFAULT_GLOBAL_OPTIONS2), globalOptions)\n  };\n}\nclass SupabaseAuthClient extends GoTrueClient {\n  constructor(options) {\n    super(options);\n  }\n}\nvar __awaiter$1 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst DEFAULT_GLOBAL_OPTIONS = {\n  headers: DEFAULT_HEADERS\n};\nconst DEFAULT_DB_OPTIONS = {\n  schema: \"public\"\n};\nconst DEFAULT_AUTH_OPTIONS = {\n  autoRefreshToken: true,\n  persistSession: true,\n  detectSessionInUrl: true\n};\nconst DEFAULT_REALTIME_OPTIONS = {};\nclass SupabaseClient {\n  constructor(supabaseUrl, supabaseKey, options) {\n    var _a, _b, _c, _d, _e, _f, _g, _h;\n    this.supabaseUrl = supabaseUrl;\n    this.supabaseKey = supabaseKey;\n    if (!supabaseUrl)\n      throw new Error(\"supabaseUrl is required.\");\n    if (!supabaseKey)\n      throw new Error(\"supabaseKey is required.\");\n    const _supabaseUrl = stripTrailingSlash(supabaseUrl);\n    this.realtimeUrl = `${_supabaseUrl}/realtime/v1`.replace(/^http/i, \"ws\");\n    this.authUrl = `${_supabaseUrl}/auth/v1`;\n    this.storageUrl = `${_supabaseUrl}/storage/v1`;\n    const isPlatform = _supabaseUrl.match(/(supabase\\.co)|(supabase\\.in)/);\n    if (isPlatform) {\n      const urlParts = _supabaseUrl.split(\".\");\n      this.functionsUrl = `${urlParts[0]}.functions.${urlParts[1]}.${urlParts[2]}`;\n    } else {\n      this.functionsUrl = `${_supabaseUrl}/functions/v1`;\n    }\n    const defaultStorageKey = `sb-${new URL(this.authUrl).hostname.split(\".\")[0]}-auth-token`;\n    const DEFAULTS = {\n      db: DEFAULT_DB_OPTIONS,\n      realtime: DEFAULT_REALTIME_OPTIONS,\n      auth: Object.assign(Object.assign({}, DEFAULT_AUTH_OPTIONS), {storageKey: defaultStorageKey}),\n      global: DEFAULT_GLOBAL_OPTIONS\n    };\n    const settings = applySettingDefaults(options !== null && options !== void 0 ? options : {}, DEFAULTS);\n    this.storageKey = (_b = (_a = settings.auth) === null || _a === void 0 ? void 0 : _a.storageKey) !== null && _b !== void 0 ? _b : \"\";\n    this.headers = (_d = (_c = settings.global) === null || _c === void 0 ? void 0 : _c.headers) !== null && _d !== void 0 ? _d : {};\n    this.auth = this._initSupabaseAuthClient((_e = settings.auth) !== null && _e !== void 0 ? _e : {}, this.headers, (_f = settings.global) === null || _f === void 0 ? void 0 : _f.fetch);\n    this.fetch = fetchWithAuth(supabaseKey, this._getAccessToken.bind(this), (_g = settings.global) === null || _g === void 0 ? void 0 : _g.fetch);\n    this.realtime = this._initRealtimeClient(Object.assign({headers: this.headers}, settings.realtime));\n    this.rest = new PostgrestClient(`${_supabaseUrl}/rest/v1`, {\n      headers: this.headers,\n      schema: (_h = settings.db) === null || _h === void 0 ? void 0 : _h.schema,\n      fetch: this.fetch\n    });\n    this._listenForAuthEvents();\n  }\n  get functions() {\n    return new FunctionsClient(this.functionsUrl, {\n      headers: this.headers,\n      customFetch: this.fetch\n    });\n  }\n  get storage() {\n    return new StorageClient(this.storageUrl, this.headers, this.fetch);\n  }\n  from(relation) {\n    return this.rest.from(relation);\n  }\n  rpc(fn, args = {}, options) {\n    return this.rest.rpc(fn, args, options);\n  }\n  channel(name, opts = {config: {}}) {\n    return this.realtime.channel(name, opts);\n  }\n  getChannels() {\n    return this.realtime.getChannels();\n  }\n  removeChannel(channel) {\n    return this.realtime.removeChannel(channel);\n  }\n  removeAllChannels() {\n    return this.realtime.removeAllChannels();\n  }\n  _getAccessToken() {\n    var _a, _b;\n    return __awaiter$1(this, void 0, void 0, function* () {\n      const {data} = yield this.auth.getSession();\n      return (_b = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : null;\n    });\n  }\n  _initSupabaseAuthClient({autoRefreshToken, persistSession, detectSessionInUrl, storage, storageKey}, headers, fetch2) {\n    const authHeaders = {\n      Authorization: `Bearer ${this.supabaseKey}`,\n      apikey: `${this.supabaseKey}`\n    };\n    return new SupabaseAuthClient({\n      url: this.authUrl,\n      headers: Object.assign(Object.assign({}, authHeaders), headers),\n      storageKey,\n      autoRefreshToken,\n      persistSession,\n      detectSessionInUrl,\n      storage,\n      fetch: fetch2\n    });\n  }\n  _initRealtimeClient(options) {\n    return new RealtimeClient(this.realtimeUrl, Object.assign(Object.assign({}, options), {params: Object.assign({apikey: this.supabaseKey}, options === null || options === void 0 ? void 0 : options.params)}));\n  }\n  _listenForAuthEvents() {\n    let data = this.auth.onAuthStateChange((event, session) => {\n      this._handleTokenChanged(event, session === null || session === void 0 ? void 0 : session.access_token, \"CLIENT\");\n    });\n    return data;\n  }\n  _handleTokenChanged(event, token, source) {\n    if ((event === \"TOKEN_REFRESHED\" || event === \"SIGNED_IN\") && this.changedAccessToken !== token) {\n      this.realtime.setAuth(token !== null && token !== void 0 ? token : null);\n      this.changedAccessToken = token;\n    } else if (event === \"SIGNED_OUT\" || event === \"USER_DELETED\") {\n      this.realtime.setAuth(this.supabaseKey);\n      if (source == \"STORAGE\")\n        this.auth.signOut();\n      this.changedAccessToken = void 0;\n    }\n  }\n}\nconst createClient = (supabaseUrl, supabaseKey, options) => {\n  return new SupabaseClient(supabaseUrl, supabaseKey, options);\n};\nexport {SupabaseClient, createClient};\nexport default null;\n","/*\n * Skypack CDN - @supabase/supabase-js@2.10.0\n *\n * Learn more:\n *   📙 Package Documentation: https://www.skypack.dev/view/@supabase/supabase-js\n *   📘 Skypack Documentation: https://www.skypack.dev/docs\n *\n * Pinned URL: (Optimized for Production)\n *   ▶️ Normal: https://cdn.skypack.dev/pin/@supabase/supabase-js@v2.10.0-iuC42NKMzc0WgF6sPBaq/mode=imports/optimized/@supabase/supabase-js.js\n *   ⏩ Minified: https://cdn.skypack.dev/pin/@supabase/supabase-js@v2.10.0-iuC42NKMzc0WgF6sPBaq/mode=imports,min/optimized/@supabase/supabase-js.js\n *\n */\n\n// Browser-Optimized Imports (Don't directly import the URLs below in your application!)\nexport * from '/-/@supabase/supabase-js@v2.10.0-iuC42NKMzc0WgF6sPBaq/dist=es2019,mode=imports/optimized/@supabase/supabase-js.js';\nexport {default} from '/-/@supabase/supabase-js@v2.10.0-iuC42NKMzc0WgF6sPBaq/dist=es2019,mode=imports/optimized/@supabase/supabase-js.js';\n","import {\n  triggerConversionAPI,\n  useTailwind\n} from \"./chunk-XHUQFNFZ.mjs\";\nimport {\n  CLERK_SRC,\n  PUBLISHABLE_KEY,\n  showDebug\n} from \"./chunk-HQBHGXH5.mjs\";\nimport {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\nimport {\n  __async,\n  __spreadValues\n} from \"./chunk-JWK35I2R.mjs\";\n\n// src/auth/Init.tsx\nimport { useEffect, useLayoutEffect, useState } from \"react\";\nimport { ControlType } from \"framer\";\nimport { createClient } from \"https://cdn.skypack.dev/@supabase/supabase-js@2.10.0\";\n\n// node_modules/.pnpm/@clerk+localizations@2.8.1/node_modules/@clerk/localizations/dist/index.mjs\nvar nlNL = {\n  locale: \"nl-NL\",\n  backButton: \"Terug\",\n  badge__default: \"Standaard\",\n  badge__otherImpersonatorDevice: \"Ander immitatie apparaat\",\n  badge__primary: \"Hoofd\",\n  badge__requiresAction: \"Actie nodig\",\n  badge__thisDevice: \"Dit apparaat\",\n  badge__unverified: \"Ongeverifieerd\",\n  badge__userDevice: \"Gebruikersapparaat\",\n  badge__you: \"Jij\",\n  createOrganization: {\n    formButtonSubmit: \"Maak organisatie aan\",\n    invitePage: {\n      formButtonReset: \"Overslaan\"\n    },\n    title: \"Organisatie aanmaken\"\n  },\n  dates: {\n    lastDay: \"Gisteren om {{ date | timeString('nl-NL') }}\",\n    next6Days: \"{{ date | weekday('nl-NL','long') }} om {{ date | timeString('nl-NL') }}\",\n    nextDay: \"Morgen om {{ date | timeString('nl-NL') }}\",\n    numeric: \"{{ date | numeric('nl-NL') }}\",\n    previous6Days: \"Vorige {{ date | weekday('nl-NL','long') }} om {{ date | timeString('nl-NL') }}\",\n    sameDay: \"Vandaag om {{ date | timeString('nl-NL') }}\"\n  },\n  dividerText: \"or\",\n  footerActionLink__useAnotherMethod: \"Een andere methode gebruiken\",\n  footerPageLink__help: \"Help\",\n  footerPageLink__privacy: \"Privacy\",\n  footerPageLink__terms: \"Voorwaarden\",\n  formButtonPrimary: \"Doorgaan\",\n  formButtonPrimary__verify: \"Verify\",\n  formFieldAction__forgotPassword: \"Wachtwoord vergeten?\",\n  formFieldError__matchingPasswords: \"Passwords match.\",\n  formFieldError__notMatchingPasswords: \"Passwords don't match.\",\n  formFieldError__verificationLinkExpired: \"The verification link expired. Please request a new link.\",\n  formFieldHintText__optional: \"Optioneel\",\n  formFieldHintText__slug: \"A slug is a human-readable ID that must be unique. It\\u2019s often used in URLs.\",\n  formFieldInputPlaceholder__backupCode: \"\",\n  formFieldInputPlaceholder__confirmDeletionUserAccount: \"Delete account\",\n  formFieldInputPlaceholder__emailAddress: \"\",\n  formFieldInputPlaceholder__emailAddress_username: \"\",\n  formFieldInputPlaceholder__emailAddresses: \"Typ of plak \\xE9\\xE9n of meerdere emailadressen, gescheiden door spaties of komma's.\",\n  formFieldInputPlaceholder__firstName: \"\",\n  formFieldInputPlaceholder__lastName: \"\",\n  formFieldInputPlaceholder__organizationDomain: \"\",\n  formFieldInputPlaceholder__organizationDomainEmailAddress: \"\",\n  formFieldInputPlaceholder__organizationName: \"\",\n  formFieldInputPlaceholder__organizationSlug: \"\",\n  formFieldInputPlaceholder__password: \"\",\n  formFieldInputPlaceholder__phoneNumber: \"\",\n  formFieldInputPlaceholder__username: \"\",\n  formFieldLabel__automaticInvitations: \"Enable automatic invitations for this domain\",\n  formFieldLabel__backupCode: \"Backupcode\",\n  formFieldLabel__confirmDeletion: \"Confirmation\",\n  formFieldLabel__confirmPassword: \"Wachtwoord bevestigen\",\n  formFieldLabel__currentPassword: \"Current password\",\n  formFieldLabel__emailAddress: \"E-mailadres\",\n  formFieldLabel__emailAddress_username: \"E-mailadres of gebruikersnaam\",\n  formFieldLabel__emailAddresses: \"E-mailadressen\",\n  formFieldLabel__firstName: \"Voornaam\",\n  formFieldLabel__lastName: \"Achternaam\",\n  formFieldLabel__newPassword: \"Nieuw wachtwoord\",\n  formFieldLabel__organizationDomain: \"Domain\",\n  formFieldLabel__organizationDomainDeletePending: \"Delete pending invitations and suggestions\",\n  formFieldLabel__organizationDomainEmailAddress: \"Verification email address\",\n  formFieldLabel__organizationDomainEmailAddressDescription: \"Enter an email address under this domain to receive a code and verify this domain.\",\n  formFieldLabel__organizationName: \"Organisatienaam\",\n  formFieldLabel__organizationSlug: \"Slug\",\n  formFieldLabel__passkeyName: void 0,\n  formFieldLabel__password: \"Wachtwoord\",\n  formFieldLabel__phoneNumber: \"Telefoonnummer\",\n  formFieldLabel__role: \"Rol\",\n  formFieldLabel__signOutOfOtherSessions: \"Sign out of all other devices\",\n  formFieldLabel__username: \"Gebruikersnaam\",\n  impersonationFab: {\n    action__signOut: \"Uitloggen\",\n    title: \"Ingelogd als {{identifier}}\"\n  },\n  maintenanceMode: void 0,\n  membershipRole__admin: \"Admin\",\n  membershipRole__basicMember: \"Lid\",\n  membershipRole__guestMember: \"Gast\",\n  organizationList: {\n    action__createOrganization: \"Create organization\",\n    action__invitationAccept: \"Join\",\n    action__suggestionsAccept: \"Request to join\",\n    createOrganization: \"Create Organization\",\n    invitationAcceptedLabel: \"Joined\",\n    subtitle: \"to continue to {{applicationName}}\",\n    suggestionsAcceptedLabel: \"Pending approval\",\n    title: \"Choose an account\",\n    titleWithoutPersonal: \"Choose an organization\"\n  },\n  organizationProfile: {\n    badge__automaticInvitation: \"Automatic invitations\",\n    badge__automaticSuggestion: \"Automatic suggestions\",\n    badge__manualInvitation: \"No automatic enrollment\",\n    badge__unverified: \"Unverified\",\n    createDomainPage: {\n      subtitle: \"Add the domain to verify. Users with email addresses at this domain can join the organization automatically or request to join.\",\n      title: \"Add domain\"\n    },\n    invitePage: {\n      detailsTitle__inviteFailed: \"De uitnodigingen konden niet verzonden worden. Los het volgende op en probeer het opnieuw:\",\n      formButtonPrimary__continue: \"Uitnodigingen verzenden\",\n      selectDropdown__role: \"Select role\",\n      subtitle: \"Nodig nieuwe leden uit voor deze organisatie\",\n      successMessage: \"Uitnodigingen succesvol verzonden\",\n      title: \"Leden uitnodigen\"\n    },\n    membersPage: {\n      action__invite: \"Uitnodigen\",\n      activeMembersTab: {\n        menuAction__remove: \"Verwijder lid\",\n        tableHeader__actions: \"\",\n        tableHeader__joined: \"Toegetreden\",\n        tableHeader__role: \"Rol\",\n        tableHeader__user: \"Gebruiker\"\n      },\n      detailsTitle__emptyRow: \"Geen leden gevonden\",\n      invitationsTab: {\n        autoInvitations: {\n          headerSubtitle: \"Invite users by connecting an email domain with your organization. Anyone who signs up with a matching email domain will be able to join the organization anytime.\",\n          headerTitle: \"Automatic invitations\",\n          primaryButton: \"Manage verified domains\"\n        },\n        table__emptyRow: \"No invitations to display\"\n      },\n      invitedMembersTab: {\n        menuAction__revoke: \"Uitnodiging intrekken\",\n        tableHeader__invited: \"Uitgenodigd\"\n      },\n      requestsTab: {\n        autoSuggestions: {\n          headerSubtitle: \"Users who sign up with a matching email domain, will be able to see a suggestion to request to join your organization.\",\n          headerTitle: \"Automatic suggestions\",\n          primaryButton: \"Manage verified domains\"\n        },\n        menuAction__approve: \"Approve\",\n        menuAction__reject: \"Reject\",\n        tableHeader__requested: \"Requested access\",\n        table__emptyRow: \"No requests to display\"\n      },\n      start: {\n        headerTitle__invitations: \"Invitations\",\n        headerTitle__members: \"Members\",\n        headerTitle__requests: \"Requests\"\n      }\n    },\n    navbar: {\n      description: \"Manage your organization.\",\n      general: \"General\",\n      members: \"Members\",\n      title: \"Organization\"\n    },\n    profilePage: {\n      dangerSection: {\n        deleteOrganization: {\n          actionDescription: 'Type \"{{organizationName}}\" below to continue.',\n          messageLine1: \"Are you sure you want to delete this organization?\",\n          messageLine2: \"This action is permanent and irreversible.\",\n          successMessage: \"You have deleted the organization.\",\n          title: \"Delete organization\"\n        },\n        leaveOrganization: {\n          actionDescription: 'Type \"{{organizationName}}\" below to continue.',\n          messageLine1: \"Weet je zeker dat je deze organisatie wilt verlaten? Je zult toegang verliezen tot deze organisatie en haar applicaties.\",\n          messageLine2: \"Deze actie is permanent en onomkeerbaar.\",\n          successMessage: \"Je hebt deze organisatie verlaten.\",\n          title: \"Verlaat organisatie\"\n        },\n        title: \"Gevaar\"\n      },\n      domainSection: {\n        menuAction__manage: \"Manage\",\n        menuAction__remove: \"Delete\",\n        menuAction__verify: \"Verify\",\n        primaryButton: \"Add domain\",\n        subtitle: \"Allow users to join the organization automatically or request to join based on a verified email domain.\",\n        title: \"Verified domains\"\n      },\n      successMessage: \"De organisatie is bijgewerkt.\",\n      title: \"Organisatieprofiel\"\n    },\n    removeDomainPage: {\n      messageLine1: \"The email domain {{domain}} will be removed.\",\n      messageLine2: \"Users won\\u2019t be able to join the organization automatically after this.\",\n      successMessage: \"{{domain}} has been removed.\",\n      title: \"Remove domain\"\n    },\n    start: {\n      headerTitle__general: \"General\",\n      headerTitle__members: \"Leden\",\n      profileSection: {\n        primaryButton: \"\",\n        title: \"Organization Profile\",\n        uploadAction__title: \"Logo\"\n      }\n    },\n    verifiedDomainPage: {\n      dangerTab: {\n        calloutInfoLabel: \"Removing this domain will affect invited users.\",\n        removeDomainActionLabel__remove: \"Remove domain\",\n        removeDomainSubtitle: \"Remove this domain from your verified domains\",\n        removeDomainTitle: \"Remove domain\"\n      },\n      enrollmentTab: {\n        automaticInvitationOption__description: \"Users are automatically invited to join the organization when they sign-up and can join anytime.\",\n        automaticInvitationOption__label: \"Automatic invitations\",\n        automaticSuggestionOption__description: \"Users receive a suggestion to request to join, but must be approved by an admin before they are able to join the organization.\",\n        automaticSuggestionOption__label: \"Automatic suggestions\",\n        calloutInfoLabel: \"Changing the enrollment mode will only affect new users.\",\n        calloutInvitationCountLabel: \"Pending invitations sent to users: {{count}}\",\n        calloutSuggestionCountLabel: \"Pending suggestions sent to users: {{count}}\",\n        manualInvitationOption__description: \"Users can only be invited manually to the organization.\",\n        manualInvitationOption__label: \"No automatic enrollment\",\n        subtitle: \"Choose how users from this domain can join the organization.\"\n      },\n      start: {\n        headerTitle__danger: \"Danger\",\n        headerTitle__enrollment: \"Enrollment options\"\n      },\n      subtitle: \"The domain {{domain}} is now verified. Continue by selecting enrollment mode.\",\n      title: \"Update {{domain}}\"\n    },\n    verifyDomainPage: {\n      formSubtitle: \"Enter the verification code sent to your email address\",\n      formTitle: \"Verification code\",\n      resendButton: \"Didn't receive a code? Resend\",\n      subtitle: \"The domain {{domainName}} needs to be verified via email.\",\n      subtitleVerificationCodeScreen: \"A verification code was sent to {{emailAddress}}. Enter the code to continue.\",\n      title: \"Verify domain\"\n    }\n  },\n  organizationSwitcher: {\n    action__createOrganization: \"Maak organisatie aan\",\n    action__invitationAccept: \"Join\",\n    action__manageOrganization: \"Beheer organisatie\",\n    action__suggestionsAccept: \"Request to join\",\n    notSelected: \"Geen organisatie geselecteerd\",\n    personalWorkspace: \"Persoonlijke werkruimte\",\n    suggestionsAcceptedLabel: \"Pending approval\"\n  },\n  paginationButton__next: \"Volgende\",\n  paginationButton__previous: \"Vorige\",\n  paginationRowText__displaying: \"Weergeven\",\n  paginationRowText__of: \"van\",\n  signIn: {\n    accountSwitcher: {\n      action__addAccount: \"Add account\",\n      action__signOutAll: \"Sign out of all accounts\",\n      subtitle: \"Select the account with which you wish to continue.\",\n      title: \"Choose an account\"\n    },\n    alternativeMethods: {\n      actionLink: \"Help\",\n      actionText: \"Don\\u2019t have any of these?\",\n      blockButton__backupCode: \"Gebruik een backupcode\",\n      blockButton__emailCode: \"Verzend code naar {{identifier}}\",\n      blockButton__emailLink: \"Verzend link naar {{identifier}}\",\n      blockButton__passkey: void 0,\n      blockButton__password: \"Inloggen met je wachtwoord\",\n      blockButton__phoneCode: \"Verzend code naar {{identifier}}\",\n      blockButton__totp: \"Gebruik je authenticator app\",\n      getHelp: {\n        blockButton__emailSupport: \"E-mail klantenservice\",\n        content: \"Als je geen toegang hebt neem dan contact op met de klantenservice en we helpen je verder.\",\n        title: \"Help\"\n      },\n      subtitle: \"Facing issues? You can use any of these methods to sign in.\",\n      title: \"Gebruik een andere methode\"\n    },\n    backupCodeMfa: {\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Voer een backupcode in\"\n    },\n    emailCode: {\n      formTitle: \"Verificatiecode\",\n      resendButton: \"Verstuur code opnieuw\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Check je e-mail\"\n    },\n    emailLink: {\n      clientMismatch: {\n        subtitle: void 0,\n        title: void 0\n      },\n      expired: {\n        subtitle: \"Ga naar de oorspronkelijke tab om verder te gaan.\",\n        title: \"Deze verificatielink is verlopen\"\n      },\n      failed: {\n        subtitle: \"Ga naar de oorspronkelijke tab om verder te gaan.\",\n        title: \"Deze verificatielink is niet geldig\"\n      },\n      formSubtitle: \"Gebruik de verificatielink die verzonden is naar je e-mailadres\",\n      formTitle: \"Verificatielink\",\n      loading: {\n        subtitle: \"Je zal weldra doorgestuurd worden\",\n        title: \"Inloggen ...\"\n      },\n      resendButton: \"Verstuur link opnieuw\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Check je e-mail\",\n      unusedTab: {\n        title: \"Je kan deze tab sluiten.\"\n      },\n      verified: {\n        subtitle: \"Je zal weldra doorgestuurd worden\",\n        title: \"Successvol ingelogd\"\n      },\n      verifiedSwitchTab: {\n        subtitle: \"Ga naar de oorspronkelijke tab om verder te gaan\",\n        subtitleNewTab: \"Ga naar de pasgeopende tab om verder te gaan\",\n        titleNewTab: \"Ingelogd in andere tab\"\n      }\n    },\n    forgotPassword: {\n      formTitle: \"Reset password code\",\n      resendButton: \"Didn't receive a code? Resend\",\n      subtitle: \"to reset your password\",\n      subtitle_email: \"First, enter the code sent to your email ID\",\n      subtitle_phone: \"First, enter the code sent to your phone\",\n      title: \"Reset password\"\n    },\n    forgotPasswordAlternativeMethods: {\n      blockButton__resetPassword: \"Reset your password\",\n      label__alternativeMethods: \"Or, sign in with another method\",\n      title: \"Forgot Password?\"\n    },\n    noAvailableMethods: {\n      message: \"Het is niet mogelijk om door te gaan met inloggen. Er is geen beschikbare authenticatiefactor.\",\n      subtitle: \"Er heeft zich een fout voorgedaan\",\n      title: \"Inloggen onmogelijk\"\n    },\n    passkey: {\n      subtitle: void 0,\n      title: void 0\n    },\n    password: {\n      actionLink: \"Gebruik een andere methode\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Vul je wachtwoord in\"\n    },\n    passwordPwned: {\n      title: void 0\n    },\n    phoneCode: {\n      formTitle: \"Verificatie code\",\n      resendButton: \"Verstuur code opnieuw\",\n      subtitle: \"om verder te gaan naar {{applicationName}}\",\n      title: \"Check je telefoon\"\n    },\n    phoneCodeMfa: {\n      formTitle: \"Verificatie code\",\n      resendButton: \"Verstuur code opnieuw\",\n      subtitle: \"\",\n      title: \"Check je telefoon\"\n    },\n    resetPassword: {\n      formButtonPrimary: \"Reset Password\",\n      requiredMessage: \"For security reasons, it is required to reset your password.\",\n      successMessage: \"Your password was successfully changed. Signing you in, please wait a moment.\",\n      title: \"Set new password\"\n    },\n    resetPasswordMfa: {\n      detailsLabel: \"We need to verify your identity before resetting your password.\"\n    },\n    start: {\n      actionLink: \"Registreren\",\n      actionLink__use_email: \"Use email\",\n      actionLink__use_email_username: \"Use email or username\",\n      actionLink__use_passkey: void 0,\n      actionLink__use_phone: \"Use phone\",\n      actionLink__use_username: \"Use username\",\n      actionText: \"Geen account?\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Log in\"\n    },\n    totpMfa: {\n      formTitle: \"Verificatiecode\",\n      subtitle: \"\",\n      title: \"Tweestapsverificatie\"\n    }\n  },\n  signInEnterPasswordTitle: \"Vul je wachtwoord in\",\n  signUp: {\n    continue: {\n      actionLink: \"Inloggen\",\n      actionText: \"Heb je een account?\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Vul de ontbrekende velden in\"\n    },\n    emailCode: {\n      formSubtitle: \"Voer de verificatiecode in die verzonden is naar je e-mailadres\",\n      formTitle: \"Verificatiecode\",\n      resendButton: \"Verstuur code opnieuw\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Bevestig je e-mailadres\"\n    },\n    emailLink: {\n      clientMismatch: {\n        subtitle: void 0,\n        title: void 0\n      },\n      formSubtitle: \"Gebruik de verificatielink die verzonden is naar je e-mailadres\",\n      formTitle: \"Verificatielink\",\n      loading: {\n        title: \"Registreren ...\"\n      },\n      resendButton: \"Verstuur link opnieuw\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Bevestig je e-mailadres\",\n      verified: {\n        title: \"Succesvol geregistreerd\"\n      },\n      verifiedSwitchTab: {\n        subtitle: \"Ga naar de pas geopende tab om verder te gaan\",\n        subtitleNewTab: \"Ga naar de vorige tab om verder te gaan\",\n        title: \"E-mail bevestigd\"\n      }\n    },\n    phoneCode: {\n      formSubtitle: \"Voer de verificatiecode in die verzonden is naar je telefoonnummer\",\n      formTitle: \"Verificatiecode\",\n      resendButton: \"Verstuur code opnieuw\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Bevestig je telefoonnummer\"\n    },\n    start: {\n      actionLink: \"Inloggen\",\n      actionLink__use_email: void 0,\n      actionLink__use_phone: void 0,\n      actionText: \"Heb je al een account?\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Maak je account aan\"\n    }\n  },\n  socialButtonsBlockButton: \"Ga verder met {{provider|titleize}}\",\n  socialButtonsBlockButtonManyInView: void 0,\n  unstable__errors: {\n    captcha_invalid: \"Sign up unsuccessful due to failed security validations. Please refresh the page to try again or reach out to support for more assistance.\",\n    captcha_unavailable: \"Sign up unsuccessful due to failed bot validation. Please refresh the page to try again or reach out to support for more assistance.\",\n    form_code_incorrect: \"\",\n    form_identifier_exists: \"\",\n    form_identifier_exists__email_address: void 0,\n    form_identifier_exists__phone_number: void 0,\n    form_identifier_exists__username: void 0,\n    form_identifier_not_found: \"\",\n    form_param_format_invalid: \"\",\n    form_param_format_invalid__email_address: \"Email address must be a valid email address.\",\n    form_param_format_invalid__phone_number: \"Phone number must be in a valid international format\",\n    form_param_max_length_exceeded__first_name: \"First name should not exceed 256 characters.\",\n    form_param_max_length_exceeded__last_name: \"Last name should not exceed 256 characters.\",\n    form_param_max_length_exceeded__name: \"Name should not exceed 256 characters.\",\n    form_param_nil: \"\",\n    form_password_incorrect: \"\",\n    form_password_length_too_short: \"\",\n    form_password_not_strong_enough: \"Your password is not strong enough.\",\n    form_password_pwned: \"\",\n    form_password_pwned__sign_in: void 0,\n    form_password_size_in_bytes_exceeded: \"Your password has exceeded the maximum number of bytes allowed, please shorten it or remove some special characters.\",\n    form_password_validation_failed: \"Incorrect Password\",\n    form_username_invalid_character: \"\",\n    form_username_invalid_length: \"\",\n    identification_deletion_failed: \"You cannot delete your last identification.\",\n    not_allowed_access: \"\",\n    passkey_already_exists: void 0,\n    passkey_not_supported: void 0,\n    passkey_pa_not_supported: void 0,\n    passkey_registration_cancelled: void 0,\n    passkey_retrieval_cancelled: void 0,\n    passwordComplexity: {\n      maximumLength: \"\",\n      minimumLength: \"\",\n      requireLowercase: \"\",\n      requireNumbers: \"\",\n      requireSpecialCharacter: \"\",\n      requireUppercase: \"\",\n      sentencePrefix: \"\"\n    },\n    phone_number_exists: \"This phone number is taken. Please try another.\",\n    zxcvbn: {\n      couldBeStronger: \"Your password works, but could be stronger. Try adding more characters.\",\n      goodPassword: \"Your password meets all the necessary requirements.\",\n      notEnough: \"Je wachtwoord is niet sterk genoeg.\",\n      suggestions: {\n        allUppercase: \"Zet een deel in hoofdletters, maar niet alle letters.\",\n        anotherWord: \"Voeg meer woorden toe die minder vaak voorkomen.\",\n        associatedYears: \"Vermijd jaartallen die met jou geassocieerd zijn.\",\n        capitalization: \"Zet meer dan de eerste letter in hoofdletter.\",\n        dates: \"Vermijd data en jaartallen die met jou geassocieerd zijn.\",\n        l33t: \"Vermijd voorspelbare vervangingen, zoals '@' voor 'a'.\",\n        longerKeyboardPattern: \"Gebruik langere toetsenbord patronen, en wissel meerdere keren van richting.\",\n        noNeed: \"Je kan ook een sterk wachtwoord maken zonder speciale tekens, hoofdletters of nummers.\",\n        pwned: \"Als u dit wachtwoord elders gebruikt, moet u het veranderen.\",\n        recentYears: \"Vermijd recente jaartallen.\",\n        repeated: \"Vermijd herhalende woorden en letters.\",\n        reverseWords: \"Vermijd het omdraaien van veelvoorkomende woorden.\",\n        sequences: \"Vermijd veelvoorkomende tekstreeksen.\",\n        useWords: \"Gebruik meerdere woorden, maar vermijd veelvoorkomende zinnen.\"\n      },\n      warnings: {\n        common: \"Dit wachtwoord wordt veel gebruikt.\",\n        commonNames: \"Veelvoorkomende voor- en achternamen zijn makkelijk te raden.\",\n        dates: \"Datums zijn makkelijk te raden.\",\n        extendedRepeat: 'Herhalende patronen zoals \"abcabcabc\" zijn makkelijk te raden.',\n        keyPattern: \"Korte toetsenbord patronen zijn makkelijk te raden.\",\n        namesByThemselves: \"Voor- en achternamen op zich zijn makkelijk te raden.\",\n        pwned: \"Dit wachtwoord is in een datalek gevonden.\",\n        recentYears: \"Recente jaartallen zijn makkelijk te raden.\",\n        sequences: 'Veelvoorkomende tekstreeksen zoals \"abc\" zijn makkelijk te raden.',\n        similarToCommon: \"Dit lijkt op een veelvoorkomend wachtwoord.\",\n        simpleRepeat: 'Herhalende letters zoals \"aaa\" zijn makkelijk te raden.',\n        straightRow: \"Opeenvolgende toetsen op jouw toetsenbord zijn makkelijk te raden.\",\n        topHundred: \"Dit wachtwoord wordt erg veel gebruikt.\",\n        topTen: \"Dit wachtwoord wordt heel erg veel gebruikt.\",\n        userInputs: \"Vermijd persoonlijke of website gerelateerde woorden.\",\n        wordByItself: \"Woorden op zich zijn makkelijk te raden.\"\n      }\n    }\n  },\n  userButton: {\n    action__addAccount: \"Account toevoegen\",\n    action__manageAccount: \"Account beheren\",\n    action__signOut: \"Uitloggen\",\n    action__signOutAll: \"Uitloggen uit alle accounts\"\n  },\n  userProfile: {\n    backupCodePage: {\n      actionLabel__copied: \"Gekopieerd!\",\n      actionLabel__copy: \"Kopieer\",\n      actionLabel__download: \"Download .txt\",\n      actionLabel__print: \"Print\",\n      infoText1: \"Backupcodes zullen voor dit account ingeschakeld zijn.\",\n      infoText2: \"Houd de backupcodes geheim en bewaar ze veilig. U kunt backupcodes opnieuw genereren als u vermoedt dat ze zijn aangetast.\",\n      subtitle__codelist: \"Sla ze veilig op en hou ze geheim.\",\n      successMessage: \"Backupcodes zijn nu ingeschakeld. U kunt er een van gebruiken om in te loggen op uw account als u geen toegang meer heeft tot uw authenticatieapparaat. Elke code kan maar \\xE9\\xE9n keer gebruikt worden.\",\n      successSubtitle: \"Je kunt \\xE9\\xE9n van deze gebruiken om in te loggen op je account als je geen toegang meer hebt tot je authenticatieapparaat.\",\n      title: \"Voeg backup code verificatie toe\",\n      title__codelist: \"Backup codes\"\n    },\n    connectedAccountPage: {\n      formHint: \"Kies een provider om je account te verbinden.\",\n      formHint__noAccounts: \"Er zijn geen beschikbare externe accountproviders.\",\n      removeResource: {\n        messageLine1: \"{{identifier}} zal verwijderd worden uit dit account.\",\n        messageLine2: \"Je kunt deze verbonden account niet meer gebruiken en afhankelijke functies zullen niet meer werken.\",\n        successMessage: \"{{connectedAccount}} is verwijderd uit je account.\",\n        title: \"Verwijder externe account\"\n      },\n      socialButtonsBlockButton: \"Verbind {{provider|titleize}} account\",\n      successMessage: \"Deze provider is toegevoegd aan je account.\",\n      title: \"Verbind externe account\"\n    },\n    deletePage: {\n      actionDescription: 'Type \"Delete account\" below to continue.',\n      confirm: \"Delete account\",\n      messageLine1: \"Are you sure you want to delete your account?\",\n      messageLine2: \"This action is permanent and irreversible.\",\n      title: \"Delete account\"\n    },\n    emailAddressPage: {\n      emailCode: {\n        formHint: \"Een mail met daarin een verificatiecode is verstuurd naar dit adres.\",\n        formSubtitle: \"Voer de verificatiecode in die verstuurd is naar {{identifier}}\",\n        formTitle: \"Verificatiecode\",\n        resendButton: \"Verstuur code opnieuw\",\n        successMessage: \"Het e-mailadres {{identifier}} is toegevoegd aan je account.\"\n      },\n      emailLink: {\n        formHint: \"Een mail met daarin een verificatielink is verstuurd naar dit adres.\",\n        formSubtitle: \"Klik op de verificatielink die verstuurd is naar {{identifier}}\",\n        formTitle: \"Verificatielink\",\n        resendButton: \"Verstuur link opnieuw\",\n        successMessage: \"Het e-mailadres {{identifier}} is toegevoegd aan je account.\"\n      },\n      removeResource: {\n        messageLine1: \"{{identifier}} zal verwijderd worden uit dit account.\",\n        messageLine2: \"Je zal niet meer kunnen inloggen met dit e-mailadres.\",\n        successMessage: \"{{emailAddress}} is verwijderd uit je account.\",\n        title: \"Verwijder e-mailadres\"\n      },\n      title: \"E-mailadres toevoegen\",\n      verifyTitle: \"Verify email address\"\n    },\n    formButtonPrimary__add: \"Add\",\n    formButtonPrimary__continue: \"Doorgaan\",\n    formButtonPrimary__finish: \"Afronden\",\n    formButtonPrimary__remove: \"Remove\",\n    formButtonPrimary__save: \"Save\",\n    formButtonReset: \"Annuleren\",\n    mfaPage: {\n      formHint: \"Kies een methode om toe te voegen.\",\n      title: \"Tweestapsverificatie toevoegen\"\n    },\n    mfaPhoneCodePage: {\n      backButton: \"Use existing number\",\n      primaryButton__addPhoneNumber: \"Telefoonnummer toevoegen\",\n      removeResource: {\n        messageLine1: \"{{identifier}} zal niet langer verificatiecodes ontvangen bij het inloggen.\",\n        messageLine2: \"Uw account is mogelijk niet zo veilig. Weet je zeker dat je door wilt gaan?\",\n        successMessage: \"SMS-code tweestapsverificatie is verwijderd voor {{mfaPhoneCode}}\",\n        title: \"Verwijder tweestapsverificatie\"\n      },\n      subtitle__availablePhoneNumbers: \"Selecteer een telefoonnummer om je te registreren voor SMS-code twee-stapsverificatie.\",\n      subtitle__unavailablePhoneNumbers: \"Er zijn geen beschikbare telefoonnummers om te registreren voor SMS-code tweestapsverificatie.\",\n      successMessage1: \"When signing in, you will need to enter a verification code sent to this phone number as an additional step.\",\n      successMessage2: \"Save these backup codes and store them somewhere safe. If you lose access to your authentication device, you can use backup codes to sign in.\",\n      successTitle: \"SMS code verification enabled\",\n      title: \"Voeg SMS-code verificatie toe\"\n    },\n    mfaTOTPPage: {\n      authenticatorApp: {\n        buttonAbleToScan__nonPrimary: \"Alternatief, scan een QR code\",\n        buttonUnableToScan__nonPrimary: \"Kan je de code niet scannen?\",\n        infoText__ableToScan: \"Scan de QR code met je authenticator app om de authenticator toe te voegen.\",\n        infoText__unableToScan: \"Stel een nieuwe aanmeldmethode in op je authenticator en voer de onderstaande sleutel in.\",\n        inputLabel__unableToScan1: \"Zorg ervoor dat tijdsgebaseerde of eenmalige wachtwoorden zijn ingeschakeld, en voltooi vervolgens het koppelen van uw account.\",\n        inputLabel__unableToScan2: \"Als je authenticator TOTP-URI's ondersteunt, kun je ook de volledige URI kopi\\xEBren.\"\n      },\n      removeResource: {\n        messageLine1: \"Verificatiecodes van deze authenticator zullen niet langer vereist zijn bij het inloggen.\",\n        messageLine2: \"Uw account is mogelijk niet zo veilig. Weet je zeker dat je door wilt gaan?\",\n        successMessage: \"Tweestapsverificatie via authenticator-applicatie is verwijderd.\",\n        title: \"Verwijder tweestapsverificatie\"\n      },\n      successMessage: \"Tweestapsverificatie is nu ingesteld. Bij het inloggen zal je een verificatiecode van je authenticator app moeten invoeren.\",\n      title: \"Voeg authenticator toe\",\n      verifySubtitle: \"Voer de verificatiecode in die je authenticator app heeft gegenereerd.\",\n      verifyTitle: \"Verificatiecode\"\n    },\n    mobileButton__menu: \"Menu\",\n    navbar: {\n      account: \"Profile\",\n      description: \"Manage your account info.\",\n      security: \"Security\",\n      title: \"Account\"\n    },\n    passkeyScreen: {\n      removeResource: {\n        messageLine1: void 0,\n        title: void 0\n      },\n      subtitle__rename: void 0,\n      title__rename: void 0\n    },\n    passwordPage: {\n      checkboxInfoText__signOutOfOtherSessions: \"It is recommended to sign out of all other devices which may have used your old password.\",\n      readonly: \"Your password can currently not be edited because you can sign in only via the enterprise connection.\",\n      successMessage__set: \"Je wachtwoord is ingesteld.\",\n      successMessage__signOutOfOtherSessions: \"All other devices have been signed out.\",\n      successMessage__update: \"Your password has been updated.\",\n      title__set: \"Stel wachtwoord in\",\n      title__update: \"Change password\"\n    },\n    phoneNumberPage: {\n      infoText: \"Een SMS met daarin een verificatiecode is verstuurd naar dit nummer.\",\n      removeResource: {\n        messageLine1: \"{{identifier}} zal van deze account verwijderd worden.\",\n        messageLine2: \"Je zal niet meer kunnen inloggen met dit telefoonnummer.\",\n        successMessage: \"{{phoneNumber}} is verwijderd uit je account.\",\n        title: \"Verwijder telefoonnummer\"\n      },\n      successMessage: \"{{identifier}} is toegevoegd aan je account.\",\n      title: \"Telefoonnummer toevoegen\",\n      verifySubtitle: \"Enter the verification code sent to {{identifier}}\",\n      verifyTitle: \"Verify phone number\"\n    },\n    profilePage: {\n      fileDropAreaHint: \"Upload een JPG, PNG, GIF, of WEBP afbeelding kleiner dan 10 MB\",\n      imageFormDestructiveActionSubtitle: \"Verwijder afbeelding\",\n      imageFormSubtitle: \"Afbeelding uploaden\",\n      imageFormTitle: \"Profielfoto\",\n      readonly: \"Your profile information has been provided by the enterprise connection and cannot be edited.\",\n      successMessage: \"Je profiel is bijgewerkt.\",\n      title: \"Profiel bijwerken\"\n    },\n    start: {\n      activeDevicesSection: {\n        destructiveAction: \"Log uit op apparaat\",\n        title: \"Actieve apparaten\"\n      },\n      connectedAccountsSection: {\n        actionLabel__connectionFailed: \"Probeer opnieuw\",\n        actionLabel__reauthorize: \"Authoriseer nu\",\n        destructiveActionTitle: \"Verwijderen\",\n        primaryButton: \"Verbind een account\",\n        subtitle__disconnected: void 0,\n        subtitle__reauthorize: \"The required scopes have been updated, and you may be experiencing limited functionality. Please re-authorize this application to avoid any issues\",\n        title: \"Aangesloten accounts\"\n      },\n      dangerSection: {\n        deleteAccountButton: \"Delete Account\",\n        title: \"Account termination\"\n      },\n      emailAddressesSection: {\n        destructiveAction: \"Verwijder e-mailadres\",\n        detailsAction__nonPrimary: \"Stel in als hoofd\",\n        detailsAction__primary: \"Rond verificatie af\",\n        detailsAction__unverified: \"Rond verificatie af\",\n        primaryButton: \"Voeg een e-mailadres toe\",\n        title: \"E-mailadressen\"\n      },\n      enterpriseAccountsSection: {\n        title: \"Enterprise accounts\"\n      },\n      headerTitle__account: \"Account\",\n      headerTitle__security: \"Beveiliging\",\n      mfaSection: {\n        backupCodes: {\n          actionLabel__regenerate: \"Hergenereer codes\",\n          headerTitle: \"Backupcodes\",\n          subtitle__regenerate: \"Genereer een nieuwe set backupcodes. De vorige kunnen niet meer gebruikt worden.\",\n          title__regenerate: \"Hergenereer backupcodes\"\n        },\n        phoneCode: {\n          actionLabel__setDefault: \"Stel in als standaard\",\n          destructiveActionLabel: \"Verwijder telefoonnummer\"\n        },\n        primaryButton: \"Tweestapsverificatie instellen\",\n        title: \"Tweestapsverificatie\",\n        totp: {\n          destructiveActionTitle: \"Verwijderen\",\n          headerTitle: \"Authenticatorapplicatie\"\n        }\n      },\n      passkeysSection: {\n        menuAction__destructive: void 0,\n        menuAction__rename: void 0,\n        title: void 0\n      },\n      passwordSection: {\n        primaryButton__setPassword: \"Wachtwoord instellen\",\n        primaryButton__updatePassword: \"Wachtwoord wijzigen\",\n        title: \"Wachtwoord\"\n      },\n      phoneNumbersSection: {\n        destructiveAction: \"Verwijder telefoonnummer\",\n        detailsAction__nonPrimary: \"Stel in als hoofd\",\n        detailsAction__primary: \"Rond verificatie af\",\n        detailsAction__unverified: \"Rond verificatie af\",\n        primaryButton: \"Voeg een telefoonnummer toe\",\n        title: \"Telefoonnummers\"\n      },\n      profileSection: {\n        primaryButton: \"\",\n        title: \"Profiel\"\n      },\n      usernameSection: {\n        primaryButton__setUsername: \"Stel gebruikersnaam in\",\n        primaryButton__updateUsername: \"Wijzig gebruikersnaam\",\n        title: \"Gebruikersnaam\"\n      },\n      web3WalletsSection: {\n        destructiveAction: \"Verwijder portefeuille\",\n        primaryButton: \"Web3 portefeuilles\",\n        title: \"Web3 portefeuilles\"\n      }\n    },\n    usernamePage: {\n      successMessage: \"Je gebruikersnaam is bijgewerkt.\",\n      title__set: \"Gebruikersnaam bijwerken\",\n      title__update: \"Gebruikersnaam bijwerken\"\n    },\n    web3WalletPage: {\n      removeResource: {\n        messageLine1: \"{{identifier}} zal verwijderd worden uit dit account.\",\n        messageLine2: \"Je zal niet meer kunnen inloggen met deze web3 portefeuille.\",\n        successMessage: \"{{web3Wallet}} is verwijderd uit je account.\",\n        title: \"Verwijder web3 portefeuille\"\n      },\n      subtitle__availableWallets: \"Selecteer een web3 portefeuille om toe te voegen.\",\n      subtitle__unavailableWallets: \"Er zijn geen beschikbare web3 portefeuilles.\",\n      successMessage: \"De portefeuille is toegevoegd aan dit account.\",\n      title: \"Web3 portefeuille toevoegen.\"\n    }\n  }\n};\nvar nlBE = __spreadValues({\n  locale: \"nl-BE\"\n}, nlNL);\nvar koKR = {\n  locale: \"ko-KR\",\n  backButton: \"\\uB3CC\\uC544\\uAC00\\uAE30\",\n  badge__default: \"\\uAE30\\uBCF8\\uAC12\",\n  badge__otherImpersonatorDevice: \"\\uAE30\\uD0C0 \\uC0AC\\uCE6D \\uC7A5\\uCE58\",\n  badge__primary: \"\\uAE30\\uBCF8\",\n  badge__requiresAction: \"\\uC870\\uCE58 \\uD544\\uC694\",\n  badge__thisDevice: \"\\uC774 \\uC7A5\\uCE58\",\n  badge__unverified: \"\\uBBF8\\uD655\\uC778\",\n  badge__userDevice: \"\\uC0AC\\uC6A9\\uC790 \\uC7A5\\uCE58\",\n  badge__you: \"\\uB2F9\\uC2E0\",\n  createOrganization: {\n    formButtonSubmit: \"\\uC870\\uC9C1 \\uB9CC\\uB4E4\\uAE30\",\n    invitePage: {\n      formButtonReset: \"\\uB118\\uAE30\\uAE30\"\n    },\n    title: \"\\uC870\\uC9C1 \\uB9CC\\uB4E4\\uAE30\"\n  },\n  dates: {\n    lastDay: \"\\uC5B4\\uC81C {{ date | timeString('ko-KR') }}\",\n    next6Days: \"\\uB2E4\\uC74C {{ date | weekday('ko-KR','long') }} {{ date | timeString('ko-KR') }}\",\n    nextDay: \"\\uB0B4\\uC77C {{ date | timeString('ko-KR') }}\",\n    numeric: \"{{ date | numeric('ko-KR') }}\",\n    previous6Days: \"\\uC9C0\\uB09C {{ date | weekday('ko-KR','long') }} {{ date | timeString('ko-KR') }}\",\n    sameDay: \"\\uC624\\uB298 {{ date | timeString('ko-KR') }}\"\n  },\n  dividerText: \"\\uB610\\uB294\",\n  footerActionLink__useAnotherMethod: \"\\uB2E4\\uB978 \\uBC29\\uBC95 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n  footerPageLink__help: \"\\uB3C4\\uC6C0\",\n  footerPageLink__privacy: \"\\uAC1C\\uC778\\uC815\\uBCF4\\uCC98\\uB9AC\\uBC29\\uCE68\",\n  footerPageLink__terms: \"\\uC57D\\uAD00\",\n  formButtonPrimary: \"\\uACC4\\uC18D\",\n  formButtonPrimary__verify: \"Verify\",\n  formFieldAction__forgotPassword: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC78A\\uC73C\\uC168\\uB098\\uC694?\",\n  formFieldError__matchingPasswords: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC77C\\uCE58\\uD569\\uB2C8\\uB2E4.\",\n  formFieldError__notMatchingPasswords: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC77C\\uCE58\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n  formFieldError__verificationLinkExpired: \"The verification link expired. Please request a new link.\",\n  formFieldHintText__optional: \"\\uC120\\uD0DD\\uC0AC\\uD56D\",\n  formFieldHintText__slug: \"A slug is a human-readable ID that must be unique. It\\u2019s often used in URLs.\",\n  formFieldInputPlaceholder__backupCode: \"\",\n  formFieldInputPlaceholder__confirmDeletionUserAccount: \"\\uACC4\\uC815 \\uC0AD\\uC81C\",\n  formFieldInputPlaceholder__emailAddress: \"\",\n  formFieldInputPlaceholder__emailAddress_username: \"\",\n  formFieldInputPlaceholder__emailAddresses: \"\\uD558\\uB098 \\uC774\\uC0C1\\uC758 \\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB97C \\uACF5\\uBC31 \\uB610\\uB294 \\uC27C\\uD45C\\uB85C \\uAD6C\\uBD84\\uD558\\uC5EC \\uC785\\uB825\\uD558\\uAC70\\uB098 \\uBD99\\uC5EC\\uB123\\uC2B5\\uB2C8\\uB2E4\",\n  formFieldInputPlaceholder__firstName: \"\",\n  formFieldInputPlaceholder__lastName: \"\",\n  formFieldInputPlaceholder__organizationDomain: \"\",\n  formFieldInputPlaceholder__organizationDomainEmailAddress: \"\",\n  formFieldInputPlaceholder__organizationName: \"\",\n  formFieldInputPlaceholder__organizationSlug: \"\",\n  formFieldInputPlaceholder__password: \"\",\n  formFieldInputPlaceholder__phoneNumber: \"\",\n  formFieldInputPlaceholder__username: \"\",\n  formFieldLabel__automaticInvitations: \"Enable automatic invitations for this domain\",\n  formFieldLabel__backupCode: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC\",\n  formFieldLabel__confirmDeletion: \"\\uD655\\uC778\",\n  formFieldLabel__confirmPassword: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uD655\\uC778\",\n  formFieldLabel__currentPassword: \"\\uD604\\uC7AC \\uBE44\\uBC00\\uBC88\\uD638\",\n  formFieldLabel__emailAddress: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\",\n  formFieldLabel__emailAddress_username: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C \\uD639\\uC740 \\uC0AC\\uC6A9\\uC790 \\uC774\\uB984\",\n  formFieldLabel__emailAddresses: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\",\n  formFieldLabel__firstName: \"\\uC774\\uB984\",\n  formFieldLabel__lastName: \"\\uC131\",\n  formFieldLabel__newPassword: \"\\uC0C8 \\uBE44\\uBC00\\uBC88\\uD638\",\n  formFieldLabel__organizationDomain: \"\\uB3C4\\uBA54\\uC778\",\n  formFieldLabel__organizationDomainDeletePending: \"Delete pending invitations and suggestions\",\n  formFieldLabel__organizationDomainEmailAddress: \"Verification email address\",\n  formFieldLabel__organizationDomainEmailAddressDescription: \"Enter an email address under this domain to receive a code and verify this domain.\",\n  formFieldLabel__organizationName: \"\\uC774\\uB984\",\n  formFieldLabel__organizationSlug: \"\\uC2AC\\uB7EC\\uADF8\",\n  formFieldLabel__passkeyName: void 0,\n  formFieldLabel__password: \"\\uBE44\\uBC00\\uBC88\\uD638\",\n  formFieldLabel__phoneNumber: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638\",\n  formFieldLabel__role: \"\\uC5ED\\uD560\",\n  formFieldLabel__signOutOfOtherSessions: \"\\uB2E4\\uB978 \\uBAA8\\uB4E0 \\uAE30\\uAE30\\uC5D0\\uC11C \\uB85C\\uADF8\\uC544\\uC6C3\",\n  formFieldLabel__username: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984\",\n  impersonationFab: {\n    action__signOut: \"\\uB85C\\uADF8\\uC544\\uC6C3\",\n    title: \"{{identifier}}\\uB85C \\uB85C\\uADF8\\uC778\\uD588\\uC2B5\\uB2C8\\uB2E4\"\n  },\n  maintenanceMode: void 0,\n  membershipRole__admin: \"\\uAD00\\uB9AC\\uC790\",\n  membershipRole__basicMember: \"\\uBA64\\uBC84\",\n  membershipRole__guestMember: \"\\uAC8C\\uC2A4\\uD2B8\",\n  organizationList: {\n    action__createOrganization: \"Create organization\",\n    action__invitationAccept: \"Join\",\n    action__suggestionsAccept: \"Request to join\",\n    createOrganization: \"Create Organization\",\n    invitationAcceptedLabel: \"Joined\",\n    subtitle: \"to continue to {{applicationName}}\",\n    suggestionsAcceptedLabel: \"Pending approval\",\n    title: \"Choose an account\",\n    titleWithoutPersonal: \"Choose an organization\"\n  },\n  organizationProfile: {\n    badge__automaticInvitation: \"Automatic invitations\",\n    badge__automaticSuggestion: \"Automatic suggestions\",\n    badge__manualInvitation: \"No automatic enrollment\",\n    badge__unverified: \"Unverified\",\n    createDomainPage: {\n      subtitle: \"Add the domain to verify. Users with email addresses at this domain can join the organization automatically or request to join.\",\n      title: \"Add domain\"\n    },\n    invitePage: {\n      detailsTitle__inviteFailed: \"\\uCD08\\uB300\\uB97C \\uBCF4\\uB0BC \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uC74C\\uC744 \\uC218\\uC815\\uD558\\uACE0 \\uB2E4\\uC2DC \\uC2DC\\uB3C4\\uD558\\uC138\\uC694:\",\n      formButtonPrimary__continue: \"\\uCD08\\uB300 \\uBCF4\\uB0B4\\uAE30\",\n      selectDropdown__role: \"Select role\",\n      subtitle: \"\\uC774 \\uC870\\uC9C1\\uC5D0 \\uC0C8 \\uBA64\\uBC84 \\uCD08\\uB300\",\n      successMessage: \"\\uCD08\\uB300\\uAC00 \\uC131\\uACF5\\uC801\\uC73C\\uB85C \\uC804\\uC1A1\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4\",\n      title: \"\\uD68C\\uC6D0 \\uCD08\\uB300\"\n    },\n    membersPage: {\n      action__invite: \"\\uCD08\\uB300\",\n      activeMembersTab: {\n        menuAction__remove: \"\\uD68C\\uC6D0 \\uC81C\\uAC70\",\n        tableHeader__actions: \"\",\n        tableHeader__joined: \"\\uAC00\\uC785\\uB428\",\n        tableHeader__role: \"\\uC5ED\\uD560\",\n        tableHeader__user: \"\\uC0AC\\uC6A9\\uC790\"\n      },\n      detailsTitle__emptyRow: \"\\uD45C\\uC2DC\\uD560 \\uBA64\\uBC84 \\uC5C6\\uC74C\",\n      invitationsTab: {\n        autoInvitations: {\n          headerSubtitle: \"Invite users by connecting an email domain with your organization. Anyone who signs up with a matching email domain will be able to join the organization anytime.\",\n          headerTitle: \"Automatic invitations\",\n          primaryButton: \"Manage verified domains\"\n        },\n        table__emptyRow: \"No invitations to display\"\n      },\n      invitedMembersTab: {\n        menuAction__revoke: \"\\uCD08\\uB300 \\uCDE8\\uC18C\",\n        tableHeader__invited: \"\\uCD08\\uB300\\uB428\"\n      },\n      requestsTab: {\n        autoSuggestions: {\n          headerSubtitle: \"Users who sign up with a matching email domain, will be able to see a suggestion to request to join your organization.\",\n          headerTitle: \"Automatic suggestions\",\n          primaryButton: \"Manage verified domains\"\n        },\n        menuAction__approve: \"Approve\",\n        menuAction__reject: \"Reject\",\n        tableHeader__requested: \"Requested access\",\n        table__emptyRow: \"No requests to display\"\n      },\n      start: {\n        headerTitle__invitations: \"Invitations\",\n        headerTitle__members: \"Members\",\n        headerTitle__requests: \"Requests\"\n      }\n    },\n    navbar: {\n      description: \"Manage your organization.\",\n      general: \"General\",\n      members: \"Members\",\n      title: \"Organization\"\n    },\n    profilePage: {\n      dangerSection: {\n        deleteOrganization: {\n          actionDescription: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC544\\uB798\\uC5D0 {{organizationName}}\\uC744(\\uB97C) \\uC785\\uB825\\uD558\\uC138\\uC694.\",\n          messageLine1: \"\\uC774 \\uC870\\uC9C1\\uC744 \\uC0AD\\uC81C\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\n          messageLine2: \"\\uC774 \\uC791\\uC5C5\\uC740 \\uC601\\uAD6C\\uC801\\uC774\\uBA70 \\uB418\\uB3CC\\uB9B4 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n          successMessage: \"\\uC870\\uC9C1\\uC744 \\uC0AD\\uC81C\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\n          title: \"\\uC870\\uC9C1 \\uC0AD\\uC81C\"\n        },\n        leaveOrganization: {\n          actionDescription: 'Type \"{{organizationName}}\" below to continue.',\n          messageLine1: \"\\uC774 \\uC870\\uC9C1\\uC744 \\uD0C8\\uD1F4\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C? \\uC774 \\uC870\\uC9C1 \\uBC0F \\uD574\\uB2F9 \\uC560\\uD50C\\uB9AC\\uCF00\\uC774\\uC158\\uC5D0 \\uB300\\uD55C \\uC561\\uC138\\uC2A4 \\uAD8C\\uD55C\\uC744 \\uC783\\uAC8C\\uB429\\uB2C8\\uB2E4.\",\n          messageLine2: \"\\uC774 \\uC791\\uC5C5\\uC740 \\uC601\\uAD6C\\uC801\\uC774\\uBA70 \\uB418\\uB3CC\\uB9B4 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4\",\n          successMessage: \"\\uC870\\uC9C1\\uC744 \\uD0C8\\uD1F4\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\n          title: \"\\uC870\\uC9C1 \\uB5A0\\uB098\\uAE30\"\n        },\n        title: \"\\uC704\\uD5D8\"\n      },\n      domainSection: {\n        menuAction__manage: \"Manage\",\n        menuAction__remove: \"Delete\",\n        menuAction__verify: \"Verify\",\n        primaryButton: \"\\uB3C4\\uBA54\\uC778 \\uCD94\\uAC00\",\n        subtitle: \"\\uC778\\uC99D\\uB41C \\uC774\\uBA54\\uC77C \\uB3C4\\uBA54\\uC778\\uC744 \\uAE30\\uBC18\\uC73C\\uB85C \\uC0AC\\uC6A9\\uC790\\uAC00 \\uC870\\uC9C1\\uC5D0 \\uC790\\uB3D9\\uC73C\\uB85C \\uAC00\\uC785\\uD558\\uAC70\\uB098 \\uAC00\\uC785 \\uC694\\uCCAD\\uC744 \\uD560 \\uC218 \\uC788\\uAC8C \\uD569\\uB2C8\\uB2E4.\",\n        title: \"\\uC778\\uC99D\\uB41C \\uB3C4\\uBA54\\uC778\"\n      },\n      successMessage: \"\\uC870\\uC9C1\\uC774 \\uC5C5\\uB370\\uC774\\uD2B8\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uC870\\uC9C1 \\uD504\\uB85C\\uD544\"\n    },\n    removeDomainPage: {\n      messageLine1: \"The email domain {{domain}} will be removed.\",\n      messageLine2: \"Users won\\u2019t be able to join the organization automatically after this.\",\n      successMessage: \"{{domain}} has been removed.\",\n      title: \"Remove domain\"\n    },\n    start: {\n      headerTitle__general: \"General\",\n      headerTitle__members: \"\\uBA64\\uBC84\",\n      profileSection: {\n        primaryButton: \"\",\n        title: \"Organization Profile\",\n        uploadAction__title: \"Logo\"\n      }\n    },\n    verifiedDomainPage: {\n      dangerTab: {\n        calloutInfoLabel: \"Removing this domain will affect invited users.\",\n        removeDomainActionLabel__remove: \"Remove domain\",\n        removeDomainSubtitle: \"Remove this domain from your verified domains\",\n        removeDomainTitle: \"Remove domain\"\n      },\n      enrollmentTab: {\n        automaticInvitationOption__description: \"Users are automatically invited to join the organization when they sign-up and can join anytime.\",\n        automaticInvitationOption__label: \"Automatic invitations\",\n        automaticSuggestionOption__description: \"Users receive a suggestion to request to join, but must be approved by an admin before they are able to join the organization.\",\n        automaticSuggestionOption__label: \"Automatic suggestions\",\n        calloutInfoLabel: \"Changing the enrollment mode will only affect new users.\",\n        calloutInvitationCountLabel: \"Pending invitations sent to users: {{count}}\",\n        calloutSuggestionCountLabel: \"Pending suggestions sent to users: {{count}}\",\n        manualInvitationOption__description: \"Users can only be invited manually to the organization.\",\n        manualInvitationOption__label: \"No automatic enrollment\",\n        subtitle: \"Choose how users from this domain can join the organization.\"\n      },\n      start: {\n        headerTitle__danger: \"Danger\",\n        headerTitle__enrollment: \"Enrollment options\"\n      },\n      subtitle: \"The domain {{domain}} is now verified. Continue by selecting enrollment mode.\",\n      title: \"Update {{domain}}\"\n    },\n    verifyDomainPage: {\n      formSubtitle: \"Enter the verification code sent to your email address\",\n      formTitle: \"Verification code\",\n      resendButton: \"Didn't receive a code? Resend\",\n      subtitle: \"The domain {{domainName}} needs to be verified via email.\",\n      subtitleVerificationCodeScreen: \"A verification code was sent to {{emailAddress}}. Enter the code to continue.\",\n      title: \"Verify domain\"\n    }\n  },\n  organizationSwitcher: {\n    action__createOrganization: \"\\uC870\\uC9C1 \\uB9CC\\uB4E4\\uAE30\",\n    action__invitationAccept: \"Join\",\n    action__manageOrganization: \"\\uC870\\uC9C1 \\uAD00\\uB9AC\",\n    action__suggestionsAccept: \"Request to join\",\n    notSelected: \"\\uC120\\uD0DD\\uD55C \\uC870\\uC9C1 \\uC5C6\\uC74C\",\n    personalWorkspace: \"\\uAC1C\\uC778 \\uC6CC\\uD06C\\uC2A4\\uD398\\uC774\\uC2A4\",\n    suggestionsAcceptedLabel: \"Pending approval\"\n  },\n  paginationButton__next: \"\\uB2E4\\uC74C\",\n  paginationButton__previous: \"\\uC774\\uC804\",\n  paginationRowText__displaying: \"\\uD45C\\uC2DC\\uC911\",\n  paginationRowText__of: \"\\uC758\",\n  signIn: {\n    accountSwitcher: {\n      action__addAccount: \"Add account\",\n      action__signOutAll: \"Sign out of all accounts\",\n      subtitle: \"Select the account with which you wish to continue.\",\n      title: \"Choose an account\"\n    },\n    alternativeMethods: {\n      actionLink: \"\\uB3C4\\uC6C0 \\uC694\\uCCAD\\uD558\\uAE30\",\n      actionText: \"Don\\u2019t have any of these?\",\n      blockButton__backupCode: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      blockButton__emailCode: \"{{identifier}}\\uB85C \\uC774\\uBA54\\uC77C \\uCF54\\uB4DC \\uBCF4\\uB0B4\\uAE30\",\n      blockButton__emailLink: \"{{identifier}}\\uB85C \\uC774\\uBA54\\uC77C \\uB9C1\\uD06C \\uBCF4\\uB0B4\\uAE30\",\n      blockButton__passkey: void 0,\n      blockButton__password: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB85C \\uB85C\\uADF8\\uC778\",\n      blockButton__phoneCode: \"{{identifier}}\\uB85C SMS \\uCF54\\uB4DC \\uBCF4\\uB0B4\\uAE30\",\n      blockButton__totp: \"\\uC778\\uC99D \\uC571 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      getHelp: {\n        blockButton__emailSupport: \"\\uC774\\uBA54\\uC77C \\uC9C0\\uC6D0\",\n        content: \"\\uACC4\\uC815\\uC5D0 \\uB85C\\uADF8\\uC778\\uD558\\uB294 \\uB370 \\uBB38\\uC81C\\uAC00 \\uC788\\uB294 \\uACBD\\uC6B0 \\uC774\\uBA54\\uC77C\\uC744 \\uBCF4\\uB0B4\\uC8FC\\uC2DC\\uBA74 \\uCD5C\\uB300\\uD55C \\uBE68\\uB9AC \\uC561\\uC138\\uC2A4\\uB97C \\uBCF5\\uAD6C\\uD574 \\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\",\n        title: \"\\uB3C4\\uC6C0 \\uC694\\uCCAD\\uD558\\uAE30\"\n      },\n      subtitle: \"\\uBB38\\uC81C\\uAC00 \\uC788\\uB098\\uC694? \\uB2E4\\uB978 \\uBC29\\uBC95\\uC73C\\uB85C \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uB2E4\\uB978 \\uBC29\\uBC95 \\uC0AC\\uC6A9\\uD558\\uAE30\"\n    },\n    backupCodeMfa: {\n      subtitle: \"\\uBC31\\uC5C5\\uCF54\\uB4DC\\uB294 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC744 \\uC124\\uC815\\uD560 \\uB54C \\uC5BB\\uC740 \\uCF54\\uB4DC\\uC785\\uB2C8\\uB2E4\",\n      title: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC \\uC785\\uB825\"\n    },\n    emailCode: {\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"{{applicationName}}\\uB85C \\uACC4\\uC18D\\uD558\\uB824\\uBA74\",\n      title: \"\\uC774\\uBA54\\uC77C\\uC744 \\uD655\\uC778\\uD558\\uC138\\uC694\"\n    },\n    emailLink: {\n      clientMismatch: {\n        subtitle: void 0,\n        title: void 0\n      },\n      expired: {\n        subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC6D0\\uB798 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uC138\\uC694.\",\n        title: \"\\uC774 \\uC778\\uC99D \\uB9C1\\uD06C\\uB294 \\uB9CC\\uB8CC\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4\"\n      },\n      failed: {\n        subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC6D0\\uB798 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uC138\\uC694.\",\n        title: \"\\uC774 \\uC778\\uC99D \\uB9C1\\uD06C\\uB294 \\uC720\\uD6A8\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4\"\n      },\n      formSubtitle: \"\\uC774\\uBA54\\uC77C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uB9C1\\uD06C\\uB97C \\uC0AC\\uC6A9\\uD558\\uC138\\uC694\",\n      formTitle: \"\\uC778\\uC99D \\uB9C1\\uD06C\",\n      loading: {\n        subtitle: \"\\uACE7 \\uB9AC\\uB2E4\\uC774\\uB809\\uC158 \\uB429\\uB2C8\\uB2E4\",\n        title: \"\\uB85C\\uADF8\\uC778 \\uC911...\"\n      },\n      resendButton: \"\\uB9C1\\uD06C \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"{{applicationName}}\\uB85C \\uACC4\\uC18D\\uD558\\uB824\\uBA74\",\n      title: \"\\uC774\\uBA54\\uC77C\\uC744 \\uD655\\uC778\\uD558\\uC138\\uC694\",\n      unusedTab: {\n        title: \"\\uC774 \\uD0ED\\uC744 \\uB2EB\\uC73C\\uC154\\uB3C4 \\uB429\\uB2C8\\uB2E4\"\n      },\n      verified: {\n        subtitle: \"\\uACE7 \\uB9AC\\uB2E4\\uC774\\uB809\\uC158 \\uB420 \\uC608\\uC815\\uC785\\uB2C8\\uB2E4\",\n        title: \"\\uB85C\\uADF8\\uC778\\uC5D0 \\uC131\\uACF5\\uD588\\uC2B5\\uB2C8\\uB2E4\"\n      },\n      verifiedSwitchTab: {\n        subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC6D0\\uB798 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uC138\\uC694\",\n        subtitleNewTab: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC0C8\\uB85C \\uC5F0 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uC138\\uC694\",\n        titleNewTab: \"\\uB2E4\\uB978 \\uD0ED\\uC5D0\\uC11C \\uB85C\\uADF8\\uC778\"\n      }\n    },\n    forgotPassword: {\n      formTitle: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC7AC\\uC124\\uC815 \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"to reset your password\",\n      subtitle_email: \"\\uBA3C\\uC800 \\uC774\\uBA54\\uC77C\\uB85C \\uC804\\uC1A1\\uB41C \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      subtitle_phone: \"\\uBA3C\\uC800 \\uD734\\uB300\\uD3F0\\uC73C\\uB85C \\uC804\\uC1A1\\uB41C \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC7AC\\uC124\\uC815\"\n    },\n    forgotPasswordAlternativeMethods: {\n      blockButton__resetPassword: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC7AC\\uC124\\uC815\",\n      label__alternativeMethods: \"\\uB610\\uB294 \\uB2E4\\uB978 \\uBC29\\uBC95\\uC73C\\uB85C \\uB85C\\uADF8\\uC778\",\n      title: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC78A\\uC73C\\uC168\\uB098\\uC694?\"\n    },\n    noAvailableMethods: {\n      message: \"\\uB85C\\uADF8\\uC778\\uC744 \\uACC4\\uC18D\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uC778\\uC99D \\uBC29\\uBC95\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n      subtitle: \"\\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4\",\n      title: \"\\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4\"\n    },\n    passkey: {\n      subtitle: void 0,\n      title: void 0\n    },\n    password: {\n      actionLink: \"\\uB2E4\\uB978 \\uBC29\\uBC95 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      subtitle: \"\\uACC4\\uC815\\uC5D0 \\uB4F1\\uB85D\\uB41C \\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC785\\uB825\\uD574 \\uC8FC\\uC138\\uC694\",\n      title: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\"\n    },\n    passwordPwned: {\n      title: void 0\n    },\n    phoneCode: {\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uB2E4\\uC2DC \\uBCF4\\uB0B4\\uAE30\",\n      subtitle: \"{{applicationName}}\\uB85C \\uACC4\\uC18D\\uD558\\uB824\\uBA74\",\n      title: \"\\uD734\\uB300\\uD3F0 \\uD655\\uC778\"\n    },\n    phoneCodeMfa: {\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uB2E4\\uC2DC \\uBCF4\\uB0B4\\uAE30\",\n      subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uD734\\uB300\\uD3F0\\uC73C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"\\uD734\\uB300\\uD3F0 \\uD655\\uC778\"\n    },\n    resetPassword: {\n      formButtonPrimary: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC7AC\\uC124\\uC815\",\n      requiredMessage: \"For security reasons, it is required to reset your password.\",\n      successMessage: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC131\\uACF5\\uC801\\uC73C\\uB85C \\uBCC0\\uACBD\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uB85C\\uADF8\\uC778\\uD558\\uB294 \\uC911\\uC785\\uB2C8\\uB2E4. \\uC7A0\\uC2DC\\uB9CC \\uAE30\\uB2E4\\uB824\\uC8FC\\uC138\\uC694.\",\n      title: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC7AC\\uC124\\uC815\"\n    },\n    resetPasswordMfa: {\n      detailsLabel: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC7AC\\uC124\\uC815\\uD558\\uAE30 \\uC804\\uC5D0 \\uC2E0\\uC6D0\\uC744 \\uD655\\uC778\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\"\n    },\n    start: {\n      actionLink: \"\\uD68C\\uC6D0\\uAC00\\uC785\",\n      actionLink__use_email: \"\\uC774\\uBA54\\uC77C \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      actionLink__use_email_username: \"\\uC774\\uBA54\\uC77C \\uB610\\uB294 \\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      actionLink__use_passkey: void 0,\n      actionLink__use_phone: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      actionLink__use_username: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      actionText: \"\\uACC4\\uC815\\uC774 \\uC5C6\\uC73C\\uC2E0\\uAC00\\uC694?\",\n      subtitle: \"\\uD658\\uC601\\uD569\\uB2C8\\uB2E4! \\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uB85C\\uADF8\\uC778\\uD574 \\uC8FC\\uC138\\uC694\",\n      title: \"{{applicationName}}\\uC5D0 \\uB85C\\uADF8\\uC778\"\n    },\n    totpMfa: {\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC778\\uC99D \\uC571\\uC5D0\\uC11C \\uC0DD\\uC131\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"2\\uB2E8\\uACC4 \\uC778\\uC99D\"\n    }\n  },\n  signInEnterPasswordTitle: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n  signUp: {\n    continue: {\n      actionLink: \"\\uB85C\\uADF8\\uC778\",\n      actionText: \"\\uACC4\\uC815\\uC774 \\uC788\\uC73C\\uC2E0\\uAC00\\uC694?\",\n      subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uB204\\uB77D\\uB41C \\uD544\\uB4DC\\uC5D0 \\uAC12\\uC744 \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"\\uB204\\uB77D\\uB41C \\uD544\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\"\n    },\n    emailCode: {\n      formSubtitle: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"\\uC774\\uBA54\\uC77C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"\\uC774\\uBA54\\uC77C \\uC778\\uC99D\"\n    },\n    emailLink: {\n      clientMismatch: {\n        subtitle: void 0,\n        title: void 0\n      },\n      formSubtitle: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uB9C1\\uD06C\\uB97C \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\n      formTitle: \"\\uC778\\uC99D \\uB9C1\\uD06C\",\n      loading: {\n        title: \"\\uAC00\\uC785 \\uC911...\"\n      },\n      resendButton: \"\\uB9C1\\uD06C \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"{{applicationName}}\\uB85C \\uACC4\\uC18D\\uD558\\uB824\\uBA74\",\n      title: \"\\uC774\\uBA54\\uC77C \\uC778\\uC99D\\uD558\\uAE30\",\n      verified: {\n        title: \"\\uC131\\uACF5\\uC801\\uC73C\\uB85C \\uAC00\\uC785\\uC5D0 \\uC131\\uACF5\\uD588\\uC2B5\\uB2C8\\uB2E4\"\n      },\n      verifiedSwitchTab: {\n        subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC0C8\\uB85C \\uC5F0 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uAE30\",\n        subtitleNewTab: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC774\\uC804 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uAE30\",\n        title: \"\\uC774\\uBA54\\uC77C \\uC778\\uC99D \\uC131\\uACF5\"\n      }\n    },\n    phoneCode: {\n      formSubtitle: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694.\",\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"\\uD734\\uB300\\uD3F0\\uC73C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uC778\\uC99D\"\n    },\n    start: {\n      actionLink: \"\\uB85C\\uADF8\\uC778\\uD558\\uAE30\",\n      actionLink__use_email: void 0,\n      actionLink__use_phone: void 0,\n      actionText: \"\\uACC4\\uC815\\uC774 \\uC788\\uC73C\\uC2E0\\uAC00\\uC694?\",\n      subtitle: \"\\uD658\\uC601\\uD569\\uB2C8\\uB2E4! \\uC544\\uB798 \\uC815\\uBCF4\\uB97C \\uC785\\uB825\\uD574\\uC8FC\\uC138\\uC694.\",\n      title: \"\\uACC4\\uC815 \\uB9CC\\uB4E4\\uAE30\"\n    }\n  },\n  socialButtonsBlockButton: \"{{provider|titleize}}\\uB85C \\uACC4\\uC18D\\uD558\\uAE30\",\n  socialButtonsBlockButtonManyInView: void 0,\n  unstable__errors: {\n    captcha_invalid: \"Sign up unsuccessful due to failed security validations. Please refresh the page to try again or reach out to support for more assistance.\",\n    captcha_unavailable: \"Sign up unsuccessful due to failed bot validation. Please refresh the page to try again or reach out to support for more assistance.\",\n    form_code_incorrect: \"\",\n    form_identifier_exists: \"\",\n    form_identifier_exists__email_address: void 0,\n    form_identifier_exists__phone_number: void 0,\n    form_identifier_exists__username: void 0,\n    form_identifier_not_found: \"\",\n    form_param_format_invalid: \"\",\n    form_param_format_invalid__email_address: \"Email address must be a valid email address.\",\n    form_param_format_invalid__phone_number: \"Phone number must be in a valid international format\",\n    form_param_max_length_exceeded__first_name: \"First name should not exceed 256 characters.\",\n    form_param_max_length_exceeded__last_name: \"Last name should not exceed 256 characters.\",\n    form_param_max_length_exceeded__name: \"Name should not exceed 256 characters.\",\n    form_param_nil: \"\",\n    form_password_incorrect: \"\",\n    form_password_length_too_short: \"\",\n    form_password_not_strong_enough: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uCDA9\\uBD84\\uD788 \\uC548\\uC804\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n    form_password_pwned: \"\\uC774 \\uBE44\\uBC00\\uBC88\\uD638\\uB294 \\uC720\\uCD9C\\uC0AC\\uD56D\\uC774 \\uBC1C\\uACAC\\uB418\\uC5B4 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC73C\\uBBC0\\uB85C \\uB300\\uC2E0 \\uB2E4\\uB978 \\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC0AC\\uC6A9\\uD574 \\uBCF4\\uC138\\uC694.\",\n    form_password_pwned__sign_in: void 0,\n    form_password_size_in_bytes_exceeded: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uD5C8\\uC6A9\\uB418\\uB294 \\uCD5C\\uB300 \\uBC14\\uC774\\uD2B8 \\uC218\\uB97C \\uCD08\\uACFC\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC904\\uC774\\uAC70\\uB098 \\uC77C\\uBD80 \\uD2B9\\uC218 \\uBB38\\uC790\\uB97C \\uC81C\\uAC70\\uD574 \\uC8FC\\uC138\\uC694.\",\n    form_password_validation_failed: \"\\uC798\\uBABB\\uB41C \\uBE44\\uBC00\\uBC88\\uD638\",\n    form_username_invalid_character: \"\",\n    form_username_invalid_length: \"\",\n    identification_deletion_failed: \"You cannot delete your last identification.\",\n    not_allowed_access: \"\",\n    passkey_already_exists: void 0,\n    passkey_not_supported: void 0,\n    passkey_pa_not_supported: void 0,\n    passkey_registration_cancelled: void 0,\n    passkey_retrieval_cancelled: void 0,\n    passwordComplexity: {\n      maximumLength: \"{{length}} \\uBCF4\\uB2E4 \\uC9E7\\uC740 \\uBB38\\uC790\\uC5F4\",\n      minimumLength: \"{{length}} \\uB610\\uB294 \\uADF8 \\uC774\\uC0C1\\uC758 \\uBB38\\uC790\\uC5F4\",\n      requireLowercase: \"\\uC18C\\uBB38\\uC790\",\n      requireNumbers: \"\\uC22B\\uC790\",\n      requireSpecialCharacter: \"\\uD2B9\\uC218\\uBB38\\uC790\",\n      requireUppercase: \"\\uB300\\uBB38\\uC790\",\n      sentencePrefix: \"\\uB2F9\\uC2E0\\uC758 \\uBE44\\uBC00\\uBC88\\uD638\\uB294 \\uBC18\\uB4DC\\uC2DC \\uD3EC\\uD568\\uD574\\uC57C\\uD569\\uB2C8\\uB2E4\"\n    },\n    phone_number_exists: \"This phone number is taken. Please try another.\",\n    zxcvbn: {\n      couldBeStronger: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB294 \\uC791\\uB3D9\\uD558\\uC9C0\\uB9CC \\uB354 \\uAC15\\uB825\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uBB38\\uC790\\uB97C \\uB354 \\uCD94\\uAC00\\uD574 \\uBCF4\\uC138\\uC694.\",\n      goodPassword: \"\\uC218\\uACE0\\uD558\\uC168\\uC2B5\\uB2C8\\uB2E4. \\uD6CC\\uB96D\\uD55C \\uBE44\\uBC00\\uBC88\\uD638\\uC785\\uB2C8\\uB2E4.\",\n      notEnough: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uCDA9\\uBD84\\uD788 \\uC548\\uC804\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n      suggestions: {\n        allUppercase: \"\\uBAA8\\uB4E0 \\uBB38\\uC790\\uAC00 \\uC544\\uB2CC \\uC77C\\uBD80 \\uBB38\\uC790\\uB97C \\uB300\\uBB38\\uC790\\uB85C \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\n        anotherWord: \"\\uB35C \\uC77C\\uBC18\\uC801\\uC778 \\uB2E8\\uC5B4\\uB97C \\uB354 \\uCD94\\uAC00\\uD569\\uB2C8\\uB2E4.\",\n        associatedYears: \"\\uADC0\\uD558\\uC640 \\uC5F0\\uAD00\\uB41C \\uC5F0\\uB3C4\\uB294 \\uD53C\\uD558\\uC138\\uC694.\",\n        capitalization: \"\\uD55C \\uAE00\\uC790 \\uC774\\uC0C1\\uC744 \\uB300\\uBB38\\uC790\\uB85C \\uD45C\\uAE30\\uD558\\uC138\\uC694.\",\n        dates: \"\\uC790\\uC2E0\\uACFC \\uAD00\\uB828\\uB41C \\uB0A0\\uC9DC\\uC640 \\uC5F0\\uB3C4\\uB294 \\uD53C\\uD558\\uC138\\uC694.\",\n        l33t: \"'a'\\uC5D0\\uC11C '@'\\uC640 \\uAC19\\uC774 \\uC608\\uCE21 \\uAC00\\uB2A5\\uD55C \\uBB38\\uC790 \\uB300\\uCCB4\\uB97C \\uD53C\\uD558\\uC138\\uC694.\",\n        longerKeyboardPattern: \"\\uB354 \\uAE34 \\uD0A4\\uBCF4\\uB4DC \\uD328\\uD134\\uC744 \\uC0AC\\uC6A9\\uD558\\uACE0 \\uD0C0\\uC774\\uD551 \\uBC29\\uD5A5\\uC744 \\uC5EC\\uB7EC \\uBC88 \\uBCC0\\uACBD\\uD569\\uB2C8\\uB2E4.\",\n        noNeed: \"\\uAE30\\uD638, \\uC22B\\uC790 \\uB610\\uB294 \\uB300\\uBB38\\uC790\\uB97C \\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uACE0\\uB3C4 \\uAC15\\uB825\\uD55C \\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n        pwned: \"\\uC774 \\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uB2E4\\uB978 \\uACF3\\uC5D0\\uC11C \\uC0AC\\uC6A9\\uD558\\uB294 \\uACBD\\uC6B0 \\uBCC0\\uACBD\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\n        recentYears: \"\\uCD5C\\uADFC \\uC5F0\\uB3C4\\uB294 \\uD53C\\uD558\\uC138\\uC694.\",\n        repeated: \"\\uBC18\\uBCF5\\uB418\\uB294 \\uB2E8\\uC5B4\\uC640 \\uBB38\\uC790\\uB97C \\uD53C\\uD558\\uC138\\uC694.\",\n        reverseWords: \"\\uC77C\\uBC18\\uC801\\uC778 \\uB2E8\\uC5B4\\uC758 \\uCCA0\\uC790\\uB97C \\uAC70\\uAFB8\\uB85C \\uC4F0\\uC9C0 \\uB9C8\\uC138\\uC694.\",\n        sequences: \"\\uC77C\\uBC18\\uC801\\uC778 \\uBB38\\uC790 \\uC2DC\\uD000\\uC2A4\\uB97C \\uD53C\\uD558\\uC138\\uC694.\",\n        useWords: \"\\uC5EC\\uB7EC \\uB2E8\\uC5B4\\uB97C \\uC0AC\\uC6A9\\uD558\\uB418 \\uC77C\\uBC18\\uC801\\uC778 \\uBB38\\uAD6C\\uB294 \\uD53C\\uD558\\uC138\\uC694.\"\n      },\n      warnings: {\n        common: \"\\uC77C\\uBC18\\uC801\\uC73C\\uB85C \\uC0AC\\uC6A9\\uB418\\uB294 \\uBE44\\uBC00\\uBC88\\uD638\\uC785\\uB2C8\\uB2E4.\",\n        commonNames: \"\\uC77C\\uBC18\\uC801\\uC778 \\uC774\\uB984\\uACFC \\uC131\\uC740 \\uCD94\\uCE21\\uD558\\uAE30 \\uC27D\\uC2B5\\uB2C8\\uB2E4.\",\n        dates: \"\\uB0A0\\uC9DC\\uB294 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n        extendedRepeat: '\"abcabcabc\"\\uC640 \\uAC19\\uC774 \\uBC18\\uBCF5\\uB418\\uB294 \\uBB38\\uC790 \\uD328\\uD134\\uC740 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.',\n        keyPattern: \"\\uC9E7\\uC740 \\uD328\\uD134\\uC740 \\uCD94\\uCE21\\uD558\\uAE30 \\uC27D\\uC2B5\\uB2C8\\uB2E4.\",\n        namesByThemselves: \"\\uB2E8\\uC77C \\uC774\\uB984\\uC774\\uB098 \\uC131\\uC740 \\uCD94\\uCE21\\uD558\\uAE30 \\uC27D\\uC2B5\\uB2C8\\uB2E4.\",\n        pwned: \"\\uC778\\uD130\\uB137\\uC5D0\\uC11C \\uB370\\uC774\\uD130 \\uC720\\uCD9C\\uB85C \\uC778\\uD574 \\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uB178\\uCD9C\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n        recentYears: \"\\uCD5C\\uADFC\\uC5F0\\uB3C4\\uB294 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n        sequences: '\"abc\"\\uC640 \\uAC19\\uC740 \\uC77C\\uBC18\\uC801\\uC778 \\uBB38\\uC790 \\uC2DC\\uD000\\uC2A4\\uB294 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.',\n        similarToCommon: \"\\uC77C\\uBC18\\uC801\\uC73C\\uB85C \\uC0AC\\uC6A9\\uB418\\uB294 \\uBE44\\uBC00\\uBC88\\uD638\\uC640 \\uC720\\uC0AC\\uD569\\uB2C8\\uB2E4.\",\n        simpleRepeat: '\"aaa\"\\uC640 \\uAC19\\uC774 \\uBC18\\uBCF5\\uB418\\uB294 \\uBB38\\uC790\\uB294 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.',\n        straightRow: \"\\uAC19\\uC740 \\uC904\\uC5D0 \\uC704\\uCE58\\uD55C \\uD0A4\\uBCF4\\uB4DC\\uB97C \\uC0AC\\uC6A9\\uD558\\uB294 \\uAC83\\uC740 \\uCD94\\uCE21\\uD558\\uAE30 \\uC27D\\uC2B5\\uB2C8\\uB2E4.\",\n        topHundred: \"\\uC790\\uC8FC \\uC0AC\\uC6A9\\uB418\\uB294 \\uBE44\\uBC00\\uBC88\\uD638\\uC785\\uB2C8\\uB2E4.\",\n        topTen: \"\\uC544\\uC8FC \\uB9CE\\uC774 \\uC0AC\\uC6A9\\uB418\\uB294 \\uBE44\\uBC00\\uBC88\\uD638\\uC785\\uB2C8\\uB2E4.\",\n        userInputs: \"\\uAC1C\\uC778 \\uC815\\uBCF4\\uB098 \\uD398\\uC774\\uC9C0 \\uAD00\\uB828 \\uB370\\uC774\\uD130\\uAC00 \\uC5C6\\uC5B4\\uC57C \\uD569\\uB2C8\\uB2E4.\",\n        wordByItself: \"\\uD55C \\uB2E8\\uC5B4\\uB294 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n      }\n    }\n  },\n  userButton: {\n    action__addAccount: \"\\uACC4\\uC815 \\uCD94\\uAC00\",\n    action__manageAccount: \"\\uACC4\\uC815 \\uAD00\\uB9AC\",\n    action__signOut: \"\\uB85C\\uADF8\\uC544\\uC6C3\",\n    action__signOutAll: \"\\uBAA8\\uB4E0 \\uACC4\\uC815\\uC5D0\\uC11C \\uB85C\\uADF8\\uC544\\uC6C3\"\n  },\n  userProfile: {\n    backupCodePage: {\n      actionLabel__copied: \"\\uBCF5\\uC0AC \\uC644\\uB8CC!\",\n      actionLabel__copy: \"\\uC804\\uCCB4 \\uBCF5\\uC0AC\",\n      actionLabel__download: \".txt \\uB2E4\\uC6B4\\uB85C\\uB4DC\",\n      actionLabel__print: \"\\uC778\\uC1C4\",\n      infoText1: \"\\uC774 \\uACC4\\uC815\\uC5D0 \\uB300\\uD574 \\uBC31\\uC5C5 \\uCF54\\uB4DC\\uAC00 \\uD65C\\uC131\\uD654\\uB429\\uB2C8\\uB2E4.\",\n      infoText2: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC\\uB97C \\uBE44\\uBC00\\uB85C \\uC720\\uC9C0\\uD558\\uACE0 \\uC548\\uC804\\uD558\\uAC8C \\uBCF4\\uAD00\\uD558\\uC138\\uC694. \\uBC31\\uC5C5 \\uCF54\\uB4DC\\uAC00 \\uC190\\uC0C1\\uB41C \\uAC83\\uC73C\\uB85C \\uC758\\uC2EC\\uB418\\uB294 \\uACBD\\uC6B0 \\uBC31\\uC5C5 \\uCF54\\uB4DC\\uB97C \\uB2E4\\uC2DC \\uC0DD\\uC131\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      subtitle__codelist: \"\\uC548\\uC804\\uD558\\uAC8C \\uC800\\uC7A5\\uD558\\uACE0 \\uBE44\\uBC00\\uB85C \\uC720\\uC9C0\\uD558\\uC138\\uC694.\",\n      successMessage: \"\\uC774\\uC81C \\uBC31\\uC5C5 \\uCF54\\uB4DC\\uAC00 \\uD65C\\uC131\\uD654\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uC778\\uC99D \\uC7A5\\uCE58\\uC5D0 \\uC561\\uC138\\uC2A4\\uD560 \\uC218 \\uC5C6\\uB294 \\uACBD\\uC6B0 \\uC774 \\uC911 \\uD558\\uB098\\uB97C \\uC0AC\\uC6A9\\uD558\\uC5EC \\uACC4\\uC815\\uC5D0 \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uAC01 \\uCF54\\uB4DC\\uB294 \\uD55C \\uBC88\\uB9CC \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      successSubtitle: \"\\uC778\\uC99D \\uC7A5\\uCE58\\uC5D0 \\uC561\\uC138\\uC2A4\\uD560 \\uC218 \\uC5C6\\uB294 \\uACBD\\uC6B0 \\uC774 \\uC911 \\uD558\\uB098\\uB97C \\uC0AC\\uC6A9\\uD558\\uC5EC \\uACC4\\uC815\\uC5D0 \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC \\uC778\\uC99D \\uCD94\\uAC00\",\n      title__codelist: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC\"\n    },\n    connectedAccountPage: {\n      formHint: \"\\uACC4\\uC815\\uC744 \\uC5F0\\uACB0\\uD560 \\uC81C\\uACF5\\uC790\\uB97C \\uC120\\uD0DD\\uD558\\uC138\\uC694\",\n      formHint__noAccounts: \"\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uC678\\uBD80 \\uACC4\\uC815 \\uC81C\\uACF5\\uC790\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n      removeResource: {\n        messageLine1: \"{{identifier}}\\uAC00 \\uC774 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70 \\uB420 \\uC608\\uC815\\uC785\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uC774 \\uC5F0\\uACB0\\uB41C \\uACC4\\uC815\\uC744 \\uB354 \\uC774\\uC0C1 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC73C\\uBA70 \\uC885\\uC18D\\uB41C \\uBAA8\\uB4E0 \\uAE30\\uB2A5\\uC774 \\uB354 \\uC774\\uC0C1 \\uC791\\uB3D9\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n        successMessage: \"{{connectedAccount}}\\uAC00 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n        title: \"\\uC5F0\\uACB0\\uB41C \\uACC4\\uC815 \\uC81C\\uAC70\"\n      },\n      socialButtonsBlockButton: \"{{provider|titleize}} \\uACC4\\uC815 \\uC5F0\\uACB0\",\n      successMessage: \"\\uC774 \\uC81C\\uACF5\\uC790\\uAC00 \\uACC4\\uC815\\uC5D0 \\uCD94\\uAC00\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uC5F0\\uACB0\\uB41C \\uACC4\\uC815 \\uCD94\\uAC00\\uD558\\uAE30\"\n    },\n    deletePage: {\n      actionDescription: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC544\\uB798\\uC5D0 \\uACC4\\uC815 \\uC0AD\\uC81C\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694.\",\n      confirm: \"\\uACC4\\uC815 \\uC0AD\\uC81C\",\n      messageLine1: \"\\uC815\\uB9D0\\uB85C \\uACC4\\uC815\\uC744 \\uC0AD\\uC81C\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\n      messageLine2: \"\\uC774 \\uC791\\uC5C5\\uC740 \\uC601\\uAD6C\\uC801\\uC774\\uBA70 \\uB418\\uB3CC\\uB9B4 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uACC4\\uC815 \\uC0AD\\uC81C\"\n    },\n    emailAddressPage: {\n      emailCode: {\n        formHint: \"\\uC774 \\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB85C \\uC778\\uC99D \\uCF54\\uB4DC\\uAC00 \\uD3EC\\uD568\\uB41C \\uC774\\uBA54\\uC77C\\uC774 \\uC804\\uC1A1\\uB429\\uB2C8\\uB2E4.\",\n        formSubtitle: \"{{identifier}}\\uC5D0\\uAC8C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD569\\uB2C8\\uB2E4\",\n        formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n        resendButton: \"\\uCF54\\uB4DC \\uC7AC\\uC804\\uC1A1\",\n        successMessage: \"{{identifier}} \\uC774\\uBA54\\uC77C\\uC774 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0 \\uCD94\\uAC00\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\"\n      },\n      emailLink: {\n        formHint: \"\\uC778\\uC99D \\uB9C1\\uD06C\\uAC00 \\uD3EC\\uD568\\uB41C \\uC774\\uBA54\\uC77C\\uC774 \\uC774 \\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB85C \\uC804\\uC1A1\\uB429\\uB2C8\\uB2E4.\",\n        formSubtitle: \"{{identifier}}\\uC5D0\\uAC8C \\uC804\\uC1A1\\uB41C \\uC774\\uBA54\\uC77C\\uC758 \\uB9C1\\uD06C\\uB97C \\uD074\\uB9AD\\uD569\\uB2C8\\uB2E4.\",\n        formTitle: \"\\uC778\\uC99D \\uB9C1\\uD06C\",\n        resendButton: \"\\uB9C1\\uD06C \\uC7AC\\uC804\\uC1A1\",\n        successMessage: \"{{identifier}} \\uC774\\uBA54\\uC77C\\uC774 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0 \\uCD94\\uAC00\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\"\n      },\n      removeResource: {\n        messageLine1: \"{{identifier}} \\uC774\\uBA54\\uC77C\\uC774 \\uC774 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70 \\uB420 \\uC5D0\\uC815\\uC785\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uB354 \\uC774\\uC0C1 \\uC774 \\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB85C \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n        successMessage: \"{{emailAddress}} \\uC774\\uBA54\\uC77C\\uC774 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0\\uC11C \\uC0AD\\uC81C\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4\",\n        title: \"\\uC774\\uBA54\\uC77C \\uC81C\\uAC70\"\n      },\n      title: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C \\uCD94\\uAC00\",\n      verifyTitle: \"Verify email address\"\n    },\n    formButtonPrimary__add: \"Add\",\n    formButtonPrimary__continue: \"\\uACC4\\uC18D\",\n    formButtonPrimary__finish: \"\\uC644\\uB8CC\",\n    formButtonPrimary__remove: \"Remove\",\n    formButtonPrimary__save: \"Save\",\n    formButtonReset: \"\\uCDE8\\uC18C\",\n    mfaPage: {\n      formHint: \"\\uCD94\\uAC00\\uD560 \\uBC29\\uBC95\\uC744 \\uC120\\uD0DD\\uD569\\uB2C8\\uB2E4.\",\n      title: \"2\\uB2E8\\uACC4 \\uC778\\uC99D \\uCD94\\uAC00\"\n    },\n    mfaPhoneCodePage: {\n      backButton: \"Use existing number\",\n      primaryButton__addPhoneNumber: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uCD94\\uAC00\",\n      removeResource: {\n        messageLine1: \"{{identifier}}\\uB294 \\uB85C\\uADF8\\uC778\\uD560 \\uB54C \\uB354 \\uC774\\uC0C1 \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uBC1B\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uACC4\\uC815\\uC774 \\uC548\\uC804\\uD558\\uC9C0 \\uC54A\\uC744 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uACC4\\uC18D\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\n        successMessage: \"{{mfaPhoneCode}}\\uC5D0 \\uB300\\uD55C SMS \\uCF54\\uB4DC 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC774 \\uC81C\\uAC70\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4\",\n        title: \"2\\uB2E8\\uACC4 \\uC778\\uC99D \\uC81C\\uAC70\"\n      },\n      subtitle__availablePhoneNumbers: \"SMS \\uCF54\\uB4DC 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC744 \\uC704\\uD574 \\uB4F1\\uB85D\\uD560 \\uD734\\uB300\\uD3F0 \\uBC88\\uD638\\uB97C \\uC120\\uD0DD\\uD558\\uC138\\uC694.\",\n      subtitle__unavailablePhoneNumbers: \"SMS \\uCF54\\uB4DC 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC5D0 \\uB4F1\\uB85D\\uD560 \\uC218 \\uC788\\uB294 \\uD734\\uB300\\uD3F0 \\uBC88\\uD638\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n      successMessage1: \"When signing in, you will need to enter a verification code sent to this phone number as an additional step.\",\n      successMessage2: \"Save these backup codes and store them somewhere safe. If you lose access to your authentication device, you can use backup codes to sign in.\",\n      successTitle: \"SMS code verification enabled\",\n      title: \"SMS \\uCF54\\uB4DC \\uC778\\uC99D \\uCD94\\uAC00\"\n    },\n    mfaTOTPPage: {\n      authenticatorApp: {\n        buttonAbleToScan__nonPrimary: \"\\uB300\\uC2E0 QR \\uCF54\\uB4DC \\uC2A4\\uCE94 \\uD558\\uC138\\uC694\",\n        buttonUnableToScan__nonPrimary: \"QR \\uCF54\\uB4DC\\uB97C \\uC2A4\\uCE94\\uD560 \\uC218 \\uC5C6\\uB098\\uC694?\",\n        infoText__ableToScan: \"\\uC778\\uC99D \\uC571\\uC5D0\\uC11C \\uC0C8 \\uB85C\\uADF8\\uC778 \\uBC29\\uBC95\\uC744 \\uC124\\uC815\\uD558\\uACE0 \\uB2E4\\uC74C QR \\uCF54\\uB4DC\\uB97C \\uC2A4\\uCE94\\uD558\\uC5EC \\uACC4\\uC815\\uC5D0 \\uC5F0\\uACB0\\uD569\\uB2C8\\uB2E4.\",\n        infoText__unableToScan: \"\\uC778\\uC99D \\uC7A5\\uCE58\\uC5D0\\uC11C \\uC0C8 \\uB85C\\uADF8\\uC778 \\uBC29\\uBC95\\uC744 \\uC124\\uC815\\uD558\\uACE0 \\uC544\\uB798\\uC5D0 \\uC81C\\uACF5\\uB41C \\uD0A4\\uB97C \\uC785\\uB825\\uD569\\uB2C8\\uB2E4.\",\n        inputLabel__unableToScan1: \"\\uC2DC\\uAC04 \\uAE30\\uBC18 \\uB610\\uB294 \\uC77C\\uD68C\\uC6A9 \\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC0AC\\uC6A9 \\uC124\\uC815\\uB418\\uC5B4 \\uC788\\uB294\\uC9C0 \\uD655\\uC778\\uD55C \\uB2E4\\uC74C \\uACC4\\uC815 \\uC5F0\\uACB0\\uC744 \\uC644\\uB8CC\\uD569\\uB2C8\\uB2E4.\",\n        inputLabel__unableToScan2: \"\\uB610\\uB294 \\uC778\\uC99D\\uC790\\uAC00 TOTP URI\\uB97C \\uC9C0\\uC6D0\\uD558\\uB294 \\uACBD\\uC6B0 \\uC804\\uCCB4 URI\\uB97C \\uBCF5\\uC0AC\\uD560 \\uC218\\uB3C4 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n      },\n      removeResource: {\n        messageLine1: \"\\uB85C\\uADF8\\uC778\\uD560 \\uB54C \\uB354 \\uC774\\uC0C1 \\uC774 \\uC778\\uC99D\\uC790\\uC758 \\uC778\\uC99D \\uCF54\\uB4DC\\uAC00 \\uD544\\uC694\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uACC4\\uC815\\uC774 \\uC548\\uC804\\uD558\\uC9C0 \\uC54A\\uC744 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uACC4\\uC18D \\uC9C4\\uD589\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\n        successMessage: \"\\uC778\\uC99D\\uC790 \\uC560\\uD50C\\uB9AC\\uCF00\\uC774\\uC158\\uC744 \\uD1B5\\uD55C 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC774 \\uC81C\\uAC70\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n        title: \"2\\uB2E8\\uACC4 \\uC778\\uC99D \\uC81C\\uAC70\"\n      },\n      successMessage: \"\\uC774\\uC81C 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC774 \\uD65C\\uC131\\uD654\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uB85C\\uADF8\\uC778\\uD560 \\uB54C \\uCD94\\uAC00 \\uB2E8\\uACC4\\uB85C \\uC774 \\uC778\\uC99D\\uC790\\uC758 \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\n      title: \"\\uC778\\uC99D \\uC560\\uD50C\\uB9AC\\uCF00\\uC774\\uC158 \\uCD94\\uAC00\",\n      verifySubtitle: \"\\uC778\\uC99D\\uC790\\uAC00 \\uC0DD\\uC131\\uD55C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD569\\uB2C8\\uB2E4\",\n      verifyTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\"\n    },\n    mobileButton__menu: \"\\uBA54\\uB274\",\n    navbar: {\n      account: \"\\uD504\\uB85C\\uD544\",\n      description: \"\\uACC4\\uC815 \\uC815\\uBCF4\\uB97C \\uAD00\\uB9AC\\uD558\\uC138\\uC694.\",\n      security: \"\\uBCF4\\uC548\",\n      title: \"\\uACC4\\uC815\"\n    },\n    passkeyScreen: {\n      removeResource: {\n        messageLine1: void 0,\n        title: void 0\n      },\n      subtitle__rename: void 0,\n      title__rename: void 0\n    },\n    passwordPage: {\n      checkboxInfoText__signOutOfOtherSessions: \"It is recommended to sign out of all other devices which may have used your old password.\",\n      readonly: \"Your password can currently not be edited because you can sign in only via the enterprise connection.\",\n      successMessage__set: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC124\\uC815\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      successMessage__signOutOfOtherSessions: \"\\uB2E4\\uB978 \\uBAA8\\uB4E0 \\uAE30\\uAE30\\uB294 \\uB85C\\uADF8\\uC544\\uC6C3\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      successMessage__update: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC5C5\\uB370\\uC774\\uD2B8\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title__set: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC124\\uC815\",\n      title__update: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uBCC0\\uACBD\"\n    },\n    phoneNumberPage: {\n      infoText: \"\\uC778\\uC99D \\uB9C1\\uD06C\\uAC00 \\uD3EC\\uD568\\uB41C \\uBB38\\uC790 \\uBA54\\uC2DC\\uC9C0\\uAC00 \\uC774 \\uD734\\uB300\\uD3F0 \\uBC88\\uD638\\uB85C \\uC804\\uC1A1\\uB429\\uB2C8\\uB2E4.\",\n      removeResource: {\n        messageLine1: \"{{identifier}}\\uAC00 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70 \\uB420 \\uC608\\uC815\\uC785\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uB354 \\uC774\\uC0C1 \\uC774 \\uD734\\uB300\\uD3F0 \\uBC88\\uD638\\uB85C \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n        successMessage: \"{{phoneNumber}}\\uAC00 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n        title: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uC81C\\uAC70\"\n      },\n      successMessage: \"{{identifier}}\\uAC00 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0 \\uCD94\\uAC00\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uCD94\\uAC00\",\n      verifySubtitle: \"Enter the verification code sent to {{identifier}}\",\n      verifyTitle: \"Verify phone number\"\n    },\n    profilePage: {\n      fileDropAreaHint: \"10MB\\uBCF4\\uB2E4 \\uC791\\uC740 JPG, PNG, GIF \\uB610\\uB294 WEBP \\uC774\\uBBF8\\uC9C0\\uB97C \\uC5C5\\uB85C\\uB4DC\\uD569\\uB2C8\\uB2E4\",\n      imageFormDestructiveActionSubtitle: \"\\uC774\\uBBF8\\uC9C0 \\uC81C\\uAC70\",\n      imageFormSubtitle: \"\\uC774\\uBBF8\\uC9C0 \\uC5C5\\uB85C\\uB4DC\",\n      imageFormTitle: \"\\uD504\\uB85C\\uD544 \\uC774\\uBBF8\\uC9C0\",\n      readonly: \"Your profile information has been provided by the enterprise connection and cannot be edited.\",\n      successMessage: \"\\uD504\\uB85C\\uD544\\uC774 \\uC5C5\\uB370\\uC774\\uD2B8\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uD504\\uB85C\\uD544 \\uC5C5\\uB370\\uC774\\uD2B8\"\n    },\n    start: {\n      activeDevicesSection: {\n        destructiveAction: \"\\uC774 \\uC7A5\\uCE58\\uC5D0\\uC11C \\uB85C\\uADF8\\uC544\\uC6C3\",\n        title: \"\\uD65C\\uC131\\uD654\\uB41C \\uC7A5\\uCE58\"\n      },\n      connectedAccountsSection: {\n        actionLabel__connectionFailed: \"\\uC7AC\\uC2DC\\uB3C4\",\n        actionLabel__reauthorize: \"\\uC9C0\\uAE08 \\uC778\\uC99D\\uD558\\uAE30\",\n        destructiveActionTitle: \"\\uC81C\\uAC70\",\n        primaryButton: \"\\uACC4\\uC815 \\uC5F0\\uACB0\\uD558\\uAE30\",\n        subtitle__disconnected: void 0,\n        subtitle__reauthorize: \"The required scopes have been updated, and you may be experiencing limited functionality. Please re-authorize this application to avoid any issues\",\n        title: \"\\uC5F0\\uACB0\\uB41C \\uACC4\\uC815\"\n      },\n      dangerSection: {\n        deleteAccountButton: \"\\uACC4\\uC815 \\uC0AD\\uC81C\",\n        title: \"\\uC704\\uD5D8\"\n      },\n      emailAddressesSection: {\n        destructiveAction: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C \\uC81C\\uAC70\",\n        detailsAction__nonPrimary: \"\\uAE30\\uBCF8\\uC73C\\uB85C \\uC124\\uC815\",\n        detailsAction__primary: \"\\uC778\\uC99D \\uC644\\uB8CC\",\n        detailsAction__unverified: \"\\uC778\\uC99D \\uC644\\uB8CC\",\n        primaryButton: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C \\uCD94\\uAC00\",\n        title: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\"\n      },\n      enterpriseAccountsSection: {\n        title: \"\\uAE30\\uC5C5 \\uACC4\\uC815\"\n      },\n      headerTitle__account: \"\\uD504\\uB85C\\uD544\",\n      headerTitle__security: \"\\uBCF4\\uC548\",\n      mfaSection: {\n        backupCodes: {\n          actionLabel__regenerate: \"\\uCF54\\uB4DC \\uC7AC\\uC0DD\\uC131\",\n          headerTitle: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC\",\n          subtitle__regenerate: \"\\uC0C8\\uB85C\\uC6B4 \\uBCF4\\uC548 \\uBC31\\uC5C5 \\uCF54\\uB4DC \\uC138\\uD2B8\\uB97C \\uBC1B\\uC73C\\uC138\\uC694. \\uC774\\uC804 \\uBC31\\uC5C5 \\uCF54\\uB4DC\\uB294 \\uC0AD\\uC81C\\uB418\\uBA70 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n          title__regenerate: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC \\uC7AC\\uC0DD\\uC131\"\n        },\n        phoneCode: {\n          actionLabel__setDefault: \"\\uAE30\\uBCF8\\uC73C\\uB85C \\uC124\\uC815\",\n          destructiveActionLabel: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uC81C\\uAC70\"\n        },\n        primaryButton: \"2\\uB2E8\\uACC4 \\uC778\\uC99D \\uCD94\\uAC00\",\n        title: \"2\\uB2E8\\uACC4 \\uC778\\uC99D\",\n        totp: {\n          destructiveActionTitle: \"\\uC81C\\uAC70\",\n          headerTitle: \"\\uC778\\uC99D \\uC560\\uD50C\\uB9AC\\uCF00\\uC774\\uC158\"\n        }\n      },\n      passkeysSection: {\n        menuAction__destructive: void 0,\n        menuAction__rename: void 0,\n        title: void 0\n      },\n      passwordSection: {\n        primaryButton__setPassword: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC124\\uC815\",\n        primaryButton__updatePassword: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uBCC0\\uACBD\",\n        title: \"\\uBE44\\uBC00\\uBC88\\uD638\"\n      },\n      phoneNumbersSection: {\n        destructiveAction: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uC81C\\uAC70\",\n        detailsAction__nonPrimary: \"\\uAE30\\uBCF8\\uC73C\\uB85C \\uC124\\uC815\",\n        detailsAction__primary: \"\\uC778\\uC99D \\uC644\\uB8CC\",\n        detailsAction__unverified: \"\\uC778\\uC99D \\uC644\\uB8CC\",\n        primaryButton: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uCD94\\uAC00\",\n        title: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638\"\n      },\n      profileSection: {\n        primaryButton: \"\\uD504\\uB85C\\uD544 \\uC218\\uC815\",\n        title: \"\\uD504\\uB85C\\uD544\"\n      },\n      usernameSection: {\n        primaryButton__setUsername: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uC124\\uC815\",\n        primaryButton__updateUsername: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uBCC0\\uACBD\",\n        title: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984\"\n      },\n      web3WalletsSection: {\n        destructiveAction: \"\\uC9C0\\uAC11 \\uC81C\\uAC70\",\n        primaryButton: \"Web3 \\uC9C0\\uAC11\",\n        title: \"Web3 \\uC9C0\\uAC11\"\n      }\n    },\n    usernamePage: {\n      successMessage: \"\\uB2F9\\uC2E0\\uC76D \\uC0AC\\uC6A9\\uC790 \\uC774\\uB984\\uC774 \\uC5C5\\uB370\\uC774\\uD2B8\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title__set: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uC5C5\\uB370\\uC774\\uD2B8\",\n      title__update: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uC5C5\\uB370\\uC774\\uD2B8\"\n    },\n    web3WalletPage: {\n      removeResource: {\n        messageLine1: \"{{identifier}}\\uAC00 \\uC774 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70 \\uB420 \\uC608\\uC815\\uC785\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uB354 \\uC774\\uC0C1 \\uC774 web3 \\uC9C0\\uAC11\\uC744 \\uC0AC\\uC6A9\\uD558\\uC5EC \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n        successMessage: \"{{web3Wallet}}\\uAC00 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n        title: \"web3 \\uC9C0\\uAC11 \\uC81C\\uAC70\"\n      },\n      subtitle__availableWallets: \"\\uACC4\\uC815\\uC5D0 \\uC5F0\\uACB0\\uD560 web3 \\uC9C0\\uAC11\\uC744 \\uC120\\uD0DD\\uD558\\uC138\\uC694.\",\n      subtitle__unavailableWallets: \"\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C web3 \\uC9C0\\uAC11\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n      successMessage: \"\\uC9C0\\uAC11\\uC774 \\uACC4\\uC815\\uC5D0 \\uCD94\\uAC00\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4\\xDF.\",\n      title: \"web3 \\uC9C0\\uAC11 \\uCD94\\uAC00\"\n    }\n  }\n};\n\n// src/auth/Init.tsx\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction Init(props) {\n  const { databaseURL, anonKey } = props;\n  const [store, setStore] = useGlobalStore();\n  const { clerk, supabase, user } = store;\n  useEffect(() => {\n    triggerConversionAPI({ event_name: \"PageView\" });\n  }, []);\n  useEffect(() => {\n    console.log(\"load script\");\n    const script = document.createElement(\"script\");\n    script.async = true;\n    script.crossOrigin = \"anonymous\";\n    script.dataset.clerkPublishableKey = PUBLISHABLE_KEY;\n    script.src = CLERK_SRC;\n    script.type = \"text/javascript\";\n    document.head.appendChild(script);\n    return () => {\n      console.log(\"remove script\");\n      document.head.removeChild(script);\n    };\n  }, []);\n  useEffect(() => {\n    const script1 = document.createElement(\"script\");\n    script1.async = true;\n    script1.src = \"https://www.googletagmanager.com/gtag/js?id=AW-17376406129\";\n    document.head.appendChild(script1);\n    const script2 = document.createElement(\"script\");\n    script2.innerHTML = `\n      window.dataLayer = window.dataLayer || [];\n      function gtag(){dataLayer.push(arguments);}\n      gtag('js', new Date());\n\n      gtag('config', 'AW-17376406129');\n    `;\n    document.head.appendChild(script2);\n    return () => {\n      document.head.removeChild(script1);\n      document.head.removeChild(script2);\n    };\n  }, []);\n  const seconds = useCountdown(3);\n  useEffect(() => {\n    console.log(\"seconds\", seconds);\n    console.log({ clerk, Clerk: typeof Clerk });\n    if (seconds == 0 && typeof Clerk && !clerk) loadClerk({ setStore });\n  }, [seconds]);\n  useWindowLoad(() => __async(null, null, function* () {\n    console.log(\"Window loaded\");\n    loadClerk({ setStore });\n  }));\n  useEffect(() => {\n    if (store.supabase == null || store.supabase == void 0) {\n      const supabase2 = createClient(databaseURL, anonKey);\n      setStore({ supabase: supabase2 });\n    }\n  }, []);\n  useEffect(() => {\n    if (clerk == null ? void 0 : clerk.user) initUser({ supabase, clerkUser: clerk.user, setStore });\n  }, [clerk, supabase]);\n  const tailwindLoaded = useTailwind();\n  if (!showDebug) return;\n  return /* @__PURE__ */ jsxs(\"ul\", { children: [\n    /* @__PURE__ */ jsxs(\"li\", { children: [\n      clerk ? /* @__PURE__ */ jsx(\"span\", { className: \"text-green-500\", children: \"loaded\" }) : \"loading..\",\n      \" \",\n      \"(clerk)\"\n    ] }),\n    /* @__PURE__ */ jsxs(\"li\", { children: [\n      supabase ? /* @__PURE__ */ jsx(\"span\", { className: \"text-green-500\", children: \"loaded\" }) : \"loading..\",\n      \" \",\n      \"(supabase)\"\n    ] }),\n    /* @__PURE__ */ jsxs(\"li\", { children: [\n      user ? /* @__PURE__ */ jsx(\"span\", { className: \"text-green-500\", children: \"loaded\" }) : \"loading..\",\n      \" \",\n      \"(user)\"\n    ] }),\n    /* @__PURE__ */ jsx(\"br\", {}),\n    /* @__PURE__ */ jsxs(\"li\", { children: [\n      tailwindLoaded ? /* @__PURE__ */ jsx(\"span\", { className: \"text-green-500\", children: \"loaded\" }) : \"loading..\",\n      \"(tailwind)\"\n    ] })\n  ] });\n}\nfunction loadClerk(_0) {\n  return __async(this, arguments, function* ({ setStore }) {\n    yield Clerk.load({\n      localization: koKR\n      // signInForceRedirectUrl: \"https://harbor.school/my-courses\", // not working\n    });\n    console.log(\"ClerkJS is loaded\");\n    setStore({ clerk: Clerk });\n  });\n}\nvar useWindowLoad = (asyncCallback) => {\n  const [loaded, setLoaded] = useState(false);\n  useLayoutEffect(() => {\n    const onLoad = () => __async(null, null, function* () {\n      yield asyncCallback();\n      setLoaded(true);\n    });\n    window.addEventListener(\"load\", onLoad);\n    return () => {\n      window.removeEventListener(\"load\", onLoad);\n    };\n  }, [asyncCallback]);\n  return loaded;\n};\nvar useCountdown = (initialSeconds) => {\n  const [seconds, setSeconds] = useState(initialSeconds);\n  useEffect(() => {\n    if (seconds <= 0) {\n      return;\n    }\n    const intervalId = setInterval(() => {\n      setSeconds((prevSeconds) => prevSeconds - 1);\n    }, 1e3);\n    return () => clearInterval(intervalId);\n  }, [seconds]);\n  return seconds;\n};\nfunction initUser(_0) {\n  return __async(this, arguments, function* ({ supabase, clerkUser, setStore }) {\n    const email = clerkUser.primaryEmailAddress.emailAddress;\n    const { data, error } = yield supabase.from(\"users\").select().eq(\"email\", email);\n    console.log(\"data\", data);\n    if (data.length >= 1) setStore({ user: data[0] });\n    else {\n      const { data: created, error: error2 } = yield supabase.from(\"users\").insert({\n        email,\n        username: clerkUser.fullName\n      }).select();\n      console.log(\"error\", error2);\n      console.log(\"created\", created);\n      setStore({ user: created[0] });\n    }\n  });\n}\nInit.propertyControls = {\n  databaseURL: {\n    title: \"DB URL\",\n    type: ControlType.String,\n    defaultValue: \"\"\n  },\n  anonKey: {\n    type: ControlType.String,\n    defaultValue: \"\"\n  }\n};\n\nexport {\n  Init\n};\n","import {\n  Spinner\n} from \"./chunk-SDKSBXQ2.mjs\";\nimport {\n  isDev\n} from \"./chunk-XHUQFNFZ.mjs\";\nimport {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\n\n// src/auth/Login.tsx\nimport { useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction Login(props) {\n  const [store, setStore] = useGlobalStore();\n  const { clerk, user } = store;\n  useEffect(() => {\n    if (!clerk) return;\n    if (!clerk.user) {\n      const signInDiv = document.getElementById(\"sign-in\");\n      const signInProps = {\n        afterSignInUrl: \"/my-courses\",\n        afterSignUpUrl: \"/courses\"\n      };\n      console.log(\"signInProps\", signInProps);\n      clerk.mountSignIn(signInDiv, signInProps);\n    }\n  }, [clerk]);\n  if (!clerk && !isDev)\n    return /* @__PURE__ */ jsx(\"div\", { style: { display: \"flex\", justifyContent: \"center\" }, children: /* @__PURE__ */ jsx(Spinner, { style: { width: 24, height: 24 } }) });\n  return /* @__PURE__ */ jsxs(\"div\", { children: [\n    /* @__PURE__ */ jsx(\"style\", { children: `\n            .cl-internal-b3fm6y {\n                display: none !important;\n            }\n        ` }),\n    !(clerk == null ? void 0 : clerk.user) && /* @__PURE__ */ jsx(\"div\", { style: { display: \"flex\", justifyContent: \"center\" }, children: /* @__PURE__ */ jsx(\"div\", { id: \"sign-in\" }) })\n  ] });\n}\n\nexport {\n  Login\n};\n","import {\n  MenuItem\n} from \"./chunk-SDKSBXQ2.mjs\";\nimport {\n  afterSignOutUrl\n} from \"./chunk-HQBHGXH5.mjs\";\nimport {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\n\n// src/auth/UserButton.tsx\nimport { useEffect } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction UserButton(props) {\n  const [store, setStore] = useGlobalStore();\n  const { clerk, user } = store;\n  useEffect(() => {\n    if (!clerk) return;\n    if (clerk.user) {\n      const userButtonDiv = document.getElementById(\"user-button\");\n      clerk.mountUserButton(userButtonDiv, { afterSignOutUrl });\n    }\n  }, [clerk]);\n  if (!clerk) return /* @__PURE__ */ jsx(MenuItem, { title: \"...\" });\n  return /* @__PURE__ */ jsxs(Fragment, { children: [\n    /* @__PURE__ */ jsx(\"style\", { children: `\n            .cl-userButtonPopoverActionButton__manageAccount, .cl-userButtonPopoverFooter {\n                display: none !important;\n            }\n        ` }),\n    (clerk == null ? void 0 : clerk.user) ? /* @__PURE__ */ jsxs(\n      \"div\",\n      {\n        style: {\n          display: \"flex\",\n          gap: 36,\n          justifyContent: \"end\"\n        },\n        className: \"flex-col md:flex-row items-start md:items-center\",\n        children: [\n          /* @__PURE__ */ jsx(\n            MenuItem,\n            {\n              title: \"\\uB0B4 \\uAC15\\uC758\\uC2E4\",\n              onClick: () => window.open(`/my-courses`, \"_self\")\n            }\n          ),\n          /* @__PURE__ */ jsx(\"div\", { id: \"user-button\" })\n        ]\n      }\n    ) : /* @__PURE__ */ jsx(\n      MenuItem,\n      {\n        title: \"\\uB85C\\uADF8\\uC778\",\n        onClick: () => window.open(`/login`, \"_self\")\n      }\n    )\n  ] });\n}\n\nexport {\n  UserButton\n};\n","import {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-JWK35I2R.mjs\";\n\n// src/CompareImage.tsx\nimport { ControlType } from \"framer\";\n\n// node_modules/.pnpm/react-compare-slider@3.1.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-compare-slider/dist/index.mjs\nimport { forwardRef as be, useCallback as P, useEffect as k, useImperativeHandle as He, useRef as M, useState as V } from \"react\";\nimport { forwardRef as ee } from \"react\";\nimport { jsx as te } from \"react/jsx-runtime\";\nimport { jsx as H, jsxs as ne } from \"react/jsx-runtime\";\nimport { useCallback as ge, useEffect as O, useLayoutEffect as Le, useRef as N } from \"react\";\nimport { jsx as Y, jsxs as xe } from \"react/jsx-runtime\";\nimport { forwardRef as we } from \"react\";\nimport { jsx as Ae } from \"react/jsx-runtime\";\nimport { useRef as De } from \"react\";\nvar B = ee((_a, r) => {\n  var _b = _a, { transition: e } = _b, t = __objRest(_b, [\"transition\"]);\n  let o = { position: \"absolute\", top: 0, left: 0, width: \"100%\", height: \"100%\", transition: e ? `clip-path ${e}` : void 0, userSelect: \"none\", willChange: \"clip-path, transition\", KhtmlUserSelect: \"none\", MozUserSelect: \"none\", WebkitUserSelect: \"none\" };\n  return te(\"div\", __spreadProps(__spreadValues({}, t), { style: o, \"data-rcs\": \"clip-item\", ref: r }));\n});\nB.displayName = \"ContainerClip\";\nvar W = ee(({ children: e, disabled: t, portrait: r, position: o, transition: i }, m) => {\n  let u = { position: \"absolute\", top: 0, width: r ? \"100%\" : void 0, height: r ? void 0 : \"100%\", background: \"none\", border: 0, padding: 0, pointerEvents: \"all\", appearance: \"none\", WebkitAppearance: \"none\", MozAppearance: \"none\", outline: 0, transform: r ? \"translate3d(0, -50% ,0)\" : \"translate3d(-50%, 0, 0)\", transition: i ? `${r ? \"top\" : \"left\"} ${i}` : void 0 };\n  return te(\"button\", { ref: m, \"aria-label\": \"Drag to move or focus and use arrow keys\", \"aria-orientation\": r ? \"vertical\" : \"horizontal\", \"aria-valuemin\": 0, \"aria-valuemax\": 100, \"aria-valuenow\": o, \"data-rcs\": \"handle-container\", disabled: t, role: \"slider\", style: u, children: e });\n});\nW.displayName = \"ThisHandleContainer\";\nvar re = ({ flip: e }) => H(\"div\", { className: \"__rcs-handle-arrow\", style: { width: 0, height: 0, borderTop: \"8px solid transparent\", borderRight: \"10px solid\", borderBottom: \"8px solid transparent\", transform: e ? \"rotate(180deg)\" : void 0 } });\nvar F = (_a) => {\n  var _b = _a, { className: e = \"__rcs-handle-root\", disabled: t, buttonStyle: r, linesStyle: o, portrait: i, style: m } = _b, C = __objRest(_b, [\"className\", \"disabled\", \"buttonStyle\", \"linesStyle\", \"portrait\", \"style\"]);\n  let u = __spreadValues({ display: \"flex\", flexDirection: i ? \"row\" : \"column\", placeItems: \"center\", height: \"100%\", cursor: t ? \"not-allowed\" : i ? \"ns-resize\" : \"ew-resize\", pointerEvents: \"none\", color: \"#fff\" }, m), E = __spreadValues({ flexGrow: 1, height: i ? 2 : \"100%\", width: i ? \"100%\" : 2, backgroundColor: \"currentColor\", pointerEvents: \"auto\", boxShadow: \"0 0 4px rgba(0,0,0,.5)\" }, o), y = __spreadValues({ display: \"grid\", gridAutoFlow: \"column\", gap: 8, placeContent: \"center\", flexShrink: 0, width: 56, height: 56, borderRadius: \"50%\", borderStyle: \"solid\", borderWidth: 2, pointerEvents: \"auto\", backdropFilter: \"blur(7px)\", WebkitBackdropFilter: \"blur(7px)\", backgroundColor: \"rgba(0, 0, 0, 0.125)\", boxShadow: \"0 0 4px rgba(0,0,0,.35)\", transform: i ? \"rotate(90deg)\" : void 0 }, r);\n  return ne(\"div\", __spreadProps(__spreadValues({}, C), { className: e, style: u, children: [H(\"div\", { className: \"__rcs-handle-line\", style: E }), ne(\"div\", { className: \"__rcs-handle-button\", style: y, children: [H(re, {}), H(re, { flip: true })] }), H(\"div\", { className: \"__rcs-handle-line\", style: E })] }));\n};\nvar $ = ((i) => (i.ARROW_LEFT = \"ArrowLeft\", i.ARROW_RIGHT = \"ArrowRight\", i.ARROW_UP = \"ArrowUp\", i.ARROW_DOWN = \"ArrowDown\", i))($ || {});\nvar G = (_a = {}) => {\n  var _b = _a, { boxSizing: e = \"border-box\", objectFit: t = \"cover\", objectPosition: r = \"center center\" } = _b, o = __objRest(_b, [\"boxSizing\", \"objectFit\", \"objectPosition\"]);\n  return __spreadValues({ display: \"block\", width: \"100%\", height: \"100%\", maxWidth: \"100%\", boxSizing: e, objectFit: t, objectPosition: r }, o);\n};\nvar oe = (e) => {\n  let t = N(e);\n  return O(() => {\n    t.current = e;\n  }), t.current;\n};\nvar U = (e, t, r, o) => {\n  let i = N();\n  O(() => {\n    i.current = t;\n  }, [t]), O(() => {\n    if (!(r && r.addEventListener)) return;\n    let m = (C) => i.current && i.current(C);\n    return r.addEventListener(e, m, o), () => {\n      r.removeEventListener(e, m, o);\n    };\n  }, [e, r, o]);\n};\nvar Te = typeof window < \"u\" && typeof window.document < \"u\" && typeof window.document.createElement < \"u\" ? Le : O;\nvar ie = (e, t) => {\n  let r = N(), o = ge(() => {\n    e.current && r.current && r.current.observe(e.current);\n  }, [e]);\n  Te(() => (r.current = new ResizeObserver(([i]) => t(i.contentRect)), o(), () => {\n    r.current && r.current.disconnect();\n  }), [t, o]);\n};\nvar I = { capture: false, passive: true };\nvar X = { capture: true, passive: false };\nvar Me = (e) => {\n  e.preventDefault(), e.currentTarget.focus();\n};\nvar se = be((_a, de) => {\n  var _b = _a, { boundsPadding: e = 0, browsingContext: t = globalThis, changePositionOnHover: r = false, disabled: o = false, handle: i, itemOne: m, itemTwo: C, keyboardIncrement: u = \"5%\", onlyHandleDraggable: E = false, onPositionChange: y, portrait: a = false, position: g = 50, style: le, transition: ce } = _b, pe = __objRest(_b, [\"boundsPadding\", \"browsingContext\", \"changePositionOnHover\", \"disabled\", \"handle\", \"itemOne\", \"itemTwo\", \"keyboardIncrement\", \"onlyHandleDraggable\", \"onPositionChange\", \"portrait\", \"position\", \"style\", \"transition\"]);\n  let p = M(null), j = M(null), f = M(null), d = M(g), [L, q] = V(false), [me, x] = V(true), w = M(false), [ue, fe] = V(), J = oe(g), l = P(function({ x: s, y: c, isOffset: R }) {\n    let b = p.current, A = f.current, D = j.current, { width: h, height: S, left: Pe, top: Ee } = b.getBoundingClientRect();\n    if (h === 0 || S === 0) return;\n    let ye = a ? R ? c - Ee - t.scrollY : c : R ? s - Pe - t.scrollX : s, Q = Math.min(Math.max(ye / (a ? S : h) * 100, 0), 100), z = a ? S / (b.offsetHeight || 1) : h / (b.offsetWidth || 1), Z = e * z / (a ? S : h) * 100, _ = Math.min(Math.max(Q, Z * z), 100 - Z * z);\n    d.current = Q, A.setAttribute(\"aria-valuenow\", `${Math.round(d.current)}`), A.style.top = a ? `${_}%` : \"0\", A.style.left = a ? \"0\" : `${_}%`, D.style.clipPath = a ? `inset(${_}% 0 0 0)` : `inset(0 0 0 ${_}%)`, y && y(d.current);\n  }, [e, y, a, t]);\n  k(() => {\n    let { width: n, height: s } = p.current.getBoundingClientRect(), c = g === J ? d.current : g;\n    l({ x: n / 100 * c, y: s / 100 * c });\n  }, [e, g, a, J, l]);\n  let Re = P((n) => {\n    n.preventDefault(), !(o || n.button !== 0) && (l({ isOffset: true, x: n.pageX, y: n.pageY }), q(true), x(true));\n  }, [o, l]), v = P(function(s) {\n    l({ isOffset: true, x: s.pageX, y: s.pageY }), x(false);\n  }, [l]), T = P(() => {\n    q(false), x(true);\n  }, []), Se = P(({ width: n, height: s }) => {\n    let { width: c, height: R } = p.current.getBoundingClientRect();\n    l({ x: n / 100 * d.current * c / n, y: s / 100 * d.current * R / s });\n  }, [l]), Ce = P((n) => {\n    if (!Object.values($).includes(n.key)) return;\n    n.preventDefault(), x(true);\n    let { top: s, left: c } = f.current.getBoundingClientRect(), { width: R, height: b } = p.current.getBoundingClientRect(), D = typeof u == \"string\" ? parseFloat(u) : u / R * 100, h = a ? n.key === \"ArrowLeft\" || n.key === \"ArrowDown\" : n.key === \"ArrowRight\" || n.key === \"ArrowUp\", S = Math.min(Math.max(h ? d.current + D : d.current - D, 0), 100);\n    l({ x: a ? c : R * S / 100, y: a ? b * S / 100 : s });\n  }, [u, a, l]);\n  k(() => {\n    fe(E ? f.current : p.current);\n  }, [E]), k(() => {\n    let n = p.current, s = () => {\n      L || T();\n    };\n    return r && (n.addEventListener(\"pointermove\", v, I), n.addEventListener(\"pointerleave\", s, I)), () => {\n      n.removeEventListener(\"pointermove\", v), n.removeEventListener(\"pointerleave\", s);\n    };\n  }, [r, v, T, L]), k(() => (L && !w.current && (t.addEventListener(\"pointermove\", v, I), t.addEventListener(\"pointerup\", T, I), w.current = true), () => {\n    w.current && (t.removeEventListener(\"pointermove\", v), t.removeEventListener(\"pointerup\", T), w.current = false);\n  }), [v, T, L, t]), He(de, () => ({ rootContainer: p.current, handleContainer: f.current, setPosition(n) {\n    let { width: s, height: c } = p.current.getBoundingClientRect();\n    l({ x: s / 100 * n, y: c / 100 * n });\n  } }), [l]), ie(p, Se), U(\"keydown\", Ce, f.current, X), U(\"click\", Me, f.current, X), U(\"pointerdown\", Re, ue, X);\n  let ve = i || Y(F, { disabled: o, portrait: a }), K = me ? ce : void 0, he = __spreadValues({ position: \"relative\", display: \"flex\", overflow: \"hidden\", cursor: L ? a ? \"ns-resize\" : \"ew-resize\" : void 0, touchAction: \"none\", userSelect: \"none\", KhtmlUserSelect: \"none\", msUserSelect: \"none\", MozUserSelect: \"none\", WebkitUserSelect: \"none\" }, le);\n  return xe(\"div\", __spreadProps(__spreadValues({}, pe), { ref: p, style: he, \"data-rcs\": \"root\", children: [m, Y(B, { ref: j, transition: K, children: C }), Y(W, { disabled: o, portrait: a, position: Math.round(d.current), ref: f, transition: K, children: ve })] }));\n});\nse.displayName = \"ReactCompareSlider\";\nvar ae = we((_a, r) => {\n  var _b = _a, { style: e } = _b, t = __objRest(_b, [\"style\"]);\n  let o = G(e);\n  return Ae(\"img\", __spreadProps(__spreadValues({ ref: r }, t), { style: o, \"data-rcs\": \"image\" }));\n});\nae.displayName = \"ReactCompareSliderImage\";\n\n// src/CompareImage.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction CompareImage({\n  image1 = \"https://upload.wikimedia.org/wikipedia/commons/f/f5/Poster-sized_portrait_of_Barack_Obama.jpg\",\n  image2 = \"https://upload.wikimedia.org/wikipedia/en/b/b7/President_Barack_Obama_by_Kehinde_Wiley.jpg\",\n  position\n}) {\n  return /* @__PURE__ */ jsx(\n    se,\n    {\n      itemOne: /* @__PURE__ */ jsx(ae, { src: image1, alt: \"Image one\" }),\n      itemTwo: /* @__PURE__ */ jsx(ae, { src: image2, alt: \"Image two\" }),\n      onlyHandleDraggable: true,\n      position,\n      style: { touchAction: \"pan-y\" }\n    }\n  );\n}\nCompareImage.propertyControls = {\n  image1: {\n    type: ControlType.Image,\n    defaultValue: \"https://upload.wikimedia.org/wikipedia/commons/f/f5/Poster-sized_portrait_of_Barack_Obama.jpg\"\n  },\n  image2: {\n    type: ControlType.Image,\n    defaultValue: \"https://upload.wikimedia.org/wikipedia/en/b/b7/President_Barack_Obama_by_Kehinde_Wiley.jpg\"\n  },\n  position: {\n    type: ControlType.Number,\n    min: 0,\n    max: 100,\n    defaultValue: 50\n  }\n};\n\nexport {\n  CompareImage\n};\n","import {\n  useMounted\n} from \"./chunk-XHUQFNFZ.mjs\";\n\n// src/Counter.tsx\nimport { ControlType } from \"framer\";\nimport { useState, useEffect } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar systemFont = `ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;\nvar getHighlightStyle = (size) => ({\n  color: \"#005DFA\",\n  // 원하는 하이라이트 색상\n  fontWeight: \"bold\",\n  backgroundColor: \"#FCEBEF\",\n  // 배경색\n  padding: size === \"small\" ? \"0 3px\" : size === \"large\" ? \"0 8px\" : size === \"extra-large\" ? \"0 12px\" : \"0 5px\",\n  borderRadius: size === \"small\" ? \"3px\" : size === \"large\" ? \"6px\" : size === \"extra-large\" ? \"8px\" : \"4px\"\n});\nvar getSizeClass = (size) => {\n  switch (size) {\n    case \"small\":\n      return \"text-sm max-md:text-xs\";\n    case \"large\":\n      return \"text-3xl max-md:text-xl\";\n    case \"extra-large\":\n      return \"text-6xl max-md:text-3xl\";\n    default:\n      return \"text-xl max-md:text-xs\";\n  }\n};\nfunction Counter({\n  targetDate = \"2024-06-31T00:00:00\",\n  slotLeft,\n  suffix,\n  size = \"medium\",\n  showSeconds = false\n}) {\n  const calculateTimeLeft = () => {\n    const difference = +new Date(targetDate) - +/* @__PURE__ */ new Date();\n    let timeLeft2 = {};\n    if (difference > 0) {\n      timeLeft2 = {\n        days: Math.floor(difference / (1e3 * 60 * 60 * 24)),\n        hours: Math.floor(difference / (1e3 * 60 * 60) % 24),\n        minutes: Math.floor(difference / 1e3 / 60 % 60),\n        seconds: Math.floor(difference / 1e3 % 60)\n      };\n    }\n    return timeLeft2;\n  };\n  const [timeLeft, setTimeLeft] = useState(calculateTimeLeft());\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      setTimeLeft(calculateTimeLeft());\n    }, 1e3);\n    return () => clearTimeout(timer);\n  }, [timeLeft]);\n  const isMounted = useMounted();\n  const highlightStyle = getHighlightStyle(size);\n  const sizeClass = getSizeClass(size);\n  if (!isMounted) return;\n  return /* @__PURE__ */ jsx(\n    \"div\",\n    {\n      style: { fontFamily: systemFont, color: \"black\" },\n      className: `${sizeClass} text-center max-md:text-left`,\n      children: slotLeft ? /* @__PURE__ */ jsxs(\"span\", { children: [\n        /* @__PURE__ */ jsx(\"span\", { style: highlightStyle, children: slotLeft }),\n        /* @__PURE__ */ jsx(\"span\", { style: { whiteSpace: \"nowrap\" }, children: suffix })\n      ] }) : timeLeft.days !== void 0 ? /* @__PURE__ */ jsxs(\"span\", { children: [\n        /* @__PURE__ */ jsxs(\"span\", { style: highlightStyle, children: [\n          timeLeft.days,\n          \"\\uC77C\"\n        ] }),\n        \" \",\n        /* @__PURE__ */ jsxs(\"span\", { style: highlightStyle, children: [\n          timeLeft.hours,\n          \"\\uC2DC\\uAC04\"\n        ] }),\n        \" \",\n        /* @__PURE__ */ jsxs(\"span\", { style: highlightStyle, children: [\n          timeLeft.minutes,\n          \"\\uBD84\"\n        ] }),\n        showSeconds && /* @__PURE__ */ jsxs(Fragment, { children: [\n          \" \",\n          /* @__PURE__ */ jsxs(\"span\", { style: highlightStyle, children: [\n            timeLeft.seconds,\n            \"\\uCD08\"\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\"span\", { style: { whiteSpace: \"nowrap\" }, children: suffix })\n      ] }) : (\n        //  {/* <span>Time's up!</span>*/}\n        /* @__PURE__ */ jsxs(\"span\", { children: [\n          /* @__PURE__ */ jsx(\"span\", { style: highlightStyle, children: \"0\\uC77C\" }),\n          \" \",\n          /* @__PURE__ */ jsx(\"span\", { style: highlightStyle, children: \"0\\uC2DC\\uAC04\" }),\n          \" \",\n          /* @__PURE__ */ jsx(\"span\", { style: highlightStyle, children: \"0\\uBD84\" }),\n          showSeconds && /* @__PURE__ */ jsxs(Fragment, { children: [\n            \" \",\n            /* @__PURE__ */ jsx(\"span\", { style: highlightStyle, children: \"0\\uCD08\" })\n          ] }),\n          /* @__PURE__ */ jsx(\"span\", { style: { whiteSpace: \"nowrap\" }, children: suffix })\n        ] })\n      )\n    }\n  );\n}\nCounter.propertyControls = {\n  targetDate: {\n    type: ControlType.String,\n    defaultValue: \"2024-07-30T00:00:00\"\n  },\n  slotLeft: {\n    type: ControlType.String,\n    defaultValue: \"2\\uC790\\uB9AC\"\n  },\n  suffix: {\n    type: ControlType.String,\n    defaultValue: \" \\uD6C4 \\uAC00\\uACA9 \\uC778\\uC0C1\"\n  },\n  size: {\n    type: ControlType.Enum,\n    options: [\"small\", \"medium\", \"large\", \"extra-large\"],\n    defaultValue: \"medium\"\n  },\n  showSeconds: {\n    type: ControlType.Boolean,\n    defaultValue: false\n  }\n};\n\nexport {\n  Counter\n};\n","import {\n  Ae\n} from \"./chunk-PO4BOMMR.mjs\";\nimport {\n  cx\n} from \"./chunk-XHUQFNFZ.mjs\";\n\n// src/MuxPlayer.tsx\nimport { useState, useRef } from \"react\";\nimport { ControlType } from \"framer\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction MuxPlayer({\n  playbackId,\n  thumbnailUrl,\n  thumbnailTime,\n  title,\n  autoPlay = true,\n  startTime = 5,\n  endTime = 167\n}) {\n  const [isPlaying, setIsPlaying] = useState(false);\n  const [isClosed, setIsClosed] = useState(false);\n  const playerRef = useRef(null);\n  const handlePlay = () => {\n    setIsPlaying(true);\n  };\n  const handlePause = () => {\n    if (playerRef.current) {\n      playerRef.current.pause();\n    }\n    setIsPlaying(false);\n  };\n  const handleClose = () => {\n    setIsPlaying(false);\n    setIsClosed(true);\n  };\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      className: `overflow-hidden video-container ${isPlaying ? \"playing\" : \"\"} ${isClosed ? \"closed\" : \"\"}`,\n      children: [\n        /* @__PURE__ */ jsx(\n          \"button\",\n          {\n            onClick: (e) => {\n              if (isPlaying) handlePause();\n              else handleClose();\n            },\n            className: \"absolute top-2 left-2 md:top-4 md:left-4 z-20 bg-black bg-opacity-50 rounded-full w-10 h-10 flex items-center justify-center text-white hover:bg-opacity-70 transition-all\",\n            children: /* @__PURE__ */ jsx(\n              \"svg\",\n              {\n                width: \"16\",\n                height: \"16\",\n                viewBox: \"0 0 24 24\",\n                fill: \"none\",\n                xmlns: \"http://www.w3.org/2000/svg\",\n                children: /* @__PURE__ */ jsx(\n                  \"path\",\n                  {\n                    d: \"M18 6L6 18M6 6L18 18\",\n                    stroke: \"currentColor\",\n                    strokeWidth: \"2\",\n                    strokeLinecap: \"round\",\n                    strokeLinejoin: \"round\"\n                  }\n                )\n              }\n            )\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"div\", { className: \"absolute left-1/2 top-1/2 transform -translate-x-1/2 -translate-y-1/2 video-wrapper\", children: [\n          /* @__PURE__ */ jsx(\n            \"img\",\n            {\n              src: thumbnailUrl,\n              className: cx(\n                \"w-full h-full object-cover absolute z-10 pointer-events-none\",\n                isPlaying ? \"opacity-0\" : \"opacity-100\"\n              )\n            }\n          ),\n          /* @__PURE__ */ jsx(PlayButton, { isPlaying }),\n          /* @__PURE__ */ jsx(\n            Ae,\n            {\n              ref: playerRef,\n              playbackId,\n              thumbnailTime,\n              metadataVideoTitle: title,\n              primaryColor: \"#FFFFFF\",\n              secondaryColor: \"#000000\",\n              accentColor: \"#005DFA\",\n              autoPlay: false,\n              startTime,\n              loop: true,\n              endTime,\n              onPlay: handlePlay,\n              onPause: handlePause\n            }\n          )\n        ] }),\n        /* @__PURE__ */ jsx(\"style\", { children: `\n        .video-container {\n          position: fixed;\n          bottom: 20px;\n          left: 20px;\n          width: 168px;\n          height: 258px;\n          transition: all 0.3s ease;\n          z-index: 1;\n          border-radius: 32px;\n        }\n\n        .video-wrapper {\n          width: 486px;\n          height: 300px;\n        }\n\n        .video-container.playing {\n          left: 50%;\n          bottom: 50%;\n          transform: translate(-50%, 50%);\n          width: 70%;\n          height: 70%;\n        }\n\n        .video-container.closed {\n          transform: translateX(-200%);\n          opacity: 0;\n        }\n\n        .video-container.playing .video-wrapper {\n          width: 100%;\n          height: 100%;\n        }\n\n        mux-player {\n          --seek-backward-button: none;\n          --seek-forward-button: none;\n          width: 100%;\n          height: auto;\n          display: block;\n        }\n        \n        @media (max-width: 768px) {\n          .video-container {\n            width: 100px;\n            height: 190px;\n            bottom: 50px;\n            border-radius: 20px;\n            left: 16px;\n          }\n          .video-wrapper {\n            width: 400px;\n            height: 190px;\n          }\n\n         \n\n          .video-container.playing {\n            top: 0;\n            left: 0;\n            right: 0;\n            bottom: 0;\n            width: 100%;\n            height: 100%;\n            transform: none;\n            border-radius: 0;\n          }\n          .video-container.playing .video-wrapper {\n            width: 300%;\n            height: 100%;\n          }\n\n          .video-container.playing mux-player {\n            height: 100%;\n          }\n          \n          .video-container.closed {\n            transform: translateX(-200%);\n            opacity: 0;\n          }\n        }\n      ` })\n      ]\n    }\n  );\n}\nfunction PlayButton({ isPlaying }) {\n  return /* @__PURE__ */ jsx(\n    \"div\",\n    {\n      className: cx(\n        \"absolute inset-0 flex items-center justify-center pointer-events-none top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 z-10\",\n        isPlaying ? \"opacity-0\" : \"opacity-100\"\n      ),\n      children: /* @__PURE__ */ jsx(\"div\", { className: \"w-16 h-16 rounded-full bg-black bg-opacity-25 flex items-center justify-center\", children: /* @__PURE__ */ jsx(\n        \"svg\",\n        {\n          className: \"w-8 h-8 text-white\",\n          fill: \"currentColor\",\n          viewBox: \"0 0 24 24\",\n          children: /* @__PURE__ */ jsx(\"path\", { d: \"M8 5v14l11-7z\" })\n        }\n      ) })\n    }\n  );\n}\nMuxPlayer.propertyControls = {\n  playbackId: {\n    type: ControlType.String,\n    title: \"Playback ID\",\n    defaultValue: \"5duxZe1PdSCnujI3H2fOrJ01JM53ePc2bYxJ0000xcuo0000\"\n  },\n  thumbnailUrl: {\n    type: ControlType.String,\n    title: \"Thumbnail URL\",\n    defaultValue: \"https://cdn.monthlystartup.co/comfy-for-real-ads-thumbnail.webp\"\n  },\n  thumbnailTime: {\n    type: ControlType.Number,\n    title: \"Thumbnail Time\"\n  },\n  title: {\n    type: ControlType.String,\n    title: \"Title\"\n  },\n  autoPlay: {\n    type: ControlType.Boolean,\n    title: \"Auto Play\",\n    defaultValue: true\n  },\n  startTime: {\n    type: ControlType.Number,\n    title: \"Start Time (seconds)\",\n    defaultValue: 5\n  },\n  endTime: {\n    type: ControlType.Number,\n    title: \"End Time (seconds)\",\n    defaultValue: 167\n  }\n};\n\nexport {\n  MuxPlayer\n};\n","import {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\nimport {\n  __async,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-JWK35I2R.mjs\";\n\n// src/Waitlist.tsx\nimport { useState } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction Waitlist() {\n  const [store] = useGlobalStore();\n  const { supabase } = store;\n  const [formData, setFormData] = useState({\n    name: \"\",\n    email: \"\",\n    phone: \"\"\n  });\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [isSubmitted, setIsSubmitted] = useState(false);\n  const [error, setError] = useState(\"\");\n  const handleInputChange = (e) => {\n    const { name, value } = e.target;\n    setFormData((prev) => __spreadProps(__spreadValues({}, prev), {\n      [name]: value\n    }));\n    if (error) setError(\"\");\n  };\n  const validateForm = () => {\n    if (!formData.name.trim()) return \"\\uC774\\uB984\\uC744 \\uC785\\uB825\\uD574\\uC8FC\\uC138\\uC694.\";\n    if (!formData.email.trim()) return \"\\uC774\\uBA54\\uC77C\\uC744 \\uC785\\uB825\\uD574\\uC8FC\\uC138\\uC694.\";\n    if (!formData.phone.trim()) return \"\\uC804\\uD654\\uBC88\\uD638\\uB97C \\uC785\\uB825\\uD574\\uC8FC\\uC138\\uC694.\";\n    const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n    if (!emailRegex.test(formData.email))\n      return \"\\uC62C\\uBC14\\uB978 \\uC774\\uBA54\\uC77C \\uD615\\uC2DD\\uC744 \\uC785\\uB825\\uD574\\uC8FC\\uC138\\uC694.\";\n    const phoneRegex = /^01[0-9]-?[0-9]{4}-?[0-9]{4}$/;\n    if (!phoneRegex.test(formData.phone.replace(/\\s/g, \"\"))) {\n      return \"\\uC62C\\uBC14\\uB978 \\uC804\\uD654\\uBC88\\uD638 \\uD615\\uC2DD\\uC744 \\uC785\\uB825\\uD574\\uC8FC\\uC138\\uC694. (\\uC608: 010-1234-5678)\";\n    }\n    return null;\n  };\n  const handleSubmit = (e) => __async(null, null, function* () {\n    e.preventDefault();\n    const validationError = validateForm();\n    if (validationError) {\n      setError(validationError);\n      return;\n    }\n    if (!supabase) {\n      setError(\n        \"\\uB370\\uC774\\uD130\\uBCA0\\uC774\\uC2A4 \\uC5F0\\uACB0\\uC5D0 \\uBB38\\uC81C\\uAC00 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uC7A0\\uC2DC \\uD6C4 \\uB2E4\\uC2DC \\uC2DC\\uB3C4\\uD574\\uC8FC\\uC138\\uC694.\"\n      );\n      return;\n    }\n    setIsSubmitting(true);\n    setError(\"\");\n    try {\n      const { data: existingUser } = yield supabase.from(\"users\").select(\"email, access\").eq(\"email\", formData.email).single();\n      if (existingUser) {\n        const currentAccess = existingUser.access || {};\n        const updatedAccess = __spreadProps(__spreadValues({}, currentAccess), {\n          \"vibe-coding-waitlist\": true\n        });\n        const { error: updateError } = yield supabase.from(\"users\").update({\n          username: formData.name,\n          phone: formData.phone,\n          access: updatedAccess\n        }).eq(\"email\", formData.email);\n        if (updateError) {\n          console.error(\"Update error:\", updateError);\n          setError(\"\\uB4F1\\uB85D \\uC911 \\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uC2DC \\uC2DC\\uB3C4\\uD574\\uC8FC\\uC138\\uC694.\");\n          return;\n        }\n      } else {\n        const { error: insertError } = yield supabase.from(\"users\").insert({\n          username: formData.name,\n          email: formData.email,\n          phone: formData.phone,\n          access: { \"vibe-coding-waitlist\": true }\n        });\n        if (insertError) {\n          console.error(\"Insert error:\", insertError);\n          setError(\"\\uB4F1\\uB85D \\uC911 \\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uC2DC \\uC2DC\\uB3C4\\uD574\\uC8FC\\uC138\\uC694.\");\n          return;\n        }\n      }\n      setIsSubmitted(true);\n      setFormData({\n        name: \"\",\n        email: \"\",\n        phone: \"\"\n      });\n    } catch (err) {\n      console.error(\"Submission error:\", err);\n      setError(\"\\uB4F1\\uB85D \\uC911 \\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uC2DC \\uC2DC\\uB3C4\\uD574\\uC8FC\\uC138\\uC694.\");\n    } finally {\n      setIsSubmitting(false);\n    }\n  });\n  if (isSubmitted) {\n    return /* @__PURE__ */ jsxs(\n      motion.div,\n      {\n        initial: { opacity: 0, scale: 0.8 },\n        animate: { opacity: 1, scale: 1 },\n        transition: { duration: 0.5 },\n        className: \"max-w-md mx-auto p-8 bg-white rounded-3xl shadow-xl border border-gray-100\",\n        children: [\n          /* @__PURE__ */ jsx(\n            motion.div,\n            {\n              initial: { scale: 0 },\n              animate: { scale: 1 },\n              transition: { delay: 0.2, type: \"spring\", stiffness: 200 },\n              className: \"w-16 h-16 mx-auto mb-6 bg-green-100 rounded-full flex items-center justify-center\",\n              children: /* @__PURE__ */ jsx(\n                \"svg\",\n                {\n                  className: \"w-8 h-8 text-green-600\",\n                  fill: \"none\",\n                  stroke: \"currentColor\",\n                  viewBox: \"0 0 24 24\",\n                  children: /* @__PURE__ */ jsx(\n                    \"path\",\n                    {\n                      strokeLinecap: \"round\",\n                      strokeLinejoin: \"round\",\n                      strokeWidth: 2,\n                      d: \"M5 13l4 4L19 7\"\n                    }\n                  )\n                }\n              )\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            motion.h2,\n            {\n              initial: { opacity: 0, y: 20 },\n              animate: { opacity: 1, y: 0 },\n              transition: { delay: 0.3 },\n              className: \"text-2xl font-bold text-gray-900 text-center mb-4\",\n              children: \"\\uB4F1\\uB85D \\uC644\\uB8CC!\"\n            }\n          ),\n          /* @__PURE__ */ jsxs(\n            motion.p,\n            {\n              initial: { opacity: 0, y: 20 },\n              animate: { opacity: 1, y: 0 },\n              transition: { delay: 0.4 },\n              className: \"text-gray-600 text-center leading-relaxed\",\n              children: [\n                \"\\uB300\\uAE30\\uBA85\\uB2E8\\uC5D0 \\uC131\\uACF5\\uC801\\uC73C\\uB85C \\uB4F1\\uB85D\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uACE7 \\uC5F0\\uB77D\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4!\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            motion.button,\n            {\n              initial: { opacity: 0, y: 20 },\n              animate: { opacity: 1, y: 0 },\n              transition: { delay: 0.5 },\n              onClick: () => setIsSubmitted(false),\n              className: \"w-full mt-6 px-6 py-3 bg-gray-100 text-gray-700 rounded-xl font-medium hover:bg-gray-200 transition-colors\",\n              children: \"\\uB2E4\\uC2DC \\uB4F1\\uB85D\\uD558\\uAE30\"\n            }\n          )\n        ]\n      }\n    );\n  }\n  return /* @__PURE__ */ jsxs(\n    motion.div,\n    {\n      initial: { opacity: 0, y: 20 },\n      animate: { opacity: 1, y: 0 },\n      transition: { duration: 0.6 },\n      className: \"max-w-md mx-auto p-8 bg-white rounded-3xl shadow-xl border border-gray-100\",\n      children: [\n        /* @__PURE__ */ jsx(\n          motion.div,\n          {\n            initial: { scale: 0.8, opacity: 0 },\n            animate: { scale: 1, opacity: 1 },\n            transition: { delay: 0.1, duration: 0.5 },\n            className: \"text-center mb-8\",\n            children: /* @__PURE__ */ jsx(\"h1\", { className: \"text-3xl font-bold text-gray-900 mb-2\", children: \"10\\uC6D4 \\uC54C\\uB9BC\\uC2E0\\uCCAD\" })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"form\", { onSubmit: handleSubmit, className: \"space-y-6\", children: [\n          /* @__PURE__ */ jsxs(\n            motion.div,\n            {\n              initial: { x: -20, opacity: 0 },\n              animate: { x: 0, opacity: 1 },\n              transition: { delay: 0.2 },\n              children: [\n                /* @__PURE__ */ jsx(\n                  \"label\",\n                  {\n                    htmlFor: \"name\",\n                    className: \"block text-sm font-medium text-gray-700 mb-2\",\n                    children: \"\\uC774\\uB984\"\n                  }\n                ),\n                /* @__PURE__ */ jsx(\n                  \"input\",\n                  {\n                    type: \"text\",\n                    id: \"name\",\n                    name: \"name\",\n                    value: formData.name,\n                    onChange: handleInputChange,\n                    className: \"w-full px-4 py-3 border border-gray-200 rounded-xl focus:ring-2 focus:ring-[#005DFA] focus:border-transparent transition-all duration-200 bg-gray-50 focus:bg-white\",\n                    placeholder: \"\\uD64D\\uAE38\\uB3D9\"\n                  }\n                )\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\n            motion.div,\n            {\n              initial: { x: -20, opacity: 0 },\n              animate: { x: 0, opacity: 1 },\n              transition: { delay: 0.3 },\n              children: [\n                /* @__PURE__ */ jsx(\n                  \"label\",\n                  {\n                    htmlFor: \"email\",\n                    className: \"block text-sm font-medium text-gray-700 mb-2\",\n                    children: \"\\uC774\\uBA54\\uC77C\"\n                  }\n                ),\n                /* @__PURE__ */ jsx(\n                  \"input\",\n                  {\n                    type: \"email\",\n                    id: \"email\",\n                    name: \"email\",\n                    value: formData.email,\n                    onChange: handleInputChange,\n                    className: \"w-full px-4 py-3 border border-gray-200 rounded-xl focus:ring-2 focus:ring-[#005DFA] focus:border-transparent transition-all duration-200 bg-gray-50 focus:bg-white\",\n                    placeholder: \"example@email.com\"\n                  }\n                )\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\n            motion.div,\n            {\n              initial: { x: -20, opacity: 0 },\n              animate: { x: 0, opacity: 1 },\n              transition: { delay: 0.4 },\n              children: [\n                /* @__PURE__ */ jsx(\n                  \"label\",\n                  {\n                    htmlFor: \"phone\",\n                    className: \"block text-sm font-medium text-gray-700 mb-2\",\n                    children: \"\\uC804\\uD654\\uBC88\\uD638\"\n                  }\n                ),\n                /* @__PURE__ */ jsx(\n                  \"input\",\n                  {\n                    type: \"tel\",\n                    id: \"phone\",\n                    name: \"phone\",\n                    value: formData.phone,\n                    onChange: handleInputChange,\n                    className: \"w-full px-4 py-3 border border-gray-200 rounded-xl focus:ring-2 focus:ring-[#005DFA] focus:border-transparent transition-all duration-200 bg-gray-50 focus:bg-white\",\n                    placeholder: \"010-1234-5678\"\n                  }\n                )\n              ]\n            }\n          ),\n          error && /* @__PURE__ */ jsx(\n            motion.div,\n            {\n              initial: { opacity: 0, scale: 0.95 },\n              animate: { opacity: 1, scale: 1 },\n              className: \"p-4 bg-red-50 border border-red-200 rounded-xl\",\n              children: /* @__PURE__ */ jsx(\"p\", { className: \"text-sm text-red-600 text-center\", children: error })\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            motion.button,\n            {\n              initial: { y: 20, opacity: 0 },\n              animate: { y: 0, opacity: 1 },\n              transition: { delay: 0.5 },\n              type: \"submit\",\n              disabled: isSubmitting,\n              className: \"w-full px-6 py-4 bg-gradient-to-r from-blue-500 to-[#005DFA] text-white font-semibold rounded-xl shadow-lg hover:shadow-xl transform hover:scale-[1.02] transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed disabled:transform-none\",\n              children: isSubmitting ? /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center justify-center\", children: [\n                /* @__PURE__ */ jsxs(\n                  \"svg\",\n                  {\n                    className: \"animate-spin -ml-1 mr-3 h-5 w-5 text-white\",\n                    xmlns: \"http://www.w3.org/2000/svg\",\n                    fill: \"none\",\n                    viewBox: \"0 0 24 24\",\n                    children: [\n                      /* @__PURE__ */ jsx(\n                        \"circle\",\n                        {\n                          className: \"opacity-25\",\n                          cx: \"12\",\n                          cy: \"12\",\n                          r: \"10\",\n                          stroke: \"currentColor\",\n                          strokeWidth: \"4\"\n                        }\n                      ),\n                      /* @__PURE__ */ jsx(\n                        \"path\",\n                        {\n                          className: \"opacity-75\",\n                          fill: \"currentColor\",\n                          d: \"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n                        }\n                      )\n                    ]\n                  }\n                ),\n                \"\\uB4F1\\uB85D \\uC911...\"\n              ] }) : \"\\uB300\\uAE30\\uBA85\\uB2E8 \\uB4F1\\uB85D\\uD558\\uAE30\"\n            }\n          )\n        ] }),\n        /* @__PURE__ */ jsx(\n          motion.div,\n          {\n            initial: { opacity: 0 },\n            animate: { opacity: 1 },\n            transition: { delay: 0.6 },\n            className: \"mt-6 text-center\",\n            children: /* @__PURE__ */ jsxs(\"p\", { className: \"text-xs text-gray-500 leading-relaxed\", children: [\n              \"\\uB4F1\\uB85D\\uD558\\uC2DC\\uBA74 \\uC0C8\\uB85C\\uC6B4 \\uC18C\\uC2DD\\uACFC \\uCD9C\\uC2DC \\uC54C\\uB9BC\\uC744\",\n              /* @__PURE__ */ jsx(\"br\", {}),\n              \"\\uAC00\\uC7A5 \\uBA3C\\uC800 \\uBC1B\\uC544\\uBCF4\\uC2E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n            ] })\n          }\n        )\n      ]\n    }\n  );\n}\n\nexport {\n  Waitlist\n};\n","import {\n  VideoList\n} from \"./chunk-MFTLEAG5.mjs\";\nimport {\n  HandleMobileRedirection\n} from \"./chunk-K6SZ2T5H.mjs\";\nimport {\n  NeedPayment\n} from \"./chunk-RZ4MXR2C.mjs\";\nimport {\n  ClassList\n} from \"./chunk-WZEPUR35.mjs\";\nimport {\n  Framer101_2\n} from \"./chunk-SVBYECQE.mjs\";\nimport {\n  Framer101_3\n} from \"./chunk-WTDJDUJN.mjs\";\nimport {\n  Framer101\n} from \"./chunk-NLIN542D.mjs\";\nimport \"./chunk-6OBOGQ5Q.mjs\";\nimport {\n  Reviews\n} from \"./chunk-C3N5J3D3.mjs\";\nimport \"./chunk-RIZ22KMY.mjs\";\nimport {\n  Init\n} from \"./chunk-L3UNR3GX.mjs\";\nimport {\n  Login\n} from \"./chunk-OOZRIUSN.mjs\";\nimport {\n  UserButton\n} from \"./chunk-IRHTPABC.mjs\";\nimport \"./chunk-SDKSBXQ2.mjs\";\nimport \"./chunk-EJKG6TUT.mjs\";\nimport {\n  CompareImage\n} from \"./chunk-M4QTGDPE.mjs\";\nimport {\n  Counter\n} from \"./chunk-GTWKNZFA.mjs\";\nimport {\n  MuxPlayer\n} from \"./chunk-G3BYDXSR.mjs\";\nimport \"./chunk-PO4BOMMR.mjs\";\nimport \"./chunk-Q5CPC3JV.mjs\";\nimport \"./chunk-32KFXI2Z.mjs\";\nimport \"./chunk-XHUQFNFZ.mjs\";\nimport \"./chunk-HQBHGXH5.mjs\";\nimport \"./chunk-OPROYRJW.mjs\";\nimport \"./chunk-XZ4AGIVR.mjs\";\nimport {\n  Waitlist\n} from \"./chunk-C3VYQ5YF.mjs\";\nimport \"./chunk-QHMWAEE2.mjs\";\nimport \"./chunk-2FYKH3RO.mjs\";\nimport \"./chunk-JWK35I2R.mjs\";\nexport {\n  ClassList,\n  CompareImage,\n  Counter,\n  Framer101,\n  Framer101_2,\n  Framer101_3,\n  HandleMobileRedirection,\n  Init,\n  Login,\n  MuxPlayer,\n  NeedPayment,\n  Reviews,\n  UserButton,\n  VideoList,\n  Waitlist\n};\n","import {\n  __export\n} from \"./chunk-JWK35I2R.mjs\";\n\n// node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/esm/commons.js\nvar PACKET_TYPES = /* @__PURE__ */ Object.create(null);\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nvar PACKET_TYPES_REVERSE = /* @__PURE__ */ Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n  PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nvar ERROR_PACKET = { type: \"error\", data: \"parser error\" };\n\n// node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/esm/encodePacket.browser.js\nvar withNativeBlob = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\";\nvar withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nvar isView = (obj) => {\n  return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer;\n};\nvar encodePacket = ({ type, data }, supportsBinary, callback) => {\n  if (withNativeBlob && data instanceof Blob) {\n    if (supportsBinary) {\n      return callback(data);\n    } else {\n      return encodeBlobAsBase64(data, callback);\n    }\n  } else if (withNativeArrayBuffer && (data instanceof ArrayBuffer || isView(data))) {\n    if (supportsBinary) {\n      return callback(data);\n    } else {\n      return encodeBlobAsBase64(new Blob([data]), callback);\n    }\n  }\n  return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nvar encodeBlobAsBase64 = (data, callback) => {\n  const fileReader = new FileReader();\n  fileReader.onload = function() {\n    const content = fileReader.result.split(\",\")[1];\n    callback(\"b\" + (content || \"\"));\n  };\n  return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n  if (data instanceof Uint8Array) {\n    return data;\n  } else if (data instanceof ArrayBuffer) {\n    return new Uint8Array(data);\n  } else {\n    return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n  }\n}\nvar TEXT_ENCODER;\nfunction encodePacketToBinary(packet, callback) {\n  if (withNativeBlob && packet.data instanceof Blob) {\n    return packet.data.arrayBuffer().then(toArray).then(callback);\n  } else if (withNativeArrayBuffer && (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n    return callback(toArray(packet.data));\n  }\n  encodePacket(packet, false, (encoded) => {\n    if (!TEXT_ENCODER) {\n      TEXT_ENCODER = new TextEncoder();\n    }\n    callback(TEXT_ENCODER.encode(encoded));\n  });\n}\n\n// node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n  lookup[chars.charCodeAt(i)] = i;\n}\nvar decode = (base64) => {\n  let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n  if (base64[base64.length - 1] === \"=\") {\n    bufferLength--;\n    if (base64[base64.length - 2] === \"=\") {\n      bufferLength--;\n    }\n  }\n  const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n  for (i = 0; i < len; i += 4) {\n    encoded1 = lookup[base64.charCodeAt(i)];\n    encoded2 = lookup[base64.charCodeAt(i + 1)];\n    encoded3 = lookup[base64.charCodeAt(i + 2)];\n    encoded4 = lookup[base64.charCodeAt(i + 3)];\n    bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n    bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n    bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n  }\n  return arraybuffer;\n};\n\n// node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/esm/decodePacket.browser.js\nvar withNativeArrayBuffer2 = typeof ArrayBuffer === \"function\";\nvar decodePacket = (encodedPacket, binaryType) => {\n  if (typeof encodedPacket !== \"string\") {\n    return {\n      type: \"message\",\n      data: mapBinary(encodedPacket, binaryType)\n    };\n  }\n  const type = encodedPacket.charAt(0);\n  if (type === \"b\") {\n    return {\n      type: \"message\",\n      data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n    };\n  }\n  const packetType = PACKET_TYPES_REVERSE[type];\n  if (!packetType) {\n    return ERROR_PACKET;\n  }\n  return encodedPacket.length > 1 ? {\n    type: PACKET_TYPES_REVERSE[type],\n    data: encodedPacket.substring(1)\n  } : {\n    type: PACKET_TYPES_REVERSE[type]\n  };\n};\nvar decodeBase64Packet = (data, binaryType) => {\n  if (withNativeArrayBuffer2) {\n    const decoded = decode(data);\n    return mapBinary(decoded, binaryType);\n  } else {\n    return { base64: true, data };\n  }\n};\nvar mapBinary = (data, binaryType) => {\n  switch (binaryType) {\n    case \"blob\":\n      if (data instanceof Blob) {\n        return data;\n      } else {\n        return new Blob([data]);\n      }\n    case \"arraybuffer\":\n    default:\n      if (data instanceof ArrayBuffer) {\n        return data;\n      } else {\n        return data.buffer;\n      }\n  }\n};\n\n// node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/esm/index.js\nvar SEPARATOR = String.fromCharCode(30);\nvar encodePayload = (packets, callback) => {\n  const length = packets.length;\n  const encodedPackets = new Array(length);\n  let count = 0;\n  packets.forEach((packet, i) => {\n    encodePacket(packet, false, (encodedPacket) => {\n      encodedPackets[i] = encodedPacket;\n      if (++count === length) {\n        callback(encodedPackets.join(SEPARATOR));\n      }\n    });\n  });\n};\nvar decodePayload = (encodedPayload, binaryType) => {\n  const encodedPackets = encodedPayload.split(SEPARATOR);\n  const packets = [];\n  for (let i = 0; i < encodedPackets.length; i++) {\n    const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n    packets.push(decodedPacket);\n    if (decodedPacket.type === \"error\") {\n      break;\n    }\n  }\n  return packets;\n};\nfunction createPacketEncoderStream() {\n  return new TransformStream({\n    transform(packet, controller) {\n      encodePacketToBinary(packet, (encodedPacket) => {\n        const payloadLength = encodedPacket.length;\n        let header;\n        if (payloadLength < 126) {\n          header = new Uint8Array(1);\n          new DataView(header.buffer).setUint8(0, payloadLength);\n        } else if (payloadLength < 65536) {\n          header = new Uint8Array(3);\n          const view = new DataView(header.buffer);\n          view.setUint8(0, 126);\n          view.setUint16(1, payloadLength);\n        } else {\n          header = new Uint8Array(9);\n          const view = new DataView(header.buffer);\n          view.setUint8(0, 127);\n          view.setBigUint64(1, BigInt(payloadLength));\n        }\n        if (packet.data && typeof packet.data !== \"string\") {\n          header[0] |= 128;\n        }\n        controller.enqueue(header);\n        controller.enqueue(encodedPacket);\n      });\n    }\n  });\n}\nvar TEXT_DECODER;\nfunction totalLength(chunks) {\n  return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n  if (chunks[0].length === size) {\n    return chunks.shift();\n  }\n  const buffer = new Uint8Array(size);\n  let j = 0;\n  for (let i = 0; i < size; i++) {\n    buffer[i] = chunks[0][j++];\n    if (j === chunks[0].length) {\n      chunks.shift();\n      j = 0;\n    }\n  }\n  if (chunks.length && j < chunks[0].length) {\n    chunks[0] = chunks[0].slice(j);\n  }\n  return buffer;\n}\nfunction createPacketDecoderStream(maxPayload, binaryType) {\n  if (!TEXT_DECODER) {\n    TEXT_DECODER = new TextDecoder();\n  }\n  const chunks = [];\n  let state = 0;\n  let expectedLength = -1;\n  let isBinary2 = false;\n  return new TransformStream({\n    transform(chunk, controller) {\n      chunks.push(chunk);\n      while (true) {\n        if (state === 0) {\n          if (totalLength(chunks) < 1) {\n            break;\n          }\n          const header = concatChunks(chunks, 1);\n          isBinary2 = (header[0] & 128) === 128;\n          expectedLength = header[0] & 127;\n          if (expectedLength < 126) {\n            state = 3;\n          } else if (expectedLength === 126) {\n            state = 1;\n          } else {\n            state = 2;\n          }\n        } else if (state === 1) {\n          if (totalLength(chunks) < 2) {\n            break;\n          }\n          const headerArray = concatChunks(chunks, 2);\n          expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n          state = 3;\n        } else if (state === 2) {\n          if (totalLength(chunks) < 8) {\n            break;\n          }\n          const headerArray = concatChunks(chunks, 8);\n          const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n          const n = view.getUint32(0);\n          if (n > Math.pow(2, 53 - 32) - 1) {\n            controller.enqueue(ERROR_PACKET);\n            break;\n          }\n          expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n          state = 3;\n        } else {\n          if (totalLength(chunks) < expectedLength) {\n            break;\n          }\n          const data = concatChunks(chunks, expectedLength);\n          controller.enqueue(decodePacket(isBinary2 ? data : TEXT_DECODER.decode(data), binaryType));\n          state = 0;\n        }\n        if (expectedLength === 0 || expectedLength > maxPayload) {\n          controller.enqueue(ERROR_PACKET);\n          break;\n        }\n      }\n    }\n  });\n}\nvar protocol = 4;\n\n// node_modules/.pnpm/@socket.io+component-emitter@3.1.2/node_modules/@socket.io/component-emitter/lib/esm/index.js\nfunction Emitter(obj) {\n  if (obj) return mixin(obj);\n}\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n  return obj;\n}\nEmitter.prototype.on = Emitter.prototype.addEventListener = function(event, fn) {\n  this._callbacks = this._callbacks || {};\n  (this._callbacks[\"$\" + event] = this._callbacks[\"$\" + event] || []).push(fn);\n  return this;\n};\nEmitter.prototype.once = function(event, fn) {\n  function on2() {\n    this.off(event, on2);\n    fn.apply(this, arguments);\n  }\n  on2.fn = fn;\n  this.on(event, on2);\n  return this;\n};\nEmitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function(event, fn) {\n  this._callbacks = this._callbacks || {};\n  if (0 == arguments.length) {\n    this._callbacks = {};\n    return this;\n  }\n  var callbacks = this._callbacks[\"$\" + event];\n  if (!callbacks) return this;\n  if (1 == arguments.length) {\n    delete this._callbacks[\"$\" + event];\n    return this;\n  }\n  var cb;\n  for (var i = 0; i < callbacks.length; i++) {\n    cb = callbacks[i];\n    if (cb === fn || cb.fn === fn) {\n      callbacks.splice(i, 1);\n      break;\n    }\n  }\n  if (callbacks.length === 0) {\n    delete this._callbacks[\"$\" + event];\n  }\n  return this;\n};\nEmitter.prototype.emit = function(event) {\n  this._callbacks = this._callbacks || {};\n  var args = new Array(arguments.length - 1), callbacks = this._callbacks[\"$\" + event];\n  for (var i = 1; i < arguments.length; i++) {\n    args[i - 1] = arguments[i];\n  }\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n  return this;\n};\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\nEmitter.prototype.listeners = function(event) {\n  this._callbacks = this._callbacks || {};\n  return this._callbacks[\"$\" + event] || [];\n};\nEmitter.prototype.hasListeners = function(event) {\n  return !!this.listeners(event).length;\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/globals.js\nvar nextTick = (() => {\n  const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n  if (isPromiseAvailable) {\n    return (cb) => Promise.resolve().then(cb);\n  } else {\n    return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n  }\n})();\nvar globalThisShim = (() => {\n  if (typeof self !== \"undefined\") {\n    return self;\n  } else if (typeof window !== \"undefined\") {\n    return window;\n  } else {\n    return Function(\"return this\")();\n  }\n})();\nvar defaultBinaryType = \"arraybuffer\";\nfunction createCookieJar() {\n}\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/util.js\nfunction pick(obj, ...attr) {\n  return attr.reduce((acc, k) => {\n    if (obj.hasOwnProperty(k)) {\n      acc[k] = obj[k];\n    }\n    return acc;\n  }, {});\n}\nvar NATIVE_SET_TIMEOUT = globalThisShim.setTimeout;\nvar NATIVE_CLEAR_TIMEOUT = globalThisShim.clearTimeout;\nfunction installTimerFunctions(obj, opts) {\n  if (opts.useNativeTimers) {\n    obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThisShim);\n    obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThisShim);\n  } else {\n    obj.setTimeoutFn = globalThisShim.setTimeout.bind(globalThisShim);\n    obj.clearTimeoutFn = globalThisShim.clearTimeout.bind(globalThisShim);\n  }\n}\nvar BASE64_OVERHEAD = 1.33;\nfunction byteLength(obj) {\n  if (typeof obj === \"string\") {\n    return utf8Length(obj);\n  }\n  return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n  let c = 0, length = 0;\n  for (let i = 0, l = str.length; i < l; i++) {\n    c = str.charCodeAt(i);\n    if (c < 128) {\n      length += 1;\n    } else if (c < 2048) {\n      length += 2;\n    } else if (c < 55296 || c >= 57344) {\n      length += 3;\n    } else {\n      i++;\n      length += 4;\n    }\n  }\n  return length;\n}\nfunction randomString() {\n  return Date.now().toString(36).substring(3) + Math.random().toString(36).substring(2, 5);\n}\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/contrib/parseqs.js\nfunction encode(obj) {\n  let str = \"\";\n  for (let i in obj) {\n    if (obj.hasOwnProperty(i)) {\n      if (str.length)\n        str += \"&\";\n      str += encodeURIComponent(i) + \"=\" + encodeURIComponent(obj[i]);\n    }\n  }\n  return str;\n}\nfunction decode2(qs) {\n  let qry = {};\n  let pairs = qs.split(\"&\");\n  for (let i = 0, l = pairs.length; i < l; i++) {\n    let pair = pairs[i].split(\"=\");\n    qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n  }\n  return qry;\n}\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transport.js\nvar TransportError = class extends Error {\n  constructor(reason, description, context) {\n    super(reason);\n    this.description = description;\n    this.context = context;\n    this.type = \"TransportError\";\n  }\n};\nvar Transport = class extends Emitter {\n  /**\n   * Transport abstract constructor.\n   *\n   * @param {Object} opts - options\n   * @protected\n   */\n  constructor(opts) {\n    super();\n    this.writable = false;\n    installTimerFunctions(this, opts);\n    this.opts = opts;\n    this.query = opts.query;\n    this.socket = opts.socket;\n    this.supportsBinary = !opts.forceBase64;\n  }\n  /**\n   * Emits an error.\n   *\n   * @param {String} reason\n   * @param description\n   * @param context - the error context\n   * @return {Transport} for chaining\n   * @protected\n   */\n  onError(reason, description, context) {\n    super.emitReserved(\"error\", new TransportError(reason, description, context));\n    return this;\n  }\n  /**\n   * Opens the transport.\n   */\n  open() {\n    this.readyState = \"opening\";\n    this.doOpen();\n    return this;\n  }\n  /**\n   * Closes the transport.\n   */\n  close() {\n    if (this.readyState === \"opening\" || this.readyState === \"open\") {\n      this.doClose();\n      this.onClose();\n    }\n    return this;\n  }\n  /**\n   * Sends multiple packets.\n   *\n   * @param {Array} packets\n   */\n  send(packets) {\n    if (this.readyState === \"open\") {\n      this.write(packets);\n    } else {\n    }\n  }\n  /**\n   * Called upon open\n   *\n   * @protected\n   */\n  onOpen() {\n    this.readyState = \"open\";\n    this.writable = true;\n    super.emitReserved(\"open\");\n  }\n  /**\n   * Called with data.\n   *\n   * @param {String} data\n   * @protected\n   */\n  onData(data) {\n    const packet = decodePacket(data, this.socket.binaryType);\n    this.onPacket(packet);\n  }\n  /**\n   * Called with a decoded packet.\n   *\n   * @protected\n   */\n  onPacket(packet) {\n    super.emitReserved(\"packet\", packet);\n  }\n  /**\n   * Called upon close.\n   *\n   * @protected\n   */\n  onClose(details) {\n    this.readyState = \"closed\";\n    super.emitReserved(\"close\", details);\n  }\n  /**\n   * Pauses the transport, in order not to lose packets during an upgrade.\n   *\n   * @param onPause\n   */\n  pause(onPause) {\n  }\n  createUri(schema, query = {}) {\n    return schema + \"://\" + this._hostname() + this._port() + this.opts.path + this._query(query);\n  }\n  _hostname() {\n    const hostname = this.opts.hostname;\n    return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n  }\n  _port() {\n    if (this.opts.port && (this.opts.secure && Number(this.opts.port !== 443) || !this.opts.secure && Number(this.opts.port) !== 80)) {\n      return \":\" + this.opts.port;\n    } else {\n      return \"\";\n    }\n  }\n  _query(query) {\n    const encodedQuery = encode(query);\n    return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n  }\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transports/polling.js\nvar Polling = class extends Transport {\n  constructor() {\n    super(...arguments);\n    this._polling = false;\n  }\n  get name() {\n    return \"polling\";\n  }\n  /**\n   * Opens the socket (triggers polling). We write a PING message to determine\n   * when the transport is open.\n   *\n   * @protected\n   */\n  doOpen() {\n    this._poll();\n  }\n  /**\n   * Pauses polling.\n   *\n   * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n   * @package\n   */\n  pause(onPause) {\n    this.readyState = \"pausing\";\n    const pause = () => {\n      this.readyState = \"paused\";\n      onPause();\n    };\n    if (this._polling || !this.writable) {\n      let total = 0;\n      if (this._polling) {\n        total++;\n        this.once(\"pollComplete\", function() {\n          --total || pause();\n        });\n      }\n      if (!this.writable) {\n        total++;\n        this.once(\"drain\", function() {\n          --total || pause();\n        });\n      }\n    } else {\n      pause();\n    }\n  }\n  /**\n   * Starts polling cycle.\n   *\n   * @private\n   */\n  _poll() {\n    this._polling = true;\n    this.doPoll();\n    this.emitReserved(\"poll\");\n  }\n  /**\n   * Overloads onData to detect payloads.\n   *\n   * @protected\n   */\n  onData(data) {\n    const callback = (packet) => {\n      if (\"opening\" === this.readyState && packet.type === \"open\") {\n        this.onOpen();\n      }\n      if (\"close\" === packet.type) {\n        this.onClose({ description: \"transport closed by the server\" });\n        return false;\n      }\n      this.onPacket(packet);\n    };\n    decodePayload(data, this.socket.binaryType).forEach(callback);\n    if (\"closed\" !== this.readyState) {\n      this._polling = false;\n      this.emitReserved(\"pollComplete\");\n      if (\"open\" === this.readyState) {\n        this._poll();\n      } else {\n      }\n    }\n  }\n  /**\n   * For polling, send a close packet.\n   *\n   * @protected\n   */\n  doClose() {\n    const close = () => {\n      this.write([{ type: \"close\" }]);\n    };\n    if (\"open\" === this.readyState) {\n      close();\n    } else {\n      this.once(\"open\", close);\n    }\n  }\n  /**\n   * Writes a packets payload.\n   *\n   * @param {Array} packets - data packets\n   * @protected\n   */\n  write(packets) {\n    this.writable = false;\n    encodePayload(packets, (data) => {\n      this.doWrite(data, () => {\n        this.writable = true;\n        this.emitReserved(\"drain\");\n      });\n    });\n  }\n  /**\n   * Generates uri for connection.\n   *\n   * @private\n   */\n  uri() {\n    const schema = this.opts.secure ? \"https\" : \"http\";\n    const query = this.query || {};\n    if (false !== this.opts.timestampRequests) {\n      query[this.opts.timestampParam] = randomString();\n    }\n    if (!this.supportsBinary && !query.sid) {\n      query.b64 = 1;\n    }\n    return this.createUri(schema, query);\n  }\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/contrib/has-cors.js\nvar value = false;\ntry {\n  value = typeof XMLHttpRequest !== \"undefined\" && \"withCredentials\" in new XMLHttpRequest();\n} catch (err) {\n}\nvar hasCORS = value;\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transports/polling-xhr.js\nfunction empty() {\n}\nvar BaseXHR = class extends Polling {\n  /**\n   * XHR Polling constructor.\n   *\n   * @param {Object} opts\n   * @package\n   */\n  constructor(opts) {\n    super(opts);\n    if (typeof location !== \"undefined\") {\n      const isSSL = \"https:\" === location.protocol;\n      let port = location.port;\n      if (!port) {\n        port = isSSL ? \"443\" : \"80\";\n      }\n      this.xd = typeof location !== \"undefined\" && opts.hostname !== location.hostname || port !== opts.port;\n    }\n  }\n  /**\n   * Sends data.\n   *\n   * @param {String} data to send.\n   * @param {Function} called upon flush.\n   * @private\n   */\n  doWrite(data, fn) {\n    const req = this.request({\n      method: \"POST\",\n      data\n    });\n    req.on(\"success\", fn);\n    req.on(\"error\", (xhrStatus, context) => {\n      this.onError(\"xhr post error\", xhrStatus, context);\n    });\n  }\n  /**\n   * Starts a poll cycle.\n   *\n   * @private\n   */\n  doPoll() {\n    const req = this.request();\n    req.on(\"data\", this.onData.bind(this));\n    req.on(\"error\", (xhrStatus, context) => {\n      this.onError(\"xhr poll error\", xhrStatus, context);\n    });\n    this.pollXhr = req;\n  }\n};\nvar Request = class _Request extends Emitter {\n  /**\n   * Request constructor\n   *\n   * @param {Object} options\n   * @package\n   */\n  constructor(createRequest, uri, opts) {\n    super();\n    this.createRequest = createRequest;\n    installTimerFunctions(this, opts);\n    this._opts = opts;\n    this._method = opts.method || \"GET\";\n    this._uri = uri;\n    this._data = void 0 !== opts.data ? opts.data : null;\n    this._create();\n  }\n  /**\n   * Creates the XHR object and sends the request.\n   *\n   * @private\n   */\n  _create() {\n    var _a;\n    const opts = pick(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n    opts.xdomain = !!this._opts.xd;\n    const xhr = this._xhr = this.createRequest(opts);\n    try {\n      xhr.open(this._method, this._uri, true);\n      try {\n        if (this._opts.extraHeaders) {\n          xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n          for (let i in this._opts.extraHeaders) {\n            if (this._opts.extraHeaders.hasOwnProperty(i)) {\n              xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n            }\n          }\n        }\n      } catch (e) {\n      }\n      if (\"POST\" === this._method) {\n        try {\n          xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n        } catch (e) {\n        }\n      }\n      try {\n        xhr.setRequestHeader(\"Accept\", \"*/*\");\n      } catch (e) {\n      }\n      (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n      if (\"withCredentials\" in xhr) {\n        xhr.withCredentials = this._opts.withCredentials;\n      }\n      if (this._opts.requestTimeout) {\n        xhr.timeout = this._opts.requestTimeout;\n      }\n      xhr.onreadystatechange = () => {\n        var _a2;\n        if (xhr.readyState === 3) {\n          (_a2 = this._opts.cookieJar) === null || _a2 === void 0 ? void 0 : _a2.parseCookies(\n            // @ts-ignore\n            xhr.getResponseHeader(\"set-cookie\")\n          );\n        }\n        if (4 !== xhr.readyState)\n          return;\n        if (200 === xhr.status || 1223 === xhr.status) {\n          this._onLoad();\n        } else {\n          this.setTimeoutFn(() => {\n            this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n          }, 0);\n        }\n      };\n      xhr.send(this._data);\n    } catch (e) {\n      this.setTimeoutFn(() => {\n        this._onError(e);\n      }, 0);\n      return;\n    }\n    if (typeof document !== \"undefined\") {\n      this._index = _Request.requestsCount++;\n      _Request.requests[this._index] = this;\n    }\n  }\n  /**\n   * Called upon error.\n   *\n   * @private\n   */\n  _onError(err) {\n    this.emitReserved(\"error\", err, this._xhr);\n    this._cleanup(true);\n  }\n  /**\n   * Cleans up house.\n   *\n   * @private\n   */\n  _cleanup(fromError) {\n    if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n      return;\n    }\n    this._xhr.onreadystatechange = empty;\n    if (fromError) {\n      try {\n        this._xhr.abort();\n      } catch (e) {\n      }\n    }\n    if (typeof document !== \"undefined\") {\n      delete _Request.requests[this._index];\n    }\n    this._xhr = null;\n  }\n  /**\n   * Called upon load.\n   *\n   * @private\n   */\n  _onLoad() {\n    const data = this._xhr.responseText;\n    if (data !== null) {\n      this.emitReserved(\"data\", data);\n      this.emitReserved(\"success\");\n      this._cleanup();\n    }\n  }\n  /**\n   * Aborts the request.\n   *\n   * @package\n   */\n  abort() {\n    this._cleanup();\n  }\n};\nRequest.requestsCount = 0;\nRequest.requests = {};\nif (typeof document !== \"undefined\") {\n  if (typeof attachEvent === \"function\") {\n    attachEvent(\"onunload\", unloadHandler);\n  } else if (typeof addEventListener === \"function\") {\n    const terminationEvent = \"onpagehide\" in globalThisShim ? \"pagehide\" : \"unload\";\n    addEventListener(terminationEvent, unloadHandler, false);\n  }\n}\nfunction unloadHandler() {\n  for (let i in Request.requests) {\n    if (Request.requests.hasOwnProperty(i)) {\n      Request.requests[i].abort();\n    }\n  }\n}\nvar hasXHR2 = function() {\n  const xhr = newRequest({\n    xdomain: false\n  });\n  return xhr && xhr.responseType !== null;\n}();\nvar XHR = class extends BaseXHR {\n  constructor(opts) {\n    super(opts);\n    const forceBase64 = opts && opts.forceBase64;\n    this.supportsBinary = hasXHR2 && !forceBase64;\n  }\n  request(opts = {}) {\n    Object.assign(opts, { xd: this.xd }, this.opts);\n    return new Request(newRequest, this.uri(), opts);\n  }\n};\nfunction newRequest(opts) {\n  const xdomain = opts.xdomain;\n  try {\n    if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n      return new XMLHttpRequest();\n    }\n  } catch (e) {\n  }\n  if (!xdomain) {\n    try {\n      return new globalThisShim[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n    } catch (e) {\n    }\n  }\n}\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transports/websocket.js\nvar isReactNative = typeof navigator !== \"undefined\" && typeof navigator.product === \"string\" && navigator.product.toLowerCase() === \"reactnative\";\nvar BaseWS = class extends Transport {\n  get name() {\n    return \"websocket\";\n  }\n  doOpen() {\n    const uri = this.uri();\n    const protocols = this.opts.protocols;\n    const opts = isReactNative ? {} : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n    if (this.opts.extraHeaders) {\n      opts.headers = this.opts.extraHeaders;\n    }\n    try {\n      this.ws = this.createSocket(uri, protocols, opts);\n    } catch (err) {\n      return this.emitReserved(\"error\", err);\n    }\n    this.ws.binaryType = this.socket.binaryType;\n    this.addEventListeners();\n  }\n  /**\n   * Adds event listeners to the socket\n   *\n   * @private\n   */\n  addEventListeners() {\n    this.ws.onopen = () => {\n      if (this.opts.autoUnref) {\n        this.ws._socket.unref();\n      }\n      this.onOpen();\n    };\n    this.ws.onclose = (closeEvent) => this.onClose({\n      description: \"websocket connection closed\",\n      context: closeEvent\n    });\n    this.ws.onmessage = (ev) => this.onData(ev.data);\n    this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n  }\n  write(packets) {\n    this.writable = false;\n    for (let i = 0; i < packets.length; i++) {\n      const packet = packets[i];\n      const lastPacket = i === packets.length - 1;\n      encodePacket(packet, this.supportsBinary, (data) => {\n        try {\n          this.doWrite(packet, data);\n        } catch (e) {\n        }\n        if (lastPacket) {\n          nextTick(() => {\n            this.writable = true;\n            this.emitReserved(\"drain\");\n          }, this.setTimeoutFn);\n        }\n      });\n    }\n  }\n  doClose() {\n    if (typeof this.ws !== \"undefined\") {\n      this.ws.onerror = () => {\n      };\n      this.ws.close();\n      this.ws = null;\n    }\n  }\n  /**\n   * Generates uri for connection.\n   *\n   * @private\n   */\n  uri() {\n    const schema = this.opts.secure ? \"wss\" : \"ws\";\n    const query = this.query || {};\n    if (this.opts.timestampRequests) {\n      query[this.opts.timestampParam] = randomString();\n    }\n    if (!this.supportsBinary) {\n      query.b64 = 1;\n    }\n    return this.createUri(schema, query);\n  }\n};\nvar WebSocketCtor = globalThisShim.WebSocket || globalThisShim.MozWebSocket;\nvar WS = class extends BaseWS {\n  createSocket(uri, protocols, opts) {\n    return !isReactNative ? protocols ? new WebSocketCtor(uri, protocols) : new WebSocketCtor(uri) : new WebSocketCtor(uri, protocols, opts);\n  }\n  doWrite(_packet, data) {\n    this.ws.send(data);\n  }\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transports/webtransport.js\nvar WT = class extends Transport {\n  get name() {\n    return \"webtransport\";\n  }\n  doOpen() {\n    try {\n      this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n    } catch (err) {\n      return this.emitReserved(\"error\", err);\n    }\n    this._transport.closed.then(() => {\n      this.onClose();\n    }).catch((err) => {\n      this.onError(\"webtransport error\", err);\n    });\n    this._transport.ready.then(() => {\n      this._transport.createBidirectionalStream().then((stream) => {\n        const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n        const reader = stream.readable.pipeThrough(decoderStream).getReader();\n        const encoderStream = createPacketEncoderStream();\n        encoderStream.readable.pipeTo(stream.writable);\n        this._writer = encoderStream.writable.getWriter();\n        const read = () => {\n          reader.read().then(({ done, value: value2 }) => {\n            if (done) {\n              return;\n            }\n            this.onPacket(value2);\n            read();\n          }).catch((err) => {\n          });\n        };\n        read();\n        const packet = { type: \"open\" };\n        if (this.query.sid) {\n          packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n        }\n        this._writer.write(packet).then(() => this.onOpen());\n      });\n    });\n  }\n  write(packets) {\n    this.writable = false;\n    for (let i = 0; i < packets.length; i++) {\n      const packet = packets[i];\n      const lastPacket = i === packets.length - 1;\n      this._writer.write(packet).then(() => {\n        if (lastPacket) {\n          nextTick(() => {\n            this.writable = true;\n            this.emitReserved(\"drain\");\n          }, this.setTimeoutFn);\n        }\n      });\n    }\n  }\n  doClose() {\n    var _a;\n    (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n  }\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transports/index.js\nvar transports = {\n  websocket: WS,\n  webtransport: WT,\n  polling: XHR\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/contrib/parseuri.js\nvar re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nvar parts = [\n  \"source\",\n  \"protocol\",\n  \"authority\",\n  \"userInfo\",\n  \"user\",\n  \"password\",\n  \"host\",\n  \"port\",\n  \"relative\",\n  \"path\",\n  \"directory\",\n  \"file\",\n  \"query\",\n  \"anchor\"\n];\nfunction parse(str) {\n  if (str.length > 8e3) {\n    throw \"URI too long\";\n  }\n  const src = str, b = str.indexOf(\"[\"), e = str.indexOf(\"]\");\n  if (b != -1 && e != -1) {\n    str = str.substring(0, b) + str.substring(b, e).replace(/:/g, \";\") + str.substring(e, str.length);\n  }\n  let m = re.exec(str || \"\"), uri = {}, i = 14;\n  while (i--) {\n    uri[parts[i]] = m[i] || \"\";\n  }\n  if (b != -1 && e != -1) {\n    uri.source = src;\n    uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, \":\");\n    uri.authority = uri.authority.replace(\"[\", \"\").replace(\"]\", \"\").replace(/;/g, \":\");\n    uri.ipv6uri = true;\n  }\n  uri.pathNames = pathNames(uri, uri[\"path\"]);\n  uri.queryKey = queryKey(uri, uri[\"query\"]);\n  return uri;\n}\nfunction pathNames(obj, path) {\n  const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n  if (path.slice(0, 1) == \"/\" || path.length === 0) {\n    names.splice(0, 1);\n  }\n  if (path.slice(-1) == \"/\") {\n    names.splice(names.length - 1, 1);\n  }\n  return names;\n}\nfunction queryKey(uri, query) {\n  const data = {};\n  query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function($0, $1, $2) {\n    if ($1) {\n      data[$1] = $2;\n    }\n  });\n  return data;\n}\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/socket.js\nvar withEventListeners = typeof addEventListener === \"function\" && typeof removeEventListener === \"function\";\nvar OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n  addEventListener(\"offline\", () => {\n    OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n  }, false);\n}\nvar SocketWithoutUpgrade = class _SocketWithoutUpgrade extends Emitter {\n  /**\n   * Socket constructor.\n   *\n   * @param {String|Object} uri - uri or options\n   * @param {Object} opts - options\n   */\n  constructor(uri, opts) {\n    super();\n    this.binaryType = defaultBinaryType;\n    this.writeBuffer = [];\n    this._prevBufferLen = 0;\n    this._pingInterval = -1;\n    this._pingTimeout = -1;\n    this._maxPayload = -1;\n    this._pingTimeoutTime = Infinity;\n    if (uri && \"object\" === typeof uri) {\n      opts = uri;\n      uri = null;\n    }\n    if (uri) {\n      const parsedUri = parse(uri);\n      opts.hostname = parsedUri.host;\n      opts.secure = parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n      opts.port = parsedUri.port;\n      if (parsedUri.query)\n        opts.query = parsedUri.query;\n    } else if (opts.host) {\n      opts.hostname = parse(opts.host).host;\n    }\n    installTimerFunctions(this, opts);\n    this.secure = null != opts.secure ? opts.secure : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n    if (opts.hostname && !opts.port) {\n      opts.port = this.secure ? \"443\" : \"80\";\n    }\n    this.hostname = opts.hostname || (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n    this.port = opts.port || (typeof location !== \"undefined\" && location.port ? location.port : this.secure ? \"443\" : \"80\");\n    this.transports = [];\n    this._transportsByName = {};\n    opts.transports.forEach((t) => {\n      const transportName = t.prototype.name;\n      this.transports.push(transportName);\n      this._transportsByName[transportName] = t;\n    });\n    this.opts = Object.assign({\n      path: \"/engine.io\",\n      agent: false,\n      withCredentials: false,\n      upgrade: true,\n      timestampParam: \"t\",\n      rememberUpgrade: false,\n      addTrailingSlash: true,\n      rejectUnauthorized: true,\n      perMessageDeflate: {\n        threshold: 1024\n      },\n      transportOptions: {},\n      closeOnBeforeunload: false\n    }, opts);\n    this.opts.path = this.opts.path.replace(/\\/$/, \"\") + (this.opts.addTrailingSlash ? \"/\" : \"\");\n    if (typeof this.opts.query === \"string\") {\n      this.opts.query = decode2(this.opts.query);\n    }\n    if (withEventListeners) {\n      if (this.opts.closeOnBeforeunload) {\n        this._beforeunloadEventListener = () => {\n          if (this.transport) {\n            this.transport.removeAllListeners();\n            this.transport.close();\n          }\n        };\n        addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n      }\n      if (this.hostname !== \"localhost\") {\n        this._offlineEventListener = () => {\n          this._onClose(\"transport close\", {\n            description: \"network connection lost\"\n          });\n        };\n        OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n      }\n    }\n    if (this.opts.withCredentials) {\n      this._cookieJar = createCookieJar();\n    }\n    this._open();\n  }\n  /**\n   * Creates transport of the given type.\n   *\n   * @param {String} name - transport name\n   * @return {Transport}\n   * @private\n   */\n  createTransport(name) {\n    const query = Object.assign({}, this.opts.query);\n    query.EIO = protocol;\n    query.transport = name;\n    if (this.id)\n      query.sid = this.id;\n    const opts = Object.assign({}, this.opts, {\n      query,\n      socket: this,\n      hostname: this.hostname,\n      secure: this.secure,\n      port: this.port\n    }, this.opts.transportOptions[name]);\n    return new this._transportsByName[name](opts);\n  }\n  /**\n   * Initializes transport to use and starts probe.\n   *\n   * @private\n   */\n  _open() {\n    if (this.transports.length === 0) {\n      this.setTimeoutFn(() => {\n        this.emitReserved(\"error\", \"No transports available\");\n      }, 0);\n      return;\n    }\n    const transportName = this.opts.rememberUpgrade && _SocketWithoutUpgrade.priorWebsocketSuccess && this.transports.indexOf(\"websocket\") !== -1 ? \"websocket\" : this.transports[0];\n    this.readyState = \"opening\";\n    const transport = this.createTransport(transportName);\n    transport.open();\n    this.setTransport(transport);\n  }\n  /**\n   * Sets the current transport. Disables the existing one (if any).\n   *\n   * @private\n   */\n  setTransport(transport) {\n    if (this.transport) {\n      this.transport.removeAllListeners();\n    }\n    this.transport = transport;\n    transport.on(\"drain\", this._onDrain.bind(this)).on(\"packet\", this._onPacket.bind(this)).on(\"error\", this._onError.bind(this)).on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n  }\n  /**\n   * Called when connection is deemed open.\n   *\n   * @private\n   */\n  onOpen() {\n    this.readyState = \"open\";\n    _SocketWithoutUpgrade.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n    this.emitReserved(\"open\");\n    this.flush();\n  }\n  /**\n   * Handles a packet.\n   *\n   * @private\n   */\n  _onPacket(packet) {\n    if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n      this.emitReserved(\"packet\", packet);\n      this.emitReserved(\"heartbeat\");\n      switch (packet.type) {\n        case \"open\":\n          this.onHandshake(JSON.parse(packet.data));\n          break;\n        case \"ping\":\n          this._sendPacket(\"pong\");\n          this.emitReserved(\"ping\");\n          this.emitReserved(\"pong\");\n          this._resetPingTimeout();\n          break;\n        case \"error\":\n          const err = new Error(\"server error\");\n          err.code = packet.data;\n          this._onError(err);\n          break;\n        case \"message\":\n          this.emitReserved(\"data\", packet.data);\n          this.emitReserved(\"message\", packet.data);\n          break;\n      }\n    } else {\n    }\n  }\n  /**\n   * Called upon handshake completion.\n   *\n   * @param {Object} data - handshake obj\n   * @private\n   */\n  onHandshake(data) {\n    this.emitReserved(\"handshake\", data);\n    this.id = data.sid;\n    this.transport.query.sid = data.sid;\n    this._pingInterval = data.pingInterval;\n    this._pingTimeout = data.pingTimeout;\n    this._maxPayload = data.maxPayload;\n    this.onOpen();\n    if (\"closed\" === this.readyState)\n      return;\n    this._resetPingTimeout();\n  }\n  /**\n   * Sets and resets ping timeout timer based on server pings.\n   *\n   * @private\n   */\n  _resetPingTimeout() {\n    this.clearTimeoutFn(this._pingTimeoutTimer);\n    const delay = this._pingInterval + this._pingTimeout;\n    this._pingTimeoutTime = Date.now() + delay;\n    this._pingTimeoutTimer = this.setTimeoutFn(() => {\n      this._onClose(\"ping timeout\");\n    }, delay);\n    if (this.opts.autoUnref) {\n      this._pingTimeoutTimer.unref();\n    }\n  }\n  /**\n   * Called on `drain` event\n   *\n   * @private\n   */\n  _onDrain() {\n    this.writeBuffer.splice(0, this._prevBufferLen);\n    this._prevBufferLen = 0;\n    if (0 === this.writeBuffer.length) {\n      this.emitReserved(\"drain\");\n    } else {\n      this.flush();\n    }\n  }\n  /**\n   * Flush write buffers.\n   *\n   * @private\n   */\n  flush() {\n    if (\"closed\" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) {\n      const packets = this._getWritablePackets();\n      this.transport.send(packets);\n      this._prevBufferLen = packets.length;\n      this.emitReserved(\"flush\");\n    }\n  }\n  /**\n   * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n   * long-polling)\n   *\n   * @private\n   */\n  _getWritablePackets() {\n    const shouldCheckPayloadSize = this._maxPayload && this.transport.name === \"polling\" && this.writeBuffer.length > 1;\n    if (!shouldCheckPayloadSize) {\n      return this.writeBuffer;\n    }\n    let payloadSize = 1;\n    for (let i = 0; i < this.writeBuffer.length; i++) {\n      const data = this.writeBuffer[i].data;\n      if (data) {\n        payloadSize += byteLength(data);\n      }\n      if (i > 0 && payloadSize > this._maxPayload) {\n        return this.writeBuffer.slice(0, i);\n      }\n      payloadSize += 2;\n    }\n    return this.writeBuffer;\n  }\n  /**\n   * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n   *\n   * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n   * `write()` method then the message would not be buffered by the Socket.IO client.\n   *\n   * @return {boolean}\n   * @private\n   */\n  /* private */\n  _hasPingExpired() {\n    if (!this._pingTimeoutTime)\n      return true;\n    const hasExpired = Date.now() > this._pingTimeoutTime;\n    if (hasExpired) {\n      this._pingTimeoutTime = 0;\n      nextTick(() => {\n        this._onClose(\"ping timeout\");\n      }, this.setTimeoutFn);\n    }\n    return hasExpired;\n  }\n  /**\n   * Sends a message.\n   *\n   * @param {String} msg - message.\n   * @param {Object} options.\n   * @param {Function} fn - callback function.\n   * @return {Socket} for chaining.\n   */\n  write(msg, options, fn) {\n    this._sendPacket(\"message\", msg, options, fn);\n    return this;\n  }\n  /**\n   * Sends a message. Alias of {@link Socket#write}.\n   *\n   * @param {String} msg - message.\n   * @param {Object} options.\n   * @param {Function} fn - callback function.\n   * @return {Socket} for chaining.\n   */\n  send(msg, options, fn) {\n    this._sendPacket(\"message\", msg, options, fn);\n    return this;\n  }\n  /**\n   * Sends a packet.\n   *\n   * @param {String} type: packet type.\n   * @param {String} data.\n   * @param {Object} options.\n   * @param {Function} fn - callback function.\n   * @private\n   */\n  _sendPacket(type, data, options, fn) {\n    if (\"function\" === typeof data) {\n      fn = data;\n      data = void 0;\n    }\n    if (\"function\" === typeof options) {\n      fn = options;\n      options = null;\n    }\n    if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n      return;\n    }\n    options = options || {};\n    options.compress = false !== options.compress;\n    const packet = {\n      type,\n      data,\n      options\n    };\n    this.emitReserved(\"packetCreate\", packet);\n    this.writeBuffer.push(packet);\n    if (fn)\n      this.once(\"flush\", fn);\n    this.flush();\n  }\n  /**\n   * Closes the connection.\n   */\n  close() {\n    const close = () => {\n      this._onClose(\"forced close\");\n      this.transport.close();\n    };\n    const cleanupAndClose = () => {\n      this.off(\"upgrade\", cleanupAndClose);\n      this.off(\"upgradeError\", cleanupAndClose);\n      close();\n    };\n    const waitForUpgrade = () => {\n      this.once(\"upgrade\", cleanupAndClose);\n      this.once(\"upgradeError\", cleanupAndClose);\n    };\n    if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n      this.readyState = \"closing\";\n      if (this.writeBuffer.length) {\n        this.once(\"drain\", () => {\n          if (this.upgrading) {\n            waitForUpgrade();\n          } else {\n            close();\n          }\n        });\n      } else if (this.upgrading) {\n        waitForUpgrade();\n      } else {\n        close();\n      }\n    }\n    return this;\n  }\n  /**\n   * Called upon transport error\n   *\n   * @private\n   */\n  _onError(err) {\n    _SocketWithoutUpgrade.priorWebsocketSuccess = false;\n    if (this.opts.tryAllTransports && this.transports.length > 1 && this.readyState === \"opening\") {\n      this.transports.shift();\n      return this._open();\n    }\n    this.emitReserved(\"error\", err);\n    this._onClose(\"transport error\", err);\n  }\n  /**\n   * Called upon transport close.\n   *\n   * @private\n   */\n  _onClose(reason, description) {\n    if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n      this.clearTimeoutFn(this._pingTimeoutTimer);\n      this.transport.removeAllListeners(\"close\");\n      this.transport.close();\n      this.transport.removeAllListeners();\n      if (withEventListeners) {\n        if (this._beforeunloadEventListener) {\n          removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n        }\n        if (this._offlineEventListener) {\n          const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n          if (i !== -1) {\n            OFFLINE_EVENT_LISTENERS.splice(i, 1);\n          }\n        }\n      }\n      this.readyState = \"closed\";\n      this.id = null;\n      this.emitReserved(\"close\", reason, description);\n      this.writeBuffer = [];\n      this._prevBufferLen = 0;\n    }\n  }\n};\nSocketWithoutUpgrade.protocol = protocol;\nvar SocketWithUpgrade = class extends SocketWithoutUpgrade {\n  constructor() {\n    super(...arguments);\n    this._upgrades = [];\n  }\n  onOpen() {\n    super.onOpen();\n    if (\"open\" === this.readyState && this.opts.upgrade) {\n      for (let i = 0; i < this._upgrades.length; i++) {\n        this._probe(this._upgrades[i]);\n      }\n    }\n  }\n  /**\n   * Probes a transport.\n   *\n   * @param {String} name - transport name\n   * @private\n   */\n  _probe(name) {\n    let transport = this.createTransport(name);\n    let failed = false;\n    SocketWithoutUpgrade.priorWebsocketSuccess = false;\n    const onTransportOpen = () => {\n      if (failed)\n        return;\n      transport.send([{ type: \"ping\", data: \"probe\" }]);\n      transport.once(\"packet\", (msg) => {\n        if (failed)\n          return;\n        if (\"pong\" === msg.type && \"probe\" === msg.data) {\n          this.upgrading = true;\n          this.emitReserved(\"upgrading\", transport);\n          if (!transport)\n            return;\n          SocketWithoutUpgrade.priorWebsocketSuccess = \"websocket\" === transport.name;\n          this.transport.pause(() => {\n            if (failed)\n              return;\n            if (\"closed\" === this.readyState)\n              return;\n            cleanup();\n            this.setTransport(transport);\n            transport.send([{ type: \"upgrade\" }]);\n            this.emitReserved(\"upgrade\", transport);\n            transport = null;\n            this.upgrading = false;\n            this.flush();\n          });\n        } else {\n          const err = new Error(\"probe error\");\n          err.transport = transport.name;\n          this.emitReserved(\"upgradeError\", err);\n        }\n      });\n    };\n    function freezeTransport() {\n      if (failed)\n        return;\n      failed = true;\n      cleanup();\n      transport.close();\n      transport = null;\n    }\n    const onerror = (err) => {\n      const error = new Error(\"probe error: \" + err);\n      error.transport = transport.name;\n      freezeTransport();\n      this.emitReserved(\"upgradeError\", error);\n    };\n    function onTransportClose() {\n      onerror(\"transport closed\");\n    }\n    function onclose() {\n      onerror(\"socket closed\");\n    }\n    function onupgrade(to) {\n      if (transport && to.name !== transport.name) {\n        freezeTransport();\n      }\n    }\n    const cleanup = () => {\n      transport.removeListener(\"open\", onTransportOpen);\n      transport.removeListener(\"error\", onerror);\n      transport.removeListener(\"close\", onTransportClose);\n      this.off(\"close\", onclose);\n      this.off(\"upgrading\", onupgrade);\n    };\n    transport.once(\"open\", onTransportOpen);\n    transport.once(\"error\", onerror);\n    transport.once(\"close\", onTransportClose);\n    this.once(\"close\", onclose);\n    this.once(\"upgrading\", onupgrade);\n    if (this._upgrades.indexOf(\"webtransport\") !== -1 && name !== \"webtransport\") {\n      this.setTimeoutFn(() => {\n        if (!failed) {\n          transport.open();\n        }\n      }, 200);\n    } else {\n      transport.open();\n    }\n  }\n  onHandshake(data) {\n    this._upgrades = this._filterUpgrades(data.upgrades);\n    super.onHandshake(data);\n  }\n  /**\n   * Filters upgrades, returning only those matching client transports.\n   *\n   * @param {Array} upgrades - server upgrades\n   * @private\n   */\n  _filterUpgrades(upgrades) {\n    const filteredUpgrades = [];\n    for (let i = 0; i < upgrades.length; i++) {\n      if (~this.transports.indexOf(upgrades[i]))\n        filteredUpgrades.push(upgrades[i]);\n    }\n    return filteredUpgrades;\n  }\n};\nvar Socket = class extends SocketWithUpgrade {\n  constructor(uri, opts = {}) {\n    const o = typeof uri === \"object\" ? uri : opts;\n    if (!o.transports || o.transports && typeof o.transports[0] === \"string\") {\n      o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"]).map((transportName) => transports[transportName]).filter((t) => !!t);\n    }\n    super(uri, o);\n  }\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/index.js\nvar protocol2 = Socket.protocol;\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/url.js\nfunction url(uri, path = \"\", loc) {\n  let obj = uri;\n  loc = loc || typeof location !== \"undefined\" && location;\n  if (null == uri)\n    uri = loc.protocol + \"//\" + loc.host;\n  if (typeof uri === \"string\") {\n    if (\"/\" === uri.charAt(0)) {\n      if (\"/\" === uri.charAt(1)) {\n        uri = loc.protocol + uri;\n      } else {\n        uri = loc.host + uri;\n      }\n    }\n    if (!/^(https?|wss?):\\/\\//.test(uri)) {\n      if (\"undefined\" !== typeof loc) {\n        uri = loc.protocol + \"//\" + uri;\n      } else {\n        uri = \"https://\" + uri;\n      }\n    }\n    obj = parse(uri);\n  }\n  if (!obj.port) {\n    if (/^(http|ws)$/.test(obj.protocol)) {\n      obj.port = \"80\";\n    } else if (/^(http|ws)s$/.test(obj.protocol)) {\n      obj.port = \"443\";\n    }\n  }\n  obj.path = obj.path || \"/\";\n  const ipv6 = obj.host.indexOf(\":\") !== -1;\n  const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n  obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n  obj.href = obj.protocol + \"://\" + host + (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n  return obj;\n}\n\n// node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/esm/index.js\nvar esm_exports = {};\n__export(esm_exports, {\n  Decoder: () => Decoder,\n  Encoder: () => Encoder,\n  PacketType: () => PacketType,\n  protocol: () => protocol3\n});\n\n// node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/esm/is-binary.js\nvar withNativeArrayBuffer3 = typeof ArrayBuffer === \"function\";\nvar isView2 = (obj) => {\n  return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;\n};\nvar toString = Object.prototype.toString;\nvar withNativeBlob2 = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && toString.call(Blob) === \"[object BlobConstructor]\";\nvar withNativeFile = typeof File === \"function\" || typeof File !== \"undefined\" && toString.call(File) === \"[object FileConstructor]\";\nfunction isBinary(obj) {\n  return withNativeArrayBuffer3 && (obj instanceof ArrayBuffer || isView2(obj)) || withNativeBlob2 && obj instanceof Blob || withNativeFile && obj instanceof File;\n}\nfunction hasBinary(obj, toJSON) {\n  if (!obj || typeof obj !== \"object\") {\n    return false;\n  }\n  if (Array.isArray(obj)) {\n    for (let i = 0, l = obj.length; i < l; i++) {\n      if (hasBinary(obj[i])) {\n        return true;\n      }\n    }\n    return false;\n  }\n  if (isBinary(obj)) {\n    return true;\n  }\n  if (obj.toJSON && typeof obj.toJSON === \"function\" && arguments.length === 1) {\n    return hasBinary(obj.toJSON(), true);\n  }\n  for (const key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n// node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/esm/binary.js\nfunction deconstructPacket(packet) {\n  const buffers = [];\n  const packetData = packet.data;\n  const pack = packet;\n  pack.data = _deconstructPacket(packetData, buffers);\n  pack.attachments = buffers.length;\n  return { packet: pack, buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n  if (!data)\n    return data;\n  if (isBinary(data)) {\n    const placeholder = { _placeholder: true, num: buffers.length };\n    buffers.push(data);\n    return placeholder;\n  } else if (Array.isArray(data)) {\n    const newData = new Array(data.length);\n    for (let i = 0; i < data.length; i++) {\n      newData[i] = _deconstructPacket(data[i], buffers);\n    }\n    return newData;\n  } else if (typeof data === \"object\" && !(data instanceof Date)) {\n    const newData = {};\n    for (const key in data) {\n      if (Object.prototype.hasOwnProperty.call(data, key)) {\n        newData[key] = _deconstructPacket(data[key], buffers);\n      }\n    }\n    return newData;\n  }\n  return data;\n}\nfunction reconstructPacket(packet, buffers) {\n  packet.data = _reconstructPacket(packet.data, buffers);\n  delete packet.attachments;\n  return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n  if (!data)\n    return data;\n  if (data && data._placeholder === true) {\n    const isIndexValid = typeof data.num === \"number\" && data.num >= 0 && data.num < buffers.length;\n    if (isIndexValid) {\n      return buffers[data.num];\n    } else {\n      throw new Error(\"illegal attachments\");\n    }\n  } else if (Array.isArray(data)) {\n    for (let i = 0; i < data.length; i++) {\n      data[i] = _reconstructPacket(data[i], buffers);\n    }\n  } else if (typeof data === \"object\") {\n    for (const key in data) {\n      if (Object.prototype.hasOwnProperty.call(data, key)) {\n        data[key] = _reconstructPacket(data[key], buffers);\n      }\n    }\n  }\n  return data;\n}\n\n// node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/esm/index.js\nvar RESERVED_EVENTS = [\n  \"connect\",\n  \"connect_error\",\n  \"disconnect\",\n  \"disconnecting\",\n  \"newListener\",\n  \"removeListener\"\n  // used by the Node.js EventEmitter\n];\nvar protocol3 = 5;\nvar PacketType;\n(function(PacketType2) {\n  PacketType2[PacketType2[\"CONNECT\"] = 0] = \"CONNECT\";\n  PacketType2[PacketType2[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n  PacketType2[PacketType2[\"EVENT\"] = 2] = \"EVENT\";\n  PacketType2[PacketType2[\"ACK\"] = 3] = \"ACK\";\n  PacketType2[PacketType2[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n  PacketType2[PacketType2[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n  PacketType2[PacketType2[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\nvar Encoder = class {\n  /**\n   * Encoder constructor\n   *\n   * @param {function} replacer - custom replacer to pass down to JSON.parse\n   */\n  constructor(replacer) {\n    this.replacer = replacer;\n  }\n  /**\n   * Encode a packet as a single string if non-binary, or as a\n   * buffer sequence, depending on packet type.\n   *\n   * @param {Object} obj - packet object\n   */\n  encode(obj) {\n    if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n      if (hasBinary(obj)) {\n        return this.encodeAsBinary({\n          type: obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK,\n          nsp: obj.nsp,\n          data: obj.data,\n          id: obj.id\n        });\n      }\n    }\n    return [this.encodeAsString(obj)];\n  }\n  /**\n   * Encode packet as string.\n   */\n  encodeAsString(obj) {\n    let str = \"\" + obj.type;\n    if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {\n      str += obj.attachments + \"-\";\n    }\n    if (obj.nsp && \"/\" !== obj.nsp) {\n      str += obj.nsp + \",\";\n    }\n    if (null != obj.id) {\n      str += obj.id;\n    }\n    if (null != obj.data) {\n      str += JSON.stringify(obj.data, this.replacer);\n    }\n    return str;\n  }\n  /**\n   * Encode packet as 'buffer sequence' by removing blobs, and\n   * deconstructing packet into object with placeholders and\n   * a list of buffers.\n   */\n  encodeAsBinary(obj) {\n    const deconstruction = deconstructPacket(obj);\n    const pack = this.encodeAsString(deconstruction.packet);\n    const buffers = deconstruction.buffers;\n    buffers.unshift(pack);\n    return buffers;\n  }\n};\nfunction isObject(value2) {\n  return Object.prototype.toString.call(value2) === \"[object Object]\";\n}\nvar Decoder = class _Decoder extends Emitter {\n  /**\n   * Decoder constructor\n   *\n   * @param {function} reviver - custom reviver to pass down to JSON.stringify\n   */\n  constructor(reviver) {\n    super();\n    this.reviver = reviver;\n  }\n  /**\n   * Decodes an encoded packet string into packet JSON.\n   *\n   * @param {String} obj - encoded packet\n   */\n  add(obj) {\n    let packet;\n    if (typeof obj === \"string\") {\n      if (this.reconstructor) {\n        throw new Error(\"got plaintext data when reconstructing a packet\");\n      }\n      packet = this.decodeString(obj);\n      const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n      if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n        packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n        this.reconstructor = new BinaryReconstructor(packet);\n        if (packet.attachments === 0) {\n          super.emitReserved(\"decoded\", packet);\n        }\n      } else {\n        super.emitReserved(\"decoded\", packet);\n      }\n    } else if (isBinary(obj) || obj.base64) {\n      if (!this.reconstructor) {\n        throw new Error(\"got binary data when not reconstructing a packet\");\n      } else {\n        packet = this.reconstructor.takeBinaryData(obj);\n        if (packet) {\n          this.reconstructor = null;\n          super.emitReserved(\"decoded\", packet);\n        }\n      }\n    } else {\n      throw new Error(\"Unknown type: \" + obj);\n    }\n  }\n  /**\n   * Decode a packet String (JSON data)\n   *\n   * @param {String} str\n   * @return {Object} packet\n   */\n  decodeString(str) {\n    let i = 0;\n    const p = {\n      type: Number(str.charAt(0))\n    };\n    if (PacketType[p.type] === void 0) {\n      throw new Error(\"unknown packet type \" + p.type);\n    }\n    if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) {\n      const start = i + 1;\n      while (str.charAt(++i) !== \"-\" && i != str.length) {\n      }\n      const buf = str.substring(start, i);\n      if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n        throw new Error(\"Illegal attachments\");\n      }\n      p.attachments = Number(buf);\n    }\n    if (\"/\" === str.charAt(i + 1)) {\n      const start = i + 1;\n      while (++i) {\n        const c = str.charAt(i);\n        if (\",\" === c)\n          break;\n        if (i === str.length)\n          break;\n      }\n      p.nsp = str.substring(start, i);\n    } else {\n      p.nsp = \"/\";\n    }\n    const next = str.charAt(i + 1);\n    if (\"\" !== next && Number(next) == next) {\n      const start = i + 1;\n      while (++i) {\n        const c = str.charAt(i);\n        if (null == c || Number(c) != c) {\n          --i;\n          break;\n        }\n        if (i === str.length)\n          break;\n      }\n      p.id = Number(str.substring(start, i + 1));\n    }\n    if (str.charAt(++i)) {\n      const payload = this.tryParse(str.substr(i));\n      if (_Decoder.isPayloadValid(p.type, payload)) {\n        p.data = payload;\n      } else {\n        throw new Error(\"invalid payload\");\n      }\n    }\n    return p;\n  }\n  tryParse(str) {\n    try {\n      return JSON.parse(str, this.reviver);\n    } catch (e) {\n      return false;\n    }\n  }\n  static isPayloadValid(type, payload) {\n    switch (type) {\n      case PacketType.CONNECT:\n        return isObject(payload);\n      case PacketType.DISCONNECT:\n        return payload === void 0;\n      case PacketType.CONNECT_ERROR:\n        return typeof payload === \"string\" || isObject(payload);\n      case PacketType.EVENT:\n      case PacketType.BINARY_EVENT:\n        return Array.isArray(payload) && (typeof payload[0] === \"number\" || typeof payload[0] === \"string\" && RESERVED_EVENTS.indexOf(payload[0]) === -1);\n      case PacketType.ACK:\n      case PacketType.BINARY_ACK:\n        return Array.isArray(payload);\n    }\n  }\n  /**\n   * Deallocates a parser's resources\n   */\n  destroy() {\n    if (this.reconstructor) {\n      this.reconstructor.finishedReconstruction();\n      this.reconstructor = null;\n    }\n  }\n};\nvar BinaryReconstructor = class {\n  constructor(packet) {\n    this.packet = packet;\n    this.buffers = [];\n    this.reconPack = packet;\n  }\n  /**\n   * Method to be called when binary data received from connection\n   * after a BINARY_EVENT packet.\n   *\n   * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n   * @return {null | Object} returns null if more binary data is expected or\n   *   a reconstructed packet object if all buffers have been received.\n   */\n  takeBinaryData(binData) {\n    this.buffers.push(binData);\n    if (this.buffers.length === this.reconPack.attachments) {\n      const packet = reconstructPacket(this.reconPack, this.buffers);\n      this.finishedReconstruction();\n      return packet;\n    }\n    return null;\n  }\n  /**\n   * Cleans up binary packet reconstruction variables.\n   */\n  finishedReconstruction() {\n    this.reconPack = null;\n    this.buffers = [];\n  }\n};\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/on.js\nfunction on(obj, ev, fn) {\n  obj.on(ev, fn);\n  return function subDestroy() {\n    obj.off(ev, fn);\n  };\n}\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/socket.js\nvar RESERVED_EVENTS2 = Object.freeze({\n  connect: 1,\n  connect_error: 1,\n  disconnect: 1,\n  disconnecting: 1,\n  // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n  newListener: 1,\n  removeListener: 1\n});\nvar Socket2 = class extends Emitter {\n  /**\n   * `Socket` constructor.\n   */\n  constructor(io, nsp, opts) {\n    super();\n    this.connected = false;\n    this.recovered = false;\n    this.receiveBuffer = [];\n    this.sendBuffer = [];\n    this._queue = [];\n    this._queueSeq = 0;\n    this.ids = 0;\n    this.acks = {};\n    this.flags = {};\n    this.io = io;\n    this.nsp = nsp;\n    if (opts && opts.auth) {\n      this.auth = opts.auth;\n    }\n    this._opts = Object.assign({}, opts);\n    if (this.io._autoConnect)\n      this.open();\n  }\n  /**\n   * Whether the socket is currently disconnected\n   *\n   * @example\n   * const socket = io();\n   *\n   * socket.on(\"connect\", () => {\n   *   console.log(socket.disconnected); // false\n   * });\n   *\n   * socket.on(\"disconnect\", () => {\n   *   console.log(socket.disconnected); // true\n   * });\n   */\n  get disconnected() {\n    return !this.connected;\n  }\n  /**\n   * Subscribe to open, close and packet events\n   *\n   * @private\n   */\n  subEvents() {\n    if (this.subs)\n      return;\n    const io = this.io;\n    this.subs = [\n      on(io, \"open\", this.onopen.bind(this)),\n      on(io, \"packet\", this.onpacket.bind(this)),\n      on(io, \"error\", this.onerror.bind(this)),\n      on(io, \"close\", this.onclose.bind(this))\n    ];\n  }\n  /**\n   * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n   *\n   * @example\n   * const socket = io();\n   *\n   * console.log(socket.active); // true\n   *\n   * socket.on(\"disconnect\", (reason) => {\n   *   if (reason === \"io server disconnect\") {\n   *     // the disconnection was initiated by the server, you need to manually reconnect\n   *     console.log(socket.active); // false\n   *   }\n   *   // else the socket will automatically try to reconnect\n   *   console.log(socket.active); // true\n   * });\n   */\n  get active() {\n    return !!this.subs;\n  }\n  /**\n   * \"Opens\" the socket.\n   *\n   * @example\n   * const socket = io({\n   *   autoConnect: false\n   * });\n   *\n   * socket.connect();\n   */\n  connect() {\n    if (this.connected)\n      return this;\n    this.subEvents();\n    if (!this.io[\"_reconnecting\"])\n      this.io.open();\n    if (\"open\" === this.io._readyState)\n      this.onopen();\n    return this;\n  }\n  /**\n   * Alias for {@link connect()}.\n   */\n  open() {\n    return this.connect();\n  }\n  /**\n   * Sends a `message` event.\n   *\n   * This method mimics the WebSocket.send() method.\n   *\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n   *\n   * @example\n   * socket.send(\"hello\");\n   *\n   * // this is equivalent to\n   * socket.emit(\"message\", \"hello\");\n   *\n   * @return self\n   */\n  send(...args) {\n    args.unshift(\"message\");\n    this.emit.apply(this, args);\n    return this;\n  }\n  /**\n   * Override `emit`.\n   * If the event is in `events`, it's emitted normally.\n   *\n   * @example\n   * socket.emit(\"hello\", \"world\");\n   *\n   * // all serializable datastructures are supported (no need to call JSON.stringify)\n   * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n   *\n   * // with an acknowledgement from the server\n   * socket.emit(\"hello\", \"world\", (val) => {\n   *   // ...\n   * });\n   *\n   * @return self\n   */\n  emit(ev, ...args) {\n    var _a, _b, _c;\n    if (RESERVED_EVENTS2.hasOwnProperty(ev)) {\n      throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n    }\n    args.unshift(ev);\n    if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n      this._addToQueue(args);\n      return this;\n    }\n    const packet = {\n      type: PacketType.EVENT,\n      data: args\n    };\n    packet.options = {};\n    packet.options.compress = this.flags.compress !== false;\n    if (\"function\" === typeof args[args.length - 1]) {\n      const id = this.ids++;\n      const ack = args.pop();\n      this._registerAckCallback(id, ack);\n      packet.id = id;\n    }\n    const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n    const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n    const discardPacket = this.flags.volatile && !isTransportWritable;\n    if (discardPacket) {\n    } else if (isConnected) {\n      this.notifyOutgoingListeners(packet);\n      this.packet(packet);\n    } else {\n      this.sendBuffer.push(packet);\n    }\n    this.flags = {};\n    return this;\n  }\n  /**\n   * @private\n   */\n  _registerAckCallback(id, ack) {\n    var _a;\n    const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n    if (timeout === void 0) {\n      this.acks[id] = ack;\n      return;\n    }\n    const timer = this.io.setTimeoutFn(() => {\n      delete this.acks[id];\n      for (let i = 0; i < this.sendBuffer.length; i++) {\n        if (this.sendBuffer[i].id === id) {\n          this.sendBuffer.splice(i, 1);\n        }\n      }\n      ack.call(this, new Error(\"operation has timed out\"));\n    }, timeout);\n    const fn = (...args) => {\n      this.io.clearTimeoutFn(timer);\n      ack.apply(this, args);\n    };\n    fn.withError = true;\n    this.acks[id] = fn;\n  }\n  /**\n   * Emits an event and waits for an acknowledgement\n   *\n   * @example\n   * // without timeout\n   * const response = await socket.emitWithAck(\"hello\", \"world\");\n   *\n   * // with a specific timeout\n   * try {\n   *   const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n   * } catch (err) {\n   *   // the server did not acknowledge the event in the given delay\n   * }\n   *\n   * @return a Promise that will be fulfilled when the server acknowledges the event\n   */\n  emitWithAck(ev, ...args) {\n    return new Promise((resolve, reject) => {\n      const fn = (arg1, arg2) => {\n        return arg1 ? reject(arg1) : resolve(arg2);\n      };\n      fn.withError = true;\n      args.push(fn);\n      this.emit(ev, ...args);\n    });\n  }\n  /**\n   * Add the packet to the queue.\n   * @param args\n   * @private\n   */\n  _addToQueue(args) {\n    let ack;\n    if (typeof args[args.length - 1] === \"function\") {\n      ack = args.pop();\n    }\n    const packet = {\n      id: this._queueSeq++,\n      tryCount: 0,\n      pending: false,\n      args,\n      flags: Object.assign({ fromQueue: true }, this.flags)\n    };\n    args.push((err, ...responseArgs) => {\n      if (packet !== this._queue[0]) {\n        return;\n      }\n      const hasError = err !== null;\n      if (hasError) {\n        if (packet.tryCount > this._opts.retries) {\n          this._queue.shift();\n          if (ack) {\n            ack(err);\n          }\n        }\n      } else {\n        this._queue.shift();\n        if (ack) {\n          ack(null, ...responseArgs);\n        }\n      }\n      packet.pending = false;\n      return this._drainQueue();\n    });\n    this._queue.push(packet);\n    this._drainQueue();\n  }\n  /**\n   * Send the first packet of the queue, and wait for an acknowledgement from the server.\n   * @param force - whether to resend a packet that has not been acknowledged yet\n   *\n   * @private\n   */\n  _drainQueue(force = false) {\n    if (!this.connected || this._queue.length === 0) {\n      return;\n    }\n    const packet = this._queue[0];\n    if (packet.pending && !force) {\n      return;\n    }\n    packet.pending = true;\n    packet.tryCount++;\n    this.flags = packet.flags;\n    this.emit.apply(this, packet.args);\n  }\n  /**\n   * Sends a packet.\n   *\n   * @param packet\n   * @private\n   */\n  packet(packet) {\n    packet.nsp = this.nsp;\n    this.io._packet(packet);\n  }\n  /**\n   * Called upon engine `open`.\n   *\n   * @private\n   */\n  onopen() {\n    if (typeof this.auth == \"function\") {\n      this.auth((data) => {\n        this._sendConnectPacket(data);\n      });\n    } else {\n      this._sendConnectPacket(this.auth);\n    }\n  }\n  /**\n   * Sends a CONNECT packet to initiate the Socket.IO session.\n   *\n   * @param data\n   * @private\n   */\n  _sendConnectPacket(data) {\n    this.packet({\n      type: PacketType.CONNECT,\n      data: this._pid ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data) : data\n    });\n  }\n  /**\n   * Called upon engine or manager `error`.\n   *\n   * @param err\n   * @private\n   */\n  onerror(err) {\n    if (!this.connected) {\n      this.emitReserved(\"connect_error\", err);\n    }\n  }\n  /**\n   * Called upon engine `close`.\n   *\n   * @param reason\n   * @param description\n   * @private\n   */\n  onclose(reason, description) {\n    this.connected = false;\n    delete this.id;\n    this.emitReserved(\"disconnect\", reason, description);\n    this._clearAcks();\n  }\n  /**\n   * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n   * the server.\n   *\n   * @private\n   */\n  _clearAcks() {\n    Object.keys(this.acks).forEach((id) => {\n      const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n      if (!isBuffered) {\n        const ack = this.acks[id];\n        delete this.acks[id];\n        if (ack.withError) {\n          ack.call(this, new Error(\"socket has been disconnected\"));\n        }\n      }\n    });\n  }\n  /**\n   * Called with socket packet.\n   *\n   * @param packet\n   * @private\n   */\n  onpacket(packet) {\n    const sameNamespace = packet.nsp === this.nsp;\n    if (!sameNamespace)\n      return;\n    switch (packet.type) {\n      case PacketType.CONNECT:\n        if (packet.data && packet.data.sid) {\n          this.onconnect(packet.data.sid, packet.data.pid);\n        } else {\n          this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n        }\n        break;\n      case PacketType.EVENT:\n      case PacketType.BINARY_EVENT:\n        this.onevent(packet);\n        break;\n      case PacketType.ACK:\n      case PacketType.BINARY_ACK:\n        this.onack(packet);\n        break;\n      case PacketType.DISCONNECT:\n        this.ondisconnect();\n        break;\n      case PacketType.CONNECT_ERROR:\n        this.destroy();\n        const err = new Error(packet.data.message);\n        err.data = packet.data.data;\n        this.emitReserved(\"connect_error\", err);\n        break;\n    }\n  }\n  /**\n   * Called upon a server event.\n   *\n   * @param packet\n   * @private\n   */\n  onevent(packet) {\n    const args = packet.data || [];\n    if (null != packet.id) {\n      args.push(this.ack(packet.id));\n    }\n    if (this.connected) {\n      this.emitEvent(args);\n    } else {\n      this.receiveBuffer.push(Object.freeze(args));\n    }\n  }\n  emitEvent(args) {\n    if (this._anyListeners && this._anyListeners.length) {\n      const listeners = this._anyListeners.slice();\n      for (const listener of listeners) {\n        listener.apply(this, args);\n      }\n    }\n    super.emit.apply(this, args);\n    if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n      this._lastOffset = args[args.length - 1];\n    }\n  }\n  /**\n   * Produces an ack callback to emit with an event.\n   *\n   * @private\n   */\n  ack(id) {\n    const self2 = this;\n    let sent = false;\n    return function(...args) {\n      if (sent)\n        return;\n      sent = true;\n      self2.packet({\n        type: PacketType.ACK,\n        id,\n        data: args\n      });\n    };\n  }\n  /**\n   * Called upon a server acknowledgement.\n   *\n   * @param packet\n   * @private\n   */\n  onack(packet) {\n    const ack = this.acks[packet.id];\n    if (typeof ack !== \"function\") {\n      return;\n    }\n    delete this.acks[packet.id];\n    if (ack.withError) {\n      packet.data.unshift(null);\n    }\n    ack.apply(this, packet.data);\n  }\n  /**\n   * Called upon server connect.\n   *\n   * @private\n   */\n  onconnect(id, pid) {\n    this.id = id;\n    this.recovered = pid && this._pid === pid;\n    this._pid = pid;\n    this.connected = true;\n    this.emitBuffered();\n    this.emitReserved(\"connect\");\n    this._drainQueue(true);\n  }\n  /**\n   * Emit buffered events (received and emitted).\n   *\n   * @private\n   */\n  emitBuffered() {\n    this.receiveBuffer.forEach((args) => this.emitEvent(args));\n    this.receiveBuffer = [];\n    this.sendBuffer.forEach((packet) => {\n      this.notifyOutgoingListeners(packet);\n      this.packet(packet);\n    });\n    this.sendBuffer = [];\n  }\n  /**\n   * Called upon server disconnect.\n   *\n   * @private\n   */\n  ondisconnect() {\n    this.destroy();\n    this.onclose(\"io server disconnect\");\n  }\n  /**\n   * Called upon forced client/server side disconnections,\n   * this method ensures the manager stops tracking us and\n   * that reconnections don't get triggered for this.\n   *\n   * @private\n   */\n  destroy() {\n    if (this.subs) {\n      this.subs.forEach((subDestroy) => subDestroy());\n      this.subs = void 0;\n    }\n    this.io[\"_destroy\"](this);\n  }\n  /**\n   * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n   *\n   * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n   *\n   * @example\n   * const socket = io();\n   *\n   * socket.on(\"disconnect\", (reason) => {\n   *   // console.log(reason); prints \"io client disconnect\"\n   * });\n   *\n   * socket.disconnect();\n   *\n   * @return self\n   */\n  disconnect() {\n    if (this.connected) {\n      this.packet({ type: PacketType.DISCONNECT });\n    }\n    this.destroy();\n    if (this.connected) {\n      this.onclose(\"io client disconnect\");\n    }\n    return this;\n  }\n  /**\n   * Alias for {@link disconnect()}.\n   *\n   * @return self\n   */\n  close() {\n    return this.disconnect();\n  }\n  /**\n   * Sets the compress flag.\n   *\n   * @example\n   * socket.compress(false).emit(\"hello\");\n   *\n   * @param compress - if `true`, compresses the sending data\n   * @return self\n   */\n  compress(compress) {\n    this.flags.compress = compress;\n    return this;\n  }\n  /**\n   * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n   * ready to send messages.\n   *\n   * @example\n   * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n   *\n   * @returns self\n   */\n  get volatile() {\n    this.flags.volatile = true;\n    return this;\n  }\n  /**\n   * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n   * given number of milliseconds have elapsed without an acknowledgement from the server:\n   *\n   * @example\n   * socket.timeout(5000).emit(\"my-event\", (err) => {\n   *   if (err) {\n   *     // the server did not acknowledge the event in the given delay\n   *   }\n   * });\n   *\n   * @returns self\n   */\n  timeout(timeout) {\n    this.flags.timeout = timeout;\n    return this;\n  }\n  /**\n   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n   * callback.\n   *\n   * @example\n   * socket.onAny((event, ...args) => {\n   *   console.log(`got ${event}`);\n   * });\n   *\n   * @param listener\n   */\n  onAny(listener) {\n    this._anyListeners = this._anyListeners || [];\n    this._anyListeners.push(listener);\n    return this;\n  }\n  /**\n   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n   * callback. The listener is added to the beginning of the listeners array.\n   *\n   * @example\n   * socket.prependAny((event, ...args) => {\n   *   console.log(`got event ${event}`);\n   * });\n   *\n   * @param listener\n   */\n  prependAny(listener) {\n    this._anyListeners = this._anyListeners || [];\n    this._anyListeners.unshift(listener);\n    return this;\n  }\n  /**\n   * Removes the listener that will be fired when any event is emitted.\n   *\n   * @example\n   * const catchAllListener = (event, ...args) => {\n   *   console.log(`got event ${event}`);\n   * }\n   *\n   * socket.onAny(catchAllListener);\n   *\n   * // remove a specific listener\n   * socket.offAny(catchAllListener);\n   *\n   * // or remove all listeners\n   * socket.offAny();\n   *\n   * @param listener\n   */\n  offAny(listener) {\n    if (!this._anyListeners) {\n      return this;\n    }\n    if (listener) {\n      const listeners = this._anyListeners;\n      for (let i = 0; i < listeners.length; i++) {\n        if (listener === listeners[i]) {\n          listeners.splice(i, 1);\n          return this;\n        }\n      }\n    } else {\n      this._anyListeners = [];\n    }\n    return this;\n  }\n  /**\n   * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n   * e.g. to remove listeners.\n   */\n  listenersAny() {\n    return this._anyListeners || [];\n  }\n  /**\n   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n   * callback.\n   *\n   * Note: acknowledgements sent to the server are not included.\n   *\n   * @example\n   * socket.onAnyOutgoing((event, ...args) => {\n   *   console.log(`sent event ${event}`);\n   * });\n   *\n   * @param listener\n   */\n  onAnyOutgoing(listener) {\n    this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n    this._anyOutgoingListeners.push(listener);\n    return this;\n  }\n  /**\n   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n   * callback. The listener is added to the beginning of the listeners array.\n   *\n   * Note: acknowledgements sent to the server are not included.\n   *\n   * @example\n   * socket.prependAnyOutgoing((event, ...args) => {\n   *   console.log(`sent event ${event}`);\n   * });\n   *\n   * @param listener\n   */\n  prependAnyOutgoing(listener) {\n    this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n    this._anyOutgoingListeners.unshift(listener);\n    return this;\n  }\n  /**\n   * Removes the listener that will be fired when any event is emitted.\n   *\n   * @example\n   * const catchAllListener = (event, ...args) => {\n   *   console.log(`sent event ${event}`);\n   * }\n   *\n   * socket.onAnyOutgoing(catchAllListener);\n   *\n   * // remove a specific listener\n   * socket.offAnyOutgoing(catchAllListener);\n   *\n   * // or remove all listeners\n   * socket.offAnyOutgoing();\n   *\n   * @param [listener] - the catch-all listener (optional)\n   */\n  offAnyOutgoing(listener) {\n    if (!this._anyOutgoingListeners) {\n      return this;\n    }\n    if (listener) {\n      const listeners = this._anyOutgoingListeners;\n      for (let i = 0; i < listeners.length; i++) {\n        if (listener === listeners[i]) {\n          listeners.splice(i, 1);\n          return this;\n        }\n      }\n    } else {\n      this._anyOutgoingListeners = [];\n    }\n    return this;\n  }\n  /**\n   * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n   * e.g. to remove listeners.\n   */\n  listenersAnyOutgoing() {\n    return this._anyOutgoingListeners || [];\n  }\n  /**\n   * Notify the listeners for each packet sent\n   *\n   * @param packet\n   *\n   * @private\n   */\n  notifyOutgoingListeners(packet) {\n    if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n      const listeners = this._anyOutgoingListeners.slice();\n      for (const listener of listeners) {\n        listener.apply(this, packet.data);\n      }\n    }\n  }\n};\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/contrib/backo2.js\nfunction Backoff(opts) {\n  opts = opts || {};\n  this.ms = opts.min || 100;\n  this.max = opts.max || 1e4;\n  this.factor = opts.factor || 2;\n  this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n  this.attempts = 0;\n}\nBackoff.prototype.duration = function() {\n  var ms = this.ms * Math.pow(this.factor, this.attempts++);\n  if (this.jitter) {\n    var rand = Math.random();\n    var deviation = Math.floor(rand * this.jitter * ms);\n    ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n  }\n  return Math.min(ms, this.max) | 0;\n};\nBackoff.prototype.reset = function() {\n  this.attempts = 0;\n};\nBackoff.prototype.setMin = function(min) {\n  this.ms = min;\n};\nBackoff.prototype.setMax = function(max) {\n  this.max = max;\n};\nBackoff.prototype.setJitter = function(jitter) {\n  this.jitter = jitter;\n};\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/manager.js\nvar Manager = class extends Emitter {\n  constructor(uri, opts) {\n    var _a;\n    super();\n    this.nsps = {};\n    this.subs = [];\n    if (uri && \"object\" === typeof uri) {\n      opts = uri;\n      uri = void 0;\n    }\n    opts = opts || {};\n    opts.path = opts.path || \"/socket.io\";\n    this.opts = opts;\n    installTimerFunctions(this, opts);\n    this.reconnection(opts.reconnection !== false);\n    this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n    this.reconnectionDelay(opts.reconnectionDelay || 1e3);\n    this.reconnectionDelayMax(opts.reconnectionDelayMax || 5e3);\n    this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n    this.backoff = new Backoff({\n      min: this.reconnectionDelay(),\n      max: this.reconnectionDelayMax(),\n      jitter: this.randomizationFactor()\n    });\n    this.timeout(null == opts.timeout ? 2e4 : opts.timeout);\n    this._readyState = \"closed\";\n    this.uri = uri;\n    const _parser = opts.parser || esm_exports;\n    this.encoder = new _parser.Encoder();\n    this.decoder = new _parser.Decoder();\n    this._autoConnect = opts.autoConnect !== false;\n    if (this._autoConnect)\n      this.open();\n  }\n  reconnection(v) {\n    if (!arguments.length)\n      return this._reconnection;\n    this._reconnection = !!v;\n    if (!v) {\n      this.skipReconnect = true;\n    }\n    return this;\n  }\n  reconnectionAttempts(v) {\n    if (v === void 0)\n      return this._reconnectionAttempts;\n    this._reconnectionAttempts = v;\n    return this;\n  }\n  reconnectionDelay(v) {\n    var _a;\n    if (v === void 0)\n      return this._reconnectionDelay;\n    this._reconnectionDelay = v;\n    (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n    return this;\n  }\n  randomizationFactor(v) {\n    var _a;\n    if (v === void 0)\n      return this._randomizationFactor;\n    this._randomizationFactor = v;\n    (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n    return this;\n  }\n  reconnectionDelayMax(v) {\n    var _a;\n    if (v === void 0)\n      return this._reconnectionDelayMax;\n    this._reconnectionDelayMax = v;\n    (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n    return this;\n  }\n  timeout(v) {\n    if (!arguments.length)\n      return this._timeout;\n    this._timeout = v;\n    return this;\n  }\n  /**\n   * Starts trying to reconnect if reconnection is enabled and we have not\n   * started reconnecting yet\n   *\n   * @private\n   */\n  maybeReconnectOnOpen() {\n    if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) {\n      this.reconnect();\n    }\n  }\n  /**\n   * Sets the current transport `socket`.\n   *\n   * @param {Function} fn - optional, callback\n   * @return self\n   * @public\n   */\n  open(fn) {\n    if (~this._readyState.indexOf(\"open\"))\n      return this;\n    this.engine = new Socket(this.uri, this.opts);\n    const socket = this.engine;\n    const self2 = this;\n    this._readyState = \"opening\";\n    this.skipReconnect = false;\n    const openSubDestroy = on(socket, \"open\", function() {\n      self2.onopen();\n      fn && fn();\n    });\n    const onError = (err) => {\n      this.cleanup();\n      this._readyState = \"closed\";\n      this.emitReserved(\"error\", err);\n      if (fn) {\n        fn(err);\n      } else {\n        this.maybeReconnectOnOpen();\n      }\n    };\n    const errorSub = on(socket, \"error\", onError);\n    if (false !== this._timeout) {\n      const timeout = this._timeout;\n      const timer = this.setTimeoutFn(() => {\n        openSubDestroy();\n        onError(new Error(\"timeout\"));\n        socket.close();\n      }, timeout);\n      if (this.opts.autoUnref) {\n        timer.unref();\n      }\n      this.subs.push(() => {\n        this.clearTimeoutFn(timer);\n      });\n    }\n    this.subs.push(openSubDestroy);\n    this.subs.push(errorSub);\n    return this;\n  }\n  /**\n   * Alias for open()\n   *\n   * @return self\n   * @public\n   */\n  connect(fn) {\n    return this.open(fn);\n  }\n  /**\n   * Called upon transport open.\n   *\n   * @private\n   */\n  onopen() {\n    this.cleanup();\n    this._readyState = \"open\";\n    this.emitReserved(\"open\");\n    const socket = this.engine;\n    this.subs.push(\n      on(socket, \"ping\", this.onping.bind(this)),\n      on(socket, \"data\", this.ondata.bind(this)),\n      on(socket, \"error\", this.onerror.bind(this)),\n      on(socket, \"close\", this.onclose.bind(this)),\n      // @ts-ignore\n      on(this.decoder, \"decoded\", this.ondecoded.bind(this))\n    );\n  }\n  /**\n   * Called upon a ping.\n   *\n   * @private\n   */\n  onping() {\n    this.emitReserved(\"ping\");\n  }\n  /**\n   * Called with data.\n   *\n   * @private\n   */\n  ondata(data) {\n    try {\n      this.decoder.add(data);\n    } catch (e) {\n      this.onclose(\"parse error\", e);\n    }\n  }\n  /**\n   * Called when parser fully decodes a packet.\n   *\n   * @private\n   */\n  ondecoded(packet) {\n    nextTick(() => {\n      this.emitReserved(\"packet\", packet);\n    }, this.setTimeoutFn);\n  }\n  /**\n   * Called upon socket error.\n   *\n   * @private\n   */\n  onerror(err) {\n    this.emitReserved(\"error\", err);\n  }\n  /**\n   * Creates a new socket for the given `nsp`.\n   *\n   * @return {Socket}\n   * @public\n   */\n  socket(nsp, opts) {\n    let socket = this.nsps[nsp];\n    if (!socket) {\n      socket = new Socket2(this, nsp, opts);\n      this.nsps[nsp] = socket;\n    } else if (this._autoConnect && !socket.active) {\n      socket.connect();\n    }\n    return socket;\n  }\n  /**\n   * Called upon a socket close.\n   *\n   * @param socket\n   * @private\n   */\n  _destroy(socket) {\n    const nsps = Object.keys(this.nsps);\n    for (const nsp of nsps) {\n      const socket2 = this.nsps[nsp];\n      if (socket2.active) {\n        return;\n      }\n    }\n    this._close();\n  }\n  /**\n   * Writes a packet.\n   *\n   * @param packet\n   * @private\n   */\n  _packet(packet) {\n    const encodedPackets = this.encoder.encode(packet);\n    for (let i = 0; i < encodedPackets.length; i++) {\n      this.engine.write(encodedPackets[i], packet.options);\n    }\n  }\n  /**\n   * Clean up transport subscriptions and packet buffer.\n   *\n   * @private\n   */\n  cleanup() {\n    this.subs.forEach((subDestroy) => subDestroy());\n    this.subs.length = 0;\n    this.decoder.destroy();\n  }\n  /**\n   * Close the current socket.\n   *\n   * @private\n   */\n  _close() {\n    this.skipReconnect = true;\n    this._reconnecting = false;\n    this.onclose(\"forced close\");\n  }\n  /**\n   * Alias for close()\n   *\n   * @private\n   */\n  disconnect() {\n    return this._close();\n  }\n  /**\n   * Called when:\n   *\n   * - the low-level engine is closed\n   * - the parser encountered a badly formatted packet\n   * - all sockets are disconnected\n   *\n   * @private\n   */\n  onclose(reason, description) {\n    var _a;\n    this.cleanup();\n    (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n    this.backoff.reset();\n    this._readyState = \"closed\";\n    this.emitReserved(\"close\", reason, description);\n    if (this._reconnection && !this.skipReconnect) {\n      this.reconnect();\n    }\n  }\n  /**\n   * Attempt a reconnection.\n   *\n   * @private\n   */\n  reconnect() {\n    if (this._reconnecting || this.skipReconnect)\n      return this;\n    const self2 = this;\n    if (this.backoff.attempts >= this._reconnectionAttempts) {\n      this.backoff.reset();\n      this.emitReserved(\"reconnect_failed\");\n      this._reconnecting = false;\n    } else {\n      const delay = this.backoff.duration();\n      this._reconnecting = true;\n      const timer = this.setTimeoutFn(() => {\n        if (self2.skipReconnect)\n          return;\n        this.emitReserved(\"reconnect_attempt\", self2.backoff.attempts);\n        if (self2.skipReconnect)\n          return;\n        self2.open((err) => {\n          if (err) {\n            self2._reconnecting = false;\n            self2.reconnect();\n            this.emitReserved(\"reconnect_error\", err);\n          } else {\n            self2.onreconnect();\n          }\n        });\n      }, delay);\n      if (this.opts.autoUnref) {\n        timer.unref();\n      }\n      this.subs.push(() => {\n        this.clearTimeoutFn(timer);\n      });\n    }\n  }\n  /**\n   * Called upon successful reconnect.\n   *\n   * @private\n   */\n  onreconnect() {\n    const attempt = this.backoff.attempts;\n    this._reconnecting = false;\n    this.backoff.reset();\n    this.emitReserved(\"reconnect\", attempt);\n  }\n};\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/index.js\nvar cache = {};\nfunction lookup2(uri, opts) {\n  if (typeof uri === \"object\") {\n    opts = uri;\n    uri = void 0;\n  }\n  opts = opts || {};\n  const parsed = url(uri, opts.path || \"/socket.io\");\n  const source = parsed.source;\n  const id = parsed.id;\n  const path = parsed.path;\n  const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n  const newConnection = opts.forceNew || opts[\"force new connection\"] || false === opts.multiplex || sameNamespace;\n  let io;\n  if (newConnection) {\n    io = new Manager(source, opts);\n  } else {\n    if (!cache[id]) {\n      cache[id] = new Manager(source, opts);\n    }\n    io = cache[id];\n  }\n  if (parsed.query && !opts.query) {\n    opts.query = parsed.queryKey;\n  }\n  return io.socket(parsed.path, opts);\n}\nObject.assign(lookup2, {\n  Manager,\n  Socket: Socket2,\n  io: lookup2,\n  connect: lookup2\n});\n\n// src/utils/live-reload/socket.ts\nvar socket_default = {\n  connect(endpoint) {\n    return new Promise((resolve, reject) => {\n      const socket = lookup2(endpoint);\n      socket.on(\"connect\", () => {\n        console.log(`[framer-live-esm] Socket connected`);\n        return resolve(socket);\n      });\n      socket.on(\"reconnect\", (data) => {\n        console.error(`[framer-live-esm] Socket reconnected`);\n      });\n      socket.on(\"connect_error\", (err) => {\n        console.error(\n          `[framer-live-esm] Socket had a connection error: ${err.message}`,\n          socket\n        );\n        return reject(err);\n      });\n      socket.on(\"connect_timeout\", (err) => {\n        console.error(\n          `[framer-live-esm] Socket connection timed out: ${err.message}`\n        );\n        return reject(err);\n      });\n    });\n  }\n};\n\nexport {\n  socket_default\n};\n","import {\n  socket_default\n} from \"./chunk-DEZTVITG.mjs\";\nimport {\n  __async\n} from \"./chunk-JWK35I2R.mjs\";\n\n// src/utils/live-reload/bootstrap.ts\nvar SOCKET_SERVER_URL = \"http://127.0.0.1:8001\";\nfunction initLiveReload() {\n  return __async(this, null, function* () {\n    if (window.framerRealtimeSocket) return;\n    try {\n      console.log(`[framer-live-esm] Connecting on ${SOCKET_SERVER_URL}`);\n      const createdSocket = yield socket_default.connect(SOCKET_SERVER_URL);\n      console.log(`[framer-live-esm] Created socket`);\n      window.framerRealtimeSocket = createdSocket;\n    } catch (err) {\n      console.error(`[framer-live-esm] Error trying to create socket `, err);\n    }\n  });\n}\n\nexport {\n  initLiveReload\n};\n","import {\n  initLiveReload\n} from \"../../chunk-X6ESPM5B.mjs\";\nimport \"../../chunk-DEZTVITG.mjs\";\nimport {\n  isDev\n} from \"../../chunk-XHUQFNFZ.mjs\";\nimport \"../../chunk-HQBHGXH5.mjs\";\nimport \"../../chunk-OPROYRJW.mjs\";\nimport \"../../chunk-XZ4AGIVR.mjs\";\nimport \"../../chunk-2FYKH3RO.mjs\";\nimport {\n  __async\n} from \"../../chunk-JWK35I2R.mjs\";\n\n// src/utils/live-reload/useRealtimeComponent.ts\nimport * as React from \"react\";\nfunction useRealtimeComponent(originalComponent, componentName) {\n  if (!isDev) return originalComponent;\n  const [, setForceRerender] = React.useState(0);\n  const updateCount = React.useRef(0);\n  const updatedInstance = React.useRef(null);\n  React.useLayoutEffect(() => {\n    const onRebuild = (event) => __async(null, null, function* () {\n      console.log(\n        `[framer-live-esm] Build complete, refreshing ${componentName}`\n      );\n      const response = yield import(`http://127.0.0.1:8000/${componentName}.mjs?${updateCount.current}`);\n      updateCount.current++;\n      updatedInstance.current = response[componentName.split(\"/\").pop()];\n      setForceRerender(updateCount.current);\n    });\n    const setupHandler = (retryCount = 0) => {\n      if (!window.framerRealtimeSocket) {\n        setTimeout(() => setupHandler(retryCount + 1), retryCount + 1 * 500);\n        return;\n      }\n      window.framerRealtimeSocket.on(\"build\", onRebuild);\n    };\n    setupHandler();\n    return () => {\n      if (window.framerRealtimeSocket) {\n        window.framerRealtimeSocket.off(\"build\", onRebuild);\n      }\n    };\n  }, [componentName]);\n  React.useEffect(() => {\n    initLiveReload();\n  }, []);\n  return updatedInstance.current || originalComponent;\n}\nexport {\n  useRealtimeComponent\n};\n","import{jsx as _jsx}from\"react/jsx-runtime\";import*as m from\"https://esm.ngrok.dev/index.mjs\";import{useRealtimeComponent}from\"https://esm.ngrok.dev/utils/live-reload/useRealtimeComponent.mjs\";import{addPropertyControls}from\"framer\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Init(props){const Component=useRealtimeComponent(m.Init,\"auth/Init\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Init,m.Init.propertyControls||{});/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export function UserButton(props){const Component=useRealtimeComponent(m.UserButton,\"auth/UserButton\");return /*#__PURE__*/_jsx(Component,{...props});}/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export function Login(props){const Component=useRealtimeComponent(m.Login,\"auth/Login\");return /*#__PURE__*/_jsx(Component,{...props});}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight auto\n */export function CompareImage(props){const Component=useRealtimeComponent(m.CompareImage,\"CompareImage\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(CompareImage,m.CompareImage.propertyControls||{});/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export function Counter(props){const Component=useRealtimeComponent(m.Counter,\"Counter\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Counter,m.Counter.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export function ClassList(props){const Component=useRealtimeComponent(m.ClassList,\"ClassList\");return /*#__PURE__*/_jsx(Component,{...props});}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any\n */export function VideoList(props){const Component=useRealtimeComponent(m.VideoList,\"class/VideoList\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(VideoList,m.VideoList.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function MuxPlayer(props){const Component=useRealtimeComponent(m.MuxPlayer,\"MuxPlayer\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(MuxPlayer,m.MuxPlayer.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Reviews(props){const Component=useRealtimeComponent(m.Reviews,\"Reviews\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Reviews,m.Reviews.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Framer101(props){const Component=useRealtimeComponent(m.Framer101,\"Framer101\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Framer101,m.Framer101.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Framer101_2(props){const Component=useRealtimeComponent(m.Framer101_2,\"Framer101_2\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Framer101_2,m.Framer101_2.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Framer101_3(props){const Component=useRealtimeComponent(m.Framer101_3,\"Framer101_3\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Framer101_3,m.Framer101_3.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Waitlist(props){const Component=useRealtimeComponent(m.Waitlist,\"Waitlist\");return /*#__PURE__*/_jsx(Component,{...props});}//------------------------------------------------ Payments\n/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export function HandleMobileRedirection(props){const Component=useRealtimeComponent(m.HandleMobileRedirection,\"payments/HandleMobileRedirection\");return /*#__PURE__*/_jsx(Component,{...props});}\nexport const __FramerMetadata__ = {\"exports\":{\"Counter\":{\"type\":\"reactComponent\",\"name\":\"Counter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\"}},\"Login\":{\"type\":\"reactComponent\",\"name\":\"Login\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"Reviews\":{\"type\":\"reactComponent\",\"name\":\"Reviews\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"Init\":{\"type\":\"reactComponent\",\"name\":\"Init\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\"}},\"Framer101_3\":{\"type\":\"reactComponent\",\"name\":\"Framer101_3\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"UserButton\":{\"type\":\"reactComponent\",\"name\":\"UserButton\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\"}},\"MuxPlayer\":{\"type\":\"reactComponent\",\"name\":\"MuxPlayer\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\"}},\"Framer101\":{\"type\":\"reactComponent\",\"name\":\"Framer101\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"Waitlist\":{\"type\":\"reactComponent\",\"name\":\"Waitlist\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\"}},\"VideoList\":{\"type\":\"reactComponent\",\"name\":\"VideoList\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"ClassList\":{\"type\":\"reactComponent\",\"name\":\"ClassList\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"auto\"}},\"Framer101_2\":{\"type\":\"reactComponent\",\"name\":\"Framer101_2\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"CompareImage\":{\"type\":\"reactComponent\",\"name\":\"CompareImage\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"HandleMobileRedirection\":{\"type\":\"reactComponent\",\"name\":\"HandleMobileRedirection\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Components.map"],"mappings":"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EAAK,MACV,EAAK,MAAM,eAAe,KAC5B,EAAK,MAAM,GAAM,CAAC,EAAG,WAAW,GAAI,EAAG,WAAW,GAAI,EAAG,WAAW,GAAI,EAAG,WAAW,GAAG,EAG7F,IAAM,EAAY,IAAI,WAAW,CAC/B,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,IACA,IACA,IACA,IAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,EAED,EACK,EAAY,IAAI,WAAW,CAC/B,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,IACA,IACA,IACA,IAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,EAED,EACD,EAAK,WAAa,CAChB,MAAO,EACP,MAAO,EACR,CACD,IAAM,EAAO,IAAI,WAAW,CAC1B,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,GAEA,IACA,IACA,IACA,GAEA,EAEA,EACA,EACA,EAED,EACK,EAAO,IAAI,WAAW,CAC1B,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,EAED,EACD,EAAK,KAAO,EAAK,KAAO,EAAK,KAAO,EACpC,EAAK,KAAO,IAAI,WAAW,CACzB,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAED,EACD,EAAK,KAAO,IAAI,WAAW,CACzB,EAEA,EACA,EACA,EAEA,EACA,EAEA,EACA,EACA,EACA,EACA,EACA,EAED,EACD,EAAK,KAAO,IAAI,WAAW,CACzB,EAEA,EACA,EACA,EAEA,EACA,EAEA,EACA,EAED,EACD,EAAK,KAAO,IAAI,WAAW,CACzB,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,EACD,EACD,IAAM,EAAa,IAAI,WAAW,CAAC,IAAK,IAAK,IAAK,IAAI,EAChD,EAAY,IA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AAM,MACN,KAAM,aACN,KAAM,6EACP,CACD,CACE,KAAM,MACN,KAAM,UACN,KAAM,6EACP,CACD,CACE,KAAM,SACN,KAAM,aACN,KAAM,gEACP,CACF,CACK,EAAa,CACjB,CACE,OAAQ,4BACR,MAAO,yBACP,YAAa,8EACb,aAAc,EACd,SAAU,QACV,QAAS,oDACT,QAAS,CACP,0BACA,yBACA,iBACA,oBACA,sBACD,CACF,CACD,CACE,OAAQ,6BACR,MAAO,uBACP,YAAa,oEACb,aAAc,EACd,SAAU,MACV,QAAS,kDACT,QAAS,CACP,iCACA,kCACA,6BACA,uBACA,2BACD,CACF,CACD,CACE,OAAQ,8BACR,MAAO,iBACP,YAAa,yDACb,aAAc,EACd,SAAU,MACV,QAAS,0CACT,QAAS,CACP,oCACA,mCACA,0BACA,iCACA,uBACD,CACF,CACD,CACE,OAAQ,wBACR,MAAO,qBACP,YAAa,4DACb,aAAc,EACd,SAAU,QACV,QAAS,+CACT,QAAS,CACP,qBACA,2BACA,gBACA,uBACA,4BACD,CACF,CACD,CACE,OAAQ,6BACR,MAAO,uBACP,YAAa,oEACb,aAAc,EACd,SAAU,MACV,QAAS,mDACT,QAAS,CACP,uBACA,kBACA,yBACA,qBACA,yBACD,CACF,CACD,CACE,OAAQ,+BACR,MAAO,0BACP,YAAa,+EACb,aAAc,EACd,SAAU,MACV,QAAS,iDACT,QAAS,CACP,qBACA,uBACA,uBACA,2BACA,yBACA,sBACA,iCACD,CACF,CACF,CACK,EAAO,CACX,CACE,SAAU,yBACV,OAAQ,uKACT,CACD,CACE,SAAU,0BACV,OAAQ,2HACT,CACD,CACE,SAAU,qBACV,OAAQ,kEACT,CACD,CACE,SAAU,6BACV,OAAQ,mFACT,CACF,CACK,GAAkB,CAAE,aAAY,GAAK,CACzC,IAAM,MAA0B,CAC9B,IAAM,EAAc,IAAI,KAAK,GAAc,CAAiB,IAAI,KAC5D,EAAY,EAAE,CASlB,OARI,EAAa,IACf,EAAY,CACVa,EAAQ,KAAK,MAAM,GAAc,IAAM,GAAK,GAAK,KACjDC,GAAc,KAAK,MAAM,GAAc,IAA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,CAAE,UAAW,6IAA8I,SAAU,CAC9L,EAAI,GAAY,EAAE,EAClB,EAAI,IAAK,CAAE,UAAW,4BAA6B,SAAU,qBAAsG,EACpL,CAAE,EACa,EACd,SACA,CACE,IAAK,mCACL,UAAW,yBACX,MAAO,yBACP,UAAW,KACZ,EAEJ,CACF,EAEJ,CACF,EAEa,EACd,IACA,CACE,UAAW,6BACX,MAAO,CAAE,MAAOA,GAAO,WAAY,CACnC,SAAU,mBACX,EAEJ,CAAE,EACJ,CAAE,CACJ,KC9JD,SAASE,IAAY,CACnB,IAAM,EAAW,CACf,yBACA,6BACA,0BACA,6BACA,6BACA,2BACD,CACK,EAAW,CACf,CACE,MAAO,0BACP,YAAa,iFACd,CACD,CACE,MAAO,2BACP,YAAa,4EACd,CACD,CACE,MAAO,6BACP,YAAa,oFACd,CACF,CACK,EAAU,CACd,CACE,KAAM,MACN,KAAM,aACN,KAAM,6EACP,CACD,CACE,KAAM,MACN,KAAM,UACN,KAAM,6EACP,CACD,CACE,KAAM,SACN,KAAM,aACN,KAAM,gEACP,CACF,CACK,EAAa,CACjB,CACE,OAAQ,4BACR,MAAO,yBACP,YAAa,8EACb,aAAc,EACd,SAAU,QACV,QAAS,oDACT,QAAS,CACP,0BACA,yBACA,iBACA,oBACA,sBACD,CACF,CACD,CACE,OAAQ,6BACR,MAAO,uBACP,YAAa,oEACb,aAAc,EACd,SAAU,MACV,QAAS,kDACT,QAAS,CACP,iCACA,kCACA,6BACA,uBACA,2BACD,CACF,CACD,CACE,OAAQ,8BACR,MAAO,iBACP,YAAa,yDACb,aAAc,EACd,SAAU,MACV,QAAS,0CACT,QAAS,CACP,oCACA,mCACA,0BACA,iCACA,uBACD,CACF,CACD,CACE,OAAQ,wBACR,MAAO,qBACP,YAAa,4DACb,aAAc,EACd,SAAU,QACV,QAAS,+CACT,QAAS,CACP,qBACA,2BACA,gBACA,uBACA,4BACD,CACF,CACD,CACE,OAAQ,6BACR,MAAO,uBACP,YAAa,oEACb,aAAc,EACd,SAAU,MACV,QAAS,mDACT,QAAS,CACP,uBACA,kBACA,yBACA,qBACA,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"}