stormcloud-video-player 0.8.68 β†’ 0.8.69

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.
Files changed (37) hide show
  1. package/dist/stormcloud-vp.min.js +1 -1
  2. package/lib/Player.cjs +30 -8
  3. package/lib/Player.cjs.map +1 -1
  4. package/lib/Player.d.cts +2 -1
  5. package/lib/StormcloudPlayer.cjs +5615 -5101
  6. package/lib/StormcloudPlayer.cjs.map +1 -1
  7. package/lib/StormcloudPlayer.d.cts +1 -0
  8. package/lib/index.cjs +5688 -5117
  9. package/lib/index.cjs.map +1 -1
  10. package/lib/index.d.cts +2 -1
  11. package/lib/index.d.ts +81 -1
  12. package/lib/index.js +5663 -5119
  13. package/lib/index.js.map +1 -1
  14. package/lib/player/AdBreakOrchestrator.cjs +314 -113
  15. package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
  16. package/lib/player/AdBreakOrchestrator.d.cts +9 -3
  17. package/lib/player/FloorLadder.cjs +578 -0
  18. package/lib/player/FloorLadder.cjs.map +1 -0
  19. package/lib/player/FloorLadder.d.cts +74 -0
  20. package/lib/player/StormcloudVideoPlayer.cjs +5615 -5101
  21. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  22. package/lib/player/StormcloudVideoPlayer.d.cts +9 -1
  23. package/lib/players/HlsPlayer.cjs +5615 -5101
  24. package/lib/players/HlsPlayer.cjs.map +1 -1
  25. package/lib/players/index.cjs +5615 -5101
  26. package/lib/players/index.cjs.map +1 -1
  27. package/lib/props.cjs +30 -8
  28. package/lib/props.cjs.map +1 -1
  29. package/lib/props.d.cts +1 -0
  30. package/lib/types.d.cts +22 -1
  31. package/lib/ui/StormcloudVideoPlayer.cjs +5634 -5091
  32. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  33. package/lib/ui/StormcloudVideoPlayer.d.cts +1 -0
  34. package/lib/utils/vastMacros.cjs +4 -0
  35. package/lib/utils/vastMacros.cjs.map +1 -1
  36. package/lib/utils/vastMacros.d.cts +2 -1
  37. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\StormcloudVideoPlayer.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","StormcloudVideoPlayer_exports","StormcloudVideoPlayer","module","exports","import_hls","require","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","detectBrowser","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","parts","split","toString","Promise","Map","Set","URLSearchParams","requiresMediaPipelineResetAfterAds","browser","getBrowserConfigOverrides","overrides","allowNativeHls","pauseContentDuringAds","logBrowserInfo","debug","console","log","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","String","Math","floor","random","formatPlayhead","seconds","Number","isFinite","total","hh","padStart","mm","ss","ms","resolveMacroValues","ctx","values","set","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","Date","toISOString","errorCode","playerWidth","playerHeight","round","deviceId","deviceIdType","limitAdTracking","pageUrl","URL","hostname","clientUa","podSequence","adServingId","reason","substituteVastTrackingMacros","url","replace","encodeURIComponent","has","LINEAR_TRACKING_EVENTS","textOf","el","textContent","trim","parseVastTime","length","map","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","trimmed","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","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","createHlsAdPlayer","contentVideo","options","adPlaying","originalMutedState","originalVolume","max","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_TIMEOUT_MS","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","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","Array","fn","warn","SENSITIVE_URL_PARAMS","redactUrl","parsed","searchParams","keys","toLowerCase","logFunnel","stage","extra","breakId","requestId","controllerId","visibilityState","document","adId","id","podSize","vastUrl","mediaUrl","mediaType","type","muted","buildTrackingMacroContext","options2","ad","context","currentTime","clientWidth","clientHeight","location","href","fireTrackingPixels","urls","macroContext","forEach","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","add","timeoutId","release","outcome","clearTimeout","onload","onerror","delete","setTimeout","src","getMainStreamQuality","levels","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","window","devicePixelRatio","containerWidth","containerHeight","base","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","accepted","file","index","isHls","isHlsMediaFile","mimeForProbe","canPlay","canPlayType","playable","default","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","push","sort","a","b","entry","mediaFile","includes","isProgressiveMediaFile","startsWith","isAudioMediaFile","getMediaProbe","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","toUpperCase","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","collectVideoMediaFiles","linear","verbose","stats","mediaFileElements","querySelectorAll","result","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","indexOf","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","source","targetLists","sourceLists","incoming","concat","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","documentElement","adElements","ordered","filter","firstEmpty","entries","parseAdElement","usedAdIndex","adCount","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","kind","controller","startedAt","attempt","requestVast","response","Error","AbortController","abort","now","creds","fetch","mode","headers","referrerPolicy","signal","httpStatus","status","ok","elapsedMs","aborted","errorMessage","message","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","substring","fetchAndParsePod","trimmedXml","empty","resolveAd","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","wrapperCount","catch","shift","createAdVideoElement","video","style","position","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","e","vastErrorCode","mediaErrorCode","networkState","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","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","attachContainerHandlers","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","appendChild","clearMediaStartTimer","startMediaStartTimer","timeoutMs","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","next","nextUrl","nextType","candidateCount","loadMediaCandidate","handleAdError","loadCurrentAdMedia","candidates","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","data","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","releaseAdDecoder","pointerEvents","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","preloaded","reject","durations","impressionUrls","adIndex","missingAdId","resolve","contentVolume","loadError","stop","previousMutedState","clear","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","PRIVATE_HOST_PATTERNS","isLocalDevHost","some","pattern","toDevSafeUrl","rawUrl","cleanPath","pathname","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","existing","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","createPalNonceManager","currentNonce","currentNonceManager","generateNonce","loader","request","manager","NonceRequest","adWillAutoPlay","adWillPlayMuted","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","sessionId","JSON","stringify","loadNonceManager","getNonce","getCurrentNonce","injectNonce","sep","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","DEFAULT_TRACKING_INGEST_CONFIG","enabled","baseUrl","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","method","Authorization","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","readStoredDeviceId","readStoredString","inferDeviceIdType","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","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","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","maxTouchPoints","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","normalized","safeCall","isInteger","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","readPersistentId","writePersistentId","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","prefix","cookie","part","decodeURIComponent","slice","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","performanceNow","i","hex","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","Boolean","normalizeBoolean","getItem","cachedBrowserId","buildAnalyticsContext","config","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","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","domain","origin","path","language","languages","join","cookieEnabled","doNotTrack","referrer","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","hash","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendAdDetectTracking","adDetectInfo","sendHeartbeat","sendAdLoadedTracking","adLoadedInfo","sendAdImpressionTracking","adImpressionInfo","ad_played_count","ad_url","adUrl","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","params","parseQueryString","append","query","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","str","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","then","polyfillObjectAssign","assign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","search","pos","polyfillStringEndsWith","polyfillStringIncludes","initializePolyfills","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","getValue","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","expandInlineMacroPlaceholders","applyDeviceIdentityParams","runtimeId","tagRdid","tagLat","latValue","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","_value","suffix","normalizeVastTagUrl","raw","anValue","orphanFragments","reconstructed","_match","val","GAM_AD_HOSTS","ensureVideoAdType","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","podMaxDurationMs","podMaxAds","existingUrl","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","fetchConsentSignals","signals","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","uspApi","__uspapi","uspString","parseCueOutDuration","num","dStr","d","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","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","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_event_id","segmentation_event_id","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","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","breakStartMs","findBreakForTime","durationMs","selectVastTagsForBreak","beginNewAdPod","resolvePodParams","breakDurationMs","maxDurationMs","maxAds","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","envSignals","ctvAdRequest","urlWithMacros","autoplay","finalUrl","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","AdTimingService","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","startAdFailsafeTimer","clearAdFailsafeTimer","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","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","isArray","idx","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","remaining","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","recordRequestDiagnostic","setSlotState","currentVastUrl","requestNextAd","errorPayload","cause","innerError","causeMessage","handleAdFailure","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","breakSource","followUpBaseVastUrl","noteOpportunity","handleAdStart","adBreakDurationMs","currentMuted","currentVolume","epoch","hasPrefetchedUrl","podPlayed","vastUrls","waitForBreakDuration","startOptimizedPod","maxWaitMs","deadline","waitedForMs","resolved","podUrl","prefetched","requestToken","podCount","noteVastUrlGenerated","beginFunnelRequest","isStale","callController","recordRequestFailure","previous","getMinRemainingMsToRequestAd","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","trigger","nextAdTimerId","stopReason","decision","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","pmad","pmnd","pmxd","diag","vastAdCount","impressionFired","failureReason","gamRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","fields","withCurrentPodBudget","rawVastTagUrl","maxMs","minMs","amount","opportunityBreakKey","expectedDurationMs","newRequestId","requestStartedAt","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","requestUrl","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","vastUrlsGenerated","gamResponses","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsRetries","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","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","ready","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","onReady","backoffMs","playResult","attached","palPlaybackStarted","browserOverrides","videoElement","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","c","adMediaStartTimeoutMs","palDescriptionUrl","attach","offsetWidth","prerollKey","endedHandler","onVideoEnded","timeUpdateHandler","emptiedHandler","wasPaused","Infinity","newDurationMs","detectPayload","hasPrefetchedAds","isManifest","forceImmediate","immediateManifestAds","isManifestMarker","hasPts","estCurrentPtsMs","markerPtsMs","tolerance","adSlotState","activeAdRequest","checkIntervalMs","adBreakCheckIntervalMs","maxExtensionMsConfig","maxAdBreakExtensionMs","maxExtensionMs","overrunMs","shouldExtendAdBreak","generatedUrls","detectedAtFragmentSn","isFetching","fetchStartTime","currentTimeSec","breakToPlay","handleVmapAdBreak","postroll","find","endMs","inWindow","tags","first","rest","getCurrentAdIndex","getTotalAdsInBreak","getAdRemainingMs","isShowingAds","shouldShowNativeControls","showCustomControls"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAIA,WAAWC,OAAOC,MAAM;AAC5B,IAAIC,YAAYF,OAAOG,cAAc;AACrC,IAAIC,mBAAmBJ,OAAOK,wBAAwB;AACtD,IAAIC,oBAAoBN,OAAOO,mBAAmB;AAClD,IAAIC,eAAeR,OAAOS,cAAc;AACxC,IAAIC,eAAeV,OAAOW,SAAS,CAACC,cAAc;AAClD,IAAIC,WAAW,kBAACC,QAAQC;IACtB,IAAK,IAAIC,QAAQD,IACfb,UAAUY,QAAQE,MAAM;QAAEC,KAAKF,GAAG,CAACC,KAAK;QAAEE,YAAY;IAAK;AAC/D;AACA,IAAIC,cAAc,qBAACC,IAAIC,MAAMC,QAAQC;IACnC,IAAIF,QAAQ,CAAA,OAAOA,qCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;YAC7D,kCAAA,2BAAA;;;gBAAA,IAAIG,MAAJ;gBACH,IAAI,CAACd,aAAae,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCpB,UAAUkB,IAAII,KAAK;oBAAEP,KAAK,SAALA;+BAAWI,IAAI,CAACG,IAAI;;oBAAEN,YAAY,CAAEK,CAAAA,OAAOnB,iBAAiBiB,MAAMG,IAAG,KAAMD,KAAKL,UAAU;gBAAC;;YAFpH,QAAK,YAAWZ,kBAAkBe,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;;YAAA;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGP;IACA,OAAOD;AACT;AACA,IAAIM,UAAU,iBAACC,KAAKC,YAAYd;WAAYA,SAASa,OAAO,OAAO5B,SAASS,aAAamB,QAAQ,CAAC,GAAGR,YACnG,sEAAsE;IACtE,iEAAiE;IACjE,sEAAsE;IACtE,qEAAqE;IACrES,cAAc,CAACD,OAAO,CAACA,IAAIE,UAAU,GAAG3B,UAAUY,QAAQ,WAAW;QAAEgB,OAAOH;QAAKT,YAAY;IAAK,KAAKJ,QACzGa;;AAEF,IAAII,eAAe,sBAACJ;WAAQR,YAAYjB,UAAU,CAAC,GAAG,cAAc;QAAE4B,OAAO;IAAK,IAAIH;;AAEtF,sCAAsC;AACtC,IAAIK,gCAAgC,CAAC;AACrCnB,SAASmB,+BAA+B;IACtCC,uBAAuB,SAAvBA;eAA6BA;;AAC/B;AACAC,OAAOC,OAAO,GAAGJ,aAAaC;AAE9B,yBAAyB;AACzB,IAAII,aAAaV,QAAQW,QAAQ,WAAW;AAE5C,6BAA6B;AAC7B,SAASC,iBAAiBC,EAAE;IAC1B,IAAMC,QAAQD,GAAGC,KAAK,CAAC;IACvB,OAAOA,SAASA,KAAK,CAAC,EAAE,GAAGC,SAASD,KAAK,CAAC,EAAE,EAAE,MAAM;AACtD;AACA,SAASE,iBAAiBH,EAAE;IAC1B,IAAMC,QAAQD,GAAGC,KAAK,CAAC;IACvB,OAAOA,SAASA,KAAK,CAAC,EAAE,GAAGC,SAASD,KAAK,CAAC,EAAE,EAAE,MAAM;AACtD;AACA,SAASG;QAC6BC;IAApC,IAAI,mBAAmBA,eAAaA,2BAAAA,UAAUC,aAAa,cAAvBD,+CAAAA,yBAAyBE,QAAQ,GAAE;QACrE,OAAOF,UAAUC,aAAa,CAACC,QAAQ;IACzC;IACA,IAAMP,KAAKK,UAAUG,SAAS;IAC9B,IAAI,wBAAwBC,IAAI,CAACT,KAAK;QACpC,OAAO,oBAAoBS,IAAI,CAACT,MAAM,WAAW;IACnD;IACA,IAAI,OAAOS,IAAI,CAACT,KAAK;QACnB,OAAO;IACT;IACA,IAAI,SAASS,IAAI,CAACT,KAAK;QACrB,OAAO,WAAWS,IAAI,CAACT,MAAM,iBAAiB;IAChD;IACA,IAAI,QAAQS,IAAI,CAACT,KAAK;QACpB,OAAO;IACT;IACA,OAAOK,UAAUE,QAAQ,IAAI;AAC/B;AACA,SAASG;IACP,IAAMV,KAAKK,UAAUG,SAAS;IAC9B,IAAMD,WAAWH;IACjB,IAAI3B,OAAO;IACX,IAAIkC,UAAU;IACd,IAAIC,eAAe;IACnB,IAAIC,YAAY;IAChB,IAAIC,aAAa;IACjB,IAAIC,mBAAmB;IACvB,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAMC,gBAAgBpB,iBAAiBC;IACvC,IAAMoB,gBAAgBjB,iBAAiBH;IACvCkB,mBAAmBC,gBAAgB,IAAIA,gBAAgB,KAAK;IAC5D,IAAI,gCAAgCV,IAAI,CAACT,KAAK;QAC5CvB,OAAO;QACPoC,YAAY;QACZ,IAAIZ,QAAQD,GAAGC,KAAK,CAAC,2BAA2BD,GAAGC,KAAK,CAAC;QACzD,IAAI,CAACA,SAAS,CAACA,KAAK,CAAC,EAAE,EAAE;YACvBA,QAAQD,GAAGC,KAAK,CAAC,8BAA8BD,GAAGC,KAAK,CAAC;QAC1D;QACA,IAAIA,SAASA,KAAK,CAAC,EAAE,EAAE;YACrBU,UAAUV,KAAK,CAAC,EAAE;YAClB,IAAMoB,QAAQV,QAAQW,KAAK,CAAC;YAC5BV,eAAeS,KAAK,CAAC,EAAE,GAAGnB,SAASmB,KAAK,CAAC,EAAE,EAAE,MAAM;YACnDL,eAAeJ;QACjB,OAAO,IAAIO,gBAAgB,GAAG;YAC5B,IAAIA,iBAAiB,IAAI;gBACvBH,eAAe;gBACfL,UAAU;gBACVC,eAAe;YACjB,OAAO,IAAIO,iBAAiB,IAAI;gBAC9BH,eAAe;gBACfL,UAAU;gBACVC,eAAe;YACjB,OAAO,IAAIO,iBAAiB,IAAI;gBAC9BH,eAAe;gBACfL,UAAU;gBACVC,eAAe;YACjB,OAAO,IAAIO,iBAAiB,IAAI;gBAC9BH,eAAe;gBACfL,UAAU;gBACVC,eAAe;YACjB,OAAO;gBACLI,eAAe;gBACfL,UAAU;gBACVC,eAAe;YACjB;QACF,OAAO;YACLD,UAAU;YACVK,eAAe,KAAK;QACtB;QACAF,aAAaE,iBAAiB,KAAK,KAAKA,eAAe;IACzD,OAAO,IAAI,SAASP,IAAI,CAACT,KAAK;QAC5BvB,OAAO;QACPoC,YAAY;QACZ,IAAMZ,SAAQD,GAAGC,KAAK,CAAC;QACvBU,UAAUV,UAASA,MAAK,CAAC,EAAE,GAAGA,MAAK,CAAC,EAAE,GAAG;QACzC,IAAIU,YAAY,WAAW;YACzB,IAAMU,SAAQV,QAAQW,KAAK,CAAC;YAC5BV,eAAeS,MAAK,CAAC,EAAE,GAAGnB,SAASmB,MAAK,CAAC,EAAE,EAAE,MAAM;YACnDJ,eAAeL;QACjB;QACAE,aAAaG,iBAAiB,KAAK,KAAKA,eAAe;IACzD,OAAO,IAAI,oBAAoBR,IAAI,CAACT,KAAK;QACvCvB,OAAO;QACPoC,YAAY;QACZC,aAAaK,gBAAgB,KAAKA,gBAAgB;IACpD,OAAO,IAAI,WAAWV,IAAI,CAACT,KAAK;QAC9BvB,OAAO;QACPoC,YAAY;QACZC,aAAa;IACf,OAAO,IAAI,UAAUL,IAAI,CAACT,KAAK;QAC7BvB,OAAO;QACPoC,YAAY;QACZC,aAAaK,gBAAgB,KAAKA,gBAAgB;IACpD,OAAO;QACL,IAAIA,gBAAgB,GAAG;YACrB1C,OAAO;YACPkC,UAAUQ,cAAcI,QAAQ;YAChCX,eAAeO;YACf,IAAIA,gBAAgB,IAAI;gBACtBJ,mBAAmB;YACrB;QACF;QACA,IAAIK,gBAAgB,KAAKA,gBAAgB,KAAK;YAC5CL,mBAAmB;QACrB;IACF;IACA,IAAI,OAAOS,YAAY,eAAe,OAAOC,QAAQ,eAAe,OAAOC,QAAQ,aAAa;QAC9FX,mBAAmB;IACrB;IACA,IAAI,OAAOY,oBAAoB,aAAa;QAC1CZ,mBAAmB;IACrB;IACA,OAAO;QACLtC,MAAAA;QACAkC,SAAAA;QACAC,cAAAA;QACAC,WAAAA;QACAC,YAAAA;QACAP,UAAAA;QACAQ,kBAAAA;QACAC,cAAAA;QACAC,cAAAA;QACAE,eAAeD;IACjB;AACF;AACA,SAASU;QAEqCC;IAD5C,IAAMA,UAAUnB;IAChB,OAAOmB,QAAQpD,IAAI,KAAK,mBAAmB,EAACoD,wBAAAA,QAAQZ,YAAY,cAApBY,mCAAAA,wBAAwB,MAAM;AAC5E;AACA,SAASC;IACP,IAAMD,UAAUnB;IAChB,IAAMqB,YAAY,CAAC;IACnB,IAAIF,QAAQhB,SAAS,EAAE;QACrBkB,UAAUC,cAAc,GAAG;QAC3BD,UAAUE,qBAAqB,GAAG;IACpC;IACA,OAAOF;AACT;AACA,SAASG;QAAeC,QAAAA,iEAAQ;IAC9B,IAAI,CAACA,OAAO;IACZ,IAAMN,UAAUnB;IAChB0B,QAAQC,GAAG,CAAC,uDAAuD;QACjER,SAAS,AAAC,GAAkBA,OAAhBA,QAAQpD,IAAI,EAAC,KAAmB,OAAhBoD,QAAQlB,OAAO;QAC3CJ,UAAUsB,QAAQtB,QAAQ;QAC1BM,WAAWgB,QAAQhB,SAAS;QAC5BC,YAAYe,QAAQf,UAAU;QAC9BC,kBAAkBc,QAAQd,gBAAgB;OACvCc,QAAQb,YAAY,KAAK,KAAK,IAAI;QAAEA,cAAca,QAAQb,YAAY;IAAC,IAAI,CAAC,GAC5Ea,QAAQZ,YAAY,KAAK,KAAK,IAAI;QAAEA,cAAcY,QAAQZ,YAAY;IAAC,IAAI,CAAC,GAC5EY,QAAQV,aAAa,KAAK,KAAK,IAAI;QAAEA,eAAeU,QAAQV,aAAa;IAAC,IAAI,CAAC;QAClFX,WAAWH,UAAUG,SAAS;;AAElC;AAEA,kCAAkC;AAClC,IAAI8B,qBAAqB;AACzB,IAAIC,uBAAuB;AAC3B,IAAIC,oBAAoB,aAAa,GAAG,IAAId,IAAI;IAC9C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AACD,SAASe;IACP,OAAOC,OAAOC,KAAKC,KAAK,CAACD,KAAKE,MAAM,KAAK,OAAO;AAClD;AACA,SAASC,eAAeC,OAAO;IAC7B,IAAIA,WAAW,QAAQ,CAACC,OAAOC,QAAQ,CAACF,YAAYA,UAAU,GAAG;QAC/D,OAAO,KAAK;IACd;IACA,IAAMG,QAAQP,KAAKC,KAAK,CAACG;IACzB,IAAMI,KAAKT,OAAOC,KAAKC,KAAK,CAACM,QAAQ,OAAOE,QAAQ,CAAC,GAAG;IACxD,IAAMC,KAAKX,OAAOC,KAAKC,KAAK,CAACM,QAAQ,OAAO,KAAKE,QAAQ,CAAC,GAAG;IAC7D,IAAME,KAAKZ,OAAOQ,QAAQ,IAAIE,QAAQ,CAAC,GAAG;IAC1C,IAAMG,KAAKb,OAAOC,KAAKC,KAAK,CAAC,AAACG,CAAAA,UAAUG,KAAI,IAAK,MAAME,QAAQ,CAAC,GAAG;IACnE,OAAO,AAAC,GAAQC,OAANF,IAAG,KAASG,OAAND,IAAG,KAASE,OAAND,IAAG,KAAM,OAAHC;AAC9B;AACA,SAASC,mBAAmBC,GAAG;IAC7B,IAAMC,SAAS,aAAa,GAAG,IAAIjC;IACnC,IAAMkC,MAAM,aAAC1E,KAAKM;QAChB,IAAIA,SAAS,QAAQA,UAAU,IAAImE,OAAOC,GAAG,CAAC1E,KAAKM;IACrD;IACA,IAAMqE,aAAad,eAAeW,IAAII,iBAAiB;IACvDF,IAAI,cAAcC;IAClBD,IAAI,iBAAiBC;IACrBD,IAAI,mBAAmBb,eAAeW,IAAIK,sBAAsB;IAChEH,IAAI,YAAYF,IAAIM,QAAQ;IAC5BJ,IAAI,aAAaF,IAAIO,SAAS;IAC9BL,IAAI,aAAa,CAAC,aAAa,GAAG,IAAIM,QAAQC,WAAW;IACzDP,IAAI,cAAc;IAClB,IAAIF,IAAIU,SAAS,IAAI,QAAQV,IAAIU,SAAS,KAAK,IAAI;QACjDR,IAAI,aAAajB,OAAOe,IAAIU,SAAS;IACvC;IACA,IAAIV,IAAIW,WAAW,IAAI,QAAQX,IAAIY,YAAY,IAAI,MAAM;QACvDV,IAAI,cAAc,AAAC,GAAiChB,OAA/BA,KAAK2B,KAAK,CAACb,IAAIW,WAAW,GAAE,KAAgC,OAA7BzB,KAAK2B,KAAK,CAACb,IAAIY,YAAY;IACjF;IACAV,IAAI,OAAOF,IAAIc,QAAQ;IACvBZ,IAAI,WAAWF,IAAIe,YAAY;IAC/B,IAAIf,IAAIgB,eAAe,IAAI,MAAM;QAC/Bd,IAAI,mBAAmBF,IAAIgB,eAAe,GAAG,MAAM;IACrD;IACAd,IAAI,WAAWF,IAAIiB,OAAO;IAC1B,IAAIjB,IAAIiB,OAAO,EAAE;QACf,IAAI;YACFf,IAAI,UAAU,IAAIgB,IAAIlB,IAAIiB,OAAO,EAAEE,QAAQ;QAC7C,EAAE,eAAM,CACR;IACF;IACAjB,IAAI,YAAYF,IAAIoB,QAAQ;IAC5BlB,IAAI,YAAYF,IAAIoB,QAAQ;IAC5B,IAAIpB,IAAIqB,WAAW,IAAI,MAAM;QAC3BnB,IAAI,eAAejB,OAAOe,IAAIqB,WAAW;IAC3C;IACAnB,IAAI,eAAeF,IAAIsB,WAAW;IAClC,IAAItB,IAAIuB,MAAM,IAAI,QAAQvB,IAAIuB,MAAM,KAAK,IAAI;QAC3CrB,IAAI,UAAUjB,OAAOe,IAAIuB,MAAM;IACjC;IACA,OAAOtB;AACT;AACA,SAASuB,6BAA6BC,GAAG;QAAEzB,MAAAA,iEAAM,CAAC;IAChD,IAAI,CAACyB,KAAK,OAAOA;IACjB,IAAMxB,SAASF,mBAAmBC;IAClC,OAAOyB,IAAIC,OAAO,CAAC5C,sBAAsB;eAAME;OAAuB0C,OAAO,CAAC7C,oBAAoB,SAACrC,OAAOxB;QACxG,IAAIA,SAAS,gBAAgB,OAAOgE;QACpC,IAAMlD,QAAQmE,OAAOhF,GAAG,CAACD;QACzB,IAAIc,SAAS,MAAM,OAAO6F,mBAAmB7F;QAC7C,OAAOiD,kBAAkB6C,GAAG,CAAC5G,QAAQ,KAAKwB;IAC5C;AACF;AAEA,yBAAyB;AACzB,IAAIqF,yBAAyB;IAC3B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AACD,SAASC,OAAOC,EAAE;QACFA;IAAd,IAAMjG,QAAQiG,eAAAA,0BAAAA,kBAAAA,GAAIC,WAAW,cAAfD,sCAAAA,gBAAiBE,IAAI;IACnC,OAAOnG,QAAQA,QAAQ,KAAK;AAC9B;AACA,SAASoG,cAAcpG,KAAK;IAC1B,IAAI,CAACA,OAAO,OAAO,KAAK;IACxB,IAAM8B,QAAQ9B,MAAMmG,IAAI,GAAGpE,KAAK,CAAC;IACjC,IAAID,MAAMuE,MAAM,KAAK,GAAG,OAAO,KAAK;IACpC,IAAkBvE,8BAAAA,MAAMwE,GAAG,CAAC,SAACC;eAAMC,WAAWD;YAAvCE,IAAW3E,eAAR4E,IAAQ5E,eAAL6E,IAAK7E;IAClB,IAAI,CAAC;QAAC2E;QAAGC;QAAGC;KAAE,CAACC,KAAK,CAAC,SAACC;eAAMA,MAAM,KAAK,KAAKpD,OAAOC,QAAQ,CAACmD;QAAK;QAC/D,OAAO,KAAK;IACd;IACA,OAAOJ,IAAI,OAAOC,IAAI,KAAKC;AAC7B;AACA,SAASG,oBAAoBC,MAAM;IACjC,IAAI,CAACA,QAAQ,OAAO,KAAK;IACzB,IAAMC,UAAUD,OAAOZ,IAAI;IAC3B,IAAIa,QAAQC,QAAQ,CAAC,MAAM;QACzB,IAAMC,UAAUV,WAAWQ;QAC3B,OAAOvD,OAAOC,QAAQ,CAACwD,WAAW;YAAEC,eAAeD;QAAQ,IAAI,KAAK;IACtE;IACA,IAAM1D,UAAU4C,cAAcY;IAC9B,OAAOxD,YAAY,KAAK,IAAI;QAAE4D,eAAe5D;IAAQ,IAAI,KAAK;AAChE;AACA,IAAI6D,yBAAyB;AAC7B,IAAIC,0BAA0B;AAC9B,IAAIC,oBAAoB;AACxB,IAAIC,kBAAkB,aAAa,GAAG,IAAIrF;AAC1C,IAAIsF,2BAA2B;AAC/B,IAAIC,6BAA6B;AACjC,IAAIC,2BAA2B;AAC/B,IAAIC,4BAA4B;AAChC,IAAIC,gCAAgC;AACpC,IAAIC,oCAAoC;AACxC,IAAIC,6BAA6B;AACjC,IAAIC,4BAA4B;AAChC,SAASC,qBAAqBC,KAAK;IACjC,OAAQA,kBAAAA,4BAAAA,MAAOC,IAAI;QACjB,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT;YACE,OAAOV;IACX;AACF;AACA,SAASW,kBAAkBC,YAAY,EAAEC,OAAO;QAUzBD,6BAEDA;IAXpB,IAAIE,YAAY;IAChB,IAAIC,qBAAqB;IACzB,IAAIC,iBAAiBrF,KAAKsF,GAAG,CAAC,GAAGtF,KAAKuF,GAAG,CAAC,GAAGN,aAAaO,MAAM,IAAI;IACpE,IAAMC,YAAY,aAAa,GAAG,IAAI3G;IACtC,IAAM4G,kBAAkBR,oBAAAA,8BAAAA,QAASQ,eAAe;IAChD,IAAMC,oBAAoB;IAC1B,IAAMC,gBAAgB;IACtB,IAAMC,8BAA8B;IACpC,IAAMC,qBAAqB;IAC3B,IAAIC,kBAAiBd,8BAAAA,YAAY,CAACW,cAAc,cAA3BX,yCAAAA,8BAA+B,KAAK;IACzD,IAAIe;IACJ,IAAIC,iBAAgBhB,kCAAAA,YAAY,CAACU,kBAAkB,cAA/BV,6CAAAA,kCAAmC,KAAK;IAC5D,IAAIiB,kBAAkB,EAAE;IACxB,IAAIC,oBAAoB,EAAE;IAC1B,IAAIC;IACJ,IAAIC;IACJ,IAAIC,SAAS,EAAE;IACf,IAAIC,WAAW;IACf,IAAMC,eAAe,aAAa,GAAG,IAAI1H;IACzC,IAAM2H,gBAAgB,aAAa,GAAG,IAAI3H;IAC1C,IAAI4H,YAAY;IAChB,IAAIC,kBAAkB,EAAE;IACxB,IAAMC,mBAAmB;IACzB,IAAMC,0BAA0B;IAChC,IAAMC,4BAA4B;IAClC,IAAIC;IACJ,IAAIC,qBAAqB;IACzB,IAAIC,yBAAyB;IAC7B,IAAIC,uBAAuB;IAC3B,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC,gBAAgB,CAAC;IACrB,IAAIC;IACJ,IAAIC,wBAAwB;IAC5B,IAAIC,kBAAkB,EAAE;IACxB,IAAIC,sBAAsB;IAC1B,IAAIC;IACJ,IAAMC,iCAAyB1C,oBAAAA,8BAAAA,QAAS2C,mBAAmB,uCAAI;IAC/D,IAAMC,2BAA2B;IACjC,IAAMC,sBAAsB,aAAa,GAAG,IAAIhJ;IAChD,IAAIiJ;IACJ,IAAIC,uBAAuB;IAC3B,SAASC;QACP,OAAO;YACLC,YAAY;YACZC,QAAQ;YACRC,OAAO;YACPC,eAAe;YACfC,UAAU;YACVC,eAAe;YACfC,UAAU;YACVC,oBAAoB;YACpBC,WAAW,KAAK;YAChBC,eAAe,aAAa,GAAG,IAAI7J;QACrC;IACF;IACA,IAAI8J,gBAAgBX;IACpB,IAAMY,cAAc,aAAa,GAAG,IAAI/J;IACxC,IAAIgK;IACJ,IAAIC,eAAe;IACnB,IAAIC,qBAAqB;IACzB,IAAIC;IACJ,IAAIC,qBAAqB;IACzB,IAAIC,mBAAmB,EAAE;IACzB,SAASC,KAAKC,KAAK,EAAEC,OAAO;QAC1B,IAAMvI,MAAMyE,UAAU1J,GAAG,CAACuN;QAC1B,IAAI,CAACtI,KAAK;YACL,kCAAA,2BAAA;;YAAL,QAAK,YAAYwI,MAAMrN,IAAI,CAAC6E,yBAAvB,SAAA,6BAAA,QAAA,yBAAA,iCAA6B;gBAA7B,IAAMyI,KAAN;gBACH,IAAI;oBACFA,GAAGF;gBACL,EAAE,OAAOzE,OAAO;oBACdrF,QAAQiK,IAAI,CACV,AAAC,6CAAkD,OAANJ,OAAM,MACnDxE;gBAEJ;YACF;;YATK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAUP;IACA,IAAM6E,uBAAuB,aAAa,GAAG,IAAI5K,IAAI;QACnD;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IACD,SAAS6K,UAAUrH,GAAG;QACpB,IAAI,CAACA,KAAK,OAAOA;QACjB,IAAI;YACF,IAAMsH,SAAS,IAAI7H,IAAIO;gBAClB,kCAAA,2BAAA;;gBAAL,QAAK,YAAaiH,MAAMrN,IAAI,CAAC0N,OAAOC,YAAY,CAACC,IAAI,wBAAhD,SAAA,6BAAA,QAAA,yBAAA,iCAAqD;oBAArD,IAAMzN,MAAN;oBACH,IAAIqN,qBAAqBjH,GAAG,CAACpG,IAAI0N,WAAW,KAAK;wBAC/CH,OAAOC,YAAY,CAAC9I,GAAG,CAAC1E,KAAK;oBAC/B;gBACF;;gBAJK;gBAAA;;;yBAAA,6BAAA;wBAAA;;;wBAAA;8BAAA;;;;YAKL,OAAOuN,OAAOjL,QAAQ;QACxB,EAAE,eAAM;YACN,OAAO2D,IAAI5D,KAAK,CAAC,IAAI,CAAC,EAAE;QAC1B;IACF;IACA,SAASsL,UAAUC,KAAK;YAAEC,QAAAA,iEAAQ,CAAC;QACjC,IAAMZ,UAAU;YACdW,OAAAA;YACAE,SAAS9C,cAAc8C,OAAO;YAC9BC,WAAW/C,cAAc+C,SAAS;YAClCC,cAAchD,cAAcgD,YAAY;YACxCC,iBAAiB,OAAOC,aAAa,cAAcA,SAASD,eAAe,GAAG,KAAK;YACnFE,IAAI,EAAErE,sBAAAA,gCAAAA,UAAWsE,EAAE;YACnBnE,UAAAA;YACAoE,SAASrE,OAAOrD,MAAM;YACtB2H,SAAShB,UAAUvC;YACnBwD,QAAQ,EAAExE,+BAAAA,yCAAAA,mBAAoB9D,GAAG;YACjCuI,SAAS,EAAEzE,+BAAAA,yCAAAA,mBAAoB0E,IAAI;YACnCC,OAAOjF,iBAAiBA,eAAeiF,KAAK,GAAG,KAAK;WACjDb;QAEL1K,QAAQC,GAAG,CAAC,AAAC,yBAA8B,OAANwK,QAASX;QAC9CF,KAAK,aAAaE;IACpB;IACA,SAAS0B;YAA0BC,WAAAA,iEAAW,CAAC;YAElCA;QADX,IAAQ1J,YAAsB0J,SAAtB1J,WAAWa,SAAW6I,SAAX7I;QACnB,IAAM8I,MAAKD,eAAAA,SAASC,EAAE,cAAXD,0BAAAA,eAAe9E;QAC1B,IAAMgF,UAAU;YACdlK,iBAAiB,EAAE6E,2BAAAA,qCAAAA,eAAgBsF,WAAW;YAC9ClK,wBAAwB8D,aAAaoG,WAAW;YAChDjK,QAAQ,EAAEiF,+BAAAA,yCAAAA,mBAAoB9D,GAAG;YACjClB,SAAS,EAAEgF,+BAAAA,yCAAAA,mBAAoB0E,IAAI;YACnCtJ,aAAasE,CAAAA,2BAAAA,qCAAAA,eAAgBuF,WAAW,MAAIrF,0BAAAA,oCAAAA,cAAeqF,WAAW;YACtE5J,cAAcqE,CAAAA,2BAAAA,qCAAAA,eAAgBwF,YAAY,MAAItF,0BAAAA,oCAAAA,cAAesF,YAAY;QAC3E;QACA,IAAI/J,aAAa,MAAM;YACrB4J,QAAQ5J,SAAS,GAAGA;QACtB;QACA,IAAI,OAAO9D,cAAc,eAAeA,UAAUG,SAAS,EAAE;YAC3DuN,QAAQlJ,QAAQ,GAAGxE,UAAUG,SAAS;QACxC;QACA,IAAI,OAAO2N,aAAa,eAAeA,SAASC,IAAI,EAAE;YACpDL,QAAQrJ,OAAO,GAAGyJ,SAASC,IAAI;QACjC;QACA,IAAInF,OAAOrD,MAAM,GAAG,GAAG;YACrBmI,QAAQjJ,WAAW,GAAGoE,WAAW;QACnC;QACA,IAAI4E,eAAAA,yBAAAA,GAAI/I,WAAW,EAAE;YACnBgJ,QAAQhJ,WAAW,GAAG+I,GAAG/I,WAAW;QACtC;QACA,IAAIC,UAAU,MAAM;YAClB+I,QAAQ/I,MAAM,GAAGA;QACnB;QACA,OAAO+I;IACT;IACA,SAASM,mBAAmBC,IAAI,EAAET,QAAQ;QACxC,IAAI,CAACS,QAAQA,KAAK1I,MAAM,KAAK,GAAG;QAChC,IAAM2I,eAAeX,0BAA0BC;QAC/CS,KAAKE,OAAO,CAAC,SAACtJ;YACZ,IAAI;gBACF,IAAMuJ,cAAcxJ,6BAA6BC,KAAKqJ;gBACtD,IAAIG;gBACJ,IAAI;oBACFA,eAAe,IAAI/J,IAAI8J,aAAaE,IAAI;gBAC1C,EAAE,eAAM;oBACN/B,UAAU,wBAAwB;wBAAE6B,aAAalC,UAAUkC;oBAAa;oBACxE;gBACF;gBACA,IAAMG,aAAaH,YAAYxO,KAAK,CAAC;gBACrC,IAAI2O,YAAY;oBACdhC,UAAU,iCAAiC;wBACzC8B,cAAAA;wBACAG,QAAQ1C,MAAMrN,IAAI,CAAC,IAAI4C,IAAIkN;oBAC7B;gBACF;gBACA,IAAME,MAAM,IAAIC,MAAM,GAAG;gBACzBhI,gBAAgBiI,GAAG,CAACF;gBACpB,IAAIG;gBACJ,IAAMC,UAAU,iBAACC;oBACf,IAAIF,cAAc,KAAK,GAAGG,aAAaH;oBACvCH,IAAIO,MAAM,GAAG;oBACbP,IAAIQ,OAAO,GAAG;oBACdvI,gBAAgBwI,MAAM,CAACT;oBACvB1M,QAAQC,GAAG,CACT,AAAC,yCAAqDoM,OAAbU,SAAQ,OAAiB,OAAZV;oBAExD,IAAIU,YAAY,QAAQ;wBACtBvC,UAAU,4BAA4B;4BAAE5H,QAAQmK;4BAAST,cAAAA;wBAAa;oBACxE;gBACF;gBACAI,IAAIO,MAAM,GAAG;2BAAMH,QAAQ;;gBAC3BJ,IAAIQ,OAAO,GAAG;2BAAMJ,QAAQ;;gBAC5BD,YAAYO,WACV;2BAAMN,QAAQ;mBACdpI;gBAEFgI,IAAIW,GAAG,GAAGhB;gBACVrM,QAAQC,GAAG,CAAC,AAAC,uCAAkD,OAAZoM;gBACnD7B,UAAU,4BAA4B;oBACpC8B,cAAAA;oBACAvK,SAAS,EAAE0J,qBAAAA,+BAAAA,SAAU1J,SAAS;gBAChC;YACF,EAAE,OAAOsD,OAAO;gBACdrF,QAAQiK,IAAI,CAAC,8CAA8C5E;YAC7D;QACF;IACF;IACA,SAASiI;QACP,IAAI,CAACrH,mBAAmB,CAACA,gBAAgBsH,MAAM,EAAE;YAC/C,OAAO;QACT;QACA,IAAMC,eAAevH,gBAAgBuH,YAAY;QACjD,IAAIA,iBAAiB,CAAC,KAAK,CAACvH,gBAAgBsH,MAAM,CAACC,aAAa,EAAE;YAChE,IAAMC,YAAYxH,gBAAgByH,SAAS;YAC3C,IAAID,cAAc,CAAC,KAAKxH,gBAAgBsH,MAAM,CAACE,UAAU,EAAE;gBACzD,IAAME,SAAS1H,gBAAgBsH,MAAM,CAACE,UAAU;gBAChD,OAAO;oBACLG,OAAOD,OAAOC,KAAK,IAAI;oBACvBC,QAAQF,OAAOE,MAAM,IAAI;oBACzBC,SAASH,OAAOG,OAAO,IAAI;gBAC7B;YACF;YACA,OAAO;QACT;QACA,IAAMC,QAAQ9H,gBAAgBsH,MAAM,CAACC,aAAa;QAClD,OAAO;YACLI,OAAOG,MAAMH,KAAK,IAAI;YACtBC,QAAQE,MAAMF,MAAM,IAAI;YACxBC,SAASC,MAAMD,OAAO,IAAI;QAC5B;IACF;IACA,SAASE;QACP,IAAMC,cAAcX;QACpB,IAAMY,MAAM,OAAOC,WAAW,eAAeA,OAAOC,gBAAgB,GAAG,IAAID,OAAOC,gBAAgB,GAAG;QACrG,IAAMC,iBAAiB,AAAC7H,CAAAA,CAAAA,0BAAAA,oCAAAA,cAAeqF,WAAW,KAAIrG,aAAaqG,WAAU,AAAC,IAAIqC;QAClF,IAAMI,kBAAkB,AAAC9H,CAAAA,CAAAA,0BAAAA,oCAAAA,cAAesF,YAAY,KAAItG,aAAasG,YAAW,AAAC,IAAIoC;QACrF,IAAI,CAACD,eAAe,CAAEI,CAAAA,iBAAiB,KAAKC,kBAAkB,CAAA,GAAI;YAChE,OAAO;QACT;QACA,IAAMC,OAAON,wBAAAA,yBAAAA,cAAe;YAC1BL,OAAOS;YACPR,QAAQS;YACRR,SAAS;QACX;QACA,IAAMF,QAAQS,iBAAiB,IAAI9N,KAAKuF,GAAG,CAACyI,KAAKX,KAAK,EAAES,kBAAkBE,KAAKX,KAAK;QACpF,IAAMC,SAASS,kBAAkB,IAAI/N,KAAKuF,GAAG,CAACyI,KAAKV,MAAM,EAAES,mBAAmBC,KAAKV,MAAM;QACzF,OAAO;YAAED,OAAAA;YAAOC,QAAAA;YAAQC,SAASS,KAAKT,OAAO;QAAC;IAChD;IACA,SAASU,oBAAoBC,UAAU;QACrC,IAAMC,QAAQpI,2BAAAA,4BAAAA,iBAAkByE,SAAS4D,aAAa,CAAC;QACvD,IAAMC,cAAc,OAAO7C,aAAa,eAAeA,SAAS8C,QAAQ,KAAK;QAC7E,IAAM1S,SAAS6R;QACf,IAAMc,WAAW,EAAE;QACnBL,WAAWrC,OAAO,CAAC,SAAC2C,MAAMC;YACxB,IAAMC,QAAQC,eAAeH;YAC7B,IAAMI,eAAeF,QAAQ,kCAAkCF,KAAKzD,IAAI,IAAI;YAC5E,IAAM8D,UAAUV,MAAMW,WAAW,CAACF;YAClC,IAAMG,WAAWL,QAAQxR,WAAW8R,OAAO,CAACC,WAAW,MAAMJ,YAAY,KAAKA,YAAY;YAC1F,IAAMK,WAAWb,eAAe,UAAUvQ,IAAI,CAAC0Q,KAAKjM,GAAG;YACvD,IAAM4M,UAAU;gBACdV,OAAAA;gBACAW,cAAcZ,KAAKjM,GAAG;gBACtB8M,eAAeb,KAAKzD,IAAI;gBACxBsC,OAAOmB,KAAKnB,KAAK;gBACjBC,QAAQkB,KAAKlB,MAAM;gBACnBC,SAASiB,KAAKjB,OAAO;gBACrBuB,aAAaD;gBACbS,OAAOZ,QAAQxR,WAAW8R,OAAO,CAACC,WAAW,KAAK,KAAK;YACzD;YACA,IAAI,CAACF,UAAU;gBACb9E,UAAU,mBAAmB,wCAAKkF;oBAAS9M,QAAQ;oBAAYkN,KAAK;;gBACpE;YACF;YACA,IAAIC,QAAQ;YACZ,IAAI5T,QAAQ;gBACV,IAAM6T,iBAAiBzP,KAAK0P,GAAG,CAAClB,KAAKnB,KAAK,GAAGzR,OAAOyR,KAAK,IAAIrN,KAAK0P,GAAG,CAAClB,KAAKlB,MAAM,GAAG1R,OAAO0R,MAAM;gBACjG,IAAMqC,cAAc3P,KAAK0P,GAAG,CAAC,AAAClB,CAAAA,KAAKjB,OAAO,IAAI,GAAE,IAAK,MAAM3R,OAAO2R,OAAO;gBACzEiC,QAAQC,iBAAiB,IAAIE,cAAc;YAC7C;YACApB,SAASqB,IAAI,CAAC;gBAAEpB,MAAAA;gBAAMgB,OAAAA;gBAAON,UAAAA;YAAS;YACtCjF,UAAU,mBAAmB,wCACxBkF;gBACH9M,QAAQ;gBACRkN,KAAKL,WAAW,gCAAgC;gBAChDM,OAAAA;;QAEJ;QACAjB,SAASsB,IAAI,CAAC,SAACC,GAAGC;YAChB,IAAID,EAAEZ,QAAQ,KAAKa,EAAEb,QAAQ,EAAE,OAAOY,EAAEZ,QAAQ,GAAG,IAAI,CAAC;YACxD,OAAOY,EAAEN,KAAK,GAAGO,EAAEP,KAAK;QAC1B;QACA,OAAOjB,SAASrL,GAAG,CAAC,SAAC8M;mBAAUA,MAAMxB,IAAI;;IAC3C;IACA,SAASG,eAAesB,SAAS;QAC/B,IAAMlF,OAAOkF,UAAUlF,IAAI,CAACf,WAAW;QACvC,IAAMzH,MAAM0N,UAAU1N,GAAG,CAACyH,WAAW;QACrC,OAAOe,SAAS,2BAA2BA,SAAS,mCAAmCA,KAAKmF,QAAQ,CAAC,cAAc3N,IAAI2N,QAAQ,CAAC;IAClI;IACA,SAASC,uBAAuBF,SAAS;QACvC,IAAMlF,OAAOkF,UAAUlF,IAAI,CAACf,WAAW;QACvC,IAAMzH,MAAM0N,UAAU1N,GAAG,CAACyH,WAAW;QACrC,OAAOe,KAAKqF,UAAU,CAAC,aAAa7N,IAAIsB,QAAQ,CAAC,WAAWtB,IAAI2N,QAAQ,CAAC;IAC3E;IACA,SAASG,iBAAiBJ,SAAS;QACjC,IAAMlF,OAAOkF,UAAUlF,IAAI,CAACf,WAAW;QACvC,IAAMzH,MAAM,AAAC0N,CAAAA,UAAU1N,GAAG,CAACyH,WAAW,GAAGrL,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAC,EAAGoE,IAAI;QAClE,OAAOgI,KAAKqF,UAAU,CAAC,aAAa7N,IAAIsB,QAAQ,CAAC,WAAWtB,IAAIsB,QAAQ,CAAC,WAAWtB,IAAIsB,QAAQ,CAAC,WAAWtB,IAAIsB,QAAQ,CAAC,WAAWtB,IAAIsB,QAAQ,CAAC,WAAWtB,IAAIsB,QAAQ,CAAC,YAAYtB,IAAIsB,QAAQ,CAAC,WAAWtB,IAAIsB,QAAQ,CAAC;IAC5N;IACA,SAASyM;QACP,IAAIvK,gBAAgB,OAAOA;QAC3B,IAAI,CAACwB,cAAc,OAAOiD,aAAa,aAAa;YAClDjD,aAAaiD,SAAS4D,aAAa,CAAC;QACtC;QACA,OAAO7G;IACT;IACA,SAASgJ,kBAAkBC,EAAE;YAEfA;QADZ,IAAMzF,OAAOyF,GAAGC,YAAY,CAAC,WAAW;QACxC,IAAMlO,MAAMiO,EAAAA,kBAAAA,GAAG1N,WAAW,cAAd0N,sCAAAA,gBAAgBzN,IAAI,OAAM;QACtC,IAAM2N,WAAWF,GAAGC,YAAY,CAAC,eAAe,KAAK;QACrD,IAAME,QAAQH,GAAGC,YAAY,CAAC,YAAY,KAAK;QAC/C,IAAI,CAAClO,KAAK;YACR,OAAO;gBAAEqO,UAAU;gBAAiBC,aAAa;gBAAa/B,aAAa;YAAG;QAChF;QACA,IAAMgC,eAAe,AAACN,CAAAA,GAAGC,YAAY,CAAC,mBAAmB,EAAC,EAAGM,WAAW;QACxE,IAAID,iBAAiB,SAAS;YAC5B,OAAO;gBAAEF,UAAU;gBAASC,aAAa;gBAAuB/B,aAAa;YAAG;QAClF;QACA,IAAI;YACF,IAAMR,WAAW,IAAItM,IAAIO,KAAK+L,QAAQ;YACtC,IAAIA,aAAa,YAAYA,aAAa,SAAS;gBACjD,OAAO;oBAAEsC,UAAU;oBAAeC,aAAa,AAAC,YAAoB,OAATvC;oBAAYQ,aAAa;gBAAG;YACzF;QACF,EAAE,eAAM;YACN,OAAO;gBAAE8B,UAAU;gBAAeC,aAAa;gBAAmB/B,aAAa;YAAG;QACpF;QACA,IAAMkC,cAAcR,GAAGC,YAAY,CAAC;QACpC,IAAMQ,eAAeD,cAAczT,SAASyT,aAAa,MAAM,KAAK;QACpE,IAAMxC,OAAO;YACXjM,KAAAA;YACAwI,MAAAA;YACAsC,OAAO9P,SAASiT,GAAGC,YAAY,CAAC,YAAY,QAAQ;YACpDnD,QAAQ/P,SAASiT,GAAGC,YAAY,CAAC,aAAa,QAAQ;YACtDlD,SAAS0D,gBAAgBA,eAAe,IAAIA,eAAe,KAAK;YAChEP,UAAAA;YACAC,OAAAA;QACF;QACA,IAAIN,iBAAiB7B,OAAO;YAC1B,OAAO;gBACLoC,UAAU;gBACVC,aAAa9F,KAAKf,WAAW,GAAGoG,UAAU,CAAC,YAAY,eAAe;gBACtEtB,aAAa;YACf;QACF;QACA,IAAMJ,QAAQC,eAAeH;QAC7B,IAAM0C,wBAAwBV,GAAGC,YAAY,CAAC,YAAY,QAAQD,GAAGC,YAAY,CAAC,aAAa;QAC/F,IAAI,CAAC/B,SAASwC,yBAA0B1C,CAAAA,KAAKnB,KAAK,IAAI,KAAKmB,KAAKlB,MAAM,IAAI,CAAA,GAAI;YAC5E,OAAO;gBAAEsD,UAAU;gBAAcC,aAAa;gBAAmB/B,aAAa;YAAG;QACnF;QACA,IAAMX,QAAQmC;QACd,IAAI5B,OAAO;;YACT,IAAMyC,oBAAYhD,kBAAAA,4BAAAA,MAAOW,WAAW,CAAC,uEAAoC;YACzE,IAAI5R,WAAW8R,OAAO,CAACC,WAAW,IAAI;gBACpC,OAAO;oBAAET,MAAAA;oBAAM4C,aAAa;oBAAUtC,aAAaqC;gBAAU;YAC/D;YACA,IAAIA,cAAc,IAAI;gBACpB,OAAO;oBAAE3C,MAAAA;oBAAM4C,aAAa;oBAActC,aAAaqC;gBAAU;YACnE;YACA,OAAO;gBAAEP,UAAU;gBAAmBC,aAAa;gBAAkB/B,aAAaqC;YAAU;QAC9F;QACA,IAAI,CAAChB,uBAAuB3B,OAAO;YACjC,OAAO;gBAAEoC,UAAU;gBAAoBC,aAAa;gBAAoB/B,aAAa;YAAG;QAC1F;QACA,IAAI,CAACX,OAAO;YACV,OAAO;gBAAEK,MAAAA;gBAAM4C,aAAa;gBAAsBtC,aAAa;YAAG;QACpE;QACA,IAAMuC,WAAWtG,QAAQ;QACzB,IAAM8D,UAAUV,MAAMW,WAAW,CAACuC;QAClC,IAAIxC,YAAY,IAAI;YAClB,OAAO;gBAAE+B,UAAU;gBAAoBC,aAAa;gBAAqB/B,aAAaD;YAAQ;QAChG;QACA,IAAI8B,OAAO;YACT,IAAMW,YAAYnD,MAAMW,WAAW,CAAC,AAAC,GAAuB6B,OAArBU,UAAS,cAAkB,OAANV,OAAM;YAClE,IAAIW,cAAc,IAAI;gBACpB,OAAO;oBAAEV,UAAU;oBAAqBC,aAAa;oBAA2B/B,aAAawC;gBAAU;YACzG;YACA,OAAO;gBAAE9C,MAAAA;gBAAM4C,aAAa,AAAC,eAAwB,OAAVE;gBAAaxC,aAAawC;YAAU;QACjF;QACA,OAAO;YAAE9C,MAAAA;YAAM4C,aAAa,AAAC,eAAsB,OAARvC;YAAWC,aAAaD;QAAQ;IAC7E;IACA,SAAS0C,uBAAuBC,MAAM,EAAEC,OAAO,EAAEC,KAAK;QACpD,IAAMC,oBAAoBH,OAAOI,gBAAgB,CAC/C;QAEF,IAAM1D,aAAa,EAAE;QACrB,IAAIwD,OAAOA,MAAMnR,KAAK,IAAIoR,kBAAkB1O,MAAM;QAClD,IAAIwO,SAAS;YACXhS,QAAQC,GAAG,CACT,AAAC,uBAA+C,OAAzBiS,kBAAkB1O,MAAM,EAAC;QAEpD;QACA0O,kBAAkB9F,OAAO,CAAC,SAAC2E,IAAI/B;gBAEjB+B;YADZ,IAAMqB,SAAStB,kBAAkBC;YACjC,IAAMjO,MAAMiO,EAAAA,kBAAAA,GAAG1N,WAAW,cAAd0N,sCAAAA,gBAAgBzN,IAAI,OAAM;YACtC,IAAMwL,WAAW,UAAUsD;YAC3B5H,UAAU,uBAAuB;gBAC/B5H,QAAQkM,WAAW,aAAasD,OAAOjB,QAAQ;gBAC/CnC,OAAAA;gBACA1D,MAAMyF,GAAGC,YAAY,CAAC,WAAW;gBACjCC,UAAUF,GAAGC,YAAY,CAAC,eAAe,KAAK;gBAC9CE,OAAOH,GAAGC,YAAY,CAAC,YAAY,KAAK;gBACxCK,cAAcN,GAAGC,YAAY,CAAC,mBAAmB,KAAK;gBACtDpD,OAAOmD,GAAGC,YAAY,CAAC;gBACvBnD,QAAQkD,GAAGC,YAAY,CAAC;gBACxBqB,SAASlI,UAAUrH;gBACnBuM,aAAa+C,OAAO/C,WAAW;gBAC/BsC,aAAa7C,WAAWsD,OAAOT,WAAW,GAAG,KAAK;gBAClDP,aAAatC,WAAW,KAAK,IAAIsD,OAAOhB,WAAW;YACrD;YACA,IAAI,UAAUgB,QAAQ;gBACpB3D,WAAW0B,IAAI,CAACiC,OAAOrD,IAAI;gBAC3B;YACF;YACA,IAAIkD,OAAO;oBAC4BA;gBAArCA,MAAMK,UAAU,CAACF,OAAOjB,QAAQ,CAAC,GAAG,EAACc,oCAAAA,MAAMK,UAAU,CAACF,OAAOjB,QAAQ,CAAC,cAAjCc,+CAAAA,oCAAqC,KAAK;YACjF;YACA,IAAIG,OAAOjB,QAAQ,KAAK,cAAc;gBACpCnR,QAAQiK,IAAI,CACV,AAAC,2BAAwDmI,OAA9BpD,OAAM,0BAAqD+B,OAA7BqB,OAAOhB,WAAW,EAAC,YAAwC,OAA9BL,GAAGC,YAAY,CAAC,WAAW,IAAG;YAExH;QACF;QACA,OAAOvC;IACT;IACA,SAAS8D;QACP,IAAMrG,OAAO;YACXxD,YAAY,EAAE;YACd8J,eAAe,EAAE;YACjBnN,OAAO,EAAE;YACToN,UAAU,EAAE;YACZC,aAAa,EAAE;YACfC,kBAAkB,EAAE;YACpBC,yBAAyB,EAAE;YAC3BC,UAAU,EAAE;QACd;YACK,kCAAA,2BAAA;;YAAL,QAAK,YAAe3P,2CAAf,SAAA,6BAAA,QAAA,yBAAA,iCAAuC;gBAAvC,IAAM2G,QAAN;gBACHqC,IAAI,CAACrC,MAAM,GAAG,EAAE;YAClB;;YAFK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;QAGL,OAAOqC;IACT;IACA,SAAS4G,SAAS3W,MAAM,EAAE4W,QAAQ;QAChCA,SAAS3G,OAAO,CAAC,SAAChJ;YAChB,IAAMN,MAAMK,OAAOC;YACnB,IAAIN,KAAK3G,OAAOgU,IAAI,CAACrN;QACvB;IACF;IACA,SAASkQ,sBAAsBjB,MAAM,EAAEkB,IAAI;QACzClB,OAAOI,gBAAgB,CAAC,sCAAsC/F,OAAO,CAAC,SAAChJ;YACrE,IAAMyG,QAAQzG,GAAG4N,YAAY,CAAC;YAC9B,IAAMlO,MAAMK,OAAOC;YACnB,IAAI,CAACyG,SAAS,CAAC/G,KAAK;YACpB,IAAI+G,UAAU,YAAY;gBACxB,IAAM3F,SAASD,oBAAoBb,GAAG4N,YAAY,CAAC;gBACnD,IAAI9M,QAAQ+O,KAAKJ,QAAQ,CAAC1C,IAAI,CAAC;oBAAErN,KAAAA;mBAAQoB;gBACzC;YACF;YACA,IAAIhB,uBAAuBgQ,OAAO,CAACrJ,WAAW,CAAC,GAAG;gBAChDoJ,IAAI,CAACpJ,MAAM,CAACsG,IAAI,CAACrN;YACnB;QACF;QACAgQ,SACEG,KAAKT,aAAa,EAClBT,OAAOI,gBAAgB,CAAC;IAE5B;IACA,SAASgB,uBAAuBC,MAAM,EAAEH,IAAI;QAC1CH,SAASG,KAAKvK,UAAU,EAAE0K,OAAOjB,gBAAgB,CAAC;QAClDW,SAASG,KAAK5N,KAAK,EAAE+N,OAAOjB,gBAAgB,CAAC;QAC7CW,SACEG,KAAKR,QAAQ,EACbW,OAAOjB,gBAAgB,CAAC;QAE1BW,SACEG,KAAKP,WAAW,EAChBU,OAAOjB,gBAAgB,CAAC;QAE1BW,SACEG,KAAKN,gBAAgB,EACrBS,OAAOjB,gBAAgB,CAAC;QAE1BiB,OAAOjB,gBAAgB,CACrB,qIACA/F,OAAO,CAAC,SAACiH;YACTP,SACEG,KAAKL,uBAAuB,EAC5BS,aAAalB,gBAAgB,CAC3B;QAGN;IACF;IACA,SAASmB,kBAAkBnX,MAAM,EAAEoX,MAAM;QACvC,IAAMC,cAAcrX;QACpB,IAAMsX,cAAcF;YACf,kCAAA,2BAAA;;YAAL,QAAK,YAAalY,OAAOiP,IAAI,CAACkJ,iCAAzB,SAAA,6BAAA,QAAA,yBAAA,iCAAuC;gBAAvC,IAAM3W,MAAN;gBACH,IAAM6W,WAAWD,WAAW,CAAC5W,IAAI;gBACjC,IAAI6W,YAAYA,SAASlQ,MAAM,GAAG,GAAG;oBACnCgQ,WAAW,CAAC3W,IAAI,GAAG2W,WAAW,CAAC3W,IAAI,CAAC8W,MAAM,CAACD;gBAC7C;YACF;;YALK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;QAML,OAAOvX;IACT;IACA,SAASyX,SAASC,SAAS;QACzB,IAAMC,SAAS,IAAIC,YAAYC,eAAe,CAACH,WAAW;QAC1D,IAAMI,cAAcH,OAAOI,aAAa,CAAC;QACzC,IAAID,aAAa;YACfjU,QAAQqF,KAAK,CACX,yDACA4O,YAAY5Q,WAAW;YAEzB,OAAO;QACT;QACA,OAAOyQ;IACT;IACA,SAASK,cAAcC,SAAS;QAC9B,IAAMC,WAAWvW,SAASsW,UAAUpD,YAAY,CAAC,eAAe,IAAI;QACpE,OAAOpQ,OAAOC,QAAQ,CAACwT,YAAYA,WAAW,KAAK;IACrD;IACA,SAASC,gBAAgBC,IAAI;QAC3B,IAAMC,YAAY,EAAE;QACpB1B,SAAS0B,WAAWD,KAAKpC,gBAAgB,CAAC;QAC1C,OAAO;YAAE7G,MAAM;YAASkJ,WAAAA;YAAWzS,WAAWgD;QAA0B;IAC1E;IACA,SAAS0P,aAAaZ,SAAS;QAC7B,IAAI;YACF,IAAMC,SAASF,SAASC;YACxB,IAAI,CAACC,QAAQ,OAAO;gBAAExI,MAAM;YAAQ;YACpC,IAAMiJ,OAAOT,OAAOY,eAAe;YACnC,IAAMC,aAAa5K,MAAMrN,IAAI,CAAC6X,KAAKpC,gBAAgB,CAAC;YACpD,IAAIwC,WAAWnR,MAAM,KAAK,GAAG;oBAEoB+Q;gBAD/CvU,QAAQiK,IAAI,CACV,AAAC,6CAA+E,QAAnCsK,qBAAAA,KAAKvD,YAAY,CAAC,wBAAlBuD,gCAAAA,qBAAgC,IAAG;gBAElF,OAAOD,gBAAgBC;YACzB;YACA,IAAMK,UAAU,AACd,qBAAGD,WAAWE,MAAM,CAAC,SAACzR;uBAAO+Q,cAAc/Q,QAAQ,KAAK;uBACxD,qBAAGuR,WAAWE,MAAM,CAAC,SAACzR;uBAAO+Q,cAAc/Q,QAAQ,KAAK;;YAE1D,IAAI0R;gBACC,kCAAA,2BAAA;;gBAAL,QAAK,YAA4BF,QAAQG,OAAO,uBAA3C,SAAA,6BAAA,QAAA,yBAAA,iCAA+C;oBAA/C,mCAAA,iBAAO/F,wBAAOoF;oBACjB,IAAMhK,SAAS4K,eAAeZ,WAAW;oBACzC,IAAIhK,OAAOkB,IAAI,KAAK,SAAS;wBAC3BwJ,uBAAAA,wBAAAA,aAAeA,aAAa1K;wBAC5B;oBACF;oBACA,IAAI4E,QAAQ,GAAG;wBACbxE,UAAU,oBAAoB;4BAC5ByK,aAAajG;4BACbkG,SAASN,QAAQpR,MAAM;wBACzB;oBACF;oBACA,IAAI4G,OAAOkB,IAAI,KAAK,WAAW;wBAC7BtL,QAAQC,GAAG,CACT,AAAC,gEAAmF,OAApBmK,OAAO+K,YAAY;oBAEvF;oBACA,OAAO/K;gBACT;;gBAlBK;gBAAA;;;yBAAA,6BAAA;wBAAA;;;wBAAA;8BAAA;;;;YAmBL,OAAO0K,uBAAAA,wBAAAA,aAAcR,gBAAgBC;QACvC,EAAE,OAAOlP,OAAO;YACdrF,QAAQqF,KAAK,CAAC,yCAAyCA;YACvD,OAAO;gBAAEiG,MAAM;YAAQ;QACzB;IACF;IACA,SAAS0J,eAAeZ,SAAS;YAAEpC,UAAAA,iEAAU;QAC3C,IAAI;gBA0EYzO;YAzEd,IAAM6R,UAAUhB,UAAUF,aAAa,CAAC;YACxC,IAAIkB,SAAS;gBACX,IAAMD,eAAehS,OACnBiS,QAAQlB,aAAa,CAAC;gBAExB,IAAI,CAACiB,cAAc;oBACjBnV,QAAQiK,IAAI,CAAC;oBACb,OAAO;wBAAEqB,MAAM;oBAAQ;gBACzB;gBACA,IAAM+J,gBAAgB9C;gBACtBY,uBAAuBiC,SAASC;gBAChCD,QAAQjD,gBAAgB,CAAC,0CAA0C/F,OAAO,CAAC,SAACkJ;2BAAYtC,sBAAsBsC,SAASD;;gBACvH,OAAO;oBACL/J,MAAM;oBACN6J,cAAAA;oBACAI,cAAcF;oBACdG,OAAO;wBACLC,0BAA0BL,QAAQpE,YAAY,CAAC,gCAAgC;oBACjF;gBACF;YACF;YACA,IAAM0E,SAAStB,UAAUF,aAAa,CAAC;YACvC,IAAI,CAACwB,QAAQ;gBACX1V,QAAQiK,IAAI,CAAC;gBACb,OAAO;oBAAEqB,MAAM;gBAAQ;YACzB;YACA,IAAMkJ,YAAY,EAAE;YACpB1B,SAAS0B,WAAWkB,OAAOvD,gBAAgB,CAAC;YAC5C,IAAIiC,UAAUpD,YAAY,CAAC,qBAAqB,QAAQ;gBACtDhR,QAAQiK,IAAI,CAAC;gBACbO,UAAU,2BAA2B;oBAAE5H,QAAQ;oBAAS+S,eAAe;gBAAK;gBAC5E,OAAO;oBAAErK,MAAM;oBAASkJ,WAAAA;oBAAWzS,WAAWiD;gBAA8B;YAC9E;YACA,IAAI+M;YACJ,IAAItD,aAAa,EAAE;YACnB,IAAMmH,cAAc;gBAAE9U,OAAO;gBAAGwR,YAAY,CAAC;YAAE;gBAC1C,kCAAA,2BAAA;;gBAAL,QAAK,YAAmBvI,MAAMrN,IAAI,CAChCgZ,OAAOvD,gBAAgB,CAAC,+DADrB,SAAA,6BAAA,QAAA,yBAAA,iCAEF;oBAFE,IAAM0D,YAAN;oBAGH,IAAMC,QAAQhE,uBAAuB+D,WAAW7D,SAAS4D;oBACzD,IAAIE,MAAMtS,MAAM,GAAG,GAAG;wBACpBuO,SAAS8D;wBACTpH,aAAaqH;wBACb;oBACF;gBACF;;gBATK;gBAAA;;;yBAAA,6BAAA;wBAAA;;;wBAAA;8BAAA;;;;YAUL,IAAI,CAAC/D,QAAQ;gBACX/R,QAAQiK,IAAI,CAAC;gBACb,IAAIrH,SAAS;gBACb,IAAImT,MAAM;oBACL,mCAAA,4BAAA;;oBAAL,QAAK,aAAkB1a,OAAOiP,IAAI,CAACsL,YAAYtD,UAAU,sBAApD,UAAA,8BAAA,SAAA,0BAAA,kCAAuD;wBAAvD,IAAMnB,WAAN;4BACWyE;wBAAd,IAAMI,SAAQJ,mCAAAA,YAAYtD,UAAU,CAACnB,SAAS,cAAhCyE,8CAAAA,mCAAoC;wBAClD,IAAII,QAAQD,KAAK;4BACfA,MAAMC;4BACNpT,SAASuO;wBACX;oBACF;;oBANK;oBAAA;;;6BAAA,8BAAA;4BAAA;;;4BAAA;kCAAA;;;;gBAOL,IAAIyE,YAAY9U,KAAK,GAAG,KAAKiV,QAAQ,GAAGnT,SAAS;gBACjD4H,UAAU,2BAA2B;oBACnC5H,QAAAA;oBACAqT,gBAAgBL,YAAY9U,KAAK;oBACjCoV,oBAAoBN,YAAYtD,UAAU;gBAC5C;gBACA,OAAO;oBAAEhH,MAAM;oBAASkJ,WAAAA;oBAAWzS,WAAWiD;gBAA8B;YAC9E;YACA,IAAMuQ,eAAehD;YACrBY,uBAAuBuC,QAAQH;YAC/BvC,sBAAsBjB,QAAQwD;YAC9B,OAAO;gBACLjK,MAAM;gBACNI,IAAI;oBACFT,IAAImJ,UAAUpD,YAAY,CAAC,SAAS;oBACpCmF,OAAOhT,OAAOuS,OAAOxB,aAAa,CAAC,wBAAwB;oBAC3DkC,QAAQ,GAAE7S,iBAAAA,cAAcJ,OAAO4O,OAAOmC,aAAa,CAAC,oCAA1C3Q,4BAAAA,iBAAoE;oBAC9EkL,YAAAA;oBACA8G,cAAAA;oBACAc,cAAclT,OACZ4O,OAAOmC,aAAa,CAAC;oBAEvBvR,aAAaQ,OAAOuS,OAAOxB,aAAa,CAAC;gBAC3C;YACF;QACF,EAAE,OAAO7O,OAAO;YACdrF,QAAQqF,KAAK,CAAC,6CAA6CA;YAC3D,OAAO;gBAAEiG,MAAM;YAAQ;QACzB;IACF;IACA,SAAegL,aAAaC,UAAU;YAAEC,cAAAA,iEAAc,WAAWC,OAAAA,iEAAO;;gBAIhEC,YAEA7J,WACA8J,WACFC,SACEC,aAyBAC,UAGKzR,OAoBFA;;;;wBAxDT,IAAI4B,WAAW;4BACb,MAAM,IAAI8P,MAAM;wBAClB;wBACML,aAAa,OAAOM,oBAAoB,cAAc,IAAIA,oBAAoB,KAAK;wBACzF,IAAIN,YAAYpO,oBAAoBsE,GAAG,CAAC8J;wBAClC7J,YAAY6J,aAAatJ,WAAW;mCAAMsJ,WAAWO,KAAK;2BAAIxS,2BAA2B,KAAK;wBAC9FkS,YAAY9U,KAAKqV,GAAG;wBACtBN,UAAU;wBACRC,cAAc,qBAAOM;;oCAKnBL;;;;4CAJNF;4CACA,IAAIH,SAAS,OAAO;gDAClBjM,UAAU,yBAAyB;oDAAEoM,SAAAA;oDAASJ,aAAaW;gDAAM;4CACnE;4CACiB;;gDAAMC,MAAMb,YAAY;oDACvCc,MAAM;oDACNb,aAAaW;oDACbG,SAAS;wDACP,UAAU;oDACZ;oDACAC,gBAAgB;mDACbb,aAAa;oDAAEc,QAAQd,WAAWc,MAAM;gDAAC,IAAI,CAAC;;;4CAP7CV,WAAW;4CASjB,IAAIL,SAAS,OAAO;gDAClBjM,UAAU,yBAAyB;oDACjCoM,SAAAA;oDACAa,YAAYX,SAASY,MAAM;oDAC3BC,IAAIb,SAASa,EAAE;oDACfC,WAAW/V,KAAKqV,GAAG,KAAKP;gDAC1B;4CACF;4CACA;;gDAAOG;;;;4BACT;;;;;;;;;;;;;;;;;;wBAIe;;4BAAMD,YAAYL;;;wBAA7BM,WAAW;;;;;;wBACJzR;6BACHmR,CAAAA,gBAAgB,UAAU,EAACE,uBAAAA,iCAAAA,WAAYc,MAAM,CAACK,OAAO,CAAD,GAApDrB;;;;wBACFxW,QAAQiK,IAAI,CACV,AAAC,qDAAgE,OAAZuM,aAAY,qCACjEnR;wBAEFmF,UAAU,0BAA0B;4BAClCsN,YAAY,EAAEzS,kBAAAA,4BAAAA,MAAO0S,OAAO;wBAC9B;wBACW;;4BAAMlB,YAAY;;;wBAA7BC,WAAW;;;;;;wBAEX,MAAMzR;;;;;;;wBAGV,IAAI,CAACyR,SAASa,EAAE,EAAE;4BAChB,MAAM,IAAIZ,MACR,AAAC,8BAAgDD,OAAnBA,SAASY,MAAM,EAAC,KAAuB,OAApBZ,SAASkB,UAAU;wBAExE;wBACO;;4BAAMlB,SAASmB,IAAI;;;wBAA1B;;4BAAO;;;wBACA5S;wBACP,IAAIqR,uBAAAA,iCAAAA,WAAYc,MAAM,CAACK,OAAO,EAAE;4BAC9B,IAAItP,2BAA2B;gCAC7B,MAAM,IAAIwO,MAAM,AAAC,GAAgCR,OAA9BhO,2BAA0B,MAAe,OAAXgO;4BACnD;4BACA,MAAM,IAAIQ,MACR,AAAC,8BAA2DR,OAA9B9R,yBAAwB,QAAiB,OAAX8R;wBAEhE;wBACA,MAAMlR;;wBAEN,IAAIwH,cAAc,KAAK,GAAGG,aAAaH;wBACvC,IAAI6J,YAAYpO,oBAAoB6E,MAAM,CAACuJ;;;;;;;;;;QAE/C;;IACA,SAAewB;4CAAoB3B,UAAU;gBAAE4B,OAAWC,qBAAiD5C,OAErG6C,SACEC,gBAOGjT,OA+BH+E,QAGDA,mBACYA;;;;;wBA7C4B+N,QAAAA,oEAAQ,GAAGC,sBAAAA,oEAAsB7F,2BAA2BiD,QAAAA,oEAAQ;4BAAEC,0BAA0B;wBAAK;wBAClJ,IAAIxO,WAAW;;4BAAO;;wBAEhBqR,iBAAiBzW,KAAKqV,GAAG;;;;;;;;;wBAEnB;;4BAAMZ,aACdC,YACA4B,UAAU,IAAI,YAAY,QAC1BA,UAAU,IAAI,QAAQ;;;wBAHxBE,UAAU;;;;;;wBAKHhT;wBACP,IAAI8S,UAAU,GAAG,MAAM9S;wBACvBrF,QAAQiK,IAAI,CAAC,8CAA8C5E;wBAC3DmF,UAAU,iBAAiB;4BACzB5H,QAAQ;4BACRuV,OAAAA;4BACAI,YAAYpO,UAAUoM;4BACtBqB,WAAW/V,KAAKqV,GAAG,KAAKoB;4BACxBR,YAAY,EAAEzS,kBAAAA,4BAAAA,MAAO0S,OAAO;wBAC9B;wBACA,IAAI,CAAC9Q,WAAW;4BACdgF,mBAAmBmM,oBAAoB/S,KAAK,EAAE;gCAC5CtD,WAAW8C;4BACb;wBACF;wBACA;;4BAAO;;;wBAET,IAAIoC,WAAW;;4BAAO;;wBACtB,IAAIkR,QAAQ,GAAG;4BACb3N,UAAU,iBAAiB;gCACzB5H,QAAQ;gCACRuV,OAAAA;gCACAI,YAAYpO,UAAUoM;gCACtBqB,WAAW/V,KAAKqV,GAAG,KAAKoB;4BAC1B;wBACF;wBACAtY,QAAQC,GAAG,CAAC;wBACZD,QAAQC,GAAG,CACT,sDACAoY,QAAQG,SAAS,CAAC,GAAG;wBAEjBpO,SAASqK,aAAa4D;wBAC5B,IAAIjO,OAAOkB,IAAI,KAAK,SAAS;;4BAC3BW,mBACE,EAAC7B,oBAAAA,OAAOoK,SAAS,cAAhBpK,+BAAAA,wBAAwBuJ,MAAM,CAACyE,oBAAoB/S,KAAK,GACzD;gCAAEtD,SAAS,GAAEqI,oBAAAA,OAAOrI,SAAS,cAAhBqI,+BAAAA,oBAAoBrF;4BAA0B;4BAE7D;;gCAAO;;wBACT;wBACA,IAAIqF,OAAOkB,IAAI,KAAK,WAAW;4BAC7B,IAAI6M,SAAS3T,0BAA0B,CAACgR,MAAMC,wBAAwB,EAAE;gCACtEzV,QAAQiK,IAAI,CACVuL,MAAMC,wBAAwB,GAAG,AAAC,2CAAiE,OAAvBjR,wBAAuB,wCAAsC;gCAE3IyH,mBACEmM,oBAAoB/S,KAAK,CAACsO,MAAM,CAACvJ,OAAOmL,YAAY,CAAClQ,KAAK,GAC1D;oCAAEtD,WAAW+C;gCAAyB;gCAExC;;oCAAO;;4BACT;4BACAwO,kBAAkB8E,qBAAqBhO,OAAOmL,YAAY;4BAC1D;;gCAAO2C,oBACL9N,OAAO+K,YAAY,EACnBgD,QAAQ,GACRC,qBACAhO,OAAOoL,KAAK;;wBAEhB;wBACAlC,kBAAkBlJ,OAAOsB,EAAE,CAAC6J,YAAY,EAAE6C;wBAC1C5N,UAAU,mBAAmB;4BAAE2N,OAAAA;wBAAM;wBACrC;;4BAAO/N,OAAOsB,EAAE;;;;QAClB;;IACA,SAAe+M,iBAAiBlC,UAAU;;gBA4BzBhC,oBAuDyCA,qBAjFlD8D,SAKAK,YAQA5E,QASAS,MACAI,YAUwCJ,qBAGdoE,kBADxBA,OAGSA,kBAKXC,WAqBAC,aACAC,QACAC,YACAC,KAEC,2BAAA,mBAAA,gBAAA,WAAA,OAAMtN,SAIN,4BAAA,oBAAA,iBAAA,YAAA,QAAIA;;;;wBA1EX3D,wBAAwB;wBACR;;4BAAMuO,aAAaC;;;wBAA7B8B,UAAU;wBAChB,IAAIpR,WAAW;;;;wBACfjH,QAAQC,GAAG,CACT,AAAC,+CAA6D,OAAfoY,QAAQ7U,MAAM,EAAC;wBAE1DkV,aAAaL,QAAQ/U,IAAI;wBAC/B,IAAIoV,WAAWlV,MAAM,KAAK,GAAG;4BAC3BxD,QAAQiK,IAAI,CACV;4BAEFO,UAAU,eAAe;gCAAEyO,gBAAgB;gCAAGrW,QAAQ;4BAAa;4BACnE;;;;wBACF;wBACMkR,SAASF,SAASyE;wBACxB,IAAI,CAACvE,QAAQ;4BACX9T,QAAQqF,KAAK,CACX,0DACAgT,QAAQG,SAAS,CAAC,GAAG;4BAEvBhO,UAAU,eAAe;gCAAEyO,gBAAgB;gCAAGrW,QAAQ;4BAAkB;4BACxE;;;;wBACF;wBACM2R,OAAOT,OAAOY,eAAe;wBAC7BC,aAAa5K,MAAMrN,IAAI,CAAC6X,KAAKpC,gBAAgB,CAAC;wBACpD3H,UAAU,eAAe;4BACvB5H,QAAQ+R,WAAWnR,MAAM,GAAG,IAAI,YAAY;4BAC5C0V,WAAW,GAAE3E,qBAAAA,KAAKvD,YAAY,CAAC,wBAAlBuD,gCAAAA,qBAAgC,KAAK;4BAClD0E,gBAAgBtE,WAAWnR,MAAM;4BACjC2V,aAAaxE,WAAWE,MAAM,CAAC,SAACzR;uCAAOA,GAAG8Q,aAAa,CAAC;+BAAoB1Q,MAAM;4BAClF4V,cAAczE,WAAWE,MAAM,CAAC,SAACzR;uCAAOA,GAAG8Q,aAAa,CAAC;+BAAqB1Q,MAAM;wBACtF;wBACA,IAAImR,WAAWnR,MAAM,KAAK,GAAG;;;4BAC3BxD,QAAQiK,IAAI,CACV,AAAC,0CAA4E,QAAnCsK,sBAAAA,KAAKvD,YAAY,CAAC,wBAAlBuD,iCAAAA,sBAAgC,IAAG;4BAEzEoE,QAAQrE,gBAAgBC;4BAC9B,IAAIoE,MAAMrN,IAAI,KAAK,aAAWqN,mBAAAA,MAAMnE,SAAS,cAAfmE,uCAAAA,iBAAiBnV,MAAM,GAAE;;gCACrDyI,mBAAmB0M,MAAMnE,SAAS,EAAE;oCAClCzS,SAAS,GAAE4W,mBAAAA,MAAM5W,SAAS,cAAf4W,8BAAAA,mBAAmB5T;gCAChC;4BACF;4BACA;;;;wBACF;wBACM6T,YAAY,mBAAOxE;;oCAcnBhK,mBAbEA,QAeSA;;oCAfTA,SAAS4K,eAAeZ;oCAC9B,IAAIhK,OAAOkB,IAAI,KAAK,UAAU;wCAC5Bd,UAAU,mBAAmB;4CAAE2N,OAAO;wCAAE;wCACxC;;4CAAO/N,OAAOsB,EAAE;;oCAClB;oCACA,IAAItB,OAAOkB,IAAI,KAAK,WAAW;wCAC7B;;4CAAO4M,oBACL9N,OAAO+K,YAAY,EACnB,GACA/K,OAAOmL,YAAY,EACnBnL,OAAOoL,KAAK;;oCAEhB;oCACA,KAAIpL,oBAAAA,OAAOoK,SAAS,cAAhBpK,wCAAAA,kBAAkB5G,MAAM,EAAE;;wCAC5ByI,mBAAmB7B,OAAOoK,SAAS,EAAE;4CACnCzS,SAAS,GAAEqI,oBAAAA,OAAOrI,SAAS,cAAhBqI,+BAAAA,oBAAoBpF;wCACjC;oCACF;oCACA;;wCAAO;;;4BACT;;wBACM6T,cAAclE,WAAWE,MAAM,CAAC,SAACzR;mCAAO+Q,cAAc/Q,QAAQ,KAAK;2BAAGgN,IAAI,CAAC,SAACC,GAAGC;mCAAM6D,cAAc9D,KAAK8D,cAAc7D;;wBACtHwI,SAASnE,WAAWE,MAAM,CAAC,SAACzR;mCAAO+Q,cAAc/Q,QAAQ,KAAK;;wBAC9D2V,aAAa,oBAAChG;mCAAa3T,QAAQhD,GAAG,CAAC2W,SAAStP,GAAG,CAAC,SAACL;uCAAOwV,UAAUxV,IAAIiW,KAAK,CAAC;2CAAM;;;;wBACtFL;6BACFH,CAAAA,YAAYrV,MAAM,KAAK,CAAA,GAAvBqV;;;;wBACG,kCAAA,2BAAA;;;;;;;;;wBAAY;;4BAAME,WAAWD;;;wBAA7B,YAAY;;;+BAAZ,6BAAA,QAAA;;;;wBAAMpN,KAAN;wBACH,IAAIA,IAAIsN,IAAI7I,IAAI,CAACzE;;;wBADd;;;;;;;;;;;;wBAAA;wBAAA;;;;;;;iCAAA,6BAAA;gCAAA;;;gCAAA;sCAAA;;;;;;;;;;;;wBAIA,mCAAA,4BAAA;;;;;;;;;wBAAU;;4BAAMqN,WAAWF;;;wBAA3B,aAAU;;;+BAAV,8BAAA,SAAA;;;;wBAAInN,MAAJ;;;6BACI,CAAA,CAACA,OAAMoN,OAAOtV,MAAM,GAAG,CAAA;;;;wBACvB;;4BAAMoV,UAAUE,OAAOQ,KAAK,IAAID,KAAK,CAAC;uCAAM;;;;wBAAjD3N,MAAK;;;;;;wBAEP,IAAIA,KAAIsN,IAAI7I,IAAI,CAACzE;;;wBAJd;;;;;;;;;;;;wBAAA;wBAAA;;;;;;;iCAAA,8BAAA;gCAAA;;;gCAAA;sCAAA;;;;;;;wBAOP1L,QAAQC,GAAG,CA9wCf,AA+wCM,AAAC,+BAAuB+Y,IAAIxV,MAAM,EAAC,qBAAsD,QAAnC+Q,sBAAAA,KAAKvD,YAAY,CAAC,wBAAlBuD,iCAAAA,sBAAgC,IAAG;wBAE3FxM,wBAAwB4M,WAAWnR,MAAM;wBACzC;;4BAAOwV;;;;QACT;;IACA,SAASO;QACP,IAAMC,QAAQzO,SAAS4D,aAAa,CAAC;QACrC6K,MAAMC,KAAK,CAACC,QAAQ,GAAG;QACvBF,MAAMC,KAAK,CAACE,IAAI,GAAG;QACnBH,MAAMC,KAAK,CAAC1D,GAAG,GAAG;QAClByD,MAAMC,KAAK,CAAC7L,KAAK,GAAG;QACpB4L,MAAMC,KAAK,CAAC5L,MAAM,GAAG;QACrB2L,MAAMC,KAAK,CAACG,SAAS,GAAG;QACxBJ,MAAMC,KAAK,CAACI,eAAe,GAAG;QAC9BL,MAAMM,WAAW,GAAG;QACpBN,MAAMjO,KAAK,GAAG;QACdiO,MAAMzT,MAAM,GAAG;QACf/F,QAAQC,GAAG,CACT,AAAC,sDAAkE,OAAbuZ,MAAMzT,MAAM;QAEpE,OAAOyT;IACT;IACA,SAASO;QACP,IAAI,CAACzT,kBAAkB,CAACK,WAAW;QACnC,IAAIF,gBAAgBjD,MAAM,GAAG,GAAG;QAChC,IAAMwW,eAAe;YACnB,IAAI,CAACrT,aAAa,CAACL,gBAAgB;YACnC2T;YACAC;YACA,IAAMtO,cAActF,eAAesF,WAAW;YAC9C,IAAIxC,cAAcR,KAAK,EAAE;oBAClB,kCAAA,2BAAA;;oBAAL,QAAK,YAAejC,UAAU4O,YAAY,CAAC1C,QAAQ,qBAA9C,SAAA,6BAAA,QAAA,yBAAA,iCAAgD;wBAAhD,IAAMhJ,QAAN;4BAEeA,sBAAwBA;wBAD1C,IAAIT,cAAcD,aAAa,CAAClG,GAAG,CAAC4G,QAAQ;wBAC5C,IAAMsQ,aAAYtQ,uBAAAA,MAAMtF,aAAa,cAAnBsF,kCAAAA,uBAAuB,EAACA,uBAAAA,MAAMvF,aAAa,cAAnBuF,kCAAAA,uBAAuB,KAAK,MAAMlD,UAAUyP,QAAQ;wBAC9F,IAAIxK,eAAeuO,WAAW;4BAC5B/Q,cAAcD,aAAa,CAACyD,GAAG,CAAC/C;4BAChCoC,mBAAmB;gCAACpC,MAAM/G,GAAG;6BAAC;wBAChC;oBACF;;oBAPK;oBAAA;;;6BAAA,6BAAA;4BAAA;;;4BAAA;kCAAA;;;;YAQP;YACA,IAAI,CAAE6D,CAAAA,UAAUyP,QAAQ,GAAG,CAAA,GAAI;YAC/B,IAAMvD,WAAWjH,cAAcjF,UAAUyP,QAAQ;YACjD,IAAIvD,YAAY,QAAQ,CAACzJ,cAAcP,aAAa,EAAE;gBACpDO,cAAcP,aAAa,GAAG;gBAC9B2B,UAAU;gBACVyB,mBAAmBtF,UAAU4O,YAAY,CAAC1M,aAAa;YACzD;YACA,IAAIgK,YAAY,OAAO,CAACzJ,cAAcN,QAAQ,EAAE;gBAC9CM,cAAcN,QAAQ,GAAG;gBACzB0B,UAAU;gBACVyB,mBAAmBtF,UAAU4O,YAAY,CAACzM,QAAQ;YACpD;YACA,IAAI+J,YAAY,QAAQ,CAACzJ,cAAcL,aAAa,EAAE;gBACpDK,cAAcL,aAAa,GAAG;gBAC9ByB,UAAU;gBACVyB,mBAAmBtF,UAAU4O,YAAY,CAACxM,aAAa;YACzD;QACF;QACA,IAAMqR,mBAAmB;YACvB,IAAI,CAAC1U,aAAa,CAACY,gBAAgB;YACnC,IAAQ+T,aAA4B/T,eAA5B+T,YAAYC,cAAgBhU,eAAhBgU;YACpB,IAAID,cAAc,KAAKC,eAAe,GAAG;gBACvCta,QAAQiK,IAAI,CACV,AAAC,6DAA0EqQ,OAAdD,YAAW,KAAe,OAAZC,aAAY;gBAEzFC;YACF;QACF;QACA,IAAMC,YAAY;YAChB,IAAI,CAAC7T,aAAayC,cAAcT,MAAM,EAAE;YACxCS,cAAcT,MAAM,GAAG;YACvBsD,mBAAmBtF,UAAU4O,YAAY,CAAC5M,MAAM;QAClD;QACA,IAAM8R,YAAY;YAChBC;YACA,IAAI,CAAC/T,aAAa,CAACL,gBAAgB;YACnC,IAAI,CAAC8C,cAAcV,UAAU,EAAE;gBAC7BU,cAAcV,UAAU,GAAG;gBAC3BW,YAAYuD,GAAG,CAACjG;gBAChB6D,UAAU,WAAW;oBACnBmQ,iBAAiBnS;oBACjBoS,gBAAgB3S;gBAClB;gBACAuC,UAAU,oBAAoB;oBAC5BqQ,YAAYlU,UAAU4O,YAAY,CAAC7M,UAAU,CAAClF,MAAM;gBACtD;gBACA,IAAImD,UAAU4O,YAAY,CAAC7M,UAAU,CAAClF,MAAM,KAAK,GAAG;oBAClDxD,QAAQiK,IAAI,CACV;gBAEJ;gBACAgC,mBAAmBtF,UAAU4O,YAAY,CAAC7M,UAAU;gBACpDuD,mBAAmBtF,UAAU4O,YAAY,CAACuF,YAAY;gBACtD7O,mBAAmBtF,UAAU4O,YAAY,CAAC3C,uBAAuB,EAAE;oBACjEhQ,QAAQqC;gBACV;gBACA2E,KAAK,iBAAiB;oBACpBoB,MAAMrE,UAAUsE,EAAE;oBAClB+D,OAAOlI;oBACPhG,OAAO+F,OAAOrD,MAAM,IAAI;gBAC1B;YACF;YACA,IAAI4F,cAAcR,KAAK,EAAE;YACzBQ,cAAcR,KAAK,GAAG;YACtBQ,cAAcF,SAAS,GAAG5C,eAAeiF,KAAK,IAAIjF,eAAeP,MAAM,KAAK;YAC5EkG,mBAAmBtF,UAAU4O,YAAY,CAAC3M,KAAK;YAC/C5I,QAAQC,GAAG,CAAC;QACd;QACA,IAAM8a,UAAU;YACd,IAAI,CAACpU,aAAayC,cAAcJ,QAAQ,EAAE;YAC1CkR;YACAc;YACA5R,cAAcJ,QAAQ,GAAG;YACzBwB,UAAU;YACVyB,mBAAmBtF,UAAU4O,YAAY,CAACvM,QAAQ;YAClDhJ,QAAQC,GAAG,CAAC;YACZ,IAAI6G,WAAWD,OAAOrD,MAAM,GAAG,KAAKyX,sBAAsB;gBACxD;YACF;YACAC;QACF;QACA,IAAMC,UAAU,iBAACC;gBAKG9U,uBACFA;YALhB,IAAI,CAACZ,WAAW;YAChB1F,QAAQqF,KAAK,CAAC,iCAAiC+V;YAC/C,IAAMC,gBAAgBjW,qBAAqBkB,2BAAAA,qCAAAA,eAAgBjB,KAAK;YAChEmF,UAAU,eAAe;gBACvB8Q,cAAc,EAAEhV,2BAAAA,sCAAAA,wBAAAA,eAAgBjB,KAAK,cAArBiB,4CAAAA,sBAAuBhB,IAAI;gBAC3CwS,YAAY,EAAExR,2BAAAA,sCAAAA,yBAAAA,eAAgBjB,KAAK,cAArBiB,6CAAAA,uBAAuByR,OAAO;gBAC5CwD,YAAY,EAAEjV,2BAAAA,qCAAAA,eAAgBiV,YAAY;gBAC1CC,UAAU,EAAElV,2BAAAA,qCAAAA,eAAgBkV,UAAU;gBACtCC,UAAU,EAAEnV,2BAAAA,qCAAAA,eAAgBmV,UAAU;gBACtCJ,eAAAA;YACF;YACAK,qBAAqBL;QACvB;QACA,IAAMM,oBAAoB,2BAAC9R;YACzB,IAAI,CAACnE,aAAa,CAACY,kBAAkB8C,cAAcV,UAAU,EAAE;YAC/D,IAAI,CAACpC,eAAemV,UAAU,EAAE;YAChCjR,UAAU,eAAe;gBACvB5H,QAAQiH,MAAMyB,IAAI;gBAClBkQ,YAAYlV,eAAekV,UAAU;gBACrCD,cAAcjV,eAAeiV,YAAY;gBACzCE,YAAYnV,eAAemV,UAAU;YACvC;QACF;QACA,IAAMG,iBAAiB;YACrB,IAAI,CAACjV,aAAa,CAACL,gBAAgB;YACnC,IAAIkC,wBAAwB,CAAClC,eAAeiF,KAAK,EAAE;gBACjD,IAAMsQ,iBAAiB5d,UAAU4d,cAAc;gBAC/C,IAAIA,kBAAkB,CAACA,eAAeC,QAAQ,EAAE;oBAC9CtR,UAAU,qBAAqB;wBAAEuR,QAAQzV,eAAeyV,MAAM;oBAAC;gBACjE;gBACAvT,uBAAuB;YACzB;YACA,IAAM+C,QAAQjF,eAAeiF,KAAK,IAAIjF,eAAeP,MAAM,KAAK;YAChE,IAAI,CAACqD,cAAcR,KAAK,EAAE;gBACxBQ,cAAcF,SAAS,GAAGqC;gBAC1B;YACF;YACA,IAAIA,UAAUnC,cAAcF,SAAS,EAAE;YACvCE,cAAcF,SAAS,GAAGqC;YAC1BU,mBACEV,QAAQ5E,UAAU4O,YAAY,CAACyG,IAAI,GAAGrV,UAAU4O,YAAY,CAAC0G,MAAM;QAEvE;QACA,IAAMC,sBAAsB;mBAAMxW,aAAa,CAAC,CAACiB,aAAa,CAAC,CAACL,kBAAkB8C,cAAcR,KAAK,IAAI,CAACQ,cAAcJ,QAAQ,IAAI,CAAC1C,eAAe6V,KAAK;;QACzJ,IAAMC,UAAU;YACd5S,qBAAqB;YACrB,IAAI0S,uBAAuB;gBACzBjQ,mBAAmBtF,UAAU4O,YAAY,CAAC8G,KAAK;YACjD;QACF;QACA,IAAMC,SAAS;YACb,IAAIJ,uBAAuB;gBACzBjQ,mBAAmBtF,UAAU4O,YAAY,CAACgH,MAAM;YAClD;QACF;QACA9V,kBAAkB;YAChB;gBAAE6E,MAAM;gBAAckR,SAASxC;YAAa;YAC5C;gBAAE1O,MAAM;gBAAkBkR,SAASpC;YAAiB;YACpD;gBAAE9O,MAAM;gBAAWkR,SAAShC;YAAU;YACtC;gBAAElP,MAAM;gBAAWkR,SAAS/B;YAAU;YACtC;gBAAEnP,MAAM;gBAASkR,SAASzB;YAAQ;YAClC;gBAAEzP,MAAM;gBAASkR,SAASrB;YAAQ;YAClC;gBAAE7P,MAAM;gBAAgBkR,SAASZ;YAAe;YAChD;gBAAEtQ,MAAM;gBAASkR,SAASJ;YAAQ;YAClC;gBAAE9Q,MAAM;gBAAQkR,SAASF;YAAO;YAChC;gBAAEhR,MAAM;gBAAWkR,SAASb;YAAkB;YAC9C;gBAAErQ,MAAM;gBAAWkR,SAASb;YAAkB;YAC9C;gBAAErQ,MAAM;gBAASkR,SAASb;YAAkB;YAC5C;gBAAErQ,MAAM;gBAAWkR,SAASb;YAAkB;SAC/C;YACI,kCAAA,2BAAA;;YAAL,QAAK,YAA2BlV,oCAA3B,SAAA,6BAAA,QAAA,yBAAA,iCAA4C;gBAA5C,kBAAA,aAAQ6E,mBAAAA,MAAMkR,sBAAAA;gBACjBlW,eAAemW,gBAAgB,CAACnR,MAAMkR;YACxC;;YAFK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGP;IACA,SAASE;QACP,IAAIpW,gBAAgB;gBACb,kCAAA,2BAAA;;gBAAL,QAAK,YAA2BG,oCAA3B,SAAA,6BAAA,QAAA,yBAAA,iCAA4C;oBAA5C,kBAAA,aAAQ6E,mBAAAA,MAAMkR,sBAAAA;oBACjBlW,eAAeqW,mBAAmB,CAACrR,MAAMkR;gBAC3C;;gBAFK;gBAAA;;;yBAAA,6BAAA;wBAAA;;;wBAAA;8BAAA;;;;QAGP;QACA/V,kBAAkB,EAAE;IACtB;IACA,SAASmW;QACP,IAAI,CAAClX,aAAa,CAACiB,WAAW;QAC9BsF,mBAAmBtF,UAAU4O,YAAY,CAAC/C,aAAa;QACvD5I,KAAK,YAAY;YAAEoB,MAAMrE,UAAUsE,EAAE;YAAEoL,cAAc1P,UAAU0P,YAAY;QAAC;QAC5E,IAAI1P,UAAU0P,YAAY,EAAE;YAC1B,IAAI;gBACFlI,OAAO0O,IAAI,CAAClW,UAAU0P,YAAY,EAAE,UAAU;YAChD,EAAE,OAAOhR,OAAO;gBACdrF,QAAQiK,IAAI,CAAC,kDAAkD5E;YACjE;QACF;IACF;IACA,SAASyX,qBAAqB/a,SAAS;QACrC,IAAI,CAAC4E,WAAW;QAChB0C,YAAYuD,GAAG,CAACjG;QAChBsF,mBAAmBtF,UAAU4O,YAAY,CAAClQ,KAAK,EAAE;YAAEtD,WAAAA;QAAU;IAC/D;IACA,SAASgb;YACF,kCAAA,2BAAA;;YAAL,QAAK,YAAYlW,2BAAZ,SAAA,6BAAA,QAAA,yBAAA,iCAAoB;gBAApB,IAAM6E,KAAN;gBACH,IAAIrC,YAAYpG,GAAG,CAACyI,KAAK;gBACzBrC,YAAYuD,GAAG,CAAClB;gBAChBO,mBAAmBP,GAAG6J,YAAY,CAACyH,OAAO,EAAE;oBAAEtR,IAAAA;gBAAG;YACnD;;YAJK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAKP;IACA,SAASwO;QACP,IAAI,CAACvT,aAAa,CAACL,kBAAkB,CAACgD,gBAAgB,CAACF,cAAcV,UAAU,IAAIU,cAAcH,kBAAkB,EAAE;YACnH;QACF;QACA,IAAMiO,MAAM5Q,eAAesF,WAAW;QACtC,IAAMqR,SAAS1T,gBAAgBrE,8BAA8B6F,SAASD,eAAe,KAAK,aAAa,CAACxE,eAAeyV,MAAM;QAC7H,IAAI,CAACkB,QAAQ;YACXzT,qBAAqB;QACvB,OAAO,IAAIC,uBAAuB,KAAK,KAAKyN,OAAOzN,oBAAoB;YACrED,sBAAsB0N,MAAMzN;QAC9B;QACAA,qBAAqByN;QACrB,IAAI1N,sBAAsBrE,2BAA2B;YACnDiE,cAAcH,kBAAkB,GAAG;YACnCgD,mBAAmBtF,UAAU4O,YAAY,CAAC9C,QAAQ;QACpD;IACF;IACA,SAASuI;QACP,IAAI,CAACrU,aAAa,CAACyC,cAAcV,UAAU,IAAIU,cAAcH,kBAAkB,EAAE;YAC/E;QACF;QACAG,cAAcH,kBAAkB,GAAG;QACnCgD,mBACE3C,eAAe3C,UAAU4O,YAAY,CAAC7C,WAAW,GAAG/L,UAAU4O,YAAY,CAAC5C,gBAAgB;IAE/F;IACA,SAASuK;YAEcnS;QADrB,IAAI,CAACrF,aAAa,CAACiB,aAAa,CAACH,iBAAiB,CAAC4C,cAAcR,KAAK,EAAE;QACxE,IAAMuU,gBAAepS,8BAAAA,SAASqS,iBAAiB,cAA1BrS,yCAAAA,8BAA8BA,SAASsS,uBAAuB;QACnF,IAAMC,WAAW,CAAC,CAACH,gBAAgBA,aAAaI,QAAQ,CAAC/W;QACzD,IAAI8W,aAAa5T,oBAAoB;QACrCA,qBAAqB4T;QACrB,IAAMpR,OAAOvF,UAAU4O,YAAY;QACnCtJ,mBACEqR,WAAWpR,KAAKsR,UAAU,CAAC7J,MAAM,CAACzH,KAAKuR,YAAY,IAAIvR,KAAKwR,cAAc,CAAC/J,MAAM,CAACzH,KAAKyR,cAAc;IAEzG;IACA,SAASC;QACP,IAAI,CAACpX,iBAAiBE,kBAAkBlD,MAAM,GAAG,GAAG;QACpD,IAAMqa,UAAU;mBAAMjB;;QACtB,IAAMkB,gBAAgB,uBAACjU;YACrB,IAAInE,WAAWkE,KAAK,kBAAkBC;QACxC;QACAnD,oBAAoB;YAClB;gBAAE4E,MAAM;gBAASkR,SAASqB;YAAQ;YAClC;gBAAEvS,MAAM;gBAAakR,SAASsB;YAAc;YAC5C;gBAAExS,MAAM;gBAAckR,SAASsB;YAAc;SAC9C;YACI,kCAAA,2BAAA;;YAAL,QAAK,YAA2BpX,sCAA3B,SAAA,6BAAA,QAAA,yBAAA,iCAA8C;gBAA9C,kBAAA,aAAQ4E,mBAAAA,MAAMkR,sBAAAA;gBACjBhW,cAAciW,gBAAgB,CAACnR,MAAMkR;YACvC;;YAFK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;QAGL,IAAMuB,qBAAqB;mBAAMb;;QACjCvT,mBAAmB;YACjB;gBAAE2B,MAAM;gBAAoBkR,SAASuB;YAAmB;YACxD;gBAAEzS,MAAM;gBAA0BkR,SAASuB;YAAmB;SAC/D;YACI,mCAAA,4BAAA;;YAAL,QAAK,aAA2BpU,qCAA3B,UAAA,8BAAA,SAAA,0BAAA,kCAA6C;gBAA7C,mBAAA,cAAQ2B,qBAAAA,MAAMkR,wBAAAA;gBACjBzR,SAAS0R,gBAAgB,CAACnR,OAAMkR;YAClC;;YAFK;YAAA;;;qBAAA,8BAAA;oBAAA;;;oBAAA;0BAAA;;;;QAGL,IAAI,OAAOwB,yBAAyB,aAAa;YAC/C1U,eAAe,IAAI0U,qBACjB,SAACjJ;gBACC,IAAMxE,QAAQwE,OAAO,CAACA,QAAQvR,MAAM,GAAG,EAAE;gBACzC,IAAI+M,OAAO;oBACThH,eAAegH,MAAM0N,cAAc,GAAG1N,MAAM2N,iBAAiB,GAAG;gBAClE;YACF,GACA;gBAAE/D,WAAW;oBAAC;oBAAG;oBAAM;oBAAK;oBAAM;iBAAE;YAAC;YAEvC7Q,aAAa6U,OAAO,CAAC3X;QACvB;IACF;IACA,SAAS4X;QACP,IAAI5X,eAAe;gBACZ,kCAAA,2BAAA;;gBAAL,QAAK,YAA2BE,sCAA3B,SAAA,6BAAA,QAAA,yBAAA,iCAA8C;oBAA9C,kBAAA,aAAQ4E,mBAAAA,MAAMkR,sBAAAA;oBACjBhW,cAAcmW,mBAAmB,CAACrR,MAAMkR;gBAC1C;;gBAFK;gBAAA;;;yBAAA,6BAAA;wBAAA;;;wBAAA;8BAAA;;;;QAGP;QACA9V,oBAAoB,EAAE;YACjB,mCAAA,4BAAA;;YAAL,QAAK,aAA2BiD,qCAA3B,UAAA,8BAAA,SAAA,0BAAA,kCAA6C;gBAA7C,mBAAA,cAAQ2B,qBAAAA,MAAMkR,wBAAAA;gBACjBzR,SAAS4R,mBAAmB,CAACrR,OAAMkR;YACrC;;YAFK;YAAA;;;qBAAA,8BAAA;oBAAA;;;oBAAA;0BAAA;;;;QAGL7S,mBAAmB,EAAE;QACrBL,yBAAAA,mCAAAA,aAAc+U,UAAU;QACxB/U,eAAe,KAAK;IACtB;IACA,SAASgV,iBAAiBC,SAAS;QACjC,IAAIA,WAAW;YACb/Y,aAAagZ,OAAO,CAACC,mBAAmB,GAAG;QAC7C,OAAO;YACL,OAAOjZ,aAAagZ,OAAO,CAACC,mBAAmB;QACjD;IACF;IACA,SAASC;QACPtV,gBAAgBX;QAChBe,qBAAqB;QACrBC,qBAAqB,KAAK;IAC5B;IACA,SAASkV,gBAAgBnF,KAAK;QAC5B,OAAO,OAAOA,MAAMoF,yBAAyB,KAAK;IACpD;IACA,SAASC;QACPlX,qBAAqB,KAAK;IAC5B;IACA,SAASmX,oBAAoBzZ,KAAK;QAChC,OAAOA,CAAAA,kBAAAA,4BAAAA,MAAOhJ,IAAI,MAAK,sBAAsB2I,gCAAgCJ;IAC/E;IACA,SAASma,eAAepT,OAAO,EAAEtG,KAAK;QACpC,IAAMgW,gBAAgByD,oBAAoBzZ;QAC1CrF,QAAQqF,KAAK,CAAC,AAAC,gCAAuC,OAARsG,SAAQ,MAAItG;QAC1DmF,UAAU,eAAe;YACvBwU,SAAS,EAAE3Z,kBAAAA,4BAAAA,MAAOhJ,IAAI;YACtByb,YAAY,EAAEzS,kBAAAA,4BAAAA,MAAO0S,OAAO;YAC5BsD,eAAAA;QACF;QACAK,qBAAqBL;IACvB;IACA,SAAS4D,gBAAgBtT,OAAO;YAAEuT,eAAAA,iEAAe;QAC/C,IAAI,CAAC5Y,gBAAgB;QACrB,IAAM6Y,WAAW,OAAOC,qBAAqB,cAAc5Y,gBAAgB4Y,iBAAiB5Y,iBAAiB,KAAK;QAClHgE,UAAU0U,eAAe,gBAAgB,eAAe;YACtDvT,SAAAA;YACA0T,aAAa/Y,eAAe+Y,WAAW;YACvCxT,aAAavF,eAAeuF,WAAW;YACvCC,cAAcxF,eAAewF,YAAY;YACzCwT,gBAAgB,EAAEH,qBAAAA,+BAAAA,SAAUI,OAAO;YACnCC,mBAAmB,EAAEL,qBAAAA,+BAAAA,SAAUM,UAAU;QAC3C;QACA,IAAMC,cAAcpZ,eAAeqZ,IAAI;QACvChY,qBAAqB+X;QACrBA,YAAYrG,KAAK,CAAC,SAAChU;YACjB,IAAIsC,uBAAuB+X,aAAa;gBACtC;YACF;YACAlV,UAAU,iBAAiB;gBACzBmB,SAAAA;gBACAqT,SAAS,EAAE3Z,kBAAAA,4BAAAA,MAAOhJ,IAAI;gBACtByb,YAAY,EAAEzS,kBAAAA,4BAAAA,MAAO0S,OAAO;YAC9B;YACA,IAAI,CAACmH,gBAAgB7Z,CAAAA,kBAAAA,4BAAAA,MAAOhJ,IAAI,MAAK,qBAAqBiK,kBAAkB,CAACA,eAAeiF,KAAK,EAAE;gBACjGvL,QAAQiK,IAAI,CACV,AAAC,yBAAgC,OAAR0B,SAAQ;gBAEnChG,qBAAqB;gBACrB6C,uBAAuB;gBACvBlC,eAAeiF,KAAK,GAAG;gBACvB0T,gBAAgBtT,SAAS;gBACzB;YACF;YACAoT,eAAepT,SAAStG;QAC1B,GAAGua,OAAO,CAAC;YACT,IAAIjY,uBAAuB+X,aAAa;gBACtC/X,qBAAqB,KAAK;YAC5B;QACF;IACF;IACA,SAASkY;QACPhB;QACA,IAAItY,OAAO;YACTA,MAAMuZ,OAAO;YACbvZ,QAAQ,KAAK;QACf;QACA,IAAI,CAACD,gBAAgB;QACrB,IAAI;YACFA,eAAe+V,KAAK;YACpB/V,eAAeyZ,eAAe,CAAC;YAC/BzZ,eAAe0Z,IAAI;QACrB,EAAE,OAAO3a,OAAO;YACdrF,QAAQiK,IAAI,CACV,0DACA5E;QAEJ;IACF;IACA,SAAS4a;QACPjgB,QAAQC,GAAG,CACT;QAEFyc;QACAmD;QACA,IAAIvZ,gBAAgB;YAClB,IAAI;gBACFA,eAAe4Z,MAAM;YACvB,EAAE,OAAO7a,OAAO;gBACdrF,QAAQiK,IAAI,CAAC,kDAAkD5E;YACjE;QACF;QACAiB,iBAAiBiT;QACjB/S,0BAAAA,oCAAAA,cAAe2Z,WAAW,CAAC7Z;QAC3Bd,YAAY,CAACW,cAAc,GAAGG;QAC9BA,eAAeP,MAAM,GAAGxF,KAAKsF,GAAG,CAAC,GAAGtF,KAAKuF,GAAG,CAAC,GAAGF;QAChDU,eAAeiF,KAAK,GAAG5F;IACzB;IACA,SAASya;QACP,IAAIlY,sBAAsB,KAAK,GAAG;YAChC8E,aAAa9E;YACbA,oBAAoB,KAAK;QAC3B;IACF;IACA,SAASmY;QACPD;QACA,IAAI,CAAEjY,CAAAA,yBAAyB,CAAA,GAAI;QACnC,IAAMwO,YAAY9U,KAAKqV,GAAG;QAC1BhP,oBAAoBkF,WAAW;YAC7BlF,oBAAoB,KAAK;YACzB,IAAI,CAACxC,aAAa0D,cAAcV,UAAU,EAAE;YAC5C1I,QAAQiK,IAAI,CACV,AAAC,uDAA6E,OAAvB9B,wBAAuB;YAEhFqC,UAAU,mCAAmC;gBAC3C8V,WAAWnY;gBACXyP,WAAW/V,KAAKqV,GAAG,KAAKP;gBACxB6E,UAAU,EAAElV,2BAAAA,qCAAAA,eAAgBkV,UAAU;gBACtCD,YAAY,EAAEjV,2BAAAA,qCAAAA,eAAgBiV,YAAY;gBAC1CE,UAAU,EAAEnV,2BAAAA,qCAAAA,eAAgBmV,UAAU;gBACtCM,MAAM,EAAEzV,2BAAAA,qCAAAA,eAAgByV,MAAM;gBAC9BV,eAAehT;YACjB;YACAqT,qBAAqBrT;QACvB,GAAGF;IACL;IACA,SAASoY;QACPC;QACA,IAAIhhB,sCAAsC;YACxCygB;YACAlG;QACF,OAAO;YACL8F;QACF;IACF;IACA,SAASY;QACP,IAAI,CAAC9Z,aAAayC,cAAcV,UAAU,EAAE,OAAO;QACnD,IAAIT,uBAAuBD,gBAAgBxE,MAAM,GAAG,GAAG,OAAO;QAC9D,IAAMkd,YAAY9Z,+BAAAA,yCAAAA,mBAAoB9D,GAAG;QACzCmF;QACA,IAAM0Y,OAAO3Y,eAAe,CAACC,oBAAoB;QACjD,IAAI,CAAC0Y,MAAM,OAAO;QAClBnW,UAAU,kBAAkB;YAC1BkW,WAAAA;YACAE,SAASD,KAAK7d,GAAG;YACjB+d,UAAUF,KAAKrV,IAAI;YACnBsP,gBAAgB3S;YAChB6Y,gBAAgB9Y,gBAAgBxE,MAAM;QACxC;QACA+c;QACA,IAAI;YACFQ,mBAAmBJ;YACnB,OAAO;QACT,EAAE,OAAOtb,OAAO;YACdrF,QAAQqF,KAAK,CAAC,qDAAqDA;YACnE,OAAOob;QACT;IACF;IACA,SAAS/E,qBAAqBL,aAAa;QACzC+E;QACA,IAAIK,yBAAyB;QAC7B3D,qBAAqBzB;QACrB,IAAIvU,WAAWD,OAAOrD,MAAM,GAAG,KAAKyX,sBAAsB;QAC1D+F;IACF;IACA,SAASC;QACP,IAAI,CAAC3a,kBAAkB,CAACK,WAAW;YACjC,MAAM,IAAIoQ,MAAM;QAClB;QACA/O,kBAAkBwG,oBAAoB7H,UAAU8H,UAAU;QAC1DxG,sBAAsB;QACtB,IAAMuI,YAAYxI,eAAe,CAAC,EAAE;QACpC,IAAI,CAACwI,WAAW;YACdhG,UAAU,qBAAqB;gBAC7B6Q,eAAerW;gBACfkc,YAAYva,UAAU8H,UAAU,CAACjL,MAAM;YACzC;YACAsZ,qBAAqB9X;YACrB,MAAM,IAAI+R,MAAM;QAClB;QACA,IAAI;YACFgK,mBAAmBvQ;QACrB,EAAE,OAAOnL,OAAO;YACd,IAAIob,yBAAyB;YAC7B3D,qBAAqB9X;YACrB,MAAMK;QACR;IACF;IACA,SAAS0b,mBAAmBvQ,SAAS;QACnC,IAAI,CAAClK,kBAAkB,CAACK,WAAW;YACjC,MAAM,IAAIoQ,MAAM;QAClB;QACAnQ,qBAAqB4J;QACrB,IAAM2Q,UAAUjS,eAAesB;QAC/BhG,UAAU,kBAAkB;YAC1BoD,OAAO4C,UAAU5C,KAAK;YACtBC,QAAQ2C,UAAU3C,MAAM;YACxBC,SAAS0C,UAAU1C,OAAO;YAC1B8M,gBAAgB3S;YAChBiZ,YAAYlZ,gBAAgBxE,MAAM;QACpC;QACAxD,QAAQC,GAAG,CACT,AAAC,yBAAmE6G,OAA3Cqa,UAAU,QAAQ,eAAc,aAA2Bta,OAAhBC,WAAW,GAAE,KAAgC0J,OAA7B3J,OAAOrD,MAAM,IAAI,GAAE,YAAwB,OAAdgN,UAAU1N,GAAG;QAEhIud;QACA,IAAIc,WAAW1jB,WAAW8R,OAAO,CAACC,WAAW,IAAI;YAC/C,IAAIjJ,OAAO;gBACTA,MAAMuZ,OAAO;YACf;YACAvZ,QAAQ,IAAI9I,WAAW8R,OAAO,CAAC;gBAC7B6R,cAAc;gBACdC,gBAAgB;YAClB;YACA7W,UAAU,cAAc;gBAAE8W,UAAU;YAAS;YAC7C/a,MAAMgb,UAAU,CAAC/Q,UAAU1N,GAAG;YAC9ByD,MAAMib,WAAW,CAAClb;YAClBC,MAAMkb,EAAE,CAAChkB,WAAW8R,OAAO,CAACmS,MAAM,CAACC,eAAe,EAAE;gBAClD3hB,QAAQC,GAAG,CAAC;gBACZgf,gBAAgB;YAClB;YACA1Y,MAAMkb,EAAE,CAAChkB,WAAW8R,OAAO,CAACmS,MAAM,CAACE,KAAK,EAAE,SAACC,QAAQC;gBACjD9hB,QAAQqF,KAAK,CAAC,4BAA4Byc;gBAC1C,IAAIA,KAAKC,KAAK,EAAE;wBAMED,gBACAA,iBACLA;oBAPX,IAAMzG,gBAAgByG,KAAKxW,IAAI,KAAK7N,WAAW8R,OAAO,CAACyS,UAAU,CAACC,aAAa,GAAG,MAAMrd;oBACxF4F,UAAU,aAAa;wBACrB5H,QAAQkf,KAAKpS,OAAO;wBACpBsP,WAAW8C,KAAKxW,IAAI;wBACpBwM,cAAcgK,KAAKpS,OAAO;wBAC1BwS,YAAY,GAAEJ,iBAAAA,KAAKhL,QAAQ,cAAbgL,qCAAAA,eAAexc,IAAI;wBACjC6c,YAAY,GAAEL,kBAAAA,KAAKhL,QAAQ,cAAbgL,sCAAAA,gBAAe7J,IAAI;wBACjCmK,OAAO,GAAEN,aAAAA,KAAKO,IAAI,cAATP,iCAAAA,WAAWhf,GAAG;wBACvBuY,eAAAA;oBACF;oBACAK,qBAAqBL;gBACvB;YACF;QACF,OAAO,IAAI8F,WAAW7a,eAAe+I,WAAW,CAAC,kCAAkC;YACjF7E,UAAU,cAAc;gBAAE8W,UAAU;YAAa;YACjDhb,eAAe+G,GAAG,GAAGmD,UAAU1N,GAAG;YAClCmc,gBAAgB;QAClB,OAAO,IAAI,CAACkC,WAAWzQ,uBAAuBF,YAAY;YACxD,IAAIjK,OAAO;gBACTA,MAAMuZ,OAAO;gBACbvZ,QAAQ,KAAK;YACf;YACAiE,UAAU,cAAc;gBAAE8W,UAAU;YAAc;YAClDhb,eAAe+G,GAAG,GAAGmD,UAAU1N,GAAG;YAClCwD,eAAe0Z,IAAI;YACnBf,gBAAgB;QAClB,OAAO;YACLmB;YACA5V,UAAU,qBAAqB;gBAC7B6Q,eAAerW;YACjB;YACA,MAAM,IAAI+R,MAAM,AAAC,mCAAiD,OAAfvG,UAAUlF,IAAI;QACnE;IACF;IACA,SAAS2P;QACPmF;QACA,MAAOtZ,WAAWD,OAAOrD,MAAM,GAAG,EAAG;YACnCwX;YACAlU;YACAH,YAAYE,MAAM,CAACC,SAAS;YAC5BF,qBAAqB,KAAK;YAC1B8X;YACA,IAAI/X,WAAW;gBACb3G,QAAQC,GAAG,CACT,AAAC,2CAA0D4G,OAAhBC,WAAW,GAAE,KAAsBH,OAAnBE,OAAOrD,MAAM,EAAC,OAAmCmD,OAA9BA,UAAUwP,KAAK,EAAC,gBAAiC,OAAnBxP,UAAUyP,QAAQ,EAAC;YAEnI;YACAmK;YACA,IAAI;gBACFU;gBACArX,KAAK,kBAAkB;oBAAEoF,OAAOlI;oBAAUhG,OAAO+F,OAAOrD,MAAM;gBAAC;gBAC/D,OAAO;YACT,EAAE,OAAO6B,OAAO;gBACdrF,QAAQqF,KAAK,CAAC,6CAA6CA;YAC7D;QACF;QACA,OAAO;IACT;IACA,SAASmb;QACPJ;QACA,IAAI9Y,mBAAmB,MAAM;YAC3Bgb,cAAchb;YACdA,kBAAkB,KAAK;QACzB;QACAib;IACF;IACA,SAAStI;QACP1S,qBAAqB1F,KAAKqV,GAAG;QAC7B,IAAI5Q,gBAAgB;YAClBkB,yBAAyBlB,eAAesF,WAAW;QACrD;IACF;IACA,SAAS4W;QACPxiB,QAAQiK,IAAI,CACV;QAEFuW;QACAhW,UAAU,SAAS;YAAE6Q,eAAezW;QAAyB;QAC7D8W,qBAAqB9W;IACvB;IACA,SAAS6d,0BAA0BjJ,KAAK;QACtC,IAAI;YACF,IAAI,OAAOA,MAAMkJ,uBAAuB,KAAK,YAAY;gBACvD,IAAMC,UAAUnJ,MAAMkJ,uBAAuB;gBAC7C,IAAIC,WAAW,OAAOA,QAAQC,gBAAgB,KAAK,UAAU;oBAC3D,OAAOD,QAAQC,gBAAgB;gBACjC;YACF;YACA,IAAMC,cAAcrJ,MAAMsJ,uBAAuB;YACjD,IAAI,OAAOD,gBAAgB,UAAU;gBACnC,OAAOA;YACT;QACF,EAAE,OAAOxd,OAAO;YACdrF,QAAQiK,IAAI,CACV,2DACA5E;QAEJ;QACA,OAAO,KAAK;IACd;IACA,SAAS0d;QACP,OAAOvd,YAAY,CAACY,4BAA4B,KAAK;IACvD;IACA,SAAS4c;QACPxd,YAAY,CAACY,4BAA4B,GAAG;IAC9C;IACA,SAAS6c;QACP,OAAOzd,YAAY,CAACa,mBAAmB,KAAK;IAC9C;IACA,SAAS6c;QACP1d,YAAY,CAACa,mBAAmB,GAAG;IACrC;IACA,SAASkc;QACP,IAAI7a,4BAA4B,QAAQpB,kBAAkB,OAAOA,eAAe6c,wBAAwB,KAAK,YAAY;YACvH,IAAI;gBACF7c,eAAe6c,wBAAwB,CACrCzb;YAEJ,EAAE,OAAOrC,OAAO;gBACdrF,QAAQiK,IAAI,CACV,wDACA5E;YAEJ;QACF;QACAqC,2BAA2B,KAAK;IAClC;IACA,SAAS0b;QACPb;QACA,IAAI,CAACjc,gBAAgB;QACrB,IAAM+c,OAAO/c,eAAesY,yBAAyB;QACrD,IAAI,OAAOyE,SAAS,YAAY;QAChC,IAAMC,mBAAmB;YACvB5b,2BAA2B,KAAK;YAChC,IAAI,CAAChC,WAAW;YAChB+B,uBAAuB;YACvByb;QACF;QACA,IAAI;YACFxb,2BAA2B2b,KAAKvmB,IAAI,CAClCwJ,gBACAgd;QAEJ,EAAE,OAAOje,OAAO;YACdrF,QAAQiK,IAAI,CACV,wDACA5E;YAEFqC,2BAA2B,KAAK;QAClC;IACF;IACA,SAAS6S;QACPva,QAAQiK,IAAI,CACV;QAEFuW;QACAhW,UAAU,kBAAkB;YAAE6Q,eAAezW;QAAyB;QACtE8W,qBAAqB9W;IACvB;IACA,SAAS8V;QACP8F;QACAvG;QACAxS,uBAAuB;QACvB2b;QACA,IAAMG,6BAA6B,CAAC/jB;QACpC8H,kBAAkB6G,OAAOqV,WAAW,CAAC;YACnC,IAAI,CAAC9d,aAAa,CAACY,gBAAgB;gBACjC;YACF;YACA,IAAIid,8BAA8B,CAAC9b,wBAAwB,CAACnB,eAAeyV,MAAM,EAAE;gBACjF,IAAM0H,gBAAgBhB,0BAA0Bnc;gBAChD,IAAImd,kBAAkB,KAAK,KAAKA,gBAAgB,GAAG;oBACjDhc,uBAAuB;oBACvBub;gBACF,OAAO,IAAI1c,eAAesF,WAAW,IAAIvE,2BAA2B;oBAClE,IAAMqc,gBAAgBpd,eAAesF,WAAW,GAAGpE,yBAAyB;oBAC5E,IAAImX,gBAAgBrY,mBAAmBod,iBAAiBT,kBAAkB;wBACxE1I;wBACA;oBACF;oBACA,IAAIkJ,kBAAkB,KAAKC,iBAAiBX,0BAA0B;wBACpExI;wBACA;oBACF;gBACF;YACF;YACA,IAAIjU,eAAesF,WAAW,GAAGpE,yBAAyB,MAAM;gBAC9DyS;gBACA;YACF;YACA,IAAI3T,eAAeyV,MAAM,EAAE;gBACzB9B;gBACA;YACF;YACA,IAAIpY,KAAKqV,GAAG,KAAK3P,sBAAsBJ,kBAAkB;gBACvDqb;YACF;QACF,GAAGpb;IACL;IACA,SAASuc;QACP9D;QACA,IAAIrZ,eAAe;YACjBA,cAAciT,KAAK,CAAC8F,OAAO,GAAG;YAC9B/Y,cAAciT,KAAK,CAACmK,aAAa,GAAG;QACtC;IACF;IACA,SAAS1I;QACPlb,QAAQC,GAAG,CAAC;QACZ+a;QACAwF;QACA9a,YAAY;QACZ4Y,iBAAiB;QACjB9Y,aAAa+F,KAAK,GAAG;QACrBoY;QACA,IAAI,EAACle,oBAAAA,8BAAAA,QAASoe,2BAA2B,GAAE;YACzCre,aAAaiU,KAAK,CAACgG,UAAU,GAAG;YAChCja,aAAaiU,KAAK,CAACqK,OAAO,GAAG;QAC/B;QACA,IAAIre,oBAAAA,8BAAAA,QAASoe,2BAA2B,EAAE;YACxC,IAAIre,aAAauW,MAAM,EAAE;gBACvB/b,QAAQC,GAAG,CAAC;gBACZuF,aAAama,IAAI,GAAGtG,KAAK,CAAC,SAAChU;oBACzBrF,QAAQqF,KAAK,CAAC,+DAA+DA;gBAC/E;YACF,OAAO;gBACLrF,QAAQC,GAAG,CAAC;YACd;QACF;QACA2J,KAAK;IACP;IACA,SAASoX;QACPhhB,QAAQC,GAAG,CAAC;QACZ+a;QACAwF;QACA9a,YAAY;QACZ4Y,iBAAiB;QACjB9Y,aAAa+F,KAAK,GAAG;QACrBoY;QACA,IAAI,EAACle,oBAAAA,8BAAAA,QAASoe,2BAA2B,GAAE;YACzCre,aAAaiU,KAAK,CAACgG,UAAU,GAAG;YAChCja,aAAaiU,KAAK,CAACqK,OAAO,GAAG;QAC/B;QACAla,KAAK;IACP;IACA,OAAO;QACLma,YAAAA,SAAAA;YACE/jB,QAAQC,GAAG,CAAC;YACZ,IAAI,CAACuG,eAAe;oBAalBhB;gBAZA,IAAMwe,YAAYjZ,SAAS4D,aAAa,CAAC;gBACzCqV,UAAUvK,KAAK,CAACC,QAAQ,GAAG;gBAC3BsK,UAAUvK,KAAK,CAACE,IAAI,GAAG;gBACvBqK,UAAUvK,KAAK,CAAC1D,GAAG,GAAG;gBACtBiO,UAAUvK,KAAK,CAACwK,KAAK,GAAG;gBACxBD,UAAUvK,KAAK,CAACyK,MAAM,GAAG;gBACzBF,UAAUvK,KAAK,CAAC8F,OAAO,GAAG;gBAC1ByE,UAAUvK,KAAK,CAAC0K,UAAU,GAAG;gBAC7BH,UAAUvK,KAAK,CAAC2K,cAAc,GAAG;gBACjCJ,UAAUvK,KAAK,CAACmK,aAAa,GAAG;gBAChCI,UAAUvK,KAAK,CAAC4K,MAAM,GAAG;gBACzBL,UAAUvK,KAAK,CAACI,eAAe,GAAG;iBAClCrU,8BAAAA,aAAa8e,aAAa,cAA1B9e,kDAAAA,4BAA4B2a,WAAW,CAAC6D;gBACxCxd,gBAAgBwd;YAClB;YACAxe,YAAY,CAACU,kBAAkB,GAAGM;YAClCoX;QACF;QACM2G,YAAN,SAAMA,WAAWhO,UAAU;;oBAenByC,KAEIwL,WAkDDnf;;;;4BAlETrF,QAAQC,GAAG,CAAC,iCAAiCsW;4BAC7C,IAAI7Q,WAAW;gCACb1F,QAAQiK,IAAI,CACV;gCAEF;;oCAAO7K,QAAQqlB,MAAM,CAAC,IAAI1N,MAAM;;4BAClC;4BACA,IAAI9P,WAAW;gCACb;;oCAAO7H,QAAQqlB,MAAM,CAAC,IAAI1N,MAAM;;4BAClC;4BACAnP,oBAAoB2O;4BACpBhO,4BAA4B,KAAK;4BACjCiC,UAAU;;;;;;;;;4BAEJwO;iCACAjS,aAAa9D,GAAG,CAACsT,aAAjBxP;;;;4BACIyd,YAAYzd,aAAazK,GAAG,CAACia;4BACnCxP,aAAaoG,MAAM,CAACoJ;4BACpB,IAAIiO,WAAW;gCACbxL;oCAAOwL;;4BACT;4BACAxkB,QAAQC,GAAG,CACT,gDACAsW;;;;;;4BAGI;;gCAAMkC,iBAAiBlC;;;4BAA7ByC,MAAM;;;4BAER,IAAI/R,WAAW;gCACb;;oCAAO7H,QAAQqlB,MAAM,CAAC,IAAI1N,MAAM;;4BAClC;4BACA,IAAI,CAACiC,IAAIxV,MAAM,IAAI+E,2BAA2B;gCAC5C,MAAM,IAAIwO,MAAMxO;4BAClB;4BACA,IAAI,CAACyQ,IAAIxV,MAAM,IAAIuE,wBAAwB,GAAG;gCAC5C/H,QAAQiK,IAAI,CAAC;gCACbO,UAAU,sBAAsB;oCAAEyO,gBAAgBlR;gCAAsB;gCACxE6B,KAAK;gCACL;;oCAAOxK,QAAQqlB,MAAM,CACnB,IAAI1N,MAAM;;4BAEd;4BACA,IAAI,CAACiC,IAAIxV,MAAM,EAAE;gCACfxD,QAAQiK,IAAI,CAAC;gCACbO,UAAU;gCACVZ,KAAK;gCACL;;oCAAOxK,QAAQqlB,MAAM,CAAC,IAAI1N,MAAM;;4BAClC;4BACAlQ,SAASmS;4BACTlS,WAAW;4BACXH,YAAYqS,GAAG,CAAC,EAAE;4BAClBpS,qBAAqB,KAAK;4BAC1B4D,UAAU,iBAAiB;gCACzB0K,SAAS8D,IAAIxV,MAAM;gCACnBkhB,WAAW1L,IAAIvV,GAAG,CAAC,SAACiI;2CAAOA,GAAG0K,QAAQ;;gCACtCuO,gBAAgB3L,IAAIvV,GAAG,CAAC,SAACiI;2CAAOA,GAAG6J,YAAY,CAAC7M,UAAU,CAAClF,MAAM;;4BACnE;4BACAwV,IAAI5M,OAAO,CAAC,SAACV,IAAIsD;gCACf,IAAItD,GAAG6J,YAAY,CAAC7M,UAAU,CAAClF,MAAM,KAAK,GAAG;oCAC3CgH,UAAU,2BAA2B;wCAAEoa,SAAS5V;wCAAO6V,aAAanZ,GAAGT,EAAE;oCAAC;gCAC5E;4BACF;4BACAjL,QAAQC,GAAG,CA1nEnB,AA2nEU,AAAC,oCAA4B+Y,IAAIxV,MAAM,EAAC,0BAAiBmD,sBAAAA,gCAAAA,UAAWwP,KAAK,EAAC,gBAAkC,OAApBxP,sBAAAA,gCAAAA,UAAWyP,QAAQ,EAAC;4BAE9G;;gCAAOhX,QAAQ0lB,OAAO;;;4BACfzf;4BACPrF,QAAQqF,KAAK,CAAC,uCAAuCA;4BACrDmF,UAAU,kBAAkB;gCAC1BsN,YAAY,EAAEzS,kBAAAA,4BAAAA,MAAO0S,OAAO;4BAC9B;4BACAnO,KAAK;4BACL;;gCAAOxK,QAAQqlB,MAAM,CAACpf;;;;;;;;YAE1B;;QACMsa,MAAN,SAAMA;;oBAgBIoF;;oBAfR,IAAI,CAACpe,WAAW;wBACd3G,QAAQiK,IAAI,CACV;wBAEF;;4BAAO7K,QAAQqlB,MAAM,CAAC,IAAI1N,MAAM;;oBAClC;oBACA/W,QAAQC,GAAG,CAAC;oBACZ,IAAI;wBACF,IAAI,CAACqG,gBAAgB;4BACnBA,iBAAiBiT;4BACjB/S,0BAAAA,oCAAAA,cAAe2Z,WAAW,CAAC7Z;4BAC3Bd,YAAY,CAACW,cAAc,GAAGG;wBAChC;wBACAyT;wBACA2E;wBACMqG,gBAAgBvf,aAAaO,MAAM;wBACzCH,iBAAiBrF,KAAKsF,GAAG,CACvB,GACAtF,KAAKuF,GAAG,CAAC,GAAGif,iBAAiBnf;wBAE/B,IAAI,EAACH,oBAAAA,8BAAAA,QAASoe,2BAA2B,GAAE;4BACzCre,aAAa6W,KAAK;4BAClBrc,QAAQC,GAAG,CAAC;wBACd,OAAO;4BACLD,QAAQC,GAAG,CAAC;wBACd;wBACAD,QAAQC,GAAG,CAAC;wBACZuF,aAAa+F,KAAK,GAAG;wBACrB7F,YAAY;wBACZ4Y,iBAAiB;wBACjB,IAAIhY,gBAAgB;4BAClBA,eAAeP,MAAM,GAAGxF,KAAKsF,GAAG,CAAC,GAAGtF,KAAKuF,GAAG,CAAC,GAAGF;4BAChDU,eAAeiF,KAAK,GAAG5F;4BACvB3F,QAAQC,GAAG,CACT,AAAC,wCAAwEqG,OAAjCA,eAAeP,MAAM,EAAC,aAAwDJ,OAA7CW,eAAeiF,KAAK,EAAC,0BAA8DwZ,OAAtCpf,oBAAmB,qBAAiC,OAAdof;wBAEhK;wBACA,IAAIve,eAAe;4BACjBA,cAAciT,KAAK,CAAC8F,OAAO,GAAG;4BAC9B/Y,cAAciT,KAAK,CAACmK,aAAa,GAAG;wBACtC;wBACAha,KAAK;wBACL,IAAI;4BACFqX;wBACF,EAAE,OAAO+D,WAAW;4BAClB,IAAI,CAAEle,CAAAA,WAAWD,OAAOrD,MAAM,GAAG,KAAKyX,oBAAmB,GAAI;gCAC3D,MAAM+J;4BACR;wBACF;wBACA;;4BAAO5lB,QAAQ0lB,OAAO;;oBACxB,EAAE,OAAOzf,OAAO;wBACdrF,QAAQqF,KAAK,CAAC,mCAAmCA;wBACjDmF,UAAU,eAAe;4BAAEsN,YAAY,EAAEzS,kBAAAA,4BAAAA,MAAO0S,OAAO;wBAAC;wBACxDiJ;wBACA;;4BAAO5hB,QAAQqlB,MAAM,CAACpf;;oBACxB;;;;;YACF;;QACAgX,OAAAA,SAAAA;YACE,IAAI,CAAC3W,aAAa,CAACY,gBAAgB;gBACjC;YACF;YACA,IAAI;gBACF,IAAIA,kBAAkB,CAACA,eAAeyV,MAAM,EAAE;oBAC5CzV,eAAe+V,KAAK;gBACtB;YACF,EAAE,OAAOhX,OAAO;gBACdrF,QAAQiK,IAAI,CAAC,mCAAmC5E;YAClD;QACF;QACAkX,QAAAA,SAAAA;YACE,IAAI,CAAC7W,aAAa,CAACY,gBAAgB;gBACjC;YACF;YACA,IAAI;gBACF,IAAIA,kBAAkBA,eAAeyV,MAAM,EAAE;oBAC3CzV,eAAeqZ,IAAI,GAAGtG,KAAK,CAAC,YAC5B;gBACF;YACF,EAAE,OAAOhU,OAAO;gBACdrF,QAAQiK,IAAI,CAAC,oCAAoC5E;YACnD;QACF;QACM4f,MAAN,SAAMA;;oBAUEC;;oBATNllB,QAAQC,GAAG,CAAC;oBACZ,IAAIyF,aAAaiB,aAAa,CAACyC,cAAcV,UAAU,EAAE;wBACvD8B,UAAU;oBACZ;oBACAwQ;oBACA+B;oBACAyD;oBACA9a,YAAY;oBACZ4Y,iBAAiB;oBACX4G,qBAAqB1f,aAAa+F,KAAK;oBAC7C/F,aAAa+F,KAAK,GAAG5F;oBACrBH,aAAaO,MAAM,GAAGxF,KAAKsF,GAAG,CAAC,GAAGtF,KAAKuF,GAAG,CAAC,GAAGF;oBAC9C5F,QAAQC,GAAG,CACT,AAAC,8CAAsE0F,OAAzBuf,oBAAmB,QAAqC1f,OAA/BG,oBAAmB,cAAgC,OAApBH,aAAaO,MAAM;oBAE3H4d;oBACAne,aAAaiU,KAAK,CAACgG,UAAU,GAAG;oBAChCja,aAAaiU,KAAK,CAACqK,OAAO,GAAG;oBAC7B,IAAIre,oBAAAA,8BAAAA,QAASoe,2BAA2B,EAAE;wBACxC,IAAIre,aAAauW,MAAM,EAAE;4BACvB/b,QAAQC,GAAG,CAAC;4BACZuF,aAAama,IAAI,GAAGtG,KAAK,CAAC,SAAChU;gCACzBrF,QAAQqF,KAAK,CAAC,uEAAuEA;4BACvF;wBACF;oBACF;oBACAsB,YAAY,KAAK;oBACjBC,qBAAqB,KAAK;oBAC1BC;oBACAC,WAAW;;;;;YACb;;QACAgZ,SAAAA,SAAAA;YACE9f,QAAQC,GAAG,CAAC;YACZ,IAAIyF,aAAaiB,aAAa,CAACyC,cAAcV,UAAU,EAAE;gBACvD8B,UAAU;YACZ;YACAwQ;YACA+B;YACA9V,YAAY;YACZsB,4BAA4B;gBACvB,kCAAA,2BAAA;;gBAAL,QAAK,YAAoBwB,MAAMrN,IAAI,CAAC4L,yCAA/B,SAAA,6BAAA,QAAA,yBAAA,iCAAqD;oBAArD,IAAMoO,aAAN;oBACHA,WAAWO,KAAK;gBAClB;;gBAFK;gBAAA;;;yBAAA,6BAAA;wBAAA;;;wBAAA;8BAAA;;;;YAGL3O,oBAAoB6c,KAAK;YACzB3E;gBACK,mCAAA,4BAAA;;gBAAL,QAAK,aAAmBtZ,oCAAnB,UAAA,8BAAA,SAAA,0BAAA,kCAAoC;oBAApC,IAAM2F,YAAN;oBACHG,aAAaH;gBACf;;gBAFK;gBAAA;;;yBAAA,8BAAA;wBAAA;;;wBAAA;8BAAA;;;;YAGL3F,kBAAkB,EAAE;YACpBxB,YAAY;YACZ4Y,iBAAiB;YACjB9Y,aAAa+F,KAAK,GAAG5F;YACrBH,aAAaO,MAAM,GAAGxF,KAAKsF,GAAG,CAAC,GAAGtF,KAAKuF,GAAG,CAAC,GAAGF;YAC9C8W;YACA0B;YACAuF;YACAhd,YAAY,KAAK;YACjBC,qBAAqB,KAAK;YAC1BC,SAAS,EAAE;YACXC,WAAW;YACXd,UAAUmf,KAAK;YACfpe,aAAaoe,KAAK;YAClBne,cAAcme,KAAK;QACrB;QACAC,aAAAA,SAAAA;YACE,OAAO1f;QACT;QACA2f,kBAAAA,SAAAA,iBAAiB1Z,OAAO;YACtB9D,gBAAgB,mBAAK8D;QACvB;QACA2Z,qBAAAA,SAAAA;gBAAoB1iB,SAAAA,iEAAS;YAC3B,IAAI0F,oBAAoBid,IAAI,KAAK,GAAG;YACpChd,4BAA4B3F;gBACvB,kCAAA,2BAAA;;gBAAL,QAAK,YAAoBmH,MAAMrN,IAAI,CAAC4L,yCAA/B,SAAA,6BAAA,QAAA,yBAAA,iCAAqD;oBAArD,IAAMoO,aAAN;oBACHA,WAAWO,KAAK;gBAClB;;gBAFK;gBAAA;;;yBAAA,6BAAA;wBAAA;;;wBAAA;8BAAA;;;;YAGL3O,oBAAoB6c,KAAK;QAC3B;QACAK,QAAAA,SAAAA,OAAO5X,KAAK,EAAEC,MAAM;YAClB7N,QAAQC,GAAG,CAAC,AAAC,6BAAqC4N,OAATD,OAAM,KAAU,OAAPC;YAClD,IAAIrH,eAAe;gBACjBA,cAAciT,KAAK,CAAC7L,KAAK,GAAG,AAAC,GAAQ,OAANA,OAAM;gBACrCpH,cAAciT,KAAK,CAAC5L,MAAM,GAAG,AAAC,GAAS,OAAPA,QAAO;YACzC;YACA,IAAIvH,gBAAgB;gBAClBA,eAAemT,KAAK,CAAC7L,KAAK,GAAG,AAAC,GAAQ,OAANA,OAAM;gBACtCtH,eAAemT,KAAK,CAAC5L,MAAM,GAAG,AAAC,GAAS,OAAPA,QAAO;YAC1C;QACF;QACA4T,IAAAA,SAAAA,GAAG5X,KAAK,EAAE4b,QAAQ;YAChB,IAAI,CAACzf,UAAU/C,GAAG,CAAC4G,QAAQ7D,UAAUzE,GAAG,CAACsI,OAAO,aAAa,GAAG,IAAIvK;YACpE0G,UAAU1J,GAAG,CAACuN,OAAO+C,GAAG,CAAC6Y;QAC3B;QACAC,KAAAA,SAAAA,IAAI7b,KAAK,EAAE4b,QAAQ;gBACjBzf;aAAAA,iBAAAA,UAAU1J,GAAG,CAACuN,oBAAd7D,qCAAAA,eAAsBmH,MAAM,CAACsY;QAC/B;QACAE,0BAAAA,SAAAA,yBAAyBpa,KAAK,EAAExF,MAAM;YACpC,IAAM6f,aAAa,OAAO7f,WAAW,YAAY,CAACnF,OAAOilB,KAAK,CAAC9f,UAAUxF,KAAKsF,GAAG,CAAC,GAAGtF,KAAKuF,GAAG,CAAC,GAAGC,WAAWH;YAC5G5F,QAAQC,GAAG,CACT,AAAC,2DAAmFsL,OAAzB5F,oBAAmB,QAAwBC,OAAlB2F,OAAM,cAAiCqa,OAArBhgB,gBAAe,QAAiB,OAAXggB,YAAW;YAExIjgB,qBAAqB4F;YACrB3F,iBAAiBggB;QACnB;QACAE,uBAAAA,SAAAA;YACE,OAAOngB;QACT;QACAogB,mBAAAA,SAAAA;YACE,OAAOngB;QACT;QACAogB,aAAAA,SAAAA,YAAYjgB,MAAM;YAChB,IAAIO,kBAAkBZ,WAAW;gBAC/B,IAAMugB,UAAU1lB,KAAKsF,GAAG,CAAC,GAAGtF,KAAKuF,GAAG,CAAC,GAAGC;gBACxCO,eAAeP,MAAM,GAAGkgB;gBACxB,IAAMpK,iBAAiB5d,UAAU4d,cAAc;gBAC/C,IAAIoK,UAAU,KAAKzd,wBAAwBqT,kBAAkB,CAACA,eAAeC,QAAQ,EAAE;oBACrFtR,UAAU,kCAAkC;wBAAE0b,iBAAiBD;oBAAQ;oBACvE;gBACF;gBACA3f,eAAeiF,KAAK,GAAG0a,YAAY;YACrC;QACF;QACAE,aAAAA,SAAAA;YACE,IAAI7f,kBAAkBZ,WAAW;gBAC/B,OAAOY,eAAeP,MAAM;YAC9B;YACA,OAAO;QACT;QACAqgB,iBAAAA,SAAAA;YACE5gB,aAAaiU,KAAK,CAACqK,OAAO,GAAG;YAC7Bte,aAAaiU,KAAK,CAACgG,UAAU,GAAG;YAChC,IAAI,CAACjZ,eAAe;oBAalBhB;gBAZA,IAAMwe,YAAYjZ,SAAS4D,aAAa,CAAC;gBACzCqV,UAAUvK,KAAK,CAACC,QAAQ,GAAG;gBAC3BsK,UAAUvK,KAAK,CAACE,IAAI,GAAG;gBACvBqK,UAAUvK,KAAK,CAAC1D,GAAG,GAAG;gBACtBiO,UAAUvK,KAAK,CAACwK,KAAK,GAAG;gBACxBD,UAAUvK,KAAK,CAACyK,MAAM,GAAG;gBACzBF,UAAUvK,KAAK,CAAC8F,OAAO,GAAG;gBAC1ByE,UAAUvK,KAAK,CAAC0K,UAAU,GAAG;gBAC7BH,UAAUvK,KAAK,CAAC2K,cAAc,GAAG;gBACjCJ,UAAUvK,KAAK,CAACmK,aAAa,GAAG;gBAChCI,UAAUvK,KAAK,CAAC4K,MAAM,GAAG;gBACzBL,UAAUvK,KAAK,CAACI,eAAe,GAAG;iBAClCrU,8BAAAA,aAAa8e,aAAa,cAA1B9e,kDAAAA,4BAA4B2a,WAAW,CAAC6D;gBACxCxd,gBAAgBwd;YAClB;YACA,IAAIxd,eAAe;gBACjBA,cAAciT,KAAK,CAAC8F,OAAO,GAAG;gBAC9B/Y,cAAciT,KAAK,CAACmK,aAAa,GAAG;YACtC;QACF;QACAyC,iBAAAA,SAAAA;YACE,IAAI7f,iBAAiB,CAACd,WAAW;gBAC/Bc,cAAciT,KAAK,CAAC8F,OAAO,GAAG;gBAC9B/Y,cAAciT,KAAK,CAACmK,aAAa,GAAG;YACtC;YACA,IAAI,CAACle,WAAW;gBACdF,aAAaiU,KAAK,CAACgG,UAAU,GAAG;gBAChCja,aAAaiU,KAAK,CAACqK,OAAO,GAAG;YAC/B;QACF;QACAwC,qBAAAA,SAAAA;YACE,OAAO3f,sBAAAA,gCAAAA,UAAWyP,QAAQ;QAC5B;QACAmQ,eAAAA,SAAAA;YACE,OAAO5f,sBAAAA,gCAAAA,UAAWsE,EAAE;QACtB;QACAub,eAAAA,SAAAA;YACE,OAAO3f,OAAOrD,MAAM;QACtB;QACAijB,uBAAAA,SAAAA;YACE,OAAO5f,OAAO6f,MAAM,CAClB,SAAC5lB,OAAO4K;uBAAO5K,QAAS4K,CAAAA,GAAG0K,QAAQ,GAAG,IAAI1K,GAAG0K,QAAQ,GAAG,MAAM,CAAA;eAC9D;QAEJ;IACF;AACF;AAEA,sBAAsB;AACtB,IAAIuQ,wBAAwB;IAC1B;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AACD,SAASC,eAAepkB,QAAQ;IAC9B,IAAM+J,OAAO/J,SAASO,OAAO,CAAC,OAAO,IAAIA,OAAO,CAAC,OAAO,IAAIwH,WAAW;IACvE,IAAI,CAACgC,MAAM,OAAO;IAClB,IAAIA,KAAKnI,QAAQ,CAAC,aAAamI,KAAKnI,QAAQ,CAAC,eAAe,OAAO;IACnE,OAAOuiB,sBAAsBE,IAAI,CAAC,SAACC;eAAYA,QAAQzoB,IAAI,CAACkO;;AAC9D;AACA,SAASwa,aAAaC,MAAM;IAC1B,IAAI,CAACA,QAAQ,OAAOA,mBAAAA,oBAAAA,SAAU;IAC9B,IAAIlkB;IACJ,IAAI;QACFA,MAAM,IAAIP,IAAIykB;IAChB,EAAE,eAAM;QACN,OAAOA;IACT;IACA,IAAIlkB,IAAI+L,QAAQ,KAAK,WAAW/L,IAAI+L,QAAQ,KAAK,UAAU;QACzD,OAAOmY;IACT;IACA,IAAI,CAACJ,eAAe9jB,IAAIN,QAAQ,GAAG;QACjC,OAAOwkB;IACT;IACA,IAAMC,YAAYnkB,IAAIokB,QAAQ,CAACnkB,OAAO,CAAC,WAAW,QAAQ;IAC1D,OAAO,AAAC,UAAmB,OAAVkkB;AACnB;AAEA,iBAAiB;AACjB,IAAIE,cAAc;AAClB,IAAIC;AACJ,IAAIC;AACJ,IAAIC;AACJ,SAASC;QAC8BpZ;IAArC,IAAI,OAAOA,WAAW,iBAAeA,eAAAA,OAAOqZ,IAAI,cAAXrZ,mCAAAA,aAAasZ,GAAG,GAAE;QACrD,OAAOroB,QAAQ0lB,OAAO;IACxB;IACA,IAAIwC,iBAAiB,OAAOA;IAC5BA,kBAAkB,IAAIloB,QAAQ,SAAC0lB,SAASL;QACtC,IAAMiD,WAAW3c,SAASmJ,aAAa,CACrC;QAEF,IAAIwT,UAAU;gBACRvZ;YAAJ,KAAIA,eAAAA,OAAOqZ,IAAI,cAAXrZ,mCAAAA,aAAasZ,GAAG,EAAE;gBACpB3C;gBACA;YACF;YACA,IAAM6C,UAAUva,WACd;uBAAMqX,OAAO,IAAI1N,MAAM;eACvB;YAEF2Q,SAASjL,gBAAgB,CAAC,QAAQ;gBAChCzP,aAAa2a;gBACb7C;YACF;YACA4C,SAASjL,gBAAgB,CAAC,SAAS;gBACjCzP,aAAa2a;gBACblD,OAAO,IAAI1N,MAAM;YACnB;YACA;QACF;QACA,IAAM6Q,SAAS7c,SAAS4D,aAAa,CAAC;QACtCiZ,OAAOva,GAAG,GAAG8Z;QACbS,OAAOC,KAAK,GAAG;QACfD,OAAOE,YAAY,CAAC,YAAY;QAChCF,OAAO3a,MAAM,GAAG;mBAAM6X;;QACtB8C,OAAO1a,OAAO,GAAG;mBAAMuX,OAAO,IAAI1N,MAAM;;QACxChM,SAASgd,IAAI,CAAC5H,WAAW,CAACyH;IAC5B;IACA,OAAON;AACT;AACA,SAASU,uBAAuBC,YAAY;IAC1C,IAAIb,gBAAgBC,6BAA6BY,cAAc;QAC7D,OAAOb;IACT;IACA,IAAMI,OAAOrZ,OAAOqZ,IAAI;IACxB,IAAMU,kBAAkB,IAAIV,KAAKC,GAAG,CAACU,eAAe;IACpDD,gBAAgBD,YAAY,GAAGA;IAC/Bb,eAAe,IAAII,KAAKC,GAAG,CAACW,WAAW,CAACF;IACxCb,2BAA2BY;IAC3B,OAAOb;AACT;AACA,SAASiB;IACP,IAAIC,eAAe;IACnB,IAAIC;IACJ,OAAO;QACCC,eAAN,SAAMA;;oBAAc/iB,SAGsBA,uBAGbA,yBACCA,0BACHA,uBACMA,6BANvBgjB,QACAjB,MACAkB,SAsCAC,SAKCtjB;;;;;4BAhDSI,UAAAA,oEAAU,CAAC;;;;;;;;;4BAE3B;;gCAAM8hB;;;4BAAN;4BACMkB,SAAST,wBAAuBviB,wBAAAA,QAAQwiB,YAAY,cAApBxiB,mCAAAA,wBAAwB;4BACxD+hB,OAAOrZ,OAAOqZ,IAAI;4BAClBkB,UAAU,IAAIlB,KAAKC,GAAG,CAACmB,YAAY;4BACzCF,QAAQG,cAAc,IAAGpjB,0BAAAA,QAAQojB,cAAc,cAAtBpjB,qCAAAA,0BAA0B;4BACnDijB,QAAQI,eAAe,IAAGrjB,2BAAAA,QAAQqjB,eAAe,cAAvBrjB,sCAAAA,2BAA2B;4BACrDijB,QAAQK,YAAY,IAAGtjB,wBAAAA,QAAQsjB,YAAY,cAApBtjB,mCAAAA,wBAAyBijB,QAAQI,eAAe,GAAG,IAAI;4BAC9EJ,QAAQM,kBAAkB,IAAGvjB,8BAAAA,QAAQujB,kBAAkB,cAA1BvjB,yCAAAA,8BAA8B;4BAC3DijB,QAAQO,cAAc,GAAGlC,aACvBthB,QAAQwjB,cAAc,IAAK,CAAA,OAAO9a,WAAW,cAAcA,OAAOpC,QAAQ,CAACC,IAAI,GAAG,EAAC;4BAErF0c,QAAQQ,cAAc,GAAG;4BACzBR,QAAQS,UAAU,GAAG;4BACrBT,QAAQU,aAAa,GAAG;4BACxBV,QAAQW,sBAAsB,GAAG;4BACjCX,QAAQ5lB,GAAG,GAAGikB,aACZthB,QAAQwjB,cAAc,IAAK,CAAA,OAAO9a,WAAW,cAAcA,OAAOpC,QAAQ,CAACC,IAAI,GAAG,EAAC;4BAErF0c,QAAQrO,UAAU,GAAG5U,QAAQ4U,UAAU,IAAI;4BAC3CqO,QAAQpO,WAAW,GAAG7U,QAAQ6U,WAAW,IAAI;4BAC7C,IAAI7U,QAAQ6jB,IAAI,EAAEZ,QAAQY,IAAI,GAAG7jB,QAAQ6jB,IAAI;4BAC7C,IAAI7jB,QAAQ8jB,SAAS,EAAEb,QAAQa,SAAS,GAAG9jB,QAAQ8jB,SAAS;4BAC5DvpB,QAAQC,GAAG,CACT,4CACAupB,KAAKC,SAAS,CAAC;gCACbZ,gBAAgBH,QAAQG,cAAc;gCACtCC,iBAAiBJ,QAAQI,eAAe;gCACxCC,cAAcL,QAAQK,YAAY;gCAClCC,oBAAoBN,QAAQM,kBAAkB;gCAC9CC,gBAAgBP,QAAQO,cAAc;gCACtCC,gBAAgBR,QAAQQ,cAAc;gCACtCC,YAAYT,QAAQS,UAAU;gCAC9BC,eAAeV,QAAQU,aAAa;gCACpCC,wBAAwBX,QAAQW,sBAAsB;gCACtDvmB,KAAK4lB,QAAQ5lB,GAAG;gCAChBuX,YAAYqO,QAAQrO,UAAU;gCAC9BC,aAAaoO,QAAQpO,WAAW;gCAChCgP,MAAMZ,QAAQY,IAAI;gCAClBC,WAAWb,QAAQa,SAAS;4BAC9B,GAAG,MAAM;4BAEK;;gCAAMd,OAAOiB,gBAAgB,CAAChB;;;4BAAxCC,UAAU;4BAChBJ,sBAAsBI;4BACtBL,eAAeK,QAAQgB,QAAQ;4BAC/B3pB,QAAQC,GAAG,CAAC;4BACZ;;gCAAOqoB;;;4BACAjjB;4BACPrF,QAAQiK,IAAI,CAAC,mCAAmC5E;4BAChDijB,eAAe;4BACfC,sBAAsB,KAAK;4BAC3B;;gCAAO;;;;;;;;YAEX;;QACAqB,iBAAAA,SAAAA;YACE,OAAOtB;QACT;QACAuB,aAAAA,SAAAA,YAAYtT,UAAU;YACpB,IAAI,CAAC+R,gBAAgB,CAAC/R,YAAY,OAAOA;YACzC,IAAI;gBACF,IAAMzT,MAAM,IAAIP,IAAIgU;gBACpBzT,IAAIuH,YAAY,CAAC8C,MAAM,CAAC;gBACxBrK,IAAIuH,YAAY,CAAC9I,GAAG,CAAC,QAAQ+mB;gBAC7B,OAAOxlB,IAAI3D,QAAQ;YACrB,EAAE,eAAM;gBACN,IAAIoP,OAAOgI,WAAWxT,OAAO,CAAC,qBAAqB,IAAIA,OAAO,CAAC,SAAS;gBACxE,IAAM+mB,MAAMvb,KAAKkC,QAAQ,CAAC,OAAO,MAAM;gBACvC,OAAO,AAAC,GAASqZ,OAAPvb,MAAkBvL,OAAX8mB,KAAI,SAAwC,OAAjC9mB,mBAAmBslB;YACjD;QACF;QACAyB,mBAAAA,SAAAA;YACE,IAAI;gBACFxB,gCAAAA,0CAAAA,oBAAqBwB,iBAAiB;YACxC,EAAE,eAAM,CACR;QACF;QACAC,iBAAAA,SAAAA;YACE,IAAI;gBACFzB,gCAAAA,0CAAAA,oBAAqByB,eAAe;YACtC,EAAE,eAAM,CACR;QACF;QACAC,aAAAA,SAAAA;YACE,IAAI;gBACF1B,gCAAAA,0CAAAA,oBAAqB0B,WAAW;YAClC,EAAE,eAAM,CACR;QACF;QACAC,aAAAA,SAAAA,YAAYrgB,KAAK;YACf,IAAI;gBACF0e,gCAAAA,0CAAAA,oBAAqB2B,WAAW,CAACrgB;YACnC,EAAE,eAAM,CACR;QACF;QACAsgB,OAAAA,SAAAA;YACE7B,eAAe;YACfC,sBAAsB,KAAK;QAC7B;IACF;AACF;AAEA,8BAA8B;AAC9B,IAAI6B,iCAAiC;IACnCC,SAAS;IACTC,SAAS;AACX;AACA,IAAIC,uBAAuB,mBACtBH;AAEL,SAASI;IACP,OAAOD,qBAAqBF,OAAO,KAAK;AAC1C;AACA,SAASI,uBAAuBH,OAAO;IACrC,OAAOA,QAAQvnB,OAAO,CAAC,QAAQ;AACjC;AACA,SAAS2nB,uBAAuBC,OAAO;IACrC,IAAMpc,OAAOkc,uBAAuBF,qBAAqBD,OAAO;IAChE,IAAIK,YAAY,eAAe;QAC7B,OAAO,AAAC,GAAO,OAALpc,MAAK;IACjB;IACA,OAAO,AAAC,GAAO,OAALA,MAAK;AACjB;AACA,SAAeqc,qBAAqBC,UAAU,EAAEF,OAAO,EAAEG,IAAI;;YAKnDhU,UAeCzR;;;;oBAnBT,IAAI,CAACmlB,6BAA6B,CAACK,YAAY;wBAC7C;;4BAAO;;oBACT;;;;;;;;;oBAEmB;;wBAAMzT,MAAMsT,uBAAuBC,UAAU;4BAC5DI,QAAQ;4BACRzT,SAAS;gCACP,gBAAgB;gCAChB0T,eAAe,AAAC,eAAyB,OAAXH;4BAChC;4BACAC,MAAMtB,KAAKC,SAAS,CAACqB;wBACvB;;;oBAPMhU,WAAW;oBAQjB,IAAI,CAACA,SAASa,EAAE,EAAE;wBAChB3X,QAAQiK,IAAI,CACV,AAAC,mDAA0E0gB,OAAxB7T,SAASY,MAAM,EAAC,UAAgB,OAARiT;wBAE7E;;4BAAO;;oBACT;oBACA;;wBAAO;;;oBACAtlB;oBACPrF,QAAQiK,IAAI,CACV,AAAC,qDAA4D,OAAR0gB,SAAQ,MAC7DtlB;oBAEF;;wBAAO;;;;;;;;IAEX;;AAEA,sCAAsC;AACtC,IAAI4lB,0BAA0B;AAC9B,IAAIC,wBAAwB;AAC5B,IAAIC,yBAAyB;IAC3B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AACD,IAAIC,mBAAmB,aAAa,GAAG,IAAI9rB,IAAI;IAAC;IAAQ;CAAO;AAC/D,SAAS+rB,8BAA8BC,KAAK;QAODC;IANzC,IAAMC,gBAAgBC;IACtB,IAAMC,iBAAiBC;IACvB,IAAMC,eAAeJ,cAAcrpB,QAAQ,IAAKmpB,CAAAA,QAAQO,uBAAuB,KAAK,CAAA,KAAMH,eAAevpB,QAAQ;IACjH,IAAIA,WAAWypB;IACf,IAAIxpB,eAAeopB,cAAcppB,YAAY,IAAI0pB,iBAAiB,mBAAmBA,iBAAiB,aAAaJ,eAAetpB,YAAY,IAAI2pB;IAClJ,IAAMR,cAAcC,cAAcrpB,QAAQ,GAAGqpB,cAAcnpB,eAAe,GAAGqpB,eAAerpB,eAAe;IAC3G,IAAIA,kBAAkBF,YAAY,QAAOopB,OAAAA,wBAAAA,yBAAAA,cAAeS,yCAAfT,kBAAAA,OAA8C,QAAQ,KAAK;IACpG,IAAI,CAACppB,YAAYmpB,OAAO;QACtB,IAAMW,OAAOC,sBAAsBhB;QACnC,IAAIe,MAAM;gBAGUV;YAFlBppB,WAAW8pB;YACX7pB,eAAe;YACfC,mBAAkBkpB,QAAAA,wBAAAA,yBAAAA,cAAeS,yCAAfT,mBAAAA,QAA8C;QAClE;IACF;IACA,IAAMY,iBAAiBC,sBAAsBd;IAC7C,IAAIA,OAAO;QACT,OAAO;YACLA,OAAO;YACP/B,WAAW8C;WACRlqB,WAAW;YAAEA,UAAAA;QAAS,IAAI,CAAC,GAC3BA,YAAYC,eAAe;YAAEA,cAAAA;QAAa,IAAI,CAAC,GAC/CD,YAAYE,mBAAmB,OAAO;YAAEA,iBAAAA;QAAgB,IAAI,CAAC;YAChE8pB,gBAAAA;;IAEJ;IACA,OAAO;QACLb,OAAO;OACJnpB,WAAW;QAAEA,UAAAA;IAAS,IAAI,CAAC,GAC3BA,YAAYC,eAAe;QAAEA,cAAAA;IAAa,IAAI,CAAC,GAC/CD,YAAYE,mBAAmB,OAAO;QAAEA,iBAAAA;IAAgB,IAAI,CAAC;QAChE8pB,gBAAAA;;AAEJ;AACA,IAAIG,mBAAmB;IACrBC,eAAe;IACfC,YAAY;IACZC,SAAS;IACTC,QAAQ;IACRC,cAAc;IACdC,cAAc;IACdC,aAAa;AACf;AACA,IAAIC,2BAA2B;IAC7BC,cAAcT,iBAAiBC,aAAa;IAC5CS,YAAYV,iBAAiBE,UAAU;IACvCS,QAAQX,iBAAiBE,UAAU;IACnCU,OAAOZ,iBAAiBE,UAAU;IAClCW,SAASb,iBAAiBG,OAAO;IACjCW,IAAId,iBAAiBG,OAAO;IAC5BY,QAAQf,iBAAiBI,MAAM;IAC/BY,KAAKhB,iBAAiBK,YAAY;IAClCY,IAAIjB,iBAAiBK,YAAY;IACjCa,aAAalB,iBAAiBK,YAAY;IAC1Cc,SAASnB,iBAAiBK,YAAY;IACtC3sB,SAASssB,iBAAiBM,YAAY;IACtCc,aAAapB,iBAAiBM,YAAY;IAC1Ce,KAAKrB,iBAAiBO,WAAW;IACjCe,WAAWtB,iBAAiBO,WAAW;AACzC;AACA,IAAIgB,iBAAiB;AACrB,IAAIC,kBAAkB;AACtB,IAAIC,kBAAkB;AACtB,IAAIC,mBAAmB;AACvB,SAAS5B,sBAAsBd,KAAK;IAClC,IAAM2C,WAAWC,2BAA2B5C;IAC5C,IAAI2C,YAAY,MAAM,OAAOA;IAC7B,OAAOE,oBAAoB7C;AAC7B;AACA,SAAS6C,oBAAoB7C,KAAK;IAChC,IAAM8C,WAAW9C,QAAQgB,iBAAiBK,YAAY,GAAGL,iBAAiBG,OAAO;IACjF,IAAI,OAAOxuB,cAAc,aAAa,OAAOmwB;IAC7C,IAAMxwB,KAAKK,UAAUG,SAAS,IAAI;IAClC,IAAMiwB,iBAAiBpwB,UAAUowB,cAAc,IAAI;IACnD,IAAIR,eAAexvB,IAAI,CAACT,KAAK,OAAO0uB,iBAAiBO,WAAW;IAChE,IAAIiB,gBAAgBzvB,IAAI,CAACT,KAAK,OAAO0uB,iBAAiBM,YAAY;IAClE,IAAImB,gBAAgB1vB,IAAI,CAACT,OAAO,CAAC,UAAUS,IAAI,CAACT,KAAK;QACnD,OAAO0uB,iBAAiBK,YAAY;IACtC;IACA,IAAIqB,iBAAiB3vB,IAAI,CAACT,KAAK,OAAO0uB,iBAAiBC,aAAa;IACpE,IAAI,QAAQluB,IAAI,CAACT,OAAO,aAAaS,IAAI,CAACT,OAAOywB,iBAAiB,GAAG;QACnE,OAAO/B,iBAAiBI,MAAM;IAChC;IACA,IAAI,eAAeruB,IAAI,CAACT,KAAK,OAAO0uB,iBAAiBE,UAAU;IAC/D,IAAI,WAAWnuB,IAAI,CAACT,KAAK;QACvB,IAAI,UAAUS,IAAI,CAACT,KAAK,OAAO0uB,iBAAiBE,UAAU;QAC1D,IAAI6B,mBAAmB,GAAG,OAAO/B,iBAAiBO,WAAW;QAC7D,OAAOP,iBAAiBI,MAAM;IAChC;IACA,IAAI,mCAAmCruB,IAAI,CAACT,KAAK,OAAO0uB,iBAAiBE,UAAU;IACnF,OAAO4B;AACT;AACA,SAASF,2BAA2B5C,KAAK;IACvC,IAAI,OAAOnd,WAAW,aAAa,OAAO,KAAK;IAC/C,IAAM7D,OAAO;QAAC;QAAO;KAAiB;IACtC,IAAMgkB,aAAaC,wBAAwBpgB,OAAOqgB,kBAAkB;IACpE,IAAIF,cAAc,MAAM,OAAOA;QAC1B,kCAAA,2BAAA;;QAAL,QAAK,YAAgBG,6CAAhB,SAAA,6BAAA,QAAA,yBAAA,iCAA0C;YAA1C,IAAMlb,SAAN;gBACE,mCAAA,4BAAA;;gBAAL,QAAK,aAAajJ,yBAAb,UAAA,8BAAA,SAAA,0BAAA,kCAAmB;oBAAnB,IAAMzN,MAAN;oBACH,IAAMM,QAAQoW,mBAAAA,6BAAAA,MAAQ,CAAC1W,IAAI;oBAC3B,IAAM6xB,aAAaH,wBACjB,OAAOpxB,UAAU,aAAawxB,SAASxxB,OAAOoW,UAAUpW;oBAE1D,IAAIuxB,cAAc,MAAM,OAAOA;gBACjC;;gBANK;gBAAA;;;yBAAA,8BAAA;wBAAA;;;wBAAA;8BAAA;;;;QAOP;;QARK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IASL,IAAI,CAACpD,OAAO,OAAO,KAAK;IACxB,gBAAkB,QAAA;QAAC;QAAkB;KAAM,OAAzB,mBAA2B;YAAlCzuB,OAAO;QAChB,IAAM6xB,cAAaH,wBAAwBzC,iBAAiBjvB;QAC5D,IAAI6xB,eAAc,MAAM,OAAOA;IACjC;IACA,OAAO,KAAK;AACd;AACA,SAASH,wBAAwBpxB,KAAK;IACpC,IAAI,OAAOA,UAAU,UAAU;QAC7B,OAAOyD,OAAOguB,SAAS,CAACzxB,UAAUA,SAAS,KAAKA,SAAS,IAAIA,QAAQ,KAAK;IAC5E;IACA,IAAI,OAAOA,UAAU,UAAU,OAAO,KAAK;IAC3C,IAAMgH,UAAUhH,MAAMmG,IAAI;IAC1B,IAAI,UAAUjF,IAAI,CAAC8F,UAAU,OAAOrG,SAASqG,SAAS;IACtD,OAAO2oB,wBAAwB,CAAC3oB,QAAQoG,WAAW,GAAGxH,OAAO,CAAC,WAAW,IAAI;AAC/E;AACA,SAAS4rB,SAAS3kB,EAAE,EAAE6kB,OAAO;IAC3B,IAAI;QACF,OAAO7kB,GAAGlN,IAAI,CAAC+xB;IACjB,EAAE,eAAM;QACN,OAAO,KAAK;IACd;AACF;AACA,SAAS9C;IACP,IAAI,OAAO9tB,cAAc,aAAa;QACpC,OAAO,KAAK;IACd;IACA,IAAML,KAAKK,UAAUG,SAAS;IAC9B,IAAI,QAAQC,IAAI,CAACT,KAAK,OAAO;IAC7B,IAAI,iBAAiBS,IAAI,CAACT,KAAK,OAAO;IACtC,IAAI,oBAAoBS,IAAI,CAACT,KAAK,OAAO;IACzC,IAAI,sBAAsBS,IAAI,CAACT,KAAK,OAAO;IAC3C,IAAI,oCAAoCS,IAAI,CAACT,KAAK,OAAO;IACzD,IAAI,qBAAqBS,IAAI,CAACT,KAAK,OAAO;IAC1C,IAAI,oBAAoBS,IAAI,CAACT,KAAK,OAAO;IACzC,OAAO,KAAK;AACd;AACA,SAASkxB,yBAAyBC,OAAO,EAAEC,WAAW;IACpD,IAAI,CAACD,WAAW,CAACC,aAAa,OAAO;IACrC,IAAMC,MAAMF,QAAQxkB,WAAW;IAC/B,IAAM2kB,UAAUF,YAAYzkB,WAAW;IACvC,IAAI0kB,QAAQC,SAAS,OAAO;IAC5B,OAAO9D,iBAAiBnoB,GAAG,CAACgsB,QAAQ7D,iBAAiBnoB,GAAG,CAACisB;AAC3D;AACA,SAASC;QAAsBC,gBAAAA,iEAAgB;IAC7C,IAAM5D,gBAAgBC;IACtB,IAAMC,iBAAiBC;IACvB,IAAMxpB,WAAWqpB,cAAcrpB,QAAQ,IAAKitB,CAAAA,gBAAgBvD,uBAAuB,KAAK,CAAA,KAAMH,eAAevpB,QAAQ;IACrH,IAAI,CAACA,YAAYktB,mBAAmBltB,aAAamtB,aAAantB,WAAW;QACvE,OAAO,KAAK;IACd;IACA,OAAOA;AACT;AACA,SAAS+pB,sBAAsBqD,UAAU;IACvC,IAAI,OAAOphB,WAAW,aAAa;QACjC,OAAO,KAAK;IACd;IACA,IAAMuZ,WAAW8H,iBAAiBD;IAClC,IAAI7H,UAAU;QACZ+H,kBAAkBF,YAAY7H;QAC9B,OAAOA;IACT;IACA,IAAMzc,KAAKykB;IACXD,kBAAkBF,YAAYtkB;IAC9B,OAAOA;AACT;AACA,SAASohB;IACP,IAAM3E,WAAW8H,iBAAiBvE;IAClC,IAAIvD,UAAU;QACZ+H,kBAAkBxE,yBAAyBvD;QAC3C,OAAOA;IACT;IACA,IAAM6B,YAAYmG;IAClBD,kBAAkBxE,yBAAyB1B;IAC3C,OAAOA;AACT;AACA,SAASiG,iBAAiBD,UAAU;IAClC,OAAOzD,iBAAiByD,eAAeI,WAAWJ;AACpD;AACA,SAASE,kBAAkBF,UAAU,EAAEpyB,KAAK;IAC1C,IAAI;YACFgR;SAAAA,uBAAAA,OAAOyhB,YAAY,cAAnBzhB,2CAAAA,qBAAqB0hB,OAAO,CAACN,YAAYpyB;IAC3C,EAAE,eAAM,CACR;IACA2yB,YAAYP,YAAYpyB;AAC1B;AACA,IAAI4yB,+BAA+B,KAAK,KAAK,KAAK,MAAM;AACxD,SAASJ,WAAWtzB,IAAI;IACtB,IAAI,OAAO0O,aAAa,aAAa;QACnC,OAAO,KAAK;IACd;IACA,IAAI;QACF,IAAMilB,SAAShtB,mBAAmB3G,QAAQ;QAC1C,IAAM4C,QAAQ8L,SAASklB,MAAM,GAAGllB,SAASklB,MAAM,CAAC/wB,KAAK,CAAC,OAAO,EAAE;YAC1D,kCAAA,2BAAA;;YAAL,QAAK,YAAcD,0BAAd,SAAA,6BAAA,QAAA,yBAAA,iCAAqB;gBAArB,IAAMixB,OAAN;gBACH,IAAM3f,QAAQ2f,KAAK5sB,IAAI;gBACvB,IAAIiN,MAAMI,UAAU,CAACqf,SAAS;oBAC5B,OAAOG,mBAAmB5f,MAAM6f,KAAK,CAACJ,OAAOxsB,MAAM,MAAM,KAAK;gBAChE;YACF;;YALK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAMP,EAAE,eAAM,CACR;IACA,OAAO,KAAK;AACd;AACA,SAASssB,YAAYzzB,IAAI,EAAEc,KAAK;IAC9B,IAAI,OAAO4N,aAAa,aAAa;QACnC;IACF;IACA,IAAI;QACFA,SAASklB,MAAM,GAAGjtB,mBAAmB3G,QAAQ,MAAM2G,mBAAmB7F,SAAS,qBAAqB4yB,+BAA+B;IACrI,EAAE,eAAM,CACR;AACF;AACA,SAASL;QAcKW,SACAA;IAdZ,IAAI,OAAOC,WAAW,eAAe,OAAOA,OAAOC,UAAU,KAAK,YAAY;QAC5E,OAAOD,OAAOC,UAAU;IAC1B;IACA,IAAMF,QAAQ,IAAIG,WAAW;IAC7B,IAAI,OAAOF,WAAW,eAAe,OAAOA,OAAOG,eAAe,KAAK,YAAY;QACjFH,OAAOG,eAAe,CAACJ;IACzB,OAAO;QACL,IAAIK,OAAO7uB,KAAKqV,GAAG,KAAK3W,KAAKC,KAAK,CAACmwB,mBAAmB;QACtD,IAAK,IAAIC,IAAI,GAAGA,IAAI,IAAIA,IAAK;YAC3BF,OAAOA,OAAO,aAAa,QAAQ;YACnCL,KAAK,CAACO,EAAE,GAAG,AAACF,CAAAA,OAAOnwB,KAAKC,KAAK,CAACD,KAAKE,MAAM,KAAK,IAAG,IAAK;QACxD;IACF;IACA4vB,KAAK,CAAC,EAAE,GAAG,EAACA,UAAAA,KAAK,CAAC,EAAE,cAARA,qBAAAA,UAAY,KAAK,KAAK;IAClCA,KAAK,CAAC,EAAE,GAAG,EAACA,WAAAA,KAAK,CAAC,EAAE,cAARA,sBAAAA,WAAY,KAAK,KAAK;IAClC,IAAIQ,MAAM;IACV,IAAK,IAAID,KAAI,GAAGA,KAAI,IAAIA,KAAK;YACnBP;QAARQ,OAAO,EAACR,WAAAA,KAAK,CAACO,GAAE,cAARP,sBAAAA,WAAY,GAAGlxB,QAAQ,CAAC,IAAI6B,QAAQ,CAAC,GAAG;IAClD;IACA,OAAO6vB,IAAIT,KAAK,CAAC,GAAG,KAAK,MAAMS,IAAIT,KAAK,CAAC,GAAG,MAAM,MAAMS,IAAIT,KAAK,CAAC,IAAI,MAAM,MAAMS,IAAIT,KAAK,CAAC,IAAI,MAAM,MAAMS,IAAIT,KAAK,CAAC,IAAI;AAC5H;AACA,SAASO;IACP,IAAI;QACF,IAAI,OAAOG,gBAAgB,eAAe,OAAOA,YAAY5Z,GAAG,KAAK,YAAY;YAC/E,OAAO4Z,YAAY5Z,GAAG;QACxB;IACF,EAAE,eAAM,CACR;IACA,OAAO;AACT;AACA,SAASyU;IACP,IAAI,OAAOxd,WAAW,aAAa,OAAO,CAAC;IAC3C,IAAI;YACaA;QAAf,IAAM4iB,UAAS5iB,kBAAAA,OAAO6iB,OAAO,cAAd7iB,sCAAAA,gBAAgB4iB,MAAM;QACrC,IAAIA,QAAQ;YACV,IAAME,OAAO,OAAOF,OAAOG,OAAO,KAAK,aAAaH,OAAOG,OAAO,KAAKH,OAAOE,IAAI;YAClF,IAAI,OAAOA,SAAS,YAAYA,QAAQ,CAAC5B,mBAAmB4B,OAAO;gBACjE,IAAME,MAAM,OAAOJ,OAAOK,YAAY,KAAK,aAAaL,OAAOK,YAAY,KAAK,KAAK;gBACrF,OAAO;oBACLjvB,UAAU8uB;oBACV7uB,cAAc;mBACX,OAAO+uB,QAAQ,YAAY;oBAAE9uB,iBAAiB8uB;gBAAI,IAAI,CAAC;YAE9D;QACF;IACF,EAAE,eAAM,CACR;IACA,IAAI;QACF,IAAME,WAAWljB,OAAOkjB,QAAQ;QAChC,IAAIA,UAAU;gBAC+DA;YAA3E,IAAMC,SAAS,OAAOD,SAASE,MAAM,KAAK,aAAaF,SAASE,MAAM,MAAKF,mBAAAA,SAASC,MAAM,cAAfD,8BAAAA,mBAAmBA,SAASE,MAAM;YAC7G,IAAI,OAAOD,WAAW,YAAYA,QAAQ;gBACxC,IAAIhC,aAAagC,SAAS;oBACxB,OAAO;wBAAElvB,cAAc;wBAAUC,iBAAiB;oBAAK;gBACzD;gBACA,IAAI,CAACgtB,mBAAmBiC,SAAS;oBAC/B,OAAO;wBAAEnvB,UAAUmvB;wBAAQlvB,cAAc;wBAAUC,iBAAiB;oBAAM;gBAC5E;YACF;QACF;IACF,EAAE,eAAM,CACR;IACA,IAAI;QACF,IAAMmvB,OAAOrjB,OAAOsjB,IAAI;QACxB,IAAID,MAAM;YACR,IAAME,OAAO,OAAOF,KAAKG,oBAAoB,KAAK,aAAaH,KAAKG,oBAAoB,KAAKH,KAAKE,IAAI;YACtG,IAAI,OAAOA,SAAS,YAAYA,QAAQ,CAACrC,mBAAmBqC,OAAO;gBACjE,OAAO;oBAAEvvB,UAAUuvB;oBAAMtvB,cAAc;oBAAQC,iBAAiB;gBAAM;YACxE;QACF;IACF,EAAE,eAAM,CACR;IACA,OAAO,CAAC;AACV;AACA,IAAIuvB,wBAAwB,aAAa,GAAG,IAAItyB,IAAI;IAClD;IACA;CACD;AACD,SAAS+vB,mBAAmBlyB,KAAK;IAC/B,IAAM00B,IAAI10B,MAAMmG,IAAI;IACpB,OAAO,CAACuuB,KAAK,qCAAqCxzB,IAAI,CAACwzB,MAAM,oDAAoDxzB,IAAI,CAACwzB,MAAMD,sBAAsB3uB,GAAG,CAAC4uB,EAAEtnB,WAAW;AACrK;AACA,SAAS+kB,aAAanyB,KAAK;IACzB,OAAOy0B,sBAAsB3uB,GAAG,CAAC9F,MAAMmG,IAAI,GAAGiH,WAAW;AAC3D;AACA,SAASkhB;QACF,kCAAA,2BAAA;;QAAL,QAAK,YAAgBgD,6CAAhB,SAAA,6BAAA,QAAA,yBAAA,iCAA0C;YAA1C,IAAMlb,SAAN;YACH,IAAMue,aAAaC,gBAAgBxe,QAAQ;gBAAC;gBAAc;gBAAO;gBAAY;aAAe,KAAK,KAAK;YACtG,IAAMye,QAAQD,gBAAgBxe,QAAQ;gBAAC;gBAAS;gBAAQ;gBAAiB;aAAc,KAAK,KAAK;YACjG,IAAM0e,UAAUF,gBAAgBxe,QAAQ;gBAAC;gBAAW;gBAAM;aAAkB,KAAK,KAAK;YACtF,IAAMpR,WAAW4vB,gBAAgBxe,QAAQ;gBACvC;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD,KAAK,KAAK;YACX,IAAI,CAACue,cAAc,CAAC3vB,YAAY,CAAC6vB,SAAS,CAACC,SAAS;YACpD,IAAM7vB,eAAe2vB,gBAAgBxe,QAAQ;gBAC3C;gBACA;gBACA;gBACA;aACD,KAAKwY;YACN,IAAM1pB,kBAAkB6vB,kBAAkB3e,QAAQ;gBAChD;gBACA;gBACA;gBACA;aACD;YACD,OAAO,mBACFue,aAAa;gBAAEA,YAAAA;YAAW,IAAI,CAAC,GAC/BE,QAAQ;gBAAEA,OAAAA;YAAM,IAAI,CAAC,GACrBC,UAAU;gBAAEA,SAAAA;YAAQ,IAAI,CAAC,GACzB9vB,WAAW;gBAAEA,UAAAA;YAAS,IAAI,CAAC,GAC3BA,YAAYC,eAAe;gBAAEA,cAAAA;YAAa,IAAI,CAAC,GAC/CD,YAAYE,mBAAmB,OAAO;gBAAEA,iBAAAA;YAAgB,IAAI,CAAC;QAEpE;;QAtCK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAuCL,OAAO,CAAC;AACV;AACA,SAASosB;IACP,IAAI,OAAOtgB,WAAW,aAAa;QACjC,OAAO,EAAE;IACX;IACA,OAAO;QACLA,OAAOgkB,0BAA0B;QACjChkB,OAAOikB,kBAAkB;QACzBjkB,OAAOkkB,aAAa;QACpBlkB,OAAOmkB,MAAM;QACbnkB,OAAOokB,OAAO;QACdpkB,OAAOqkB,KAAK;QACZrkB,OAAOskB,KAAK;QACZtkB,OAAOukB,MAAM;KACd,CAAC7d,MAAM,CAAC8d;AACX;AACA,SAASZ,gBAAgBxe,MAAM,EAAEjJ,IAAI;QAC9B,kCAAA,2BAAA;;QAAL,QAAK,YAAaA,yBAAb,SAAA,6BAAA,QAAA,yBAAA,iCAAmB;YAAnB,IAAMzN,MAAN;YACH,IAAMM,QAAQoW,mBAAAA,6BAAAA,MAAQ,CAAC1W,IAAI;YAC3B,IAAI,OAAOM,UAAU,YAAYA,OAAO;gBACtC,OAAOA;YACT;YACA,IAAI,OAAOA,UAAU,YAAY;gBAC/B,IAAI;oBACF,IAAMiV,SAASjV,MAAML,IAAI,CAACyW;oBAC1B,IAAI,OAAOnB,WAAW,YAAYA,QAAQ;wBACxC,OAAOA;oBACT;gBACF,EAAE,eAAM,CACR;YACF;QACF;;QAdK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAeL,OAAO,KAAK;AACd;AACA,SAAS8f,kBAAkB3e,MAAM,EAAEjJ,IAAI;QAChC,kCAAA,2BAAA;;QAAL,QAAK,YAAaA,yBAAb,SAAA,6BAAA,QAAA,yBAAA,iCAAmB;YAAnB,IAAMzN,MAAN;YACH,IAAMM,QAAQoW,mBAAAA,6BAAAA,MAAQ,CAAC1W,IAAI;YAC3B,IAAM6xB,aAAakE,iBAAiBz1B;YACpC,IAAIuxB,cAAc,MAAM;gBACtB,OAAOA;YACT;YACA,IAAI,OAAOvxB,UAAU,YAAY;gBAC/B,IAAI;oBACF,IAAMiV,SAASwgB,iBAAiBz1B,MAAML,IAAI,CAACyW;oBAC3C,IAAInB,UAAU,MAAM;wBAClB,OAAOA;oBACT;gBACF,EAAE,eAAM,CACR;YACF;QACF;;QAfK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAgBL,OAAO,KAAK;AACd;AACA,SAASyZ;QACF,kCAAA,2BAAA;;QAAL,QAAK,YAAaV,2CAAb,SAAA,6BAAA,QAAA,yBAAA,iCAAqC;YAArC,IAAMtuB,MAAN;YACH,IAAMM,QAAQ2uB,iBAAiBjvB;YAC/B,IAAIM,OAAO;gBACT,OAAOA;YACT;QACF;;QALK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAML,OAAO,KAAK;AACd;AACA,SAAS2uB,iBAAiBjvB,GAAG;IAC3B,IAAI,OAAOsR,WAAW,aAAa;QACjC,OAAO,KAAK;IACd;IACA,IAAI;YACYA;QAAd,IAAMhR,SAAQgR,uBAAAA,OAAOyhB,YAAY,cAAnBzhB,2CAAAA,qBAAqB0kB,OAAO,CAACh2B;QAC3C,OAAOM,SAAS,KAAK;IACvB,EAAE,eAAM;QACN,OAAO,KAAK;IACd;AACF;AACA,SAAS6uB;IACP,OAAO4G,iBACL9G,iBAAiB,sBAAsBA,iBAAiB,wBAAwBA,iBAAiB;AAErG;AACA,SAAS8G,iBAAiBz1B,KAAK;IAC7B,IAAI,OAAOA,UAAU,WAAW;QAC9B,OAAOA;IACT;IACA,IAAI,OAAOA,UAAU,UAAU;QAC7B,OAAOA,UAAU;IACnB;IACA,IAAI,OAAOA,UAAU,UAAU;QAC7B,IAAMuxB,aAAavxB,MAAMoN,WAAW;QACpC,IAAImkB,eAAe,OAAOA,eAAe,UAAUA,eAAe,OAAO;YACvE,OAAO;QACT;QACA,IAAIA,eAAe,OAAOA,eAAe,WAAWA,eAAe,MAAM;YACvE,OAAO;QACT;IACF;IACA,OAAO,KAAK;AACd;AAEA,wBAAwB;AACxB,IAAIoE,kBAAkB;AACtB,SAASC,sBAAsBC,MAAM;IACnC,IAAMrnB,UAAU,CAAC;IACjB,IAAIqnB,OAAOC,aAAa,EAAE;QACxBtnB,QAAQsnB,aAAa,GAAG;IAC1B;IACA,IAAID,OAAOE,YAAY,KAAK,KAAK,GAAG;QAClCvnB,QAAQwnB,eAAe,GAAGH,OAAOE,YAAY,GAAG,SAAS;IAC3D;IACA,OAAOvnB;AACT;AACA,SAASynB;QAQEC,SACCA,UACIA,UACCA,UACAA,qBAAAA,UACDA,UAiGVllB,SAA6BA,UAG6EA,4BAAAA,gBAqBjGlQ;IArIb,IAAML,KAAKK,UAAUG,SAAS;IAC9B,IAAMD,WAAWF,UAAUE,QAAQ;IACnC,IAAMm1B,SAASr1B,UAAUq1B,MAAM,IAAI;IACnC,IAAMjF,iBAAiBpwB,UAAUowB,cAAc,IAAI;IACnD,IAAMkF,SAASt1B,UAAUu1B,YAAY,IAAI;IACzC,IAAMC,sBAAsBx1B,UAAUw1B,mBAAmB,IAAI;IAC7D,IAAMC,aAAa;QACjB9lB,KAAK,GAAEylB,UAAAA,oBAAAA,8BAAAA,QAAQzlB,KAAK;QACpBC,MAAM,GAAEwlB,WAAAA,oBAAAA,+BAAAA,SAAQxlB,MAAM;QACtB8lB,UAAU,GAAEN,WAAAA,oBAAAA,+BAAAA,SAAQM,UAAU;QAC9BC,WAAW,GAAEP,WAAAA,oBAAAA,+BAAAA,SAAQO,WAAW;QAChCC,aAAaR,EAAAA,WAAAA,oBAAAA,gCAAAA,sBAAAA,SAAQQ,WAAW,cAAnBR,0CAAAA,oBAAqB/nB,IAAI,KAAI;QAC1CwoB,UAAU,GAAET,WAAAA,oBAAAA,+BAAAA,SAAQS,UAAU;IAChC;IACA,IAAIC,aAAa;IACjB,IAAIC,QAAQ;IACZ,IAAIC,KAAK;IACT,IAAIC,QAAQ;IACZ,IAAIz1B,YAAY;IAChB,IAAI01B,YAAY;IAChB,IAAIC,YAAY;IAChB,IAAIC,WAAW;IACf,IAAIz2B,GAAG6S,QAAQ,CAAC,UAAU;QACxBujB,QAAQ;QACRC,KAAK;QACLx1B,YAAY;QACZs1B,aAAa;QACb,IAAMO,aAAa12B,GAAGC,KAAK,CAAC;QAC5Bq2B,QAAQI,aAAa,AAAC,SAAsB,OAAdA,UAAU,CAAC,EAAE,IAAK;IAClD,OAAO,IAAI12B,GAAG6S,QAAQ,CAAC,UAAU;QAC/BujB,QAAQ;QACRC,KAAK;QACLx1B,YAAY;QACZs1B,aAAa;QACb,IAAMQ,aAAa32B,GAAGC,KAAK,CAAC;QAC5B,IAAM22B,UAAU52B,GAAGC,KAAK,CAAC,+BAA+B,aAAa;QACrEq2B,QAAQK,aAAa,AAAC,SAAyBC,OAAjBD,UAAU,CAAC,EAAE,EAAC,KAAW,OAARC,SAAUlxB,IAAI,KAAK;IACpE,OAAO,IAAI1F,GAAG6S,QAAQ,CAAC,YAAY;QACjCujB,QAAQ;QACRC,KAAK;QACLx1B,YAAY;QACZs1B,aAAa;IACf,OAAO,IAAIn2B,GAAG6S,QAAQ,CAAC,YAAY7S,GAAG6S,QAAQ,CAAC,UAAU;QACvDujB,QAAQ;QACRC,KAAK;QACLx1B,YAAY;QACZs1B,aAAa;IACf,OAAO,IAAIn2B,GAAG6S,QAAQ,CAAC,cAAe7S,CAAAA,GAAG6S,QAAQ,CAAC,WAAW6iB,OAAO7iB,QAAQ,CAAC,OAAM,GAAI;QACrFujB,QAAQ;QACRC,KAAK;QACLx1B,YAAY;QACZs1B,aAAa;IACf,OAAO,IAAIn2B,GAAG6S,QAAQ,CAAC,cAAe7S,CAAAA,GAAG6S,QAAQ,CAAC,cAAc7S,GAAG6S,QAAQ,CAAC,KAAI,GAAI;QAClFujB,QAAQ;QACRC,KAAK;QACLx1B,YAAY;QACZs1B,aAAa;IACf,OAAO,IAAIn2B,GAAG6S,QAAQ,CAAC,YAAY7S,GAAG6S,QAAQ,CAAC,UAAU;QACvDujB,QAAQ;QACRC,KAAK;QACLx1B,YAAY;QACZs1B,aAAa;IACf,OAAO,IAAIn2B,GAAG6S,QAAQ,CAAC,YAAY;QACjCujB,QAAQ;QACRC,KAAK;QACLx1B,YAAY;QACZs1B,aAAa;IACf;IACA,IAAIn2B,GAAG6S,QAAQ,CAAC,YAAY;QAC1B0jB,YAAY;QACZF,KAAK;QACLF,aAAa,SAAS11B,IAAI,CAACT,MAAM,WAAW;QAC5C,IAAIA,GAAG6S,QAAQ,CAAC,cAAe4d,CAAAA,mBAAmB,KAAKzwB,GAAG6S,QAAQ,CAAC,gBAAgB7S,GAAG6S,QAAQ,CAAC,SAAQ,GAAI;YACzGsjB,aAAa;YACbt1B,YAAY;YACZu1B,QAAQA,UAAU,YAAY,eAAeA;QAC/C;QACA,IAAMS,oBAAoB72B,GAAGC,KAAK,CAAC;QACnC,IAAI42B,qBAAqBA,iBAAiB,CAAC,EAAE,EAAE;YAC7CP,QAAQO,iBAAiB,CAAC,EAAE;QAC9B;IACF;IACA,IAAI,mBAAmBp2B,IAAI,CAACT,KAAK;QAC/Bq2B,KAAK;QACLF,aAAa;QACbC,QAAQ;QACR,IAAI/1B,UAAUowB,cAAc,GAAG,KAAK,OAAOhwB,IAAI,CAACT,KAAK;YACnDm2B,aAAa;QACf;IACF;IACA,IAAI,CAACI,aAAa,CAAC11B,aAAa,CAAC,SAASJ,IAAI,CAACT,KAAK;QAClD,IAAIA,GAAG6S,QAAQ,CAAC,YAAY;YAC1BwjB,KAAK;YACLF,aAAa;QACf,OAAO,IAAIn2B,GAAG6S,QAAQ,CAAC,UAAU,CAAC,SAASpS,IAAI,CAACT,KAAK;YACnDq2B,KAAK;YACLF,aAAa;YACb,IAAI1F,iBAAiB,GAAG0F,aAAa;QACvC,OAAO,IAAIn2B,GAAG6S,QAAQ,CAAC,UAAU;YAC/BwjB,KAAK;YACLF,aAAa;QACf;IACF;IACA,IAAIC,UAAU,WAAW;QACvB,IAAIV,OAAO7iB,QAAQ,CAAC,aAAa7S,GAAG6S,QAAQ,CAAC,WAAWujB,QAAQ;QAChE,IAAIV,OAAO7iB,QAAQ,CAAC,UAAUujB,QAAQ;QACtC,IAAIV,OAAO7iB,QAAQ,CAAC,cAAc7S,GAAG6S,QAAQ,CAAC,QAAQujB,QAAQ;IAChE;IACAI,YAAY,uBAAuB/1B,IAAI,CAACT;IACxC,IAAIuQ,EAAAA,UAAAA,oBAAAA,8BAAAA,QAAQumB,WAAW,MAAK,KAAKvmB,EAAAA,WAAAA,oBAAAA,+BAAAA,SAAQwmB,UAAU,MAAK,GAAG;QACzDP,YAAY;IACd;IACAC,WAAWlmB,OAAOymB,UAAU,CAAC,8BAA8BC,OAAO,IAAI1mB,OAAOlQ,SAAS,CAAC62B,UAAU,KAAK,QAAQ3mB,EAAAA,iBAAAA,OAAOklB,MAAM,cAAbllB,sCAAAA,6BAAAA,eAAe0lB,WAAW,cAA1B1lB,iDAAAA,2BAA4B4mB,KAAK,MAAK,KAAK;IACzJ,OAAO;QACLf,OAAAA;QACAC,IAAAA;QACAC,OAAOA,SAASt2B,GAAG4a,SAAS,CAAC,GAAG,MAAM;QACtCub,YAAAA;QACAt1B,WAAAA;QACA01B,WAAAA;QACAC,WAAAA;QACAC,UAAAA;QACAW,QAAQ7mB,OAAOpC,QAAQ,CAACvJ,QAAQ;QAChCyyB,QAAQ9mB,OAAOpC,QAAQ,CAACkpB,MAAM;QAC9BC,MAAM/mB,OAAOpC,QAAQ,CAACmb,QAAQ;QAC9B9oB,WAAWR;QACX01B,QAAAA;QACAn1B,UAAAA;QACAk1B,QAAQK;QACRD,qBAAAA;QACAD,cAAcD;QACdlF,gBAAAA;QACA8G,UAAUl3B,UAAUk3B,QAAQ;QAC5BC,WAAWn3B,EAAAA,uBAAAA,UAAUm3B,SAAS,cAAnBn3B,2CAAAA,qBAAqBo3B,IAAI,CAAC,SAAQ;QAC7CC,eAAer3B,UAAUq3B,aAAa;QACtCC,YAAYt3B,UAAUs3B,UAAU,IAAI;QACpCC,UAAUzqB,SAASyqB,QAAQ;QAC3B1qB,iBAAiBC,SAASD,eAAe;IAC3C;AACF;AACA,SAAe2qB,UAAUC,KAAK;;YACSpF,gBAG7BqF,aAIIC,MACAC,QACGjF,GAKLkF,oBAQNC,MACKnF,IACDoF,MAIFC,cACAC,WACAz1B;;;;yBA9BF,CAAA,OAAO6vB,WAAW,iBAAeA,iBAAAA,OAAO6F,MAAM,cAAb7F,qCAAAA,eAAe8F,MAAM,CAAD,GAArD;;;;;;;;;;;;oBAEA;;wBAAM9F,OAAO6F,MAAM,CAACC,MAAM,CAAC,WAAW,IAAI5F;4BAAY;4BAAG;4BAAG;;;;oBAA5D;oBAEA,IAAI,OAAO6F,gBAAgB,aAAa;wBACtCV,cAAc,IAAIU,cAAcC,MAAM,CAACZ;oBACzC,OAAO;wBACCE,OAAOW,SAASvzB,mBAAmB0yB;wBACnCG,SAAS,IAAIrF,WAAWoF,KAAKpyB,MAAM;wBACzC,IAASotB,IAAI,GAAGA,IAAIgF,KAAKpyB,MAAM,EAAEotB,IAAK;4BACpCiF,MAAM,CAACjF,EAAE,GAAGgF,KAAKY,UAAU,CAAC5F;wBAC9B;wBACA+E,cAAcE;oBAChB;oBACmB;;wBAAMvF,OAAO6F,MAAM,CAACC,MAAM,CAAC,WAAWT;;;oBAAnDG,aAAa;oBACnB;;wBAAO/rB,MAAMrN,IAAI,CAAC,IAAI8zB,WAAWsF,aAAaryB,GAAG,CAAC,SAAC6M;mCAAMA,EAAEnR,QAAQ,CAAC,IAAI6B,QAAQ,CAAC,GAAG;2BAAMq0B,IAAI,CAAC;;;;oBAE/Fr1B,QAAQiK,IAAI,CACV;;;;;;oBAIF8rB,OAAO;oBACX,IAASnF,KAAI,GAAGA,KAAI8E,MAAMlyB,MAAM,EAAEotB,KAAK;wBAC/BoF,OAAON,MAAMc,UAAU,CAAC5F;wBAC9BmF,OAAO,AAACA,CAAAA,QAAQ,CAAA,IAAKA,OAAOC;wBAC5BD,OAAOA,OAAOA;oBAChB;oBACME,eAAe11B,KAAK0P,GAAG,CAAC8lB,MAAM52B,QAAQ,CAAC,IAAI6B,QAAQ,CAAC,GAAG;oBACvDk1B,YAAYr0B,KAAKqV,GAAG,GAAG/X,QAAQ,CAAC,IAAI6B,QAAQ,CAAC,IAAI;oBACjDP,SAASF,KAAKE,MAAM,GAAGtB,QAAQ,CAAC,IAAIqZ,SAAS,CAAC,GAAG,IAAIxX,QAAQ,CAAC,IAAI;oBACxE;;wBAAQi1B,CAAAA,eAAeC,YAAYz1B,MAAK,EAAGg2B,MAAM,CAAC,IAAI;;;;IACxD;;AACA,SAASC,0BAA0BC,UAAU;IAC3C,IAAMC,iBAAiBzH,sBAAsBwH,WAAWl4B,SAAS;IACjE,IAAIm4B,gBAAgB;QAClB,OAAO,AAAC,UAAwB,OAAfA;IACnB;IACA,IAAMC,cAAc3K,sBAAsBhB;IAC1C,IAAI2L,aAAa;QACf,OAAO,AAAC,aAAwB,OAAZA;IACtB;IACA,OAAO,AAAC,eAAyC,OAA3BrN,KAAKC,SAAS,CAACkN;AACvC;AACA,SAAeG,aAAaH,UAAU;;;;;oBACpC,IAAI7D,iBAAiB;wBACnB;;4BAAOA;;oBACT;oBACkB;;wBAAM2C,UAAUiB,0BAA0BC;;;oBAA5D7D,kBAAkB;oBAClB;;wBAAOA;;;;IACT;;AACA,SAASiE,WAAWlM,UAAU;IAC5B,OAAO8H,QAAQnI,6BAA6BK;AAC9C;AACA,SAAemM;;YAAuBrrB,SAAcsrB,OAUhCA,kBAKLA,iBACAA,iBAfPN,YACA1D,eAIAiE,UAIAC;;;;;oBAV8BxrB,UAAAA,oEAAU,CAAC,GAAGsrB,QAAAA,oEAAQ,CAAC;oBACrDN,aAAavD;oBACbH,gBAAgB,CAAC,CAACtnB,QAAQsnB,aAAa;oBAC7C,IAAIA,eAAe;wBACjBjzB,QAAQC,GAAG,CAAC,wCAAwCupB,KAAKC,SAAS,CAACkN,YAAY,MAAM;oBACvF;oBACiB;;wBAAMG,aAAaH;;;oBAA9BO,WAAW;oBACjB,IAAIjE,eAAe;wBACjBjzB,QAAQC,GAAG,CAAC,sCAAsCi3B;oBACpD;oBACMC,aAAYF,mBAAAA,MAAME,SAAS,cAAfF,8BAAAA,mBAAmB,CAAC,aAAa,GAAG,IAAIp1B,QAAQC,WAAW;oBAC7E;;wBAAO;4BACLs1B,WAAWF;4BACXG,aAAaV,WAAW5C,UAAU;4BAClCE,IAAI0C,WAAW1C,EAAE,CAAC1pB,WAAW;4BAC7B+sB,SAAS,GAAEL,kBAAAA,MAAMM,QAAQ,cAAdN,6BAAAA,kBAAkB;4BAC7BO,SAAS,GAAEP,kBAAAA,MAAMQ,QAAQ,cAAdR,6BAAAA,kBAAkB;4BAC7BS,YAAYP;2BACTxrB,QAAQwnB,eAAe,GAAG;4BAAEwE,mBAAmBhsB,QAAQwnB,eAAe;wBAAC,IAAI,CAAC;;;;IAEnF;;AACA,SAAeyE;wCAAoB/M,UAAU;YAAElf,SAGrCksB,aAOCxyB;;;;;oBAVoCsG,UAAAA,oEAAU,CAAC;oBACxD,IAAI,CAACorB,WAAWlM,aAAa;;;;;;;;;;;oBAEP;;wBAAMmM,uBAAuBrrB,SAAS;4BACxD4rB,UAAU;4BACVE,UAAU;wBACZ;;;oBAHMI,cAAc;oBAIpB;;wBAAMjN,qBAAqBC,YAAY,WAAW;4BAChDiN,MAAM;gCAAGD;;wBACX;;;oBAFA;;;;;;oBAGOxyB;oBACPrF,QAAQqF,KAAK,CACX,gEACAA;;;;;;;;;;;IAGN;;AACA,SAAe0yB;wCAAqBlN,UAAU,EAAEmN,YAAY;YAAErsB,SAMnDtG;;;;;oBANmDsG,UAAAA,oEAAU,CAAC;;;;;;;;;oBAErE;;wBAAMssB,cAAcpN,YAAYlf,SAAS;4BACvC8rB,UAAU;4BACVN,WAAWa,aAAa9B,SAAS;wBACnC;;;oBAHA;;;;;;oBAIO7wB;oBACPrF,QAAQqF,KAAK,CACX,6DACAA;;;;;;;;;;;IAGN;;AACA,SAAe6yB;wCAAqBrN,UAAU,EAAEsN,YAAY;YAAExsB,SAMnDtG;;;;;oBANmDsG,UAAAA,oEAAU,CAAC;;;;;;;;;oBAErE;;wBAAMssB,cAAcpN,YAAYlf,SAAS;4BACvC4rB,UAAU;4BACVJ,WAAWgB,aAAajC,SAAS;wBACnC;;;oBAHA;;;;;;oBAIO7wB;oBACPrF,QAAQqF,KAAK,CACX,6DACAA;;;;;;;;;;;IAGN;;AACA,SAAe+yB;wCAAyBvN,UAAU,EAAEwN,gBAAgB;YAAE1sB,SAG5DksB,aAgBCxyB;;;;;oBAnB2DsG,UAAAA,oEAAU,CAAC;oBAC/E,IAAI,CAACorB,WAAWlM,aAAa;;;;;;;;;;;oBAEP;;wBAAMmM,uBAAuBrrB,SAAS;4BACxDwrB,WAAWkB,iBAAiBnC,SAAS;wBACvC;;;oBAFM2B,cAAc;oBAGpB;;wBAAMjN,qBAAqBC,YAAY,WAAW;4BAChDiN,MAAM;gCAAGD;;wBACX;;;oBAFA;oBAGA;;wBAAMjN,qBAAqBC,YAAY,eAAe;4BACpDiN,MAAM;gCACJ;oCACEV,WAAWS,YAAYT,SAAS;oCAChCkB,iBAAiB;oCACjBC,QAAQF,iBAAiBG,KAAK;oCAC9Bd,YAAYW,iBAAiBnC,SAAS;gCACxC;;wBAEJ;;;oBATA;;;;;;oBAUO7wB;oBACPrF,QAAQqF,KAAK,CACX,iEACAA;;;;;;;;;;;IAGN;;AACA,SAAe4yB;wCAAcpN,UAAU;YAAElf,SAAcsrB,OAG7CwB,eAICpzB;;;;;oBAP8BsG,UAAAA,oEAAU,CAAC,GAAGsrB,QAAAA,oEAAQ,CAAC;oBAC9D,IAAI,CAACF,WAAWlM,aAAa;;;;;;;;;;;oBAEL;;wBAAMmM,uBAAuBrrB,SAASsrB;;;oBAAtDwB,gBAAgB;oBACtB;;wBAAM7N,qBAAqBC,YAAY,WAAW;4BAChDiN,MAAM;gCAAGW;;wBACX;;;oBAFA;;;;;;oBAGOpzB;oBACPrF,QAAQqF,KAAK,CAAC,oDAAoDA;;;;;;;;;;;IAEtE;;AAEA,yBAAyB;AACzB,SAASqzB;IACP,IAAI,OAAOn5B,oBAAoB,aAAa;QAC1C;IACF;IACA,IAAA,AAAMo5B,wCAAN;iBAAMA,wBACQC,IAAI;;oCADZD;YAEF,IAAI,CAACE,MAAM,GAAG,aAAa,GAAG,IAAIx5B;YAClC,IAAI,OAAOu5B,SAAS,UAAU;gBAC5B,IAAI,CAACE,gBAAgB,CAACF;YACxB,OAAO,IAAIA,AAAI,YAAJA,MALTD,0BAKkD;gBAClDC,KAAKxsB,OAAO,CAAC,SAACjP,OAAON;oBACnB,MAAKk8B,MAAM,CAACl8B,KAAKM;gBACnB;YACF;;sBATEw7B;;gBAWJG,KAAAA;uBAAAA,SAAAA,iBAAiBE,KAAK;;oBACpB,IAAMC,aAAaD,MAAMroB,UAAU,CAAC,OAAOqoB,MAAM5I,KAAK,CAAC,KAAK4I;oBAC5D,IAAI,CAACC,YAAY;oBACjBA,WAAW/5B,KAAK,CAAC,KAAKkN,OAAO,CAAC,SAAC8sB;wBAC7B,IAAqBA,gCAAAA,MAAMh6B,KAAK,CAAC,UAA1BrC,MAAcq8B,iBAAT/7B,QAAS+7B;wBACrB,IAAIr8B,KAAK;4BACP,IAAMs8B,aAAa,MAAKC,sBAAsB,CAACv8B;4BAC/C,IAAMw8B,eAAel8B,QAAQ,MAAKi8B,sBAAsB,CAACj8B,SAAS;4BAClE,MAAK47B,MAAM,CAACI,YAAYE;wBAC1B;oBACF;gBACF;;;gBACAD,KAAAA;uBAAAA,SAAAA,uBAAuBE,GAAG;oBACxB,IAAI;wBACF,OAAOnJ,mBAAmBmJ,IAAIv2B,OAAO,CAAC,OAAO;oBAC/C,EAAE,OAAOqY,GAAG;wBACV,OAAOke;oBACT;gBACF;;;gBACAP,KAAAA;uBAAAA,SAAAA,OAAO18B,IAAI,EAAEc,KAAK;oBAChB,IAAMmE,SAAS,IAAI,CAACu3B,MAAM,CAACv8B,GAAG,CAACD,SAAS,EAAE;oBAC1CiF,OAAO6O,IAAI,CAAC7P,OAAOnD;oBACnB,IAAI,CAAC07B,MAAM,CAACt3B,GAAG,CAAClF,MAAMiF;gBACxB;;;gBACA6L,KAAAA;uBAAAA,SAAAA,QAAO9Q,IAAI;oBACT,IAAI,CAACw8B,MAAM,CAAC1rB,MAAM,CAAC9Q;gBACrB;;;gBACAC,KAAAA;uBAAAA,SAAAA,IAAID,IAAI;oBACN,IAAMiF,SAAS,IAAI,CAACu3B,MAAM,CAACv8B,GAAG,CAACD;oBAC/B,OAAOiF,UAAUA,OAAOkC,MAAM,GAAG,KAAKlC,MAAM,CAAC,EAAE,KAAK,KAAK,IAAIA,MAAM,CAAC,EAAE,GAAG;gBAC3E;;;gBACAi4B,KAAAA;uBAAAA,SAAAA,OAAOl9B,IAAI;oBACT,OAAO,IAAI,CAACw8B,MAAM,CAACv8B,GAAG,CAACD,SAAS,EAAE;gBACpC;;;gBACA4G,KAAAA;uBAAAA,SAAAA,IAAI5G,IAAI;oBACN,OAAO,IAAI,CAACw8B,MAAM,CAAC51B,GAAG,CAAC5G;gBACzB;;;gBACAkF,KAAAA;uBAAAA,SAAAA,IAAIlF,IAAI,EAAEc,KAAK;oBACb,IAAI,CAAC07B,MAAM,CAACt3B,GAAG,CAAClF,MAAM;wBAACiE,OAAOnD;qBAAO;gBACvC;;;gBACAiP,KAAAA;uBAAAA,SAAAA,QAAQotB,QAAQ;;oBACd,IAAI,CAACX,MAAM,CAACzsB,OAAO,CAAC,SAAC9K,QAAQzE;wBAC3ByE,OAAO8K,OAAO,CAAC,SAACjP;4BACdq8B,SAASr8B,OAAON;wBAClB;oBACF;gBACF;;;gBACAsC,KAAAA;uBAAAA,SAAAA;oBACE,IAAMF,QAAQ,EAAE;oBAChB,IAAI,CAAC45B,MAAM,CAACzsB,OAAO,CAAC,SAAC9K,QAAQzE;wBAC3ByE,OAAO8K,OAAO,CAAC,SAACjP;4BACd8B,MAAMkR,IAAI,CAAC,AAAC,GAA6BnN,OAA3BA,mBAAmBnG,MAAK,KAA6B,OAA1BmG,mBAAmB7F;wBAC9D;oBACF;oBACA,OAAO8B,MAAMo2B,IAAI,CAAC;gBACpB;;;eAlEIsD;;IAoENxqB,OAAO5O,eAAe,GAAGo5B;AAC3B;AACA,SAASc;IACP,IAAI,OAAOpD,gBAAgB,aAAa;QACtC;IACF;IACA,IAAA,AAAMqD,oCAAN;iBAAMA;oCAAAA;YAEF,IAAI,CAACC,QAAQ,GAAG;;sBAFdD;;gBAIJpD,KAAAA;uBAAAA,SAAAA,OAAOgD,GAAG;oBACR,IAAM1D,OAAO,EAAE;oBACf,IAAK,IAAIhF,IAAI,GAAGA,IAAI0I,IAAI91B,MAAM,EAAEotB,IAAK;wBACnC,IAAIgJ,WAAWN,IAAI9C,UAAU,CAAC5F;wBAC9B,IAAIgJ,WAAW,KAAK;4BAClBhE,KAAKzlB,IAAI,CAACypB;wBACZ,OAAO,IAAIA,WAAW,MAAM;4BAC1BhE,KAAKzlB,IAAI,CAAC,MAAMypB,YAAY,GAAG,MAAMA,WAAW;wBAClD,OAAO,IAAIA,WAAW,SAASA,YAAY,OAAO;4BAChDhE,KAAKzlB,IAAI,CACP,MAAMypB,YAAY,IAClB,MAAMA,YAAY,IAAI,IACtB,MAAMA,WAAW;wBAErB,OAAO;4BACLhJ;4BACAgJ,WAAW,QAAS,CAAA,AAACA,CAAAA,WAAW,IAAG,KAAM,KAAKN,IAAI9C,UAAU,CAAC5F,KAAK,IAAG;4BACrEgF,KAAKzlB,IAAI,CACP,MAAMypB,YAAY,IAClB,MAAMA,YAAY,KAAK,IACvB,MAAMA,YAAY,IAAI,IACtB,MAAMA,WAAW;wBAErB;oBACF;oBACA,OAAO,IAAIpJ,WAAWoF;gBACxB;;;eA9BI8D;;IAgCNvrB,OAAOkoB,WAAW,GAAGqD;AACvB;AACA,SAASG;IACP,IAAI,OAAOz6B,YAAY,eAAe,CAACA,QAAQpD,SAAS,CAAC4jB,OAAO,EAAE;QAChExgB,QAAQpD,SAAS,CAAC4jB,OAAO,GAAG,SAAS4Z,QAAQ;YAC3C,IAAMM,cAAc,IAAI,CAAC,WAAW;YACpC,OAAO,IAAI,CAACC,IAAI,CACd,SAAC58B;uBAAU28B,YAAYhV,OAAO,CAAC0U,YAAYO,IAAI,CAAC;2BAAM58B;;eACtD,SAACyF;uBAAWk3B,YAAYhV,OAAO,CAAC0U,YAAYO,IAAI,CAAC;oBAC/C,MAAMn3B;gBACR;;QAEJ;IACF;AACF;AACA,SAASo3B;IACP,IAAI,OAAO3+B,OAAO4+B,MAAM,KAAK,YAAY;QACvC5+B,OAAO4+B,MAAM,GAAG,SAAS99B,MAAM;YAAE,IAAA,IAAA,OAAA,UAAA,QAAA,AAAG+9B,UAAH,UAAA,OAAA,IAAA,OAAA,QAAA,OAAA,GAAA,OAAA,MAAA;gBAAGA,QAAH,OAAA,KAAA,SAAA,CAAA,KAAU;;YACzC,IAAI/9B,UAAU,MAAM;gBAClB,MAAM,IAAIg+B,UAAU;YACtB;YACA,IAAM19B,KAAKpB,OAAOc;YAClB,IAAK,IAAIy0B,IAAI,GAAGA,IAAIsJ,QAAQ12B,MAAM,EAAEotB,IAAK;gBACvC,IAAMwJ,aAAaF,OAAO,CAACtJ,EAAE;gBAC7B,IAAIwJ,cAAc,MAAM;oBACtB,IAAK,IAAMC,WAAWD,WAAY;wBAChC,IAAI/+B,OAAOW,SAAS,CAACC,cAAc,CAACa,IAAI,CAACs9B,YAAYC,UAAU;4BAC7D59B,EAAE,CAAC49B,QAAQ,GAAGD,UAAU,CAACC,QAAQ;wBACnC;oBACF;gBACF;YACF;YACA,OAAO59B;QACT;IACF;AACF;AACA,SAAS69B;IACP,IAAI,CAACvwB,MAAMrN,IAAI,EAAE;QACfqN,MAAMrN,IAAI,GAAG,SAAS69B,SAAS,EAAEC,KAAK,EAAE3L,OAAO;YAC7C,IAAM4L,QAAQp/B,OAAOk/B;YACrB,IAAIA,aAAa,MAAM;gBACrB,MAAM,IAAIJ,UAAU;YACtB;YACA,IAAMO,MAAMD,MAAMj3B,MAAM,KAAK;YAC7B,IAAM4O,SAAS,IAAIrI,MAAM2wB;YACzB,IAAK,IAAI9J,IAAI,GAAGA,IAAI8J,KAAK9J,IAAK;gBAC5B,IAAI4J,OAAO;oBACTpoB,MAAM,CAACwe,EAAE,GAAG4J,MAAM19B,IAAI,CAAC+xB,SAAS4L,KAAK,CAAC7J,EAAE,EAAEA;gBAC5C,OAAO;oBACLxe,MAAM,CAACwe,EAAE,GAAG6J,KAAK,CAAC7J,EAAE;gBACtB;YACF;YACA,OAAOxe;QACT;IACF;AACF;AACA,SAASuoB;IACP,IAAI,CAACr6B,OAAOtE,SAAS,CAAC2U,UAAU,EAAE;QAChCrQ,OAAOtE,SAAS,CAAC2U,UAAU,GAAG,SAASiqB,MAAM,EAAEC,GAAG;YAChDA,MAAM,CAACA,OAAOA,MAAM,IAAI,IAAI,CAACA;YAC7B,OAAO,IAAI,CAACriB,SAAS,CAACqiB,KAAKA,MAAMD,OAAOp3B,MAAM,MAAMo3B;QACtD;IACF;AACF;AACA,SAASE;IACP,IAAI,CAACx6B,OAAOtE,SAAS,CAACoI,QAAQ,EAAE;QAC9B9D,OAAOtE,SAAS,CAACoI,QAAQ,GAAG,SAASw2B,MAAM,EAAEp3B,MAAM;YACjD,IAAIA,WAAW,KAAK,KAAKA,SAAS,IAAI,CAACA,MAAM,EAAE;gBAC7CA,SAAS,IAAI,CAACA,MAAM;YACtB;YACA,OAAO,IAAI,CAACgV,SAAS,CAAChV,SAASo3B,OAAOp3B,MAAM,EAAEA,YAAYo3B;QAC5D;IACF;AACF;AACA,SAASG;IACP,IAAI,CAACz6B,OAAOtE,SAAS,CAACyU,QAAQ,EAAE;QAC9BnQ,OAAOtE,SAAS,CAACyU,QAAQ,GAAG,SAASmqB,MAAM,EAAEhyB,KAAK;YAChD,IAAI,OAAOA,UAAU,UAAU;gBAC7BA,QAAQ;YACV;YACA,IAAIA,QAAQgyB,OAAOp3B,MAAM,GAAG,IAAI,CAACA,MAAM,EAAE;gBACvC,OAAO;YACT;YACA,OAAO,IAAI,CAAC0P,OAAO,CAAC0nB,QAAQhyB,WAAW,CAAC;QAC1C;IACF;AACF;AACA,SAASoyB;IACPhB;IACAM;IACAK;IACAG;IACAC;IACArC;IACAe;IACAI;AACF;AAEA,0BAA0B;AAC1B,IAAIoB,2BAA2B;AAC/B,IAAIC,yBAAyB;AAC7B,IAAIC,kBAAkB;AACtB,IAAIC,yBAAyB;IAC3B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AACD,IAAIC,mCAAmC;IACrC;QAAEvU,SAAS;QAAcwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIc,QAAQ;;IAAC;IACzD;QAAE2kB,SAAS;QAAawU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIc,QAAQ;;IAAC;IACxD;QAAE2kB,SAAS;QAAyCwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIc,QAAQ;;IAAC;IACpF;QAAE2kB,SAAS;QAAuBwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIc,QAAQ;;IAAC;IAClE;QAAE2kB,SAAS;QAAgBwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIe,YAAY;;IAAC;IAC/D;QAAE0kB,SAAS;QAAcwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIc,QAAQ;;IAAC;IACzD;QAAE2kB,SAAS;QAAuBwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIc,QAAQ;;IAAC;IAClE;QAAE2kB,SAAS;QAAgBwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIe,YAAY;;IAAC;IAC/D;QAAE0kB,SAAS;QAAsCwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIc,QAAQ;;IAAC;IACjF;QAAE2kB,SAAS;QAAgCwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIgB,eAAe,IAAI,OAAOhB,IAAIgB,eAAe,GAAG,MAAM,MAAM,KAAK;;IAAE;IACrI;QAAEykB,SAAS;QAA6BwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIe,YAAY;;IAAC;IAC5E;QAAE0kB,SAAS;QAAwBwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIc,QAAQ;;IAAC;IACnE;QAAE2kB,SAAS;QAA2BwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIgB,eAAe,IAAI,OAAOhB,IAAIgB,eAAe,GAAG,MAAM,MAAM,KAAK;;IAAE;IAChI;QAAEykB,SAAS;QAAoBwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIkoB,SAAS;;IAAC;IAChE;QAAEzC,SAAS;QAAoBwU,UAAU,SAAVA,SAAWj6B;mBAAQA,IAAIk6B,UAAU;;IAAC;CAClE;AACD,SAASC,oBAAoBr+B,KAAK;IAChC,IAAIA,SAAS,MAAM,OAAO;IAC1B,IAAMgH,UAAUhH,MAAMmG,IAAI;IAC1B,IAAI,CAACa,SAAS,OAAO;IACrB,IAAI82B,yBAAyB58B,IAAI,CAAC8F,UAAU,OAAO;IACnD,OAAO,oDAAoD9F,IAAI,CAAC8F;AAClE;AACA,SAASs3B;IACP,IAAI,OAAOnL,WAAW,eAAeA,OAAOG,eAAe,EAAE;QAC3D,IAAI;gBAGaiL,OAA2BA;YAF1C,IAAMA,MAAM,IAAIC,YAAY;YAC5BrL,OAAOG,eAAe,CAACiL;YACvB,IAAMv+B,QAAQ,EAACu+B,QAAAA,GAAG,CAAC,EAAE,cAANA,mBAAAA,QAAU,KAAK,UAAW,CAAA,EAACA,SAAAA,GAAG,CAAC,EAAE,cAANA,oBAAAA,SAAU,KAAK,OAAM;YAC/D,IAAIv+B,QAAQ,GAAG;gBACb,OAAOmD,OAAOnD;YAChB;QACF,EAAE,eAAM,CACR;IACF;IACA,OAAOmD,OAAOC,KAAKC,KAAK,CAACD,KAAKE,MAAM,KAAKG,OAAOg7B,gBAAgB,IAAI;AACtE;AACA,IAAIC;AACJ,SAASC;IACP,IAAMj/B,MAAM,OAAOsR,WAAW,cAAcA,OAAOpC,QAAQ,CAACmb,QAAQ,GAAG/Y,OAAOpC,QAAQ,CAAC6uB,MAAM,GAAG;IAChG,IAAI,CAACiB,sBAAsBA,mBAAmBh/B,GAAG,KAAKA,KAAK;QACzDg/B,qBAAqB;YAAEh/B,KAAAA;YAAKM,OAAOs+B;QAAqB;IAC1D;IACA,OAAOI,mBAAmB1+B,KAAK;AACjC;AACA,SAAS4+B,8BAA8BzR,OAAO,EAAEjpB,GAAG;IACjD,IAAIyB,MAAMwnB;QACL,kCAAA,2BAAA;;QAAL,QAAK,YAA+B+Q,qDAA/B,SAAA,6BAAA,QAAA,yBAAA,iCAAiE;YAAjE,kBAAA,aAAQvU,sBAAAA,SAASwU,uBAAAA;YACpB,IAAMn+B,QAAQm+B,SAASj6B;YACvB,IAAIlE,SAAS,QAAQA,UAAU,IAAI;gBACjC2F,MAAMA,IAAIC,OAAO,CAAC+jB,SAAS9jB,mBAAmB7F;YAChD;QACF;;QALK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAML,OAAO2F;AACT;AACA,SAASk5B,0BAA0BnD,MAAM,EAAEx3B,GAAG;QAC1BA,eACEA;IADpB,IAAM46B,aAAY56B,gBAAAA,IAAIc,QAAQ,cAAZd,oCAAAA,cAAciC,IAAI;IACpC,IAAM0rB,cAAc3tB,EAAAA,oBAAAA,IAAIe,YAAY,cAAhBf,wCAAAA,kBAAkBiC,IAAI,OAAMyoB;IAChD,IAAMmQ,UAAUrD,OAAOv8B,GAAG,CAAC;IAC3B,IAAMyyB,UAAU8J,OAAOv8B,GAAG,CAAC;IAC3B,IAAM6/B,SAAStD,OAAOv8B,GAAG,CAAC;IAC1B,IAAM8/B,WAAW/6B,IAAIgB,eAAe,IAAI,OAAOhB,IAAIgB,eAAe,GAAG,MAAM,MAAM,KAAK;IACtF,IAAI45B,WAAW;QACbpD,OAAOt3B,GAAG,CAAC,QAAQ06B;QACnBpD,OAAOt3B,GAAG,CAAC,UAAUytB,eAAeD,WAAW;QAC/C8J,OAAOt3B,GAAG,CAAC,UAAU66B,qBAAAA,sBAAAA,WAAaZ,oBAAoBW,UAAU,MAAMA;QACtE;IACF;IACA,IAAI,CAAC96B,IAAIiqB,KAAK,EAAE;QACduN,OAAO1rB,MAAM,CAAC;QACd0rB,OAAO1rB,MAAM,CAAC;QACd0rB,OAAO1rB,MAAM,CAAC;QACd;IACF;IACA,IAAMkvB,eAAe1J,QAAQuJ,WAAW,CAACV,oBAAoBU;IAC7D,IAAMI,eAAe3J,QAAQ5D,WAAW,CAACyM,oBAAoBzM;IAC7D,IAAIsN,gBAAgBC,gBAAgBtN,eAAe,CAACF,yBAAyBC,SAASC,cAAc;QAClG6J,OAAO1rB,MAAM,CAAC;QACd0rB,OAAO1rB,MAAM,CAAC;QACd0rB,OAAO1rB,MAAM,CAAC;QACd;IACF;IACA,IAAIkvB,cAAc;QAChB,IAAIb,oBAAoBzM,YAAYC,aAAa;YAC/C6J,OAAOt3B,GAAG,CAAC,UAAUytB;QACvB;QACA,IAAIwM,oBAAoBW,SAAS;YAC/BtD,OAAOt3B,GAAG,CAAC,UAAU66B,qBAAAA,sBAAAA,WAAY;QACnC;QACA;IACF;IACAvD,OAAO1rB,MAAM,CAAC;IACd0rB,OAAO1rB,MAAM,CAAC;IACd0rB,OAAO1rB,MAAM,CAAC;AAChB;AACA,SAASovB,2BAA2B1D,MAAM,EAAE5G,OAAO;IACjD,IAAMuK,WAAW,EAAE;IACnB3D,OAAOzsB,OAAO,CAAC,SAACqwB,QAAQ5/B;QACtB,IAAI,CAACA,OAAOq+B,uBAAuB78B,IAAI,CAACxB,MAAM;YAC5C2/B,SAASrsB,IAAI,CAACtT;QAChB;IACF;IACA,IAAIo1B,WAAWA,QAAQxhB,QAAQ,CAAC,MAAM;YAC/B,kCAAA,2BAAA;;YAAL,QAAK,YAAgBwhB,QAAQ/yB,KAAK,CAAC,KAAKkxB,KAAK,CAAC,uBAAzC,SAAA,6BAAA,QAAA,yBAAA,iCAA6C;gBAA7C,IAAMsM,SAAN;gBACH,IAAMv4B,UAAUu4B,OAAO35B,OAAO,CAAC,QAAQ;gBACvC,IAAI,CAACoB,SAAS;gBACdq4B,SAASrsB,IAAI,CAACusB,QAAQ,AAAC,IAAW,OAARv4B,UAAWA;YACvC;;YAJK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAKP;QACK,mCAAA,4BAAA;;QAAL,QAAK,aAAa,IAAI7E,IAAIk9B,8BAArB,UAAA,8BAAA,SAAA,0BAAA,kCAAgC;YAAhC,IAAM3/B,MAAN;YACH,IAAIA,KAAKg8B,OAAO1rB,MAAM,CAACtQ;QACzB;;QAFK;QAAA;;;iBAAA,8BAAA;gBAAA;;;gBAAA;sBAAA;;;;AAGP;AACA,SAAS8/B,oBAAoBC,GAAG;IAC9B,IAAI,CAACA,KAAK,OAAOA;IACjB,IAAI;QACF,IAAM95B,MAAM,IAAIP,IAAIq6B;QACpB,IAAMC,UAAU/5B,IAAIuH,YAAY,CAAC/N,GAAG,CAAC;QACrC,IAAIugC,YAAY,MAAM;YACpB,IAAMC,kBAAkB,EAAE;YAC1Bh6B,IAAIuH,YAAY,CAAC+B,OAAO,CAAC,SAACqwB,QAAQ5/B;gBAChC,IAAIA,OAAOq+B,uBAAuB78B,IAAI,CAACxB,MAAM;oBAC3CigC,gBAAgB3sB,IAAI,CAACtT,IAAIyG,IAAI;gBAC/B;YACF;YACA,IAAIw5B,gBAAgBt5B,MAAM,GAAG,GAAG;gBAC9B,IAAMu5B,gBAAgB;oBAACF,QAAQ95B,OAAO,CAAC,QAAQ;iBAAwB,CAAjD,OAA8B,qBAAG+5B,kBAAiBjoB,MAAM,CAAC8d,SAAS0C,IAAI,CAAC;gBAC7FvyB,IAAIuH,YAAY,CAAC+B,OAAO,CAAC,SAACqwB,QAAQ5/B;oBAChC,IAAIA,OAAOq+B,uBAAuB78B,IAAI,CAACxB,MAAM;wBAC3CiG,IAAIuH,YAAY,CAAC8C,MAAM,CAACtQ;oBAC1B;gBACF;gBACAiG,IAAIuH,YAAY,CAAC9I,GAAG,CAAC,MAAMw7B;gBAC3B,OAAOj6B,IAAI3D,QAAQ,GAAG4D,OAAO,CAC3B,oBACA,SAACi6B,QAAQhN,QAAQiN;2BAAQjN,SAASiN,IAAIl6B,OAAO,CAAC,OAAO;;YAEzD;QACF;QACAw5B,2BAA2Bz5B,IAAIuH,YAAY;QAC3C,OAAOvH,IAAI3D,QAAQ;IACrB,EAAE,eAAM;QACN,OAAOy9B;IACT;AACF;AACA,IAAIM,eAAe,aAAa,GAAG,IAAI59B,IAAI;IACzC;IACA;CACD;AACD,SAAS69B,kBAAkBnW,MAAM;IAC/B,IAAI;QACF,IAAMlkB,MAAM,IAAIP,IAAIykB;QACpB,IAAI,CAACkW,aAAaj6B,GAAG,CAACH,IAAIN,QAAQ,GAAG,OAAOwkB;QAC5C,IAAIlkB,IAAIuH,YAAY,CAACpH,GAAG,CAAC,YAAY,OAAO+jB;QAC5ClkB,IAAIuH,YAAY,CAAC9I,GAAG,CAAC,WAAW;QAChC,OAAOuB,IAAI3D,QAAQ;IACrB,EAAE,eAAM;QACN,OAAO6nB;IACT;AACF;AACA,SAASoW,gBAAgB9S,OAAO,EAAEjpB,GAAG;IACnC,IAAMg8B,cAActB,8BAA8BzR,SAASjpB;IAC3D,IAAIyB;IACJ,IAAI;QACFA,MAAM,IAAIP,IAAIo6B,oBAAoBU;IACpC,EAAE,eAAM;QACN,OAAOC,0BAA0BD,aAAah8B,IAAIk6B,UAAU;IAC9D;IACA,IAAM1C,SAAS/1B,IAAIuH,YAAY;IAC/BkyB,2BAA2B1D;IAC3BA,OAAOt3B,GAAG,CAAC,cAAcF,IAAIk6B,UAAU;IACvC1C,OAAOt3B,GAAG,CAAC,QAAQF,IAAIk8B,gBAAgB;IACvC,IAAIl8B,IAAIiqB,KAAK,EAAE;YACR,kCAAA,2BAAA;;YAAL,QAAK,YAAa8P,2CAAb,SAAA,6BAAA,QAAA,yBAAA,iCAAqC;gBAArC,IAAMv+B,MAAN;gBACHg8B,OAAO1rB,MAAM,CAACtQ;YAChB;;YAFK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGP,OAAO;QACLg8B,OAAOt3B,GAAG,CAAC,2BAA2B;IACxC;IACA,IAAIF,IAAIm8B,GAAG,IAAI,MAAM;QACnB3E,OAAOt3B,GAAG,CAAC,OAAOjB,OAAOe,IAAIm8B,GAAG;IAClC;IACA3E,OAAO1rB,MAAM,CAAC;IACd0rB,OAAO1rB,MAAM,CAAC;IACd,IAAI9L,IAAIo8B,gBAAgB,IAAI,MAAM;QAChC5E,OAAOt3B,GAAG,CAAC,QAAQjB,OAAOC,KAAKsF,GAAG,CAAC,GAAGtF,KAAK2B,KAAK,CAACb,IAAIo8B,gBAAgB;IACvE;IACA,IAAIp8B,IAAIq8B,gBAAgB,IAAI,MAAM;QAChC7E,OAAOt3B,GAAG,CAAC,QAAQjB,OAAOC,KAAKsF,GAAG,CAAC,GAAGtF,KAAK2B,KAAK,CAACb,IAAIq8B,gBAAgB;IACvE;IACA,IAAIr8B,IAAIs8B,SAAS,IAAI,MAAM;QACzB9E,OAAOt3B,GAAG,CAAC,QAAQjB,OAAOC,KAAKsF,GAAG,CAAC,GAAGtF,KAAK2B,KAAK,CAACb,IAAIs8B,SAAS;IAChE;IACA,IAAMC,cAAc/E,OAAOv8B,GAAG,CAAC,UAAU;IACzC,IAAI6+B,gBAAgB98B,IAAI,CAACu/B,cAAc;QACrC/E,OAAO1rB,MAAM,CAAC;QACd0rB,OAAO1rB,MAAM,CAAC;IAChB;IACA,IAAI,CAAC9L,IAAIiqB,KAAK,IAAIjqB,IAAIiB,OAAO,EAAE;QAC7B,IAAIk5B,oBAAoB3C,OAAOv8B,GAAG,CAAC,SAAS;YAC1Cu8B,OAAOt3B,GAAG,CAAC,OAAOF,IAAIiB,OAAO;QAC/B;QACA,IAAIk5B,oBAAoB3C,OAAOv8B,GAAG,CAAC,qBAAqB;YACtDu8B,OAAOt3B,GAAG,CAAC,mBAAmBs3B,OAAOv8B,GAAG,CAAC,UAAU+E,IAAIiB,OAAO;QAChE;IACF;IACA,IAAI,CAACjB,IAAIiqB,KAAK,EAAE;QACduN,OAAO1rB,MAAM,CAAC;QACd0rB,OAAO1rB,MAAM,CAAC;QACd0rB,OAAO1rB,MAAM,CAAC;IAChB;IACA,IAAI9L,IAAIynB,eAAe,IAAI,MAAM;QAC/B+P,OAAOt3B,GAAG,CAAC,UAAUF,IAAIynB,eAAe,GAAG,MAAM;IACnD;IACA,IAAIznB,IAAIwnB,cAAc,IAAI,MAAM;QAC9BgQ,OAAOt3B,GAAG,CAAC,OAAOF,IAAIwnB,cAAc,GAAG,SAAS;IAClD;IACA,IAAIxnB,IAAIkoB,SAAS,EAAE;QACjBsP,OAAOt3B,GAAG,CAAC,OAAOF,IAAIkoB,SAAS;IACjC;IACA,IAAIloB,IAAI8qB,cAAc,IAAI,MAAM;QAC9B0M,OAAOt3B,GAAG,CAAC,OAAOjB,OAAOe,IAAI8qB,cAAc;IAC7C,OAAO,IAAI9qB,IAAIiqB,KAAK,EAAE;QACpBuN,OAAOt3B,GAAG,CAAC,OAAO;IACpB;IACAy6B,0BAA0BnD,QAAQx3B;IAClC,IAAI,CAACA,IAAIiqB,KAAK,EAAE;QACd,IAAMuS,UAAUx8B,IAAIw8B,OAAO;QAC3B,IAAIA,CAAAA,oBAAAA,8BAAAA,QAASC,IAAI,KAAI,MAAM;YACzBjF,OAAOt3B,GAAG,CAAC,QAAQs8B,QAAQC,IAAI;QACjC;QACA,IAAID,CAAAA,oBAAAA,8BAAAA,QAASE,WAAW,KAAI,MAAM;YAChClF,OAAOt3B,GAAG,CAAC,gBAAgBs8B,QAAQE,WAAW;QAChD;QACA,IAAIF,CAAAA,oBAAAA,8BAAAA,QAASG,SAAS,KAAI,MAAM;YAC9BnF,OAAOt3B,GAAG,CAAC,cAAcs8B,QAAQG,SAAS;QAC5C;IACF;IACA,IAAI38B,IAAI48B,MAAM,EAAE;QACdpF,OAAOt3B,GAAG,CAAC,UAAU;IACvB;IACA,IAAIF,IAAI68B,YAAY,EAAE;QACpBrF,OAAOt3B,GAAG,CAAC,SAASF,IAAI68B,YAAY;IACtC;IACA,IAAI78B,IAAI88B,WAAW,EAAE;QACnBtF,OAAOt3B,GAAG,CAAC,SAASF,IAAI88B,WAAW;IACrC;IACA,IAAMC,YAAY,EAAE;IACpBvF,OAAOzsB,OAAO,CAAC,SAACjP,OAAON;QACrB,IAAI2+B,oBAAoBr+B,QAAQ;YAC9BihC,UAAUjuB,IAAI,CAACtT;QACjB;IACF;QACK,mCAAA,4BAAA;;QAAL,QAAK,aAAauhC,8BAAb,UAAA,8BAAA,SAAA,0BAAA,kCAAwB;YAAxB,IAAMvhC,OAAN;YACHg8B,OAAO1rB,MAAM,CAACtQ;QAChB;;QAFK;QAAA;;;iBAAA,8BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAGL0/B,2BAA2B1D;IAC3B,OAAO/1B,IAAI3D,QAAQ;AACrB;AACA,SAASm+B,0BAA0BhT,OAAO,EAAEiR,UAAU;IACpD,IAAM8C,kBAAkB;IACxB,IAAIA,gBAAgBhgC,IAAI,CAACisB,UAAU;QACjC,OAAOA,QAAQvnB,OAAO,CAACs7B,iBAAiB,AAAC,gBAA0B,OAAX9C;IAC1D;IACA,IAAMzR,MAAMQ,QAAQ7Z,QAAQ,CAAC,OAAO,MAAM;IAC1C,OAAO,AAAC,GAAYqZ,OAAVQ,SAA2BiR,OAAjBzR,KAAI,eAAwB,OAAXyR;AACvC;AACA,SAAS+C;QAAoBhe,YAAAA,iEAAY;IACvC,IAAMie,UAAU,CAAC;IACjB,IAAI,OAAOpwB,WAAW,aAAa;QACjC,OAAO/O,QAAQ0lB,OAAO,CAACyZ;IACzB;IACA,IAAMC,QAAQ,EAAE;IAChB,IAAMC,SAAStwB,OAAOuwB,QAAQ;IAC9B,IAAI,OAAOD,WAAW,YAAY;QAChCD,MAAMruB,IAAI,CACR,IAAI/Q,QAAQ,SAAC0lB;YACX,IAAI6Z,UAAU;YACd,IAAI;gBACFF,OAAO,oBAAoB,GAAG,SAACG,QAAQC;oBACrC,IAAIF,SAAS;oBACb,IAAIE,WAAWD,UAAWA,CAAAA,OAAOE,WAAW,KAAK,cAAcF,OAAOE,WAAW,KAAK,oBAAmB,GAAI;4BAG7DF,0BAAAA;wBAF9CD,UAAU;wBACVJ,QAAQT,IAAI,GAAGc,OAAOG,WAAW,GAAG,MAAM;wBAC1CR,QAAQS,cAAc,GAAGJ,OAAOG,WAAW,GAAGH,EAAAA,kBAAAA,OAAOK,OAAO,cAAdL,uCAAAA,2BAAAA,gBAAgBM,QAAQ,cAAxBN,+CAAAA,wBAA0B,CAAC,EAAE,MAAK,OAAO;wBACvF,IAAI,OAAOA,OAAOO,QAAQ,KAAK,YAAYP,OAAOO,QAAQ,EAAE;4BAC1DZ,QAAQR,WAAW,GAAGa,OAAOO,QAAQ;wBACvC;wBACA,IAAI;4BACFV,OAAO,uBAAuB,GAAG,YACjC,GAAGG,OAAOQ,UAAU;wBACtB,EAAE,eAAM,CACR;wBACAta;oBACF;gBACF;YACF,EAAE,eAAM;gBACNA;YACF;YACA1X,WAAW;gBACT,IAAI,CAACuxB,SAAS;oBACZA,UAAU;oBACV7Z;gBACF;YACF,GAAGxE;QACL;IAEJ;IACA,IAAM+e,SAASlxB,OAAOmxB,QAAQ;IAC9B,IAAI,OAAOD,WAAW,YAAY;QAChCb,MAAMruB,IAAI,CACR,IAAI/Q,QAAQ,SAAC0lB;YACX,IAAI;gBACFua,OAAO,cAAc,GAAG,SAACvd,MAAM+c;oBAC7B,IAAIA,WAAW,QAAO/c,iBAAAA,2BAAAA,KAAMyd,SAAS,MAAK,YAAYzd,KAAKyd,SAAS,EAAE;wBACpEhB,QAAQP,SAAS,GAAGlc,KAAKyd,SAAS;oBACpC;oBACAza;gBACF;YACF,EAAE,eAAM;gBACNA;YACF;YACA1X,WAAW0X,SAASxE;QACtB;IAEJ;IACA,IAAIke,MAAMh7B,MAAM,KAAK,GAAG;QACtB,OAAOpE,QAAQ0lB,OAAO,CAACyZ;IACzB;IACA,OAAOn/B,QAAQhD,GAAG,CAACoiC,OAAOzE,IAAI,CAAC;eAAMwE;;AACvC;AAEA,6BAA6B;AAC7B,SAASiB,oBAAoBriC,KAAK;IAChC,IAAMsiC,MAAM97B,WAAWxG,MAAMmG,IAAI;IACjC,IAAI,CAAC1C,OAAOilB,KAAK,CAAC4Z,MAAM,OAAOA;IAC/B,IAAM5hC,QAAQV,MAAMU,KAAK,CAAC,2CAA2CV,MAAMU,KAAK,CAAC;IACjF,IAAIA,SAASA,KAAK,CAAC,EAAE,IAAI,MAAM;QAC7B,IAAM6hC,OAAO7hC,KAAK,CAAC,EAAE;QACrB,IAAM8hC,IAAIh8B,WAAW+7B;QACrB,OAAO9+B,OAAOilB,KAAK,CAAC8Z,KAAK,KAAK,IAAIA;IACpC;IACA,OAAO,KAAK;AACd;AACA,SAASC,gBAAgBziC,KAAK;IAC5B,IAAM0iC,MAAM,CAAC;IACb,IAAMC,eAAe3iC,MAAMU,KAAK,CAAC;IACjC,IAAMkiC,gBAAgB5iC,MAAMU,KAAK,CAAC;IAClC,IAAIiiC,gBAAgBA,YAAY,CAAC,EAAE,IAAI,MAAM;QAC3C,IAAM1kB,IAAIzX,WAAWm8B,YAAY,CAAC,EAAE;QACpC,IAAI,CAACl/B,OAAOilB,KAAK,CAACzK,IAAIykB,IAAIG,OAAO,GAAG5kB;IACtC;IACA,IAAI2kB,iBAAiBA,aAAa,CAAC,EAAE,IAAI,MAAM;QAC7C,IAAMJ,IAAIh8B,WAAWo8B,aAAa,CAAC,EAAE;QACrC,IAAI,CAACn/B,OAAOilB,KAAK,CAAC8Z,IAAIE,IAAIzpB,QAAQ,GAAGupB;IACvC;IACA,IAAI,CAAE,CAAA,aAAaE,GAAE,KAAM,CAAE,CAAA,cAAcA,GAAE,GAAI;QAC/C,IAAMI,aAAa9iC,MAAMU,KAAK,CAAC;QAC/B,IAAIoiC,cAAcA,UAAU,CAAC,EAAE,IAAIA,UAAU,CAAC,EAAE,EAAE;YAChD,IAAMD,UAAUr8B,WAAWs8B,UAAU,CAAC,EAAE;YACxC,IAAM7pB,WAAWzS,WAAWs8B,UAAU,CAAC,EAAE;YACzC,IAAI,CAACr/B,OAAOilB,KAAK,CAACma,YAAY,CAAE,CAAA,aAAaH,GAAE,GAAIA,IAAIG,OAAO,GAAGA;YACjE,IAAI,CAACp/B,OAAOilB,KAAK,CAACzP,aAAa,CAAE,CAAA,cAAcypB,GAAE,GAAIA,IAAIzpB,QAAQ,GAAGA;QACtE;IACF;IACA,IAAI,aAAaypB,OAAO,cAAcA,KAAK,OAAOA;IAClD,OAAO,KAAK;AACd;AACA,SAASK,mBAAmB/iC,KAAK;IAC/B,IAAMgjC,QAAQ,CAAC;IACf,IAAMC,QAAQ;IACd,IAAIviC;IACJ,MAAO,AAACA,CAAAA,QAAQuiC,MAAMC,IAAI,CAACljC,MAAK,MAAO,KAAM;YAC/BU,SACCA,MAAAA;QADb,IAAMhB,OAAMgB,UAAAA,KAAK,CAAC,EAAE,cAARA,qBAAAA,UAAY;QACxB,IAAIyiC,UAASziC,QAAAA,WAAAA,KAAK,CAAC,EAAE,cAARA,sBAAAA,WAAYA,KAAK,CAAC,EAAE,cAApBA,kBAAAA,OAAwB;QACrC,IAAIyiC,OAAO3vB,UAAU,CAAC,QAAQ2vB,OAAOl8B,QAAQ,CAAC,MAAM;YAClDk8B,SAASA,OAAOlQ,KAAK,CAAC,GAAG,CAAC;QAC5B;QACA,IAAIvzB,KAAK;YACPsjC,KAAK,CAACtjC,IAAI,GAAGyjC;QACf;IACF;IACA,OAAOH;AACT;AACA,SAASI,SAAStD,GAAG;IACnB,IAAIA,OAAO,MAAM,OAAO,KAAK;IAC7B,IAAMj5B,IAAI,OAAOi5B,QAAQ,WAAWt5B,WAAWs5B,OAAOr8B,OAAOq8B;IAC7D,OAAOr8B,OAAOilB,KAAK,CAAC7hB,KAAK,KAAK,IAAIA;AACpC;AACA,SAASw8B,sBAAsBC,MAAM;IACnC,IAAM7D,MAAM6D,OAAO7D,GAAG;IACtB,IAAI,CAACA,KAAK,OAAO;IACjB,IAAIA,IAAI3N,GAAG,EAAE;QACX,IAAMA,MAAM3uB,OAAOs8B,IAAI3N,GAAG;QAC1B,OAAOA,IAAIxe,QAAQ,CAAC,oBAAoBwe,IAAIxe,QAAQ,CAAC,mBAAmBwe,IAAIxe,QAAQ,CAAC;IACvF;IACA,IAAImsB,IAAI8D,GAAG,EAAE,OAAO;IACpB,IAAI9D,IAAI+D,mBAAmB,EAAE,OAAO;IACpC,OAAO;AACT;AACA,SAASC,qBAAqBzjC,KAAK;IACjC,IAAI;QACF,IAAI,OAAOA,UAAU,UAAU,OAAOA;QACtC,IAAM0jC,UAAU,IAAIC,YAAY,SAAS;YAAE/e,OAAO;QAAM;QACxD,IAAM9J,OAAO4oB,QAAQE,MAAM,CAAC5jC;QAC5B,IAAI8a,QAAQ,cAAc5Z,IAAI,CAAC4Z,OAAO,OAAOA;QAC7C,IAAI+oB,MAAM;QACV,IAAK,IAAIpQ,IAAI,GAAGA,IAAIzzB,MAAMqG,MAAM,EAAEotB,IAChCoQ,OAAO1gC,OAAO2gC,YAAY,CAAC9jC,KAAK,CAACyzB,EAAE;QACrC,OAAOoQ;IACT,EAAE,eAAM;QACN,OAAO,KAAK;IACd;AACF;AACA,SAASE,wBAAwB7e,IAAI;IACnC,IAAMnB,aAAa;QAACmB,iBAAAA,2BAAAA,KAAMzZ,KAAK;QAAEyZ,iBAAAA,2BAAAA,KAAM8e,QAAQ;KAAC;QAC3C,kCAAA,2BAAA;;QAAL,QAAK,YAAmBjgB,+BAAnB,SAAA,6BAAA,QAAA,yBAAA,iCAA+B;YAA/B,IAAMrL,YAAN;YACH,IAAI,OAAOA,cAAc,YAAYjV,OAAOC,QAAQ,CAACgV,YAAY;gBAC/D,OAAOA;YACT;QACF;;QAJK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAKL,OAAO,KAAK;AACd;AACA,SAASurB,mBAAmBnS,GAAG;IAC7B,IAAMhX,OAAO2oB,qBAAqB3R,IAAI9xB,KAAK;IAC3C,IAAI,CAAC8a,MAAM,OAAO,KAAK;IACvB,IAAMopB,cAAcppB,KAAKpa,KAAK,CAAC,qCAAqCoa,KAAKpa,KAAK,CAAC;IAC/E,IAAIwjC,aAAa;YACFA;QAAb,IAAMC,MAAM,EAACD,gBAAAA,WAAW,CAAC,EAAE,cAAdA,2BAAAA,gBAAkB,IAAI/9B,IAAI;QACvC,IAAMi+B,MAAM/B,oBAAoB8B;QAChC,IAAMb,SAAS;YACbn1B,MAAM;WACH2jB,IAAIuS,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYvS,IAAIuS,UAAU;QAAC,IAAI,CAAC,GAC9DD,QAAQ,KAAK,IAAI;YAAEE,iBAAiBF;QAAI,IAAI,CAAC;YAChD3E,KAAK;gBAAE8D,KAAKzoB;YAAK;;QAEnB,OAAOwoB;IACT;IACA,IAAMiB,kBAAkBzpB,KAAKpa,KAAK,CAAC;IACnC,IAAI6jC,iBAAiB;YACNA;QAAb,IAAMJ,OAAM,EAACI,oBAAAA,eAAe,CAAC,EAAE,cAAlBA,+BAAAA,oBAAsB,IAAIp+B,IAAI;QAC3C,IAAMq+B,OAAO/B,gBAAgB0B;QAC7B,IAAMb,UAAS;YACbn1B,MAAM;WACH2jB,IAAIuS,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYvS,IAAIuS,UAAU;QAAC,IAAI,CAAC,GAC9DG,CAAAA,iBAAAA,2BAAAA,KAAMvrB,QAAQ,MAAK,KAAK,IAAI;YAAEqrB,iBAAiBE,KAAKvrB,QAAQ;QAAC,IAAI,CAAC;YACrEwmB,KAAK;gBAAE8D,KAAKzoB;YAAK;;QAEnB,OAAOwoB;IACT;IACA,IAAMmB,aAAa3pB,KAAKpa,KAAK,CAAC,sBAAsBoa,KAAKpa,KAAK,CAAC;IAC/D,IAAI+jC,YAAY;QACd,IAAMnB,UAAS;YACbn1B,MAAM;WACH2jB,IAAIuS,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYvS,IAAIuS,UAAU;QAAC,IAAI,CAAC;YACjE5E,KAAK;gBAAE8D,KAAKzoB;YAAK;;QAEnB,OAAOwoB;IACT;IACA,IAAMoB,iBAAiB5pB,KAAKpa,KAAK,CAAC;IAClC,IAAIgkC,gBAAgB;YACeA,kBAGZ1B;QAHrB,IAAMA,QAAQD,oBAAmB2B,mBAAAA,cAAc,CAAC,EAAE,cAAjBA,8BAAAA,mBAAqB;QACtD,IAAMC,aAAa,gBAAgB3B,SAASA,KAAK,CAAC,aAAa,KAAK,KAAK;QACzE,IAAM4B,YAAY,eAAe5B,SAASA,KAAK,CAAC,YAAY,KAAK,KAAK;QACtE,IAAM6B,QAAQ1hC,QAAO6/B,eAAAA,KAAK,CAAC,QAAQ,cAAdA,0BAAAA,eAAkB;QACvC,IAAM/pB,WAAWmqB,SAASJ,KAAK,CAAC,WAAW;QAC3C,IAAI2B,cAAc,wBAAwBzjC,IAAI,CAAC2jC,QAAQ;YACrD,IAAMvB,UAAS;gBACbn1B,MAAM;eACH2jB,IAAIuS,UAAU,KAAK,KAAK,IAAI;gBAAEA,YAAYvS,IAAIuS,UAAU;YAAC,IAAI,CAAC,GAC9DprB,aAAa,KAAK,IAAI;gBAAEqrB,iBAAiBrrB;YAAS,IAAI,CAAC;gBAC1DwmB,KAAK;oBAAE8D,KAAKzoB;oBAAMkoB,OAAAA;gBAAM;;YAE1B,OAAOM;QACT;QACA,IAAIsB,WAAW;YACb,IAAMtB,UAAS;gBACbn1B,MAAM;eACH2jB,IAAIuS,UAAU,KAAK,KAAK,IAAI;gBAAEA,YAAYvS,IAAIuS,UAAU;YAAC,IAAI,CAAC;gBACjE5E,KAAK;oBAAE8D,KAAKzoB;oBAAMkoB,OAAAA;gBAAM;;YAE1B,OAAOM;QACT;IACF;IACA,IAAI,cAAcpiC,IAAI,CAAC4Z,OAAO;QAC5B,IAAMwoB,UAAS;YACbn1B,MAAM;WACH2jB,IAAIuS,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYvS,IAAIuS,UAAU;QAAC,IAAI,CAAC;YACjE5E,KAAK;gBAAE8D,KAAKzoB;YAAK;;QAEnB,OAAOwoB;IACT;IACA,IAAI,aAAapiC,IAAI,CAAC4Z,OAAO;QAC3B,IAAMwoB,UAAS;YACbn1B,MAAM;WACH2jB,IAAIuS,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYvS,IAAIuS,UAAU;QAAC,IAAI,CAAC;YACjE5E,KAAK;gBAAE8D,KAAKzoB;YAAK;;QAEnB,OAAOwoB;IACT;IACA,IAAIxR,AAAS,YAATA,IAAI9xB,KAAK,EAAYqzB,aAAY;QACnC,IAAMyR,MAAMC,kBAAkBjT,IAAI9xB,KAAK;QACvC,IAAI8kC,KAAK,OAAOA;IAClB;IACA,OAAO,KAAK;AACd;AACA,SAASE,yBAAyBr4B,OAAO;IACvC,IAAIA,AAAO,YAAPA,SAAmB0mB,aAAY;QACjC,OAAO1mB;IACT;IACA,IAAIA,AAAO,YAAPA,SAAmBs4B,cAAa;QAClC,OAAO,IAAI5R,WAAW1mB;IACxB;IACA,IAAIs4B,YAAYC,MAAM,CAACv4B,UAAU;QAC/B,IAAMw4B,OAAOx4B;QACb,OAAO,IAAI0mB,WAAW8R,KAAKzM,MAAM,EAAEyM,KAAKC,UAAU,EAAED,KAAKE,UAAU;IACrE;IACA,OAAO,KAAK;AACd;AACA,SAASC,qBAAqB3gB,IAAI;IAChC,IAAM4gB,cAAc;QAAC;QAAK;QAAK;KAAI;QAC9B,kCAAA,2BAAA;;QAAL,QAAK,YAAoBA,gCAApB,SAAA,6BAAA,QAAA,yBAAA,iCAAiC;YAAjC,IAAMC,aAAN;YACH,IAAMC,kBAAkBD,eAAe,MAAM,IAAI;YACjD,IAAK,IAAIz+B,SAAS,GAAGA,SAASy+B,YAAYz+B,SAAU;gBAClD,IAAI2+B,iBAAiB;gBACrB,IAAK,IAAIC,cAAc5+B,QAAQ4+B,cAAcF,kBAAkB9gB,KAAKte,MAAM,IAAIq/B,iBAAiB,GAAGC,eAAeH,WAAY;oBAC3H,IAAI7gB,IAAI,CAACghB,cAAcF,gBAAgB,KAAK,IAAI;wBAC9C;oBACF;oBACAC;gBACF;gBACA,IAAIA,kBAAkB,GAAG;oBACvB,OAAO;wBAAE3+B,QAAAA;wBAAQy+B,YAAAA;wBAAYC,iBAAAA;oBAAgB;gBAC/C;YACF;QACF;;QAdK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAeL,OAAO,KAAK;AACd;AACA,SAASG,mBAAmBj5B,OAAO,EAAEk5B,gBAAgB;IACnD,IAAI,CAACA,kBAAkB;QACrB,OAAO,KAAK;IACd;IACA,IAAMC,eAAen5B,OAAO,CAAC,EAAE;IAC/B,IAAIm5B,gBAAgB,MAAM;QACxB,OAAO,KAAK;IACd;IACA,IAAMC,eAAe,IAAID;IACzB,OAAOC,eAAep5B,QAAQtG,MAAM,GAAG0/B,eAAe,KAAK;AAC7D;AACA,SAASC,oBAAoBrhB,IAAI,EAAE5d,MAAM;QAC9B4d,QAAqCA;IAA9C,OAAO,AAAC,CAAA,EAACA,SAAAA,IAAI,CAAC5d,SAAS,EAAE,cAAhB4d,oBAAAA,SAAoB,KAAK,EAAC,KAAM,MAAKA,UAAAA,IAAI,CAAC5d,SAAS,EAAE,cAAhB4d,qBAAAA,UAAoB;AACpE;AACA,SAASshB,gBAAgBt5B,OAAO,EAAEk5B,gBAAgB,EAAEK,OAAO;IACzD,IAAMH,eAAeH,mBAAmBj5B,SAASk5B;IACjD,IAAIE,gBAAgB,QAAQA,eAAe,KAAKp5B,QAAQtG,MAAM,EAAE;QAC9D;IACF;IACA,IAAIsG,OAAO,CAACo5B,aAAa,KAAK,GAAG;QAC/B;IACF;IACA,IAAMI,gBAAgBH,oBAAoBr5B,SAASo5B;IACnD,IAAMK,aAAahjC,KAAKuF,GAAG,CACzBgE,QAAQtG,MAAM,EACd0/B,eAAe,IAAII;IAErB,IAAK,IAAIp/B,SAASg/B,eAAe,GAAGh/B,SAAS,KAAKq/B,aAAa,GAAGr/B,UAAU,EAAG;YACtD4F,iBAA8BA,WACvCA,YAAwCA;QADtD,IAAM05B,gBAAgB,EAAC15B,kBAAAA,OAAO,CAAC5F,OAAO,cAAf4F,6BAAAA,kBAAmB,MAAM,MAAKA,YAAAA,OAAO,CAAC5F,SAAS,EAAE,cAAnB4F,uBAAAA,YAAuB;QAC5E,IAAM25B,MAAM,AAAC,CAAA,EAAC35B,aAAAA,OAAO,CAAC5F,SAAS,EAAE,cAAnB4F,wBAAAA,aAAuB,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAAC5F,SAAS,EAAE,cAAnB4F,wBAAAA,aAAuB;QAC7E,IAAI05B,kBAAkB,GAAG;YACvBH,QAAQz2B,GAAG,CAAC62B;QACd;IACF;AACF;AACA,SAASC,0BAA0B5hB,IAAI,EAAElZ,KAAK,EAAE+6B,GAAG;IACjD,IAAIz/B,SAAS0E;IACb,MAAO1E,SAAS,KAAKy/B,IAAK;YACZ7hB,cACGA,QAObA,uBACAA,SACAA,SACAA;QAXF,IAAMmN,OAAMnN,eAAAA,IAAI,CAAC5d,OAAO,cAAZ4d,0BAAAA,eAAgB;QAC5B,IAAMte,UAASse,SAAAA,IAAI,CAAC5d,SAAS,EAAE,cAAhB4d,oBAAAA,SAAoB;QACnC,IAAM8hB,kBAAkB1/B,SAAS;QACjC,IAAM2/B,gBAAgBD,kBAAkBpgC;QACxC,IAAIqgC,gBAAgBF,KAAK;YACvB,OAAO;QACT;QACA,IAAMG,eAAetgC,UAAU,IAAIlD,OAAO2gC,YAAY,EACpDnf,wBAAAA,IAAI,CAAC8hB,gBAAgB,cAArB9hB,mCAAAA,wBAAyB,IACzBA,UAAAA,IAAI,CAAC8hB,kBAAkB,EAAE,cAAzB9hB,qBAAAA,UAA6B,IAC7BA,UAAAA,IAAI,CAAC8hB,kBAAkB,EAAE,cAAzB9hB,qBAAAA,UAA6B,IAC7BA,UAAAA,IAAI,CAAC8hB,kBAAkB,EAAE,cAAzB9hB,qBAAAA,UAA6B,KAC3B;QACJ,IAAImN,QAAQ,OAAO6U,iBAAiB,UAAUA,iBAAiB,QAAQ;YACrE,OAAO;QACT;QACA5/B,SAAS2/B;IACX;IACA,OAAO;AACT;AACA,SAASE,gBAAgBj6B,OAAO,EAAEk5B,gBAAgB,EAAEgB,YAAY;QAalCl6B,WAA+CA;IAZ3E,IAAMo5B,eAAeH,mBAAmBj5B,SAASk5B;IACjD,IAAIE,gBAAgB,QAAQA,eAAe,MAAMp5B,QAAQtG,MAAM,EAAE;QAC/D;IACF;IACA,IAAIsG,OAAO,CAACo5B,aAAa,KAAK,GAAG;QAC/B;IACF;IACA,IAAMI,gBAAgBH,oBAAoBr5B,SAASo5B;IACnD,IAAMK,aAAahjC,KAAKuF,GAAG,CACzBgE,QAAQtG,MAAM,EACd0/B,eAAe,IAAII;IAErB,IAAMW,oBAAoB,AAAC,CAAA,EAACn6B,YAAAA,OAAO,CAACo5B,eAAe,GAAG,cAA1Bp5B,uBAAAA,YAA8B,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAACo5B,eAAe,GAAG,cAA1Bp5B,wBAAAA,aAA8B;IACzG,IAAI5F,SAASg/B,eAAe,KAAKe;IACjC,MAAO//B,SAAS,KAAKq/B,aAAa,EAAG;YAChBz5B,iBACKA,YAAwCA,YACzCA,YAAwCA;QAF/D,IAAMo6B,cAAap6B,kBAAAA,OAAO,CAAC5F,OAAO,cAAf4F,6BAAAA,kBAAmB;QACtC,IAAMq6B,gBAAgB,AAAC,CAAA,EAACr6B,aAAAA,OAAO,CAAC5F,SAAS,EAAE,cAAnB4F,wBAAAA,aAAuB,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAAC5F,SAAS,EAAE,cAAnB4F,wBAAAA,aAAuB;QACvF,IAAMs6B,eAAe,AAAC,CAAA,EAACt6B,aAAAA,OAAO,CAAC5F,SAAS,EAAE,cAAnB4F,wBAAAA,aAAuB,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAAC5F,SAAS,EAAE,cAAnB4F,wBAAAA,aAAuB;QACtF,IAAM85B,kBAAkB1/B,SAAS;QACjC,IAAM2/B,gBAAgBtjC,KAAKuF,GAAG,CAAC89B,kBAAkBQ,cAAcb,aAAa;QAC5E,IAAIW,eAAe,OAAOA,eAAe,KAAKR,0BAA0B55B,SAAS85B,iBAAiBC,gBAAgB;YAChHG,aAAap3B,GAAG,CAACu3B;QACnB;QACAjgC,SAAS0/B,kBAAkBQ;IAC7B;AACF;AACA,SAASC,4BAA4BC,OAAO,EAAEC,iBAAiB;IAC7D,IAAIC,WAAW;IACf,IAAK,IAAI5T,IAAI,GAAGA,IAAI0T,QAAQ9gC,MAAM,EAAEotB,IAAK;YACX0T;QAA5BE,WAAWA,WAAW,OAAMF,aAAAA,OAAO,CAAC1T,EAAE,cAAV0T,wBAAAA,aAAc,OAAO;IACnD;IACA,IAAMznC,MAAM,AAAC,GAAoB2nC,OAAlBF,QAAQ9gC,MAAM,EAAC,KAAY,OAATghC;IACjC,IAAID,kBAAkBthC,GAAG,CAACpG,MAAM;QAC9B,OAAO;IACT;IACA0nC,kBAAkB33B,GAAG,CAAC/P;IACtB,IAAI0nC,kBAAkBhf,IAAI,GAAG,KAAK;QAChC,IAAMkf,WAAWF,kBAAkBjjC,MAAM,GAAGqf,IAAI,GAAGxjB,KAAK;QACxD,IAAIsnC,UAAU;YACZF,kBAAkBp3B,MAAM,CAACs3B;QAC3B;IACF;IACA,OAAO;AACT;AACA,SAASC,uBAAuBJ,OAAO,EAAEK,OAAO,EAAEJ,iBAAiB;IACjE,IAAID,OAAO,CAAC,EAAE,KAAK,OAAOD,4BAA4BC,SAASC,oBAAoB;QACjF;IACF;IACA,IAAM9D,SAASyB,kBAAkBoC;IACjC,IAAI,CAAC7D,QAAQ;QACX;IACF;IACAA,OAAO7D,GAAG,GAAG,wCACR,SAAO6D,OAAO7D,GAAG,MAAK,YAAY6D,OAAO7D,GAAG,GAAG6D,OAAO7D,GAAG,GAAG,CAAC;QAChErpB,QAAQ;;IAEVoxB,QAAQx0B,IAAI,CAACswB;AACf;AACA,SAASmE,kBAAkBnB,GAAG,EAAEpT,KAAK,EAAEwU,UAAU,EAAEF,OAAO,EAAEJ,iBAAiB;IAC3E,IAAMO,YAAYD,WAAWvoC,GAAG,CAACmnC;IACjC,IAAI,CAACqB,WAAW;QACd;IACF;IACA,IAAK,IAAIlU,IAAI,GAAGA,IAAIP,MAAM7sB,MAAM,IAAIshC,UAAUzU,KAAK,CAAC7sB,MAAM,GAAGshC,UAAUC,cAAc,EAAEnU,IAAK;YACrEP;QAArByU,UAAUzU,KAAK,CAAClgB,IAAI,EAACkgB,WAAAA,KAAK,CAACO,EAAE,cAARP,sBAAAA,WAAY;IACnC;IACA,IAAIyU,UAAUzU,KAAK,CAAC7sB,MAAM,IAAIshC,UAAUC,cAAc,EAAE;QACtDF,WAAW13B,MAAM,CAACs2B;QAClBiB,uBAAuB,IAAIlU,WAAWsU,UAAUzU,KAAK,GAAGsU,SAASJ;IACnE;AACF;AACA,SAASS,iCAAiCvB,GAAG,EAAE35B,OAAO,EAAEk5B,gBAAgB,EAAE6B,UAAU,EAAEF,OAAO,EAAEJ,iBAAiB;IAC9G,IAAIz6B,QAAQtG,MAAM,KAAK,GAAG;QACxB;IACF;IACA,IAAIU,SAAS;IACb,IAAI8+B,kBAAkB;YACCl5B;QAArB,IAAMm5B,gBAAen5B,YAAAA,OAAO,CAAC,EAAE,cAAVA,uBAAAA,YAAc;QACnC,IAAMm7B,oBAAoBJ,WAAWvoC,GAAG,CAACmnC;QACzC,IAAIwB,qBAAqBhC,eAAe,GAAG;YACzC2B,kBACEnB,KACA35B,QAAQo7B,QAAQ,CAAC,GAAG3kC,KAAKuF,GAAG,CAAC,IAAIm9B,cAAcn5B,QAAQtG,MAAM,IAC7DqhC,YACAF,SACAJ;QAEJ;QACAM,WAAW13B,MAAM,CAACs2B;QAClBv/B,SAAS,IAAI++B;IACf,OAAO;QACL2B,kBAAkBnB,KAAK35B,SAAS+6B,YAAYF,SAASJ;QACrD;IACF;IACA,MAAOrgC,SAAS,KAAK4F,QAAQtG,MAAM,CAAE;QACnC,IAAM2hC,UAAUr7B,OAAO,CAAC5F,OAAO;QAC/B,IAAIihC,WAAW,QAAQA,YAAY,KAAK;YACtC;QACF;QACA,IAAM7B,gBAAgBH,oBAAoBr5B,SAAS5F;QACnD,IAAMkhC,cAAc,IAAI9B;QACxB,IAAIA,iBAAiB,KAAK8B,eAAe,GAAG;YAC1C;QACF;QACA,IAAIlhC,SAASkhC,eAAet7B,QAAQtG,MAAM,EAAE;YAC1CkhC,uBACE56B,QAAQo7B,QAAQ,CAAChhC,QAAQA,SAASkhC,cAClCT,SACAJ;YAEFrgC,UAAUkhC;QACZ,OAAO;YACLP,WAAWtjC,GAAG,CAACkiC,KAAK;gBAClBpT,OAAOtmB,MAAMrN,IAAI,CAACoN,QAAQo7B,QAAQ,CAAChhC;gBACnC6gC,gBAAgBK;YAClB;YACA;QACF;IACF;AACF;AACA,SAASC,yBAAyBvjB,IAAI,EAAEkiB,YAAY,EAAEX,OAAO,EAAEkB,iBAAiB;IAC9E,IAAMe,aAAa7C,qBAAqB3gB;IACxC,IAAI,CAACwjB,YAAY;QACf,OAAO,EAAE;IACX;IACA,IAAMX,UAAU,EAAE;IAClB,IAAMY,oBAAoB,aAAa,GAAG,IAAIlmC;IAC9C,IAAK,IAAIyjC,cAAcwC,WAAWphC,MAAM,EAAE4+B,cAAcwC,WAAW3C,UAAU,IAAI7gB,KAAKte,MAAM,EAAEs/B,eAAewC,WAAW3C,UAAU,CAAE;QAClI,IAAM6C,UAAU1C,cAAcwC,WAAW1C,eAAe;QACxD,IAAI9gB,IAAI,CAAC0jB,QAAQ,KAAK,IAAI;YACxB;QACF;QACA,IAAMC,aAAa3jB,IAAI,CAAC0jB,UAAU,EAAE;QACpC,IAAME,YAAY5jB,IAAI,CAAC0jB,UAAU,EAAE;QACnC,IAAMG,aAAa7jB,IAAI,CAAC0jB,UAAU,EAAE;QACpC,IAAIC,cAAc,QAAQC,aAAa,QAAQC,cAAc,QAAQ,AAACF,CAAAA,aAAa,GAAE,MAAO,GAAG;YAC7F;QACF;QACA,IAAMzC,mBAAmB,AAACyC,CAAAA,aAAa,EAAC,MAAO;QAC/C,IAAMhC,MAAM,AAACgC,CAAAA,aAAa,EAAC,KAAM,IAAIC;QACrC,IAAME,yBAAyBD,cAAc,IAAI;QACjD,IAAME,aAAaD,2BAA2B,KAAKA,2BAA2B;QAC9E,IAAI,CAACC,YAAY;YACf;QACF;QACA,IAAIC,eAAeN,UAAU;QAC7B,IAAII,2BAA2B,GAAG;YAChC,IAAMG,mBAAmBjkB,IAAI,CAACgkB,aAAa;YAC3C,IAAIC,oBAAoB,MAAM;gBAC5B;YACF;YACAD,gBAAgB,IAAIC;QACtB;QACA,IAAMC,aAAazlC,KAAKuF,GAAG,CAAC0/B,UAAU,KAAK1jB,KAAKte,MAAM;QACtD,IAAIsiC,gBAAgBE,cAAcF,gBAAgBhkB,KAAKte,MAAM,EAAE;YAC7D;QACF;QACA,IAAMsG,UAAUgY,KAAKojB,QAAQ,CAACY,cAAcE;QAC5C,IAAIvC,QAAQ,GAAG;YACbL,gBAAgBt5B,SAASk5B,kBAAkBK;QAC7C,OAAO,IAAIA,QAAQpgC,GAAG,CAACwgC,MAAM;YAC3BM,gBAAgBj6B,SAASk5B,kBAAkBgB;QAC7C,OAAO,IAAIA,aAAa/gC,GAAG,CAACwgC,MAAM;YAChCuB,iCACEvB,KACA35B,SACAk5B,kBACAuC,mBACAZ,SACAJ;QAEJ;IACF;IACA,OAAOI;AACT;AACA,IAAIsB,0BAAY;aAAZA,UACUvK,GAAG;gCADbuK;QAEA,IAAI,CAACvK,GAAG,GAAGA;QACX,IAAI,CAACwK,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAG;;;;YAEhBC,KAAAA;mBAAAA,SAAAA,SAASC,OAAO;gBACd,IAAIj0B,SAAS;gBACb,MAAOi0B,UAAU,EAAG;oBAClB,IAAI,IAAI,CAACH,OAAO,IAAI,IAAI,CAACxK,GAAG,CAACl4B,MAAM,EAAE,OAAO4O;oBAC5C,IAAMk0B,kBAAkB,IAAI,IAAI,CAACH,MAAM;oBACvC,IAAMI,SAAShmC,KAAKuF,GAAG,CAACugC,SAASC;oBACjC,IAAME,cAAc,IAAI,CAAC9K,GAAG,CAAC,IAAI,CAACwK,OAAO,CAAC;oBAC1C,IAAM5sB,QAAQgtB,kBAAkBC;oBAChC,IAAME,OAAO,AAAC,CAAA,KAAKF,MAAK,IAAK,IAAI;oBACjC,IAAMG,OAAOF,eAAeltB,QAAQmtB;oBACpCr0B,SAASA,UAAUm0B,SAASG;oBAC5B,IAAI,CAACP,MAAM,IAAII;oBACf,IAAI,IAAI,CAACJ,MAAM,IAAI,GAAG;wBACpB,IAAI,CAACA,MAAM,GAAG;wBACd,IAAI,CAACD,OAAO,IAAI;oBAClB;oBACAG,WAAWE;gBACb;gBACA,OAAOn0B,WAAW;YACpB;;;YACAu0B,KAAAA;mBAAAA,SAAAA,SAAS3iC,CAAC;gBACR,IAAI,CAACoiC,QAAQ,CAACpiC;YAChB;;;YACI4iC,KAAAA;iBAAJ;gBACE,OAAO,IAAI,CAACT,MAAM,KAAK,IAAI,IAAI,CAACD,OAAO,GAAG,IAAI,CAACA,OAAO,GAAG;YAC3D;;;;;AAEF,SAASW,eAAeC,CAAC,EAAEC,kBAAkB;IAC3C,IAAMC,oBAAoBF,EAAEV,QAAQ,CAAC,OAAO;IAC5C,IAAI,CAACY,mBAAmB;QACtBF,EAAEV,QAAQ,CAAC;QACX,OAAO,KAAK;IACd;IACAU,EAAEV,QAAQ,CAAC;IACX,IAAMa,OAAOH,EAAEV,QAAQ,CAAC;IACxB,IAAMc,MAAMJ,EAAEV,QAAQ,CAAC;IACvB,IAAMe,WAAW,AAACF,CAAAA,OAAO,aAAaC,MAAMH,kBAAiB,IAAK;IAClE,OAAOI,WAAW;AACpB;AACA,SAASC,iCAAiCC,kBAAkB;IAC1D,OAAQA;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO;QACT,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO;QACT;YACE,OAAO,KAAK;IAChB;AACF;AACA,SAASC,kCAAkCC,UAAU;QAKjDA,cACAA,eACAA,eACAA,eAK2BA,eAAmCA,eAA+BA,eAA6BA,eAClGA,eAIZA,eAwBiBA,oBAKJA;IA9C3B,IAAIA,WAAW/jC,MAAM,GAAG,IAAI;QAC1B,OAAO,KAAK;IACd;IACA,IAAMgkC,aAAalnC,OAAO2gC,YAAY,EACpCsG,eAAAA,UAAU,CAAC,EAAE,cAAbA,0BAAAA,eAAiB,IACjBA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,IACjBA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,IACjBA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB;IAEnB,IAAIC,eAAe,QAAQ;QACzB,OAAO,KAAK;IACd;IACA,IAAMC,sBAAsB,EAACF,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,KAAK,WAAY,CAAA,EAACA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,MAAM,EAAC,IAAM,CAAA,EAACA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,MAAM,CAAA,MAAMA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB;IAC7I,IAAMG,kBAAkB,AAAC,CAAA,EAACH,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,KAAK,GAAE,MAAO;IACzD,IAAIG,iBAAiB;QACnB,OAAO,KAAK;IACd;IACA,IAAMzQ,SAAQsQ,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB;IAC/B,IAAMI,0BAA0B,AAAC1Q,CAAAA,QAAQ,GAAE,MAAO;IAClD,IAAM2Q,2BAA2B,AAAC3Q,CAAAA,QAAQ,EAAC,MAAO;IAClD,IAAI/yB,SAAS;IACb,IAAI,CAACyjC,yBAAyB;YACLJ;QAAvB,IAAMM,kBAAiBN,sBAAAA,UAAU,CAACrjC,OAAO,cAAlBqjC,iCAAAA,sBAAsB;QAC7CrjC,UAAU,IAAI2jC,iBAAiB;QAC/B,IAAI3jC,SAASqjC,WAAW/jC,MAAM,EAAE;YAC9B,OAAO,KAAK;QACd;IACF;IACA,IAAIi+B,kBAAkB,KAAK;IAC3B,IAAImG,0BAA0B;YAILL,qBAAyCA,gBAA4CA,gBAAwCA,gBAAsCA;QAH1L,IAAIrjC,SAAS,IAAIqjC,WAAW/jC,MAAM,EAAE;YAClC,OAAO,KAAK;QACd;QACA,IAAMskC,gBAAgB,EAACP,sBAAAA,UAAU,CAACrjC,OAAO,cAAlBqjC,iCAAAA,sBAAsB,KAAK,aAAa,EAACA,iBAAAA,UAAU,CAACrjC,SAAS,EAAE,cAAtBqjC,4BAAAA,iBAA0B,KAAK,WAAY,CAAA,EAACA,iBAAAA,UAAU,CAACrjC,SAAS,EAAE,cAAtBqjC,4BAAAA,iBAA0B,MAAM,EAAC,IAAM,CAAA,EAACA,iBAAAA,UAAU,CAACrjC,SAAS,EAAE,cAAtBqjC,4BAAAA,iBAA0B,MAAM,CAAA,MAAMA,iBAAAA,UAAU,CAACrjC,SAAS,EAAE,cAAtBqjC,4BAAAA,iBAA0B;QACpN9F,kBAAkBqG,gBAAgB;QAClC5jC,UAAU;IACZ;IACA,IAAIA,SAAS,IAAIqjC,WAAW/jC,MAAM,EAAE;QAClC,OAAO,KAAK;IACd;IACAU,UAAU;IACV,IAAM6jC,0BAAyBR,qBAAAA,UAAU,CAACrjC,OAAO,cAAlBqjC,gCAAAA,qBAAsB;IACrDrjC,UAAU,IAAI6jC;IACd,IAAI7jC,UAAUqjC,WAAW/jC,MAAM,EAAE;QAC/B,OAAO,KAAK;IACd;IACA,IAAM6jC,sBAAqBE,sBAAAA,UAAU,CAACrjC,OAAO,cAAlBqjC,iCAAAA,sBAAsB;IACjD,IAAMS,aAAaZ,iCAAiCC;IACpD,IAAI,CAACW,YAAY;QACf,OAAO,KAAK;IACd;IACA,OAAO;QACL18B,MAAM08B;OACHvG,oBAAoB,KAAK,IAAI;QAAEA,iBAAAA;IAAgB,IAAI,CAAC;QACvDgG,qBAAAA;;AAEJ;AACA,SAASQ,mCAAmCnmB,IAAI,EAAE5d,MAAM;QAIxB4d,cAA2BA;IAHzD,IAAI5d,SAAS,IAAI4d,KAAKte,MAAM,EAAE;QAC5B,OAAO,KAAK;IACd;IACA,IAAM0kC,uBAAuB,EAACpmB,eAAAA,IAAI,CAAC5d,OAAO,cAAZ4d,0BAAAA,eAAgB,MAAM,MAAKA,SAAAA,IAAI,CAAC5d,SAAS,EAAE,cAAhB4d,oBAAAA,SAAoB;IAC7E,IAAIqmB,mBAAmBjkC,SAAS;IAChC,IAAM2/B,gBAAgBtjC,KAAKuF,GAAG,CAC5Bgc,KAAKte,MAAM,EACX2kC,mBAAmBD;IAErB,MAAOC,mBAAmB,KAAKtE,cAAe;YACtB/hB,wBACGA;QADzB,IAAMsmB,iBAAgBtmB,yBAAAA,IAAI,CAACqmB,iBAAiB,cAAtBrmB,oCAAAA,yBAA0B;QAChD,IAAMumB,oBAAmBvmB,UAAAA,IAAI,CAACqmB,mBAAmB,EAAE,cAA1BrmB,qBAAAA,UAA8B;QACvD,IAAMwmB,sBAAsBH,mBAAmB;QAC/C,IAAMI,oBAAoBD,sBAAsBD;QAChD,IAAIE,oBAAoB1E,eAAe;YACrC,OAAO,KAAK;QACd;QACA,IAAIuE,kBAAkB,GAAG;YACvB,IAAMI,mBAAmBlB,kCACvBxlB,KAAKojB,QAAQ,CAACoD,qBAAqBC;YAErC,IAAIC,kBAAkB;gBACpB,OAAOA;YACT;QACF;QACAL,mBAAmBI;IACrB;IACA,OAAO,KAAK;AACd;AACA,SAASrG,kBAAkBpgB,IAAI;IAC7B,IAAMglB,IAAI,IAAIb,UAAUnkB;IACxB,IAAMqjB,UAAU2B,EAAEV,QAAQ,CAAC;IAC3B,IAAIjB,YAAY,KAAK,OAAO,KAAK;IACjC2B,EAAEV,QAAQ,CAAC;IACXU,EAAEV,QAAQ,CAAC;IACXU,EAAEV,QAAQ,CAAC;IACX,IAAM9C,gBAAgBwD,EAAEV,QAAQ,CAAC;IACjC,IAAI9C,iBAAiB,KAAKxhB,KAAKte,MAAM,GAAG,IAAI8/B,eAAe;QACzD,OAAO,KAAK;IACd;IACAwD,EAAEV,QAAQ,CAAC;IACXU,EAAEV,QAAQ,CAAC;IACXU,EAAEV,QAAQ,CAAC;IACX,IAAMqC,aAAa3B,EAAEV,QAAQ,CAAC;IAC9B,IAAMsC,YAAY5B,EAAEV,QAAQ,CAAC;IAC7B,IAAMW,qBAAqB0B,aAAa,aAAaC;IACrD5B,EAAEV,QAAQ,CAAC;IACXU,EAAEV,QAAQ,CAAC;IACX,IAAMuC,sBAAsB7B,EAAEV,QAAQ,CAAC;IACvC,IAAMwC,oBAAoB9B,EAAEV,QAAQ,CAAC;IACrC,IAAI4B;IACJ,IAAIvG,kBAAkB,KAAK;IAC3B,IAAID,aAAa,KAAK;IACtB,IAAIqH,gBAAgB,KAAK;IACzB,IAAMC,mBAAmBhC,EAAEF,YAAY;IACvC,IAAIgC,sBAAsB,GAAG;QAC3BC,gBAAgB/B,EAAEV,QAAQ,CAAC;QAC3B,IAAM2C,SAASjC,EAAEV,QAAQ,CAAC,OAAO;QACjCU,EAAEV,QAAQ,CAAC;QACX,IAAI2C,QAAQ,OAAO,KAAK;QACxB,IAAMC,eAAelC,EAAEV,QAAQ,CAAC,OAAO;QACvC,IAAM6C,oBAAoBnC,EAAEV,QAAQ,CAAC,OAAO;QAC5C,IAAM8C,eAAepC,EAAEV,QAAQ,CAAC,OAAO;QACvC,IAAM+C,sBAAsBrC,EAAEV,QAAQ,CAAC,OAAO;QAC9CU,EAAEV,QAAQ,CAAC;QACX4B,aAAagB,eAAe,UAAU;QACtC,IAAIC,qBAAqB,CAACE,qBAAqB;YAC7C3H,aAAaqF,eAAeC,GAAGC;QACjC,OAAO,IAAI,CAACkC,mBAAmB;YAC7B,IAAMpB,iBAAiBf,EAAEV,QAAQ,CAAC;YAClC,IAAK,IAAIxV,IAAI,GAAGA,IAAIiX,gBAAgBjX,IAAK;gBACvCkW,EAAEV,QAAQ,CAAC;gBACX,IAAI,CAAC+C,qBAAqB;oBACxB,IAAMC,sBAAsBvC,eAAeC,GAAGC;oBAC9C,IAAIvF,eAAe,KAAK,GAAG;wBACzBA,aAAa4H;oBACf;gBACF;YACF;QACF;QACA,IAAIF,cAAc;YAChBpC,EAAEV,QAAQ,CAAC;YACXU,EAAEV,QAAQ,CAAC;YACX,IAAMa,OAAOH,EAAEV,QAAQ,CAAC;YACxB,IAAMc,MAAMJ,EAAEV,QAAQ,CAAC;YACvB,IAAM0B,gBAAgBb,OAAO,aAAaC;YAC1CzF,kBAAkBqG,gBAAgB;QACpC;QACAhB,EAAEV,QAAQ,CAAC;QACXU,EAAEV,QAAQ,CAAC;QACXU,EAAEV,QAAQ,CAAC;IACb,OAAO,IAAIwC,sBAAsB,GAAG;QAClCpH,aAAaqF,eAAeC,GAAGC;IACjC,OAAO;QACL,OAAO,KAAK;IACd;IACA,IAAMsC,2BAA2BV,wBAAwB,OAAO7B,EAAEF,YAAY,GAAGkC,mBAAmBH;IACpG,IAAMH,mBAAmBP,mCACvBnmB,MACAunB;IAEF,IAAIb,kBAAkB;QACpBR,aAAaQ,iBAAiBl9B,IAAI;QAClC,IAAIm2B,oBAAoB,KAAK,GAAG;YAC9BA,kBAAkB+G,iBAAiB/G,eAAe;QACpD;IACF;IACA,IAAI,CAACuG,YAAY;QACf,OAAO,KAAK;IACd;IACA,IAAMvH,SAAS;QACbn1B,MAAM08B;OACHxG,eAAe,KAAK,IAAI;QAAEA,YAAAA;IAAW,IAAI,CAAC,GAC1CC,oBAAoB,KAAK,IAAI;QAAEA,iBAAAA;IAAgB,IAAI,CAAC;QACvD7E,KAAK;YACH+D,qBAAqBiI;WAClBC,kBAAkB,KAAK,IAAI;YAAES,iBAAiBT;QAAc,IAAI,CAAC,GACjEL,CAAAA,6BAAAA,uCAAAA,iBAAkBf,mBAAmB,MAAK,KAAK,IAAI;YAAE8B,uBAAuBf,iBAAiBf,mBAAmB;QAAC,IAAI,CAAC;;IAG7H,OAAOhH;AACT;AAEA,iCAAiC;AACjC,IAAI+I,iCAAmB;aAAnBA,iBACUzpC,KAAK,EAAE0pC,SAAS;gCAD1BD;QAEA,IAAI,CAACE,iBAAiB,GAAG,aAAa,GAAG,IAAIrqC;QAC7C,IAAI,CAACsqC,mBAAmB,GAAG,aAAa,GAAG,IAAItqC;QAC/C,IAAI,CAACuqC,oBAAoB,GAAG;QAC5B,IAAI,CAAC5F,YAAY,GAAG,aAAa,GAAG,IAAI1kC;QACxC,IAAI,CAAC+jC,OAAO,GAAG,aAAa,GAAG,IAAI/jC;QACnC,IAAI,CAACuqC,yBAAyB,GAAG,aAAa,GAAG,IAAIvqC;QACrD,IAAI,CAACS,KAAK,GAAGA;QACb,IAAI,CAAC0pC,SAAS,GAAGA;;;;YAEfK,KAAAA;iBAAJ;gBACE,OAAO,IAAI,CAACC,wBAAwB;YACtC;iBACA,aAAwB5sC,KAAK;gBAC3B,IAAI,CAAC4sC,wBAAwB,GAAG5sC;YAClC;;;YACI6sC,KAAAA;iBAAJ;gBACE,OAAO,IAAI,CAACC,yBAAyB;YACvC;iBACA,aAAyB9sC,KAAK;gBAC5B,IAAI,CAAC8sC,yBAAyB,GAAG9sC;YACnC;;;YACI+sC,KAAAA;iBAAJ;gBACE,OAAO,IAAI,CAACC,4BAA4B;YAC1C;iBACA,aAA4BhtC,KAAK;gBAC/B,IAAI,CAACgtC,4BAA4B,GAAGhtC;YACtC;;;YACAitC,KAAAA;mBAAAA,SAAAA,uBAAuB72B,MAAM,EAAE82B,SAAS,EAAEhoB,IAAI;gBAC5C,IAAM1W,UAAU;oBAAE4H,QAAAA;oBAAQ82B,WAAAA;gBAAU;gBACpC,IAAI,QAAOhoB,iBAAAA,2BAAAA,KAAMioB,EAAE,MAAK,UAAU;oBAChC3+B,QAAQ4+B,UAAU,GAAGloB,KAAKioB,EAAE;gBAC9B;gBACA,IAAME,mBAAmBtJ,wBAAwB7e;gBACjD,IAAImoB,qBAAqB,KAAK,GAAG;oBAC/B7+B,QAAQ8+B,oBAAoB,GAAGD;gBACjC;gBACA,OAAO7+B;YACT;;;YACA++B,KAAAA;mBAAAA,SAAAA,YAAYjK,MAAM,EAAE90B,OAAO;gBACzB,IAAMg/B,MAAM,IAAI,CAACC,eAAe,CAACnK,QAAQ90B;gBACzC,IAAMk/B,aAAa,IAAI,CAACC,sBAAsB,CAACH;gBAC/C,IAAIh/B,QAAQ0+B,SAAS,KAAK,SAAS;oBACjC,IAAI,CAACX,iBAAiB,CAACnoC,GAAG,CAACspC,YAAYF;oBACvC,IAAI,CAACI,uBAAuB;oBAC5B,IAAItK,OAAOn1B,IAAI,KAAK,SAAS;wBAC3B,IAAI,CAACm+B,SAAS,CAACuB,eAAe,CAACvK,QAAQ90B,QAAQ4+B,UAAU,EAAEI,IAAI9tC,GAAG;oBACpE;oBACA;gBACF;gBACA,IAAI4jC,OAAOn1B,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC2/B,wBAAwB,CAACN,MAAM;oBAChE,IAAI,IAAI,CAAC5qC,KAAK,EAAE;wBACdC,QAAQC,GAAG,CAAC,oDAAoD;4BAC9DpD,KAAK8tC,IAAI9tC,GAAG;4BACZmtC,sBAAsB,IAAI,CAACC,yBAAyB;4BACpDiB,WAAW,IAAI,CAACzB,SAAS,CAAC0B,WAAW;4BACrC53B,QAAQo3B,IAAIp3B,MAAM;wBACpB;oBACF;oBACA;gBACF;gBACA,IAAIktB,OAAOn1B,IAAI,KAAK,WAAW,IAAI,CAAC8/B,2BAA2B,CAACT,MAAM;oBACpE,IAAI,IAAI,CAAC5qC,KAAK,EAAE;wBACdC,QAAQC,GAAG,CAAC,gEAAgE;4BAC1EpD,KAAK8tC,IAAI9tC,GAAG;4BACZ0W,QAAQo3B,IAAIp3B,MAAM;wBACpB;oBACF;oBACA;gBACF;gBACA,IAAI,CAACm2B,iBAAiB,CAACv8B,MAAM,CAAC09B;gBAC9B,IAAI,CAACQ,oBAAoB,CAACV;gBAC1B,IAAI,CAAClB,SAAS,CAAC6B,aAAa,CAAC7K,QAAQkK,IAAI9tC,GAAG;YAC9C;;;YACA0uC,KAAAA;mBAAAA,SAAAA,qCAAqClpB,IAAI;;gBACvC,IAAMkoB,aAAa,QAAOloB,iBAAAA,2BAAAA,KAAMioB,EAAE,MAAK,WAAWjoB,KAAKioB,EAAE,GAAG,KAAK;gBACjE,IAAIC,eAAe,KAAK,GAAG;oBACzB;gBACF;gBACA,IAAMiB,eAAezhC,MAAMrN,IAAI,CAAC,IAAI,CAACgtC,iBAAiB,CAAC30B,OAAO,IAAIF,MAAM,CACtE;6DAAI81B;2BAASA,IAAIJ,UAAU,KAAKA;;gBAElCiB,aAAap/B,OAAO,CAAC;6DAAEy+B,wBAAYF;wBAORA;oBANzB,MAAKjB,iBAAiB,CAACv8B,MAAM,CAAC09B;oBAC9B,IAAMl/B,UAAU;wBACd4H,QAAQo3B,IAAIp3B,MAAM;wBAClB82B,WAAW;oBACb;oBACA1+B,QAAQ4+B,UAAU,GAAGA;oBACrB,IAAMC,oBAAmBG,4BAAAA,IAAIF,oBAAoB,cAAxBE,uCAAAA,4BAA4BzJ,wBAAwB7e;oBAC7E,IAAImoB,qBAAqB,KAAK,GAAG;wBAC/B7+B,QAAQ8+B,oBAAoB,GAAGD;oBACjC;oBACA,MAAKE,WAAW,CAACC,IAAIlK,MAAM,EAAE90B;gBAC/B;YACF;;;YACAi/B,KAAAA;mBAAAA,SAAAA,gBAAgBnK,MAAM,EAAE90B,OAAO;gBAC7B,IAAMg/B,MAAM;oBACVlK,QAAAA;oBACAltB,QAAQ5H,QAAQ4H,MAAM;oBACtB82B,WAAW1+B,QAAQ0+B,SAAS;oBAC5BxtC,KAAK,IAAI,CAAC4uC,eAAe,CAAChL,QAAQ90B;gBACpC;gBACA,IAAIA,QAAQ4+B,UAAU,KAAK,KAAK,GAAG;oBACjCI,IAAIJ,UAAU,GAAG5+B,QAAQ4+B,UAAU;gBACrC;gBACA,IAAI5+B,QAAQ8+B,oBAAoB,KAAK,KAAK,GAAG;oBAC3CE,IAAIF,oBAAoB,GAAG9+B,QAAQ8+B,oBAAoB;gBACzD;gBACA,OAAOE;YACT;;;YACAc,KAAAA;mBAAAA,SAAAA,gBAAgBhL,MAAM,EAAE90B,OAAO;oBAUaixB,YAIFA,aAAqDA;gBAb7F,IAAMA,MAAM,IAAI,CAAC8O,kBAAkB,CAACjL;gBACpC,IAAMoI,gBAAgB,IAAI,CAAC8C,gBAAgB,CAAC/O,gBAAAA,0BAAAA,IAAK0M,eAAe;gBAChE,IAAIT,eAAe;oBACjB,OAAO,AAAC,UAAuB,OAAdA;gBACnB;gBACA,IAAMpB,sBAAsB,IAAI,CAACkE,gBAAgB,CAAC/O,gBAAAA,0BAAAA,IAAK2M,qBAAqB;gBAC5E,IAAI9B,qBAAqB;oBACvB,OAAO,AAAC,gBAAmC,OAApBA;gBACzB;gBACA,IAAMmE,cAAc,IAAI,CAACD,gBAAgB,CAAC/O,gBAAAA,2BAAAA,aAAAA,IAAKuD,KAAK,cAAVvD,iCAAAA,WAAYiP,EAAE;gBACxD,IAAID,aAAa;oBACf,OAAO,AAAC,aAAwB,OAAZA;gBACtB;gBACA,IAAME,YAAY,IAAI,CAACH,gBAAgB,CAAC/O,gBAAAA,2BAAAA,cAAAA,IAAKuD,KAAK,cAAVvD,kCAAAA,WAAY,CAAC,aAAa,KAAK,IAAI,CAAC+O,gBAAgB,CAAC/O,gBAAAA,2BAAAA,cAAAA,IAAKuD,KAAK,cAAVvD,kCAAAA,WAAY,CAAC,YAAY;gBACtH,IAAIkP,WAAW;oBACb,OAAO,AAAC,kBAA2B,OAAVA;gBAC3B;gBACA,IAAI,OAAOrL,OAAOe,UAAU,KAAK,YAAY5gC,OAAOC,QAAQ,CAAC4/B,OAAOe,UAAU,GAAG;oBAC/E,OAAO,AAAC,OAA4C,OAAtCjhC,KAAK2B,KAAK,CAACu+B,OAAOe,UAAU,GAAG,KAAK;gBACpD;gBACA,IAAI71B,QAAQ4+B,UAAU,KAAK,KAAK,GAAG;oBACjC,OAAO,AAAC,YAA8B,OAAnB5+B,QAAQ4+B,UAAU;gBACvC;gBACA,OAAO,AAAC,GAA8BhqC,OAA5BoL,QAAQ4H,MAAM,EAAC,eAA0C,OAA7BhT,KAAKC,KAAK,CAACqB,KAAKqV,GAAG,KAAK;YAChE;;;YACA4zB,KAAAA;mBAAAA,SAAAA,uBAAuBH,GAAG;gBACxB,OAAO,AAAC,GAAqBA,OAAnBA,IAAIlK,MAAM,CAACn1B,IAAI,EAAC,KAAcq/B,OAAXA,IAAI9tC,GAAG,EAAC,KAA0D,OAAvD8tC,IAAIJ,UAAU,KAAK,KAAK,IAAII,IAAIJ,UAAU,GAAG;YACvF;;;YACAmB,KAAAA;mBAAAA,SAAAA,mBAAmBjL,MAAM;gBACvB,OAAO,SAAOA,OAAO7D,GAAG,MAAK,YAAY6D,OAAO7D,GAAG,KAAK,OAAO6D,OAAO7D,GAAG,GAAG,CAAC;YAC/E;;;YACA+O,KAAAA;mBAAAA,SAAAA,iBAAiBxuC,KAAK;gBACpB,IAAI,OAAOA,UAAU,YAAYyD,OAAOC,QAAQ,CAAC1D,QAAQ;oBACvD,OAAOmD,OAAOnD;gBAChB;gBACA,IAAI,OAAOA,UAAU,YAAYA,MAAMmG,IAAI,GAAGE,MAAM,GAAG,GAAG;oBACxD,OAAOrG,MAAMmG,IAAI;gBACnB;gBACA,OAAO,KAAK;YACd;;;YACAyoC,KAAAA;mBAAAA,SAAAA,qBAAqBlvC,GAAG;gBACtB,OAAO,CAAC,CAAEA,CAAAA,OAAQA,CAAAA,IAAI8T,UAAU,CAAC,cAAc9T,IAAI8T,UAAU,CAAC,oBAAoB9T,IAAI8T,UAAU,CAAC,iBAAiB9T,IAAI8T,UAAU,CAAC,kBAAiB,CAAC;YACrJ;;;YACAy6B,KAAAA;mBAAAA,SAAAA,4BAA4BT,GAAG;gBAC7B,IAAI,IAAI,CAACV,yBAAyB,KAAKU,IAAI9tC,GAAG,IAAI,IAAI,CAACstC,4BAA4B,KAAKQ,IAAI9tC,GAAG,EAAE;oBAC/F,OAAO;gBACT;gBACA,IAAMmvC,YAAY,AAAC,GAAqBrB,OAAnBA,IAAIlK,MAAM,CAACn1B,IAAI,EAAC,KAAW,OAARq/B,IAAI9tC,GAAG;gBAC/C,OAAO,IAAI,CAAC8sC,mBAAmB,CAAC1mC,GAAG,CAAC+oC;YACtC;;;YACAX,KAAAA;mBAAAA,SAAAA,qBAAqBV,GAAG;gBACtB,IAAI,CAAChB,mBAAmB,CAACpoC,GAAG,CAAC,AAAC,GAAqBopC,OAAnBA,IAAIlK,MAAM,CAACn1B,IAAI,EAAC,KAAW,OAARq/B,IAAI9tC,GAAG,GAAIgF,KAAKqV,GAAG;gBACtE,IAAI,CAAC6zB,uBAAuB;YAC9B;;;YACAA,KAAAA;mBAAAA,SAAAA;gBACE,MAAO,IAAI,CAACpB,mBAAmB,CAACpkB,IAAI,GAAG,IAAI,CAACqkB,oBAAoB,CAAE;oBAChE,IAAMnF,WAAW,IAAI,CAACkF,mBAAmB,CAACr/B,IAAI,GAAGqW,IAAI,GAAGxjB,KAAK;oBAC7D,IAAI,CAACsnC,UAAU;wBACb;oBACF;oBACA,IAAI,CAACkF,mBAAmB,CAACx8B,MAAM,CAACs3B;gBAClC;gBACA,MAAO,IAAI,CAACiF,iBAAiB,CAACnkB,IAAI,GAAG,IAAI,CAACqkB,oBAAoB,CAAE;oBAC9D,IAAMnF,YAAW,IAAI,CAACiF,iBAAiB,CAACp/B,IAAI,GAAGqW,IAAI,GAAGxjB,KAAK;oBAC3D,IAAI,CAACsnC,WAAU;wBACb;oBACF;oBACA,IAAI,CAACiF,iBAAiB,CAACv8B,MAAM,CAACs3B;gBAChC;YACF;;;YACAwG,KAAAA;mBAAAA,SAAAA,yBAAyBN,GAAG;gBAC1B,IAAI,CAAC,IAAI,CAAClB,SAAS,CAAC0B,WAAW,IAAI;oBACjC,OAAO;gBACT;gBACA,IAAI,IAAI,CAACY,oBAAoB,CAAC,IAAI,CAAC9B,yBAAyB,KAAK,IAAI,CAAC8B,oBAAoB,CAACpB,IAAI9tC,GAAG,KAAK,IAAI,CAACotC,yBAAyB,KAAKU,IAAI9tC,GAAG,EAAE;oBACjJ,OAAO;gBACT;gBACA,OAAO;YACT;;;;;AAGF,gCAAgC;AAChC,IAAIovC,gCAAkB;aAAlBA,gBACUjZ,MAAM,EAAExZ,KAAK;gCADvByyB;QAEA,IAAI,CAACC,UAAU,GAAG,EAAE;QACpB,IAAI,CAACC,oBAAoB,GAAG,aAAa,GAAG,IAAI7sC;QAChD,IAAI,CAACi+B,gBAAgB,GAAG9B;QACxB,IAAI,CAAC2Q,cAAc,GAAG,CAAC;QACvB,IAAI,CAACC,UAAU,GAAG;QAClB,IAAI,CAACC,qBAAqB,GAAG;QAC7B,IAAI,CAACC,iBAAiB,GAAG;QACzB,IAAI,CAACC,gBAAgB,GAAG;QACxB,IAAI,CAACC,uBAAuB,GAAG;QAC/B,IAAI,CAACzZ,MAAM,GAAGA;QACd,IAAI,CAACxZ,KAAK,GAAGA;;;;YAEXkzB,KAAAA;iBAAJ;gBACE,OAAO5Q;YACT;;;YACI/7B,KAAAA;iBAAJ;gBACE,OAAO,CAAC,CAAC,IAAI,CAACizB,MAAM,CAACC,aAAa;YACpC;;;YACA0Z,KAAAA;mBAAAA,SAAAA;oBACkC;gBAAhC,OAAO,CAAC,CAAE,CAAA,IAAI,CAAC3Z,MAAM,CAAC4Z,MAAM,MAAI,uBAAA,IAAI,CAAC5Z,MAAM,CAAC6Z,OAAO,cAAnB,2CAAA,qBAAqBvpC,IAAI,GAAC;YAC5D;;;YACMwpC,KAAAA;mBAAN,SAAMA;;wBA8DehrB,qCAAAA,oBAAAA,gBAuBDA,uCAAAA,6BAAAA,wBAAAA,iBA7EZirB,UAaEC,cAoBFC,QAOA31B,SAIAR,UASAgL,MACAorB,YAEAC,gBAqBAC;;;;qCApFF,IAAI,CAACT,aAAa,IAAlB;;;;gCACF;;oCAAM,IAAI,CAACU,iBAAiB,CAAC,IAAI,CAACra,MAAM,CAAC6Z,OAAO;;;gCAAhD;gCACA,IAAI,IAAI,CAAC9sC,KAAK,EAAE;oCACdC,QAAQC,GAAG,CAAC;gCACd;gCACA;;;;gCAEI8sC,WAAW,IAAI,CAAC/Z,MAAM,CAAC+Z,QAAQ,IAAI;gCACzC,IAAI,IAAI,CAAChtC,KAAK,EAAE;oCACdC,QAAQC,GAAG,CAAC,sCAAsC8sC;gCACpD;gCACA,IAAIA,aAAa,WAAW;oCAC1B,IAAI,CAAC,IAAI,CAAC/Z,MAAM,CAACnI,UAAU,EAAE;wCAC3B,IAAI,IAAI,CAAC9qB,KAAK,EAAE;4CACdC,QAAQiK,IAAI,CACV;wCAEJ;wCACA;;;oCACF;oCACM+iC,eAAe,AAAC,mDAAyE,OAAvB,IAAI,CAACha,MAAM,CAACnI,UAAU;oCAC9F,IAAI,CAACyiB,aAAa,GAAGN;oCACrB,IAAI,IAAI,CAACjtC,KAAK,EAAE;wCACdC,QAAQC,GAAG,CACT,uEACA+sC;oCAEJ;oCACA;;;gCACF;gCACA,IAAI,IAAI,CAACha,MAAM,CAACzc,UAAU,EAAE;oCAC1B,IAAI,CAAC+2B,aAAa,GAAG3Q,oBAAoB,IAAI,CAAC3J,MAAM,CAACzc,UAAU;oCAC/D,IAAI,IAAI,CAACxW,KAAK,EAAE;wCACdC,QAAQC,GAAG,CACT,sDACA,IAAI,CAACqtC,aAAa;oCAEtB;oCACA;;;gCACF;gCACML,SAAS;gCACf,IAAI,IAAI,CAACltC,KAAK,EAAE;oCACdC,QAAQC,GAAG,CACT,2DACAgtC;gCAEJ;gCACM31B,UAAU,CAAC;gCACjB,IAAI,IAAI,CAAC0b,MAAM,CAACnI,UAAU,EAAE;oCAC1BvT,OAAO,CAAC,gBAAgB,GAAG,AAAC,UAAgC,OAAvB,IAAI,CAAC0b,MAAM,CAACnI,UAAU;gCAC7D;gCACiB;;oCAAMzT,MAAM61B,QAAQ;wCAAE31B,SAAAA;oCAAQ;;;gCAAzCR,WAAW;gCACjB,IAAI,CAACA,SAASa,EAAE,EAAE;oCAChB,IAAI,IAAI,CAAC5X,KAAK,EAAE;wCACdC,QAAQiK,IAAI,CACV,AAAC,6DAA4E,OAAhB6M,SAASY,MAAM;oCAEhF;oCACA;;;gCACF;gCACa;;oCAAMZ,SAASy2B,IAAI;;;gCAA1BzrB,OAAO;gCACPorB,cAAaprB,iBAAAA,KAAKhL,QAAQ,cAAbgL,sCAAAA,qBAAAA,eAAe0rB,GAAG,cAAlB1rB,0CAAAA,sCAAAA,kBAAoB,CAAC,oBAAoB,cAAzCA,0DAAAA,oCAA2ChY,OAAO;gCACrE,IAAIojC,YAAY;oCACVC,iBAAiBD;oCACrB,IAAI;wCACFC,iBAAiBhd,mBAAmB+c;oCACtC,EAAE,eAAM;wCACNltC,QAAQiK,IAAI,CAAC,wEAAwEijC;oCACvF;oCACAltC,QAAQC,GAAG,CAAC,wDAAwDktC;oCACpE,IAAI,CAACG,aAAa,GAAG3Q,oBAAoBwQ;oCACzC,IAAI,IAAI,CAACptC,KAAK,EAAE;wCACdC,QAAQC,GAAG,CACT,oDACA,IAAI,CAACqtC,aAAa;oCAEtB;gCACF,OAAO;oCACL,IAAI,IAAI,CAACvtC,KAAK,EAAE;wCACdC,QAAQiK,IAAI,CACV;oCAEJ;gCACF;gCACMmjC,aAAYtrB,kBAAAA,KAAKhL,QAAQ,cAAbgL,uCAAAA,yBAAAA,gBAAerc,OAAO,cAAtBqc,8CAAAA,8BAAAA,uBAAwB2rB,IAAI,cAA5B3rB,mDAAAA,wCAAAA,4BAA8B4rB,SAAS,cAAvC5rB,4DAAAA,sCAAyC6rB,UAAU;gCACrE,IAAIP,aAAa,QAAQA,YAAY,GAAG;oCACtC,IAAI,CAACQ,YAAY,GAAGR;oCACpB,IAAI,IAAI,CAACrtC,KAAK,EAAE;wCACdC,QAAQC,GAAG,CACT,6DACA,IAAI,CAAC2tC,YAAY;oCAErB;gCACF;;;;;;gBACF;;;;YACMP,KAAAA;mBAAN,SAAMA,kBAAkBR,OAAO;;wBAKrB/1B,UAIA+2B,SASCxoC;;;;gCAjBT,IAAI,CAACwnC,QAAQvpC,IAAI,IAAI;oCACnB;;;gCACF;;;;;;;;;gCAEmB;;oCAAM8T,MAAMy1B;;;gCAAvB/1B,WAAW;gCACjB,IAAI,CAACA,SAASa,EAAE,EAAE;oCAChB,MAAM,IAAIZ,MAAM,AAAC,yBAAwC,OAAhBD,SAASY,MAAM,EAAC;gCAC3D;gCACgB;;oCAAMZ,SAASmB,IAAI;;;gCAA7B41B,UAAU;gCAChB,IAAI,CAAC3B,UAAU,GAAG,IAAI,CAAC4B,iBAAiB,CAACD;gCACzC,IAAI,CAAC1B,oBAAoB,CAAChnB,KAAK;gCAC/B,IAAI,IAAI,CAACplB,KAAK,EAAE;oCACdC,QAAQC,GAAG,CACT,AAAC,kCAAwD,OAAvB,IAAI,CAACisC,UAAU,CAAC1oC,MAAM,EAAC,4BACzDqpC;gCAEJ;;;;;;gCACOxnC;gCACP,IAAI,CAAC6mC,UAAU;gCACf,IAAI,CAACC,oBAAoB,CAAChnB,KAAK;gCAC/B,IAAI,IAAI,CAACplB,KAAK,EAAE;oCACdC,QAAQiK,IAAI,CAAC,gDAAgD5E;gCAC/D;;;;;;;;;;;gBAEJ;;;;YACAyoC,KAAAA;mBAAAA,SAAAA,kBAAkBD,OAAO;;gBACvB,IAAI,OAAO95B,cAAc,aAAa;oBACpC,OAAO,EAAE;gBACX;gBACA,IAAMg6B,MAAM,IAAIh6B,YAAYC,eAAe,CAAC65B,SAAS;gBACrD,IAAIE,IAAI75B,aAAa,CAAC,gBAAgB;oBACpC,IAAI,IAAI,CAACnU,KAAK,EAAE;wBACdC,QAAQiK,IAAI,CAAC;oBACf;oBACA,OAAO,EAAE;gBACX;gBACA,IAAM+jC,UAAU;gBAChB,IAAIC,eAAelkC,MAAMrN,IAAI,CAACqxC,IAAIG,sBAAsB,CAACF,SAAS;gBAClE,IAAIC,aAAazqC,MAAM,KAAK,GAAG;oBAC7ByqC,eAAelkC,MAAMrN,IAAI,CACvBqxC,IAAI57B,gBAAgB,CAAC;gBAEzB;gBACA,IAAI87B,aAAazqC,MAAM,KAAK,GAAG;oBAC7ByqC,eAAelkC,MAAMrN,IAAI,CAACqxC,IAAII,oBAAoB,CAAC,MAAMt5B,MAAM,CAC7D,SAACzR;+BAAOA,GAAGgrC,SAAS,KAAK;;gBAE7B;gBACA,IAAMhkC,SAAS,EAAE;gBACjB6jC,aAAa7hC,OAAO,CAAC,SAACiiC,MAAMr/B;oBAC1B,IAAMs/B,gBAAgB,AAACD,CAAAA,KAAKr9B,YAAY,CAAC,iBAAiB,EAAC,EAAG1N,IAAI;oBAClE,IAAMirC,cAAc,MAAKC,uBAAuB,CAACF;oBACjD,IAAIC,eAAe,MAAM;wBACvB;oBACF;oBACA,IAAIE,YAAYJ,KAAKH,sBAAsB,CAACF,SAAS,WAAW,CAAC,EAAE;oBACnE,IAAI,CAACS,WAAW;4BACFJ;wBAAZI,aAAYJ,sBAAAA,KAAKn6B,aAAa,CAAC,0CAAnBm6B,iCAAAA,sBAAmD,KAAK;oBACtE;oBACA,IAAMK,WAAW,AAACD,CAAAA,CAAAA,sBAAAA,gCAAAA,UAAWprC,WAAW,KAAI,EAAC,EAAGC,IAAI;oBACpD,IAAI,CAACorC,UAAU;wBACb;oBACF;oBACA,IAAM/jC,UAAU0jC,KAAKr9B,YAAY,CAAC,cAAc,AAAC,cAAsBs9B,OAATt/B,OAAM,KAA8B,OAA3Bs/B,iBAAiB;oBACxFlkC,OAAO+F,IAAI,CAAC;wBACVlF,IAAIN;wBACJ4jC,aAAAA;wBACAh4B,YAAYm4B;oBACd;gBACF;gBACAtkC,OAAOgG,IAAI,CAAC,SAACC,GAAGC;oBACd,IAAMq+B,SAASt+B,EAAEk+B,WAAW,GAAG,IAAI3tC,OAAOg7B,gBAAgB,GAAGvrB,EAAEk+B,WAAW;oBAC1E,IAAMK,SAASt+B,EAAEi+B,WAAW,GAAG,IAAI3tC,OAAOg7B,gBAAgB,GAAGtrB,EAAEi+B,WAAW;oBAC1E,OAAOI,SAASC;gBAClB;gBACA,OAAOxkC;YACT;;;YACAokC,KAAAA;mBAAAA,SAAAA,wBAAwBK,UAAU;gBAChC,IAAI,CAACA,YAAY;oBACf,OAAO,KAAK;gBACd;gBACA,IAAMngB,aAAamgB,WAAWvrC,IAAI,GAAGiH,WAAW;gBAChD,IAAImkB,eAAe,SAAS;oBAC1B,OAAO;gBACT;gBACA,IAAIA,eAAe,OAAO;oBACxB,OAAO,CAAC;gBACV;gBACA,IAAMogB,MAAMD,WAAWhxC,KAAK,CAC1B;gBAEF,IAAIixC,KAAK;oBACP,IAAiCA,wBAAAA,SAAxB/tC,KAAwB+tC,SAApB7tC,KAAoB6tC,SAAhB5tC,KAAgB4tC,SAAZ3tC,MAAY2tC,SAAZ3tC,KAAAA,iBAAK,MAALA;oBACrB,IAAM4tC,QAAQnuC,OAAOG;oBACrB,IAAMiuC,UAAUpuC,OAAOK;oBACvB,IAAMN,UAAUC,OAAOM;oBACvB,IAAM+tC,SAASruC,OAAOO,GAAGs1B,MAAM,CAAC,GAAG,KAAKrG,KAAK,CAAC,GAAG;oBACjD,OAAO,AAAC2e,CAAAA,QAAQ,OAAOC,UAAU,KAAKruC,OAAM,IAAK,MAAMsuC;gBACzD;gBACA,IAAM5qC,UAAUwqC,WAAWhxC,KAAK,CAAC;gBACjC,IAAIwG,SAAS;oBACX,IAAM6qC,QAAQtuC,OAAOyD,OAAO,CAAC,EAAE,IAAI;oBACnC,IAAM8qC,cAAc,IAAI,CAAC31B,KAAK,CAACpD,QAAQ;oBACvC,IAAIxV,OAAOC,QAAQ,CAACsuC,gBAAgBA,cAAc,GAAG;wBACnD,OAAO5uC,KAAKC,KAAK,CAAC2uC,cAAc,MAAMD;oBACxC;oBACA,OAAO,KAAK;gBACd;gBACA,OAAO,KAAK;YACd;;;YACAE,KAAAA;mBAAAA,SAAAA,cAAcC,OAAO;gBACnB,IAAIA,QAAQpkC,EAAE,EAAE;oBACd,OAAOokC,QAAQpkC,EAAE;gBACnB;gBACA,OAAO,AAAC,GAAyBokC,OAAvBA,QAAQd,WAAW,EAAC,KAA4B,OAAzBc,QAAQ94B,UAAU,IAAI;YACzD;;;YACA+4B,KAAAA;mBAAAA,SAAAA,oBAAoBD,OAAO;gBACzB,IAAIA,QAAQd,WAAW,IAAI,GAAG;oBAC5B,OAAOc,QAAQd,WAAW;gBAC5B;gBACA,IAAIc,QAAQd,WAAW,KAAK,CAAC,GAAG;oBAC9B,IAAMY,cAAc,IAAI,CAAC31B,KAAK,CAACpD,QAAQ;oBACvC,IAAIxV,OAAOC,QAAQ,CAACsuC,gBAAgBA,cAAc,GAAG;wBACnD,OAAO5uC,KAAKC,KAAK,CAAC2uC,cAAc;oBAClC;gBACF;gBACA,OAAO,KAAK;YACd;;;YACAI,KAAAA;mBAAAA,SAAAA,uBAAuBC,KAAK;oBAGd;gBAFZ,IAAMC,WAAW,IAAI,CAACvD,UAAU;gBAChC,IAAIr2B;gBACJ,IAAM65B,OAAM,gCAAA,IAAI,CAAC1c,MAAM,CAAC2c,gBAAgB,cAA5B,2CAAA,gCAAgC;oBACvC,kCAAA,2BAAA;;oBAAL,QAAK,YAAWF,6BAAX,SAAA,6BAAA,QAAA,yBAAA,iCAAqB;wBAArB,IAAMn/B,IAAN;4BAQsE;wBAPzE,IAAI,IAAI,CAAC67B,oBAAoB,CAAClpC,GAAG,CAAC,IAAI,CAACmsC,aAAa,CAAC9+B,KAAK;4BACxD;wBACF;wBACA,IAAMs/B,eAAe,IAAI,CAACN,mBAAmB,CAACh/B;wBAC9C,IAAIs/B,gBAAgB,MAAM;4BACxB;wBACF;wBACA,IAAIA,gBAAgBJ,QAAQE,OAAQ75B,CAAAA,aAAa,QAAQ+5B,iBAAgB,4BAAA,IAAI,CAACN,mBAAmB,CAACz5B,wBAAzB,uCAAA,4BAAuC,EAAC,GAAI;4BACnHA,YAAYvF;wBACd;oBACF;;oBAXK;oBAAA;;;6BAAA,6BAAA;4BAAA;;;4BAAA;kCAAA;;;;gBAYL,OAAOuF;YACT;;;YACAg6B,KAAAA;mBAAAA,SAAAA,iBAAiBL,KAAK;gBACpB,IAAMC,WAAW,IAAI,CAACvD,UAAU;oBAC3B,kCAAA,2BAAA;;oBAAL,QAAK,YAAWuD,6BAAX,SAAA,6BAAA,QAAA,yBAAA,iCAAqB;wBAArB,IAAMn/B,IAAN;wBACH,IAAI,IAAI,CAAC67B,oBAAoB,CAAClpC,GAAG,CAAC,IAAI,CAACmsC,aAAa,CAAC9+B,KAAK;4BACxD;wBACF;wBACA,IAAMs/B,eAAe,IAAI,CAACN,mBAAmB,CAACh/B;wBAC9C,IAAIs/B,gBAAgB,MAAM;4BACxB;wBACF;wBACA,IAAIt/B,EAAEw/B,UAAU,EAAE;4BAChB,IAAMnM,MAAMiM,eAAet/B,EAAEw/B,UAAU;4BACvC,IAAIN,SAASI,gBAAgBJ,QAAQ7L,KAAK;gCACxC,OAAOrzB;4BACT;4BACA;wBACF;wBACA,IAAIk/B,SAASI,cAAc;4BACzB,OAAOt/B;wBACT;oBACF;;oBAlBK;oBAAA;;;6BAAA,6BAAA;4BAAA;;;4BAAA;kCAAA;;;;gBAmBL,OAAO,KAAK;YACd;;;YACAy/B,KAAAA;mBAAAA,SAAAA,uBAAuBz/B,CAAC;gBACtB,IAAI,CAACA,KAAK,CAACA,EAAEiG,UAAU,EAAE,OAAO,KAAK;gBACrC,IAAIjG,EAAEiG,UAAU,CAAC9F,QAAQ,CAAC,MAAM;oBAC9B,OAAOH,EAAEiG,UAAU,CAACrX,KAAK,CAAC,KAAKuE,GAAG,CAAC,SAACK;+BAAMA,EAAER,IAAI;uBAAIuR,MAAM,CAAC,SAAC/Q;+BAAMA,EAAEN,MAAM,GAAG;;gBAC/E;gBACA,OAAO;oBAAC8M,EAAEiG,UAAU;iBAAC;YACvB;;;YACAy5B,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAAC3D,UAAU;YACjB;;;YACA4D,KAAAA;mBAAAA,SAAAA,iBAAiBC,eAAe;gBAC9B,IAAMC,gBAAgBD,mBAAmB,QAAQA,kBAAkB,IAAIA,kBAAkB,IAAI,CAACld,MAAM,CAAC0K,gBAAgB,IAAI,QAAQ,IAAI,CAAC1K,MAAM,CAAC0K,gBAAgB,GAAG,IAAI,IAAI,CAAC1K,MAAM,CAAC0K,gBAAgB,GAAG,IAAI,CAAC+O,uBAAuB;gBAC/N,IAAM2D,SAAS,IAAI,CAACpd,MAAM,CAAC2K,SAAS,IAAI,IAAI,CAAC3K,MAAM,CAAC2K,SAAS,GAAG,IAAI,IAAI,CAAC3K,MAAM,CAAC2K,SAAS,GAAG,IAAI,CAACiQ,YAAY,IAAI,IAAI,CAACA,YAAY,GAAG,IAAI,IAAI,CAACA,YAAY,GAAG,IAAI,CAACpB,gBAAgB;gBAClL,IAAM6D,gBAAgB,IAAI,CAACrd,MAAM,CAACsd,gBAAgB,IAAIH,iBAAiB,OAAOA,gBAAgB;gBAC9F,OAAO;oBAAEC,QAAAA;oBAAQC,eAAAA;oBAAeF,eAAAA;gBAAc;YAChD;;;YACAI,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAAC,IAAI,CAACjD,aAAa,EAAE,OAAO,KAAK;gBACrC,IAAI;oBACF,IAAMzU,SAAS,IAAIt2B,IAAI,IAAI,CAAC+qC,aAAa,EAAEjjC,YAAY;oBACvD,OAAOwuB,OAAOv8B,GAAG,CAAC,sBAAsBu8B,OAAOv8B,GAAG,CAAC,UAAU,KAAK;gBACpE,EAAE,eAAM;oBACN,OAAO,KAAK;gBACd;YACF;;;YACAk0C,KAAAA;mBAAAA,SAAAA,mBAAmBlmB,OAAO,EAAEmmB,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEzF,SAAS;oBA0BuFuF;gBAzBzJ,IAAM3nB,kBAAkBoiB,YAAYwF,SAAS5qB,qBAAqB,KAAK,IAAI,CAACtM,KAAK,CAACjO,KAAK;gBACvF,IAAMqlC,aAAavlB,8BAA8B,CAAC,CAAC,IAAI,CAAC2H,MAAM,CAAC6d,YAAY;gBAC3E,IAAMC,gBAAgB1T,gBAAgB9S,SAAS;oBAC7CiR,YAAY,IAAI,CAACmR,cAAc;oBAC/BnP,kBAAkB,IAAI,CAACA,gBAAgB;oBACvCC,KAAK,IAAI,CAAC6O,UAAU,GAAG,IAAI,IAAI,CAACA,UAAU,GAAG,KAAK;oBAClD1O,WAAW8S,UAAUL,MAAM;oBAC3B3S,kBAAkBgT,UAAUJ,aAAa;oBACzC3S,kBAAkB+S,UAAUN,aAAa;oBACzC7kB,OAAOslB,WAAWtlB,KAAK;oBACvBhpB,SAAS,CAACsuC,WAAWtlB,KAAK,IAAI,OAAOnd,WAAW,cAAc4Y,aAAa5Y,OAAOpC,QAAQ,CAACC,IAAI,IAAI,KAAK;oBACxG8c,iBAAAA;oBACAD,gBAAgB,CAAC,CAAC,IAAI,CAACmK,MAAM,CAAC+d,QAAQ;oBACtCxnB,WAAWqnB,WAAWrnB,SAAS;oBAC/BpnB,UAAUyuC,WAAWzuC,QAAQ;oBAC7BC,cAAcwuC,WAAWxuC,YAAY;oBACrCC,iBAAiBuuC,WAAWvuC,eAAe;oBAC3C8pB,gBAAgBykB,WAAWzkB,cAAc;oBACzC8R,QAAQ,IAAI,CAACjL,MAAM,CAACiL,MAAM;mBACvB,IAAI,CAACjL,MAAM,CAACkL,YAAY,GAAG;oBAAEA,cAAc,IAAI,CAAClL,MAAM,CAACkL,YAAY;gBAAC,IAAI,CAAC,GACzE,IAAI,CAAClL,MAAM,CAACmL,WAAW,GAAG;oBAAEA,aAAa,IAAI,CAACnL,MAAM,CAACmL,WAAW;gBAAC,IAAI,CAAC;oBACzEN,SAAS,IAAI,CAACuO,cAAc;;gBAE9B,IAAM4E,WAAWL,SAAS9mB,WAAW,CAACsT,kBAAkB2T;gBACxD9wC,QAAQC,GAAG,CAznKf,AA0nKM,AAAC,mEAA2FwwC,OAAzB,IAAI,CAACpE,UAAU,EAAC,WAAmCoE,OAA1BA,UAAUL,MAAM,EAAC,kBAASK,UAAUJ,aAAa,EAAC,WAAwC,QAA/BI,2BAAAA,UAAUN,aAAa,cAAvBM,sCAAAA,2BAA2B,KAAI,OACtLO;gBAEF,OAAOA;YACT;;;YACA,mBAAmB;YACnBC,KAAAA;mBAAAA,SAAAA;;gBACErZ,oBAAoB,IAAI,CAAC5E,MAAM,CAACnI,UAAU,EAAEkI,sBAAsB,IAAI,CAACC,MAAM,GAAG+G,IAAI,CAAC;oBACnF,MAAKmX,iBAAiB,GAAG/iC,OAAOqV,WAAW,CAAC;wBAC1C,MAAK2tB,qBAAqB;oBAC5B,GAAG;gBACL,GAAG93B,KAAK,CAAC,SAAChU;oBACR,IAAI,MAAKtF,KAAK,EAAE;wBACdC,QAAQiK,IAAI,CACV,4DACA5E;oBAEJ;oBACA,MAAK6rC,iBAAiB,GAAG/iC,OAAOqV,WAAW,CAAC;wBAC1C,MAAK2tB,qBAAqB;oBAC5B,GAAG;gBACL;YACF;;;YACAA,KAAAA;mBAAAA,SAAAA;;gBACE,IAAMj6B,MAAMrV,KAAKqV,GAAG;gBACpB,IAAI,CAAC,IAAI,CAACq1B,iBAAiB,IAAIr1B,MAAM,IAAI,CAACq1B,iBAAiB,GAAG,KAAK;oBACjE,IAAI,CAACA,iBAAiB,GAAGr1B;oBACzB+gB,cAAc,IAAI,CAACjF,MAAM,CAACnI,UAAU,EAAEkI,sBAAsB,IAAI,CAACC,MAAM,GAAG3Z,KAAK,CAAC,SAAChU;wBAC/E,IAAI,MAAKtF,KAAK,EAAE;4BACdC,QAAQiK,IAAI,CACV,qDACA5E;wBAEJ;oBACF;gBACF;YACF;;;YACA+rC,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACF,iBAAiB,EAAE;oBAC1B5uB,cAAc,IAAI,CAAC4uB,iBAAiB;oBACpC,IAAI,CAACA,iBAAiB,GAAG,KAAK;gBAChC;YACF;;;;;AAGF,gCAAgC;AAChC,IAAIG,gCAAkB;aAAlBA,gBACUre,MAAM,EAAExZ,KAAK,EAAEiwB,SAAS;gCADlC4H;QAEA,IAAI,CAACC,sBAAsB,GAAG;QAC9B,IAAI,CAACC,eAAe,GAAG;QACvB,IAAI,CAACC,aAAa,GAAG;QACrB,IAAI,CAACC,uBAAuB,GAAG;QAC/B,IAAI,CAACC,YAAY,GAAG;QACpB,IAAI,CAACC,qBAAqB,GAAG;QAC7B,IAAI,CAACC,oBAAoB,GAAG;QAC5B,IAAI,CAACC,cAAc,GAAG;QACtB,IAAI,CAACC,eAAe,GAAG;QACvB,IAAI,CAACC,sBAAsB,GAAG;QAC9B,IAAI,CAACC,0BAA0B,GAAG;QAClC,IAAI,CAACC,iBAAiB,GAAG;QACzB,IAAI,CAACC,mBAAmB,GAAG;QAC3B,IAAI,CAACC,sBAAsB,GAAG;QAC9B,IAAI,CAACC,sBAAsB,GAAG;QAC9B,IAAI,CAACC,aAAa,GAAG;QACrB,IAAI,CAACC,YAAY,GAAG;QACpB,IAAI,CAACC,8BAA8B,GAAG;QACtC,IAAI,CAACC,cAAc,GAAG,aAAa,GAAG,IAAIlzC;QAC1C,IAAI,CAACmzC,oBAAoB,GAAG,aAAa,GAAG,IAAIpzC;QAChD,IAAI,CAACqzC,0BAA0B,GAAG;QAClC,IAAI,CAACC,wBAAwB,GAAG;QAChC,IAAI,CAACC,qBAAqB,GAAG;QAC7B,IAAI,CAACC,yBAAyB,GAAG;QACjC,IAAI,CAACC,yBAAyB,GAAG;QACjC,IAAI,CAACC,wBAAwB,GAAG;QAChC,IAAI,CAACC,wBAAwB,GAAG;QAChC,IAAI,CAACC,sBAAsB,GAAG;QAC9B,IAAI,CAACjgB,MAAM,GAAGA;QACd,IAAI,CAACxZ,KAAK,GAAGA;QACb,IAAI,CAACiwB,SAAS,GAAGA;;;;YAEf1pC,KAAAA;iBAAJ;gBACE,OAAO,CAAC,CAAC,IAAI,CAACizB,MAAM,CAACC,aAAa;YACpC;;;YACA,wBAAwB;YACxBigB,KAAAA;mBAAAA,SAAAA,wBAAwBC,WAAW;;gBACjC,IAAI,CAACC,gBAAgB;gBACrB,IAAMjyC,KAAKZ,KAAKsF,GAAG,CAAC,GAAGtF,KAAKC,KAAK,CAAC2yC;gBAClC,IAAIhyC,OAAO,GAAG;oBACZ,IAAI,CAACkyC,sBAAsB;oBAC3B;gBACF;gBACA,IAAI,CAACC,aAAa,GAAGnlC,OAAOf,UAAU,CAAC;oBACrC,MAAKimC,sBAAsB;gBAC7B,GAAGlyC;YACL;;;YACAiyC,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACE,aAAa,IAAI,MAAM;oBAC9BtmC,aAAa,IAAI,CAACsmC,aAAa;oBAC/B,IAAI,CAACA,aAAa,GAAG,KAAK;gBAC5B;YACF;;;YACAD,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAACC,aAAa,GAAG,KAAK;gBAC1B,IAAI,CAAC7J,SAAS,CAAC8J,kBAAkB;YACnC;;;YACA,yBAAyB;YACzBC,KAAAA;mBAAAA,SAAAA,kBAAkBC,OAAO;;oBAAEhT,SAAAA,iEAAS;oBAAEn1B,MAAM;gBAAQ,GAAGooC;gBACrD,IAAI,CAACC,iBAAiB;gBACtB,IAAMxyC,KAAKZ,KAAKsF,GAAG,CAAC,GAAGtF,KAAKC,KAAK,CAACizC;gBAClC,IAAItyC,OAAO,GAAG;oBACZ,IAAI,CAACsoC,SAAS,CAACmK,mBAAmB,CAACnT,QAAQiT;oBAC3C;gBACF;gBACA,IAAI,CAACG,cAAc,GAAG1lC,OAAOf,UAAU,CAAC;oBACtC,MAAKq8B,SAAS,CAACmK,mBAAmB,CAACnT,QAAQiT;gBAC7C,GAAGvyC;YACL;;;YACAwyC,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACE,cAAc,IAAI,MAAM;oBAC/B7mC,aAAa,IAAI,CAAC6mC,cAAc;oBAChC,IAAI,CAACA,cAAc,GAAG,KAAK;gBAC7B;YACF;;;YACA,oBAAoB;YACpBC,KAAAA;mBAAAA,SAAAA,eAAeC,gBAAgB;gBAC7B,IAAMC,WAAW,AAAC,CAAA,IAAI,CAACx6B,KAAK,CAAC5N,WAAW,GAAGmoC,gBAAe,IAAK;gBAC/D,IAAI,CAACnzC,OAAOC,QAAQ,CAACmzC,aAAazzC,KAAK0P,GAAG,CAAC+jC,YAAY,KAAK;gBAC5D,IAAMC,QAAQ;gBACd,IAAI,CAACzC,aAAa,GAAG,IAAI,CAACA,aAAa,GAAI,CAAA,IAAIyC,KAAI,IAAKD,WAAWC;YACrE;;;YACAC,KAAAA;mBAAAA,SAAAA,iCAAiCzT,MAAM;gBACrC,IAAM0T,iBAAiBtyC,KAAKqV,GAAG;gBAC/B,IAAI,OAAOupB,OAAOe,UAAU,KAAK,UAAU;oBACzC,OAAO2S;gBACT;gBACA,IAAM3E,QAAQ,IAAI,CAACh2B,KAAK,CAAC5N,WAAW,GAAG;gBACvC,IAAMwoC,wBAAwB5E,QAAQ,IAAI,CAACgC,aAAa;gBACxD,IAAM6C,UAAU5T,OAAOe,UAAU,GAAG,MAAM4S;gBAC1C,IAAI,CAACxzC,OAAOC,QAAQ,CAACwzC,UAAU;oBAC7B,OAAOF;gBACT;gBACA,OAAOA,iBAAiB5zC,KAAKC,KAAK,CAAC6zC;YACrC;;;YACA,4BAA4B;YAC5BC,KAAAA;mBAAAA,SAAAA,2BAA2BxE,UAAU;gBACnC,IAAI,CAACyE,yBAAyB,GAAGzE;gBACjC,IAAIA,cAAc,QAAQ,IAAI,CAAC0E,8BAA8B,IAAI,MAAM;oBACrE,IAAI,CAACC,yBAAyB,GAAG,IAAI,CAACD,8BAA8B,GAAG1E;gBACzE,OAAO;oBACL,IAAI,CAAC2E,yBAAyB,GAAG,KAAK;gBACxC;YACF;;;YACAC,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACH,yBAAyB,IAAI,MAAM;oBAC1C;gBACF;gBACA,IAAI,CAACrB,uBAAuB,CAAC,IAAI,CAACyB,yBAAyB;YAC7D;;;YACA,0BAA0B;YAC1BA,KAAAA;mBAAAA,SAAAA;gBACE,IAAMC,iBAAiB,IAAI,CAACC,wBAAwB;gBACpD,IAAID,kBAAkB,MAAM;oBAC1B,OAAOr0C,KAAKsF,GAAG,CAAC,GAAG+uC,iBAAiB/yC,KAAKqV,GAAG;gBAC9C;gBACA,OAAO;YACT;;;YACA29B,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACJ,yBAAyB,IAAI,MAAM;oBAC1C,OAAO,IAAI,CAACA,yBAAyB;gBACvC;gBACA,IAAI,IAAI,CAACF,yBAAyB,IAAI,QAAQ,IAAI,CAACC,8BAA8B,IAAI,MAAM;oBACzF,OAAO,KAAK;gBACd;gBACA,OAAO,IAAI,CAACA,8BAA8B,GAAG,IAAI,CAACD,yBAAyB;YAC7E;;;YACAO,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACP,yBAAyB,IAAI,MAAM;oBAC1C,OAAO;gBACT;gBACA,OAAOh0C,KAAKsF,GAAG,CAAC,GAAG,IAAI,CAAC0uC,yBAAyB,GAAG,IAAI,CAAC9C,uBAAuB;YAClF;;;YACAsD,KAAAA;mBAAAA,SAAAA,sBAAsBC,YAAY;oBACZA;gBAApB,IAAM7F,eAAc6F,oCAAAA,aAAa1uB,mBAAmB,cAAhC0uB,wDAAAA,uCAAAA;gBACpB,IAAI7F,eAAe,QAAQA,eAAe,GAAG;oBAC3C,OAAO;gBACT;gBACA,OAAO5uC,KAAK2B,KAAK,CAACitC,cAAc;YAClC;;;YACA8F,KAAAA;mBAAAA,SAAAA,sBAAsBnF,UAAU;gBAC9B,IAAIA,cAAc,KAAK,IAAI,CAACyE,yBAAyB,IAAI,MAAM;oBAC7D,OAAO;gBACT;gBACA,OAAOzE,cAAc,IAAI,CAACgF,4BAA4B;YACxD;;;YACAI,KAAAA;mBAAAA,SAAAA,sBAAsBpmC,QAAQ,EAAEghC,UAAU,EAAEkF,YAAY;;oBAKzCA;gBAJb,IAAI,CAAC,IAAI,CAACj1C,KAAK,EAAE;oBACf;gBACF;gBACA,IAAMo1C,kBAAkB,IAAI,CAACL,4BAA4B;gBACzD,IAAM9pC,gBAAOgqC,8BAAAA,aAAazuB,aAAa,cAA1ByuB,kDAAAA,iCAAAA,oDAAkC;gBAC/C,IAAIlmC,UAAU;oBACZ9O,QAAQC,GAAG,CACT,AAAC,gCAAiD6vC,OAAlB9kC,MAAK,eAA0DzK,OAA7CuvC,YAAW,oCAA4E,OAA1CvvC,KAAKsF,GAAG,CAAC,GAAGsvC,kBAAkBrF,aAAY;gBAE7I,OAAO;oBACL9vC,QAAQC,GAAG,CACT,AAAC,gCAAiD6vC,OAAlB9kC,MAAK,eAAsDmqC,OAAzCrF,YAAW,gCAA8C,OAAhBqF,iBAAgB;gBAE/G;YACF;;;YACAC,KAAAA;mBAAAA,SAAAA,uBAAuBJ,YAAY;gBACjC,IAAMlF,aAAa,IAAI,CAACiF,qBAAqB,CAACC;gBAC9C,IAAIlF,cAAc,GAAG;oBACnB;gBACF;gBACA,IAAI,CAAC2B,uBAAuB,IAAI3B;gBAChC,IAAI,IAAI,CAAC/vC,KAAK,EAAE;wBAEoF;oBADlGC,QAAQC,GAAG,CAn1KjB,AAo1KQ,AAAC,wBAA2D,OAApC6vC,YAAW,6BAAyB,IAAI,CAAC2B,uBAAuB,EAAC,SAA6C,QAAtC,kCAAA,IAAI,CAAC8C,yBAAyB,cAA9B,6CAAA,kCAAkC,KAAI;gBAE1I;YACF;;;YACAc,KAAAA;mBAAAA,SAAAA,yBAAyBL,YAAY;gBACnC,IAAMlF,aAAa,IAAI,CAACiF,qBAAqB,CAACC;gBAC9C,IAAMM,OAAO,IAAI,CAACL,qBAAqB,CAACnF;gBACxC,IAAI,CAACoF,qBAAqB,CAACI,MAAMxF,YAAYkF;gBAC7C,OAAOM;YACT;;;YACAC,KAAAA;mBAAAA,SAAAA,0BAA0BP,YAAY;gBACpC,IAAI;oBACFA,aAAal1B,OAAO;gBACtB,EAAE,eAAM,CACR;YACF;;;YACA01B,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAAC3D,cAAc;gBACnB,IAAI,CAACC,eAAe,GAAG,IAAI,CAACD,cAAc;YAC5C;;;YACA4D,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAAC1D,sBAAsB;gBAC3B,IAAI,CAACE,iBAAiB,GAAGpwC,KAAKqV,GAAG;YACnC;;;YACAw+B,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAAC7D,cAAc;gBACnB,IAAI,CAACC,eAAe,GAAG,IAAI,CAACD,cAAc;YAC5C;;;YACA8D,KAAAA;mBAAAA,SAAAA;gBACE,IAAMC,qBAAqB,IAAI,CAACjB,yBAAyB;gBACzD,IAAMkB,kBAAkB,IAAI,CAACf,4BAA4B;gBACzD,IAAI,IAAI,CAACP,yBAAyB,IAAI,MAAM;oBAC1C,OAAOqB;gBACT;gBACA,OAAOr1C,KAAKuF,GAAG,CAAC8vC,oBAAoBC;YACtC;;;YACAC,KAAAA;mBAAAA,SAAAA;gBACE,IAAMC,aAAa,IAAI,CAAC/iB,MAAM,CAACgjB,uBAAuB;gBACtD,IAAI,OAAOD,eAAe,YAAYA,cAAc,GAAG;oBACrD,OAAOA;gBACT;gBACA,OAAO,IAAI,CAACxD,8BAA8B;YAC5C;;;YACA0D,KAAAA;mBAAAA,SAAAA;gBACE,IAAMC,eAAe,IAAI,CAACJ,0BAA0B;gBACpD,OAAO,IAAI,CAACnB,yBAAyB,KAAKuB,gBAAgB,IAAI,CAACpB,4BAA4B,KAAKoB;YAClG;;;YACA,0BAA0B;YAC1BC,KAAAA;mBAAAA,SAAAA,mBAAmB9wC,KAAK;oBACNA;gBAAhB,IAAM0S,UAAU1S,CAAAA,kBAAAA,6BAAAA,iBAAAA,MAAO0S,OAAO,cAAd1S,qCAAAA,eAAgBkF,WAAW,OAAM;gBACjD,IAAIwN,QAAQtH,QAAQ,CAAC,uBAAuBsH,QAAQtH,QAAQ,CAAC,cAAcsH,QAAQtH,QAAQ,CAAC,WAAW;oBACrG,OAAO;gBACT;gBACA,IAAIsH,QAAQtH,QAAQ,CAAC,YAAY;oBAC/B,OAAO;gBACT;gBACA,IAAIsH,QAAQtH,QAAQ,CAAC,0BAA0BsH,QAAQtH,QAAQ,CAAC,YAAY;oBAC1E,OAAO;gBACT;gBACA,IAAIsH,QAAQtH,QAAQ,CAAC,iBAAiBsH,QAAQtH,QAAQ,CAAC,sBAAsB;oBAC3E,OAAO;gBACT;gBACA,IAAIsH,QAAQtH,QAAQ,CAAC,sBAAsB;oBACzC,OAAO;gBACT;gBACA,OAAO;YACT;;;YACA2lC,KAAAA;mBAAAA,SAAAA,gBAAgB7/B,UAAU;gBACxB,IAAM8/B,cAAc,IAAI,CAAC5D,oBAAoB,CAACn2C,GAAG,CAACia;gBAClD,IAAI8/B,eAAe,MAAM;oBACvB,OAAO;gBACT;gBACA,IAAMrW,UAAUn+B,KAAKqV,GAAG,KAAKm/B;gBAC7B,IAAIrW,WAAW,IAAI,CAAC0S,0BAA0B,EAAE;oBAC9C,IAAI,CAACD,oBAAoB,CAACtlC,MAAM,CAACoJ;oBACjC,OAAO;gBACT;gBACA,OAAO;YACT;;;YACA+/B,KAAAA;mBAAAA,SAAAA;gBACE,IAAMp/B,MAAMrV,KAAKqV,GAAG;oBACf,kCAAA,2BAAA;;oBAAL,QAAK,YAA0B,IAAI,CAACu7B,oBAAoB,qBAAnD,SAAA,6BAAA,QAAA,yBAAA,iCAAqD;wBAArD,mCAAA,iBAAO3vC,sBAAKozB;wBACf,IAAIhf,MAAMgf,aAAa,IAAI,CAACwc,0BAA0B,EAAE;4BACtD,IAAI,CAACD,oBAAoB,CAACtlC,MAAM,CAACrK;wBACnC;oBACF;;oBAJK;oBAAA;;;6BAAA,6BAAA;4BAAA;;;4BAAA;kCAAA;;;;YAKP;;;YACAyzC,KAAAA;mBAAAA,SAAAA;gBACE,OAAO10C,KAAKqV,GAAG,KAAK,IAAI,CAAC27B,yBAAyB;YACpD;;;YACA2D,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAAC7D,wBAAwB;gBAC7B,IAAI,IAAI,CAACA,wBAAwB,IAAI,IAAI,CAACC,qBAAqB,EAAE;oBAC/D,IAAM6D,WAAW,IAAI,CAAC9D,wBAAwB,GAAG,IAAI,CAACC,qBAAqB;oBAC3E,IAAM8D,UAAUn2C,KAAKuF,GAAG,CACtB,IAAI,CAACgtC,yBAAyB,GAAGvyC,KAAKo2C,GAAG,CAAC,GAAGF,WAC7C,IAAI,CAAC1D,wBAAwB;oBAE/B,IAAI,CAACF,yBAAyB,GAAGhxC,KAAKqV,GAAG,KAAKw/B;oBAC9C,IAAI,IAAI,CAAC32C,KAAK,EAAE;wBACdC,QAAQC,GAAG,CACT,AAAC,6CAA0D,OAAdy2C,SAAQ,QAAoC,OAA9B,IAAI,CAAC/D,wBAAwB,EAAC;oBAE7F;gBACF;YACF;;;YACAiE,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACjE,wBAAwB,GAAG,KAAK,IAAI,CAAC5yC,KAAK,EAAE;oBACnDC,QAAQC,GAAG,CACT,AAAC,oDAAiF,OAA9B,IAAI,CAAC0yC,wBAAwB,EAAC;gBAEtF;gBACA,IAAI,CAACA,wBAAwB,GAAG;gBAChC,IAAI,CAACE,yBAAyB,GAAG;YACnC;;;YACMgE,KAAAA;mBAAN,SAAMA;;wBACE3/B,KACA8oB,SAEE8W;;;;gCAHF5/B,MAAMrV,KAAKqV,GAAG;gCACd8oB,UAAU9oB,MAAM,IAAI,CAAC87B,wBAAwB;qCAC/ChT,CAAAA,UAAU,IAAI,CAACiT,sBAAqB,AAAC,GAArCjT;;;;gCACI8W,SAAS,IAAI,CAAC7D,sBAAsB,GAAGjT;gCAC7C,IAAI,IAAI,CAACjgC,KAAK,EAAE;oCACdC,QAAQC,GAAG,CAAC,AAAC,wBAA8B,OAAP62C,QAAO;gCAC7C;gCACA;;oCAAM,IAAI13C,QAAQ,SAAC0lB;+CAAY1X,WAAW0X,SAASgyB;;;;gCAAnD;;;gCAEF,IAAI,CAAC9D,wBAAwB,GAAGnxC,KAAKqV,GAAG;;;;;;gBAC1C;;;;YACA,mBAAmB;YACnB6/B,KAAAA;mBAAAA,SAAAA,uBAAuBC,KAAK;;oBAER;gBADlB,IAAI,CAACC,sBAAsB;gBAC3B,IAAM32B,aAAY,mCAAA,IAAI,CAAC0S,MAAM,CAACkkB,mBAAmB,cAA/B,8CAAA,mCAAmC;gBACrD,IAAI,CAAC5F,sBAAsB,GAAG0F;gBAC9B,IAAI,CAACG,mBAAmB,GAAGhpC,OAAOf,UAAU,CAAC;oBAC3C,IAAI,MAAKkkC,sBAAsB,KAAK0F,OAAO;wBACzC;oBACF;oBACA,MAAKG,mBAAmB,GAAG,KAAK;oBAChC,MAAK7F,sBAAsB,GAAG;oBAC9B,IAAI,MAAKM,oBAAoB,KAAKoF,OAAO;wBACvC,MAAKpF,oBAAoB,GAAG;oBAC9B;oBACA,MAAKwF,UAAU,CAAC,sBAAsB;wBAAEJ,OAAAA;wBAAO12B,WAAAA;oBAAU;oBACzD,MAAKmpB,SAAS,CAAC4N,iBAAiB;gBAClC,GAAG/2B;gBACH,IAAI,CAAC82B,UAAU,CAAC,+BAA+B;oBAAEJ,OAAAA;oBAAO12B,WAAAA;gBAAU;YACpE;;;YACA22B,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACE,mBAAmB,IAAI,MAAM;oBACpCnqC,aAAa,IAAI,CAACmqC,mBAAmB;oBACrC,IAAI,CAACA,mBAAmB,GAAG,KAAK;gBAClC;gBACA,IAAI,IAAI,CAAC7F,sBAAsB,IAAI,MAAM;oBACvC,IAAI,CAAC8F,UAAU,CAAC,+BAA+B;wBAC7CJ,OAAO,IAAI,CAAC1F,sBAAsB;oBACpC;oBACA,IAAI,CAACA,sBAAsB,GAAG;gBAChC;YACF;;;YACA,mBAAmB;YACnBgG,KAAAA;mBAAAA,SAAAA,qBAAqBN,KAAK;;oBAEL;gBADnB,IAAI,CAACO,oBAAoB;gBACzB,IAAMC,cAAa,mCAAA,IAAI,CAACxkB,MAAM,CAACkkB,mBAAmB,cAA/B,8CAAA,mCAAmC;gBACtD,IAAI,CAAC3F,eAAe,GAAGyF;gBACvB,IAAI,CAACS,iBAAiB,GAAGtpC,OAAOf,UAAU,CAAC;oBACzC,IAAI,MAAKmkC,eAAe,KAAKyF,OAAO;wBAClC;oBACF;oBACA,MAAKS,iBAAiB,GAAG,KAAK;oBAC9B,MAAKlG,eAAe,GAAG;oBACvB,IAAI,MAAKK,oBAAoB,KAAKoF,OAAO;wBACvC,MAAKpF,oBAAoB,GAAG;oBAC9B;oBACA,MAAKwF,UAAU,CAAC,yBAAyB;wBACvCJ,OAAAA;wBACAQ,YAAAA;wBACAE,aAAa,MAAKl+B,KAAK,CAACuC,MAAM;oBAChC;oBACA,MAAK0tB,SAAS,CAACkO,iBAAiB;gBAClC,GAAGH;gBACH,IAAI,CAACJ,UAAU,CAAC,uBAAuB;oBAAEJ,OAAAA;oBAAOQ,YAAAA;gBAAW;YAC7D;;;YACAD,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACE,iBAAiB,IAAI,MAAM;oBAClCzqC,aAAa,IAAI,CAACyqC,iBAAiB;oBACnC,IAAI,CAACL,UAAU,CAAC,uBAAuB;wBAAEJ,OAAO,IAAI,CAACzF,eAAe;oBAAC;oBACrE,IAAI,CAACkG,iBAAiB,GAAG,KAAK;gBAChC;gBACA,IAAI,CAAClG,eAAe,GAAG;YACzB;;;YACA6F,KAAAA;mBAAAA,SAAAA,WAAWvtC,KAAK;oBAAEa,QAAAA,iEAAQ,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC3K,KAAK,EAAE;oBACf;gBACF;gBACA,IAA0C,6BAAA,IAAI,CAAC0pC,SAAS,CAACmO,UAAU,IAA3D1M,YAAkC,2BAAlCA,WAAW2M,UAAuB,2BAAvBA,SAASnyC,YAAc,2BAAdA;gBAC5B1F,QAAQC,GAAG,CAAC,oCAAoC;oBAC9C4J,OAAAA;oBACAqsB,WAAW,CAAC,aAAa,GAAG,IAAIr0B,QAAQC,WAAW;oBACnD+1C,SAAAA;oBACAnyC,WAAAA;oBACAwlC,WAAAA;oBACA0G,sBAAsB,IAAI,CAACA,oBAAoB;mBAC5ClnC;YAEP;;;YACA,iCAAiC;YACjCotC,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAAC1E,gBAAgB;gBACrB,IAAI,CAACO,iBAAiB;gBACtB,IAAI,CAACsD,sBAAsB;gBAC3B,IAAI,CAACM,oBAAoB;gBACzB,IAAI,CAAC3F,oBAAoB,GAAG;gBAC5B,IAAI,CAAC2C,yBAAyB,GAAG,KAAK;gBACtC,IAAI,CAACC,8BAA8B,GAAG,KAAK;gBAC3C,IAAI,CAACC,yBAAyB,GAAG,KAAK;gBACtC,IAAI,CAAChD,uBAAuB,GAAG;gBAC/B,IAAI,CAACI,cAAc,GAAG;gBACtB,IAAI,CAACC,eAAe,GAAG;gBACvB,IAAI,CAACI,mBAAmB,GAAG;gBAC3B,IAAI,CAACS,wBAAwB,GAAG;gBAChC,IAAI,CAACjB,YAAY;YACnB;;;YACA5xB,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAACszB,gBAAgB;gBACrB,IAAI,CAACO,iBAAiB;gBACtB,IAAI,CAAC4D,oBAAoB;gBACzB,IAAI,CAACN,sBAAsB;YAC7B;;;;;AAGF,iCAAiC;AACjC,IAAIc,iCAAmB;aAAnBA,iBACUv+B,KAAK,EAAEzZ,KAAK;gCADtBg4C;QAEA,IAAI,CAACv+B,KAAK,GAAGA;QACb,IAAI,CAACzZ,KAAK,GAAGA;;;;YAEfi4C,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACh0B,SAAS,EAAE;oBAClB;gBACF;gBACA,IAAM5gB,KAAK2H,SAAS4D,aAAa,CAAC;gBAClCvL,GAAGqW,KAAK,CAACC,QAAQ,GAAG;gBACpBtW,GAAGqW,KAAK,CAACE,IAAI,GAAG;gBAChBvW,GAAGqW,KAAK,CAAC1D,GAAG,GAAG;gBACf3S,GAAGqW,KAAK,CAACwK,KAAK,GAAG;gBACjB7gB,GAAGqW,KAAK,CAACyK,MAAM,GAAG;gBAClB9gB,GAAGqW,KAAK,CAAC8F,OAAO,GAAG;gBACnBnc,GAAGqW,KAAK,CAAC0K,UAAU,GAAG;gBACtB/gB,GAAGqW,KAAK,CAAC2K,cAAc,GAAG;gBAC1BhhB,GAAGqW,KAAK,CAACmK,aAAa,GAAG;gBACzBxgB,GAAGqW,KAAK,CAAC4K,MAAM,GAAG;gBAClBjhB,GAAGqW,KAAK,CAACI,eAAe,GAAG;gBAC3BzW,GAAGqW,KAAK,CAACw+B,UAAU,GAAG;gBACtB70C,GAAGqW,KAAK,CAACqK,OAAO,GAAG;gBACnB,IAAI,CAAC,IAAI,CAACtK,KAAK,CAAC8K,aAAa,EAAE;oBAC7B,IAAI,IAAI,CAACvkB,KAAK,EAAE;wBACdC,QAAQiK,IAAI,CAAC;oBACf;oBACA;gBACF;gBACA,IAAI,CAACuP,KAAK,CAAC8K,aAAa,CAACnE,WAAW,CAAC/c;gBACrC,IAAI,CAAC4gB,SAAS,GAAG5gB;YACnB;;;YACA80C,KAAAA;mBAAAA,SAAAA;;gBACE,IAAI,CAACF,eAAe;gBACpB,IAAI,CAAC,IAAI,CAACh0B,SAAS,EAAE;oBACnB;gBACF;gBACA,IAAI,CAAC,IAAI,CAACxK,KAAK,CAACjO,KAAK,EAAE;oBACrB,IAAI,CAACiO,KAAK,CAACjO,KAAK,GAAG;oBACnB,IAAI,IAAI,CAACxL,KAAK,EAAE;wBACdC,QAAQC,GAAG,CAAC;oBACd;gBACF;gBACA,IAAMk4C,YAAY,IAAI,CAACn0B,SAAS,CAACvK,KAAK,CAAC8F,OAAO,KAAK,UAAU,IAAI,CAACyE,SAAS,CAACvK,KAAK,CAACqK,OAAO,KAAK;gBAC9F,IAAIq0B,WAAW;oBACb,IAAI,CAACn0B,SAAS,CAACvK,KAAK,CAACw+B,UAAU,GAAG;gBACpC,OAAO;oBACL,IAAI,CAACj0B,SAAS,CAACvK,KAAK,CAACw+B,UAAU,GAAG;gBACpC;gBACA,IAAI,CAACj0B,SAAS,CAACvK,KAAK,CAACI,eAAe,GAAG;gBACvC,IAAI,CAACmK,SAAS,CAACvK,KAAK,CAAC8F,OAAO,GAAG;gBAC/B,IAAI,CAACyE,SAAS,CAACo0B,YAAY;gBAC3B,IAAI,CAACp0B,SAAS,CAACvK,KAAK,CAACqK,OAAO,GAAG;gBAC/B,IAAI,CAACE,SAAS,CAACvK,KAAK,CAACmK,aAAa,GAAG;gBACrC,IAAIu0B,WAAW;oBACbE,sBAAsB;wBACpB,IAAI,MAAKr0B,SAAS,EAAE;4BAClB,MAAKA,SAAS,CAACvK,KAAK,CAACw+B,UAAU,GAAG;wBACpC;oBACF;gBACF;gBACA,IAAI,IAAI,CAACl4C,KAAK,EAAE;oBACdC,QAAQC,GAAG,CAAC;gBACd;YACF;;;YACAq4C,KAAAA;mBAAAA,SAAAA;;gBACE,IAAI,CAAC,IAAI,CAACt0B,SAAS,EAAE;oBACnB;gBACF;gBACA,IAAI,CAACA,SAAS,CAACvK,KAAK,CAACqK,OAAO,GAAG;gBAC/B1W,WAAW;oBACT,IAAI,MAAK4W,SAAS,EAAE;wBAClB,MAAKA,SAAS,CAACvK,KAAK,CAAC8F,OAAO,GAAG;wBAC/B,MAAKyE,SAAS,CAACvK,KAAK,CAACmK,aAAa,GAAG;wBACrC,MAAKI,SAAS,CAACvK,KAAK,CAACI,eAAe,GAAG;oBACzC;gBACF,GAAG;gBACH,IAAI,IAAI,CAAC9Z,KAAK,EAAE;oBACdC,QAAQC,GAAG,CAAC;gBACd;YACF;;;YACA6f,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACkE,SAAS,EAAE;oBAClB,IAAI,IAAI,CAACA,SAAS,CAACM,aAAa,EAAE;wBAChC,IAAI,CAACN,SAAS,CAACM,aAAa,CAACi0B,WAAW,CAAC,IAAI,CAACv0B,SAAS;oBACzD;oBACA,IAAI,CAACA,SAAS,GAAG,KAAK;gBACxB;YACF;;;;;AAGF,0BAA0B;AAC1B,IAAIw0B,cAAcz7C,QAAQW,QAAQ,WAAW;AAC7C,IAAI+6C,0BAAY;aAAZA,UACUzlB,MAAM,EAAExZ,KAAK,EAAEk/B,UAAU,EAAEC,MAAM,EAAElP,SAAS;gCADtDgP;QAEA,IAAI,CAACvlB,YAAY,GAAG;QACpB,IAAI,CAAC0lB,aAAa,GAAG;QACrB,IAAI,CAACC,kBAAkB,GAAG;QAC1B,IAAI,CAACC,mBAAmB,GAAG;QAC3B,IAAI,CAACC,qBAAqB,GAAG;QAC7B,IAAI,CAACC,4BAA4B,GAAG;QACpC,IAAI,CAACC,yBAAyB,GAAG;QACjC,IAAI,CAACC,qBAAqB,GAAG;QAC7B,IAAI,CAAClmB,MAAM,GAAGA;QACd,IAAI,CAACxZ,KAAK,GAAGA;QACb,IAAI,CAACk/B,UAAU,GAAGA;QAClB,IAAI,CAACC,MAAM,GAAGA;QACd,IAAI,CAAClP,SAAS,GAAGA;;;;YAEf1pC,KAAAA;iBAAJ;gBACE,OAAO,CAAC,CAAC,IAAI,CAACizB,MAAM,CAACC,aAAa;YACpC;;;YACAkmB,KAAAA;mBAAAA,SAAAA,mBAAmBC,aAAa;gBAC9B,IAAMlV,aAAakV;gBACnB,IAAIlV,eAAe,SAAS;oBAC1B,OAAO;gBACT;gBACA,IAAMmV,YAAY,IAAI,CAAC7/B,KAAK,CAACnK,WAAW,CAAC;gBACzC,OAAO,CAAC,CAAE,CAAA,IAAI,CAAC2jB,MAAM,CAACpzB,cAAc,IAAIy5C,SAAQ;YAClD;;;YACMC,KAAAA;mBAAN,SAAMA;;wBAIgB,2BAA6B,6BAEzCC,YAWA;;;;gCAhBR,IAAI,CAACX,aAAa,GAAG;gCACrB,IAAI,CAACC,kBAAkB,GAAG,IAAI,CAAC7lB,MAAM,CAAC3lB,GAAG;gCACzC,IAAI,CAACmM,KAAK,CAACnM,GAAG,GAAG,IAAI,CAAC2lB,MAAM,CAAC3lB,GAAG;gCAChC,IAAI,CAAC6lB,YAAY,IAAG,4BAAA,IAAI,CAACF,MAAM,CAACE,YAAY,cAAxB,uCAAA,6BAA6B,8BAAA,IAAI,CAACF,MAAM,CAAC3R,cAAc,cAA1B,yCAAA,8BAA8B;gCAC/E,IAAI,IAAI,CAACthB,KAAK,EAAE;oCACRw5C,aAAa,IAAI,CAACrmB,YAAY,GAAG,iDAAiD;oCACxFlzB,QAAQC,GAAG,CACT,sDACA;wCACEu5C,QAAQ,IAAI,CAACtmB,YAAY;wCACzBtzB,gBAAgB,IAAI,CAACozB,MAAM,CAACpzB,cAAc;wCAC1C25C,YAAAA;oCACF;gCAEJ;qCACI,IAAI,CAACvmB,MAAM,CAAC+d,QAAQ,EAApB;;;;gCACF;;qCAAM,mBAAA,IAAI,CAACv3B,KAAK,CAACmG,IAAI,gBAAf,uCAAA,iBAAmBtG,KAAK,CAAC,YAC/B;;;gCADA;;;;;;;;gBAGJ;;;;YACAogC,KAAAA;mBAAAA,SAAAA;;gBACE,IAAI,CAACC,GAAG,GAAG,IAAIlB,YAAYjpC,OAAO,CAAC;oBACjC6R,cAAc;oBACdu4B,kBAAkB;oBAClBC,sBAAsB;oBACtBv4B,gBAAgB,CAAC,CAAC,IAAI,CAAC2R,MAAM,CAAC3R,cAAc;oBAC5Cw4B,yBAAyB;oBACzBC,iBAAiB;oBACjBC,oBAAoB;oBACpBC,eAAe,KAAK,MAAM;oBAC1BC,eAAe;oBACfC,0BAA0B;oBAC1BC,aAAa;oBACbC,eAAe;oBACfC,eAAe,CAAC;gBAClB;gBACA,IAAI,CAACX,GAAG,CAACj4B,EAAE,CAAC+2B,YAAYjpC,OAAO,CAACmS,MAAM,CAAC44B,cAAc,EAAE;wBACrD;qBAAA,YAAA,MAAKZ,GAAG,cAAR,gCAAA,UAAUn4B,UAAU,CAAC,MAAKyR,MAAM,CAAC3lB,GAAG;gBACtC;gBACA,IAAI,CAACqsC,GAAG,CAACj4B,EAAE,CAAC+2B,YAAYjpC,OAAO,CAACmS,MAAM,CAACC,eAAe,EAAE,SAAO44B,GAAGC;;4BAC5C,iCASA,oCAT6B,kBAAA,WAS3CC,aAWI;;;;oCApBV,IAAI,CAACvnB,YAAY,IAAG,4BAAA,IAAI,CAACF,MAAM,CAACE,YAAY,cAAxB,uCAAA,qCAA6B,YAAA,IAAI,CAACwmB,GAAG,cAAR,iCAAA,mBAAA,UAAUnsC,MAAM,cAAhB,uCAAA,iBAAkBsZ,IAAI,CACrE,SAAC9Y;4CAAUA,gBAAiCA;+CAAjCA,CAAAA,kBAAAA,6BAAAA,iBAAAA,MAAO2B,OAAO,cAAd3B,qCAAAA,eAAgB2sC,IAAI,MAAK,QAAQ3sC,CAAAA,kBAAAA,6BAAAA,kBAAAA,MAAO2B,OAAO,cAAd3B,sCAAAA,gBAAgBzC,IAAI,MAAK;6EAClE;oCACL;;wCAAM,IAAI,CAACm+B,SAAS,CAACkR,gBAAgB,CAAC,IAAI,CAACznB,YAAY;;;oCAAvD;oCACA,IAAI,CAAC6lB,qBAAqB,GAAG;oCAC7B,IAAI,CAACE,yBAAyB,GAAG;oCACjC,IAAI,CAACD,4BAA4B,GAAG,CAAC,CAAC,IAAI,CAAChmB,MAAM,CAAC+d,QAAQ;oCAC1D,IAAI,CAACmI,qBAAqB,GAAG;oCAC7B,IAAI,CAAC0B,wBAAwB,GAAG,KAAK;oCAC/BH,eAAc,qCAAA,IAAI,CAACznB,MAAM,CAAC6nB,qBAAqB,cAAjC,gDAAA,qCAAqC;oCACzD,IAAI,IAAI,CAAC96C,KAAK,EAAE;wCACdC,QAAQC,GAAG,CACT,uCACAw6C,aACA;oCAEJ;yCACIA,CAAAA,gBAAgB,KAAK,CAAC,IAAI,CAACznB,MAAM,CAAC+d,QAAO,AAAC,GAA1C0J;;;;oCACF,IAAI,CAACxB,yBAAyB,GAAG;yCAC7B,IAAI,CAACjmB,MAAM,CAAC+d,QAAQ,EAApB;;;;oCACF;;yCAAM,mBAAA,IAAI,CAACv3B,KAAK,CAACmG,IAAI,gBAAf,uCAAA,iBAAmBtG,KAAK,CAAC,YAC/B;;;oCADA;;;oCAIJ,IAAI,CAACy/B,mBAAmB,GAAG;;;;;;oBAC7B;;gBACA,IAAI,CAACY,GAAG,CAACj4B,EAAE,CAAC+2B,YAAYjpC,OAAO,CAACmS,MAAM,CAACo5B,YAAY,EAAE,SAACC,MAAMj5B;oBAC1D,MAAKk5B,yBAAyB,CAACl5B,iBAAAA,2BAAAA,KAAMpS,OAAO;oBAC5C,IAAI,MAAK+5B,SAAS,CAAC0B,WAAW,MAAM,MAAK1B,SAAS,CAACwR,iBAAiB,IAAI;wBACtE;oBACF;oBACA,IAAMvrC,UAAUoS,iBAAAA,2BAAAA,KAAMpS,OAAO;oBAC7B,IAAI,CAACA,WAAW,CAACA,QAAQwrC,SAAS,IAAIxrC,QAAQwrC,SAAS,CAAC13C,MAAM,KAAK,GAAG;wBACpE;oBACF;oBACA,IAAM23C,kBAAkB56C,KAAKuF,GAAG,CAAC,GAAG4J,QAAQwrC,SAAS,CAAC13C,MAAM;oBAC5D,IAAK,IAAIotB,IAAI,GAAGA,IAAIuqB,iBAAiBvqB,IAAK;wBACxC,IAAMvO,OAAO3S,QAAQwrC,SAAS,CAACtqB,EAAE;wBACjC,IAAMwqB,UAAU/4B,iBAAAA,2BAAAA,KAAM+4B,OAAO;wBAC7B,IAAI,CAACrxC,MAAMsxC,OAAO,CAACD,UAAU;4BACxB,kCAAA,2BAAA;;4BAAL,QAAK,YAAeA,4BAAf,SAAA,6BAAA,QAAA,yBAAA,iCAAwB;gCAAxB,IAAM7qC,QAAN;gCACH,IAAI0e,MAAM;gCACV,IAAI9xB,QAAQ;gCACZ,IAAI4M,MAAMsxC,OAAO,CAAC9qC,QAAQ;wCACXA,SACEA;oCADf0e,MAAM3uB,QAAOiQ,UAAAA,KAAK,CAAC,EAAE,cAARA,qBAAAA,UAAY;oCACzBpT,QAAQmD,QAAOiQ,WAAAA,KAAK,CAAC,EAAE,cAARA,sBAAAA,WAAY;gCAC7B,OAAO,IAAI,OAAOA,UAAU,UAAU;oCACpC,IAAM+qC,MAAM/qC,MAAM2C,OAAO,CAAC;oCAC1B,IAAIooC,OAAO,GAAG;wCACZrsB,MAAM1e,MAAMiI,SAAS,CAAC,GAAG8iC;wCACzBn+C,QAAQoT,MAAMiI,SAAS,CAAC8iC,MAAM;oCAChC,OAAO;wCACLrsB,MAAM1e;oCACR;gCACF;gCACA,IAAI,CAAC0e,KAAK;gCACV,IAAIA,IAAIxe,QAAQ,CAAC,oBAAoBwe,IAAIxe,QAAQ,CAAC,oBAAoB;oCACpE,IAAM0vB,QAAQlR,IAAIxe,QAAQ,CAAC,qBAAqByvB,mBAAmB/iC,SAAS,CAAC;oCAC7E,IAAM2kC,aAAa7S,IAAIxe,QAAQ,CAAC,oBAAoB,gBAAgB0vB,SAASA,KAAK,CAAC,aAAa,KAAK,KAAK;oCAC1G,IAAI2B,YAAY;wCACd,IAAML,kBAAkBjC,oBAAoBriC;wCAC5C,IAAMsjC,SAAS;4CACbn1B,MAAM;2CACHm2B,oBAAoB,KAAK,IAAI;4CAAEA,iBAAAA;wCAAgB,IAAI,CAAC;4CACvD7E,KAAK;gDAAE3N,KAAAA;gDAAK9xB,OAAAA;gDAAOo+C,gBAAgB;4CAAK;;wCAE1C,IAAI,MAAKx7C,KAAK,EAAE;4CACdC,QAAQC,GAAG,CAAC,sFAAsF2wB,GAAG;wCACvG;wCACA,MAAK6Y,SAAS,CAACiB,WAAW,CAACjK,QAAQ,mBAC9B,MAAKiY,UAAU,CAACtO,sBAAsB,CAAC,YAAY,SAAS/nB;wCAEjE;oCACF;gCACF;4BACF;;4BAnCK;4BAAA;;;qCAAA,6BAAA;oCAAA;;;oCAAA;0CAAA;;;;oBAoCP;gBACF;gBACA,IAAI,CAACq3B,GAAG,CAACj4B,EAAE,CAAC+2B,YAAYjpC,OAAO,CAACmS,MAAM,CAAC85B,aAAa,EAAE,SAAOT,MAAMP;;mCAK7C,oCAAdC,aAcI;;;;;oCAlBV,IAAI,IAAI,CAACxB,yBAAyB,EAAE;wCAClC;;;oCACF;oCACA,IAAI,CAACF,qBAAqB;oCACpB0B,eAAc,qCAAA,IAAI,CAACznB,MAAM,CAAC6nB,qBAAqB,cAAjC,gDAAA,qCAAqC;oCACzD,IAAI,IAAI,CAAC96C,KAAK,EAAE;wCACdC,QAAQC,GAAG,CACT,AAAC,4CAAyEw6C,OAA9B,IAAI,CAAC1B,qBAAqB,EAAC,KAAe,OAAZ0B;oCAE9E;yCACI,CAAA,IAAI,CAAC1B,qBAAqB,IAAI0B,WAAU,GAAxC;;;;oCACF,IAAI,CAACxB,yBAAyB,GAAG;yCAC7B,IAAI,CAACD,4BAA4B,EAAjC;;;;oCACF,IAAI,IAAI,CAACj5C,KAAK,EAAE;wCACdC,QAAQC,GAAG,CACT,AAAC,oDAA8E,OAA3B,IAAI,CAAC84C,qBAAqB,EAAC;oCAEnF;oCACA;;yCAAM,mBAAA,IAAI,CAACv/B,KAAK,CAACmG,IAAI,gBAAf,uCAAA,iBAAmBtG,KAAK,CAAC,SAACoiC;4CAC9B,IAAI,MAAK17C,KAAK,EAAE;gDACdC,QAAQiK,IAAI,CAAC,4CAA4CwxC;4CAC3D;wCACF;;;oCAJA;;;;;;;;oBAON;;gBACA,IAAI,CAAC/B,GAAG,CAACj4B,EAAE,CAAC+2B,YAAYjpC,OAAO,CAACmS,MAAM,CAACg6B,qBAAqB,EAAE,SAACX,MAAMj5B;oBACnE,IAAM65B,UAAU,AAAC75B,CAAAA,CAAAA,iBAAAA,2BAAAA,KAAM85B,OAAO,KAAI,EAAC,AAAC,EAAEn4C,GAAG,CAAC,SAACK;+BAAO;4BAChDjH,KAAK;4BACLM,KAAK,EAAE2G,cAAAA,wBAAAA,EAAGge,IAAI;4BACd0f,UAAU,EAAE19B,cAAAA,wBAAAA,EAAG+3C,GAAG;wBACpB;;oBACAF,QAAQvvC,OAAO,CAAC,SAAC6iB;+BAAQ,MAAK6sB,QAAQ,CAAC7sB;;gBACzC;gBACA,IAAI,CAACyqB,GAAG,CAACj4B,EAAE,CAAC+2B,YAAYjpC,OAAO,CAACmS,MAAM,CAACq6B,WAAW,EAAE,SAAChB,MAAMj5B;wBAGhDA;oBAFT,MAAKk6B,4BAA4B,CAC/Bl6B,iBAAAA,2BAAAA,KAAMhY,OAAO,EACb,QAAOgY,iBAAAA,4BAAAA,aAAAA,KAAMO,IAAI,cAAVP,iCAAAA,WAAYwoB,EAAE,MAAK,WAAWxoB,KAAKO,IAAI,CAACioB,EAAE,GAAG,KAAK,GACzDpJ,wBAAwBpf,iBAAAA,2BAAAA,KAAMO,IAAI;gBAEtC;gBACA,IAAI,CAACq3B,GAAG,CAACj4B,EAAE,CAAC+2B,YAAYjpC,OAAO,CAACmS,MAAM,CAACu6B,cAAc,EAAE,SAAClB,MAAMj5B;wBAGnDA;oBAFT,MAAKk6B,4BAA4B,CAC/Bl6B,iBAAAA,2BAAAA,KAAMhY,OAAO,EACb,QAAOgY,iBAAAA,4BAAAA,aAAAA,KAAMO,IAAI,cAAVP,iCAAAA,WAAYwoB,EAAE,MAAK,WAAWxoB,KAAKO,IAAI,CAACioB,EAAE,GAAG,KAAK,GACzDpJ,wBAAwBpf,iBAAAA,2BAAAA,KAAMO,IAAI;gBAEtC;gBACA,IAAI,CAACq3B,GAAG,CAACj4B,EAAE,CAAC+2B,YAAYjpC,OAAO,CAACmS,MAAM,CAACw6B,YAAY,EAAE,SAACnB,MAAMj5B;oBAC1D,IAAMO,OAAOP,iBAAAA,2BAAAA,KAAMO,IAAI;oBACvB,IAAM+4B,UAAU/4B,iBAAAA,2BAAAA,KAAM+4B,OAAO;oBAC7B,IAAI,CAACrxC,MAAMsxC,OAAO,CAACD,UAAU;wBAC3B,MAAK3R,SAAS,CAAC0S,8BAA8B,CAAC95B;wBAC9C;oBACF;wBACK,kCAAA,2BAAA;;wBAAL,QAAK,YAAe+4B,4BAAf,SAAA,6BAAA,QAAA,yBAAA,iCAAwB;4BAAxB,IAAM7qC,QAAN;4BACH,IAAI0e,MAAM;4BACV,IAAI9xB,QAAQ;4BACZ,IAAI4M,MAAMsxC,OAAO,CAAC9qC,QAAQ;oCACXA,SACEA;gCADf0e,MAAM3uB,QAAOiQ,UAAAA,KAAK,CAAC,EAAE,cAARA,qBAAAA,UAAY;gCACzBpT,QAAQmD,QAAOiQ,WAAAA,KAAK,CAAC,EAAE,cAARA,sBAAAA,WAAY;4BAC7B,OAAO,IAAI,OAAOA,UAAU,UAAU;gCACpC,IAAM+qC,MAAM/qC,MAAM2C,OAAO,CAAC;gCAC1B,IAAIooC,OAAO,GAAG;oCACZrsB,MAAM1e,MAAMiI,SAAS,CAAC,GAAG8iC;oCACzBn+C,QAAQoT,MAAMiI,SAAS,CAAC8iC,MAAM;gCAChC,OAAO;oCACLrsB,MAAM1e;oCACNpT,QAAQ;gCACV;4BACF;4BACA,IAAI,CAAC8xB,KAAK;4BACV,IAAIA,IAAIxe,QAAQ,CAAC,uBAAuB;gCACtC,IAAM2rC,OAAOxc,gBAAgBziC;gCAC7B,IAAMsjC,SAAS;oCACbn1B,MAAM;mCACH8wC,CAAAA,iBAAAA,2BAAAA,KAAMhmC,QAAQ,MAAK,KAAK,IAAI;oCAAEqrB,iBAAiB2a,KAAKhmC,QAAQ;gCAAC,IAAI,CAAC,GAClEgmC,CAAAA,iBAAAA,2BAAAA,KAAMpc,OAAO,MAAK,KAAK,IAAI;oCAAEwB,YAAY4a,KAAKpc,OAAO;gCAAC,IAAI,CAAC;oCAC9DpD,KAAK;wCAAE3N,KAAAA;wCAAK9xB,OAAAA;oCAAM;;gCAEpB,MAAKssC,SAAS,CAACiB,WAAW,CAACjK,QAAQ,mBAC9B,MAAKiY,UAAU,CAACtO,sBAAsB,CAAC,YAAY,YAAY/nB;4BAEtE,OAAO,IAAI4M,IAAIxe,QAAQ,CAAC,kBAAkB;gCACxC,IAAMgxB,kBAAkBjC,oBAAoBriC;gCAC5C,IAAMsjC,UAAS;oCACbn1B,MAAM;mCACHm2B,oBAAoB,KAAK,IAAI;oCAAEA,iBAAAA;gCAAgB,IAAI,CAAC;oCACvD7E,KAAK;wCAAE3N,KAAAA;wCAAK9xB,OAAAA;oCAAM;;gCAEpB,MAAKssC,SAAS,CAACiB,WAAW,CAACjK,SAAQ,mBAC9B,MAAKiY,UAAU,CAACtO,sBAAsB,CAAC,YAAY,YAAY/nB;4BAEtE,OAAO,IAAI4M,IAAIxe,QAAQ,CAAC,iBAAiB;gCACvC,MAAKg5B,SAAS,CAACiB,WAAW,CACxB;oCAAEp/B,MAAM;oCAAOsxB,KAAK;wCAAE3N,KAAAA;wCAAK9xB,OAAAA;oCAAM;gCAAE,GACnC,mBACK,MAAKu7C,UAAU,CAACtO,sBAAsB,CAAC,YAAY,YAAY/nB;4BAGxE,OAAO,IAAI4M,IAAIxe,QAAQ,CAAC,oBAAoB;oCAIrB0vB;gCAHrB,IAAMA,QAAQD,mBAAmB/iC;gCACjC,IAAM2kC,aAAa,gBAAgB3B,SAASA,KAAK,CAAC,aAAa,KAAK,KAAK;gCACzE,IAAM4B,YAAY,eAAe5B,SAASA,KAAK,CAAC,YAAY,KAAK,KAAK;gCACtE,IAAM6B,QAAQ1hC,QAAO6/B,eAAAA,KAAK,CAAC,QAAQ,cAAdA,0BAAAA,eAAkB;gCACvC,IAAM/pB,WAAWmqB,SAASJ,KAAK,CAAC,WAAW;gCAC3C,IAAI2B,cAAc,wBAAwBzjC,IAAI,CAAC2jC,QAAQ;oCACrD,IAAMvB,UAAS;wCACbn1B,MAAM;uCACH8K,aAAa,KAAK,IAAI;wCAAEqrB,iBAAiBrrB;oCAAS,IAAI,CAAC;wCAC1DwmB,KAAK;4CAAE3N,KAAAA;4CAAK9xB,OAAAA;4CAAOgjC,OAAAA;wCAAM;;oCAE3B,MAAKsJ,SAAS,CAACiB,WAAW,CAACjK,SAAQ,mBAC9B,MAAKiY,UAAU,CAACtO,sBAAsB,CAAC,YAAY,YAAY/nB;gCAEtE;gCACA,IAAI0f,WAAW;oCACb,MAAK0H,SAAS,CAACiB,WAAW,CACxB;wCAAEp/B,MAAM;wCAAOsxB,KAAK;4CAAE3N,KAAAA;4CAAK9xB,OAAAA;4CAAOgjC,OAAAA;wCAAM;oCAAE,GAC1C,mBACK,MAAKuY,UAAU,CAACtO,sBAAsB,CAAC,YAAY,YAAY/nB;gCAGxE;4BACF;wBACF;;wBAtEK;wBAAA;;;iCAAA,6BAAA;gCAAA;;;gCAAA;sCAAA;;;;oBAuEL,MAAKonB,SAAS,CAAC0S,8BAA8B,CAAC95B;gBAChD;gBACA,IAAI,CAACq3B,GAAG,CAACj4B,EAAE,CAAC+2B,YAAYjpC,OAAO,CAACmS,MAAM,CAACE,KAAK,EAAE,SAACm5B,MAAMj5B;oBACnD,IAAIA,iBAAAA,2BAAAA,KAAMC,KAAK,EAAE;wBACf,OAAQD,KAAKxW,IAAI;4BACf,KAAKktC,YAAYjpC,OAAO,CAACyS,UAAU,CAACC,aAAa;oCAC/C;iCAAA,YAAA,MAAKy3B,GAAG,cAAR,gCAAA,UAAU2C,SAAS;gCACnB;4BACF,KAAK7D,YAAYjpC,OAAO,CAACyS,UAAU,CAACs6B,WAAW;oCAC7C;iCAAA,aAAA,MAAK5C,GAAG,cAAR,iCAAA,WAAU6C,iBAAiB;gCAC3B;4BACF;gCACE,MAAK9S,SAAS,CAAC+S,cAAc;gCAC7B;wBACJ;oBACF;gBACF;gBACA,IAAI,CAAC9C,GAAG,CAACl4B,WAAW,CAAC,IAAI,CAAChI,KAAK;YACjC;;;YACAijC,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAAC7B,wBAAwB;YACtC;;;YACAI,KAAAA;mBAAAA,SAAAA,0BAA0BtrC,OAAO;gBAC/B,IAAI,IAAI,CAACwpC,qBAAqB,IAAI,CAAC,IAAI,CAACQ,GAAG,EAAE;oBAC3C;gBACF;gBACA,IAAI,CAAChqC,SAAS;oBACZ;gBACF;gBACA,IAAIA,QAAQgrC,IAAI,KAAK,MAAM;oBACzB,IAAI,CAACxB,qBAAqB,GAAG;oBAC7B,IAAI,CAAC0B,wBAAwB,GAAG;oBAChC;gBACF;gBACA,IAAM8B,uBAAuB,IAAI,CAACA,oBAAoB,CAAChtC;gBACvD,IAAMitC,gBAAgBD,wBAAwB,CAAC,CAAC,IAAI,CAAC1pB,MAAM,CAAC3R,cAAc;gBAC1E,IAAI,CAACu5B,wBAAwB,GAAG+B;gBAChC,IAAI,CAACzD,qBAAqB,GAAG;gBAC7B,IAAM0D,MAAM,IAAI,CAAClD,GAAG,CAAC1mB,MAAM;gBAC3B,IAAI2pB,eAAe;oBACjBC,IAAI/C,uBAAuB,GAAG;oBAC9B+C,IAAI3C,aAAa,GAAG;oBACpB,OAAO2C,IAAIC,gBAAgB;gBAC7B,OAAO;oBACLD,IAAI/C,uBAAuB,GAAG;oBAC9B+C,IAAI3C,aAAa,GAAG;oBACpB,OAAO2C,IAAIC,gBAAgB;oBAC3BD,IAAIE,qBAAqB,GAAG;gBAC9B;gBACA,IAAI,IAAI,CAAC/8C,KAAK,EAAE;wBAUM2P;oBATpB1P,QAAQC,GAAG,CACT,AAAC,iDAAqH,OAArE08C,gBAAgB,yBAAyB,8BAC1F;wBACED,sBAAAA;wBACAK,yBAAyB,CAAC,CAAC,IAAI,CAAC/pB,MAAM,CAAC3R,cAAc;wBACrD27B,gBAAgBttC,QAAQstC,cAAc;wBACtCC,YAAYvtC,QAAQutC,UAAU;wBAC9BC,cAAcxtC,QAAQwtC,YAAY;wBAClCC,gBAAgBpzC,MAAMsxC,OAAO,CAAC3rC,QAAQ0tC,QAAQ,IAAI1tC,QAAQ0tC,QAAQ,CAAC55C,MAAM,GAAG;wBAC5E65C,cAAc,GAAE3tC,0BAAAA,QAAQ4tC,cAAc,cAAtB5tC,qCAAAA,0BAA0BA,QAAQ2tC,cAAc;wBAChExD,yBAAyB+C,IAAI/C,uBAAuB;wBACpDI,eAAe2C,IAAI3C,aAAa;oBAClC;gBAEJ;YACF;;;YACAyC,KAAAA;mBAAAA,SAAAA,qBAAqBhtC,OAAO;gBAC1B,IAAI,CAACA,SAAS;oBACZ,OAAO;gBACT;gBACA,IAAM6tC,WAAWxzC,MAAMsxC,OAAO,CAAC3rC,QAAQ0tC,QAAQ,KAAK1tC,QAAQ0tC,QAAQ,CAAC55C,MAAM,GAAG;gBAC9E,IAAMg6C,gBAAgB,OAAO9tC,QAAQutC,UAAU,KAAK,YAAYvtC,QAAQutC,UAAU,GAAG;gBACrF,IAAMQ,kBAAkB,OAAO/tC,QAAQwtC,YAAY,KAAK,YAAYxtC,QAAQwtC,YAAY,GAAG;gBAC3F,IAAMF,iBAAiBttC,QAAQstC,cAAc,KAAK;gBAClD,OAAOO,YAAYC,iBAAiBC,mBAAmBT;YACzD;;;YACAlB,KAAAA;mBAAAA,SAAAA,SAAS7sB,GAAG;gBACV,IAAI,OAAOA,IAAIuS,UAAU,KAAK,UAAU;oBACtC,IAAI,CAACmX,MAAM,CAAC7E,cAAc,CAAC7kB,IAAIuS,UAAU;gBAC3C;gBACA,IAAMf,SAASW,mBAAmBnS;gBAClC,IAAIwR,QAAQ;oBACV,IAAI,CAACgJ,SAAS,CAACiB,WAAW,CAACjK,QAAQ;wBACjCltB,QAAQ;wBACR82B,WAAW;oBACb;gBACF;YACF;;;YACA2R,KAAAA;mBAAAA,SAAAA,6BAA6B0B,WAAW,EAAEnT,UAAU,EAAEE,oBAAoB;;gBACxE,IAAM3gC,UAAUq4B,yBAAyBub;gBACzC,IAAI,CAAC5zC,SAAS;oBACZ;gBACF;gBACA,IAAM66B,UAAUU,yBACdv7B,SACA,IAAI,CAAC4uC,UAAU,CAAC1U,YAAY,EAC5B,IAAI,CAAC0U,UAAU,CAACrV,OAAO,EACvB,IAAI,CAACqV,UAAU,CAAC7O,yBAAyB;gBAE3ClF,QAAQv4B,OAAO,CAAC,SAACq0B;oBACf,IAAM90B,UAAU;wBACd4H,QAAQ;wBACR82B,WAAW;oBACb;oBACA,IAAIE,eAAe,KAAK,GAAG;wBACzB5+B,QAAQ4+B,UAAU,GAAGA;oBACvB;oBACA,IAAIE,yBAAyB,KAAK,GAAG;wBACnC9+B,QAAQ8+B,oBAAoB,GAAGA;oBACjC;oBACA,MAAKhB,SAAS,CAACiB,WAAW,CAACjK,QAAQ90B;gBACrC;YACF;;;YACAgyC,KAAAA;mBAAAA,SAAAA;oBACc;gBAAZ,IAAM9iB,OAAM,YAAA,IAAI,CAAC6e,GAAG,cAAR,gCAAA,UAAUkE,gBAAgB;gBACtC,OAAO,OAAO/iB,QAAQ,YAAYj6B,OAAOC,QAAQ,CAACg6B,OAAOA,MAAM,KAAK;YACtE;;;YACAgjB,KAAAA;mBAAAA,SAAAA,cAAcnkC,QAAQ;gBACpB,IAAI,CAAC,IAAI,CAACggC,GAAG,EAAE;oBACb;gBACF;gBACA,IAAI;oBACF,IAAI,CAACA,GAAG,CAACoE,QAAQ;oBACjB,IAAI,CAACpE,GAAG,CAAC2C,SAAS,CAAC3iC;gBACrB,EAAE,OAAOrU,OAAO;oBACd,IAAI,IAAI,CAACtF,KAAK,EAAE;wBACdC,QAAQiK,IAAI,CAAC,oEAAoE5E;oBACnF;gBACF;YACF;;;YACAk3C,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAAC,IAAI,CAAC7C,GAAG,EAAE;oBACb;gBACF;gBACA,IAAI;oBACF,IAAI,CAACA,GAAG,CAAC6C,iBAAiB;gBAC5B,EAAE,OAAOl3C,OAAO;oBACd,IAAI,IAAI,CAACtF,KAAK,EAAE;wBACdC,QAAQiK,IAAI,CAAC,uDAAuD5E;oBACtE;gBACF;YACF;;;YACA04C,KAAAA;mBAAAA,SAAAA;;gBACE,IAAMrE,MAAM,IAAI,CAACA,GAAG;gBACpB,IAAI,CAACA,KAAK;oBACR;gBACF;gBACA,IAAI,IAAI,CAAC35C,KAAK,EAAE;oBACdC,QAAQC,GAAG,CACT;gBAEJ;gBACA,IAAI;oBACF,IAAI,CAAC64C,mBAAmB,GAAG;oBAC3BY,IAAIoE,QAAQ;oBACZpE,IAAIsE,WAAW;oBACftE,IAAI55B,OAAO;oBACX,IAAI,CAAC45B,GAAG,GAAG,KAAK;oBAChB,IAAI;wBACF,IAAI,CAAClgC,KAAK,CAACuG,eAAe,CAAC;wBAC3B,IAAI,CAACvG,KAAK,CAACwG,IAAI;oBACjB,EAAE,OAAO3a,OAAO;wBACdrF,QAAQiK,IAAI,CAAC,iEAAiE5E;oBAChF;gBACF,EAAE,OAAOA,OAAO;oBACd,IAAI,CAACyzC,mBAAmB,GAAG;oBAC3B,IAAI,CAACY,GAAG,GAAG,KAAK;oBAChB,IAAI,IAAI,CAAC35C,KAAK,EAAE;wBACdC,QAAQiK,IAAI,CAAC,mEAAmE5E;oBAClF;oBACA;gBACF;gBACA,IAAM44C,kBAAkB;gBACxB9vC,OAAOf,UAAU,CAAC;oBAChB,IAAI,MAAKssC,GAAG,EAAE;wBACZ,MAAKZ,mBAAmB,GAAG;wBAC3B;oBACF;oBACA,IAAI;wBACF,MAAKW,QAAQ;oBACf,EAAE,OAAOp0C,OAAO;wBACd,MAAKyzC,mBAAmB,GAAG;wBAC3B,IAAI,MAAK/4C,KAAK,EAAE;4BACdC,QAAQiK,IAAI,CAAC,0EAA0E5E;wBACzF;oBACF;gBACF,GAAG44C;YACL;;;YACAn+B,KAAAA;mBAAAA,SAAAA;oBACE;iBAAA,YAAA,IAAI,CAAC45B,GAAG,cAAR,gCAAA,UAAU55B,OAAO;gBACjB,IAAI,CAAC45B,GAAG,GAAG,KAAK;YAClB;;;;;AAGF,+BAA+B;AAC/B,SAASwE,iBAAiBxN,QAAQ;IAChC,OAAOA,SAAS5qB,qBAAqB,KAAK,IAAI4qB,SAAS3qB,iBAAiB;AAC1E;AACA,SAASo4B,WAAW3kC,KAAK,EAAEk3B,QAAQ,EAAE3wC,KAAK;IACxC,IAAI2wC,SAAStrB,WAAW,IAAI;QAC1B,IAAMg5B,gBAAgB,CAAC1N,SAAS5qB,qBAAqB;QACrD,IAAMu4B,gBAAgB3N,SAAS3qB,iBAAiB,MAAM;QACtD2qB,SAAS/qB,wBAAwB,CAACy4B,eAAe5kC,MAAMzT,MAAM;QAC7D2qC,SAAS1qB,WAAW,CAACo4B,gBAAgB,IAAIC;QACzC,IAAIt+C,OAAO;YACTC,QAAQC,GAAG,CACT,wEACAm+C;QAEJ;IACF,OAAO;QACL5kC,MAAMjO,KAAK,GAAG,CAACiO,MAAMjO,KAAK;QAC1BmlC,SAAS/qB,wBAAwB,CAACnM,MAAMjO,KAAK,EAAEiO,MAAMzT,MAAM;QAC3D,IAAIhG,OAAO;YACTC,QAAQC,GAAG,CAAC,kCAAkCuZ,MAAMjO,KAAK;QAC3D;IACF;AACF;AACA,SAAS+yC,iBAAiB9kC,KAAK,EAAEzZ,KAAK;IACpC,OAAO,IAAIX,QAAQ,SAAC0lB,SAASL;QAC3B,IAAI,CAAC1Z,SAASqS,iBAAiB,EAAE;YAC/B,IAAM4G,YAAYxK,MAAM8K,aAAa;YACrC,IAAI,CAACN,WAAW;gBACdS,OAAO,IAAI1N,MAAM;gBACjB;YACF;YACAiN,UAAUu6B,iBAAiB,GAAGxkB,IAAI,CAAC;gBACjC,IAAIh6B,OAAO;oBACTC,QAAQC,GAAG,CAAC;gBACd;gBACA6kB;YACF,GAAGzL,KAAK,CAAC,SAACoiC;gBACR,IAAI17C,OAAO;oBACTC,QAAQqF,KAAK,CAAC,6CAA6Co2C;gBAC7D;gBACAh3B,OAAOg3B;YACT;QACF,OAAO;YACL1wC,SAAS2S,cAAc,GAAGqc,IAAI,CAAC;gBAC7B,IAAIh6B,OAAO;oBACTC,QAAQC,GAAG,CAAC;gBACd;gBACA6kB;YACF,GAAGzL,KAAK,CAAC,SAACoiC;gBACR,IAAI17C,OAAO;oBACTC,QAAQqF,KAAK,CACX,kDACAo2C;gBAEJ;gBACAh3B,OAAOg3B;YACT;QACF;IACF;AACF;AACA,SAAS+C,QAAQhlC,KAAK,EAAEk3B,QAAQ;IAC9B,IAAIA,SAAStrB,WAAW,IAAI;QAC1B,OAAOsrB,SAAS5qB,qBAAqB;IACvC;IACA,OAAOtM,MAAMjO,KAAK;AACpB;AACA,SAASkzC,SAASjlC,KAAK,EAAEk3B,QAAQ,EAAEnlC,KAAK,EAAExL,KAAK;IAC7C,IAAM2F,YAAYgrC,SAAStrB,WAAW;IACtC,IAAI1f,aAAa6F,UAAUiO,MAAMjO,KAAK,EAAE;QACtC,IAAIxL,OAAO;YACTC,QAAQC,GAAG,CACT,wEACA;gBAAEsL,OAAAA;YAAM;QAEZ;QACA;IACF;IACAiO,MAAMjO,KAAK,GAAGA;IACd,IAAI7F,WAAW;QACbgrC,SAAS/qB,wBAAwB,CAACpa,OAAOiO,MAAMzT,MAAM;QACrD2qC,SAAS1qB,WAAW,CAACza,QAAQ,IAAI;QACjC,IAAIxL,OAAO;YACTC,QAAQC,GAAG,CAAC,sDAAsD;gBAChEsL,OAAAA;YACF;QACF;QACA;IACF;IACAmlC,SAAS/qB,wBAAwB,CAACpa,OAAOiO,MAAMzT,MAAM;IACrD,IAAIhG,OAAO;QACTC,QAAQC,GAAG,CAAC,4CAA4CsL;IAC1D;AACF;AACA,SAASmzC,UAAUllC,KAAK,EAAEk3B,QAAQ,EAAE3qC,MAAM,EAAEhG,KAAK;IAC/C,IAAM4+C,gBAAgBp+C,KAAKsF,GAAG,CAAC,GAAGtF,KAAKuF,GAAG,CAAC,GAAGC;IAC9C,IAAML,YAAYgrC,SAAStrB,WAAW;IACtC,IAAI1f,WAAW;QACbgrC,SAAS1qB,WAAW,CAAC24B;QACrBjO,SAAS/qB,wBAAwB,CAACg5B,kBAAkB,GAAGA;QACvD,IAAI5+C,OAAO;YACTC,QAAQC,GAAG,CAAC,uDAAuD;gBACjE8F,QAAQ44C;YACV;QACF;IACF,OAAO;QACLnlC,MAAMzT,MAAM,GAAG44C;QACfnlC,MAAMjO,KAAK,GAAGozC,kBAAkB;QAChCjO,SAAS/qB,wBAAwB,CAACg5B,kBAAkB,GAAGA;QACvD,IAAI5+C,OAAO;YACTC,QAAQC,GAAG,CAAC,6CAA6C0+C;QAC3D;IACF;AACF;AACA,SAASC,UAAUplC,KAAK,EAAEk3B,QAAQ;IAChC,IAAMhrC,YAAYgrC,SAAStrB,WAAW;IACtC,IAAI1f,WAAW;QACb,OAAOgrC,SAASvqB,WAAW;IAC7B;IACA,OAAO3M,MAAMzT,MAAM;AACrB;AACA,SAAS84C;IACP,OAAO,CAAC,CAAC9zC,SAASqS,iBAAiB;AACrC;AACA,SAAS0hC,aAAatlC,KAAK,EAAEk3B,QAAQ,EAAE3wC,KAAK;IAC1C,IAAIA,OAAO;QACTC,QAAQC,GAAG,CAAC;IACd;IACA,IAAIywC,YAAYA,SAAStrB,WAAW,IAAI;QACtC,IAAMxX,QAAQ4L,MAAM3N,WAAW,IAAI;QACnC,IAAMgC,SAAS2L,MAAM1N,YAAY,IAAI;QACrC,IAAI/L,OAAO;YACTC,QAAQC,GAAG,CACT,AAAC,mDAA2D4N,OAATD,OAAM,KAAU,OAAPC;QAEhE;QACA6iC,SAASlrB,MAAM,CAAC5X,OAAOC;IACzB;AACF;AAEA,oCAAoC;AACpC,IAAIkxC,yBAAyB,aAAa,GAAG,IAAIz/C,IAAI;IACnD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AACD,IAAI0/C,oCAAsB;aAAtBA,oBACUzyC,IAAI,EAAEosC,MAAM,EAAEsG,QAAQ,EAAEvG,UAAU,EAAEwG,WAAW;gCADzDF;QAEA,IAAI,CAAC9T,SAAS,GAAG;QACjB,IAAI,CAAC2M,OAAO,GAAG;QACf,IAAI,CAACsH,oBAAoB,GAAG;QAC5B,IAAI,CAACC,2BAA2B,GAAG;QACnC,IAAI,CAACC,SAAS,GAAG;QACjB,IAAI,CAACC,wBAAwB,GAAG;QAChC,IAAI,CAACC,oBAAoB,GAAG;QAC5B,IAAI,CAACC,kBAAkB,GAAG,aAAa,GAAG,IAAIngD;QAC9C,IAAI,CAACogD,WAAW,GAAG,CAAC;QACpB,IAAI,CAACC,sBAAsB,GAAG;QAC9B,IAAI,CAACC,gCAAgC,GAAG;QACxC,IAAI,CAACC,gBAAgB,GAAG,CAAC;QACzB,IAAI,CAACC,UAAU,GAAG,EAAE;QACpB,IAAI,CAACC,gCAAgC,GAAG;QACxC,IAAI,CAACC,yBAAyB,GAAG;QACjC,IAAI,CAACC,6BAA6B,GAAG;QACrC,IAAI,CAACC,mBAAmB,GAAG;QAC3B,IAAI,CAACC,cAAc,GAAG;QACtB,IAAI,CAAC3zC,IAAI,GAAGA;QACZ,IAAI,CAACosC,MAAM,GAAGA;QACd,IAAI,CAACsG,QAAQ,GAAGA;QAChB,IAAI,CAACvG,UAAU,GAAGA;QAClB,IAAI,CAACwG,WAAW,GAAGA;;;;YAEjBn/C,KAAAA;iBAAJ;gBACE,OAAO,CAAC,CAAC,IAAI,CAACwM,IAAI,CAACymB,MAAM,CAACC,aAAa;YACzC;;;YACIktB,KAAAA;iBAAJ;gBACE,OAAOptB,sBAAsB,IAAI,CAACxmB,IAAI,CAACymB,MAAM;YAC/C;;;YACA,kEAAkE;YAClE,uBAAuB;YACvB,kEAAkE;YAClEotB,KAAAA;mBAAAA,SAAAA,iBAAiBC,WAAW;gBAC1B,IAAMC,YAAY//C,KAAKuF,GAAG,CACxB,IAAI,CAAC6yC,MAAM,CAAChE,yBAAyB,IACrC,IAAI,CAACgE,MAAM,CAAC7D,4BAA4B;gBAE1C,IAAM5E,kBAAkBoQ,YAAY,IAAIA,YAAY,KAAK;gBACzD,OAAO,IAAI,CAAC/zC,IAAI,CAACikC,kBAAkB,CAAC6P,aAAanQ;YACnD;;;YACAqQ,KAAAA;mBAAAA,SAAAA;;gBACE,IAAM7pC,aAAa,IAAI,CAACnK,IAAI,CAACi0C,WAAW;gBACxC,IAAMC,aAAa,IAAI,CAAClB,oBAAoB;gBAC5C,IAAM7O,WAAW;oBACfjvB,IAAI,SAAJA,GAAK5X,OAAO2S;wBACV9F,WAAW+K,EAAE,CAAC5X,OAAO,SAACC;4BACpB,IAAI22C,eAAe,MAAKlB,oBAAoB,EAAE;gCAC5C,MAAKmB,qBAAqB,CAAC,0BAA0B;oCACnD72C,OAAAA;oCACA82C,mBAAmBF;oCACnBG,qBAAqB,MAAKrB,oBAAoB;gCAChD;gCACA;4BACF;4BACA/iC,QAAQ1S;wBACV;oBACF;gBACF;gBACA4mC,SAASjvB,EAAE,CAAC,kBAAkB,SAAC3X;oBAC7B,MAAK6uC,MAAM,CAACjD,gBAAgB;oBAC5B,IAAI,MAAK31C,KAAK,EAAE;;wBACdC,QAAQC,GAAG,CAn0MnB,AAo0MU,AAAC,+BAAuB6J,CAAAA,oBAAAA,8BAAAA,QAASkF,KAAK,KAAI,OAAOlF,QAAQkF,KAAK,GAAG,IAAI,KAAI,KAAyB,eAAtBlF,oBAAAA,8BAAAA,QAAShJ,KAAK,uCAAI;oBAElG;gBACF;gBACA4vC,SAASjvB,EAAE,CAAC,YAAY;oBACtB,MAAKlV,IAAI,CAACs0C,SAAS;gBACrB;gBACAnQ,SAASjvB,EAAE,CAAC,kBAAkB,SAAC5X;oBAC7B,IAAIA,OAAO,MAAK0C,IAAI,CAACu0C,eAAe,CAACj3C;gBACvC;gBACA6mC,SAASjvB,EAAE,CAAC,aAAa,SAAC3X;oBACxB,IAAI,EAACA,oBAAAA,8BAAAA,QAASW,KAAK,GAAE;oBACrB,IAAMA,QAAQX,QAAQW,KAAK;oBAC3B,MAAKs2C,gBAAgB,CAACt2C;oBACtB,IAAIX,QAAQlH,MAAM,EAAE;wBAClB,MAAKm+C,gBAAgB,CAAC,AAAC,GAAWj3C,OAATW,OAAM,KAAkB,OAAfX,QAAQlH,MAAM;oBAClD;oBACA,IAAI6H,UAAU,sBAAsBX,QAAQ+Q,UAAU,IAAI,MAAM;wBAC9D,MAAKkmC,gBAAgB,CAAC,mBAAmBj3C,QAAQ+Q,UAAU;oBAC7D;oBACA,IAAI/Q,QAAQgB,eAAe,KAAK,UAAU;wBACxC,MAAKi2C,gBAAgB,CAAC;oBACxB;oBACA,IAAIt2C,UAAU,yBAAyB;wBACrC,IAAIX,QAAQ8M,OAAO,KAAK,GAAG;4BACzB,MAAK+hC,MAAM,CAAClD,iBAAiB;wBAC/B,OAAO;4BACL,MAAKsL,gBAAgB,CAAC;wBACxB;oBACF;oBACA,MAAKC,uBAAuB,CAACl3C;gBAC/B;gBACA4mC,SAASjvB,EAAE,CAAC,iBAAiB;oBAC3B,MAAKk3B,MAAM,CAACzG,mBAAmB,GAAG;oBAClC,MAAK+O,YAAY,CAAC,WAAW;oBAC7B,IAAI,CAAC,MAAKtB,gCAAgC,EAAE;wBAC1C,MAAKA,gCAAgC,GAAG;wBACxC,MAAKhH,MAAM,CAACnD,aAAa;oBAC3B;oBACApd,yBACE,MAAK7rB,IAAI,CAACymB,MAAM,CAACnI,UAAU,EAC3B;wBACEtX,QAAQ;wBACRqR,SAAS,MAAK+zB,MAAM,CAAC9G,cAAc;uBAChC,MAAKqP,cAAc,GAAG;wBAAE1oB,OAAO,MAAK0oB,cAAc;oBAAC,IAAI,CAAC;wBAC3DhrB,WAAW,CAAC,aAAa,GAAG,IAAIr0B,QAAQC,WAAW;wBAErD,MAAKq+C,gBAAgB,EACrB9mC,KAAK,CAAC,YACR;gBACF;gBACAq3B,SAASjvB,EAAE,CAAC,qBAAqB;oBAC/B,MAAKk3B,MAAM,CAACvD,sBAAsB,CAAC,MAAK7oC,IAAI,CAACi0C,WAAW;oBACxD,IAAMF,YAAY,MAAK3H,MAAM,CAAChD,gBAAgB;oBAC9C,MAAKgD,MAAM,CAACzG,mBAAmB,GAAG;oBAClC,IAAI,MAAKnyC,KAAK,EAAE;wBACdC,QAAQC,GAAG,CACT,AAAC,wEAAiF,OAAVqgD,WAAU;oBAEtF;oBACA,IAAI,MAAKpV,SAAS,EAAE;wBAClB,MAAK+V,YAAY,CAAC,iBAAiB;wBACnC,MAAKE,aAAa,CAAC;oBACrB;gBACF;gBACAzQ,SAASjvB,EAAE,CAAC,YAAY,SAAC2/B;oBACvB,IAAI,MAAK1B,sBAAsB,EAAE;wBAC/B,IAAI,MAAK3/C,KAAK,EAAE;4BACdC,QAAQC,GAAG,CAAC,0EAA0EmhD,gBAAgB;wBACxG;wBACA;oBACF;oBACA,IAAItpC,eAAe;oBACnB,IAAIspC,cAAc;wBAChB,IAAMr/C,YAAYq/C,aAAa97C,IAAI,IAAI87C,aAAar/C,SAAS,IAAI;wBACjE,IAAMsZ,gBAAgB+lC,aAAa/lC,aAAa;wBAChD,IAAMtD,UAAUqpC,aAAarpC,OAAO,IAAIqpC,aAAatpC,YAAY,IAAI;wBACrE,IAAMupC,QAAQD,aAAaC,KAAK,IAAID,aAAaE,UAAU,IAAIF,aAAa/7C,KAAK;wBACjFyS,eAAe,AAAC,qBAAkCC,OAAdhW,WAAU,MAAY,OAARgW;wBAClD,IAAIsD,iBAAiBA,kBAAkB,SAASA,kBAAkBtZ,WAAW;4BAC3E+V,gBAAgB,AAAC,sBAAmC,OAAduD,eAAc;wBACtD;wBACA,IAAIgmC,OAAO;4BACT,IAAME,eAAe,OAAOF,UAAU,WAAWA,QAAQA,MAAMtpC,OAAO,IAAIzX,OAAO+gD;4BACjFvpC,gBAAgB,AAAC,gBAA4B,OAAbypC;wBAClC;oBACF;oBACAvhD,QAAQqF,KAAK,CAAC,cAAcyS,cAAcspC,gBAAgB;oBAC1D,MAAKI,eAAe,CAAC;gBACvB;gBACA9Q,SAASjvB,EAAE,CAAC,iBAAiB;oBAC3B,MAAKk3B,MAAM,CAACpB,oBAAoB;oBAChC,MAAKoB,MAAM,CAAC1B,sBAAsB;oBAClC,MAAK0B,MAAM,CAAC/G,oBAAoB,GAAG;oBACnC,MAAKiG,OAAO,GAAG;oBACf,MAAKc,MAAM,CAAC/B,qBAAqB;oBACjC,IAAI,MAAK1L,SAAS,IAAI,MAAKyN,MAAM,CAACpE,yBAAyB,IAAI,QAAQ,MAAKoE,MAAM,CAAC9D,wBAAwB,MAAM,MAAM;wBACrH,MAAK8D,MAAM,CAACjE,6BAA6B;wBACzC,IAAI,MAAK30C,KAAK,EAAE;4BACdC,QAAQC,GAAG,CAAC;wBACd;oBACF;oBACA,MAAKsM,IAAI,CAACi0C,WAAW,GAAGx6B,WAAW,CAACk4B,iBAAiB,MAAK3xC,IAAI,CAACi0C,WAAW;oBAC1E,IAAI,MAAKrB,oBAAoB,EAAE;wBAC7B,IAAI,MAAKp/C,KAAK,EAAE;4BACdC,QAAQC,GAAG,CAAC;wBACd;wBACA,MAAKsM,IAAI,CAACi0C,WAAW,GAAGn6B,eAAe;wBACvC,MAAK84B,oBAAoB,GAAG;oBAC9B;gBACF;gBACAzO,SAASjvB,EAAE,CAAC,kBAAkB;oBAC5B,IAAI,CAAC,MAAKlV,IAAI,CAACiN,KAAK,CAACjO,KAAK,EAAE;wBAC1B,MAAKgB,IAAI,CAACiN,KAAK,CAACjO,KAAK,GAAG;wBACxB,IAAI,MAAKxL,KAAK,EAAE;4BACdC,QAAQC,GAAG,CAAC;wBACd;oBACF;oBACA,MAAK04C,MAAM,CAACpB,oBAAoB;oBAChC,MAAKoB,MAAM,CAAC1B,sBAAsB;oBAClC,MAAK0B,MAAM,CAAC/G,oBAAoB,GAAG;oBACnC,MAAKiG,OAAO,GAAG;oBACf,IAAI,CAAC,MAAK3M,SAAS,EAAE;wBACnB;oBACF;oBACA,MAAKyN,MAAM,CAACzG,mBAAmB,GAAG;oBAClC,MAAKyG,MAAM,CAACvD,sBAAsB,CAAC,MAAK7oC,IAAI,CAACi0C,WAAW;oBACxD,IAAI,MAAKzgD,KAAK,EAAE;wBACdC,QAAQC,GAAG,CACT,AAAC,uCAAqE,OAA/B,MAAK04C,MAAM,CAAChD,gBAAgB,IAAG;oBAE1E;oBACA,MAAKsL,YAAY,CAAC,iBAAiB;oBACnC,MAAKE,aAAa,CAAC;gBACrB;YACF;;;YACAM,KAAAA;mBAAAA,SAAAA,qBAAqB7+C,MAAM;gBACzB,IAAIA,WAAW,iBAAkB,CAAA,IAAI,CAACy8C,SAAS,KAAK,gBAAgB,IAAI,CAACA,SAAS,KAAK,OAAM,GAAI;oBAC/Fr/C,QAAQiK,IAAI,CAAC,iDAAiD;wBAC5DY,cAAc,IAAI,CAAC00C,oBAAoB;wBACvC30C,WAAW,IAAI,CAAC82C,gBAAgB;wBAChCC,OAAO,IAAI,CAACtC,SAAS;wBACrBz8C,QAAAA;oBACF;gBACF;gBACA5C,QAAQC,GAAG,CAAC,2BAA2B;oBACrC4K,cAAc,IAAI,CAAC00C,oBAAoB;oBACvC30C,WAAW,IAAI,CAAC82C,gBAAgB;oBAChCC,OAAO,IAAI,CAACtC,SAAS;oBACrBz8C,QAAAA;gBACF;gBACA,IAAI,CAACm+C,gBAAgB,CAAC,AAAC,sBAA4B,OAAPn+C;gBAC5C,IAAMg/C,wBAAwB,IAAI,CAAC1W,SAAS,IAAI,IAAI,CAAC2M,OAAO;gBAC5D,IAAMnH,WAAW,IAAI,CAACnkC,IAAI,CAACi0C,WAAW;gBACtC,IAAIoB,yBAAyBlR,UAAU;oBACrC,IAAI,IAAI,CAAC3wC,KAAK,EAAE;wBACdC,QAAQC,GAAG,CAAC;oBACd;oBACA,IAAI,CAACi/C,WAAW,CAAChH,IAAI;oBACrBxH,SAAStqB,eAAe;oBACxB,IAAI,CAAC+4B,oBAAoB,GAAG;gBAC9B;gBACA,IAAM0C,sBAAsBnR,SAAS5qB,qBAAqB;gBAC1D,IAAMg8B,uBAAuBpR,SAAS3qB,iBAAiB;gBACvD,IAAI,CAAC45B,gCAAgC,GAAG;gBACxC,IAAIjP,UAAU;oBACZ,IAAI;wBACFA,SAAS5wB,OAAO;wBAChB,IAAI,CAACvT,IAAI,CAACiN,KAAK,CAACjO,KAAK,GAAG;oBAC1B,EAAE,OAAOlG,OAAO;wBACd,IAAI,IAAI,CAACtF,KAAK,EAAE;4BACdC,QAAQiK,IAAI,CAAC,8DAA8D5E;wBAC7E;oBACF;gBACF;gBACA,IAAMwe,8BAA8B,IAAI,CAACtX,IAAI,CAACw1C,iCAAiC;gBAC/E,IAAMC,cAAc,IAAI,CAACz1C,IAAI,CAAC01C,cAAc,CAACp+B;gBAC7C,IAAI,CAACtX,IAAI,CAAC21C,WAAW,CAACF;gBACtB,IAAI,CAACzC,oBAAoB;gBACzByC,YAAYj+B,UAAU;gBACtBi+B,YAAYr8B,wBAAwB,CAACk8B,qBAAqBC;gBAC1D,IAAI,CAACvB,uBAAuB;gBAC5B,IAAI,IAAI,CAACxgD,KAAK,EAAE;oBACdC,QAAQC,GAAG,CAAC,0BAA0B;wBACpC4K,cAAc,IAAI,CAAC00C,oBAAoB;wBACvC38C,QAAAA;oBACF;gBACF;gBACA,IAAIg/C,uBAAuB;oBACzB,IAAI,CAAC1C,WAAW,CAAChH,IAAI;oBACrB8J,YAAY57B,eAAe;oBAC3B,IAAI,CAAC+4B,oBAAoB,GAAG;gBAC9B;YACF;;;YACAgD,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACC,eAAe,IAAI,MAAM;oBAChCp1C,aAAa,IAAI,CAACo1C,eAAe;oBACjC,IAAI,CAACA,eAAe,GAAG,KAAK;gBAC9B;gBACA,IAAI,CAAClC,cAAc,GAAG;gBACtB,IAAI,CAACxH,UAAU,CAAC5O,mBAAmB,GAAG,KAAK;gBAC3C,IAAI,CAACmV,QAAQ,CAAC3S,qBAAqB,GAAG;YACxC;;;YACA,kEAAkE;YAClE,kBAAkB;YAClB,kEAAkE;YAClE+V,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAAChD,SAAS,KAAK;YAC5B;;;YACAiD,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAACjD,SAAS;YACvB;;;YACAkD,KAAAA;mBAAAA,SAAAA,eAAeC,QAAQ;gBACrB,IAAI,CAACC,WAAW,GAAG;gBACnB,IAAI,CAACC,mBAAmB,GAAG,KAAK;gBAChC,IAAI,CAACpD,wBAAwB,GAAG;gBAChC,IAAI,CAAC3G,MAAM,CAAC5G,sBAAsB,GAAG;gBACrC,IAAI,CAACkP,YAAY,CAAC,iBAAiB;gBACnC,IAAI,CAAC0B,eAAe,CAAC,QAAQH;YAC/B;;;YACMI,KAAAA;mBAAN,SAAMA,cAAcniB,MAAM;;wBAQlB4f,aAMFwC,mBAeEC,cACAC,eAYAC,OACAC,kBAME5rC,MAKF6rC;;;;gCArDN,IAAI,IAAI,CAAC7D,SAAS,KAAK,QAAQ;oCAC7B,IAAI,CAACqB,qBAAqB,CAAC,yBAAyB;wCAClDntC,QAAQ;wCACRouC,OAAO,IAAI,CAACtC,SAAS;oCACvB;oCACA;;;gCACF;gCACMgB,cAAc,IAAI,CAACpB,QAAQ,CAAC3R,aAAa;gCAC/C,IAAI,CAAC+S,aAAa;oCAChBrgD,QAAQiK,IAAI,CAAC;oCACb,IAAI,CAACk4C,mBAAmB;oCACxB;;;gCACF;gCACIU,oBAAoBpiB,OAAOgB,eAAe,IAAI,OAAOhB,OAAOgB,eAAe,GAAG,MAAM,IAAI,CAACkX,MAAM,CAACpE,yBAAyB;gCAC7H,IAAI,CAACoE,MAAM,CAACnG,cAAc,CAACrtB,KAAK;gCAChC,IAAI,CAACwzB,MAAM,CAAClG,oBAAoB,CAACttB,KAAK;gCACtC,IAAI,CAACwzB,MAAM,CAACzG,mBAAmB,GAAG;gCAClC,IAAI,CAACiN,oBAAoB,GAAG;gCAC5B,IAAI,CAACxG,MAAM,CAAC5G,sBAAsB,GAAG;gCACrC,IAAI,CAAC0Q,WAAW,GAAG;gCACnB,IAAI,CAACC,mBAAmB,GAAGrC;gCAC3B,IAAI,CAACf,wBAAwB,GAAG;gCAChC,IAAI,CAAC2B,YAAY,CAAC,iBAAiB;gCACnC,IAAI,IAAI,CAAChC,QAAQ,CAAC3S,qBAAqB,EAAE;oCACvC,IAAI,CAAC2S,QAAQ,CAAC3S,qBAAqB,GAAG;gCACxC,OAAO;oCACL,IAAI,CAAC2S,QAAQ,CAACjP,aAAa;gCAC7B;gCACM8S,eAAe,IAAI,CAACv2C,IAAI,CAACiN,KAAK,CAACjO,KAAK;gCACpCw3C,gBAAgB,IAAI,CAACx2C,IAAI,CAACiN,KAAK,CAACzT,MAAM;gCAC5C,IAAI,CAACwG,IAAI,CAACi0C,WAAW,GAAG76B,wBAAwB,CAACm9B,cAAcC;gCAC/D,IAAI,CAAC7X,SAAS,GAAG;gCACjB,IAAI,CAACyN,MAAM,CAAClH,uBAAuB,GAAG;gCACtC,IAAI,CAACkH,MAAM,CAAC9G,cAAc,GAAG;gCAC7B,IAAI,CAAC8G,MAAM,CAAC7G,eAAe,GAAG;gCAC9B,IAAI,CAAC+N,UAAU;gCACf,IAAI,CAAChI,OAAO,GAAG;gCACf,IAAI,IAAI,CAACc,MAAM,CAACpE,yBAAyB,IAAI,QAAQsO,qBAAqB,MAAM;oCAC9E,IAAI,CAAClK,MAAM,CAACpE,yBAAyB,GAAGsO;gCAC1C;gCACA,IAAI,CAACF,eAAe,CAAC,UAAU,IAAI,CAACjK,UAAU,CAAC1O,oBAAoB;gCAC7DgZ,QAAQ,IAAI,CAACrK,MAAM,CAACjH,YAAY;gCAChCuR,mBAAmB,CAAC,CAAE,CAAA,IAAI,CAAC/C,cAAc,IAAI,IAAI,CAACA,cAAc,CAACiD,QAAQ,CAAC3/C,MAAM,GAAG,CAAA;qCACrFq/C,CAAAA,qBAAqB,QAAQ,CAACI,gBAAe,GAA7CJ;;;;gCACkB;;oCAAM,IAAI,CAACO,oBAAoB,CAAC,IAAI,CAACnD,mBAAmB;;;gCAA5E4C,oBAAoB;gCACpB,IAAI,CAAC,IAAI,CAAC3X,SAAS,IAAI8X,UAAU,IAAI,CAACrK,MAAM,CAACjH,YAAY,EAAE;;;;;gCAE7D,IAAI,IAAI,CAAC3xC,KAAK,EAAE;oCACRsX,OAAO,IAAI,CAAC9K,IAAI,CAACymB,MAAM,CAACE,YAAY,GAAG,SAAS;oCACtDlzB,QAAQC,GAAG,CACT,AAAC,aAAiD4iD,OAArCxrC,MAAK,kCAAiG,OAAjEwrC,qBAAqB,OAAO,AAAC,GAAoB,OAAlBA,mBAAkB,QAAM;gCAE7G;gCACkB;;oCAAM,IAAI,CAACQ,iBAAiB,CAAChD,aAAawC;;;gCAAtDK,YAAY;gCAClB,IAAI,CAACA,aAAa,IAAI,CAAChY,SAAS,IAAI8X,UAAU,IAAI,CAACrK,MAAM,CAACjH,YAAY,EAAE;oCACtE,IAAI,CAACuP,YAAY,CAAC,iBAAiB;oCACnC,IAAI,CAACE,aAAa,CAAC;gCACrB;;;;;;gBACF;;;;YACMiC,KAAAA;mBAAN,SAAMA,qBAAqBE,SAAS;;wBAC5BC,UAKAzT;;;;gCALAyT,WAAW1hD,KAAKqV,GAAG,KAAKosC;;;qCACvB,CAAA,IAAI,CAAC3K,MAAM,CAACpE,yBAAyB,IAAI,QAAQ1yC,KAAKqV,GAAG,KAAKqsC,QAAO;;;;gCAC1E;;oCAAM,IAAInkD,QAAQ,SAAC0lB;+CAAY1X,WAAW0X,SAAS;;;;gCAAnD;gCACA,IAAI,CAAC,IAAI,CAAComB,SAAS,EAAE;;;;;;;;;gCAEjB4E,aAAa,IAAI,CAAC6I,MAAM,CAACpE,yBAAyB;gCACxD,IAAI,CAACmM,qBAAqB,CAAC,uBAAuB;oCAChD8C,aAAaF,YAAY/iD,KAAKsF,GAAG,CAAC,GAAG09C,WAAW1hD,KAAKqV,GAAG;oCACxD44B,YAAAA;oCACA2T,UAAU3T,cAAc;gCAC1B;gCACA;;oCAAOA;;;;gBACT;;;;YAIMuT,KAAAA;mBAHN,AAGA,kEAHkE;YAClE,2CAA2C;YAC3C,kEAAkE;YAClE,SAAMA,kBAAkBhD,WAAW,EAAEnQ,eAAe;;wBAC9CwT,QACEC,YAWAX,OAEAvC,YACA/P,UACAkT,oBAealT,yBAAXmT,UA4BCx+C;;;;gCA1DHs+C,aAAa,CAAC,CAAE,CAAA,IAAI,CAACzD,cAAc,IAAI,IAAI,CAACA,cAAc,CAACiD,QAAQ,CAAC3/C,MAAM,GAAG,CAAA;gCACnF,IAAI,IAAI,CAAC08C,cAAc,IAAI,IAAI,CAACA,cAAc,CAACiD,QAAQ,CAAC3/C,MAAM,GAAG,GAAG;oCAClEkgD,SAAS,IAAI,CAACxD,cAAc,CAACiD,QAAQ,CAAC,EAAE;oCACxC,IAAI,CAAChB,mBAAmB;gCAC1B,OAAO;oCACLuB,SAAS,IAAI,CAACn3C,IAAI,CAACikC,kBAAkB,CAAC6P,aAAanQ;gCACrD;gCACA,IAAI,CAACwT,QAAQ;oCACX;;wCAAO;;gCACT;gCACA,IAAI,CAACI,oBAAoB,CAACJ,QAAQC,aAAa,aAAa;gCACtDX,QAAQ,IAAI,CAACrK,MAAM,CAACjH,YAAY;gCACtC,IAAI,CAAC+P,oBAAoB,CAAC;gCACpBhB,aAAa,IAAI,CAAClB,oBAAoB;gCACtC7O,WAAW,IAAI,CAACnkC,IAAI,CAACi0C,WAAW;gCAChCoD,eAAe,EAAE,IAAI,CAACjL,MAAM,CAAChH,qBAAqB;gCACxD,IAAI,CAACgH,MAAM,CAAC/G,oBAAoB,GAAGgS;gCACnC,IAAI,CAAC1C,cAAc,GAAGwC;gCACtB,IAAI,CAACzC,YAAY,CAAC,cAAc;gCAChC,IAAI,CAAC8C,kBAAkB,CAACrT,UAAUkT,cAAc;;;;;;;;;gCAE9C;;oCAAM,IAAI,CAACjL,MAAM,CAAC9B,sBAAsB;;;gCAAxC;gCACA,IAAI,IAAI,CAACmN,OAAO,CAAChB,OAAOvC,aAAa;;oCAAO;;gCAC5C,IAAI,CAAC9H,MAAM,CAAC5B,sBAAsB,CAAC6M;gCACnC;;oCAAM,IAAI,CAACK,cAAc,CAAC;+CAAMvT,SAASnsB,UAAU,CAACm/B;;;;gCAApD;gCACA,IAAI,CAAC/K,MAAM,CAAC1B,sBAAsB;gCAClC,IAAI,IAAI,CAAC+M,OAAO,CAAChB,OAAOvC,aAAa;oCACnC,IAAI,CAACC,qBAAqB,CAAC,gCAAgC;wCAAE91C,WAAWg5C;oCAAa;oCACrF;;wCAAO;;gCACT;gCACMC,oBAAWnT,0BAAAA,SAASlqB,aAAa,cAAtBkqB,8CAAAA,6BAAAA,gDAA8B;gCAC/C,IAAImT,WAAW,GAAG;oCAChB,IAAI,IAAI,CAAClL,MAAM,CAAC/G,oBAAoB,KAAKgS,cAAc;wCACrD,IAAI,CAACjL,MAAM,CAAC/G,oBAAoB,GAAG;oCACrC;oCACA,IAAI,CAACsS,oBAAoB,CAAC,IAAIntC,MAAM,qBAAqB2sC;oCACzD;;wCAAO;;gCACT;gCACA,IAAI,CAACzC,YAAY,CAAC,SAAS;gCAC3B,IAAI,IAAI,CAAClhD,KAAK,EAAE;oCACdC,QAAQC,GAAG,CACT4jD,aAAa,IAAI,6EAA6E,AAAC,gCAAwC,OAATA,UAAS;gCAE3I;gCACA3rB,qBACE,IAAI,CAAC3rB,IAAI,CAACymB,MAAM,CAACnI,UAAU,EAC3B;oCAAEtX,QAAQ;oCAAOpI,SAASu4C;oCAAQxtB,WAAW,CAAC,aAAa,GAAG,IAAIr0B,QAAQC,WAAW;gCAAG,GACxF,IAAI,CAACq+C,gBAAgB,EACrB9mC,KAAK,CAAC,YACR;gCACA,IAAI,CAACs/B,MAAM,CAACrB,oBAAoB,CAACsM;gCACjC;;oCAAM,IAAI,CAACK,cAAc,CAAC;+CAAMvT,SAAS/wB,IAAI;;;;gCAA7C;gCACA,IAAI,IAAI,CAACqkC,OAAO,CAAChB,OAAOvC,aAAa;;oCAAO;;gCAC5C,IAAI,IAAI,CAAC9H,MAAM,CAACpE,yBAAyB,IAAI,QAAQ,IAAI,CAACoE,MAAM,CAAC9D,wBAAwB,MAAM,MAAM;oCACnG,IAAI,CAAC8D,MAAM,CAACjE,6BAA6B;gCAC3C;gCACAhE,SAAS1qB,WAAW,CAACk4B,iBAAiBxN;gCACtC;;oCAAO;;;gCACArrC;gCACP,IAAI,CAACszC,MAAM,CAAC1B,sBAAsB;gCAClC,IAAI,CAAC0B,MAAM,CAACpB,oBAAoB;gCAChC,IAAI,IAAI,CAACoB,MAAM,CAAC/G,oBAAoB,KAAKgS,cAAc;oCACrD,IAAI,CAACjL,MAAM,CAAC/G,oBAAoB,GAAG;gCACrC;gCACA,IAAI,IAAI,CAACoS,OAAO,CAAChB,OAAOvC,aAAa;oCACnC,IAAI,CAACC,qBAAqB,CAAC,gCAAgC;wCACzD91C,WAAWg5C;wCACX9rC,YAAY,EAAEzS,kBAAAA,4BAAAA,MAAO0S,OAAO;oCAC9B;oCACA;;wCAAO;;gCACT;gCACA,IAAI,IAAI,CAAChY,KAAK,EAAE;oCACdC,QAAQiK,IAAI,CAAC,4CAA4C5E;gCAC3D;gCACA,IAAI,CAAC6+C,oBAAoB,CAAC7+C,OAAOq+C;gCACjC;;oCAAO;;;;;;;;gBAEX;;;;YACA,kEAAkE;YAClE,sCAAsC;YACtC,kEAAkE;YAClEzC,KAAAA;mBAAAA,SAAAA,aAAatgC,IAAI,EAAE/d,MAAM;gBACvB,IAAI,IAAI,CAACy8C,SAAS,KAAK1+B,MAAM;gBAC7B,IAAMwjC,WAAW,IAAI,CAAC9E,SAAS;gBAC/B,IAAI,CAACA,SAAS,GAAG1+B;gBACjB,IAAI,IAAI,CAAC5gB,KAAK,EAAE;oBACdC,QAAQC,GAAG,CAAC,AAAC,oBAAkC0gB,OAAfwjC,UAAS,QAAW,OAALxjC,OAAQ;wBACrD/d,QAAAA;wBACA+H,SAAS,IAAI,CAACguC,MAAM,CAACjH,YAAY;wBACjC9mC,WAAW,IAAI,CAAC82C,gBAAgB;wBAChC72C,cAAc,IAAI,CAAC00C,oBAAoB;oBACzC;gBACF;YACF;;;YACAyE,KAAAA;mBAAAA,SAAAA,QAAQhB,KAAK,EAAEvC,UAAU;gBACvB,OAAO,CAAC,IAAI,CAACvV,SAAS,IAAI8X,UAAU,IAAI,CAACrK,MAAM,CAACjH,YAAY,IAAI+O,eAAe,IAAI,CAAClB,oBAAoB;YAC1G;;;YACA6E,KAAAA;mBAAAA,SAAAA;gBACE,IAAMrO,aAAa,IAAI,CAACxpC,IAAI,CAACymB,MAAM,CAACqxB,yBAAyB;gBAC7D,IAAM7jD,QAAQ,IAAI,CAACm4C,MAAM,CAAC7C,0BAA0B;gBACpD,IAAI,OAAOC,eAAe,YAAYA,cAAc,GAAG;oBACrD,OAAOx1C,KAAKsF,GAAG,CAACkwC,YAAYv1C;gBAC9B;gBACA,OAAOD,KAAKsF,GAAG,CAAC,IAAI,CAACi6C,gCAAgC,EAAEt/C;YACzD;;;YACA8jD,KAAAA;mBAAAA,SAAAA;gBACE,IAAMvO,aAAa,IAAI,CAACxpC,IAAI,CAACymB,MAAM,CAACuxB,kBAAkB;gBACtD,IAAI,OAAOxO,eAAe,YAAYA,aAAa,GAAG,OAAOA;gBAC7D,OAAO,IAAI,CAAC0M,WAAW,KAAK,WAAW,IAAI,CAACzC,6BAA6B,GAAG,IAAI,CAACD,yBAAyB;YAC5G;;;YACAyE,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAAC/B,WAAW,KAAK,YAAY,IAAI,CAAC9J,MAAM,CAACpE,yBAAyB,IAAI;YACnF;;;YACAkQ,KAAAA;mBAAAA,SAAAA,wBAAwBtR,WAAW;gBACjC,IAAI,IAAI,CAACsP,WAAW,KAAK,QAAQ;oBAC/B,IAAI,IAAI,CAAC5C,UAAU,CAACr8C,MAAM,KAAK,GAAG,OAAO;gBAC3C,OAAO,IAAI,IAAI,CAACi/C,WAAW,KAAK,YAAY,CAAC,IAAI,CAACC,mBAAmB,EAAE;oBACrE,OAAO;gBACT;gBACA,IAAI,IAAI,CAAC/J,MAAM,CAACzG,mBAAmB,IAAI,IAAI,CAACyG,MAAM,CAACxG,sBAAsB,EAAE;oBACzE,OAAO;gBACT;gBACA,IAAI,IAAI,CAACmN,wBAAwB,IAAI,IAAI,CAACgF,qBAAqB,IAAI;oBACjE,OAAO;gBACT;gBACA,IAAI,IAAI,CAAC3L,MAAM,CAAC5G,sBAAsB,IAAI,IAAI,CAAC4G,MAAM,CAAC3G,0BAA0B,EAAE;oBAChF,OAAO;gBACT;gBACA,IAAI,IAAI,CAAC2G,MAAM,CAACpC,eAAe,IAAI;oBACjC,OAAO;gBACT;gBACA,IAAI,IAAI,CAACiO,kBAAkB,MAAMrR,cAAc,IAAI,CAACiR,4BAA4B,IAAI;oBAClF,OAAO;gBACT;gBACA,OAAO,KAAK;YACd;;;YACAM,KAAAA;mBAAAA,SAAAA;gBACE,IAAMC,WAAW,IAAI,CAAChM,MAAM,CAACzG,mBAAmB;gBAChD,IAAMwE,UAAUiO,WAAW,IAAIpkD,KAAKuF,GAAG,CAAC,IAAI,CAAC6yC,MAAM,CAACtG,aAAa,GAAG9xC,KAAKo2C,GAAG,CAAC,GAAGgO,WAAW,IAAI,CAAChM,MAAM,CAACrG,YAAY,IAAI;gBACvH,IAAMsS,cAAc,IAAI,CAACjM,MAAM,CAACvG,sBAAsB,GAAGsE;gBACzD,IAAMmO,YAAYhjD,KAAKqV,GAAG,KAAK,IAAI,CAACyhC,MAAM,CAAC1G,iBAAiB;gBAC5D,OAAO1xC,KAAKsF,GAAG,CAAC,GAAG++C,cAAcC;YACnC;;;YACA1D,KAAAA;mBAAAA,SAAAA,cAAc2D,OAAO;;gBACnB,IAAI,CAAC,IAAI,CAAC5Z,SAAS,EAAE;gBACrB,IAAI,IAAI,CAACmU,SAAS,KAAK,iBAAiB;oBACtC,IAAI,CAACqB,qBAAqB,CAAC,sBAAsB;wBAC/CoE,SAAAA;wBACAnD,OAAO,IAAI,CAACtC,SAAS;wBACrBvvC,KAAK;oBACP;oBACA;gBACF;gBACA,IAAI,IAAI,CAACi1C,aAAa,IAAI,MAAM;oBAC9B,IAAI,CAACrE,qBAAqB,CAAC,sBAAsB;wBAC/CoE,SAAAA;wBACAnD,OAAO,IAAI,CAACtC,SAAS;wBACrBvvC,KAAK;oBACP;oBACA;gBACF;gBACA,IAAMqjC,cAAc,IAAI,CAACwF,MAAM,CAAChD,gBAAgB;gBAChD,IAAMqP,aAAa,IAAI,CAACP,uBAAuB,CAACtR;gBAChD,IAAI6R,YAAY;oBACd,IAAI,CAACtE,qBAAqB,CAAC,oBAAoB;wBAC7CoE,SAAAA;wBACAG,UAAU;wBACVriD,QAAQoiD;wBACR7R,aAAAA;wBACA+R,cAAc,IAAI,CAACvM,MAAM,CAAC5G,sBAAsB;wBAChDoT,mBAAmB,IAAI,CAAC7F,wBAAwB;wBAChDpN,qBAAqB,IAAI,CAACyG,MAAM,CAACzG,mBAAmB;oBACtD;oBACA,IAAI,CAACkT,mBAAmB,CAACJ;oBACzB;gBACF;gBACA,IAAMlO,SAAS,IAAI,CAAC4N,qBAAqB;gBACzC,IAAI5N,SAAS,KAAK,IAAI,CAAC0N,kBAAkB,MAAMrR,cAAc2D,SAAS,IAAI,CAACsN,4BAA4B,IAAI;oBACzG,IAAI,CAAC1D,qBAAqB,CAAC,oBAAoB;wBAC7CoE,SAAAA;wBACAG,UAAU;wBACVriD,QAAQ;wBACRuwC,aAAAA;wBACA2D,QAAAA;oBACF;oBACA,IAAI,CAACsO,mBAAmB,CAAC;oBACzB;gBACF;gBACA,IAAI,CAAC1E,qBAAqB,CAAC,oBAAoB;oBAC7CoE,SAAAA;oBACAG,UAAUnO,SAAS,IAAI,wBAAwB;oBAC/CA,QAAAA;oBACA3D,aAAAA;oBACAjB,qBAAqB,IAAI,CAACyG,MAAM,CAACzG,mBAAmB;gBACtD;gBACA,IAAI4E,SAAS,GAAG;oBACd,IAAI,CAAC,IAAI,CAACqI,oBAAoB,EAAE;wBAC9B,IAAI,CAACA,oBAAoB,GAAG;wBAC5B,IAAI,CAAC5yC,IAAI,CAACi0C,WAAW,GAAGp6B,eAAe;oBACzC;oBACA,IAAM48B,QAAQ,IAAI,CAACrK,MAAM,CAACjH,YAAY;oBACtC,IAAI,CAACqT,aAAa,GAAG52C,OAAOf,UAAU,CAAC;wBACrC,MAAK23C,aAAa,GAAG,KAAK;wBAC1B,IAAI,CAAC,MAAK7Z,SAAS,IAAI8X,UAAU,MAAKrK,MAAM,CAACjH,YAAY,EAAE;wBAC3D,MAAKyP,aAAa,CAAC,AAAC,GAAU,OAAR2D,SAAQ;oBAChC,GAAGhO;oBACH;gBACF;gBACA,KAAK,IAAI,CAACuO,iBAAiB,CAACP;YAC9B;;;YACMO,KAAAA;mBAAN,SAAMA,kBAAkBP,OAAO;;wBACzBhiD,KAQEkgD;;;;gCAPN,IAAI,IAAI,CAACP,WAAW,KAAK,QAAQ;oCAC/B3/C,MAAM,IAAI,CAAC+8C,UAAU,CAACvmC,KAAK;gCAC7B,OAAO,IAAI,IAAI,CAACopC,mBAAmB,EAAE;oCACnC5/C,MAAM,IAAI,CAACs9C,gBAAgB,CAAC,IAAI,CAACsC,mBAAmB;gCACtD;gCACA,IAAI,CAAC5/C,KAAK;;;gCACV,IAAI,CAACghD,oBAAoB,CAAC3mB,kBAAkBr6B,MAAMgiD;gCAC5C9B,QAAQ,IAAI,CAACrK,MAAM,CAACjH,YAAY;;;;;;;;;gCAEpC;;oCAAM,IAAI,CAAC4T,YAAY,CAACxiD,KAAKgiD;;;gCAA7B;;;;;;;gCAEA,IAAI,CAACS,2BAA2B,CAACvC;;;;;;;;;;;gBAErC;;;;YACAuC,KAAAA;mBAAAA,SAAAA;oBAA4BvC,QAAAA,iEAAQ,IAAI,CAACrK,MAAM,CAACjH,YAAY;gBAC1D,IAAI,CAAC,IAAI,CAACxG,SAAS,IAAI8X,UAAU,IAAI,CAACrK,MAAM,CAACjH,YAAY,EAAE;gBAC3D,IAAI,CAACuP,YAAY,CAAC,iBAAiB;gBACnC,IAAI,CAACE,aAAa,CAAC;YACrB;;;YACAqE,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAACT,aAAa,IAAI,MAAM;oBAC9B/3C,aAAa,IAAI,CAAC+3C,aAAa;oBAC/B,IAAI,CAACA,aAAa,GAAG,KAAK;gBAC5B;YACF;;;YACAjB,KAAAA;mBAAAA,SAAAA,qBAAqBhhD,GAAG,EAAEyQ,MAAM;;gBAC9B,IAAIslB;gBACJ,IAAI;oBACFA,SAAS,IAAIt2B,IAAIO,KAAKuH,YAAY;gBACpC,EAAE,eAAM,CACR;gBACA,IAAMo7C,iBAAS5sB,mBAAAA,6BAAAA,OAAQv8B,GAAG,CAAC,iDAAc,KAAK;gBAC9C,IAAI,CAACokD,qBAAqB,CAAC,sBAAsB;oBAC/C91C,WAAW,KAAK;oBAChB2I,QAAAA;oBACAiqB,GAAG,WAAE3E,mBAAAA,6BAAAA,OAAQv8B,GAAG,CAAC,+CAAU,KAAK;oBAChCopD,IAAI,WAAE7sB,mBAAAA,6BAAAA,OAAQv8B,GAAG,CAAC,gDAAW,KAAK;oBAClCqpD,IAAI,WAAE9sB,mBAAAA,6BAAAA,OAAQv8B,GAAG,CAAC,gDAAW,KAAK;oBAClCspD,IAAI,WAAE/sB,mBAAAA,6BAAAA,OAAQv8B,GAAG,CAAC,gDAAW,KAAK;oBAClCmpD,QAAAA;gBACF;gBACA,IAAIA,WAAW,WAAWA,WAAW,eAAe;oBAClDzlD,QAAQiK,IAAI,CACV,AAAC,uCAA6C,OAAPw7C,QAAO;oBAEhD,IAAI,CAAC1E,gBAAgB,CAAC;gBACxB;YACF;;;YACAmD,KAAAA;mBAAAA,SAAAA,qBAAqB7+C,KAAK,EAAEkR,UAAU;oBAchBsvC;gBAbpB,IAAMA,OAAO,IAAI,CAACnE,gBAAgB,IAAI,OAAO,IAAI,CAAClC,kBAAkB,CAACljD,GAAG,CAAC,IAAI,CAAColD,gBAAgB,IAAI,KAAK;gBACvG,IAAM3pC,UAAU1S,CAAAA,kBAAAA,4BAAAA,MAAO0S,OAAO,KAAI;gBAClC,IAAIhL;gBACJ,IAAIgL,QAAQtH,QAAQ,CAAC,+BAA+B;oBAClD1D,UAAU;gBACZ,OAAO,IAAIgL,QAAQtH,QAAQ,CAAC,uBAAuB;oBACjD1D,UAAU;gBACZ,OAAO,IAAI,mCAAmC1O,IAAI,CAAC0Z,UAAU;oBAC3DhL,UAAU;gBACZ,OAAO,IAAI,WAAW1O,IAAI,CAAC0Z,UAAU;oBACnChL,UAAU;gBACZ,OAAO,IAAI,qBAAqB1O,IAAI,CAAC0Z,UAAU;oBAC7ChL,UAAU;gBACZ,OAAO,IAAI84C,QAAQ,EAACA,oBAAAA,KAAKC,WAAW,cAAhBD,+BAAAA,oBAAoB,KAAK,KAAK,CAACA,KAAKE,eAAe,EAAE;oBACvEh5C,UAAU;gBACZ,OAAO;oBACLA,UAAU;gBACZ;gBACA,IAAI,CAAC4rC,MAAM,CAACzG,mBAAmB;gBAC/B,IAAInlC,YAAY,aAAaA,YAAY,mBAAmBA,YAAY,oBAAoB;oBAC1F,IAAI,CAACuyC,wBAAwB;gBAC/B;gBACA,IAAIvyC,YAAY,WAAW;oBACzB,IAAI,CAAC4rC,MAAM,CAACnC,eAAe;gBAC7B;gBACA,IAAIqP,QAAQ,CAACA,KAAKG,aAAa,EAAE;oBAC/BH,KAAKG,aAAa,GAAG,AAAC,GAAcjuC,OAAZhL,SAAQ,MAAY,OAARgL;gBACtC;gBACA,IAAI,IAAI,CAAC4gC,MAAM,CAACxC,kBAAkB,CAAC9wC,QAAQ;oBACzC,IAAI,CAACszC,MAAM,CAAClG,oBAAoB,CAAClxC,GAAG,CAACgV,YAAY1U,KAAKqV,GAAG;gBAC3D,OAAO,IAAInK,YAAY,oBAAoB;oBACzC,IAAI,CAAC4rC,MAAM,CAACnG,cAAc,CAAC5lC,GAAG,CAAC2J;gBACjC;gBACA,IAAI,CAACwqC,gBAAgB,CAAC,AAAC,mBAA0B,OAARh0C;gBACzC,IAAI,CAAC2zC,qBAAqB,CAAC,mBAAmB;oBAC5C3zC,SAAAA;oBACA+K,cAAcC;oBACdm6B,qBAAqB,IAAI,CAACyG,MAAM,CAACzG,mBAAmB;oBACpDoN,0BAA0B,IAAI,CAACA,wBAAwB;gBACzD;YACF;;;YACA,kEAAkE;YAClE,2BAA2B;YAC3B,kEAAkE;YAClE0B,KAAAA;mBAAAA,SAAAA,wBAAwBl3C,OAAO;gBAC7B,IAAMc,YAAYd,QAAQc,SAAS;gBACnC,IAAI,OAAOA,cAAc,UAAU;gBACnC,IAAMi7C,OAAO,IAAI,CAACrG,kBAAkB,CAACljD,GAAG,CAACsO;gBACzC,IAAI,CAACi7C,MAAM;gBACX,OAAQ/7C,QAAQW,KAAK;oBACnB,KAAK;wBACHo7C,KAAKI,cAAc;wBACnB;oBACF,KAAK;wBACHJ,KAAKK,cAAc,GAAGp8C,QAAQ2N,UAAU;wBACxC;oBACF,KAAK;wBACHouC,KAAKC,WAAW,GAAGh8C,QAAQmP,cAAc;wBACzC;oBACF,KAAK;oBACL,KAAK;wBACH,IAAI,OAAOnP,QAAQqO,KAAK,KAAK,UAAU;4BACrC0tC,KAAKM,YAAY,GAAG5lD,KAAKsF,GAAG,CAACggD,KAAKM,YAAY,EAAEr8C,QAAQqO,KAAK;wBAC/D;wBACA,IAAIrO,QAAQW,KAAK,KAAK,mBAAmBo7C,KAAKO,cAAc,GAAG;wBAC/D;oBACF,KAAK;wBACHP,KAAKQ,mBAAmB;wBACxB,IAAIv8C,QAAQ6H,WAAW,EAAEk0C,KAAKS,mBAAmB;wBACjD;oBACF,KAAK;wBACHT,KAAKU,WAAW,GAAG;wBACnB;oBACF,KAAK;wBACHV,KAAKE,eAAe,GAAG;wBACvB;oBACF;wBACE,IAAIhH,uBAAuB97C,GAAG,CAAC6G,QAAQW,KAAK,KAAK,CAACo7C,KAAKG,aAAa,EAAE;4BACpEH,KAAKG,aAAa,GAAGl8C,QAAQlH,MAAM,GAAG,AAAC,GAAmBkH,OAAjBA,QAAQW,KAAK,EAAC,KAAkB,OAAfX,QAAQlH,MAAM,IAAKkH,QAAQW,KAAK;wBAC5F;gBACJ;YACF;;;YACA+7C,KAAAA;mBAAAA,SAAAA,2BAA2B57C,SAAS,EAAE67C,SAAS;oBAQLZ;gBAPxC,IAAIj7C,aAAa,MAAM;gBACvB,IAAMi7C,OAAO,IAAI,CAACrG,kBAAkB,CAACljD,GAAG,CAACsO;gBACzC,IAAI,CAACi7C,MAAM;gBACX,IAAI,CAACrG,kBAAkB,CAACryC,MAAM,CAACvC;gBAC/B,IAAI,CAACi7C,KAAKE,eAAe,IAAI,CAACF,KAAKG,aAAa,IAAIS,WAAW;oBAC7DZ,KAAKG,aAAa,GAAGS;gBACvB;gBACA,IAAMC,iCAAiC,EAACb,oBAAAA,KAAKC,WAAW,cAAhBD,+BAAAA,oBAAoB,KAAK,KAAK,CAACA,KAAKE,eAAe;gBAC3F,IAAIW,gCAAgC;oBAClC,IAAI,CAAC3F,gBAAgB,CAAC;gBACxB;gBACA,IAAQpqC,YAAyBkvC,KAAzBlvC,WAAcgwC,oCAAWd;;;gBACjC7lD,QAAQC,GAAG,CAAC,8BAA8B,wCACrC0mD;oBACH7W,YAAYjuC,KAAKqV,GAAG,KAAKP;oBACzB+vC,gCAAAA;;YAEJ;;;YACA,kEAAkE;YAClE,sBAAsB;YACtB,kEAAkE;YAClEE,KAAAA;mBAAAA,SAAAA,qBAAqBC,aAAa;gBAChC,IAAMtwC,aAAa4mB,kBAAkB0pB;gBACrC,IAAMvG,YAAY//C,KAAKuF,GAAG,CACxB,IAAI,CAAC6yC,MAAM,CAAChE,yBAAyB,IACrC,IAAI,CAACgE,MAAM,CAAC7D,4BAA4B;gBAE1C,IAAI,CAAEwL,CAAAA,YAAY,CAAA,GAAI,OAAO/pC;gBAC7B,IAAI;oBACF,IAAMzT,MAAM,IAAIP,IAAIgU;oBACpB,IAAI,CAACzT,IAAIuH,YAAY,CAACpH,GAAG,CAAC,SAAS,OAAOsT;oBAC1C,IAAMuwC,QAAQvmD,KAAK2B,KAAK,CAACo+C;oBACzBx9C,IAAIuH,YAAY,CAAC9I,GAAG,CAAC,QAAQjB,OAAOwmD;oBACpC,IAAMC,QAAQnmD,OAAOkC,IAAIuH,YAAY,CAAC/N,GAAG,CAAC;oBAC1C,IAAIsE,OAAOC,QAAQ,CAACkmD,UAAUA,QAAQD,OAAO;wBAC3ChkD,IAAIuH,YAAY,CAAC9I,GAAG,CAAC,QAAQjB,OAAOwmD;oBACtC;oBACA,OAAOhkD,IAAI3D,QAAQ;gBACrB,EAAE,eAAM;oBACN,OAAOoX;gBACT;YACF;;;YACAwqC,KAAAA;mBAAAA,SAAAA,iBAAiBt2C,KAAK;oBAAEu8C,SAAAA,iEAAS;oBACJ;gBAA3B,IAAI,CAACvH,WAAW,CAACh1C,MAAM,GAAG,EAAC,0BAAA,IAAI,CAACg1C,WAAW,CAACh1C,MAAM,cAAvB,qCAAA,0BAA2B,KAAKu8C;YAC7D;;;YACAtG,KAAAA;mBAAAA,SAAAA,sBAAsBj2C,KAAK;oBAAEC,QAAAA,iEAAQ,CAAC;gBACpC,IAAI,CAACq2C,gBAAgB,CAACt2C;gBACtBzK,QAAQC,GAAG,CAAC,AAAC,qBAA0B,OAANwK,QAAS;oBACxCE,SAAS,IAAI,CAACguC,MAAM,CAACjH,YAAY;oBACjC9mC,WAAW,IAAI,CAAC82C,gBAAgB;oBAChC52C,iBAAiB,OAAOC,aAAa,cAAcA,SAASD,eAAe,GAAG,KAAK;mBAChFJ;YAEP;;;YACAi4C,KAAAA;mBAAAA,SAAAA,gBAAgBpvC,MAAM,EAAEivC,QAAQ;gBAC9B,IAAIA,YAAYA,aAAa,IAAI,CAACyE,mBAAmB,IAAI,IAAI,CAACrH,gBAAgB,KAAK,IAAI,CAACjH,MAAM,CAACjH,YAAY,EAAE;oBAC3G,IAAI,CAACgP,qBAAqB,CAAC,yBAAyB;wBAAEntC,QAAAA;wBAAQivC,UAAAA;oBAAS;oBACvE;gBACF;gBACA,IAAI,CAACyE,mBAAmB,GAAGzE;gBAC3B,IAAI,CAAC5C,gBAAgB,GAAG,IAAI,CAACjH,MAAM,CAACjH,YAAY;gBAChD,IAAI,CAACgP,qBAAqB,CAAC,uBAAuB;oBAChDntC,QAAAA;oBACAivC,UAAAA;oBACA0E,oBAAoB,IAAI,CAACvO,MAAM,CAACpE,yBAAyB;gBAC3D;YACF;;;YACAwP,KAAAA;mBAAAA,SAAAA,mBAAmBrT,QAAQ,EAAEkT,YAAY,EAAEkB,OAAO;oBAuBhDpU;gBAtBA,IAAI,IAAI,CAACgP,sBAAsB,EAAE;oBAC/B,IAAI,CAACgB,qBAAqB,CAAC,8BAA8B;wBACvDyG,cAAcvD;oBAChB;gBACF;gBACA,IAAI,CAAC4C,0BAA0B,CAAC,IAAI,CAAC9E,gBAAgB;gBACrD,IAAI,CAACA,gBAAgB,GAAGkC;gBACxB,IAAI,CAACwD,gBAAgB,GAAGvlD,KAAKqV,GAAG;gBAChC,IAAI,CAACsoC,kBAAkB,CAACj+C,GAAG,CAACqiD,cAAc;oBACxCj5C,SAAS,IAAI,CAACguC,MAAM,CAACjH,YAAY;oBACjC9mC,WAAWg5C;oBACX/4C,cAAc,IAAI,CAAC00C,oBAAoB;oBACvCuF,SAAAA;oBACAmB,gBAAgB;oBAChBE,cAAc;oBACdC,gBAAgB;oBAChBC,qBAAqB;oBACrBC,qBAAqB;oBACrBC,aAAa;oBACbR,iBAAiB;oBACjBpvC,WAAW9U,KAAKqV,GAAG;gBACrB;iBACAw5B,6BAAAA,SAASrrB,gBAAgB,cAAzBqrB,iDAAAA,gCAAAA,UAA4B;oBAC1B/lC,SAAS,IAAI,CAACguC,MAAM,CAACjH,YAAY;oBACjC9mC,WAAWg5C;oBACX/4C,cAAc,IAAI,CAAC00C,oBAAoB;gBACzC;YACF;;;YACA8H,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAAC96C,IAAI,CAACi0C,WAAW,GAAGp7B,WAAW,MAAM,CAAC,IAAI,CAACu6B,gCAAgC;YACxF;;;YACA2H,KAAAA;mBAAAA,SAAAA,oBAAoB1kD,MAAM;gBACxB,IAAI,CAAC,IAAI,CAACykD,0BAA0B,IAAI;gBACxC,IAAI,CAAC3G,qBAAqB,CAAC,2BAA2B;oBACpD99C,QAAAA;oBACA2kD,uBAAuB,IAAI,CAACH,gBAAgB,IAAI,OAAOvlD,KAAKqV,GAAG,KAAK,IAAI,CAACkwC,gBAAgB,GAAG,KAAK;gBACnG;YACF;;;YACAI,KAAAA;mBAAAA,SAAAA;gBACE,IAAM9W,WAAW,IAAI,CAACnkC,IAAI,CAACi0C,WAAW;gBACtC,IAAI,IAAI,CAACd,sBAAsB,IAAIhP,SAASprB,mBAAmB,EAAE;oBAC/D,IAAI,CAACo7B,qBAAqB,CAAC,2BAA2B;wBACpD6G,uBAAuB,IAAI,CAACH,gBAAgB,IAAI,OAAOvlD,KAAKqV,GAAG,KAAK,IAAI,CAACkwC,gBAAgB,GAAG,KAAK;oBACnG;oBACA1W,SAASprB,mBAAmB,CAC1B;oBAEF;gBACF;gBACA,IAAI,CAACk8B,eAAe,CAAC;YACvB;;;YACMyC,KAAAA;mBAAN,SAAMA,eAAennD,IAAI;;;;;gCACvB,IAAI,CAAC4iD,sBAAsB,GAAG;;;;;;;;;gCAE5B;;oCAAM5iD;;;gCAAN;;;;;;gCAEA,IAAI,CAAC4iD,sBAAsB,GAAG;;;;;;;;;;gBAElC;;;;YACM4F,KAAAA;mBAAN,SAAMA,aAAa/uC,UAAU;oBAAEuuC,UAAAA,iEAAU;;wBA2BjC9B,OAEAvC,YACAmD,cAEA6D,IACAC,YAqBkBD,yBAAdE,aACAxU,aAmBD9tC;;;;gCAzET,IAAI,IAAI,CAACg6C,SAAS,KAAK,gBAAgB,IAAI,CAACA,SAAS,KAAK,WAAW,IAAI,CAACA,SAAS,KAAK,aAAa,IAAI,CAACA,SAAS,KAAK,UAAU;oCAChI,IAAI,CAACqB,qBAAqB,CAAC,sBAAsB;wCAC/CoE,SAAAA;wCACAnD,OAAO,IAAI,CAACtC,SAAS;wCACrBvvC,KAAK;oCACP;oCACA;;;gCACF;gCACA,IAAI,IAAI,CAAC6oC,MAAM,CAACnG,cAAc,CAACvvC,GAAG,CAACsT,aAAa;oCAC9C,IAAI,IAAI,CAACxW,KAAK,EAAEC,QAAQiK,IAAI,CAAC,oDAAoDsM;oCACjF,IAAI,CAACoiC,MAAM,CAACzG,mBAAmB;oCAC/B,MAAM,IAAIn7B,MAAM;gCAClB;gCACA,IAAI,IAAI,CAAC4hC,MAAM,CAACvC,eAAe,CAAC7/B,aAAa;oCAC3C,IAAI,IAAI,CAACxW,KAAK,EAAEC,QAAQiK,IAAI,CAAC,yDAAyDsM;oCACtF,IAAI,CAACoiC,MAAM,CAACzG,mBAAmB;oCAC/B,MAAM,IAAIn7B,MAAM;gCAClB;gCACA,IAAI,IAAI,CAAC4hC,MAAM,CAACzG,mBAAmB,IAAI,IAAI,CAACyG,MAAM,CAACxG,sBAAsB,EAAE;oCACzE,IAAI,IAAI,CAACpyC,KAAK,EAAEC,QAAQiK,IAAI,CAAC;oCAC7B,MAAM,IAAI8M,MAAM;gCAClB;gCACA,IAAI,IAAI,CAAC4hC,MAAM,CAACpC,eAAe,IAAI;oCACjC,IAAI,IAAI,CAACx2C,KAAK,EAAEC,QAAQiK,IAAI,CAAC;oCAC7B,MAAM,IAAI8M,MAAM;gCAClB;gCACMisC,QAAQ,IAAI,CAACrK,MAAM,CAACjH,YAAY;gCACtC,IAAI,CAAC+P,oBAAoB,CAAC;gCACpBhB,aAAa,IAAI,CAAClB,oBAAoB;gCACtCqE,eAAe,EAAE,IAAI,CAACjL,MAAM,CAAChH,qBAAqB;gCACxD,IAAI,CAACgH,MAAM,CAAC/G,oBAAoB,GAAGgS;gCAC7B6D,KAAK,IAAI,CAACl7C,IAAI,CAACi0C,WAAW;gCAC1BkH,aAAa,IAAI,CAACd,oBAAoB,CAACrwC;gCAC7C,IAAI,CAAC2qC,cAAc,GAAGwG;gCACtB,IAAI,CAACzG,YAAY,CAAC,cAAc6D;gCAChC,IAAI,CAACf,kBAAkB,CAAC0D,IAAI7D,cAAckB;;;;;;;;;gCAExC;;oCAAM,IAAI,CAACnM,MAAM,CAAC9B,sBAAsB;;;gCAAxC;gCACA,IAAI,IAAI,CAACmN,OAAO,CAAChB,OAAOvC,aAAa;;;gCACrC,IAAI,CAAC9H,MAAM,CAAC5B,sBAAsB,CAAC6M;gCACnC;;oCAAM,IAAI,CAACK,cAAc,CAAC;+CAAMwD,GAAGljC,UAAU,CAACmjC;;;;gCAA9C;gCACA,IAAI,CAAC/O,MAAM,CAAC1B,sBAAsB;gCAClC,IAAI,IAAI,CAAC+M,OAAO,CAAChB,OAAOvC,aAAa;oCACnC,IAAI,CAACC,qBAAqB,CAAC,gCAAgC;wCAAE91C,WAAWg5C;oCAAa;oCACrF;;;gCACF;gCACA1rB,qBACE,IAAI,CAAC3rB,IAAI,CAACymB,MAAM,CAACnI,UAAU,EAC3B;oCAAEtX,QAAQ;oCAAOpI,SAASu8C;oCAAYxxB,WAAW,CAAC,aAAa,GAAG,IAAIr0B,QAAQC,WAAW;gCAAG,GAC5F,IAAI,CAACq+C,gBAAgB,EACrB9mC,KAAK,CAAC,YACR;gCACA,IAAI,CAAC,IAAI,CAACs/B,MAAM,CAACtD,wBAAwB,CAACoS,KAAK;;oCACvCE,eAAcF,0BAAAA,GAAGnhC,mBAAmB,cAAtBmhC,8CAAAA,6BAAAA;oCACdtU,cAAc5yC,KAAKuF,GAAG,CAC1B,IAAI,CAAC6yC,MAAM,CAAChE,yBAAyB,IACrC,IAAI,CAACgE,MAAM,CAAC7D,4BAA4B;oCAE1C,IAAI,CAAC4L,qBAAqB,CAAC,oBAAoB;wCAC7CkH,cAAcD,eAAe,OAAOA,cAAc,MAAM,KAAK;wCAC7DxU,aAAAA;oCACF;oCACA,MAAM,IAAIp8B,MAAM;gCAClB;gCACA,IAAI,CAACkqC,YAAY,CAAC,SAAS;gCAC3B,IAAI,CAACtI,MAAM,CAACrB,oBAAoB,CAACsM;gCACjC;;oCAAM,IAAI,CAACK,cAAc,CAAC;+CAAMwD,GAAG9nC,IAAI;;;;gCAAvC;gCACA,IAAI,IAAI,CAACqkC,OAAO,CAAChB,OAAOvC,aAAa;;;gCACrC,IAAI,IAAI,CAAC9H,MAAM,CAACpE,yBAAyB,IAAI,QAAQ,IAAI,CAACoE,MAAM,CAAC9D,wBAAwB,MAAM,MAAM;oCACnG,IAAI,CAAC8D,MAAM,CAACjE,6BAA6B;gCAC3C;gCACA+S,GAAGzhC,WAAW,CAACk4B,iBAAiBuJ;gCAChC,IAAI,CAAC9O,MAAM,CAAClG,oBAAoB,CAACtlC,MAAM,CAACoJ;;;;;;gCACjClR;gCACP,IAAI,CAACszC,MAAM,CAAC1B,sBAAsB;gCAClC,IAAI,CAAC0B,MAAM,CAACpB,oBAAoB;gCAChC,IAAI,IAAI,CAACoB,MAAM,CAAC/G,oBAAoB,KAAKgS,cAAc;oCACrD,IAAI,CAACjL,MAAM,CAAC/G,oBAAoB,GAAG;gCACrC;gCACA,IAAI,IAAI,CAACoS,OAAO,CAAChB,OAAOvC,aAAa;oCACnC,IAAI,CAACC,qBAAqB,CAAC,gCAAgC;wCACzD91C,WAAWg5C;wCACX9rC,YAAY,EAAEzS,kBAAAA,4BAAAA,MAAO0S,OAAO;oCAC9B;oCACA;;;gCACF;gCACA,IAAI,IAAI,CAAChY,KAAK,EAAEC,QAAQqF,KAAK,CAAC,iCAAiCA,kBAAAA,4BAAAA,MAAO0S,OAAO;gCAC7E,IAAI,CAACmsC,oBAAoB,CAAC7+C,OAAOkR;gCACjC,IAAIlR,CAAAA,kBAAAA,4BAAAA,MAAO0S,OAAO,MAAK,8BAA8B;oCACnD,IAAI,CAAC0pC,oBAAoB,CAAC;gCAC5B;gCACA,MAAMp8C;;;;;;;gBAEV;;;;YACA,kEAAkE;YAClE,uBAAuB;YACvB,kEAAkE;YAClEwiD,KAAAA;mBAAAA,SAAAA,eAAepB,SAAS;gBACtB,IAAMqB,SAAS,IAAI,CAACrI,WAAW;gBAC/B,IAAI,CAACA,WAAW,GAAG,CAAC;gBACpB,IAAIpkD,OAAOiP,IAAI,CAACw9C,QAAQtkD,MAAM,KAAK,GAAG;gBACtC,IAAMwS,QAAQ,eAACvL;wBAAUq9C;4BAAAA,gBAAAA,MAAM,CAACr9C,MAAM,cAAbq9C,2BAAAA,gBAAiB;;gBAC1C,IAAMC,cAAc,qBAAC/3B;2BAAW30B,OAAOiP,IAAI,CAACw9C,QAAQphC,MAAM,CACxD,SAAC5lB,OAAO2J;4BAAiDq9C;+BAAvCr9C,MAAMyI,OAAO,CAAC8c,YAAY,IAAIlvB,UAASgnD,gBAAAA,MAAM,CAACr9C,MAAM,cAAbq9C,2BAAAA,gBAAiB,KAAKhnD;uBAC/E;;gBAEF,IAAM6J,UAAU,IAAI,CAACi1C,gBAAgB;gBACrC,IAAMoI,iBAAiBhyC,MAAM;gBAC7B,IAAMiyC,WAAWjyC,MAAM,2BAA2BgyC;gBAClD,IAAIC,WAAW,KAAKjyC,MAAM,wBAAwB,GAAG;oBACnDhW,QAAQC,GAAG,CAAC,kDAAkD;wBAC5D0K,SAAAA;wBACAs9C,UAAAA;wBACAxB,WAAAA;oBACF;gBACF;gBACAzmD,QAAQC,GAAG,CAAC,mCAAmC;oBAC7C0K,SAAAA;oBACA87C,WAAAA;oBACAyB,eAAelyC,MAAM;oBACrBmyC,mBAAmBnyC,MAAM;oBACzBiyC,UAAAA;oBACAD,gBAAAA;oBACAI,cAAcpyC,MAAM;oBACpBqyC,oBAAoBryC,MAAM;oBAC1BsyC,YAAYtyC,MAAM,gCAAgCA,MAAM;oBACxDuyC,QAAQvyC,MAAM;oBACdwyC,QAAQxyC,MAAM;oBACdyyC,cAAczyC,MAAM;oBACpB0yC,wBAAwB1yC,MAAM;oBAC9B2yC,yBAAyB3yC,MAAM;oBAC/B4yC,eAAe5yC,MAAM;oBACrB6yC,uBAAuB7yC,MAAM;oBAC7B8yC,oBAAoB9yC,MAAM;oBAC1B+yC,iBAAiB/yC,MAAM;oBACvBgzC,kBAAkBhzC,MAAM;oBACxBizC,WAAWjzC,MAAM;oBACjBkzC,WAAWlzC,MAAM;oBACjBmzC,qBAAqBnzC,MAAM;oBAC3BozC,oBAAoBpzC,MAAM;oBAC1BqzC,oBAAoBtB,YAAY;oBAChCuB,gBAAgBtzC,MAAM,4BAA4BA,MAAM;oBACxDuzC,gBAAgBvzC,MAAM;oBACtBwzC,mBAAmBxzC,MAAM;oBACzByzC,iBAAiBzzC,MAAM;oBACvBhO,iBAAiBgO,MAAM,8BAA8BA,MAAM;oBAC3D0zC,eAAe1zC,MAAM;oBACrB2zC,gBAAgB3zC,MAAM;oBACtB4zC,YAAY5zC,MAAM;oBAClB6zC,cAAc7zC,MAAM;oBACpB8zC,YAAY9zC,MAAM;oBAClB+zC,eAAe/zC,MAAM;oBACrBg0C,aAAah0C,MAAM;oBACnB2O,gBAAgB3O,MAAM;oBACtBi0C,kBAAkBj0C,MAAM;oBACxBk0C,mBAAmBl0C,MAAM,oCAAoCA,MAAM;oBACnEm0C,0BAA0Bn0C,MAAM;oBAChCo0C,qBAAqBp0C,MAAM;oBAC3Bq0C,iBAAiBr0C,MAAM;oBACvBs0C,aAAat0C,MAAM;oBACnBu0C,YAAYv0C,MAAM;oBAClBw0C,YAAYx0C,MAAM;oBAClBy0C,YAAYz0C,MAAM;oBAClBhN,UAAUgN,MAAM;oBAChB00C,oBAAoB10C,MAAM;oBAC1B20C,8BAA8B30C,MAAM;oBACpC40C,mBAAmB50C,MAAM;oBACzB60C,eAAe70C,MAAM;oBACrB80C,kBAAkB90C,MAAM;oBACxB+0C,kBAAkB/0C,MAAM,iBAAiBA,MAAM,iBAAiBA,MAAM,eAAeA,MAAM,WAAWA,MAAM,oBAAoBA,MAAM;oBACtIg1C,QAAQlD;gBACV;YACF;;;YACA1C,KAAAA;mBAAAA,SAAAA;oBAAoBxiD,SAAAA,iEAAS;oBAsBiD,+BAA8C;gBArB1H,IAAI,IAAI,CAAC7C,KAAK,EAAE;oBACdC,QAAQC,GAAG,CAAC,yDAAyD;wBAAE2C,QAAAA;oBAAO;gBAChF;gBACA,IAAMqoD,gBAAgB,IAAI,CAAC5L,SAAS;gBACpC,IAAM6L,eAAeD,kBAAkB,UAAU,CAAC,IAAI,CAAC/f,SAAS;gBAChE,IAAI,CAAC+V,YAAY,CAAC,UAAUr+C;gBAC5B,IAAI,CAAC4iD,sBAAsB;gBAC3B,IAAM9U,WAAW,IAAI,CAACnkC,IAAI,CAACi0C,WAAW;gBACtC,IAAIyK,kBAAkB,cAAc;wBAClCva;qBAAAA,gCAAAA,SAASprB,mBAAmB,cAA5BorB,oDAAAA,mCAAAA,UAA+B,AAAC,yCAA+C,OAAP9tC,QAAO;gBACjF;gBACA,IAAI,CAACsoD,cAAc;oBACjBlrD,QAAQC,GAAG,CAAC,wBAAwB;wBAClC4K,cAAc,IAAI,CAAC00C,oBAAoB;wBACvC30C,WAAW,IAAI,CAAC82C,gBAAgB;wBAChCC,OAAOsJ;wBACProD,QAAAA;oBACF;gBACF;gBACA,IAAI,CAAC4jD,0BAA0B,CAAC,IAAI,CAAC9E,gBAAgB,EAAE,AAAC,eAAqB,OAAP9+C;gBACtE,IAAI,CAAC8+C,gBAAgB,GAAG,KAAK;gBAC7B,IAAMyJ,wBAAwB,IAAI,CAACtT,OAAO,IAAI,IAAI,CAACsH,oBAAoB,IAAI,EAAC,gCAAA,IAAI,CAACM,WAAW,CAAC,cAAc,cAA/B,2CAAA,gCAAmC,KAAK,KAAK,EAAC,qCAAA,IAAI,CAACA,WAAW,CAAC,mBAAmB,cAApC,gDAAA,qCAAwC,KAAK;gBACvK,IAAI,CAAC9G,MAAM,CAACb,gBAAgB;gBAC5B,IAAI,CAACoH,WAAW,CAAC5G,IAAI;gBACrB,IAAI,CAAC6J,mBAAmB;gBACxB,IAAI,IAAI,CAAChD,oBAAoB,EAAE;oBAC7BzO,SAASrqB,eAAe;oBACxB,IAAI,CAAC84B,oBAAoB,GAAG;gBAC9B;gBACA,IAAI,CAACjU,SAAS,GAAG;gBACjB,IAAI,CAACkU,2BAA2B,GAAG;gBACnC,IAAI,CAAC1G,UAAU,CAAC1O,oBAAoB,GAAG,KAAK;gBAC5C,IAAI,CAAC0O,UAAU,CAACxO,uBAAuB,GAAG,KAAK;gBAC/C,IAAI,CAAC2V,UAAU,GAAG,EAAE;gBACpB,IAAI,CAAChI,OAAO,GAAG;gBACf,IAAI,CAAC4K,WAAW,GAAG,KAAK;gBACxB,IAAI,CAACC,mBAAmB,GAAG,KAAK;gBAChC,IAAI,CAACpD,wBAAwB,GAAG;gBAChC5O,SAASzrB,IAAI,GAAG5L,KAAK,CAAC,YACtB;gBACA,IAAI,CAAC6xC,cAAc,IAAI,CAACrD,cAAc,CAACjlD;gBACvC,IAAI,CAACq+C,YAAY,CAAC,QAAQ;gBAC1B,IAAMmK,gBAAgB,IAAI,CAAC7+C,IAAI,CAACi0C,WAAW,GAAG16B,qBAAqB;gBACnE,IAAMulC,iBAAiB,IAAI,CAAC9+C,IAAI,CAACi0C,WAAW,GAAGz6B,iBAAiB;gBAChE,IAAI,IAAI,CAACxZ,IAAI,CAACiN,KAAK,CAACjO,KAAK,KAAK6/C,eAAe;oBAC3C,IAAI,CAAC7+C,IAAI,CAACiN,KAAK,CAACjO,KAAK,GAAG6/C;gBAC1B;gBACA,IAAI7qD,KAAK0P,GAAG,CAAC,IAAI,CAAC1D,IAAI,CAACiN,KAAK,CAACzT,MAAM,GAAGslD,kBAAkB,MAAM;oBAC5D,IAAI,CAAC9+C,IAAI,CAACiN,KAAK,CAACzT,MAAM,GAAGslD;gBAC3B;gBACA,IAAI,CAAC9+C,IAAI,CAACiN,KAAK,CAACC,KAAK,CAACgG,UAAU,GAAG;gBACnC,IAAI,CAAClT,IAAI,CAACiN,KAAK,CAACC,KAAK,CAACqK,OAAO,GAAG;gBAChC,IAAI,IAAI,CAACvX,IAAI,CAAC2mB,YAAY,IAAI;oBAC5B,IAAI,IAAI,CAAC3mB,IAAI,CAAC/M,kCAAkC,IAAI;wBAClD,IAAI,IAAI,CAACO,KAAK,EAAE;4BACdC,QAAQC,GAAG,CACT;wBAEJ;wBACA,IAAI,CAACsM,IAAI,CAACwxC,gBAAgB;wBAC1B,IAAI,CAACuN,sBAAsB,CAAC,IAAI,CAAC/+C,IAAI,CAACiN,KAAK,CAAC5N,WAAW;wBACvD;oBACF;oBACA,IAAI,CAACu/C,uBAAuB;wBAC1B,IAAI,IAAI,CAACprD,KAAK,EAAE;4BACdC,QAAQC,GAAG,CAAC;wBACd;wBACA,IAAI,CAACsrD,qBAAqB;wBAC1B;oBACF;oBACA,IAAMC,cAAc,IAAI,CAACj/C,IAAI,CAACoxC,mBAAmB;oBACjD,IAAI6N,eAAe,QAAQA,cAAc,IAAI,CAACj/C,IAAI,CAACiN,KAAK,CAAC5N,WAAW,EAAE;wBACpE,IAAI,IAAI,CAAC7L,KAAK,EAAE;4BACdC,QAAQC,GAAG,CACT,AAAC,mEAAyHurD,OAAlD,IAAI,CAACj/C,IAAI,CAACiN,KAAK,CAAC5N,WAAW,CAAC6/C,OAAO,CAAC,IAAG,QAAkC,OAAvBD,YAAYC,OAAO,CAAC,IAAG;wBAErJ;wBACA,IAAI,CAACl/C,IAAI,CAACiN,KAAK,CAAC5N,WAAW,GAAG4/C;wBAC9B,IAAI,CAACj/C,IAAI,CAACm/C,cAAc,CAACF;oBAC3B;oBACA,IAAI,CAACD,qBAAqB;oBAC1B,IAAI,CAACD,sBAAsB,CAAC,IAAI,CAAC/+C,IAAI,CAACiN,KAAK,CAAC5N,WAAW;oBACvD;gBACF;gBACA,IAAI,CAAC2/C,qBAAqB;YAC5B;;;YACAI,KAAAA;mBAAAA,SAAAA;gBACE,IAAMnyC,QAAQ,IAAI,CAACjN,IAAI,CAACiN,KAAK;gBAC7B,IAAMqY,IAAIrY,MAAM5N,WAAW;gBAC3B,IAAMggD,SAASpyC,MAAMqyC,QAAQ;gBAC7B,IAAK,IAAIj7B,IAAI,GAAGA,IAAIg7B,OAAOpoD,MAAM,EAAEotB,IAAK;oBACtC,IAAIiB,KAAK+5B,OAAOhjD,KAAK,CAACgoB,KAAK,OAAOiB,KAAK+5B,OAAOjoB,GAAG,CAAC/S,IAAI;wBACpD,OAAOg7B,OAAOjoB,GAAG,CAAC/S,KAAKiB;oBACzB;gBACF;gBACA,OAAO;YACT;;;YACAi6B,KAAAA;mBAAAA,SAAAA;oBAUcC,+BACEC;gBAVd,IAAMC,IAAI,IAAI,CAAC1/C,IAAI,CAACiN,KAAK;gBACzB,IAAMuyC,gBAAgB;oBAAC;oBAAS;oBAAQ;oBAAW;iBAAY;gBAC/D,IAAMC,cAAc;oBAClB;oBACA;oBACA;oBACA;oBACA;iBACD;gBACD,IAAME,OAAMH,gCAAAA,aAAa,CAACE,EAAE1wC,YAAY,CAAC,cAA7BwwC,2CAAAA,gCAAiCzrD,OAAO2rD,EAAE1wC,YAAY;gBAClE,IAAM4wC,SAAQH,4BAAAA,WAAW,CAACC,EAAEzwC,UAAU,CAAC,cAAzBwwC,uCAAAA,4BAA6B1rD,OAAO2rD,EAAEzwC,UAAU;gBAC9D,IAAMigC,MAAMwQ,EAAE5mD,KAAK,GAAG,AAAC,QAAsB4mD,OAAfA,EAAE5mD,KAAK,CAACC,IAAI,EAAkD,OAA/C2mD,EAAE5mD,KAAK,CAAC0S,OAAO,GAAG,AAAC,KAAoB,OAAhBk0C,EAAE5mD,KAAK,CAAC0S,OAAO,EAAC,OAAK,MAAO;gBAChG,IAAM6zC,SAAS,EAAE;gBACjB,IAAK,IAAIh7B,IAAI,GAAGA,IAAIq7B,EAAEJ,QAAQ,CAACroD,MAAM,EAAEotB,IAAK;oBAC1Cg7B,OAAOz7C,IAAI,CAAC,AAAC,IAA0C87C,OAAvCA,EAAEJ,QAAQ,CAACjjD,KAAK,CAACgoB,GAAG66B,OAAO,CAAC,IAAG,KAAqC,OAA7BQ,EAAEJ,QAAQ,CAACloB,GAAG,CAAC/S,GAAG66B,OAAO,CAAC,IAAG;gBACtF;gBACA,OAAO,AAAC,KAAwCQ,OAApCA,EAAErgD,WAAW,CAAC6/C,OAAO,CAAC,IAAG,aAA6BQ,OAAlBA,EAAElwC,MAAM,EAAC,WAA4BkwC,OAAnBA,EAAE9vC,KAAK,EAAC,aAAmCgwC,OAAxBF,EAAEG,OAAO,EAAC,gBAAoCF,OAAtBC,OAAM,kBAA6B1Q,OAAbyQ,KAAI,WAAyBN,OAAhBnQ,KAAI,cAAsD,OAA1CmQ,OAAOpoD,MAAM,GAAGooD,OAAOv2B,IAAI,CAAC,OAAO;YACrM;;;YACAi2B,KAAAA;mBAAAA,SAAAA,uBAAuBe,cAAc;;gBACnC,IAAMC,aAAa,IAAI,CAAC//C,IAAI,CAAC/M,kCAAkC;gBAC/D,IAAM+sD,iBAAiB;gBACvB,IAAMC,UAAUF,aAAa,MAAM;gBACnC,IAAMG,qBAAqBH,aAAa,MAAM;gBAC9C,IAAMI,gBAAgB;gBACtB,IAAMC,eAAe;gBACrB,IAAMC,YAAY/qD,KAAKqV,GAAG;gBAC1B,IAAI21C,WAAWR;gBACf,IAAIS,aAAa;gBACjB,IAAIC,iBAAiB;gBACrB,IAAMvzC,QAAQ,IAAI,CAACjN,IAAI,CAACiN,KAAK;gBAC7B,IAAIwzC,oBAAoB;gBACxB,IAAIC;gBACJ,IAAMC,aAAa;oBACjB;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;iBACD;gBACD,IAAI,IAAI,CAACntD,KAAK,EAAE;oBACdktD,eAAe,sBAAC7xC;wBACd,IAAM+xC,KAAK,AAAC,CAAA,AAACtrD,CAAAA,KAAKqV,GAAG,KAAK01C,SAAQ,IAAK,GAAE,EAAGnB,OAAO,CAAC;wBACpDzrD,QAAQC,GAAG,CACT,AAAC,iBAA6Bmb,OAAb+xC,IAAG,YAA2B,OAAjB/xC,EAAE9P,IAAI,EAAC,OAAoC,OAA1B,MAAKwgD,kBAAkB;oBAE1E;wBACK,kCAAA,2BAAA;;wBAAL,QAAK,YAAcoB,+BAAd,SAAA,6BAAA,QAAA,yBAAA,iCAA0B;4BAA1B,IAAM7wD,OAAN;4BACHmd,MAAMiD,gBAAgB,CAACpgB,MAAM4wD;wBAC/B;;wBAFK;wBAAA;;;iCAAA,6BAAA;gCAAA;;;gCAAA;sCAAA;;;;oBAGLD,oBAAoB;oBACpBhtD,QAAQC,GAAG,CACT,AAAC,sCAAoE,OAA1B,IAAI,CAAC6rD,kBAAkB;gBAEtE;gBACA,IAAMsB,UAAU;oBACd,IAAIJ,qBAAqBC,cAAc;4BAChC,kCAAA,2BAAA;;4BAAL,QAAK,YAAcC,+BAAd,SAAA,6BAAA,QAAA,yBAAA,iCAA0B;gCAA1B,IAAM7wD,OAAN;gCACHmd,MAAMmD,mBAAmB,CAACtgB,MAAM4wD;4BAClC;;4BAFK;4BAAA;;;qCAAA,6BAAA;oCAAA;;;oCAAA;0CAAA;;;;wBAGLD,oBAAoB;oBACtB;gBACF;gBACA,IAAMK,OAAO;oBACX,IAAI,MAAKniB,SAAS,EAAE;wBAClBkiB;wBACA;oBACF;oBACA,IAAMxhD,cAAc4N,MAAM5N,WAAW;oBACrC,IAAM0hD,WAAW1hD,cAAcihD,WAAW;oBAC1C,IAAMU,UAAU,CAAC/zC,MAAMuC,MAAM,IAAIvC,MAAMgC,UAAU,IAAI;oBACrD,IAAI8xC,YAAYC,SAAS;wBACvB,IAAI,MAAKxtD,KAAK,EAAE;4BACdC,QAAQC,GAAG,CACT,AAAC,6EAA2G,OAA1B,MAAK6rD,kBAAkB;wBAE7G;wBACAsB;wBACA;oBACF;oBACA,IAAI5zC,MAAMuC,MAAM,EAAE;4BAChBvC;yBAAAA,cAAAA,MAAMmG,IAAI,gBAAVnG,kCAAAA,YAAcH,KAAK,CAAC,YACpB;oBACF;oBACA,IAAM2mB,UAAUn+B,KAAKqV,GAAG,KAAK01C;oBAC7B,IAAMY,gBAAgB,MAAK7B,gBAAgB;oBAC3C,IAAM8B,SAASD,gBAAgB,OAAO,CAACF;oBACvC,IAAIttB,WAAW2sB,cAAc;wBAC3B,IAAI,MAAK5sD,KAAK,IAAI,CAACutD,UAAU;4BAC3BttD,QAAQiK,IAAI,CACV,AAAC,8DAAwG,OAA3C,AAAC0iD,CAAAA,eAAe,GAAE,EAAGlB,OAAO,CAAC,IAAG,QAAqC,OAA1B,MAAKK,kBAAkB;wBAEpI;wBACAsB;wBACA;oBACF;oBACA,IAAMM,aAAaD,UAAUztB,WAAWwsB,WAAW3qD,KAAKqV,GAAG,KAAK61C,kBAAkBN,sBAAsBK,aAAaJ;oBACrH,IAAIgB,YAAY;wBACdZ;wBACAC,iBAAiBlrD,KAAKqV,GAAG;wBACzB,IAAIo1C,YAAY;4BACd,IAAI,MAAKvsD,KAAK,EAAE;gCACdC,QAAQiK,IAAI,CACV,AAAC,sGAAwHyiD,OAAdI,YAAW,KAA4B,OAAzBJ,eAAc,QAAqC,OAA1B,MAAKZ,kBAAkB;4BAE7K;4BACA,MAAKv/C,IAAI,CAACwxC,gBAAgB;wBAC5B,OAAO,IAAI+O,eAAe,GAAG;4BAC3B,IAAI,MAAK/sD,KAAK,EAAE;gCACdC,QAAQiK,IAAI,CACV,AAAC,iGAAmHyiD,OAAdI,YAAW,KAA4B,OAAzBJ,eAAc,QAAqC,OAA1B,MAAKZ,kBAAkB;4BAExK;4BACA,MAAKv/C,IAAI,CAACgwC,iBAAiB;wBAC7B,OAAO,IAAIuQ,eAAe,GAAG;4BAC3B,IAAMtB,cAAc,MAAKj/C,IAAI,CAACoxC,mBAAmB;4BACjD,IAAMgQ,YAAYnC,eAAe,QAAQA,cAAc5/C,cAAc4/C,cAAc5/C;4BACnF,IAAI,MAAK7L,KAAK,EAAE;gCACdC,QAAQiK,IAAI,CACV,AAAC,kFAAyH6iD,OAAnCa,UAAUlC,OAAO,CAAC,IAAG,gBAA4BiB,OAAdI,YAAW,KAA4B,OAAzBJ,eAAc,QAAqC,OAA1B,MAAKZ,kBAAkB;4BAE5L;4BACA,IAAIN,eAAe,QAAQA,cAAc5/C,aAAa;gCACpD4N,MAAM5N,WAAW,GAAG4/C;4BACtB;4BACA,MAAKj/C,IAAI,CAACm/C,cAAc,CAACiC;wBAC3B,OAAO;4BACL,IAAI,MAAK5tD,KAAK,EAAE;gCACdC,QAAQiK,IAAI,CACV,AAAC,sGAAwHyiD,OAAdI,YAAW,KAA4B,OAAzBJ,eAAc,QAAqC,OAA1B,MAAKZ,kBAAkB;4BAE7K;4BACA,MAAKv/C,IAAI,CAACwxC,gBAAgB;wBAC5B;wBACA8O,WAAWrzC,MAAM5N,WAAW;wBAC5B,IAAI4N,MAAMuC,MAAM,EAAE;gCAChBvC;6BAAAA,eAAAA,MAAMmG,IAAI,gBAAVnG,mCAAAA,aAAcH,KAAK,CAAC,YACpB;wBACF;oBACF;oBACAlL,OAAOf,UAAU,CAACigD,MAAMd;gBAC1B;gBACAp+C,OAAOf,UAAU,CAACigD,MAAMd;YAC1B;;;YACAhB,KAAAA;mBAAAA,SAAAA;;oBAAsB30C,UAAAA,iEAAU;gBAC9B,IAAMg3C,cAAc;gBACpB,IAAMp0C,QAAQ,IAAI,CAACjN,IAAI,CAACiN,KAAK;gBAC7B,IAAI,CAACA,MAAMuC,MAAM,EAAE;oBACjB,IAAI,IAAI,CAAChc,KAAK,IAAI6W,YAAY,GAAG;wBAC/B5W,QAAQC,GAAG,CAAC;oBACd;oBACA;gBACF;gBACA,IAAI,IAAI,CAACF,KAAK,EAAE;oBACdC,QAAQC,GAAG,CACT,AAAC,wEAAsF2tD,OAAfh3C,UAAU,GAAE,KAA8B4C,OAA3Bo0C,aAAY,iBAAgC,OAAjBp0C,MAAMgC,UAAU,EAAC;gBAEvI;gBACA,IAAIhC,MAAMgC,UAAU,GAAG,GAAG;oBACxB,IAAI5E,UAAU,KAAKg3C,aAAa;4BAM9Bp0C;wBALA,IAAI,IAAI,CAACzZ,KAAK,EAAE;4BACdC,QAAQiK,IAAI,CACV;wBAEJ;yBACAuP,cAAAA,MAAMmG,IAAI,gBAAVnG,kCAAAA,YAAcH,KAAK,CAAC,YACpB;wBACA;oBACF;oBACA,IAAMw0C,UAAU;wBACdr0C,MAAMmD,mBAAmB,CAAC,WAAWkxC;wBACrC,MAAKtC,qBAAqB,CAAC30C,UAAU;oBACvC;oBACA4C,MAAMiD,gBAAgB,CAAC,WAAWoxC;oBAClC,IAAMC,YAAY,MAAOl3C,CAAAA,UAAU,CAAA;oBACnCzI,OAAOf,UAAU,CAAC;wBAChBoM,MAAMmD,mBAAmB,CAAC,WAAWkxC;wBACrC,IAAIr0C,MAAMuC,MAAM,EAAE;4BAChB,MAAKwvC,qBAAqB,CAAC30C,UAAU;wBACvC;oBACF,GAAGk3C;oBACH;gBACF;gBACA,IAAMC,aAAav0C,MAAMmG,IAAI;gBAC7B,IAAIouC,cAAc,OAAOA,WAAW10C,KAAK,KAAK,YAAY;oBACxD00C,WAAW10C,KAAK,CAAC,SAAChU;wBAChB,IAAIuR,UAAU,KAAKg3C,aAAa;4BAC9B,IAAI,MAAK7tD,KAAK,EAAE;gCACdC,QAAQiK,IAAI,CACV,wEACA5E;4BAEJ;4BACA;wBACF;wBACA,IAAMyoD,YAAY,MAAOl3C,CAAAA,UAAU,CAAA;wBACnCzI,OAAOf,UAAU,CAAC;4BAChB,MAAKm+C,qBAAqB,CAAC30C,UAAU;wBACvC,GAAGk3C;oBACL;gBACF;YACF;;;YACAtM,KAAAA;mBAAAA,SAAAA;oBAAgB5+C,SAAAA,iEAAS;gBACvB,IAAI,CAAC,IAAI,CAACsoC,SAAS,EAAE;gBACrB,IAAI,IAAI,CAACmU,SAAS,KAAK,gBAAgB,IAAI,CAACA,SAAS,KAAK,UAAU;oBAClE,IAAI,CAACqB,qBAAqB,CAAC,+BAA+B;wBACxD99C,QAAAA;wBACA++C,OAAO,IAAI,CAACtC,SAAS;oBACvB;oBACA;gBACF;gBACA,IAAI,CAAC1G,MAAM,CAACzG,mBAAmB;gBAC/B,IAAM2T,OAAO,IAAI,CAACnE,gBAAgB,IAAI,OAAO,IAAI,CAAClC,kBAAkB,CAACljD,GAAG,CAAC,IAAI,CAAColD,gBAAgB,IAAI,KAAK;gBACvG,IAAImE,QAAQ,CAACA,KAAKG,aAAa,EAAEH,KAAKG,aAAa,GAAGpjD;gBACtD,IAAI,IAAI,CAAC7C,KAAK,EAAE;oBACdC,QAAQC,GAAG,CACT,AAAC,yBAA8C,OAAtB2C,QAAO,iBAAwE,OAAzD,IAAI,CAAC+1C,MAAM,CAAChD,gBAAgB,IAAG,4BAA0D,OAAhC,IAAI,CAACgD,MAAM,CAACzG,mBAAmB;gBAE3I;gBACA,IAAI,CAAC+O,YAAY,CAAC,iBAAiBr+C;gBACnC,IAAI,CAACu+C,aAAa,CAACv+C;YACrB;;;;;AAGF,sCAAsC;AACtC,IAAItF,sCAAwB;aAAxBA,sBACU01B,MAAM;;gCADhB11B;QAEA,IAAI,CAAC0wD,QAAQ,GAAG;QAChB,IAAI,CAACC,kBAAkB,GAAG;QAC1BjzB;QACA,IAAMkzB,mBAAmBxuD;QACzB,IAAI,CAACszB,MAAM,GAAG,mBAAKk7B,kBAAqBl7B;QACxC,IAAI,CAACxZ,KAAK,GAAGwZ,OAAOm7B,YAAY;QAChCruD,eAAekzB,OAAOC,aAAa;QACnC,IAAI,CAACyd,QAAQ,GAAG,IAAI,CAACuR,cAAc,CAAC;QACpC,IAAI,CAACtR,QAAQ,GAAGtoB;QAChB,IAAI,CAACqwB,UAAU,GAAG,IAAIlP,iBAAiB,CAAC,CAAC,IAAI,CAACxW,MAAM,CAACC,aAAa,EAAE;YAClE+X,iBAAiB,SAAjBA,gBAAkBvK,QAAQ8J,YAAYmJ;gBACpC,MAAK0a,eAAe,CAAC3tB,QAAQ8J,YAAYmJ;YAC3C;YACApI,eAAe,SAAfA,cAAgB7K,QAAQiT;gBACtB,MAAK2a,cAAc,CAAC5tB,QAAQiT;YAC9B;YACAvI,aAAa,SAAbA;uBAAmB,MAAKkE,OAAO,CAACnE,SAAS;;QAC3C;QACA,IAAI,CAAC+T,QAAQ,GAAG,IAAIhT,gBAAgB,IAAI,CAACjZ,MAAM,EAAE,IAAI,CAACxZ,KAAK;QAC3D,IAAI,CAACm/B,MAAM,GAAG,IAAItH,gBAAgB,IAAI,CAACre,MAAM,EAAE,IAAI,CAACxZ,KAAK,EAAE;YACzD+5B,oBAAoB,SAApBA;uBAA0B,MAAKA,kBAAkB;;YACjDK,qBAAqB,SAArBA,oBAAsBnT,QAAQiT;gBAC5B,MAAK4a,kBAAkB,CACrB7tB,QACAiT,QACAjT,OAAOgB,eAAe,IAAI,OAAOhB,OAAOgB,eAAe,GAAG,MAAM,MAAKkX,MAAM,CAACpE,yBAAyB;YAEzG;YACA8C,mBAAmB,SAAnBA;uBAAyB,MAAKhI,OAAO,CAACmY,4BAA4B;;YAClE7P,mBAAmB,SAAnBA;uBAAyB,MAAKtI,OAAO,CAACmS,eAAe,CAAC;;YACtD5J,YAAY,SAAZA;uBAAmB;oBACjB1M,WAAW,MAAKmE,OAAO,CAACnE,SAAS;oBACjC2M,SAAS,MAAKxI,OAAO,CAACwI,OAAO;oBAC7BnyC,WAAW,MAAKgrC,QAAQ,CAACtrB,WAAW;gBACtC;;QACF;QACA,IAAI,CAAC85B,WAAW,GAAG,IAAInH,iBAAiB,IAAI,CAACv+B,KAAK,EAAE,CAAC,CAAC,IAAI,CAACwZ,MAAM,CAACC,aAAa;QAC/E,IAAI,CAACs7B,SAAS,GAAG,IAAI9V,UAAU,IAAI,CAACzlB,MAAM,EAAE,IAAI,CAACxZ,KAAK,EAAE,IAAI,CAACk/B,UAAU,EAAE,IAAI,CAACC,MAAM,EAAE;YACpFgC,kBAAkB,SAAlBA,iBAAyBnB;;;;;4BAAW,IAAI,CAACmB,gBAAgB,CAACnB;;;;;YAC1D9O,aAAa,SAAbA,YAAcjK,QAAQ90B;uBAAY,MAAK+sC,UAAU,CAAChO,WAAW,CAACjK,QAAQ90B;;YACtEwwC,gCAAgC,SAAhCA,+BAAiC95B;uBAAS,MAAKq2B,UAAU,CAACnN,oCAAoC,CAAClpB;;YAC/Fm6B,gBAAgB,SAAhBA;uBAAsB,MAAK18B,OAAO;;YAClCqrB,aAAa,SAAbA;uBAAmB,MAAKkE,OAAO,CAACnE,SAAS;;YACzC+P,mBAAmB,SAAnBA;uBAAyB,MAAK5L,OAAO,CAAC6Q,cAAc,KAAK;;QAC3D;QACA,IAAI,CAAC7Q,OAAO,GAAG,IAAI2P,oBACjB;YACEhsB,QAAQ,IAAI,CAACA,MAAM;YACnBxZ,OAAO,IAAI,CAACA,KAAK;YACjBgnC,aAAa,SAAbA;uBAAmB,MAAK9P,QAAQ;;YAChCwR,aAAa,SAAbA,YAAcx+C;gBACZ,MAAKgtC,QAAQ,GAAGhtC;YAClB;YACAu+C,gBAAgB,SAAhBA,eAAiBuM;uBAAM,MAAKvM,cAAc,CAACuM;;YAC3CzM,mCAAmC,SAAnCA;uBAAyC,MAAKA,iCAAiC;;YAC/E7uB,cAAc,SAAdA;uBAAoB,MAAKq7B,SAAS,CAACr7B,YAAY;;YAC/CyqB,qBAAqB,SAArBA;uBAA2B,MAAK4Q,SAAS,CAAC5Q,mBAAmB;;YAC7D+N,gBAAgB,SAAhBA,eAAiBhyC;uBAAa,MAAK60C,SAAS,CAAC1Q,aAAa,CAACnkC;;YAC3DqkC,kBAAkB,SAAlBA;uBAAwB,MAAKwQ,SAAS,CAACxQ,gBAAgB;;YACvDxB,mBAAmB,SAAnBA;uBAAyB,MAAKgS,SAAS,CAAChS,iBAAiB;;YACzD/8C,oCAAoC,SAApCA;uBAA0CA;;YAC1CgxC,oBAAoB,SAApBA,mBAAqBjiC,MAAM2hC;uBAAoB,MAAKM,kBAAkB,CAACjiC,MAAM2hC;;YAC7E2Q,WAAW,SAAXA;uBAAiB,MAAKlQ,QAAQ,CAAC1mB,WAAW;;YAC1C62B,iBAAiB,SAAjBA,gBAAkBj3C;uBAAU,MAAK8mC,QAAQ,CAACzmB,WAAW,CAACrgB;;QACxD,GACA,IAAI,CAAC8uC,MAAM,EACX,IAAI,CAACsG,QAAQ,EACb,IAAI,CAACvG,UAAU,EACf,IAAI,CAACwG,WAAW;;;;YAGhBn/C,KAAAA;iBAAJ;gBACE,OAAO,CAAC,CAAC,IAAI,CAACizB,MAAM,CAACC,aAAa;YACpC;;;YACAgvB,KAAAA;mBAAAA,SAAAA,eAAep+B,2BAA2B;oBAOnC;gBANL,IAAI,IAAI,CAAC9jB,KAAK,EAAE;oBACdC,QAAQC,GAAG,CAAC;gBACd;gBACA,OAAOsF,kBAAkB,IAAI,CAACiU,KAAK,EAAE;oBACnCqK,6BAAAA;mBACG,IAAI,CAACmP,MAAM,CAACnI,UAAU,GAAG;oBAAEA,YAAY,IAAI,CAACmI,MAAM,CAACnI,UAAU;gBAAC,IAAI,CAAC,GACnE,EAAA,kBAAA,IAAI,CAAC0jC,SAAS,cAAd,sCAAA,gBAAgB7U,GAAG,IAAG;oBAAEzzC,iBAAiB,IAAI,CAACsoD,SAAS,CAAC7U,GAAG;gBAAC,IAAI,CAAC,GACjE,IAAI,CAAC1mB,MAAM,CAACy7B,qBAAqB,IAAI,OAAO;oBAAErmD,qBAAqB,IAAI,CAAC4qB,MAAM,CAACy7B,qBAAqB;gBAAC,IAAI,CAAC;YAEjH;;;YACAje,KAAAA;mBAAAA,SAAAA,mBAAmBlmB,OAAO,EAAE4lB,eAAe;gBACzC,IAAMO,YAAY,IAAI,CAACwO,QAAQ,CAAChP,gBAAgB,CAACC;gBACjD,OAAO,IAAI,CAAC+O,QAAQ,CAACzO,kBAAkB,CACrClmB,SACAmmB,WACA,IAAI,CAACC,QAAQ,EACb,IAAI,CAACC,QAAQ,EACb,IAAI,CAACtB,OAAO,CAACnE,SAAS;YAE1B;;;YAIMlrB,KAAAA;mBAHN,AAGA,kEAHkE;YAClE,aAAa;YACb,kEAAkE;YAClE,SAAMA;;+BAMK3a,OAQHqpD,mBAmBE7qC;;;;;gCAhCR,IAAI,CAAC,IAAI,CAACmqC,QAAQ,EAAE;oCAClB,IAAI,CAACW,MAAM;gCACb;;;;;;;;;gCAEE;;oCAAM,IAAI,CAAC1P,QAAQ,CAACnS,oBAAoB;;;gCAAxC;;;;;;gCACOznC;gCACP,IAAI,IAAI,CAACtF,KAAK,EAAE;oCACdC,QAAQiK,IAAI,CACV,6DACA5E;gCAEJ;;;;;;gCAEIqpD,oBAAoB,IAAI,CAAC17B,MAAM,CAAC6d,YAAY,GAAG,IAAI,CAACoO,QAAQ,CAAC1O,oBAAoB,KAAK,KAAK;gCACjGjS,sBAAsBjlB,KAAK,CAAC;2CAAO,CAAC;mCAAI0gB,IAAI,CAAC,SAACwE;wCAStB;oCARtB,MAAK0gB,QAAQ,CAAC7S,cAAc,GAAG7N;oCAC/B,IAAMhzB,QAAQ,MAAKiO,KAAK,CAACjO,KAAK;oCAC9B,OAAO,MAAKolC,QAAQ,CAACnoB,aAAa,CAAC;wCACjCnO,YAAY,MAAKb,KAAK,CAACo1C,WAAW,IAAI,MAAKp1C,KAAK,CAAC3N,WAAW,IAAI;wCAChEyO,aAAa,MAAKd,KAAK,CAAC4+B,YAAY,IAAI,MAAK5+B,KAAK,CAAC1N,YAAY,IAAI;wCACnE+c,gBAAgB,CAAC,CAAC,MAAKmK,MAAM,CAAC+d,QAAQ;wCACtCjoB,iBAAiBvd;wCACjBwd,cAAcxd,QAAQ,IAAI,MAAKiO,KAAK,CAACzT,MAAM;wCAC3CijB,kBAAkB,GAAE,8BAAA,MAAKgK,MAAM,CAAC3R,cAAc,cAA1B,yCAAA,8BAA8B;uCAC/CqtC,oBAAoB;wCAAEzlC,gBAAgBylC;oCAAkB,IAAI,CAAC,GAC7DnwB,QAAQS,cAAc,IAAI,OAAO;wCAAE/W,cAAcsW,QAAQS,cAAc;oCAAC,IAAI,CAAC;gCAEpF,GAAG3lB,KAAK,CAAC,YACT;gCACA,IAAI,CAAC4lC,QAAQ,CAAChO,kBAAkB;qCAC5B,IAAI,CAACsd,SAAS,CAACpV,kBAAkB,CAAC;2CAAM,MAAKC,aAAa;oCAA1D;;;;gCACF;;oCAAM,IAAI,CAACmV,SAAS,CAACjV,cAAc;;;gCAAnC;gCACMz1B,8BAA8B,IAAI,CAACk+B,iCAAiC;gCAC1E,IAAI,IAAI,CAAChiD,KAAK,EAAE;oCACdC,QAAQC,GAAG,CAAC,mDAAmD;wCAC7Du5C,QAAQ,IAAI,CAAC+U,SAAS,CAACr7B,YAAY;wCACnCrP,6BAAAA;oCACF;gCACF;gCACA,IAAI,CAAC6sB,QAAQ,CAAC5wB,OAAO;gCACrB,IAAI,CAAC4wB,QAAQ,GAAG,IAAI,CAACuR,cAAc,CAACp+B;gCACpC,IAAI,CAAC6sB,QAAQ,CAAC3sB,UAAU;gCACxB;;;;gCAEF,IAAI,CAACwqC,SAAS,CAAC9U,QAAQ;;;;;;gBACzB;;;;YACMkB,KAAAA;mBAAN,SAAMA,iBAAiBnB,MAAM;;wBAQnBqV,YAaAtV;;wBApBR,IAAI,IAAI,CAACgV,SAAS,CAACzV,mBAAmB,EAAE;4BACtC,IAAI,IAAI,CAAC/4C,KAAK,EAAE;gCACdC,QAAQC,GAAG,CAAC;4BACd;4BACA;;;wBACF;wBACA,IAAI,CAAC,IAAI,CAACg/C,QAAQ,CAACtS,aAAa,MAAM,CAAC6M,UAAU,IAAI,CAACyF,QAAQ,CAAC/S,UAAU,CAAC1oC,MAAM,KAAK,KAAK,IAAI,CAACy7C,QAAQ,CAAC3R,aAAa,EAAE;4BAC/GuhB,aAAa;4BACnB,IAAI,CAAC,IAAI,CAAC5P,QAAQ,CAAC9S,oBAAoB,CAAClpC,GAAG,CAAC4rD,aAAa;gCACvD,IAAI,CAAC5P,QAAQ,CAAC/S,UAAU;oCACtB;wCAAEjhC,IAAI4jD;wCAAYtgB,aAAa;wCAAGh4B,YAAY,IAAI,CAAC0oC,QAAQ,CAAC3R,aAAa;oCAAC;;gCAE5E,IAAI,IAAI,CAACvtC,KAAK,EAAE;oCACdC,QAAQC,GAAG,CACT;gCAEJ;4BACF;wBACF;wBACA,IAAI,IAAI,CAACF,KAAK,EAAE;4BACRw5C,aAAa,IAAI,CAACwI,iCAAiC,KAAK,iDAAiD;4BAC/G/hD,QAAQC,GAAG,CAAC,iDAAiD;gCAC3Du5C,QAAAA;gCACA55C,gBAAgB,IAAI,CAACozB,MAAM,CAACpzB,cAAc;gCAC1C25C,YAAAA;4BACF;wBACF;wBACA,IAAI,IAAI,CAAClK,OAAO,CAACgT,aAAa,IAAI;4BAChCriD,QAAQC,GAAG,CAAC,mCAAmC;gCAC7C2C,QAAQ;gCACR++C,OAAO,IAAI,CAACtS,OAAO,CAACiT,YAAY;4BAClC;4BACA;;;wBACF;wBACA,IAAI,IAAI,CAACviD,KAAK,EAAE;4BACdC,QAAQC,GAAG,CAAC,2BAA2B;gCAAE2C,QAAQ;gCAAmB++C,OAAO;4BAAO;wBACpF;wBACA,IAAI,CAACjR,QAAQ,CAAC5wB,OAAO;wBACrB,IAAI,CAAC4wB,QAAQ,GAAG,IAAI,CAACuR,cAAc,CAAC,IAAI,CAACF,iCAAiC;wBAC1E,IAAI,CAACrR,QAAQ,CAAC3sB,UAAU;;;;;gBAC1B;;;;YACA4qC,KAAAA;mBAAAA,SAAAA;;gBACE,IAAI,IAAI,CAACX,QAAQ,EAAE;gBACnB,IAAI,CAACA,QAAQ,GAAG;gBAChB,IAAI,CAACx0C,KAAK,CAACu3B,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC/d,MAAM,CAAC+d,QAAQ;gBAC5C,IAAI,CAACv3B,KAAK,CAACjO,KAAK,GAAG,CAAC,CAAC,IAAI,CAACynB,MAAM,CAACznB,KAAK;gBACtC,IAAI,CAACmlC,QAAQ,CAAC3sB,UAAU;gBACxB,IAAI,CAAC2sB,QAAQ,CAAC/qB,wBAAwB,CAAC,IAAI,CAACnM,KAAK,CAACjO,KAAK,EAAE,IAAI,CAACiO,KAAK,CAACzT,MAAM;gBAC1E,IAAI,CAACspC,OAAO,CAACkR,uBAAuB;gBACpC,IAAI,CAAC/mC,KAAK,CAACiD,gBAAgB,CAAC,QAAQ;oBAClC,IAAI,CAAC,MAAKwxC,kBAAkB,IAAI,CAAC,MAAKvd,QAAQ,CAACtrB,WAAW,IAAI;wBAC5D,MAAK6oC,kBAAkB,GAAG;wBAC1B,MAAKtd,QAAQ,CAAC5mB,iBAAiB;oBACjC;gBACF;gBACA,IAAI,CAAC+kC,YAAY,GAAG;oBAClB,IAAI,MAAKb,kBAAkB,EAAE;wBAC3B,MAAKA,kBAAkB,GAAG;wBAC1B,MAAKtd,QAAQ,CAAC3mB,eAAe;oBAC/B;oBACA,MAAK+kC,YAAY;gBACnB;gBACA,IAAI,CAACv1C,KAAK,CAACiD,gBAAgB,CAAC,SAAS,IAAI,CAACqyC,YAAY;gBACtD,IAAI,CAACt1C,KAAK,CAACiD,gBAAgB,CAAC,aAAa,SAACrB;oBACxC,MAAKu1B,QAAQ,CAACzmB,WAAW,CAAC9O;gBAC5B;gBACA,IAAI,CAAC5B,KAAK,CAACiD,gBAAgB,CAAC,cAAc,SAACrB;oBACzC,MAAKu1B,QAAQ,CAACzmB,WAAW,CAAC9O;gBAC5B;gBACA,IAAI,CAAC4zC,iBAAiB,GAAG;oBACvB,MAAKh1C,YAAY,CAAC,MAAKR,KAAK,CAAC5N,WAAW;gBAC1C;gBACA,IAAI,CAAC4N,KAAK,CAACiD,gBAAgB,CAAC,cAAc,IAAI,CAACuyC,iBAAiB;gBAChE,IAAI,CAACC,cAAc,GAAG;oBACpB,IAAI,MAAKV,SAAS,CAAC3V,aAAa,IAAI,MAAK2V,SAAS,CAAC1V,kBAAkB,IAAI,CAAC,MAAKnI,QAAQ,CAACtrB,WAAW,IAAI;wBACrG,IAAI,MAAKrlB,KAAK,EAAE;4BACdC,QAAQC,GAAG,CACT,6DACA,MAAKsuD,SAAS,CAAC1V,kBAAkB;wBAErC;wBACA,IAAMjtC,cAAc,MAAK4N,KAAK,CAAC5N,WAAW;wBAC1C,IAAMsjD,YAAY,MAAK11C,KAAK,CAACuC,MAAM;wBACnC,MAAKvC,KAAK,CAACnM,GAAG,GAAG,MAAKkhD,SAAS,CAAC1V,kBAAkB;wBAClD,MAAKr/B,KAAK,CAAC5N,WAAW,GAAGA;wBACzB,IAAI,CAACsjD,WAAW;4BACd,MAAK11C,KAAK,CAACmG,IAAI,GAAGtG,KAAK,CAAC,YACxB;wBACF;oBACF;gBACF;gBACA,IAAI,CAACG,KAAK,CAACiD,gBAAgB,CAAC,WAAW,IAAI,CAACwyC,cAAc;YAC5D;;;YACAlN,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,IAAI,CAAC/uB,MAAM,CAACnzB,qBAAqB,EAAE;oBACrC,OAAO;gBACT;gBACA,IAAI,IAAI,CAAC0uD,SAAS,CAACr7B,YAAY,EAAE;oBAC/B,OAAO;gBACT;gBACA,IAAM9c,WAAW,IAAI,CAACoD,KAAK,CAACpD,QAAQ;gBACpC,IAAI,CAACxV,OAAOC,QAAQ,CAACuV,aAAaA,aAAa+4C,UAAU;oBACvD,OAAO;gBACT;gBACA,OAAO;YACT;;;YACA,kEAAkE;YAClE,gCAAgC;YAChC,kEAAkE;YAClEd,KAAAA;mBAAAA,SAAAA,eAAe5tB,MAAM,EAAEiT,MAAM;gBAC3B,IAAI,IAAI,CAAC3zC,KAAK,EAAE;oBACdC,QAAQC,GAAG,CAAC,oDAAoD;wBAC9DqL,MAAMm1B,OAAOn1B,IAAI;wBACjBk2B,YAAYf,OAAOe,UAAU;wBAC7BC,iBAAiBhB,OAAOgB,eAAe;wBACvC71B,aAAa,IAAI,CAAC4N,KAAK,CAAC5N,WAAW;wBACnCgxB,KAAK6D,OAAO7D,GAAG;wBACfqe,mBAAmB,CAAC,CAAC,IAAI,CAAC5L,OAAO,CAAC6Q,cAAc;oBAClD;gBACF;gBACA,IAAIzf,OAAOn1B,IAAI,KAAK,SAAS;wBA2BJ;wBAF4D;oBAxBnF,IAAI,IAAI,CAAC+jC,OAAO,CAACnE,SAAS,EAAE;wBAC1B,IAAIzK,OAAOgB,eAAe,IAAI,MAAM;4BAClC,IAAM2tB,gBAAgB3uB,OAAOgB,eAAe,GAAG;4BAC/C,IAAI,IAAI,CAACkX,MAAM,CAACpE,yBAAyB,IAAI,QAAQ6a,gBAAgB,IAAI,CAACzW,MAAM,CAACpE,yBAAyB,EAAE;gCAC1G,IAAI,CAACoE,MAAM,CAACrE,0BAA0B,CAAC8a;gCACvC,IAAI,CAACzW,MAAM,CAACjE,6BAA6B;gCACzC,IAAI,IAAI,CAAC30C,KAAK,EAAE;oCACdC,QAAQC,GAAG,CACT,AAAC,6EAA2G,OAA/BmvD,eAAc,mBAAyD,OAAxC,IAAI,CAACzW,MAAM,CAAChE,yBAAyB,IAAG;gCAExJ;4BACF;wBACF;wBACA;oBACF;oBACA,IAAI,CAAC,IAAI,CAACtF,OAAO,CAAC+P,2BAA2B,EAAE;wBAC7C,IAAI,CAAC/P,OAAO,CAAC+P,2BAA2B,GAAG;wBAC3C,IAAMiQ,gBAAgB,CAAC;wBACvB,IAAI5uB,OAAOgB,eAAe,IAAI,MAAM4tB,cAAc5tB,eAAe,GAAGhB,OAAOgB,eAAe;wBAC1F,IAAIhB,OAAOe,UAAU,IAAI,MAAM6tB,cAAc7tB,UAAU,GAAGf,OAAOe,UAAU;wBAC3EzJ,qBAAqB,IAAI,CAAC/E,MAAM,CAACnI,UAAU,EAAE;4BAAEtX,QAAQ;4BAAU2iB,WAAW,CAAC,aAAa,GAAG,IAAIr0B,QAAQC,WAAW;2BAAOutD,gBAAiBt8B,sBAAsB,IAAI,CAACC,MAAM,GAAG3Z,KAAK,CAAC,YACtL;oBACF;oBACA,IAAMi2C,mBAAmB,IAAI,CAACjgB,OAAO,CAAC6Q,cAAc,IAAI,IAAI,CAAC7Q,OAAO,CAAC6Q,cAAc,CAACiD,QAAQ,CAAC3/C,MAAM,GAAG;oBACtG,IAAMssC,aAAarP,OAAOgB,eAAe,IAAI,OAAOhB,OAAOgB,eAAe,GAAG,MAAM,EAAA,+BAAA,IAAI,CAAC4N,OAAO,CAAC6Q,cAAc,cAA3B,mDAAA,6BAA6Bzf,MAAM,CAACgB,eAAe,KAAI,OAAO,IAAI,CAAC4N,OAAO,CAAC6Q,cAAc,CAACzf,MAAM,CAACgB,eAAe,GAAG,MAAM,KAAK;oBACjN,IAAM8tB,aAAa/uB,sBAAsBC;oBACzC,IAAM+uB,kBAAiB,oCAAA,IAAI,CAACx8B,MAAM,CAACy8B,oBAAoB,cAAhC,+CAAA,oCAAoC;oBAC3D,IAAI,IAAI,CAAC1vD,KAAK,EAAE;wBACdC,QAAQC,GAAG,CAAC,8CAA8C;4BACxDyvD,kBAAkBH;4BAClBC,gBAAAA;4BACAG,QAAQ,OAAOlvB,OAAOe,UAAU,KAAK;4BACrC8tB,kBAAAA;wBACF;oBACF;oBACA,IAAIC,cAAcC,gBAAgB;wBAChC,IAAI,IAAI,CAACzvD,KAAK,EAAE;4BACdC,QAAQC,GAAG,CACT,AAAC,mEAAiH,OAA/CqvD,mBAAmB,yBAAyB;wBAEnH;wBACA,IAAI,CAAC3W,MAAM,CAAChF,iBAAiB;wBAC7B,IAAI,CAAC2a,kBAAkB,CAAC7tB,QAAQiT,QAAQ5D;oBAC1C,OAAO,IAAI,OAAOrP,OAAOe,UAAU,KAAK,UAAU;4BACpC;wBAAZ,IAAMkO,OAAM,gCAAA,IAAI,CAAC1c,MAAM,CAAC2c,gBAAgB,cAA5B,2CAAA,gCAAgC;wBAC5C,IAAMH,QAAQ,IAAI,CAACh2B,KAAK,CAAC5N,WAAW,GAAG;wBACvC,IAAMgkD,kBAAkBpgB,QAAQ,IAAI,CAACmJ,MAAM,CAACnH,aAAa;wBACzD,IAAM6C,UAAU9zC,KAAKC,KAAK,CAACigC,OAAOe,UAAU,GAAG,MAAMouB;wBACrD,IAAI,IAAI,CAAC7vD,KAAK,EAAE;4BACdC,QAAQC,GAAG,CAAC,yDAAyD;gCACnEuvC,OAAAA;gCACAogB,iBAAAA;gCACAC,aAAapvB,OAAOe,UAAU,GAAG;gCACjC6S,SAAAA;gCACAyb,WAAWpgB;4BACb;wBACF;wBACA,IAAI2E,UAAU3E,KAAK;4BACjB,IAAI,IAAI,CAAC3vC,KAAK,EAAE;gCACdC,QAAQC,GAAG,CAAC,AAAC,kDAAyD,OAARo0C,SAAQ;4BACxE;4BACA,IAAI,CAACsE,MAAM,CAACpE,yBAAyB,GAAGzE;4BACxC,IAAI,CAAC4I,UAAU,CAACxO,uBAAuB,GAAGwJ;4BAC1C,IAAI,CAACiF,MAAM,CAACnF,iBAAiB,CAACa,SAAS5T,QAAQiT;wBACjD,OAAO;4BACL,IAAI,IAAI,CAAC3zC,KAAK,EAAE;gCACdC,QAAQC,GAAG,CAAC;4BACd;4BACA,IAAI,CAAC04C,MAAM,CAAChF,iBAAiB;4BAC7B,IAAI,CAAC2a,kBAAkB,CAAC7tB,QAAQiT,QAAQ5D;wBAC1C;oBACF,OAAO;wBACL,IAAI,IAAI,CAAC/vC,KAAK,EAAE;4BACdC,QAAQC,GAAG,CAAC;wBACd;wBACA,IAAI,CAAC04C,MAAM,CAAChF,iBAAiB;wBAC7B,IAAI,CAAC2a,kBAAkB,CAAC7tB,QAAQiT,QAAQ5D;oBAC1C;oBACA;gBACF;gBACA,IAAIrP,OAAOn1B,IAAI,KAAK,cAAc,IAAI,CAAC+jC,OAAO,CAACnE,SAAS,EAAE;oBACxD,IAAIzK,OAAOgB,eAAe,IAAI,MAAM;wBAClC,IAAI,CAACkX,MAAM,CAACrE,0BAA0B,CAAC7T,OAAOgB,eAAe,GAAG;oBAClE;oBACA,IAAI,CAACkX,MAAM,CAACjE,6BAA6B;oBACzC;gBACF;gBACA,IAAIjU,OAAOn1B,IAAI,KAAK,OAAO;oBACzB,IAAI,CAAC,IAAI,CAACkO,KAAK,CAACjO,KAAK,EAAE;wBACrB,IAAI,CAACiO,KAAK,CAACjO,KAAK,GAAG;wBACnB,IAAI,IAAI,CAACxL,KAAK,EAAE;4BACdC,QAAQC,GAAG,CAAC;wBACd;oBACF;oBACA,IAAMqgD,YAAY,IAAI,CAAC3H,MAAM,CAAChD,gBAAgB;oBAC9C,IAAMjwC,YAAY,IAAI,CAACgrC,QAAQ,CAACtrB,WAAW;oBAC3C,IAAI,IAAI,CAACrlB,KAAK,EAAE;wBACdC,QAAQC,GAAG,CAAC,wDAAwD;4BAClEqgD,WAAAA;4BACA56C,WAAAA;4BACAqqD,aAAa,IAAI,CAAC1gB,OAAO,CAACiT,YAAY;4BACtC0N,iBAAiB,IAAI,CAACrX,MAAM,CAAC/G,oBAAoB,KAAK;wBACxD;oBACF;oBACA,IAAI,CAAC+G,MAAM,CAAClE,yBAAyB,GAAG5yC,KAAKqV,GAAG;oBAChD,IAAI,CAACyhC,MAAM,CAAChF,iBAAiB;oBAC7B,IAAI,CAACgF,MAAM,CAACvF,gBAAgB;oBAC5B,IAAI1tC,WAAW;wBACb,IAAI,CAAC2pC,OAAO,CAACiY,mBAAmB,CAAC;wBACjC,IAAI,CAAC5W,QAAQ,CAACzrB,IAAI,GAAG5L,KAAK,CAAC,YAC3B;oBACF;oBACA,IAAI,CAACg2B,OAAO,CAAC+V,mBAAmB,CAAC;oBACjC;gBACF;YACF;;;YACAkJ,KAAAA;mBAAAA,SAAAA,mBAAmB7tB,MAAM,EAAEiT,MAAM,EAAE5D,UAAU;gBAC3C,IAAI,IAAI,CAACT,OAAO,CAACgT,aAAa,IAAI;oBAChC,IAAI,IAAI,CAACtiD,KAAK,EAAE;wBACdC,QAAQC,GAAG,CAAC,mFAAmF;4BAC7F0hD,OAAO,IAAI,CAACtS,OAAO,CAACiT,YAAY;4BAChC5O,QAAAA;wBACF;oBACF;oBACA;gBACF;gBACA,IAAI,CAACrE,OAAO,CAACnE,SAAS,GAAG;gBACzB,IAAI,CAACwN,UAAU,CAAC1O,oBAAoB,GAAG0J,mBAAAA,oBAAAA,SAAU,IAAI,CAACgF,UAAU,CAAC5O,mBAAmB;gBACpF,IAAI,CAAC4O,UAAU,CAACxO,uBAAuB,GAAG,KAAK;gBAC/C,IAAI,CAACyO,MAAM,CAACnE,8BAA8B,GAAG,IAAI,CAACmE,MAAM,CAACzE,gCAAgC,CAACzT;gBAC1F,IAAI,CAACkY,MAAM,CAACrE,0BAA0B,CAACxE;gBACvC,IAAI,CAACT,OAAO,CAACuT,aAAa,CAACniB;gBAC3B,IAAI,CAACkY,MAAM,CAACjE,6BAA6B;YAC3C;;;YACAnB,KAAAA;mBAAAA,SAAAA;oBAKe,qCAIU;gBARvB,IAAI,CAAC,IAAI,CAAClE,OAAO,CAACnE,SAAS,EAAE;gBAC7B,IAAMxlC,YAAY,IAAI,CAACgrC,QAAQ,CAACtrB,WAAW;gBAC3C,IAAM6qC,kBAAkB1vD,KAAKsF,GAAG,CAC9B,KACAtF,KAAKC,KAAK,EAAC,sCAAA,IAAI,CAACwyB,MAAM,CAACk9B,sBAAsB,cAAlC,iDAAA,sCAAsC;gBAEnD,IAAMC,uBAAuB,IAAI,CAACn9B,MAAM,CAACo9B,qBAAqB;gBAC9D,IAAMC,iBAAiB,OAAOF,yBAAyB,YAAYA,uBAAuB,IAAIA,uBAAuB;gBACrH,IAAMvb,kBAAiB,wCAAA,IAAI,CAAC+D,MAAM,CAAC9D,wBAAwB,gBAApC,mDAAA,wCAA0ChzC,KAAKqV,GAAG;gBACzE,IAAMo5C,YAAY/vD,KAAKsF,GAAG,CAAC,GAAGhE,KAAKqV,GAAG,KAAK09B;gBAC3C,IAAM2b,sBAAsB7qD,aAAa4qD,YAAYD;gBACrD,IAAIE,qBAAqB;oBACvB,IAAI,CAAC5X,MAAM,CAACzF,uBAAuB,CAAC+c;oBACpC;gBACF;gBACA,IAAI,IAAI,CAAClwD,KAAK,EAAE;oBACdC,QAAQC,GAAG,CACT,AAAC,8DAAuE,OAAVqwD,WAAU;gBAE5E;gBACA,IAAI5qD,WAAW;oBACb,IAAI,CAAC2pC,OAAO,CAACiY,mBAAmB,CAAC;oBACjC,IAAI,CAAC5W,QAAQ,CAACzrB,IAAI,GAAG5L,KAAK,CAAC,YAC3B;gBACF;gBACA,IAAI,CAACg2B,OAAO,CAAC+V,mBAAmB,CAAC;YACnC;;;YACA,kEAAkE;YAClE,eAAe;YACf,kEAAkE;YAClEgJ,KAAAA;mBAAAA,SAAAA,gBAAgB3tB,MAAM,EAAE8J,UAAU,EAAEmJ,MAAM;gBACxC,IAAI,IAAI,CAACrE,OAAO,CAAC6Q,cAAc,IAAI,IAAI,CAAC7Q,OAAO,CAACnE,SAAS,EAAE;gBAC3D,IAAMmV,cAAc,IAAI,CAACpB,QAAQ,CAAC3R,aAAa;gBAC/C,IAAI,CAAC+S,aAAa;oBAChB,IAAI,IAAI,CAACtgD,KAAK,EAAEC,QAAQiK,IAAI,CAAC;oBAC7B;gBACF;gBACA,IAAI,CAACg1C,QAAQ,CAACjP,aAAa;gBAC3B,IAAI,CAACiP,QAAQ,CAAC3S,qBAAqB,GAAG;gBACtC,IAAM4D,kBAAkBzP,OAAOgB,eAAe,IAAI,OAAOhB,OAAOgB,eAAe,GAAG,MAAM,KAAK;gBAC7F,IAAM+uB,gBAAgB;oBAAC,IAAI,CAAChgB,kBAAkB,CAAC6P,aAAanQ;iBAAiB;gBAC7E,IAAI,CAACb,OAAO,CAAC6Q,cAAc,GAAG;oBAC5Bzf,QAAAA;mBACG8J,eAAe,KAAK,IAAI;oBAAEkmB,sBAAsBlmB;gBAAW,IAAI,CAAC;oBACnE4Y,UAAUqN;oBACVE,YAAY;oBACZC,gBAAgB9uD,KAAKqV,GAAG;;gBAE1B,IAAI,CAACwhC,UAAU,CAAC5O,mBAAmB,GAAG4J;gBACtC,IAAI,CAACrE,OAAO,CAAC+P,2BAA2B,GAAG;gBAC3C,IAAMiQ,gBAAgB,CAAC;gBACvB,IAAI5uB,OAAOgB,eAAe,IAAI,MAAM4tB,cAAc5tB,eAAe,GAAGhB,OAAOgB,eAAe;gBAC1F,IAAIhB,OAAOe,UAAU,IAAI,MAAM6tB,cAAc7tB,UAAU,GAAGf,OAAOe,UAAU;gBAC3E,IAAI+I,eAAe,KAAK,GAAG8kB,cAAcoB,oBAAoB,GAAGlmB;gBAChExS,qBAAqB,IAAI,CAAC/E,MAAM,CAACnI,UAAU,EAAE;oBAAEtX,QAAQ;oBAAU2iB,WAAW,CAAC,aAAa,GAAG,IAAIr0B,QAAQC,WAAW;mBAAOutD,gBAAiBt8B,sBAAsB,IAAI,CAACC,MAAM,GAAG3Z,KAAK,CAAC,YACtL;gBACA,IAAI,IAAI,CAACtZ,KAAK,EAAE;oBACdC,QAAQC,GAAG,CAAC;gBACd;YACF;;;YACA,kEAAkE;YAClE,6BAA6B;YAC7B,kEAAkE;YAClE+Z,KAAAA;mBAAAA,SAAAA,aAAa42C,cAAc;;gBACzB,IAAI,IAAI,CAAC3R,QAAQ,CAAC/S,UAAU,CAAC1oC,MAAM,KAAK,GAAG;gBAC3C,IAAI,IAAI,CAACktC,QAAQ,CAACtrB,WAAW,MAAM,IAAI,CAACiqB,OAAO,CAACnE,SAAS,EAAE;gBAC3D,IAAMsE,QAAQohB,iBAAiB;gBAC/B,IAAMC,cAAc,IAAI,CAAC5R,QAAQ,CAACpP,gBAAgB,CAACL;gBACnD,IAAIqhB,aAAa;oBACf,KAAK,IAAI,CAACC,iBAAiB,CAACD,aAAarhB,OAAOn2B,KAAK,CAAC,SAAChU;wBACrD,IAAI,MAAKtF,KAAK,EAAE;4BACdC,QAAQiK,IAAI,CAAC,4DAA4D5E;wBAC3E;oBACF;gBACF;YACF;;;YACA0pD,KAAAA;mBAAAA,SAAAA;;gBACE,IAAI,IAAI,CAAC9P,QAAQ,CAAC/S,UAAU,CAAC1oC,MAAM,KAAK,GAAG;gBAC3C,IAAI,IAAI,CAACktC,QAAQ,CAACtrB,WAAW,MAAM,IAAI,CAACiqB,OAAO,CAACnE,SAAS,EAAE;gBAC3D,IAAM4E,aAAalvC,OAAOC,QAAQ,CAAC,IAAI,CAAC2Y,KAAK,CAACpD,QAAQ,IAAI7V,KAAKC,KAAK,CAAC,IAAI,CAACgZ,KAAK,CAACpD,QAAQ,GAAG,OAAO;gBAClG,IAAM26C,WAAW,IAAI,CAAC9R,QAAQ,CAAC/S,UAAU,CAAC8kB,IAAI,CAC5C,SAAC1gD;2BAAMA,EAAEi+B,WAAW,KAAK,CAAC,KAAK,CAAC,MAAK0Q,QAAQ,CAAC9S,oBAAoB,CAAClpC,GAAG,CAAC,MAAKg8C,QAAQ,CAAC7P,aAAa,CAAC9+B;;gBAErG,IAAIygD,UAAU;oBACZ,KAAK,IAAI,CAACD,iBAAiB,CAACC,UAAUjhB,YAAYz2B,KAAK,CAAC,SAAChU;wBACvD,IAAI,MAAKtF,KAAK,EAAE;4BACdC,QAAQiK,IAAI,CAAC,6DAA6D5E;wBAC5E;oBACF;gBACF;YACF;;;YACMyrD,KAAAA;mBAAN,SAAMA,kBAAkBzhB,OAAO,EAAEG,KAAK;;wBAKjBH,qBAJbxyC,KAEA+yC,cAEAE,YACAmhB,OACAC,UAGEC,MAEAC,OACAC,MAYGhsD;;;;gCAxBLxI,MAAM,IAAI,CAACoiD,QAAQ,CAAC7P,aAAa,CAACC;gCACxC,IAAI,IAAI,CAAC4P,QAAQ,CAAC9S,oBAAoB,CAAClpC,GAAG,CAACpG,MAAM;;;gCAC3C+yC,eAAe,IAAI,CAACqP,QAAQ,CAAC3P,mBAAmB,CAACD;gCACvD,IAAIO,gBAAgB,MAAM;;;gCACpBE,cAAaT,sBAAAA,QAAQS,UAAU,cAAlBT,iCAAAA,sBAAsB;gCACnC4hB,QAAQrhB,eAAeE;gCACvBohB,WAAWphB,aAAa,IAAIN,SAASI,gBAAgBJ,QAAQyhB,QAAQzhB,SAASI;qCAChFshB,UAAAA;;;;gCACF,IAAI,CAACjS,QAAQ,CAAC9S,oBAAoB,CAACv/B,GAAG,CAAC/P;gCACjCs0D,OAAO,IAAI,CAAClS,QAAQ,CAAClP,sBAAsB,CAACV;gCAClD,IAAI,CAAC8hB,QAAQA,KAAK3tD,MAAM,KAAK,GAAG;;;gCAC1B4tD,QAAQD,IAAI,CAAC,EAAE;gCACfE,OAAOF,KAAK/gC,KAAK,CAAC;gCACxB,IAAI,CAACif,OAAO,CAACwQ,UAAU,GAAGwR;gCAC1B,IAAI,CAAC3gB,QAAQ,CAAC/qB,wBAAwB,CAAC,IAAI,CAACnM,KAAK,CAACjO,KAAK,EAAE,IAAI,CAACiO,KAAK,CAACzT,MAAM;gCAC1E,IAAI,CAACspC,OAAO,CAACwI,OAAO,GAAG;gCACvB,IAAI,CAACxI,OAAO,CAACnE,SAAS,GAAG;gCACzB,IAAI,CAACyN,MAAM,CAACnE,8BAA8B,GAAG3yC,KAAKqV,GAAG;gCACrD,IAAI44B,aAAa,GAAG;oCAClB,IAAI,CAAC6I,MAAM,CAACrE,0BAA0B,CAACxE;gCACzC;gCACA,IAAI,CAACT,OAAO,CAACkT,cAAc,CAAC1lD;;;;;;;;;gCAE1B;;oCAAM,IAAI,CAACwyC,OAAO,CAACiW,YAAY,CAAC8L,OAAO;;;gCAAvC;;;;;;gCACO/rD;gCACP,IAAI,IAAI,CAACtF,KAAK,EAAE;oCACdC,QAAQiK,IAAI,CAAC,mDAAmD5E;gCAClE;gCACA,IAAI,CAACgqC,OAAO,CAACkW,2BAA2B;;;;;;;;;;;gBAG9C;;;;YACA,kEAAkE;YAClE,cAAc;YACd,kEAAkE;YAClE+L,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAAC3Y,MAAM,CAAC9G,cAAc;YACnC;;;YACA0f,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAAC5Y,MAAM,CAAC7G,eAAe;YACpC;;;YACA0f,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAAC7Y,MAAM,CAAChD,gBAAgB;YACrC;;;YACAvwB,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAACiqB,OAAO,CAACnE,SAAS,IAAI,IAAI,CAACwF,QAAQ,CAACtrB,WAAW;YAC5D;;;YACAqsC,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAACpiB,OAAO,CAACwI,OAAO;YAC7B;;;YACAuB,KAAAA;mBAAAA,SAAAA;gBACE,IAAMt2C,MAAM,IAAI,CAACkwB,MAAM,CAAC3lB,GAAG,CAAC9C,WAAW;gBACvC,IAAIzH,IAAI2N,QAAQ,CAAC,YAAY3N,IAAI2N,QAAQ,CAAC,YAAY3N,IAAI2N,QAAQ,CAAC,kCAAkC;oBACnG,OAAO;gBACT;gBACA,OAAO;YACT;;;YACAihD,KAAAA;mBAAAA,SAAAA;oBAK4C;gBAJ1C,IAAMxtB,aAAa,IAAI,CAACkV,aAAa;gBACrC,IAAIlV,eAAe,SAAS;wBACjB;oBAAT,OAAO,GAAE,mCAAA,IAAI,CAAClR,MAAM,CAAC2+B,kBAAkB,cAA9B,8CAAA,mCAAkC;gBAC7C;gBACA,OAAO,CAAC,CAAE,CAAA,IAAI,CAAC3+B,MAAM,CAACpzB,cAAc,IAAI,GAAE,kCAAA,IAAI,CAACozB,MAAM,CAAC2+B,kBAAkB,cAA9B,6CAAA,kCAAkC,MAAK;YACnF;;;YACAnY,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAAC+U,SAAS,CAACr7B,YAAY;YACpC;;;YACAupB,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAAC8R,SAAS,CAAC9R,kBAAkB;YAC1C;;;YACI0R,KAAAA;iBAAJ;gBACE,OAAO,IAAI,CAAC30C,KAAK;YACnB;;;YACA2kC,KAAAA;mBAAAA,SAAAA;gBACEA,WAAW,IAAI,CAAC3kC,KAAK,EAAE,IAAI,CAACk3B,QAAQ,EAAE,IAAI,CAAC3wC,KAAK;YAClD;;;YACAu+C,KAAAA;mBAAAA,SAAAA;gBACE,OAAOA,iBAAiB,IAAI,CAAC9kC,KAAK,EAAE,IAAI,CAACzZ,KAAK;YAChD;;;YACAy+C,KAAAA;mBAAAA,SAAAA;gBACE,OAAOA,QAAQ,IAAI,CAAChlC,KAAK,EAAE,IAAI,CAACk3B,QAAQ;YAC1C;;;YACA+N,KAAAA;mBAAAA,SAAAA,UAASlzC,KAAK;gBACZkzC,SAAS,IAAI,CAACjlC,KAAK,EAAE,IAAI,CAACk3B,QAAQ,EAAEnlC,OAAO,IAAI,CAACxL,KAAK;YACvD;;;YACA2+C,KAAAA;mBAAAA,SAAAA,WAAU34C,MAAM;gBACd24C,UAAU,IAAI,CAACllC,KAAK,EAAE,IAAI,CAACk3B,QAAQ,EAAE3qC,QAAQ,IAAI,CAAChG,KAAK;YACzD;;;YACA6+C,KAAAA;mBAAAA,SAAAA;gBACE,OAAOA,UAAU,IAAI,CAACplC,KAAK,EAAE,IAAI,CAACk3B,QAAQ;YAC5C;;;YACAmO,KAAAA;mBAAAA,SAAAA;gBACE,OAAOA;YACT;;;YACAr5B,KAAAA;mBAAAA,SAAAA;gBACEs5B,aAAa,IAAI,CAACtlC,KAAK,EAAE,IAAI,CAACk3B,QAAQ,EAAE,IAAI,CAAC3wC,KAAK;YACpD;;;YACA,kEAAkE;YAClE,WAAW;YACX,kEAAkE;YAClE+f,KAAAA;mBAAAA,SAAAA;oBAmBE;gBAlBA,IAAI,CAACuvB,OAAO,CAACmW,sBAAsB;gBACnC,IAAI,CAAC7M,MAAM,CAAC74B,OAAO;gBACnB,IAAI,CAACuvB,OAAO,CAAC8S,mBAAmB;gBAChC,IAAI,CAACjD,WAAW,CAACp/B,OAAO;gBACxB,IAAI,IAAI,CAACkvC,iBAAiB,EAAE;oBAC1B,IAAI,CAACx1C,KAAK,CAACmD,mBAAmB,CAAC,cAAc,IAAI,CAACqyC,iBAAiB;oBACnE,OAAO,IAAI,CAACA,iBAAiB;gBAC/B;gBACA,IAAI,IAAI,CAACF,YAAY,EAAE;oBACrB,IAAI,CAACt1C,KAAK,CAACmD,mBAAmB,CAAC,SAAS,IAAI,CAACmyC,YAAY;oBACzD,OAAO,IAAI,CAACA,YAAY;gBAC1B;gBACA,IAAI,IAAI,CAACG,cAAc,EAAE;oBACvB,IAAI,CAACz1C,KAAK,CAACmD,mBAAmB,CAAC,WAAW,IAAI,CAACsyC,cAAc;oBAC7D,OAAO,IAAI,CAACA,cAAc;gBAC5B;gBACA,IAAI,CAAChQ,QAAQ,CAAC7N,eAAe;gBAC7B,IAAI,CAACmd,SAAS,CAACzuC,OAAO;iBACtB,iBAAA,IAAI,CAAC4wB,QAAQ,cAAb,qCAAA,eAAe5wB,OAAO;gBACtB,IAAI,IAAI,CAACmuC,kBAAkB,EAAE;oBAC3B,IAAI,CAACA,kBAAkB,GAAG;oBAC1B,IAAI,CAACtd,QAAQ,CAAC3mB,eAAe;gBAC/B;gBACA,IAAI,CAAC2mB,QAAQ,CAACxmB,KAAK;gBACnB,IAAI,CAACwuB,MAAM,CAACzG,mBAAmB,GAAG;YACpC;;;;;AAEF,6DAA6D;AAC7D,KAAM30C,CAAAA,OAAOC,OAAO,GAAG;IACrBF,uBAAAA;AACF,CAAA","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/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer_exports = {};\n__export(StormcloudVideoPlayer_exports, {\n StormcloudVideoPlayer: () => StormcloudVideoPlayer\n});\nmodule.exports = __toCommonJS(StormcloudVideoPlayer_exports);\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 supportsModernJS = 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 supportsModernJS = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS,\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 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}\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}): ${trackingUrl}`\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: ${trackingUrl}`);\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 canPlay = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay !== \"\" : canPlay !== \"\";\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: canPlay,\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 canPlay = probe.canPlayType(baseType);\n if (canPlay === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay };\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_${canPlay}`, canPlayType: canPlay };\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: ${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 === \"gam\") {\n logFunnel(\"gam_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 === \"gam\") {\n logFunnel(\"gam_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\");\n console.log(\n \"[HlsAdPlayer] VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\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 async function fetchAndParsePod(vastTagUrl) {\n lastPodAdElementCount = 0;\n const vastXml = await fetchVastXml(vastTagUrl);\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 console.error(\n \"[HlsAdPlayer] Pod VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\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 const podElements = adElements.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = adElements.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 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) {\n console.log(\"[HlsAdPlayer] Requesting ads:\", 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);\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 };\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 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/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/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/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/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/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.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 this.timing.resetGamNoFillCounter();\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) {\n this.breakSource = \"vmap\";\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);\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 if (!baseVastUrl) {\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.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);\n const epoch = this.timing.adBreakEpoch;\n const hasPrefetchedUrl = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (adBreakDurationMs == null && !hasPrefetchedUrl) {\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 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.currentVastUrl = podUrl;\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\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(podUrl));\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: podUrl, 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 // 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) {\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.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 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 });\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 \"gam_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 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 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) {\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 this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger) {\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 gamRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\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 requestUrl = this.withCurrentPodBudget(vastTagUrl);\n this.currentVastUrl = requestUrl;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\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 vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\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 adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\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 this.timing.consecutiveFailures++;\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 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 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 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 this.adBreak.beginVmapBreak(key);\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 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// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n StormcloudVideoPlayer\n});\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\StormcloudVideoPlayer.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","StormcloudVideoPlayer_exports","StormcloudVideoPlayer","module","exports","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","searchParams","orphanFragments","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","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then","DEFAULT_WEB_FLOOR_LADDER_CONFIG","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","DEFAULT_FLOOR_LADDER_BOUNDS","minCents","maxCents","generateFloorLevels","levels","cents","resolveFloorLadderBounds","overrides","validateFloorCents","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","Array","isArray","validateFloorLadderConfig","errors","check","selected","fixedFloorSelector","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","update","next","FloorLadderController","initial","getBounds","validate","setSelector","snapshotFor","import_hls","require","getChromeVersion","match","getWebKitVersion","getPlatform","userAgentData","platform","detectBrowser","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","Map","URLSearchParams","requiresMediaPipelineResetAfterAds","browser","getBrowserConfigOverrides","allowNativeHls","pauseContentDuringAds","logBrowserInfo","debug","log","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","formatPlayhead","seconds","isFinite","total","hh","mm","ss","ms","resolveMacroValues","values","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","toISOString","errorCode","playerWidth","playerHeight","clientUa","podSequence","adServingId","substituteVastTrackingMacros","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","map","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","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","createHlsAdPlayer","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_TIMEOUT_MS","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","start","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","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","add","timeoutId","release","outcome","clearTimeout","onload","onerror","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","canPlay","canPlayType","playable","default","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","collectVideoMediaFiles","linear","verbose","stats","mediaFileElements","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","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","documentElement","adElements","ordered","firstEmpty","entries","parseAdElement","usedAdIndex","adCount","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","kind","controller","startedAt","attempt","requestVast","response","Error","AbortController","abort","creds","fetch","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","errorMessage","message","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","substring","fetchAndParsePod","trimmedXml","empty","resolveAd","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","wrapperCount","catch","shift","createAdVideoElement","video","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","e","vastErrorCode","mediaErrorCode","networkState","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","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","attachContainerHandlers","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","appendChild","clearMediaStartTimer","startMediaStartTimer","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","handleAdError","loadCurrentAdMedia","candidates","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","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","pointerEvents","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","preloaded","reject","durations","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","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","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","createPalNonceManager","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","DEFAULT_TRACKING_INGEST_CONFIG","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","method","Authorization","cachedBrowserId","buildAnalyticsContext","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","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","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","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendAdDetectTracking","adDetectInfo","sendHeartbeat","sendAdLoadedTracking","adLoadedInfo","sendAdImpressionTracking","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","assign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","initializePolyfills","parseCueOutDuration","num","dStr","d","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","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","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_event_id","segmentation_event_id","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","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","breakStartMs","findBreakForTime","durationMs","selectVastTagsForBreak","beginNewAdPod","resolvePodParams","breakDurationMs","maxDurationMs","maxAds","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","envSignals","ctvAdRequest","urlWithMacros","autoplay","finalUrl","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","AdTimingService","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","startAdFailsafeTimer","clearAdFailsafeTimer","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","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","idx","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","remaining","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","recordRequestDiagnostic","setSlotState","currentVastUrl","requestNextAd","errorPayload","cause","innerError","causeMessage","handleAdFailure","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","breakSource","followUpBaseVastUrl","noteOpportunity","handleAdStart","adBreakDurationMs","currentMuted","currentVolume","epoch","hasPrefetchedUrl","podPlayed","vastUrls","waitForBreakDuration","startOptimizedPod","maxWaitMs","deadline","waitedForMs","resolved","podUrl","prefetched","requestToken","requestUrl","podCount","noteVastUrlGenerated","beginFunnelRequest","applyOpportunityFloor","isStale","callController","recordRequestFailure","previous","getMinRemainingMsToRequestAd","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","trigger","nextAdTimerId","stopReason","decision","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","pmad","pmnd","pmxd","diag","vastAdCount","impressionFired","failureReason","impressionCount","requestFloorFields","gamRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","fields","withCurrentPodBudget","rawVastTagUrl","maxMs","minMs","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","floorConfigVersion","adPosition","floorApplied","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","budgetedUrl","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsRetries","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","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","cleanup","poll","advanced","playing","bufferedAhead","wedged","canRecover","reloadPos","maxAttempts","onReady","backoffMs","playResult","attached","palPlaybackStarted","browserOverrides","videoElement","floorBounds","adFloorMinCents","adFloorMaxCents","adFloorStepCents","floorLadder","adFloorLadder","warnOnInvalidFloorLadder","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","c","isCtvEnvironment","adMediaStartTimeoutMs","hint","setAdFloorLadder","report","getAdFloorLadder","getAdFloorBounds","setAdFloorSelector","palDescriptionUrl","attach","offsetWidth","prerollKey","endedHandler","onVideoEnded","timeUpdateHandler","emptiedHandler","wasPaused","Infinity","newDurationMs","detectPayload","hasPrefetchedAds","isManifest","forceImmediate","immediateManifestAds","isManifestMarker","hasPts","estCurrentPtsMs","markerPtsMs","tolerance","adSlotState","activeAdRequest","checkIntervalMs","adBreakCheckIntervalMs","maxExtensionMsConfig","maxAdBreakExtensionMs","maxExtensionMs","overrunMs","shouldExtendAdBreak","generatedUrls","detectedAtFragmentSn","isFetching","fetchStartTime","currentTimeSec","breakToPlay","handleVmapAdBreak","postroll","find","endMs","inWindow","tags","first","getCurrentAdIndex","getTotalAdsInBreak","getAdRemainingMs","isShowingAds","shouldShowNativeControls","showCustomControls"],"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/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer_exports = {};\n__export(StormcloudVideoPlayer_exports, {\n StormcloudVideoPlayer: () => StormcloudVideoPlayer\n});\nmodule.exports = __toCommonJS(StormcloudVideoPlayer_exports);\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 supportsModernJS = 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 supportsModernJS = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS,\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 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}\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}): ${trackingUrl}`\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: ${trackingUrl}`);\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 canPlay = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay !== \"\" : canPlay !== \"\";\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: canPlay,\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 canPlay = probe.canPlayType(baseType);\n if (canPlay === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay };\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_${canPlay}`, canPlayType: canPlay };\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: ${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 === \"gam\") {\n logFunnel(\"gam_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 === \"gam\") {\n logFunnel(\"gam_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\");\n console.log(\n \"[HlsAdPlayer] VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\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 async function fetchAndParsePod(vastTagUrl) {\n lastPodAdElementCount = 0;\n const vastXml = await fetchVastXml(vastTagUrl);\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 console.error(\n \"[HlsAdPlayer] Pod VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\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 const podElements = adElements.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = adElements.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 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) {\n console.log(\"[HlsAdPlayer] Requesting ads:\", 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);\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 };\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 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/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.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 this.timing.resetGamNoFillCounter();\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.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 if (!baseVastUrl) {\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.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) {\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 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.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 // 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) {\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.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 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 \"gam_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) {\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 gamRequestSent: 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.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 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 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 this.timing.consecutiveFailures++;\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.warnOnInvalidFloorLadder(this.floorLadder.validate());\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 getFloorSnapshot: (position) => this.floorLadder.snapshotFor({ position, isCtv: this.isCtvEnvironment() }),\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 warnOnInvalidFloorLadder(report) {\n const config = this.floorLadder.get();\n if (report.ok || !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 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// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n StormcloudVideoPlayer\n});\n"]}