stormcloud-video-player 0.8.70 → 0.8.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","DEFAULT_FLOOR_LADDER_BOUNDS","DEFAULT_TRACKING_INGEST_CONFIG","DEFAULT_WEB_FLOOR_LADDER_CONFIG","IS_BROWSER","IS_GLOBAL","IS_IOS","IS_SAFARI","SUPPORTS_DASH","SUPPORTS_HLS","StormcloudPlayer","StormcloudPlayer_default","StormcloudVideoPlayer","StormcloudVideoPlayerComponent","applyTrackingIngestConfig","buildAnalyticsContext","canPlay","configureTrackingIngest","createHlsAdPlayer","createPalNonceManager","createStormcloudPlayer","default","detectBrowser","fixedFloorSelector","generateFloorLevels","getBrowserConfigOverrides","getBrowserID","getClientInfo","ingestPlayerTracking","initializePolyfills","isMediaStream","isTrackingIngestEnabled","lazy","logBrowserInfo","merge","omit","parseQuery","players","players_default","randomString","requiresMediaPipelineResetAfterAds","resolveFloorLadderBounds","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","supportsFeature","supportsModernJS","supportsWebKitPresentationMode","trackingIngestConfig","validateFloorCents","validateFloorLadderConfig","module","exports","import_react","require","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","deviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","orphanFragments","searchParams","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","max","round","podMaxDurationMs","podMaxAds","existingUrl","pageUrl","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","minCents","maxCents","levels","cents","overrides","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","Array","isArray","errors","check","selected","select","context","floorCents","resolveOpportunityFloor","selector","base","position","skipped","status","positions","decodeQueryComponent","mergeCustParams","decoded","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","next","update","FloorLadderController","initial","getBounds","validate","setSelector","snapshotFor","import_hls","getChromeVersion","match","getWebKitVersion","getPlatform","userAgentData","platform","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","pauseContentDuringAds","browser","Map","URLSearchParams","e","assign","debug","feature","fetch","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","formatPlayhead","seconds","isFinite","total","hh","mm","ss","ms","resolveMacroValues","values","s","substituteVastTrackingMacros","parseVastTime","h","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","errorCode","playerWidth","playerHeight","clientUa","podSequence","adServingId","LINEAR_TRACKING_EVENTS","textOf","el","textContent","map","p","parseFloat","m","n","parseProgressOffset","offset","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","error","code","contentVideo","options","adPlaying","originalMutedState","originalVolume","min","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","warn","SENSITIVE_URL_PARAMS","redactUrl","logFunnel","stage","extra","breakId","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","log","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","timeoutId","release","outcome","clearTimeout","onload","onerror","inFlightBeacons","src","getMainStreamQuality","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","devicePixelRatio","containerWidth","containerHeight","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","accepted","file","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","canPlayType","playable","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","sort","a","b","mediaFile","isProgressiveMediaFile","isAudioMediaFile","getMediaProbe","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","toUpperCase","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","mediaFileElements","stats","collectVideoMediaFiles","linear","verbose","querySelectorAll","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","targetLists","sourceLists","incoming","concat","parseXml","xmlString","xmlDoc","DOMParser","parserError","parseFromString","querySelector","getAdSequence","adElement","sequence","emptyVastResult","errorUrls","root","parseVastXml","documentElement","adElements","ordered","firstEmpty","entries","parseAdElement","usedAdIndex","adCount","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","candidate","files","rejectStats","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","kind","controller","startedAt","attempt","requestVast","response","Error","AbortController","add","abort","creds","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","errorMessage","message","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","isEdgeEmptySentinelAd","durations","every","fetchAndParsePod","isEdge","trimmedXml","empty","resolveAd","candidates","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","wrapperCount","sentinelCount","catch","shift","createAdVideoElement","video","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","start","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","handleAdComplete","recoverFromAdFailure","advanceToNextPodAd","onError","vastErrorCode","mediaErrorCode","onMediaDiagnostic","currentSrc","readyState","networkState","onVolumeChange","userActivation","isActive","paused","isTrackablePlayback","mute","unmute","ended","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","open","reportCurrentAdError","fireNotUsedForUnplayedAds","notUsed","inView","settleViewability","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","toVastPlayErrorCode","failAdPlayback","errorName","startAdPlayback","isMutedRetry","computed","getComputedStyle","isConnected","containerDisplay","display","containerVisibility","visibility","playPromise","play","finally","prepareVideoElementForNewSource","destroy","removeAttribute","load","recreateAdVideoElement","remove","clearMediaStartTimer","startMediaStartTimer","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","handleAdError","loadCurrentAdMedia","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","on","attachMedia","Events","MANIFEST_PARSED","ERROR","_event","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","fragUrl","frag","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","STALL_TIMEOUT_MS","releaseAdDecoder","pointerEvents","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","appendChild","attachContainerHandlers","requestAds","requestOptions","preloaded","reject","impressionUrls","adIndex","missingAdId","contentVolume","loadError","stop","previousMutedState","clear","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getPodAdCount","getPodTotalDurationMs","reduce","limitPodToBudget","maxDurationMs","maxAds","dropped","totalMs","durationMs","keptCount","droppedCount","keptDurationMs","PRIVATE_HOST_PATTERNS","isLocalDevHost","some","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonce","currentNonceManager","generateNonce","loader","request","manager","NonceRequest","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","JSON","stringify","loadNonceManager","getNonce","getCurrentNonce","injectNonce","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","licenseKey","body","method","Authorization","cachedBrowserId","debugAdTiming","isLiveStream","inputStreamType","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","toISOString","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","metricEvent","events","adDetectInfo","adLoadedInfo","adImpressionInfo","ad_played_count","ad_url","adUrl","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","parseQueryString","append","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","str","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","parseCueOutDuration","num","d","dStr","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","out","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","descriptorsIdentifyScte35","checksum","section","processedSections","firstKey","addScte35SectionMarker","markers","hasProcessedTsScte35Section","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","bytePos","bitPos","readBits","numBits","remainingInByte","toRead","currentByte","mask","bits","skipBits","bytePosition","segmentationEventId","cancelIndicator","segmentationDurationFlag","descriptor","segmentationUpidLength","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","identifier","programSegmentationFlag","componentCount","durationTicks","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorMarker","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","commandBodyStart","spliceEventId","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","segmentation_event_id","Scte35CueManager","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","callbacks","pendingScte35CueKey","pendingScte35CueKeyValue","cue","createScte35Cue","readiness","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","fragmentSn","fragmentStartSec","sn","onScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","fragmentStartSeconds","getScte35CueKey","getScte35MarkerRaw","toIdentityString","splice_event_id","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","consentSignals","AdConfigManager","vmapBreaks","consumedVmapBreakIds","podAssignedByPrefetch","defaultPodMaxAds","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","breakStartMs","findBreakForTime","selectVastTagsForBreak","beginNewAdPod","resolvePodParams","breakDurationMs","defaultPodMaxDurationMs","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","envSignals","ctvAdRequest","urlWithMacros","podCounter","autoplay","finalUrl","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","lastHeartbeatTime","destroyTracking","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","remainingMs","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","scheduleAdStartIn","onAdStopTimerFired","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","currentAdBreakStartWallClockMs","scteAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","getLoadedAdId","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","globalNoFillThreshold","exponent","backoff","pow","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adRequestWatchdogId","adFailsafeTimeoutMs","logAdState","clearAdFailsafeTimer","startAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","import_hls2","HlsEngine","cueManager","timing","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","allowNativeHls","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragmentsToScan","fragments","tagList","idx","FRAG_BUFFERED","minSegmentsBeforePlay","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","prog","activatePendingCuesForFragment","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","parseScte35FromTsPackets","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","resolveEdgePodBaseUrl","enableEdgePodRequest","buildEdgePodUrl","remainingAdLimit","maxMs","classifyEdgeVastResponse","podAdCount","describeEdgeUrl","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","remaining","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","errorPayload","cause","innerError","causeMessage","handleAdFailure","currentPodSource","resetGamNoFillCounter","isShowingPlaceholder","setSlotState","requestNextAd","recreateAdController","currentRequestId","state","countFunnelStage","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","playbackStartedForCurrentRequest","newAdPlayer","createAdPlayer","shouldContinueLiveStreamDuringAds","setAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","breakSource","resetEdgeStateForBreak","followUpBaseVastUrl","noteOpportunity","handleAdStart","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","hasPrefetchedUrl","edgeUrl","podPlayed","getEdgePodBaseUrl","vastUrls","waitForBreakDuration","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLiveBreak","startOptimizedPod","maxWaitMs","deadline","waitedForMs","resolved","prefetched","podUrl","noteVastUrlGenerated","requestToken","beginFunnelRequest","applyOpportunityFloor","currentVastUrl","requestUrl","isStale","callController","recordRequestFailure","podCount","getMinRemainingMsToRequestAd","remainingAds","trigger","classification","diag","endpoint","pmxd","podDurationMs","failureReason","previous","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","nextAdTimerId","stopReason","decision","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","epoch2","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","pmad","pmnd","vastAdCount","impressionFired","impressionCount","requestFloorFields","recordRequestDiagnostic","endReason","edgeRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","gamReturnedAdWithoutImpression","fields","withCurrentPodBudget","rawVastTagUrl","minMs","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","floorConfigVersion","adPosition","floorApplied","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","gamRequestSent","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","budgetedUrl","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeRequests","edgeFills","edgeEmptySentinels","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsRetries","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","monitorLiveResumeStall","resumeContentPlayback","liveSyncPos","toFixed","restartHlsLoad","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","v","net","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","poll","cleanup","advanced","playing","bufferedAhead","wedged","canRecover","reloadPos"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n DEFAULT_FLOOR_LADDER_BOUNDS: () => DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_TRACKING_INGEST_CONFIG: () => DEFAULT_TRACKING_INGEST_CONFIG,\n DEFAULT_WEB_FLOOR_LADDER_CONFIG: () => DEFAULT_WEB_FLOOR_LADDER_CONFIG,\n IS_BROWSER: () => IS_BROWSER,\n IS_GLOBAL: () => IS_GLOBAL,\n IS_IOS: () => IS_IOS,\n IS_SAFARI: () => IS_SAFARI,\n SUPPORTS_DASH: () => SUPPORTS_DASH,\n SUPPORTS_HLS: () => SUPPORTS_HLS,\n StormcloudPlayer: () => StormcloudPlayer_default,\n StormcloudVideoPlayer: () => StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent: () => StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig: () => applyTrackingIngestConfig,\n buildAnalyticsContext: () => buildAnalyticsContext,\n canPlay: () => canPlay,\n configureTrackingIngest: () => configureTrackingIngest,\n createHlsAdPlayer: () => createHlsAdPlayer,\n createPalNonceManager: () => createPalNonceManager,\n createStormcloudPlayer: () => createStormcloudPlayer,\n default: () => StormcloudVideoPlayerComponent,\n detectBrowser: () => detectBrowser,\n fixedFloorSelector: () => fixedFloorSelector,\n generateFloorLevels: () => generateFloorLevels,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n ingestPlayerTracking: () => ingestPlayerTracking,\n initializePolyfills: () => initializePolyfills,\n isMediaStream: () => isMediaStream,\n isTrackingIngestEnabled: () => isTrackingIngestEnabled,\n lazy: () => lazy,\n logBrowserInfo: () => logBrowserInfo,\n merge: () => merge,\n omit: () => omit,\n parseQuery: () => parseQuery,\n players: () => players_default,\n randomString: () => randomString,\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds: () => resolveFloorLadderBounds,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode,\n trackingIngestConfig: () => trackingIngestConfig,\n validateFloorCents: () => validateFloorCents,\n validateFloorLadderConfig: () => validateFloorLadderConfig\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_react = __toESM(require(\"react\"), 1);\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n let deviceId = realDeviceId;\n let deviceIdType = bridgeSignals.deviceIdType || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() ?? false : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking() ?? false;\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n if (ctx.podMinDurationMs != null) {\n params.set(\"pmnd\", String(Math.max(0, Math.round(ctx.podMinDurationMs))));\n }\n if (ctx.podMaxDurationMs != null) {\n params.set(\"pmxd\", String(Math.max(0, Math.round(ctx.podMaxDurationMs))));\n }\n if (ctx.podMaxAds != null) {\n params.set(\"pmad\", String(Math.max(1, Math.round(ctx.podMaxAds))));\n }\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/FloorLadder.ts\nvar DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"airytv_web_floor\",\n minFloorCents: 25,\n maxFloorCents: 300,\n stepCents: 25,\n selectedFloorCents: 25,\n fallbackFloorCents: 25,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [\"midroll\"],\n targetAdUnitPath: \"/21821455290/airytvadx/airytv-web\",\n configurationVersion: \"2026-09-29.1\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction isInteger(value) {\n return typeof value === \"number\" && Number.isInteger(value);\n}\nfunction generateFloorLevels(minCents, maxCents, stepCents) {\n if (!isInteger(minCents) || !isInteger(maxCents) || !isInteger(stepCents)) return [];\n if (stepCents <= 0 || minCents <= 0 || maxCents < minCents) return [];\n const levels = [];\n for (let cents = minCents; cents <= maxCents; cents += stepCents) {\n levels.push(cents);\n }\n return levels;\n}\nfunction resolveFloorLadderBounds(overrides = {}) {\n return {\n minCents: overrides.minCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.minCents,\n maxCents: overrides.maxCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,\n stepCents: overrides.stepCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.stepCents\n };\n}\nfunction validateFloorCents(value, config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n if (!isInteger(value)) return { ok: false, reason: \"not_integer\" };\n if (!(value >= bounds.minCents && value <= bounds.maxCents) || !(value >= config.minFloorCents && value <= config.maxFloorCents)) {\n return { ok: false, reason: \"out_of_range\" };\n }\n const gamLevels = generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents);\n const configLevels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents);\n if (gamLevels.indexOf(value) === -1 || configLevels.indexOf(value) === -1) {\n return { ok: false, reason: \"not_step_multiple\" };\n }\n const ready = Array.isArray(config.readyFloorCents) ? config.readyFloorCents : [];\n if (ready.indexOf(value) === -1) return { ok: false, reason: \"not_ready\" };\n return { ok: true };\n}\nfunction validateFloorLadderConfig(config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n const errors = [];\n if (generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents).length === 0) {\n errors.push(\"invalid_gam_bounds\");\n }\n const levels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents).filter((cents) => validateFloorCents(cents, { ...config, readyFloorCents: [cents] }, bounds).ok);\n if (levels.length === 0) errors.push(\"invalid_level_bounds\");\n if (config.minFloorCents < bounds.minCents || config.maxFloorCents > bounds.maxCents) {\n errors.push(\"level_bounds_outside_gam_ladder\");\n }\n if (!config.targetingKey) errors.push(\"missing_targeting_key\");\n if (config.mode !== \"fixed\") errors.push(`unsupported_mode:${String(config.mode)}`);\n if (!Array.isArray(config.readyFloorCents)) {\n errors.push(\"ready_floor_cents_not_array\");\n } else {\n for (const cents of config.readyFloorCents) {\n const check = validateFloorCents(cents, config, bounds);\n if (!check.ok) errors.push(`ready_floor_invalid:${String(cents)}:${check.reason}`);\n }\n }\n const selected = validateFloorCents(config.selectedFloorCents, config, bounds);\n if (!selected.ok) errors.push(`selected_floor_invalid:${selected.reason}`);\n const fallback = validateFloorCents(config.fallbackFloorCents, config, bounds);\n if (!fallback.ok) errors.push(`fallback_floor_invalid:${fallback.reason}`);\n return { ok: errors.length === 0, levels, errors };\n}\nvar fixedFloorSelector = {\n name: \"fixed\",\n select(config, context) {\n if (config.mode !== \"fixed\") return { source: \"none\", reason: \"unsupported_mode\" };\n const selected = validateFloorCents(config.selectedFloorCents, config, context.bounds);\n if (selected.ok) return { floorCents: config.selectedFloorCents, source: \"selected\" };\n const fallback = validateFloorCents(config.fallbackFloorCents, config, context.bounds);\n if (fallback.ok) {\n return {\n floorCents: config.fallbackFloorCents,\n source: \"fallback\",\n reason: `selected_${selected.reason}`\n };\n }\n return {\n source: \"none\",\n reason: `no_valid_floor:selected_${selected.reason}:fallback_${fallback.reason}`\n };\n }\n};\nfunction resolveOpportunityFloor(config, context, selector = fixedFloorSelector) {\n const base = {\n selector: selector.name,\n position: context.position,\n configurationVersion: String(config.configurationVersion ?? \"\"),\n targetingKey: config.targetingKey,\n targetAdUnitPath: config.targetAdUnitPath\n };\n const skipped = (reason, source = \"none\") => Object.freeze({ ...base, status: \"skipped\", floorCents: void 0, source, reason });\n if (!config.enabled) return skipped(\"disabled\");\n const positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];\n if (positions.indexOf(context.position) === -1) return skipped(\"position_not_allowed\");\n if (context.isCtv) return skipped(\"ctv_excluded\");\n if (!config.targetingKey) return skipped(\"missing_targeting_key\");\n if (!config.targetAdUnitPath) return skipped(\"missing_target_ad_unit\");\n let result;\n try {\n result = selector.select(config, context);\n } catch {\n return skipped(\"selector_error\");\n }\n if (result.floorCents == null) return skipped(result.reason ?? \"no_valid_floor\", result.source);\n const check = validateFloorCents(result.floorCents, config, context.bounds);\n if (!check.ok) return skipped(`selector_floor_${check.reason}`);\n return Object.freeze({\n ...base,\n status: \"armed\",\n floorCents: result.floorCents,\n source: result.source,\n reason: result.reason\n });\n}\nfunction decodeQueryComponent(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return void 0;\n }\n}\nfunction mergeCustParams(decoded, key, cents) {\n const prefix = `${key}=`;\n const kept = decoded.split(\"&\").filter((pair) => pair !== \"\" && pair !== key && pair.indexOf(prefix) !== 0);\n kept.push(`${prefix}${cents}`);\n return kept.join(\"&\");\n}\nfunction applyFloorToVastUrl(url, floor) {\n if (floor.status !== \"armed\" || floor.floorCents == null) {\n return { url, applied: false, reason: floor.reason };\n }\n let parsed;\n try {\n parsed = new URL(url);\n } catch {\n return { url, applied: false, reason: \"invalid_url\" };\n }\n if (!GAM_AD_HOSTS.has(parsed.hostname)) {\n return { url, applied: false, reason: \"not_gam_host\" };\n }\n if (parsed.searchParams.get(\"iu\") !== floor.targetAdUnitPath) {\n return { url, applied: false, reason: \"ad_unit_mismatch\" };\n }\n const hashIndex = url.indexOf(\"#\");\n const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const hash = hashIndex === -1 ? \"\" : url.slice(hashIndex);\n const queryIndex = beforeHash.indexOf(\"?\");\n const base = beforeHash.slice(0, queryIndex);\n const segments = beforeHash.slice(queryIndex + 1).split(\"&\");\n const existing = [];\n let insertAt = -1;\n const rest = [];\n for (const segment of segments) {\n const eq = segment.indexOf(\"=\");\n const rawKey = eq === -1 ? segment : segment.slice(0, eq);\n if (decodeQueryComponent(rawKey) === \"cust_params\") {\n if (insertAt === -1) insertAt = rest.length;\n const value = eq === -1 ? \"\" : decodeQueryComponent(segment.slice(eq + 1));\n if (value === void 0) {\n return { url, applied: false, reason: \"malformed_cust_params\" };\n }\n if (value) existing.push(value);\n continue;\n }\n rest.push(segment);\n }\n if (insertAt === -1) insertAt = rest.length;\n const merged = mergeCustParams(existing.join(\"&\"), floor.targetingKey, floor.floorCents);\n rest.splice(insertAt, 0, `cust_params=${encodeURIComponent(merged)}`);\n const query = rest.filter((segment) => segment !== \"\").join(\"&\");\n return { url: `${base}?${query}${hash}`, applied: true, reason: void 0 };\n}\nfunction copyConfig(config) {\n return {\n ...config,\n readyFloorCents: Array.isArray(config.readyFloorCents) ? config.readyFloorCents.slice() : [],\n allowedPositions: Array.isArray(config.allowedPositions) ? config.allowedPositions.slice() : []\n };\n}\nfunction mergeDefined(target, update) {\n const next = copyConfig(target);\n if (!update) return next;\n for (const key of Object.keys(update)) {\n const value = update[key];\n if (value !== void 0) next[key] = value;\n }\n return copyConfig(next);\n}\nvar FloorLadderController = class {\n constructor(initial, bounds, selector = fixedFloorSelector) {\n this.config = mergeDefined(copyConfig(DEFAULT_WEB_FLOOR_LADDER_CONFIG), initial);\n this.bounds = Object.freeze(resolveFloorLadderBounds(bounds));\n this.selector = selector;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...this.bounds };\n }\n update(update) {\n this.config = mergeDefined(this.config, update);\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n validate() {\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n setSelector(selector) {\n this.selector = selector;\n }\n snapshotFor(context) {\n return resolveOpportunityFloor(\n copyConfig(this.config),\n { ...context, bounds: this.bounds },\n this.selector\n );\n }\n};\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingHost}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingHost}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? import_hls.default.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n accepted.push({ file, score, insecure });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (import_hls.default.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${redactUrl(parsed.vastAdTagUri)}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\") {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const requestVast = async (creds) => {\n attempt++;\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_http_request_sent`, { attempt, credentials: creds });\n }\n const response = await fetch(vastTagUrl, {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_response_received`, {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (credentials !== \"omit\" && !controller?.signal.aborted) {\n console.warn(\n `[HlsAdPlayer] VAST fetch failed with credentials=\"${credentials}\", retrying without credentials:`,\n error\n );\n logFunnel(\"vast_credentials_retry\", {\n errorMessage: error?.message\n });\n response = await requestVast(\"omit\");\n } else {\n throw error;\n }\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(`[HlsAdPlayer] VAST XML received (length=${vastXml.length})`);\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n function isEdgeEmptySentinelAd(adElement) {\n if ((adElement.getAttribute(\"id\") || \"\").trim().toLowerCase() === \"empty\") {\n return true;\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) return false;\n if (/^no ad available$/i.test(textOf(inLine.querySelector(\":scope > AdTitle\")) ?? \"\")) {\n return true;\n }\n const durations = Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear > Duration\")\n ).map((el) => parseVastTime(textOf(el)));\n return durations.length > 0 && durations.every((seconds) => seconds === 0);\n }\n async function fetchAndParsePod(vastTagUrl, source = \"gam\") {\n lastPodAdElementCount = 0;\n const isEdge = source === \"edge\";\n const vastXml = await fetchVastXml(vastTagUrl, isEdge ? \"omit\" : \"include\", source);\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n let candidates = adElements;\n if (isEdge) {\n candidates = adElements.filter((el) => !isEdgeEmptySentinelAd(el));\n if (candidates.length < adElements.length) {\n logFunnel(\"edge_empty_sentinel\", {\n sentinelCount: adElements.length - candidates.length,\n adElementCount: adElements.length\n });\n }\n }\n const podElements = candidates.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = candidates.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return isEdge ? ads.filter((ad) => ad.duration > 0) : ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === import_hls.default.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl, requestOptions) {\n const source = requestOptions?.source ?? \"gam\";\n console.log(`[HlsAdPlayer] Requesting ads (${source}):`, redactUrl(vastTagUrl));\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl, source);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n },\n limitPodToBudget(maxDurationMs, maxAds) {\n if (adPlaying) return podAds.length;\n const kept = [];\n const dropped = [];\n let totalMs = 0;\n for (const ad of podAds) {\n const durationMs = Math.round(ad.duration * 1e3);\n if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {\n kept.push(ad);\n totalMs += durationMs;\n } else {\n dropped.push(ad);\n }\n }\n if (dropped.length > 0) {\n logFunnel(\"pod_trimmed_to_budget\", {\n keptCount: kept.length,\n droppedCount: dropped.length,\n keptDurationMs: totalMs,\n maxDurationMs,\n maxAds\n });\n for (const ad of dropped) {\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n podAds = kept;\n podIndex = 0;\n currentAd = kept[0];\n currentAdMediaFile = void 0;\n return kept.length;\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\n };\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\n}\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultPodMaxAds = 6;\n this.defaultPodMaxDurationMs = 12e4;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n const vastMode = this.config.vastMode || \"default\";\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VAST mode:\", vastMode);\n }\n if (vastMode === \"adstorm\") {\n if (!this.config.licenseKey) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] AdStorm mode requires a license key\"\n );\n }\n return;\n }\n const vastEndpoint = `https://adstorm.co/api-adstorm-dev/adstorm/vast/${this.config.licenseKey}`;\n this.apiVastTagUrl = vastEndpoint;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using AdStorm VAST endpoint (adstorm mode):\",\n vastEndpoint\n );\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://adstorm.co/api-adstorm-dev/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolvePodParams(breakDurationMs) {\n const maxDurationMs = breakDurationMs != null && breakDurationMs > 0 ? breakDurationMs : this.config.podMaxDurationMs != null && this.config.podMaxDurationMs > 0 ? this.config.podMaxDurationMs : this.defaultPodMaxDurationMs;\n const maxAds = this.config.podMaxAds && this.config.podMaxAds > 0 ? this.config.podMaxAds : this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultPodMaxAds;\n const minDurationMs = this.config.podExactDuration && maxDurationMs != null ? maxDurationMs : 0;\n return { maxAds, minDurationMs, maxDurationMs };\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const urlWithMacros = applyVastMacros(baseUrl, {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n podMaxAds: podParams.maxAds,\n podMinDurationMs: podParams.minDurationMs,\n podMaxDurationMs: podParams.maxDurationMs,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals\n });\n const finalUrl = palNonce.injectNonce(ensureVideoAdType(urlWithMacros));\n console.log(\n `[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=${this.podCounter}, pmad=${podParams.maxAds}, pmnd=${podParams.minDurationMs}, pmxd=${podParams.maxDurationMs ?? \"?\"}):`,\n finalUrl\n );\n return finalUrl;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls2.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls2.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = tag.includes(\"EXT-X-DATERANGE\") ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls2.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n try {\n const url = new URL(raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\n}\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n const breakDurationMs = remaining > 0 ? remaining : void 0;\n return this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey, position) {\n this.breakSource = \"vmap\";\n this.resetEdgeStateForBreak();\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey, position);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey, \"midroll\");\n const epoch = this.timing.adBreakEpoch;\n const hasPrefetchedUrl = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (adBreakDurationMs == null && (!hasPrefetchedUrl || edgeConfigured)) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl, adBreakDurationMs);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl, breakDurationMs) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n const requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n /**\n * Builds the next Edge request from the budget left right now, or marks Edge\n * exhausted for this break. Synchronous on purpose: callers must reach the\n * REQUESTING state in the same tick so a second completion event cannot race\n * in a parallel request.\n */\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolvePodParams().maxAds - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n return buildEdgePodUrl(baseUrl, remainingMs, remainingAds);\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolvePodParams().maxAds - this.timing.totalAdsInBreak\n )\n );\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs\n });\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl && !this.canRequestEdge()) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (!this.canRequestEdge() && this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n pmad: params?.get(\"pmad\") ?? void 0,\n pmnd: params?.get(\"pmnd\") ?? void 0,\n pmxd: params?.get(\"pmxd\") ?? void 0,\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(vastTagUrl, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(vastTagUrl);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak,\n vastAdCount: diag?.vastAdCount,\n impressionCount: diag?.impressionCount,\n ...this.requestFloorFields(diag)\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n diag.impressionCount++;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n withCurrentPodBudget(rawVastTagUrl) {\n const vastTagUrl = ensureVideoAdType(rawVastTagUrl);\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n if (!(remaining > 0)) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n if (!url.searchParams.has(\"pmxd\")) return vastTagUrl;\n const maxMs = Math.round(remaining);\n url.searchParams.set(\"pmxd\", String(maxMs));\n const minMs = Number(url.searchParams.get(\"pmnd\"));\n if (Number.isFinite(minMs) && minMs > maxMs) {\n url.searchParams.set(\"pmnd\", String(maxMs));\n }\n return url.toString();\n } catch {\n return vastTagUrl;\n }\n }\n opportunityFloorFields(floor = this.opportunityFloor) {\n if (!floor) return {};\n return {\n floorStatus: floor.status,\n floorCents: floor.floorCents,\n floorSource: floor.source,\n floorReason: floor.reason,\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n };\n }\n requestFloorFields(diag) {\n if (!diag || diag.floorApplied === void 0) return {};\n return {\n floorApplied: diag.floorApplied,\n floorCents: diag.floorCents,\n floorSource: diag.floorSource,\n floorReason: diag.floorReason,\n floorConfigVersion: diag.floorConfigVersion\n };\n }\n applyOpportunityFloor(url) {\n const floor = this.opportunityFloor;\n if (!floor) return url;\n const result = applyFloorToVastUrl(url, floor);\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag) {\n diag.floorApplied = result.applied;\n if (result.applied && floor.floorCents != null) diag.floorCents = floor.floorCents;\n diag.floorSource = result.applied ? floor.source : \"none\";\n if (result.reason) diag.floorReason = result.reason;\n diag.floorConfigVersion = floor.configurationVersion;\n }\n if (floor.status === \"skipped\" && floor.reason === \"disabled\") {\n this.countFunnelStage(\"floor_skipped:disabled\");\n return result.url;\n }\n this.logOrchestratorFunnel(result.applied ? \"floor_applied\" : \"floor_skipped\", {\n reason: result.reason,\n floorCents: result.applied ? floor.floorCents : void 0,\n floorSource: result.applied ? floor.source : \"none\",\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n });\n if (!result.applied && result.reason) {\n this.countFunnelStage(`floor_skipped:${result.reason}`);\n }\n return result.url;\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey, position) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n try {\n this.opportunityFloor = this.host.getFloorSnapshot(position);\n } catch {\n this.opportunityFloor = void 0;\n }\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs,\n ...this.opportunityFloorFields()\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger, source = \"gam\") {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n source,\n gamRequestSent: 0,\n edgeRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n impressionCount: 0,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n const budgetedUrl = this.withCurrentPodBudget(vastTagUrl);\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n const requestUrl = this.applyOpportunityFloor(budgetedUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => ap.requestAds(requestUrl));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n ...this.opportunityFloorFields(),\n floorAppliedRequests: count(\"floor_applied\"),\n floorSkippedRequests: count(\"floor_skipped\") + count(\"floor_skipped:disabled\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsRetries: count(\"vast_credentials_retry\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.opportunityFloor = void 0;\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n const floorBounds = {};\n if (this.config.adFloorMinCents != null) floorBounds.minCents = this.config.adFloorMinCents;\n if (this.config.adFloorMaxCents != null) floorBounds.maxCents = this.config.adFloorMaxCents;\n if (this.config.adFloorStepCents != null) floorBounds.stepCents = this.config.adFloorStepCents;\n this.floorLadder = new FloorLadderController(this.config.adFloorLadder, floorBounds);\n this.floorLadderEnabled = this.config.adFloorLadderEnabled === true;\n this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base, breakDurationMs) => this.generatePodVastUrl(base, breakDurationMs),\n getEdgePodBaseUrl: () => this.edgePodBaseUrl,\n getFloorSnapshot: (position) => this.floorLadderEnabled ? this.floorLadder.snapshotFor({ position, isCtv: this.isCtvEnvironment() }) : void 0,\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n isCtvEnvironment() {\n if (this.config.ctvAdRequest) return true;\n const hint = inferDeviceTypeHint(false);\n return hint === DEVICE_TYPE_HINT.CONNECTED_TV || hint === DEVICE_TYPE_HINT.SET_TOP_BOX;\n }\n setAdFloorLadder(update) {\n const report = this.floorLadder.update(update);\n this.warnOnInvalidFloorLadder(report);\n return report;\n }\n setAdFloorLadderEnabled(enabled) {\n this.floorLadderEnabled = enabled;\n if (enabled) this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n }\n isAdFloorLadderEnabled() {\n return this.floorLadderEnabled;\n }\n warnOnInvalidFloorLadder(report) {\n const config = this.floorLadder.get();\n if (report.ok || !this.floorLadderEnabled || !config.enabled) return;\n console.warn(\"[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent\", {\n errors: report.errors,\n configurationVersion: config.configurationVersion,\n bounds: this.floorLadder.getBounds()\n });\n }\n getAdFloorLadder() {\n return this.floorLadder.get();\n }\n getAdFloorBounds() {\n return this.floorLadder.getBounds();\n }\n setAdFloorSelector(selector) {\n this.floorLadder.setSelector(selector);\n }\n generatePodVastUrl(baseUrl, breakDurationMs) {\n const podParams = this.adConfig.resolvePodParams(breakDurationMs);\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n podParams,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.scteAdBreakEndWallClockMs = Date.now();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.currentAdBreakStartWallClockMs = this.timing.resolveScteBreakStartWallClockMs(marker);\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const breakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : void 0;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl, breakDurationMs)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.currentAdBreakStartWallClockMs = Date.now();\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n const position = adBreak.startTimeMs === 0 ? \"preroll\" : adBreak.startTimeMs < 0 ? \"postroll\" : \"midroll\";\n this.adBreak.beginVmapBreak(key, position);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n 0;\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_fa = require(\"react-icons/fa\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"vastMode\",\n \"ctvAdRequest\",\n \"adFloorMinCents\",\n \"adFloorMaxCents\",\n \"adFloorStepCents\",\n \"enableEdgePodRequest\",\n \"edgePodUrl\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = import_react.default.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastMode,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n adFloorLadderEnabled,\n adFloorLadder,\n adFloorMinCents,\n adFloorMaxCents,\n adFloorStepCents,\n enableEdgePodRequest,\n edgePodUrl,\n ...restVideoAttrs\n } = props;\n const adFloorLadderKey = JSON.stringify(adFloorLadder ?? null);\n const videoRef = (0, import_react.useRef)(null);\n const playerRef = (0, import_react.useRef)(null);\n const appliedFloorLadderKeyRef = (0, import_react.useRef)(null);\n const bufferingTimeoutRef = (0, import_react.useRef)(null);\n const controlsTimerRef = (0, import_react.useRef)(null);\n const wrapperRef = (0, import_react.useRef)(null);\n const [adStatus, setAdStatus] = import_react.default.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = import_react.default.useState(true);\n const [isMuted2, setIsMuted] = import_react.default.useState(false);\n const [isFullscreen2, setIsFullscreen] = import_react.default.useState(false);\n const [isPlaying, setIsPlaying] = import_react.default.useState(false);\n const [currentTime, setCurrentTime] = import_react.default.useState(0);\n const [duration, setDuration] = import_react.default.useState(0);\n const [volume, setVolume2] = import_react.default.useState(1);\n const [playbackRate, setPlaybackRate] = import_react.default.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = import_react.default.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = import_react.default.useState(false);\n const [isLoading, setIsLoading] = import_react.default.useState(true);\n const [isBuffering, setIsBuffering] = import_react.default.useState(false);\n const [showCenterPlay, setShowCenterPlay] = import_react.default.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = import_react.default.useState(false);\n const [controlsVisible, setControlsVisible] = import_react.default.useState(true);\n const [viewportWidth, setViewportWidth] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = import_react.default.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = (0, import_react.useCallback)(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = (0, import_react.useCallback)(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = (0, import_react.useCallback)(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = (0, import_react.useMemo)(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs,\n vastMode,\n adFloorMinCents,\n adFloorMaxCents,\n adFloorStepCents,\n enableEdgePodRequest,\n edgePodUrl\n ]);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastMode !== void 0) cfg.vastMode = vastMode;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n if (minRemainingMsToStartAd !== void 0)\n cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;\n if (minRemainingMsToRequestAd !== void 0)\n cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;\n if (maxNoFillsPerBreak !== void 0)\n cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;\n if (adFloorLadderEnabled !== void 0)\n cfg.adFloorLadderEnabled = adFloorLadderEnabled;\n if (adFloorLadder !== void 0) cfg.adFloorLadder = adFloorLadder;\n if (adFloorMinCents !== void 0) cfg.adFloorMinCents = adFloorMinCents;\n if (adFloorMaxCents !== void 0) cfg.adFloorMaxCents = adFloorMaxCents;\n if (adFloorStepCents !== void 0) cfg.adFloorStepCents = adFloorStepCents;\n if (enableEdgePodRequest !== void 0)\n cfg.enableEdgePodRequest = enableEdgePodRequest;\n if (edgePodUrl !== void 0) cfg.edgePodUrl = edgePodUrl;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n appliedFloorLadderKeyRef.current = adFloorLadderKey;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || adFloorLadder === void 0) return;\n if (appliedFloorLadderKeyRef.current === adFloorLadderKey) return;\n appliedFloorLadderKeyRef.current = adFloorLadderKey;\n playerRef.current.setAdFloorLadder(adFloorLadder);\n }, [adFloorLadderKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n const enabled = adFloorLadderEnabled === true;\n if (playerRef.current.isAdFloorLadderEnabled() === enabled) return;\n playerRef.current.setAdFloorLadderEnabled(enabled);\n }, [adFloorLadderEnabled]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n (0, import_react.useEffect)(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n (0, import_react.useEffect)(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n (0, import_react.useEffect)(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? import_fa.FaVolumeMute : volume < 0.5 ? import_fa.FaVolumeDown : import_fa.FaVolumeUp;\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n import_fa.FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n if (prevProps.adFloorLadderEnabled !== nextProps.adFloorLadderEnabled) {\n return false;\n }\n if (JSON.stringify(prevProps.adFloorLadder ?? null) !== JSON.stringify(nextProps.adFloorLadder ?? null)) {\n return false;\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nvar import_react6 = __toESM(require(\"react\"), 1);\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nvar import_react2 = require(\"react\");\nvar lazy = import_react2.lazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar import_react3 = require(\"react\");\nvar HlsPlayer = class extends import_react3.Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nvar import_react4 = require(\"react\");\nvar FilePlayer = class extends import_react4.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nvar import_react5 = __toESM(require(\"react\"), 1);\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react5.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return import_react5.default.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? import_react6.Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends import_react6.Component {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return import_react6.default.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return import_react6.default.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n import_react6.default.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_TRACKING_INGEST_CONFIG,\n DEFAULT_WEB_FLOOR_LADDER_CONFIG,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n detectBrowser,\n fixedFloorSelector,\n generateFloorLevels,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseQuery,\n players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig,\n validateFloorCents,\n validateFloorLadderConfig\n});\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","DEFAULT_FLOOR_LADDER_BOUNDS","DEFAULT_TRACKING_INGEST_CONFIG","DEFAULT_WEB_FLOOR_LADDER_CONFIG","IS_BROWSER","IS_GLOBAL","IS_IOS","IS_SAFARI","SUPPORTS_DASH","SUPPORTS_HLS","StormcloudPlayer","StormcloudPlayer_default","StormcloudVideoPlayer","StormcloudVideoPlayerComponent","applyTrackingIngestConfig","buildAnalyticsContext","canPlay","configureTrackingIngest","createHlsAdPlayer","createPalNonceManager","createStormcloudPlayer","default","detectBrowser","fixedFloorSelector","generateFloorLevels","getBrowserConfigOverrides","getBrowserID","getClientInfo","ingestPlayerTracking","initializePolyfills","isMediaStream","isTrackingIngestEnabled","lazy","logBrowserInfo","merge","omit","parseQuery","players","players_default","randomString","requiresMediaPipelineResetAfterAds","resolveFloorLadderBounds","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","supportsFeature","supportsModernJS","supportsWebKitPresentationMode","trackingIngestConfig","validateFloorCents","validateFloorLadderConfig","module","exports","import_react","require","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","deviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","orphanFragments","searchParams","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","max","round","podMaxDurationMs","podMaxAds","existingUrl","pageUrl","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","minCents","maxCents","levels","cents","overrides","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","Array","isArray","errors","check","selected","select","context","floorCents","resolveOpportunityFloor","selector","base","position","skipped","status","positions","decodeQueryComponent","mergeCustParams","decoded","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","next","update","FloorLadderController","initial","getBounds","validate","setSelector","snapshotFor","import_hls","getChromeVersion","match","getWebKitVersion","getPlatform","userAgentData","platform","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","URLSearchParams","pauseContentDuringAds","browser","Map","e","assign","debug","feature","fetch","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","formatPlayhead","seconds","isFinite","total","hh","mm","ss","ms","resolveMacroValues","values","s","substituteVastTrackingMacros","parseVastTime","h","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","errorCode","playerWidth","playerHeight","clientUa","podSequence","adServingId","LINEAR_TRACKING_EVENTS","textOf","el","textContent","map","p","parseFloat","m","n","parseProgressOffset","offset","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","error","code","contentVideo","options","adPlaying","originalMutedState","originalVolume","min","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","warn","SENSITIVE_URL_PARAMS","redactUrl","logFunnel","stage","extra","breakId","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","log","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","timeoutId","release","outcome","clearTimeout","onload","onerror","inFlightBeacons","src","getMainStreamQuality","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","devicePixelRatio","containerWidth","containerHeight","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","accepted","file","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","canPlayType","playable","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","sort","a","b","mediaFile","isProgressiveMediaFile","isAudioMediaFile","getMediaProbe","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","toUpperCase","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","mediaFileElements","stats","collectVideoMediaFiles","linear","verbose","querySelectorAll","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","targetLists","sourceLists","incoming","concat","parseXml","xmlString","xmlDoc","DOMParser","parserError","parseFromString","querySelector","getAdSequence","adElement","sequence","emptyVastResult","errorUrls","root","parseVastXml","documentElement","adElements","ordered","firstEmpty","entries","parseAdElement","usedAdIndex","adCount","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","candidate","rejectedByCategory","rejectStats","files","top","count","mediaFileCount","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","kind","controller","startedAt","attempt","requestVast","response","Error","AbortController","add","abort","creds","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","errorMessage","message","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","isEdgeEmptySentinelAd","durations","every","fetchAndParsePod","isEdge","trimmedXml","empty","resolveAd","candidates","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","wrapperCount","sentinelCount","catch","shift","createAdVideoElement","video","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","start","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","handleAdComplete","recoverFromAdFailure","advanceToNextPodAd","onError","vastErrorCode","mediaErrorCode","onMediaDiagnostic","currentSrc","readyState","networkState","onVolumeChange","userActivation","isActive","paused","mute","unmute","isTrackablePlayback","ended","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","open","reportCurrentAdError","fireNotUsedForUnplayedAds","notUsed","inView","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","onClick","onInteraction","settleViewability","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","toVastPlayErrorCode","failAdPlayback","errorName","startAdPlayback","isMutedRetry","computed","getComputedStyle","isConnected","containerDisplay","display","containerVisibility","visibility","playPromise","play","finally","prepareVideoElementForNewSource","destroy","load","recreateAdVideoElement","appendChild","clearMediaStartTimer","startMediaStartTimer","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","handleAdError","loadCurrentAdMedia","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","fragUrl","frag","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","rvfc","onPresentedFrame","startVideoFrameProbe","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","pointerEvents","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","preloaded","attachContainerHandlers","requestAds","requestOptions","reject","impressionUrls","adIndex","missingAdId","contentVolume","loadError","stop","previousMutedState","clear","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalVolume","setAdVolume","clamped","hidePlaceholder","requestedVolume","getAdVolume","showPlaceholder","getLoadedAdDuration","getLoadedAdId","getPodTotalDurationMs","reduce","limitPodToBudget","maxDurationMs","maxAds","dropped","totalMs","durationMs","keptCount","droppedCount","PRIVATE_HOST_PATTERNS","isLocalDevHost","some","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonce","currentNonceManager","generateNonce","loader","request","manager","NonceRequest","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","JSON","stringify","loadNonceManager","getCurrentNonce","getNonce","injectNonce","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","licenseKey","body","method","Authorization","cachedBrowserId","debugAdTiming","isLiveStream","inputStreamType","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","toISOString","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","metricEvent","events","adDetectInfo","adLoadedInfo","adImpressionInfo","player_id","ad_played_count","ad_url","adUrl","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","parseQueryString","append","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","str","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","pos","polyfillStringEndsWith","polyfillStringIncludes","polyfillStringStartsWith","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","getDateRangeDurationSeconds","toNumber","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","out","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","bytePos","bitPos","readBits","numBits","remainingInByte","toRead","currentByte","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","cancelIndicator","segmentationUpidLength","segmentationEventId","parseScte35SegmentationDescriptor","descriptor","identifier","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjLow","spliceEventId","ptsAdjHigh","spliceCommandLength","spliceCommandType","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_event_id","segmentation_event_id","Scte35CueManager","pendingScte35Cues","processedTsScte35Sections","callbacks","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","inAdBreak","cue","pendingKey","onPlaybackCue","matchingCues","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","onScte35Cue","createScte35Cue","getPendingScte35CueKey","trimRecentScte35CueMaps","shouldAcceptScte35EndCue","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","activatePendingScte35CuesForFragment","fragmentStartSeconds","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","recentScte35CueKeys","recentScte35CueLimit","AdConfigManager","podAssignedByPrefetch","lastHeartbeatTime","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","defaultPodMaxAds","defaultPodMaxDurationMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","findBreakForTime","selectVastTagsForBreak","breakStartMs","beginNewAdPod","resolvePodParams","breakDurationMs","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","getOriginalMutedState","envSignals","ctvAdRequest","urlWithMacros","autoplay","finalUrl","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","AdTimingService","destroyTracking","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","remainingMs","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","currentAdBreakStartWallClockMs","scteAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","exponent","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","failsafeMs","adFailsafeTimerId","startAdFailsafeTimer","clearAdFailsafeTimer","videoPaused","onFailsafeTimeout","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","import_hls2","HlsEngine","cueManager","timing","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","allowNativeHls","setupNativeHls","adBehavior","nativeHlsMode","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","idx","isDateRange","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","onFatalDestroy","recoverMediaError","isLowLatencyStream","detectedLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","removeAttribute","recreateDelayMs","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","LICENSE_KEY_PLACEHOLDER","resolveEdgePodBaseUrl","enableEdgePodRequest","edgePodUrl","encodedKey","hasPlaceholder","buildEdgePodUrl","remainingAdLimit","maxMs","classifyEdgeVastResponse","podAdCount","describeEdgeUrl","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultLiveMaxNoFillsPerBreak","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","breakDurationWaitMs","analyticsContext","nextAdRequestUrl","baseVastUrl","remaining","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","currentPodSource","setSlotState","requestNextAd","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","pendingAdBreak","isBreakActive","getSlotState","beginVmapBreak","breakKey","breakSource","resetEdgeStateForBreak","followUpBaseVastUrl","unusableResponsesInBreak","noteOpportunity","handleAdStart","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","hasPrefetchedUrl","edgeUrl","podPlayed","getEdgePodBaseUrl","vastUrls","waitForBreakDuration","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLiveBreak","startOptimizedPod","maxWaitMs","deadline","waitedForMs","resolved","prefetched","requestToken","requestUrl","podCount","podUrl","beginFunnelRequest","applyOpportunityFloor","currentVastUrl","isStale","callController","getPodAdCount","recordRequestFailure","getMinRemainingMsToRequestAd","remainingAds","trigger","classification","diag","endpoint","pmxd","pmad","podDurationMs","failureReason","previous","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","nextAdTimerId","stopReason","decision","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","epoch2","noteVastUrlGenerated","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","pmnd","vastAdCount","impressionFired","impressionCount","requestFloorFields","recordRequestDiagnostic","gamRequestSent","edgeRequestSent","wrapperDepth","withCurrentPodBudget","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","fields","rawVastTagUrl","minMs","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","floorConfigVersion","adPosition","floorApplied","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","inlineResolved","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","handleAdFailure","ap","budgetedUrl","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeRequests","edgeFills","edgeEmptySentinels","edgeFallbacks","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsRetries","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","trackingRequests","trackingNotLoaded","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","resumeContentPlayback","liveSyncPos","toFixed","restartHlsLoad","monitorLiveResumeStall","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","v","net","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","cleanup","poll","advanced","playing","bufferedAhead","wedged","canRecover","reloadPos","maxAttempts"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n DEFAULT_FLOOR_LADDER_BOUNDS: () => DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_TRACKING_INGEST_CONFIG: () => DEFAULT_TRACKING_INGEST_CONFIG,\n DEFAULT_WEB_FLOOR_LADDER_CONFIG: () => DEFAULT_WEB_FLOOR_LADDER_CONFIG,\n IS_BROWSER: () => IS_BROWSER,\n IS_GLOBAL: () => IS_GLOBAL,\n IS_IOS: () => IS_IOS,\n IS_SAFARI: () => IS_SAFARI,\n SUPPORTS_DASH: () => SUPPORTS_DASH,\n SUPPORTS_HLS: () => SUPPORTS_HLS,\n StormcloudPlayer: () => StormcloudPlayer_default,\n StormcloudVideoPlayer: () => StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent: () => StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig: () => applyTrackingIngestConfig,\n buildAnalyticsContext: () => buildAnalyticsContext,\n canPlay: () => canPlay,\n configureTrackingIngest: () => configureTrackingIngest,\n createHlsAdPlayer: () => createHlsAdPlayer,\n createPalNonceManager: () => createPalNonceManager,\n createStormcloudPlayer: () => createStormcloudPlayer,\n default: () => StormcloudVideoPlayerComponent,\n detectBrowser: () => detectBrowser,\n fixedFloorSelector: () => fixedFloorSelector,\n generateFloorLevels: () => generateFloorLevels,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n ingestPlayerTracking: () => ingestPlayerTracking,\n initializePolyfills: () => initializePolyfills,\n isMediaStream: () => isMediaStream,\n isTrackingIngestEnabled: () => isTrackingIngestEnabled,\n lazy: () => lazy,\n logBrowserInfo: () => logBrowserInfo,\n merge: () => merge,\n omit: () => omit,\n parseQuery: () => parseQuery,\n players: () => players_default,\n randomString: () => randomString,\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds: () => resolveFloorLadderBounds,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode,\n trackingIngestConfig: () => trackingIngestConfig,\n validateFloorCents: () => validateFloorCents,\n validateFloorLadderConfig: () => validateFloorLadderConfig\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_react = __toESM(require(\"react\"), 1);\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n let deviceId = realDeviceId;\n let deviceIdType = bridgeSignals.deviceIdType || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() ?? false : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking() ?? false;\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n if (ctx.podMinDurationMs != null) {\n params.set(\"pmnd\", String(Math.max(0, Math.round(ctx.podMinDurationMs))));\n }\n if (ctx.podMaxDurationMs != null) {\n params.set(\"pmxd\", String(Math.max(0, Math.round(ctx.podMaxDurationMs))));\n }\n if (ctx.podMaxAds != null) {\n params.set(\"pmad\", String(Math.max(1, Math.round(ctx.podMaxAds))));\n }\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/FloorLadder.ts\nvar DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"airytv_web_floor\",\n minFloorCents: 25,\n maxFloorCents: 300,\n stepCents: 25,\n selectedFloorCents: 25,\n fallbackFloorCents: 25,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [\"midroll\"],\n targetAdUnitPath: \"/21821455290/airytvadx/airytv-web\",\n configurationVersion: \"2026-09-29.1\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction isInteger(value) {\n return typeof value === \"number\" && Number.isInteger(value);\n}\nfunction generateFloorLevels(minCents, maxCents, stepCents) {\n if (!isInteger(minCents) || !isInteger(maxCents) || !isInteger(stepCents)) return [];\n if (stepCents <= 0 || minCents <= 0 || maxCents < minCents) return [];\n const levels = [];\n for (let cents = minCents; cents <= maxCents; cents += stepCents) {\n levels.push(cents);\n }\n return levels;\n}\nfunction resolveFloorLadderBounds(overrides = {}) {\n return {\n minCents: overrides.minCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.minCents,\n maxCents: overrides.maxCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,\n stepCents: overrides.stepCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.stepCents\n };\n}\nfunction validateFloorCents(value, config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n if (!isInteger(value)) return { ok: false, reason: \"not_integer\" };\n if (!(value >= bounds.minCents && value <= bounds.maxCents) || !(value >= config.minFloorCents && value <= config.maxFloorCents)) {\n return { ok: false, reason: \"out_of_range\" };\n }\n const gamLevels = generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents);\n const configLevels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents);\n if (gamLevels.indexOf(value) === -1 || configLevels.indexOf(value) === -1) {\n return { ok: false, reason: \"not_step_multiple\" };\n }\n const ready = Array.isArray(config.readyFloorCents) ? config.readyFloorCents : [];\n if (ready.indexOf(value) === -1) return { ok: false, reason: \"not_ready\" };\n return { ok: true };\n}\nfunction validateFloorLadderConfig(config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n const errors = [];\n if (generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents).length === 0) {\n errors.push(\"invalid_gam_bounds\");\n }\n const levels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents).filter((cents) => validateFloorCents(cents, { ...config, readyFloorCents: [cents] }, bounds).ok);\n if (levels.length === 0) errors.push(\"invalid_level_bounds\");\n if (config.minFloorCents < bounds.minCents || config.maxFloorCents > bounds.maxCents) {\n errors.push(\"level_bounds_outside_gam_ladder\");\n }\n if (!config.targetingKey) errors.push(\"missing_targeting_key\");\n if (config.mode !== \"fixed\") errors.push(`unsupported_mode:${String(config.mode)}`);\n if (!Array.isArray(config.readyFloorCents)) {\n errors.push(\"ready_floor_cents_not_array\");\n } else {\n for (const cents of config.readyFloorCents) {\n const check = validateFloorCents(cents, config, bounds);\n if (!check.ok) errors.push(`ready_floor_invalid:${String(cents)}:${check.reason}`);\n }\n }\n const selected = validateFloorCents(config.selectedFloorCents, config, bounds);\n if (!selected.ok) errors.push(`selected_floor_invalid:${selected.reason}`);\n const fallback = validateFloorCents(config.fallbackFloorCents, config, bounds);\n if (!fallback.ok) errors.push(`fallback_floor_invalid:${fallback.reason}`);\n return { ok: errors.length === 0, levels, errors };\n}\nvar fixedFloorSelector = {\n name: \"fixed\",\n select(config, context) {\n if (config.mode !== \"fixed\") return { source: \"none\", reason: \"unsupported_mode\" };\n const selected = validateFloorCents(config.selectedFloorCents, config, context.bounds);\n if (selected.ok) return { floorCents: config.selectedFloorCents, source: \"selected\" };\n const fallback = validateFloorCents(config.fallbackFloorCents, config, context.bounds);\n if (fallback.ok) {\n return {\n floorCents: config.fallbackFloorCents,\n source: \"fallback\",\n reason: `selected_${selected.reason}`\n };\n }\n return {\n source: \"none\",\n reason: `no_valid_floor:selected_${selected.reason}:fallback_${fallback.reason}`\n };\n }\n};\nfunction resolveOpportunityFloor(config, context, selector = fixedFloorSelector) {\n const base = {\n selector: selector.name,\n position: context.position,\n configurationVersion: String(config.configurationVersion ?? \"\"),\n targetingKey: config.targetingKey,\n targetAdUnitPath: config.targetAdUnitPath\n };\n const skipped = (reason, source = \"none\") => Object.freeze({ ...base, status: \"skipped\", floorCents: void 0, source, reason });\n if (!config.enabled) return skipped(\"disabled\");\n const positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];\n if (positions.indexOf(context.position) === -1) return skipped(\"position_not_allowed\");\n if (context.isCtv) return skipped(\"ctv_excluded\");\n if (!config.targetingKey) return skipped(\"missing_targeting_key\");\n if (!config.targetAdUnitPath) return skipped(\"missing_target_ad_unit\");\n let result;\n try {\n result = selector.select(config, context);\n } catch {\n return skipped(\"selector_error\");\n }\n if (result.floorCents == null) return skipped(result.reason ?? \"no_valid_floor\", result.source);\n const check = validateFloorCents(result.floorCents, config, context.bounds);\n if (!check.ok) return skipped(`selector_floor_${check.reason}`);\n return Object.freeze({\n ...base,\n status: \"armed\",\n floorCents: result.floorCents,\n source: result.source,\n reason: result.reason\n });\n}\nfunction decodeQueryComponent(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return void 0;\n }\n}\nfunction mergeCustParams(decoded, key, cents) {\n const prefix = `${key}=`;\n const kept = decoded.split(\"&\").filter((pair) => pair !== \"\" && pair !== key && pair.indexOf(prefix) !== 0);\n kept.push(`${prefix}${cents}`);\n return kept.join(\"&\");\n}\nfunction applyFloorToVastUrl(url, floor) {\n if (floor.status !== \"armed\" || floor.floorCents == null) {\n return { url, applied: false, reason: floor.reason };\n }\n let parsed;\n try {\n parsed = new URL(url);\n } catch {\n return { url, applied: false, reason: \"invalid_url\" };\n }\n if (!GAM_AD_HOSTS.has(parsed.hostname)) {\n return { url, applied: false, reason: \"not_gam_host\" };\n }\n if (parsed.searchParams.get(\"iu\") !== floor.targetAdUnitPath) {\n return { url, applied: false, reason: \"ad_unit_mismatch\" };\n }\n const hashIndex = url.indexOf(\"#\");\n const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const hash = hashIndex === -1 ? \"\" : url.slice(hashIndex);\n const queryIndex = beforeHash.indexOf(\"?\");\n const base = beforeHash.slice(0, queryIndex);\n const segments = beforeHash.slice(queryIndex + 1).split(\"&\");\n const existing = [];\n let insertAt = -1;\n const rest = [];\n for (const segment of segments) {\n const eq = segment.indexOf(\"=\");\n const rawKey = eq === -1 ? segment : segment.slice(0, eq);\n if (decodeQueryComponent(rawKey) === \"cust_params\") {\n if (insertAt === -1) insertAt = rest.length;\n const value = eq === -1 ? \"\" : decodeQueryComponent(segment.slice(eq + 1));\n if (value === void 0) {\n return { url, applied: false, reason: \"malformed_cust_params\" };\n }\n if (value) existing.push(value);\n continue;\n }\n rest.push(segment);\n }\n if (insertAt === -1) insertAt = rest.length;\n const merged = mergeCustParams(existing.join(\"&\"), floor.targetingKey, floor.floorCents);\n rest.splice(insertAt, 0, `cust_params=${encodeURIComponent(merged)}`);\n const query = rest.filter((segment) => segment !== \"\").join(\"&\");\n return { url: `${base}?${query}${hash}`, applied: true, reason: void 0 };\n}\nfunction copyConfig(config) {\n return {\n ...config,\n readyFloorCents: Array.isArray(config.readyFloorCents) ? config.readyFloorCents.slice() : [],\n allowedPositions: Array.isArray(config.allowedPositions) ? config.allowedPositions.slice() : []\n };\n}\nfunction mergeDefined(target, update) {\n const next = copyConfig(target);\n if (!update) return next;\n for (const key of Object.keys(update)) {\n const value = update[key];\n if (value !== void 0) next[key] = value;\n }\n return copyConfig(next);\n}\nvar FloorLadderController = class {\n constructor(initial, bounds, selector = fixedFloorSelector) {\n this.config = mergeDefined(copyConfig(DEFAULT_WEB_FLOOR_LADDER_CONFIG), initial);\n this.bounds = Object.freeze(resolveFloorLadderBounds(bounds));\n this.selector = selector;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...this.bounds };\n }\n update(update) {\n this.config = mergeDefined(this.config, update);\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n validate() {\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n setSelector(selector) {\n this.selector = selector;\n }\n snapshotFor(context) {\n return resolveOpportunityFloor(\n copyConfig(this.config),\n { ...context, bounds: this.bounds },\n this.selector\n );\n }\n};\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingHost}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingHost}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? import_hls.default.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n accepted.push({ file, score, insecure });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (import_hls.default.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${redactUrl(parsed.vastAdTagUri)}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\") {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const requestVast = async (creds) => {\n attempt++;\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_http_request_sent`, { attempt, credentials: creds });\n }\n const response = await fetch(vastTagUrl, {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_response_received`, {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (credentials !== \"omit\" && !controller?.signal.aborted) {\n console.warn(\n `[HlsAdPlayer] VAST fetch failed with credentials=\"${credentials}\", retrying without credentials:`,\n error\n );\n logFunnel(\"vast_credentials_retry\", {\n errorMessage: error?.message\n });\n response = await requestVast(\"omit\");\n } else {\n throw error;\n }\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(`[HlsAdPlayer] VAST XML received (length=${vastXml.length})`);\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n function isEdgeEmptySentinelAd(adElement) {\n if ((adElement.getAttribute(\"id\") || \"\").trim().toLowerCase() === \"empty\") {\n return true;\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) return false;\n if (/^no ad available$/i.test(textOf(inLine.querySelector(\":scope > AdTitle\")) ?? \"\")) {\n return true;\n }\n const durations = Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear > Duration\")\n ).map((el) => parseVastTime(textOf(el)));\n return durations.length > 0 && durations.every((seconds) => seconds === 0);\n }\n async function fetchAndParsePod(vastTagUrl, source = \"gam\") {\n lastPodAdElementCount = 0;\n const isEdge = source === \"edge\";\n const vastXml = await fetchVastXml(vastTagUrl, isEdge ? \"omit\" : \"include\", source);\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n let candidates = adElements;\n if (isEdge) {\n candidates = adElements.filter((el) => !isEdgeEmptySentinelAd(el));\n if (candidates.length < adElements.length) {\n logFunnel(\"edge_empty_sentinel\", {\n sentinelCount: adElements.length - candidates.length,\n adElementCount: adElements.length\n });\n }\n }\n const podElements = candidates.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = candidates.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return isEdge ? ads.filter((ad) => ad.duration > 0) : ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === import_hls.default.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl, requestOptions) {\n const source = requestOptions?.source ?? \"gam\";\n console.log(`[HlsAdPlayer] Requesting ads (${source}):`, redactUrl(vastTagUrl));\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl, source);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n },\n limitPodToBudget(maxDurationMs, maxAds) {\n if (adPlaying) return podAds.length;\n const kept = [];\n const dropped = [];\n let totalMs = 0;\n for (const ad of podAds) {\n const durationMs = Math.round(ad.duration * 1e3);\n if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {\n kept.push(ad);\n totalMs += durationMs;\n } else {\n dropped.push(ad);\n }\n }\n if (dropped.length > 0) {\n logFunnel(\"pod_trimmed_to_budget\", {\n keptCount: kept.length,\n droppedCount: dropped.length,\n keptDurationMs: totalMs,\n maxDurationMs,\n maxAds\n });\n for (const ad of dropped) {\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n podAds = kept;\n podIndex = 0;\n currentAd = kept[0];\n currentAdMediaFile = void 0;\n return kept.length;\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\n };\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\n}\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction getDateRangeDurationSeconds(attrs) {\n return toNumber(attrs[\"DURATION\"]) ?? toNumber(attrs[\"PLANNED-DURATION\"]);\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultPodMaxAds = 6;\n this.defaultPodMaxDurationMs = 12e4;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n const vastMode = this.config.vastMode || \"default\";\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VAST mode:\", vastMode);\n }\n if (vastMode === \"adstorm\") {\n if (!this.config.licenseKey) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] AdStorm mode requires a license key\"\n );\n }\n return;\n }\n const vastEndpoint = `https://adstorm.co/api-adstorm-dev/adstorm/vast/${this.config.licenseKey}`;\n this.apiVastTagUrl = vastEndpoint;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using AdStorm VAST endpoint (adstorm mode):\",\n vastEndpoint\n );\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://adstorm.co/api-adstorm-dev/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolvePodParams(breakDurationMs) {\n const maxDurationMs = breakDurationMs != null && breakDurationMs > 0 ? breakDurationMs : this.config.podMaxDurationMs != null && this.config.podMaxDurationMs > 0 ? this.config.podMaxDurationMs : this.defaultPodMaxDurationMs;\n const maxAds = this.config.podMaxAds && this.config.podMaxAds > 0 ? this.config.podMaxAds : this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultPodMaxAds;\n const minDurationMs = this.config.podExactDuration && maxDurationMs != null ? maxDurationMs : 0;\n return { maxAds, minDurationMs, maxDurationMs };\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const urlWithMacros = applyVastMacros(baseUrl, {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n podMaxAds: podParams.maxAds,\n podMinDurationMs: podParams.minDurationMs,\n podMaxDurationMs: podParams.maxDurationMs,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals\n });\n const finalUrl = palNonce.injectNonce(ensureVideoAdType(urlWithMacros));\n console.log(\n `[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=${this.podCounter}, pmad=${podParams.maxAds}, pmnd=${podParams.minDurationMs}, pmxd=${podParams.maxDurationMs ?? \"?\"}):`,\n finalUrl\n );\n return finalUrl;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls2.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls2.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const isDateRange = tag.includes(\"EXT-X-DATERANGE\");\n const attrs = isDateRange ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls2.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = getDateRangeDurationSeconds(attrs);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nvar LICENSE_KEY_PLACEHOLDER = /\\{licenseKey\\}|%7BlicenseKey%7D/gi;\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n const licenseKey = config.licenseKey?.trim();\n if (!licenseKey) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only\"\n );\n return void 0;\n }\n const encodedKey = encodeURIComponent(licenseKey);\n try {\n const hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;\n const url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n if (!hasPlaceholder) {\n const path = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = /\\/[^/]+\\/pod$/.test(path) ? path.replace(/\\/[^/]+\\/pod$/, `/${encodedKey}/pod`) : `${path}/${encodedKey}/pod`;\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\n}\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n const breakDurationMs = remaining > 0 ? remaining : void 0;\n return this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey, position) {\n this.breakSource = \"vmap\";\n this.resetEdgeStateForBreak();\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey, position);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey, \"midroll\");\n const epoch = this.timing.adBreakEpoch;\n const hasPrefetchedUrl = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (adBreakDurationMs == null && (!hasPrefetchedUrl || edgeConfigured)) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl, adBreakDurationMs);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl, breakDurationMs) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n const requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n /**\n * Builds the next Edge request from the budget left right now, or marks Edge\n * exhausted for this break. Synchronous on purpose: callers must reach the\n * REQUESTING state in the same tick so a second completion event cannot race\n * in a parallel request.\n */\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolvePodParams().maxAds - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n return buildEdgePodUrl(baseUrl, remainingMs, remainingAds);\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolvePodParams().maxAds - this.timing.totalAdsInBreak\n )\n );\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs\n });\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl && !this.canRequestEdge()) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (!this.canRequestEdge() && this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n pmad: params?.get(\"pmad\") ?? void 0,\n pmnd: params?.get(\"pmnd\") ?? void 0,\n pmxd: params?.get(\"pmxd\") ?? void 0,\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(vastTagUrl, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(vastTagUrl);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak,\n vastAdCount: diag?.vastAdCount,\n impressionCount: diag?.impressionCount,\n ...this.requestFloorFields(diag)\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n diag.impressionCount++;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n withCurrentPodBudget(rawVastTagUrl) {\n const vastTagUrl = ensureVideoAdType(rawVastTagUrl);\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n if (!(remaining > 0)) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n if (!url.searchParams.has(\"pmxd\")) return vastTagUrl;\n const maxMs = Math.round(remaining);\n url.searchParams.set(\"pmxd\", String(maxMs));\n const minMs = Number(url.searchParams.get(\"pmnd\"));\n if (Number.isFinite(minMs) && minMs > maxMs) {\n url.searchParams.set(\"pmnd\", String(maxMs));\n }\n return url.toString();\n } catch {\n return vastTagUrl;\n }\n }\n opportunityFloorFields(floor = this.opportunityFloor) {\n if (!floor) return {};\n return {\n floorStatus: floor.status,\n floorCents: floor.floorCents,\n floorSource: floor.source,\n floorReason: floor.reason,\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n };\n }\n requestFloorFields(diag) {\n if (!diag || diag.floorApplied === void 0) return {};\n return {\n floorApplied: diag.floorApplied,\n floorCents: diag.floorCents,\n floorSource: diag.floorSource,\n floorReason: diag.floorReason,\n floorConfigVersion: diag.floorConfigVersion\n };\n }\n applyOpportunityFloor(url) {\n const floor = this.opportunityFloor;\n if (!floor) return url;\n const result = applyFloorToVastUrl(url, floor);\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag) {\n diag.floorApplied = result.applied;\n if (result.applied && floor.floorCents != null) diag.floorCents = floor.floorCents;\n diag.floorSource = result.applied ? floor.source : \"none\";\n if (result.reason) diag.floorReason = result.reason;\n diag.floorConfigVersion = floor.configurationVersion;\n }\n if (floor.status === \"skipped\" && floor.reason === \"disabled\") {\n this.countFunnelStage(\"floor_skipped:disabled\");\n return result.url;\n }\n this.logOrchestratorFunnel(result.applied ? \"floor_applied\" : \"floor_skipped\", {\n reason: result.reason,\n floorCents: result.applied ? floor.floorCents : void 0,\n floorSource: result.applied ? floor.source : \"none\",\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n });\n if (!result.applied && result.reason) {\n this.countFunnelStage(`floor_skipped:${result.reason}`);\n }\n return result.url;\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey, position) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n try {\n this.opportunityFloor = this.host.getFloorSnapshot(position);\n } catch {\n this.opportunityFloor = void 0;\n }\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs,\n ...this.opportunityFloorFields()\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger, source = \"gam\") {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n source,\n gamRequestSent: 0,\n edgeRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n impressionCount: 0,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n const budgetedUrl = this.withCurrentPodBudget(vastTagUrl);\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n const requestUrl = this.applyOpportunityFloor(budgetedUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => ap.requestAds(requestUrl));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n ...this.opportunityFloorFields(),\n floorAppliedRequests: count(\"floor_applied\"),\n floorSkippedRequests: count(\"floor_skipped\") + count(\"floor_skipped:disabled\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsRetries: count(\"vast_credentials_retry\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.opportunityFloor = void 0;\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n const floorBounds = {};\n if (this.config.adFloorMinCents != null) floorBounds.minCents = this.config.adFloorMinCents;\n if (this.config.adFloorMaxCents != null) floorBounds.maxCents = this.config.adFloorMaxCents;\n if (this.config.adFloorStepCents != null) floorBounds.stepCents = this.config.adFloorStepCents;\n this.floorLadder = new FloorLadderController(this.config.adFloorLadder, floorBounds);\n this.floorLadderEnabled = this.config.adFloorLadderEnabled === true;\n this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base, breakDurationMs) => this.generatePodVastUrl(base, breakDurationMs),\n getEdgePodBaseUrl: () => this.edgePodBaseUrl,\n getFloorSnapshot: (position) => this.floorLadderEnabled ? this.floorLadder.snapshotFor({ position, isCtv: this.isCtvEnvironment() }) : void 0,\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n isCtvEnvironment() {\n if (this.config.ctvAdRequest) return true;\n const hint = inferDeviceTypeHint(false);\n return hint === DEVICE_TYPE_HINT.CONNECTED_TV || hint === DEVICE_TYPE_HINT.SET_TOP_BOX;\n }\n setAdFloorLadder(update) {\n const report = this.floorLadder.update(update);\n this.warnOnInvalidFloorLadder(report);\n return report;\n }\n setAdFloorLadderEnabled(enabled) {\n this.floorLadderEnabled = enabled;\n if (enabled) this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n }\n isAdFloorLadderEnabled() {\n return this.floorLadderEnabled;\n }\n setEdgePodRequest(update) {\n if (update.enableEdgePodRequest === this.config.enableEdgePodRequest && update.edgePodUrl === this.config.edgePodUrl) {\n return;\n }\n if (update.enableEdgePodRequest === void 0) delete this.config.enableEdgePodRequest;\n else this.config.enableEdgePodRequest = update.enableEdgePodRequest;\n if (update.edgePodUrl === void 0) delete this.config.edgePodUrl;\n else this.config.edgePodUrl = update.edgePodUrl;\n this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);\n }\n getEdgePodUrl() {\n return this.edgePodBaseUrl;\n }\n warnOnInvalidFloorLadder(report) {\n const config = this.floorLadder.get();\n if (report.ok || !this.floorLadderEnabled || !config.enabled) return;\n console.warn(\"[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent\", {\n errors: report.errors,\n configurationVersion: config.configurationVersion,\n bounds: this.floorLadder.getBounds()\n });\n }\n getAdFloorLadder() {\n return this.floorLadder.get();\n }\n getAdFloorBounds() {\n return this.floorLadder.getBounds();\n }\n setAdFloorSelector(selector) {\n this.floorLadder.setSelector(selector);\n }\n generatePodVastUrl(baseUrl, breakDurationMs) {\n const podParams = this.adConfig.resolvePodParams(breakDurationMs);\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n podParams,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.scteAdBreakEndWallClockMs = Date.now();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.currentAdBreakStartWallClockMs = this.timing.resolveScteBreakStartWallClockMs(marker);\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const breakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : void 0;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl, breakDurationMs)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.currentAdBreakStartWallClockMs = Date.now();\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n const position = adBreak.startTimeMs === 0 ? \"preroll\" : adBreak.startTimeMs < 0 ? \"postroll\" : \"midroll\";\n this.adBreak.beginVmapBreak(key, position);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n 0;\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_fa = require(\"react-icons/fa\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"vastMode\",\n \"ctvAdRequest\",\n \"adFloorMinCents\",\n \"adFloorMaxCents\",\n \"adFloorStepCents\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = import_react.default.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastMode,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n adFloorLadderEnabled,\n adFloorLadder,\n adFloorMinCents,\n adFloorMaxCents,\n adFloorStepCents,\n enableEdgePodRequest,\n edgePodUrl,\n ...restVideoAttrs\n } = props;\n const adFloorLadderKey = JSON.stringify(adFloorLadder ?? null);\n const videoRef = (0, import_react.useRef)(null);\n const playerRef = (0, import_react.useRef)(null);\n const appliedFloorLadderKeyRef = (0, import_react.useRef)(null);\n const bufferingTimeoutRef = (0, import_react.useRef)(null);\n const controlsTimerRef = (0, import_react.useRef)(null);\n const wrapperRef = (0, import_react.useRef)(null);\n const [adStatus, setAdStatus] = import_react.default.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = import_react.default.useState(true);\n const [isMuted2, setIsMuted] = import_react.default.useState(false);\n const [isFullscreen2, setIsFullscreen] = import_react.default.useState(false);\n const [isPlaying, setIsPlaying] = import_react.default.useState(false);\n const [currentTime, setCurrentTime] = import_react.default.useState(0);\n const [duration, setDuration] = import_react.default.useState(0);\n const [volume, setVolume2] = import_react.default.useState(1);\n const [playbackRate, setPlaybackRate] = import_react.default.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = import_react.default.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = import_react.default.useState(false);\n const [isLoading, setIsLoading] = import_react.default.useState(true);\n const [isBuffering, setIsBuffering] = import_react.default.useState(false);\n const [showCenterPlay, setShowCenterPlay] = import_react.default.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = import_react.default.useState(false);\n const [controlsVisible, setControlsVisible] = import_react.default.useState(true);\n const [viewportWidth, setViewportWidth] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = import_react.default.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = (0, import_react.useCallback)(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = (0, import_react.useCallback)(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = (0, import_react.useCallback)(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = (0, import_react.useMemo)(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs,\n vastMode,\n adFloorMinCents,\n adFloorMaxCents,\n adFloorStepCents\n ]);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastMode !== void 0) cfg.vastMode = vastMode;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n if (minRemainingMsToStartAd !== void 0)\n cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;\n if (minRemainingMsToRequestAd !== void 0)\n cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;\n if (maxNoFillsPerBreak !== void 0)\n cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;\n if (adFloorLadderEnabled !== void 0)\n cfg.adFloorLadderEnabled = adFloorLadderEnabled;\n if (adFloorLadder !== void 0) cfg.adFloorLadder = adFloorLadder;\n if (adFloorMinCents !== void 0) cfg.adFloorMinCents = adFloorMinCents;\n if (adFloorMaxCents !== void 0) cfg.adFloorMaxCents = adFloorMaxCents;\n if (adFloorStepCents !== void 0) cfg.adFloorStepCents = adFloorStepCents;\n if (enableEdgePodRequest !== void 0)\n cfg.enableEdgePodRequest = enableEdgePodRequest;\n if (edgePodUrl !== void 0) cfg.edgePodUrl = edgePodUrl;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n appliedFloorLadderKeyRef.current = adFloorLadderKey;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || adFloorLadder === void 0) return;\n if (appliedFloorLadderKeyRef.current === adFloorLadderKey) return;\n appliedFloorLadderKeyRef.current = adFloorLadderKey;\n playerRef.current.setAdFloorLadder(adFloorLadder);\n }, [adFloorLadderKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n const enabled = adFloorLadderEnabled === true;\n if (playerRef.current.isAdFloorLadderEnabled() === enabled) return;\n playerRef.current.setAdFloorLadderEnabled(enabled);\n }, [adFloorLadderEnabled]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n playerRef.current.setEdgePodRequest({\n ...enableEdgePodRequest !== void 0 ? { enableEdgePodRequest } : {},\n ...edgePodUrl !== void 0 ? { edgePodUrl } : {}\n });\n }, [enableEdgePodRequest, edgePodUrl]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n (0, import_react.useEffect)(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n (0, import_react.useEffect)(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n (0, import_react.useEffect)(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? import_fa.FaVolumeMute : volume < 0.5 ? import_fa.FaVolumeDown : import_fa.FaVolumeUp;\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n import_fa.FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n if (prevProps.adFloorLadderEnabled !== nextProps.adFloorLadderEnabled || prevProps.enableEdgePodRequest !== nextProps.enableEdgePodRequest || prevProps.edgePodUrl !== nextProps.edgePodUrl) {\n return false;\n }\n if (JSON.stringify(prevProps.adFloorLadder ?? null) !== JSON.stringify(nextProps.adFloorLadder ?? null)) {\n return false;\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nvar import_react6 = __toESM(require(\"react\"), 1);\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nvar import_react2 = require(\"react\");\nvar lazy = import_react2.lazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar import_react3 = require(\"react\");\nvar HlsPlayer = class extends import_react3.Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nvar import_react4 = require(\"react\");\nvar FilePlayer = class extends import_react4.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nvar import_react5 = __toESM(require(\"react\"), 1);\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react5.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return import_react5.default.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? import_react6.Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends import_react6.Component {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return import_react6.default.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return import_react6.default.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n import_react6.default.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_TRACKING_INGEST_CONFIG,\n DEFAULT_WEB_FLOOR_LADDER_CONFIG,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n detectBrowser,\n fixedFloorSelector,\n generateFloorLevels,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseQuery,\n players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig,\n validateFloorCents,\n validateFloorLadderConfig\n});\n"]}